Этот пример показывает, как использовать пространственные объекты привязки, чтобы понять пространственное соотношение между двумя изображениями в регистрации изображений и эффективно их отображать. Этот пример приносит одно из изображений, называемое 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')