exponenta event banner

Регистрация двух изображений с использованием пространственных ссылок для улучшения отображения

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

Figure contains an axes. The axes contains 2 objects of type image, text.

Загрузите 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);

Figure contains an axes. The axes contains an object of type image.

Наложение преобразованного изображения, registered , над fixed изображение, использование imshowpair . Обратите внимание на неправильную регистрацию этих двух изображений. Это происходит потому, что imshowpair предполагает, что оба изображения находятся в собственной системе координат по умолчанию. Следующие шаги предоставляют два способа устранения этой проблемы отображения.

figure, imshowpair(fixed,registered,'blend');

Figure contains an axes. The axes contains an object of type image.

Наложение зависимости на преобразованное изображение, registered , к тому же числу строк и столбцов и тем же пространственным пределам, что и fixed изображение. Это гарантирует, что зарегистрированное изображение появляется зарегистрированным фиксированным изображением, но области зарегистрированного изображения, которые будут экстраполироваться за пределы фиксированного изображения, отбрасываются. Для этого создайте объект пространственной ссылки по умолчанию, который определяет размер и расположение fixed изображение и использование imwarp's 'OutputView' параметр для создания зависимого изображения с повторной выборкой registered1. Отображение зарегистрированного изображения поверх фиксированного изображения. В этом представлении изображения, по-видимому, зарегистрированы, но не все незарегистрированные изображения видны.

Rfixed = imref2d(size(fixed));
registered1 = imwarp(moving,tform,'FillValues', 255,'OutputView',Rfixed);
figure, imshowpair(fixed,registered1,'blend');

Figure contains an axes. The axes contains an object of type image.

В качестве альтернативы используйте опциональное imwarp синтаксис, возвращающий выходной объект пространственной ссылки, который указывает положение полного преобразованного изображения в той же внутренней системе координат по умолчанию, что и fixed изображение. Отображение зарегистрированного изображения поверх фиксированного изображения и обратите внимание, что теперь полный registered изображение видно.

[registered2, Rregistered] = imwarp(moving, tform,'FillValues', 255);
figure, imshowpair(fixed,Rfixed,registered2,Rregistered,'blend');

Figure contains an axes. The axes contains an object of type image.

Убери.

iptsetpref('ImshowAxesVisible','off')