В этом примере показано, как указать два изображения путем выбора контрольных точек, характерных для обоих изображений и выведения геометрического преобразования, которое выравнивает контрольные точки.
Считайте изображение 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 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')
cpcorr
| cpselect
| cpstruct2pairs
| fitgeotrans