В этом примере показано, как зарегистрировать два изображения путем выбора управляющих точек, общих для обоих изображений, и вывода геометрического преобразования, которое выравнивает управляющие точки.
Чтение изображения 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');
Чтобы выбрать контрольные точки в интерактивном режиме, откройте инструмент «Выбор контрольной точки» при помощи 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