Укажите изображения с искажением проекции Используя контрольные точки

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

Считайте изображения

Считайте изображение westconcordorthophoto.png в рабочую область. Это изображение является ортофотографией, которая была уже указана к земле.

ortho = imread('westconcordorthophoto.png');
imshow(ortho)
text(size(ortho,2),size(ortho,1)+15, ...
    'Image courtesy of Massachusetts Executive Office of Environmental Affairs', ...
    'FontSize',7,'HorizontalAlignment','right');

Считайте изображение westconcordaerial.png в рабочую область. Это изображение было взято из самолета и искажено относительно ортофотографии. Поскольку незарегистрированное изображение было взято издалека, и топография является относительно плоской, вероятно, что большая часть искажения является проективной.

unregistered = imread('westconcordaerial.png');
imshow(unregistered)
text(size(unregistered,2),size(unregistered,1)+15, ...
    'Image courtesy of mPower3/Emerge', ...
    'FontSize',7,'HorizontalAlignment','right');

Выберите Control Point Pairs

Чтобы выбрать контрольные точки в интерактивном режиме, откройте инструмент Control Point Selection при помощи cpselect функция. Контрольные точки являются ориентирами, которые можно найти в обоих изображениях, таких как дорожное пересечение или природный объект. Выберите по крайней мере четыре пары контрольных точек так, чтобы cpselect может соответствовать проективному преобразованию к контрольным точкам. После того, как вы выберете соответствующее перемещение и фиксированные точки, закройте инструмент, чтобы возвратиться к рабочей области.

[mp,fp] = cpselect(unregistered,ortho,'Wait',true);

Выведите геометрическое преобразование

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

t = fitgeotrans(mp,fp,'projective');

Преобразуйте незарегистрированное изображение

Чтобы применить преобразование к незарегистрированному воздушному изображению, используйте imwarp функция. Укажите, что размер и положение преобразованного изображения совпадают с размером и положением орторектифицированного изображения при помощи 'OutputView' аргумент пары "имя-значение".

Rfixed = imref2d(size(ortho));
registered = imwarp(unregistered,t,'OutputView',Rfixed);

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

imshowpair(ortho,registered,'blend')

Смотрите также

| | |

Похожие темы