Этот пример показывает, как указать воздушную фотографию к ортофотографии. Два изображения той же сцены могут только быть сравнены непосредственно, если они находятся в той же системе координат. Регистрация изображений является процессом преобразования одного изображения в систему координат другого изображения.
westconcordorthophoto.png
изображений является ортофотографией, которая была уже указана к земле. 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');
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');
Четыре пары контрольных точек были уже выбраны. Загрузите эти точки из MAT-файла. Если вы хотите возобновить эти точки, перейдите к Шагу 3: Выведите Геометрическое преобразование.
load westconcordpoints
Опционально, отредактируйте или добавьте к предварительно выбранным точкам с помощью Инструмента Выбора Контрольной точки (cpselect
). Функция cpselect
помогает вам выбрать пары соответствующих контрольных точек. Контрольные точки являются ориентирами, которые можно найти в обоих изображениях, как дорожное пересечение или природный объект. Незарегистрированное изображение является изображением RGB, но cpselect
только берет полутоновые изображения, таким образом, вы передадите его одна плоскость изображения RGB.
cpselect(unregistered(:,:,1),'westconcordorthophoto.png',movingPoints,fixedPoints)
Сохраните контрольные точки путем выбора меню File, затем Точки сохранения к опции Рабочей области. Сохраните точки, перезаписав переменные movingPoints
и fixedPoints
.
Поскольку незарегистрированное изображение было взято из самолета, и топография является относительно плоской, вероятно, что большая часть искажения является проективной. fitgeotrans
найдет параметры проективного искажения, которое лучшие подгонки случайный movingPoints
и fixedPoints
вы выбрали.
t_concord = fitgeotrans(movingPoints,fixedPoints,'projective');
Даже при том, что точки были выбраны на одной плоскости незарегистрированного изображения, можно преобразовать целое изображение RGB. imwarp
применит то же преобразование к каждой плоскости. Обратите внимание на то, что спецификация 'OutputView' гарантирует, что зарегистрированное изображение будет выровнено для поэлементного сравнения с ортофотографией.
Rfixed = imref2d(size(ortho));
registered = imwarp(unregistered,t_concord,'OutputView',Rfixed);
imshowpair(ortho,registered,'blend')
Сравните визуально, как хорошо зарегистрированное изображение накладывает на ортофотографии. Попытайтесь возвращаться к Шагу 2: Выберите Control Points и использование больше чем четырех пар точек. Результаты лучше? Что, если точки собраны в группу вместе?
Если вы хотите экспериментировать с увеличенными изображениями, выполните шаги выше, чтобы указать concordaerial.png
к concordorthophoto.png
.
cpcorr
| cpselect
| cpstruct2pairs
| fitgeotrans