Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Registrar imágenes con distorsión de proyección utilizando puntos de control

Este ejemplo muestra cómo registrar dos imágenes seleccionando puntos de control comunes a ambas imágenes e infiriendo una transformación geométrica que alinee los puntos de control.

Leer imágenes

Lea la imagen westconcordorthophoto.png en el espacio de trabajo. Esta imagen es una ortofoto que ya se ha registrado en el terreno.

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");

Lea la imagen westconcordaerial.png en el espacio de trabajo. Esta imagen se tomó desde un avión y está distorsionada con respecto a la ortofoto. Puesto que la imagen no registrada se tomó a distancia y la topografía es relativamente plana, es probable que la mayor parte de la distorsión sea proyectiva.

unregistered = imread("westconcordaerial.png");
imshow(unregistered)
text(size(unregistered,2),size(unregistered,1)+15, ...
    "Image courtesy of mPower3/Emerge", ...
    FontSize=7,HorizontalAlignment="right");

Seleccionar pares de puntos de control

Para seleccionar puntos de control de forma interactiva, abra la herramienta Control Point Selection utilizando la función cpselect. Los puntos de control son referencias geográficas que se encuentran en ambas imágenes, como una intersección de carreteras o un elemento natural del paisaje. Seleccione al menos cuatro pares de puntos de control, de forma que cpselect pueda ajustar una transformación proyectiva a los puntos de control. Después de seleccionar puntos móviles y fijos correspondientes, cierre la herramienta para volver al espacio de trabajo.

[mp,fp] = cpselect(unregistered,ortho,Wait=true);

Nine pairs of control points selected in the Control Point Selection tool.

Inferir una transformación geométrica

Encuentre los parámetros de la transformación proyectiva que mejor alinee los puntos móviles y fijos utilizando la función fitgeotform2d.

t = fitgeotform2d(mp,fp,"projective")
t = 
  projtform2d with properties:

    Dimensionality: 2
                 A: [3×3 double]

Transformar una imagen no registrada

Para aplicar la transformación a la imagen aérea no registrada, utilice la función imwarp. Especifique que el tamaño y la posición de la imagen transformada coinciden con el tamaño y la posición de la ortoimagen utilizando el argumento nombre-valor OutputView.

Rfixed = imref2d(size(ortho));
registered = imwarp(unregistered,t,OutputView=Rfixed);

Vea el resultado del registro superponiendo la imagen transformada sobre la ortofoto original.

imshowpair(ortho,registered,"blend")

Consulte también

| | |

Temas relacionados