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.

imregcorr

Estimar la transformación geométrica que alinea dos imágenes 2D utilizando la correlación de fases

Descripción

ejemplo

tform = imregcorr(moving,fixed) estima la transformación geométrica que alinea una imagen, , con una imagen de referencia, .movingfixed La función devuelve un objeto de transformación geométrica, , que asigna píxeles a píxeles en .tformmovingfixed

tform = imregcorr(moving,fixed,transformtype) estima la transformación geométrica, donde es un vector escalar de cadena o de caracteres que especifica el tipo de transformación.transformtype

tform = imregcorr(moving,Rmoving,fixed,Rfixed,___) estima la transformación geométrica que alinea una imagen, , con una imagen de referencia, . y son objetos de referencia espacial que contienen información espacial sobre las imágenes y, respectivamente.movingfixedRmovingRfixedmovingfixed El objeto de transformación devuelto, , define la asignación de puntos en el sistema de coordenadas universales.tform

tform = imregcorr(___,Name,Value,___) registra la imagen en movimiento a la imagen fija utilizando pares nombre-valor para controlar varios aspectos del algoritmo de registro.

Ejemplos

contraer todo

Lea una imagen de referencia en el espacio de trabajo.

fixed  = imread('cameraman.tif');

Cree una imagen en movimiento sintética escalando y girando la imagen fija.

theta = 20; S = 2.3; tform = affine2d([S.*cosd(theta) -S.*sind(theta) 0; ...                   S.*sind(theta)  S.*cosd(theta) 0; ...                   0 0 1]); moving = imwarp(fixed,tform); moving = moving + uint8(10*rand(size(moving)));

Muestre la imagen fija y la imagen en movimiento una junto a la otra.

imshowpair(fixed,moving,'montage')

Calcule la transformación necesaria para alinear las imágenes utilizando .imregcorr

tformEstimate = imregcorr(moving,fixed);

Aplique la transformación geométrica estimada a la imagen en movimiento. En este ejemplo se utiliza el parámetro para obtener una imagen registrada del mismo tamaño y con los mismos límites mundiales que la imagen de referencia.'OutputView'

Rfixed = imref2d(size(fixed)); movingReg = imwarp(moving,tformEstimate,'OutputView',Rfixed);

Vea la imagen original y la imagen registrada en paralelo para comprobar el registro. A continuación, vea la imagen registrada superpuesta en el original utilizando la opción de resaltar cualquier área donde las imágenes difieran.'falsecolor'

imshowpair(fixed,movingReg,'montage')

imshowpair(fixed,movingReg,'falsecolor');

Argumentos de entrada

contraer todo

Imagen que se va a registrar, especificada como una imagen en escala de grises, binaria o RGB. Si especifica una imagen RGB, la convierte en una imagen en escala de grises utilizando antes del procesamiento.imregcorrrgb2gray

Nota

La relación de aspecto de afecta a la transformación de salida.movingtform Para obtener los mejores resultados, utilice una imagen cuadrada.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Imagen de referencia en la orientación de destino, especificada como una imagen en escala de grises, binaria o RGB. Si especifica una imagen RGB, la convierte en una imagen en escala de grises utilizando antes del procesamiento.imregcorrrgb2gray

Nota

La relación de aspecto de afecta a la transformación de salida.fixedtform Para obtener los mejores resultados, utilice una imagen cuadrada.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Tipo de transformación que se debe estimar, especificado como uno de los siguientes valores.

ValorDescripción
'translation'Traducción
'rigid'Traducción y rotación
'similarity'Traducción, rotación y escalado Cuando se utiliza la opción, el algoritmo de correlación de fase solo es invariable en escala dentro de un cierto rango de diferencia de escala entre las imágenes fijas y en movimiento. limita el espacio de búsqueda a las diferencias de escala dentro del rango [1/4, 4]. no detecta diferencias de escala inferiores a 1/4 o mayores que 4.

'similarity'imregcorrimregcorr

Tipos de datos: char | string

Información de referencia espacial asociada a la imagen que se va a registrar, especificada como un objeto.imref2d

Información de referencia espacial asociada a la imagen de referencia (fija), especificada como un objeto.imref2d

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: tformEstimate = imregcorr(moving,fixed,'Window',true);

Indicador lógico para controlar el uso de ventanas para suprimir los efectos de fuga espectral en el dominio de frecuencia, especificado como el par separado por comas que consta de y un escalar lógico.'Window' Cuando se establece en , utiliza una ventana de Blackman para aumentar la estabilidad de los resultados de registro.trueimregcorr Si las características comunes que intenta alinear en las imágenes están orientadas a lo largo de los bordes, la configuración de a veces puede proporcionar resultados de registro superiores.'Window'false

Ejemplo: tformEstimate = imregcorr(moving,fixed,'Window',true);

Tipos de datos: logical

Argumentos de salida

contraer todo

Transformación geométrica, devuelta como un objeto de transformación geométrica de tipo .affine2d

Sugerencias

  • Si la imagen es de tipo , puede lograr mejoras de rendimiento mediante la conversión de la imagen con antes del registro.doublesingleim2single Las imágenes de entrada de tipo hacen que el algoritmo calcule los FFT en .doubledouble

Referencias

[1] Reddy, B. S. and Chatterji, B. N., An FFT-Based Technique for Translation, Rotation, and Scale-Invariant Image Registration, IEEE Transactions on Image Processing, Vol. 5, No. 8, August 1996

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Consulte también

Apps

Funciones

Introducido en R2014a