cpselect

Инструмент Control Point Selection

Описание

пример

cpselect(moving,fixed) запускает Инструмент Выбора Контрольной точки, пользовательский интерфейс, который позволяет вам выбрать контрольные точки в двух связанных изображениях. moving изображение должно быть деформировано, который приносит его в систему координат fixed изображение. moving и fixed могут быть или переменные, которые содержат шкалу полутонов, истинный цвет, или двухуровневые изображения или имена файлов, содержащих эти изображения. Инструмент Выбора Контрольной точки возвращает контрольные точки в cpstruct структура.

cpselect(moving,fixed,cpstruct_in) запускает cpselect с начальным набором контрольных точек, которые хранятся в cpstruct_in. Этот синтаксис позволяет вам перезапускать cpselect с точками уровня контроля, включая непарные и предсказанные контрольные точки, ранее сохраненные в cpstruct_in.

пример

cpselect(moving,fixed,initialMovingPoints,initialFixedPoints) запускает cpselect с начальным набором допустимых пар контрольной точки. initialMovingPoints и initialFixedPoints m-2 матрицы то хранилище moving и fixed координаты контрольной точки, соответственно. Эти два столбца представляют x - и y - координаты контрольных точек.

h = cpselect(___) возвращает указатель h к инструменту Control Point Selection. Можно использовать close(h) синтаксис, чтобы закрыть инструмент из командной строки.

h = cpselect(___,'Wait',false) возвращает указатель h к инструменту Control Point Selection. Можно использовать close(h) синтаксис, чтобы закрыть инструмент из командной строки. В отличие от установки 'Wait' как true, этот синтаксис позволяет вам запустить cpselect в то же время, что и вы запускаете другие программы в MATLAB®.

пример

[selectedMovingPoints,selectedFixedPoints] = cpselect(___,'Wait',true) берет под свой контроль командную строку MATLAB, пока вы не закончили выбирать контрольные точки. cpselect возвращает допустимые выбранные пары точек. selectedMovingPoints и selectedFixedPoints p-by-2 матрицы, которые хранят координаты в перемещении и зафиксированных изображениях, соответственно. Эти два столбца представляют x - и y - координаты выбранных контрольных точек.

Примеры

свернуть все

Вызовите cpselect , определение имен изображения вы хотите указать и ссылочное изображение. Этот пример использует дополнительный синтаксис, который возвращает указатель на инструмент, который создается так, чтобы можно было закрыть инструмент программно.

h  = cpselect('westconcordaerial.png','westconcordorthophoto.png');

Закройте инструмент.

close(h)

Создайте демонстрационное ссылочное изображение.

I = checkerboard;

Создайте копию демонстрационного изображения, вращая его, чтобы создать демонстрационное изображение, которому нужна регистрация.

J = imrotate(I,30);

Задайте два набора контрольных точек для фиксированных и движущихся изображений.

fixedPoints = [11 11; 41 71];
movingPoints = [14 44; 70 81];

Откройте Инструмент Выбора Контрольной точки, задав выборку зафиксированные и движущиеся изображения и два набора сохраненных контрольных точек.

cpselect(J,I,movingPoints,fixedPoints);

Когда инструмент открывается, вам предлагают сохранить контрольные точки.

Считайте воздушную фотографию и ортофотографию в рабочую область, и отобразите их.

aerial = imread('westconcordaerial.png');
figure, imshow(aerial)
ortho = imread('westconcordorthophoto.png');
figure, imshow(ortho)

Загрузите некоторые точки, которые были уже выбраны.

load westconcordpoints

Откройте инструмент Control Point Selection, задав два изображения и предварительно выобранные точки. Используйте 'Wait' параметр, чтобы сделать cpselect ожидайте вас, чтобы выбрать еще некоторые точки.

[aerial_points,ortho_points] = ...
       cpselect(aerial,'westconcordorthophoto.png',...
                movingPoints,fixedPoints,...
                'Wait',true);

Когда управление возвратится к командной строке, выполните регистрацию.

Сначала используйте fitgeotrans оценить геометрическое преобразование, которое приносит движущееся изображение в выравнивание с фиксированным изображением. Задайте контрольные точки, которые вы выбрали и тип преобразования, которое вы хотите.

