Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Registre dos imágenes utilizando referencias espaciales para mejorar la visualización

En este ejemplo se muestra cómo utilizar objetos de referencia espacial para comprender la relación espacial entre dos imágenes en el registro de imágenes y mostrarlas eficazmente. Este ejemplo pone una de las imágenes, denominada imagen, alineada con la otra imagen, denominada imagen.movingfixed

Lea las dos imágenes de la misma escena que están ligeramente desalineadas.

fixed = imread('westconcordorthophoto.png'); moving = imread('westconcordaerial.png');

Muestre la imagen en movimiento (no registrada).

iptsetpref('ImshowAxesVisible','on') imshow(moving) text(size(moving,2),size(moving,1)+30, ...     'Image courtesy of mPower3/Emerge', ...     'FontSize',7,'HorizontalAlignment','right');

Cargue un archivo MAT que contenga puntos de control preseleccionados para las imágenes y cree una transformación geométrica que se ajuste a los puntos de control, utilizando .fixedmovingfitgeotrans

load westconcordpoints tform = fitgeotrans(movingPoints, fixedPoints, 'projective');

Realice la transformación necesaria para registrar la imagen con la imagen, utilizando .movingfixedimwarp En este ejemplo se utiliza el parámetro opcional para especificar un valor de relleno (blanco), que le ayudará al mostrar la imagen sobre la imagen transformada, para comprobar el registro.'FillValues'fixedmoving Observe que el contenido completo de la imagen geométricamente transformada está presente, ahora llamado .movingregistered Tenga en cuenta también que no hay filas o columnas en blanco.

registered = imwarp(moving, tform,'FillValues', 255); figure, imshow(registered);

Superponga la imagen transformada, , sobre la imagen, utilizando .registeredfixedimshowpair Observe cómo las dos imágenes aparecen incorrectamente registradas. Esto sucede porque se supone que las imágenes están en el sistema de coordenadas intrínsecas predeterminado.imshowpair Los pasos siguientes proporcionan dos maneras de solucionar este problema de visualización.

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

Restringir la imagen transformada, , al mismo número de filas y columnas, y los mismos límites espaciales que la imagen.registeredfixed Esto garantiza que la imagen registrada aparezca registrada con la imagen fija, pero se descartan las áreas de la imagen registrada que extrapolarían más allá de la extensión de la imagen fija. Para ello, cree un objeto de referencia espacial predeterminado que especifique el tamaño y la ubicación de la imagen y utilice el parámetro para crear una imagen remuestreada restringida.fixedimwarp's'OutputView'registered1 Muestre la imagen registrada sobre la imagen fija. En esta vista, las imágenes parecen haberse registrado, pero no toda la imagen no registrada es visible.

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

Como alternativa, utilice la sintaxis opcional que devuelve el objeto de referencia espacial de salida que indica la posición de la imagen transformada completa en el mismo sistema de coordenadas intrínsecas predeterminado que la imagen.imwarpfixed Muestre la imagen registrada sobre la imagen fija y tenga en cuenta que ahora la imagen completa está visible.registered

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

Limpieza.

iptsetpref('ImshowAxesVisible','off')