cpselect

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

Синтаксис

cpselect(moving,fixed)
cpselect(moving,fixed,cpstruct_in)
cpselect(moving,fixed,initialMovingPoints,initialFixedPoints)
h = cpselect(___)
h = cpselect(___,'Wait',false)
[selectedMovingPoints,selectedFixedPoints] = cpselect(___,'Wait',true)

Описание

пример

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')

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

figure, imshowpair(aerial_registered,ortho,'blend')

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

свернуть все

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

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

Ссылочное изображение, заданное как шкала полутонов, истинный цвет или двухуровневое изображение. Полутоновым изображением может быть uint8, uint16, int16, single или double. Изображением истинного цвета может быть uint8, uint16, single или 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