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.

cpselect

Herramienta Selección de puntos de control

Descripción

ejemplo

cpselect(moving,fixed) inicia la Herramienta selección de Puntos de Control, una interfaz de usuario que le permite seleccionar puntos de control en dos imágenes relacionadas. es la imagen a deformar, lo que la lleva al sistema de coordenadas de la imagen. y pueden ser variables que contienen imágenes en escala de grises, truecolor o binarias, o los nombres de los archivos que contienen estas imágenes.movingfixedmovingfixed La herramienta Selección de punto de control devuelve los puntos de control de una estructura.cpstruct

cpselect(moving,fixed,cpstruct_in) comienza con un conjunto inicial de puntos de control que se almacenan en .cpselectcpstruct_in Esta sintaxis le permite reiniciar con el estado de los puntos de control, incluidos los puntos de control no emparejados y predichos, guardados anteriormente en .cpselectcpstruct_in

ejemplo

cpselect(moving,fixed,initialMovingPoints,initialFixedPoints) comienza con un conjunto inicial de pares de puntos de control válidos. y son matrices -by-2 que almacenan y controlan coordenadas de punto, respectivamente.cpselectinitialMovingPointsinitialFixedPointsmmovingfixed Las dos columnas representan las coordenadas - y -de los puntos de control.xy

h = cpselect(___) devuelve un identificador a la herramienta Selección de punto de control.h Puede utilizar la sintaxis para cerrar la herramienta desde la línea de comandos.close(h)

h = cpselect(___,'Wait',false) devuelve un identificador a la herramienta Selección de punto de control.h Puede utilizar la sintaxis para cerrar la herramienta desde la línea de comandos.close(h) A diferencia de la configuración como , esta sintaxis le permite ejecutar al mismo tiempo que ejecuta otros programas en .'Wait'truecpselectMATLAB®

ejemplo

[selectedMovingPoints,selectedFixedPoints] = cpselect(___,'Wait',true) toma el control de la línea de comandos hasta que termine de seleccionar puntos de control. devuelve pares de puntos seleccionados válidos. y son -by-2 matrices que almacenan las coordenadas en las imágenes en movimiento y fijas, respectivamente.MATLABcpselectselectedMovingPointsselectedFixedPointsp Las dos columnas representan las coordenadas - y -de los puntos de control seleccionados.xy

Ejemplos

contraer todo

Llame , especificando los nombres de la imagen que desea registrar y la imagen de referencia.cpselect En este ejemplo se usa la sintaxis opcional que devuelve un identificador a la herramienta que se crea para que pueda cerrar la herramienta mediante programación.

h  = cpselect('westconcordaerial.png','westconcordorthophoto.png');

Cierre la herramienta.

close(h)

Cree una imagen de referencia de ejemplo.

I = checkerboard;

Cree una copia de la imagen de ejemplo, girándola para crear una imagen de ejemplo que necesite registrarse.

J = imrotate(I,30); 

Especifique dos conjuntos de puntos de control para las imágenes fijas y en movimiento.

fixedPoints = [11 11; 41 71]; movingPoints = [14 44; 70 81]; 

Abra la herramienta Selección de punto de control, especificando la muestra de imágenes fijas y en movimiento y los dos conjuntos de puntos de control guardados.

cpselect(J,I,movingPoints,fixedPoints);

Cuando se abra la herramienta, se le pedirá que guarde los puntos de control.

Lea una foto aérea y una ortofoto en el espacio de trabajo y muéstralos.

aerial = imread('westconcordaerial.png'); figure, imshow(aerial) ortho = imread('westconcordorthophoto.png'); figure, imshow(ortho) 

Cargue algunos puntos que ya hayan sido seleccionados.

load westconcordpoints 

Abra la herramienta Selección de punto de control, especificando las dos imágenes y los puntos preseleccionados. Utilice el parámetro para esperar a que elija algunos puntos más.'Wait'cpselect

[aerial_points,ortho_points] = ...        cpselect(aerial,'westconcordorthophoto.png',...                 movingPoints,fixedPoints,...                 'Wait',true); 

Cuando el control vuelve a la línea de comandos, realice el registro.

