Main Content

normxcorr2

정규화된 2차원 상호상관

설명

예제

C = normxcorr2(template,A)는 행렬 templateA의 정규화된 상호상관을 계산합니다. 결과 행렬 C에는 상관 계수가 포함됩니다.

예제

모두 축소

두 개의 영상을 작업 공간으로 읽어 들인 후, normxcorr2에 사용할 수 있도록 회색조 영상으로 변환합니다. 영상을 나란히 표시합니다.

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

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

상호상관을 수행하고, 결과를 곡면으로 표시합니다.

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

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

상호상관의 피크를 찾습니다.

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

normxcorr2가 추가하는 채우기를 설명합니다.

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

drawrectangle 함수를 사용하여 정합된 영역을 표시합니다. 'Position' 이름-값 쌍 인수는 ROI의 왼쪽 위 좌표, 너비 및 높이를 4개 요소 벡터 [xmin,ymin,width,height]로 지정합니다. ROI의 면을 완전 투명으로 지정합니다.

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

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

입력 인수

모두 축소

입력 형판으로, 숫자형 행렬로 지정됩니다. template의 값은 모두 같을 수 없습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

입력 영상으로, 숫자형 영상으로 지정됩니다. 정규화가 유의미하려면 A가 행렬 template보다 커야 합니다.

정규화된 상호상관 연산은 전체 형판 범위에서 A의 분산이 0인 영역에 대해서는 정의되지 않습니다. 이러한 영역에서는 normxcorr2가 상관 계수 0을 출력값 C에 할당합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

출력 인수

모두 축소

상관 계수로, [-1, 1] 범위의 값을 갖는 숫자형 행렬로 반환됩니다.

데이터형: double

알고리즘

normxcorr2는 다음과 같은 일반적인 절차를 사용합니다 [1], [2].

  1. 영상 크기에 따라, 공간 영역이나 주파수 영역에서 상호상관을 계산합니다.

  2. 이동 합계를 미리 계산하여 소계를 계산합니다. [1]

  3. 소계를 사용해 상호상관을 정규화하여 상관 계수를 얻습니다.

구현은 [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

여기서

  • f는 영상입니다.

  • t¯는 형판의 평균입니다.

  • f¯u,v는 형판 아래 영역에서 f(x,y)의 평균입니다.

참고 문헌

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

확장 기능

참고 항목

|

R2006a 이전에 개발됨