t_concord = fitgeotrans(aerial_points,ortho_points,'projective');

Затем используйте imwarp выполнять преобразование. Путем определения пространственного объекта привязки от ortho и определение объекта как 'OutputView', зарегистрированное изображение имеет размер и местоположение, совпадающее с ortho.

ortho_ref = imref2d(size(ortho)); %relate intrinsic and world coordinates
aerial_registered = imwarp(aerial,t_concord,'OutputView',ortho_ref);

Наконец, отобразите преобразованное изображение по исходной ортофотографии, чтобы видеть, как хорошо регистрация, за которой следуют.

figure
imshowpair(aerial_registered,ortho,'blend')

Входные параметры

свернуть все

Введите изображение, которое будет выровнено, задано как шкала полутонов, истинный цвет, или двухуровневое изображение или вектор символов. Полутоновым изображением может быть uint8uint16int16единственный, или double. Изображением истинного цвета может быть uint8uint16единственный, или double. Двухуровневое изображение имеет класс logical. Если moving вектор символов, он должен идентифицировать файлы, содержащие эти те же типы изображений.

Типы данных: single | double | int16 | uint8 | uint16 | logical | char | string

Ссылочное изображение, заданное как шкала полутонов, истинный цвет или двухуровневое изображение. Полутоновым изображением может быть uint8uint16int16единственный, или double. Изображением истинного цвета может быть uint8uint16единственный, или double. Двухуровневое изображение имеет класс logical. Если fixed вектор символов, он должен идентифицировать файлы, содержащие эти те же типы изображений.

Типы данных: single | double | int16 | uint8 | uint16 | logical | char | string

Предварительно выобранные контрольные точки, заданные как структура (cpstruct). cpstruct_in содержит информацию о x - и y - координаты всех контрольных точек в перемещении и зафиксированных изображениях, включая непарные и предсказанные контрольные точки. cpstruct_in также содержит информацию об индексации, которая позволяет инструменту Control Point Selection восстанавливать состояние контрольных точек.

Создайте cpstruct путем экспорта точек от инструмента Control Point Selection, описанного в Точках Контроля над экспортом к Рабочей области.

Типы данных: struct

Предварительно выобранные контрольные точки на движущемся изображении, заданном как m-by-2 числовой массив. Эти два столбца представляют x - и y - координаты контрольных точек.

Типы данных: double

Предварительно выобранные контрольные точки на фиксированном изображении, заданном как m-by-2 числовой массив. Эти два столбца представляют x - и y - координаты контрольных точек.

Типы данных: double

Выходные аргументы

свернуть все

Инструмент Control Point Selection, возвращенный как указатель.

Выбранные контрольные точки на движущемся изображении, заданном как p-by-2 числовой массив. Эти два столбца представляют x - и y - координаты контрольных точек.

Типы данных: double

Выбранные контрольные точки на фиксированном изображении, заданном как p-by-2 числовой массив. Эти два столбца представляют x - и y - координаты контрольных точек.

Типы данных: double

Советы

  • При вызове cpselect в скрипте задайте 'Wait' опция как true. 'Wait' опция вызывает cpselect чтобы блокировать командную строку MATLAB до, контрольные точки были выбраны и возвращены. Если вы не используете 'Wait' опция, cpselect сразу возвращает управление, и ваш скрипт продолжается, не позволяя время для выбора контрольной точки. Кроме того, без 'Wait' опция, cpselect не возвращает контрольные точки как возвращаемые значения.

Алгоритмы

cpselect использует выполняющую общую процедуру в прогнозе контрольной точки.

  1. Найдите все допустимые пары контрольных точек.

  2. Выведите пространственное преобразование между moving и fixed контрольные точки с помощью метода, который зависит от количества допустимых пар, можно следующим образом:

    2 пары

    Неотражающее подобие

    3 пары

    Аффинно

    4 или больше пары

    Проективный

  3. Примените пространственное преобразование к новой точке. Это преобразование генерирует предсказанную точку.

  4. Отобразите предсказанную точку.

Представлено до R2006a