David의 개발 이야기!

[CV Lecture 06] Feature Detection 본문

컴퓨터비전

[CV Lecture 06] Feature Detection

david.kim2028 2023. 12. 3. 15:50
반응형

본 포스팅에서는 파노라마를 만드는 방법에 대해 기술 하고자 한다. 파노라마를 배우는 이유는, CV에서, 초급, 중급에 해당하는 기초적인 알고리즘이기 때문이다. 파노라마를 만드는 방식은 아래 순서와 같다.

 

1. Detect Interest Points

2. Describe small patches about such points

3. Find Matches between pairs of such points on two images

4. Find geometric transformations from one image to the other.

5. Warp one image to the other to align them

6. Blend the image together.

 

1. How can we find unique patch?

Edge 는 좋은 선택지중 하나이나, 한뱡향으로만 변화가 생기는 단점이 있다. Corner! 는 하나의 방향으로만 match 한다. Only  one alignment matches 따라서, Corner가 unique patch로 좋다.

 

2.   Then, How can we find a Corner?

 

window를 어느방향으로 이동하든, 큰 변화가 일어나는 것이, Corner 이다.

 

3.   Detecting Corner

Corner는 다음과 같은 방식으로 감지한다.

 

1. 이미지 기울기 계산 ( Compute image gradients over small region )

이미지의 각 픽셀에서, X, Y 방향의 기울기를 계산한다. 이것은, 이미지의 밝기 변화율을 측정하는 것으로, 특히 이미지의 경계나, 코너에서 높은 값을 가지게 된다.

 

2. 각 이미지 기울기에서 평균값을 뻄 ( Substract mean from each image gradient )

각 기울기에서 해당 지역의 평균기울기를 빼서, 기율기의 중심을 조정한다. 이는 노이즈에 대한 감도를 줄이고, 더 안정적인 코너 감지를 위해 수행한다.

 

3. 각 픽셀에서 공분산 행렬 계산 ( Compute the covariance matrix at each pixel )

각 픽셀 주변의 기울기 정보를 바탕으로 공분산 행렬을 계산 -> 이 행렬은 이미지의 픽셀 값 변화의 방향성과 강도를 나타낸다.

 

4. 고유벡터와 고유값 계산 ( Compute eigenvectors and eigenvalues )

공분산 행렬의 고유벡터와 고유값을 계산. 고유값은 해당 픽셀 주변에서의 이미지 변화율을 의미 -> 고유벡터는 이 변화율을 의미하며, 고유벡터는 이 변화의 방향을 나타낸다.

 

5. 고유값에 대한 임계값을 사용하여 코너 감지 ( Use threshold on eigenvalues to detect corners )

고유값을 사용해 코너를 감지한다. 고유값이 특정 임계값보다 크면, 해당 픽셀은 강한 변화율을 가지고 있으며, 코너로 간주.

 

3-1 이미지 기울기 계산 Compute image gradients over small region

 

3-2 각 이미지 기울기에서 평균값을 뺌 Substract mean from each image gradient

 

 

 

3-3 각 픽셀에서 공분산 행렬 계산 Compute the covariance matrix at each pixel 

 

3-4. 고유벡터와 고유값 계산  Compute eigenvectors and eigenvalues

3-5. 고유값에 대한 임계값을 사용하여 코너 감지  Use threshold on eigenvalues to detect corners

 

이거 외에도 다양한 방법으로 threshold 를 설정한다.

 

 

 

Harris & Stephens 방식에 대해 좀 더 살펴보면 아래와 같다. 

4.   Harris Detector

 

eigenvector 계산량 문제를 해결하고, 코너를 찾기 위한 대표적인 detector로 다음과 같이 구한다.

 

1. image gradient 계산

2. covariacne matrix 계산

3. 스무딩 필터를 이용해 convolution 계산

4. Harris matrix를 정의

5. detector 식을 통해 계산 R = det(H) - ktrace&2(H)

6. Threshold on value of R; compute non-max suppression

 

 

 

 

5.   Harris Detector의 단점

Harris Detector는 translation 하거나, rotation 하여도 불변하나, Scale이 바뀌었을때, 바뀌는 문제가 있다.

코너를 확대하게 되면, 결국 edge로 판별하는 문제가 발생한다. 

 

=> 따라서, Harris Detector는 widely 하게 이용하지 않는다. 뒤에서 포스팅할 SIFT Detector가 표준이다!!

반응형
Comments