Этот пример показывает, как использовать пространственные объекты привязки, чтобы понять пространственное соотношение между двумя изображениями в регистрации изображений и эффективно их отображать. Этот пример приносит одно из изображений, называемое moving изображение, в выравнивание с другим изображением, называемое fixed изображение.
Считайте два изображения одной и той же сцены, которые слегка несовпадают.
fixed = imread('westconcordorthophoto.png'); moving = imread('westconcordaerial.png');
Отображение движущееся (незарегистрированное) изображение.
iptsetpref('ImshowAxesVisible','on') imshow(moving) text(size(moving,2),size(moving,1)+30, ... 'Image courtesy of mPower3/Emerge', ... 'FontSize',7,'HorizontalAlignment','right');

Загрузите MAT-файл, содержащий предварительно выбранные контрольные точки для fixed и moving изображения и создайте геометрическую подгонку преобразования к контрольным точкам, используя fitgeotrans .
load westconcordpoints tform = fitgeotrans(movingPoints, fixedPoints, 'projective');
Выполните преобразование, необходимое для регистрации moving изображение со fixed изображение, использование imwarp . В этом примере используются дополнительные 'FillValues' параметр для задания значения заливки (белого), который поможет при отображении fixed изображение по преобразованному moving изображение, чтобы проверить регистрацию. Заметьте, что полное содержимое геометрически преобразованного moving изображение присутствует, теперь называется registered . Также обратите внимание, что нет пустых строк или столбцов.
registered = imwarp(moving, tform,'FillValues', 255);
figure, imshow(registered);
Наложите преобразованное изображение, registered , по fixed изображение, использование imshowpair . Заметьте, как эти два изображения выглядят неправильно. Это происходит потому, что imshowpair принимает, что оба изображения находятся в внутренней системе координат по умолчанию. Следующие шаги обеспечивают два способа устранить эту проблему отображения.
figure, imshowpair(fixed,registered,'blend');
Ограничьте преобразованное изображение, registered , тому одинаковому числу строк и столбцов и тем же пространственным пределам, что и fixed изображение. Это гарантирует, что зарегистрированное изображение появляется зарегистрированным с фиксированным изображением, но области зарегистрированного изображения, которые будут экстраполироваться за пределы фиксированного изображения, отбрасываются. Для этого создайте пространственный объект привязки по умолчанию, которая задает размер и расположение fixed изображение и используйте imwarp's 'OutputView' параметр для создания ограниченного повторно дискретизированного изображения registered1. Отобразите зарегистрированное изображение на фиксированном изображении. В этом представлении изображения, по-видимому, были зарегистрированы, но видны не все незарегистрированные изображения.
Rfixed = imref2d(size(fixed)); registered1 = imwarp(moving,tform,'FillValues', 255,'OutputView',Rfixed); figure, imshowpair(fixed,registered1,'blend');

В качестве альтернативы используйте дополнительный imwarp синтаксис, который возвращает выходной пространственный объект привязки, который указывает положение полного преобразованного изображения в той же внутренней системе координат по умолчанию, что и fixed изображение. Отобразите зарегистрированное изображение на фиксированном изображении и отметьте, что теперь полный registered изображение отображается.
[registered2, Rregistered] = imwarp(moving, tform,'FillValues', 255); figure, imshowpair(fixed,Rfixed,registered2,Rregistered,'blend');

Очистить.
iptsetpref('ImshowAxesVisible','off')