Processing math: 100%
코너점(Corner) 검출 - cornerEigenValsAndVecs

코너점(Corner) 검출 - cornerEigenValsAndVecs

2018, Aug 01    
  • Reference : Python으로 배우는 OpenCV 프로그래밍
  • Code : https://github.com/gaussian37/Vision/tree/master/OpenCV/corner%20detection

OpenCV를 이용하여 영상에서의 코너점을 검출하는 방법에 대하여 알아보도록 하겠습니다. 코너점은 단일 채널의 입력 영상의 미분 연산자에 의한 에지 방향을 이용하여 검출 합니다.

코너점 검출 함수

코너점을 검출할 수 있는 OpenCV의 대표적인 6가지 방법중에 cornerEigenValsAndVecs에 대하여 알아보도록 하겠습니다.

코너 검출에는 다음 이미지를 사용하겠습니다.

Drawing

사용할 함수는 cv2.cornerEigenValsAndVecs() 입니다.

  • dst = cv2.cornerEigenValsAndVecs(src, blockSize, ksize)
  • 코너점 검출 방법 : λ1,λ2
  • 상세 내용
    • 입력 영상 src에서 각 픽셀의 고유값과 고유벡터를 6 채널 dst에 계산합니다.
    • 영상의 모든 픽셀에 대하여 blockSize x blockSize의 이웃에 있는 미분값을 이용하여 2 x 2 크기의 gradient를 이용한 covariance matrix M을 계산하고, M의 eigenvalue λ1,λ2, eigenvector (x1,y1)(x2,y2)를 계산하여 dst에 저장합니다.
      • eigenvalue λ1,λ2모두 작은 곳평평한 영역에 있는 점
      • eigenvalue λ1,λ2 둘 중 하나는 크고 하나는 작으면 에지
      • eigenvalue λ1,λ2 두 값이 모드 큰 경우 코너점

Covariant Matrix X 은 다음과 같습니다.

[M = \left[ Nbd(x,y)I2xNbd(x,y)IxIyNbd(x,y)IyIxNbd(x,y)I2y \right]]

이 때, Ix=I(x,y)x,Iy=I(x,y)y 입니다.