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.

normxcorr2

Correlación cruzada 2D normalizada

Descripción

ejemplo

C = normxcorr2(template,A) calcula la correlación cruzada normalizada de las matrices template y A. La matriz resultante C contiene los coeficientes de correlación.

Ejemplos

contraer todo

Lea dos imágenes en el espacio de trabajo y conviértalas a escala de grises para su uso con normxcorr2. Muestre una imagen al lado de la otra.

onion = im2gray(imread('onion.png'));
peppers = im2gray(imread('peppers.png'));
montage({peppers,onion})

Figure contains an axes object. The axes object contains an object of type image.

Realice la correlación cruzada y muestre el resultado como superficie.

c = normxcorr2(onion,peppers);
surf(c)
shading flat

Figure contains an axes object. The axes object contains an object of type surface.

Busque el pico de correlación cruzada.

[ypeak,xpeak] = find(c==max(c(:)));

Cuente el relleno que añade normxcorr2.

yoffSet = ypeak-size(onion,1);
xoffSet = xpeak-size(onion,2);

Muestre la zona pertinente utilizando la función drawrectangle. El argumento de par nombre-valor "Position" especifica la coordenada superior izquierda, ancho y alto de la ROI como vector de 4 elementos [xmin,ymin,width,height]. Especifique la cara de la ROI como totalmente transparente.

imshow(peppers)
drawrectangle(gca,'Position',[xoffSet,yoffSet,size(onion,2),size(onion,1)], ...
    'FaceAlpha',0);

Figure contains an axes object. The axes object contains 2 objects of type image, images.roi.rectangle.

Argumentos de entrada

contraer todo

Plantilla de entrada, especificada como matriz numérica. Los valores de template no pueden ser todos iguales.

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

Imagen de entrada, especificada como imagen numérica. A tiene que ser mayor que la matriz template para que la normalización sea significativa.

La correlación cruzada normalizada es una operación indefinida en regiones en las que A tiene una varianza cero en toda la plantilla. En estas regiones, normxcorr2 asigna coeficientes de correlación de cero a la salida C.

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

Argumentos de salida

contraer todo

Coeficientes de correlación, devueltos como matriz numérica con valores en el intervalo [-1, 1].

Tipos de datos: double

Algoritmos

normxcorr2 utiliza el siguiente procedimiento general [1], [2]:

  1. Calcula la correlación cruzada en el dominio espacial o de frecuencia, dependiendo del tamaño de las imágenes.

  2. Calcula las sumas locales precontabilizando las sumas en curso.

  3. Utiliza sumas locales para normalizar la correlación cruzada y conseguir los coeficientes de correlación.

La implementación sigue de cerca la fórmula de [1]:

γ(u,v)=x,y[f(x,y)f¯u,v][t(xu,yv)t¯]{x,y[f(x,y)f¯u,v]2x,y[t(xu,yv)t¯]2}0.5

donde

  • f es la imagen.

  • t¯ es la media de la plantilla

  • f¯u,v es la media de f(x,y) en la región debajo de la plantilla.

Referencias

[1] Lewis, J. P. "Fast Normalized Cross-Correlation." Industrial Light & Magic, 1995. http://scribblethink.org/Work/nvisionInterface/nip.pdf.

[2] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Volume II, Addison-Wesley, 1992, pp. 316-317.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

expandir todo

Consulte también

|