Primer uso para estimar la transformación geométrica que pone la imagen en movimiento alineada con la imagen fija.fitgeotrans Especifique los puntos de control seleccionados y el tipo de transformación que desee.

t_concord = fitgeotrans(aerial_points,ortho_points,'projective'); 

Siguiente uso para realizar la transformación.imwarp Al definir un objeto de referencia espacial y especificar el objeto como el , la imagen registrada tiene una coincidencia de tamaño y ubicación.ortho'OutputView'ortho

ortho_ref = imref2d(size(ortho)); %relate intrinsic and world coordinates aerial_registered = imwarp(aerial,t_concord,'OutputView',ortho_ref);

Por último, muestre la imagen transformada sobre la ortofoto original para ver qué tan bien se ha realizado el registro.

figure imshowpair(aerial_registered,ortho,'blend')

Argumentos de entrada

contraer todo

Imagen de entrada que se va a alinear, especificada como una imagen en escala de grises, truecolor o binaria, o un vector de caracteres. Una imagen en escala de grises puede ser , , , , o .uint8uint16int16singledouble Una imagen truecolor puede ser , , , o .uint8uint16singledouble Una imagen binaria es de clase .logical Si es un vector de caracteres, debe identificar los archivos que contienen estos mismos tipos de imágenes.moving

Tipos de datos: single | double | int16 | uint8 | uint16 | logical | char | string

Imagen de referencia, especificada como una imagen en escala de grises, truecolor o binaria. Una imagen en escala de grises puede ser , , , , o .uint8uint16int16singledouble Una imagen truecolor puede ser , , , o .uint8uint16singledouble Una imagen binaria es de clase .logical Si es un vector de caracteres, debe identificar los archivos que contienen estos mismos tipos de imágenes.fixed

Tipos de datos: single | double | int16 | uint8 | uint16 | logical | char | string

Puntos de control preseleccionados, especificados como una estructura ( ). contiene información sobre - y -coordenadas de todos los puntos de control en las imágenes en movimiento y fijas, incluidos los puntos de control no emparejados y predichos. también contiene información de indexación que permite a la herramienta Selección de punto de control restaurar el estado de los puntos de control.cpstructcpstruct_inxycpstruct_in

Cree un punto mediante la exportación de puntos desde la herramienta Selección de punto de control, que se describe en .cpstructExportar puntos de control al espacio de trabajo

Tipos de datos: struct

Puntos de control preseleccionados en la imagen en movimiento, especificados como una matriz numérica -by-2.m Las dos columnas representan las coordenadas - y -de los puntos de control.xy

Tipos de datos: double

Puntos de control preseleccionados en la imagen fija, especificados como una matriz numérica -by-2.m Las dos columnas representan las coordenadas - y -de los puntos de control.xy

Tipos de datos: double

Argumentos de salida

contraer todo

Herramienta Selección de punto de control, devuelta como un identificador.

Puntos de control seleccionados en la imagen en movimiento, especificados como una matriz numérica -by-2.p Las dos columnas representan las coordenadas - y -de los puntos de control.xy

Tipos de datos: double

Puntos de control seleccionados en la imagen fija, especificados como una matriz numérica -by-2.p Las dos columnas representan las coordenadas - y -de los puntos de control.xy

Tipos de datos: double

Sugerencias

  • Al llamar a un script, especifique la opción como .cpselect'Wait'true La opción hace que se bloquee la línea de comandos hasta que se hayan seleccionado y devuelto puntos de control.'Wait'cpselectMATLAB Si no utiliza la opción, devuelve el control inmediatamente y el script continúa sin dar tiempo a la selección del punto de control.'Wait'cpselect Además, sin la opción, no devuelve los puntos de control como valores devueltos.'Wait'cpselect

Algoritmos

utiliza el siguiente procedimiento general para la predicción de punto de control.cpselect

  1. Encuentra todos los pares válidos de puntos de control.

  2. Infiere una transformación espacial entre los puntos de control y los puntos de control mediante un método que depende del número de pares válidos, como se indica a continuación:movingfixed

    2 pares

    Semejanza no reflexiva

    3 pares

    Afín

    4 o más pares

    Proyectiva

  3. Aplique la transformación espacial al nuevo punto. Esta transformación genera el punto predicho.

  4. Mostrar el punto predicho.

Introducido antes de R2006a