더북(TheBook)

OpenCV는 해리스 코너 응답 함수 값을 계산하는 cornerHarris() 함수를 제공합니다. cornerHarris() 함수가 반환하는 해리스 코너 응답 함수 값에 적절한 임계값 연산을 적용하면 영상에서 코너 위치를 모두 찾을 수 있습니다. cornerHarris() 함수 원형은 다음과 같습니다.

void cornerHarris(InputArray src, OutputArray dst, int blockSize,
                  int ksize, double k, int borderType = BORDER_DEFAULT);

src

입력 영상. CV_8UC1 또는 CV_32FC1

dst

해리스 코너 응답 함수 값을 저장할 행렬. src와 크기가 같고 CV_32FC1 타입입니다.

blockSize

행렬 M 연산에 사용할 이웃 픽셀 크기. 픽셀 주변 blockSize×blockSize 윈도우를 설정하여 행렬 M을 계산합니다.

ksize

소벨 연산자를 위한 커널 크기

k

해리스 코너 검출 상수

borderType

가장자리 픽셀 확장 방식

 

cornerHarris() 함수는 입력 영상 src의 모든 픽셀 위치에서 해리스 코너 응답 함수 값을 계산하고, 그 결과를 dst 행렬로 반환합니다. dst 행렬의 모든 원소는 float 자료형을 사용하며, 이 값이 사용자가 지정한 임계값보다 크면 코너 점으로 판단할 수 있습니다. 이때 하나의 코너 위치에 사용자 지정 임계값보다 큰 픽셀이 여러 개 발생할 수 있으므로, 간단한 비최대 억제(non-maximum suppression)를 수행하여 지역 최댓값 위치만 코너로 판별하는 것이 좋습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.