본문 바로가기
Quality control (Univ. Study)/Digital Image Processing

Digital Image Processing - Harris Detector Formulation

by 생각하는 이상훈 2024. 5. 20.
728x90

Harris Detector Formulation

이전 수업에 이어서 Harris corner detector의 수식에 대해서 자세히 알아보자. 이전 시간에 아래 식들의 첫줄 즉 벡터 변화에 따른 Intensity의 변화 차이의 제곱의 합을 통해 E값을 구하는 것을 살펴봤다. 그에 이어서 아래 식 변환 과정은 1차 테일러 급수를 이용하여 푸른색으로 밑줄친 부분의 식을 붉은 색으로 동그라미 친 식으로 변환하고 추가 계산하는 과정을 통해 최종적으로 사용될 Matrix A를 구하는 과정이다.

참고로 테일러 급수는 아래와 같이 f(x)를 n차 미분의 합으로 표현하는 방법이다. 이때 1차 테일러 급수는 아래 식들중 첫번째 형태를 의미한다. 실제로 영상처리 분야에서 35년동안 연구하시면서 2차 이상의 테일러 급수 형태를 사용하는 일을 본적이 없다는 교수님의 여담이 있었다.

 

결국 위에서의 식변환 과정을 통해 얻어낸 행렬 A는 아래와 같이 표현된다.

추가로 행렬A는 아래와 같이 두 gradient의 곱으로 표현되는 형태이다.

행렬 A를 구성하는 중요한 요소인 x,y derivative를 표현한 그래프를 각 확인해보자.

우선 Flat인 경우 0에 가까운 값으로 Ix와 Iy가 밀집해 있는 것을 볼 수 있다.

다음으로 Linear한 edge에 대해서는 한방향으로 퍼져있음을 볼 수 있다. 위의 경우에는 edge가 수직방향이므로 수평으로 patch를 움직일때 Intesity의 변화가 있으므로 위와 같이 Ix방향으로 퍼져있다.

마지막으로 Corner부분에서는 위와 같이 다양한 방향으로 퍼지고 표시해둔대로 각각의 특징이 반영되어 표시된다.

또한 각각은 λ1과 λ2라는 eigenvalue로 표현되는데 아래와 같은 특징이 있다.

따라서 Corner point를 찾기 위해서는 계산된 행렬 A에서 λ1과 λ2이 큰 부분을 찾아내는 것이다.

작다 크다라고 하면 조금 애매할 수 있으니 아래와 같이 영역을 표시해보자.

이런 점도 아직 애매하여 Harris가 기준이 될 식을 아래와 같이 만들어뒀다.

알고리즘 Step을 살펴보면 아래와 같다.

 

1. 이미지의 각 patch에 대해, gradient를 기반으로 A 행렬을 계산한다. 

2. A 행렬을 사용하여 각 윈도우에 대한 R 점수를 계산한다. R 점수는 해당 지점이 corner인지를 나타내는 지표로 사용된다. 

3. R 점수가 특정 임계값보다 큰 지점들을 찾아낸다. 이 지점들은 확실한 코너를 가지고 있다고 판단된다.

4. R 점수가 높은 지점들 중에서도 지역적으로 최대인 점들을 선택한다. 이는 NMS(Non-Maximum Suppression) 기법을 사용하여 수행된다. 이때 NMS는 각 코너 주변에서 가장 높은 값을 가진 지점만을 남기고 다른 지점들은 제거하는 방법이다.


실제 적용 예시

비교할 이미지의 원본

Corner response R을 계산한 결과

R이 threshold보다 큰 값에 대해서 filtering을 한 결과이다.

NMS를 적용하여 local maximum을 구하면 아래와 같다.

이것만으로는 이해하기가 쉽지않으니 이미지에 덮어보자.

시점, 조명변화에 강건한 것을 볼 수 있고 다리와 머리를 움직여도 잘 포착하는 것으로 보아 deformation에도 잘 대응한다.

이때 몸통 부위같이 in-plane 회전을 하는 부분은 인식하기 수월하나 머리부분 같이 3D로 움직이는 out of plane 회전이어서 인식하기 어려운 점이 있다.

다만 Harris detector는 크기 즉 scale이 바뀌면 잘 잡아내기 어려운 문제가 있다.


728x90