Этот пример показывает, как использовать отображение контрольной точки, чтобы выполнить регистрацию изображений.
Считайте демонстрационные изображения и отобразите их.
orthophoto = imread('westconcordorthophoto.png'); figure, imshow(orthophoto) unregistered = imread('westconcordaerial.png'); figure, imshow(unregistered)
В этом примере фиксированным изображением является westconcordorthophoto.png
, MassGIS геоуказал ортофотографию. Это - панхроматическое (полутоновое) изображение, предоставленное географической информационной системой Массачусетса (MassGIS). Изображение было ортоисправлено, чтобы демонтировать камеру, перспективу и вспомогательные искажения через специализированный процесс преобразования изображений. Изображение также геоуказывается (и геокодируется): столбцы и строки цифрового ортофото изображения выравниваются к осям системы Координаты на плоскости состояния Массачусетса. Каждый пиксельный центр соответствует определенному географическому положению, и каждый пиксель является 1-метровым квадратом в модулях карты.
Движущимся изображением является westconcordaerial.png
, цифровая воздушная фотография, предоставленная mPower3/Emerge. Это - видимо-цветное изображение RGB. Изображение геометрически не исправляется: это включает перспективу камеры, ландшафт и облегчение создания, внутреннее (линза) искажения, и это не имеет никакого конкретного выравнивания с землей.
Пример читает оба изображения в рабочую область. Функция cpselect
принимает изображения из рабочей области или векторов символов, задающих путь к файлу для изображений.
Выберите пары соответствующих контрольных точек в обоих изображениях, с помощью инструмента Control Point Selection. Контрольные точки являются ориентирами, которые можно найти в обоих изображениях, как дорожное пересечение или природный объект. Чтобы запустить этот инструмент, введите cpselect
, задав в качестве аргументов перемещение и зафиксированные изображения.
cpselect(unregistered, orthophoto)
Сохраните пары контрольной точки в рабочую область. В Инструменте Выбора Контрольной точки кликните по меню File и выберите опцию Export Points to Workspace.
Например, следующий набор контрольных точек в движущемся изображении представляют пространственные координаты. Левый столбец перечисляет x-координаты, и правый столбец перечисляет y-координаты.
moving_points = 118.0000 96.0000 304.0000 87.0000 358.0000 281.0000 127.0000 292.0000
Можно опционально подстроить размещение пары контрольной точки с помощью функции cpcorr
. Чтобы использовать взаимную корреляцию, изображения должны быть в рабочей области, и функции в двух изображениях должны быть в той же шкале и иметь ту же ориентацию. Они не могут вращаться друг относительно друга. Поскольку изображение Согласия вращается относительно фиксированного изображения, cpcorr
не может настроить контрольные точки.
Задайте тип преобразования и выведите его параметры, с помощью fitgeotrans
. fitgeotrans
является соответствующей данным функцией, которая определяет преобразование, которое приносит изображение в выравнивание, на основе геометрического отношения контрольных точек. fitgeotrans
возвращает параметры в объекте геометрического преобразования.
mytform = fitgeotrans(movingPoints, fixedPoints, 'projective');
mytform = projective2d with properties: T: [3x3 double] Dimensionality: 2
Когда вы используете fitgeotrans
, необходимо задать тип преобразования, которое вы хотите выполнить. Функция fitgeotrans
может вывести параметры для нескольких типов преобразований. Выберите, какое преобразование подходит для типа искажения, существующего в движущемся изображении. Изображения могут содержать больше чем один тип искажения.
Преобладающее искажение в воздушном изображении Западного Согласия (движущееся изображение) следует из перспективы камеры. При игнорировании облегчения ландшафта, которое незначительно в этой области, регистрация изображений может исправить для перспективного искажения камеры при помощи проективного преобразования. Проективное преобразование также вращает изображение в выравнивание с системой координат карты, лежащей в основе фиксированного цифрового ортофото изображения.
Преобразуйте движущееся изображение (unregistered
), чтобы принести его в выравнивание с фиксированным изображением. Вы используете imwarp
, чтобы выполнить преобразование, передавая его движущееся изображение и объект геометрического преобразования, возвращенный fitgeotrans
. imwarp
возвращает преобразованное изображение.
registered = imwarp(unregistered, mytform);
Следующие данные показывают преобразованное изображение, прозрачно наложенное на фиксированном изображении, чтобы показать результаты регистрации.
cpcorr
| cpselect
| cpstruct2pairs
| fitgeotrans