Corner detector

코너는 밝기가 여러 방향에서 크게 변하는 이미지 위치입니다. 코너는 안정적이고 반복 가능한 랜드마크입니다: 평탄한 영역(그래디언트 없음)이나 에지(한 방향에서만 그래디언트)와 달리, 코너는 2D에서 모호함 없이 위치를 특정할 수 있어 추적과 매칭에 이상적입니다. 대표적인 검출기는 Harris 코너 검출기입니다.

구조 텐서

가중 함수 w(x,y)w(x,y)(대개 가우시안)로 가중된 지역 윈도우 WW에 걸쳐 계산되는 픽셀에서의 구조 텐서(2차 모멘트 행렬):

M=(x,y)Ww(x,y)[Ix2IxIyIxIyIy2]M = \sum_{(x,y) \in W} w(x,y) \begin{bmatrix} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \end{bmatrix}

여기서 Ix=IxI_x = \frac{\partial I}{\partial x}Iy=IyI_y = \frac{\partial I}{\partial y}는 이미지 그래디언트(Sobel 연산자로 계산)입니다. MM의 고유값 λ1,λ2\lambda_1, \lambda_2는 지역 구조를 특성화합니다:

λ1\lambda_1λ2\lambda_2해석
0\approx 00\approx 0평탄 영역(그래디언트 없음)
0\gg 00\approx 0에지(한 방향만 그래디언트)
0\gg 00\gg 0코너(양 방향 모두 그래디언트)

직관은 다음과 같습니다: MM은 윈도우를 이동시켰을 때 밝기 차이의 제곱 합이 어떻게 변하는지를 요약합니다. 코너는 어느 이동 방향으로도 큰 변화가 생기는 지점입니다---정확히 “두 고유값 모두 큼”이라는 조건입니다.

코너 응답 함수

고유값을 직접 계산하는 것(비용이 큼) 대신, Harris는 다음 응답을 제안했습니다:

R=det(M)k(trace(M))2=λ1λ2k(λ1+λ2)2R = \det(M) - k\,(\mathrm{trace}(M))^2 = \lambda_1\lambda_2 - k(\lambda_1 + \lambda_2)^2

경험적으로 k[0.04,0.06]k \in [0.04, 0.06]입니다. R>0R > 0은 코너를, R<0R < 0은 에지를, 작은 R|R|은 평탄 영역을 나타냅니다. 이후 비최대 억제가 가장 강한 지역 최댓값을 최종 코너로 선택합니다.

밀접하게 관련된 Shi-Tomasi 기준(“Good Features to Track”)은 각 픽셀을 min(λ1,λ2)\min(\lambda_1, \lambda_2)로 직접 점수화합니다---패치의 최악의 경우 추적 가능성을 나타내며, OpenCV의 cv::goodFeaturesToTrack이 구현하는 방식입니다.

처음부터 구현하는 스케치

몇 줄의 NumPy/OpenCV로 Harris를 구현하는 것은 초급자에게 가장 좋은 연습 중 하나입니다:

import cv2, numpy as np

I  = cv2.imread("frame.png", cv2.IMREAD_GRAYSCALE).astype(np.float32)
Ix = cv2.Sobel(I, cv2.CV_32F, 1, 0)
Iy = cv2.Sobel(I, cv2.CV_32F, 0, 1)

# window-averaged structure tensor entries
Sxx = cv2.GaussianBlur(Ix * Ix, (5, 5), 1.0)
Syy = cv2.GaussianBlur(Iy * Iy, (5, 5), 1.0)
Sxy = cv2.GaussianBlur(Ix * Iy, (5, 5), 1.0)

k = 0.04
R = (Sxx * Syy - Sxy**2) - k * (Sxx + Syy)**2   # Harris response
corners = R > 0.01 * R.max()                    # threshold before NMS

SLAM 프론트엔드를 위한 실무적 노트

흔한 함정

SLAM에서의 의미

코너는 특징점 기반 SLAM 프론트엔드의 원자재입니다: 서술되고, 매칭되고, 삼각측량되어 지도점이 되는 키포인트가 됩니다. 구조 텐서는 Lucas-Kanade 광학 흐름에서 거의 그대로 다시 나타납니다---코너(두 고유값 모두 큼)는 정확히 안정적으로 추적할 수 있는 종류의 점이며, 이것이 “good features to track”과 Harris 코너가 그렇게 밀접하게 연관되어 있는 이유입니다. 실시간 SLAM에서 사용되는 이후 세대 검출기(FAST, ORB의 방향 있는 FAST)는 같은 아이디어의 더 빠른 후계자들입니다.

관련 문서