Main Content

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.

cpcorr

Ajuste las ubicaciones de los puntos de control mediante la correlación cruzada

Descripción

ejemplo

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints,moving,fixed) utiliza la correlación cruzada normalizada para ajustar cada par de puntos de control especificados en y . y son imágenes. devuelve los puntos de control ajustados en .movingPointsfixedPointsmovingfixedcpcorrmovingPointsAdjusted

Nota

Las imágenes deben tener la misma escala para que sean efectivas.movingfixedcpcorr Si no puede correlacionar un par de puntos de control, contiene las mismas coordenadas que para ese par.cpcorrmovingPointsAdjustedmovingPoints

Ejemplos

contraer todo

Lea dos imágenes en el espacio de trabajo.

moving = imread('onion.png'); fixed = imread('peppers.png');

Defina conjuntos de puntos de control para ambas imágenes.

movingPoints = [118 42;99 87]; fixedPoints = [190 114;171 165];

Muestre las imágenes y muestre los puntos de control en blanco.

figure; imshow(fixed) hold on plot(fixedPoints(:,1),fixedPoints(:,2),'xw')  title('fixed')

figure; imshow(moving) hold on plot(movingPoints(:,1),movingPoints(:,2),'xw')  title('moving')

Observe los ligeros errores en la posición de los puntos en movimiento.

Ajuste los puntos de control móviles mediante correlación cruzada.

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints,...                               moving(:,:,1),fixed(:,:,1))
movingPointsAdjusted = 2×2

  115.9000   39.1000
   97.0000   89.9000

Visualice los puntos de movimiento ajustados en amarillo. En comparación con los puntos móviles originales (en blanco), los puntos ajustados coinciden más estrechamente con las posiciones de los puntos fijos.

plot(movingPointsAdjusted(:,1),movingPointsAdjusted(:,2),'xy')      

Argumentos de entrada

contraer todo

Coordenadas de los puntos de control de la imagen que se va a transformar, especificadas como una matriz -by-2.Mdouble

Ejemplo: movingPoints = [127 93; 74 59];

Tipos de datos: double

Coordenadas de puntos de control en la imagen de referencia, especificadas como una matriz -by-2.Mdouble

Ejemplo: fixedPoints = [323 195; 269 161];

Tipos de datos: double

Imagen que se va a registrar, especificada como una matriz numérica de valores finitos.

Imagen de referencia en la orientación de destino, especificada como una matriz numérica de valores finitos.

Argumentos de salida

contraer todo

Coordenadas ajustadas de los puntos de control de la imagen que se va a transformar, devueltas como una matriz del mismo tamaño que .doublemovingPoints

Sugerencias

no puede ajustar un punto si se produce alguna de las siguientes situaciones:cpcorr

  • puntos están demasiado cerca del borde de cualquiera de las imágenes

  • regiones de imágenes alrededor de puntos contienen oInfNaN

  • región alrededor de un punto en la imagen en movimiento tiene cero desviación estándar

  • regiones de imágenes alrededor de los puntos están mal correlacionadas

Algoritmos

sólo mueve la posición de un punto de control hasta cuatro píxeles.cpcorr Las coordenadas ajustadas son precisas hasta una décima parte de un píxel. está diseñado para obtener precisión de subpíxeles del contenido de la imagen y la selección de puntos de control gruesos.cpcorr

Consulte también

| | |

Introducido antes de R2006a