본문 바로가기
Study/파이썬

파이썬 openCV 특징점검출

by ChatBotBunny 2021. 7. 30.

이 글은 패스트캠퍼스 황선규 박사님의 ''opencv를 활용한 컴퓨터비전과 딥러닝 올인원 패키지"강의 를 리뷰하였습니다.


1) 코너

* 코너

- 객체의 뾰족하게 나온 부분  

- 변별력을 가지는 부분임. 

- 위의 예에서 A와 B와는 달리 C는 local적 변별력을 가지고 있다. 

 

2) open cv에서 제공하는 코너검출 방법

 - 해리스코너: 실수형태 행렬의 코너응답함수 반환, 렬이춘히 크면 코너라고 인식함. 점들이 많이 붙어있거나 local maxima가 아닌것도 반환될수 있음. 

- Good features to traack: 해리스코너 방식의 단점을 보완하여 local maxima가 아닌것은 걸러줌. 리턴타입은 코너점들의 좌표를 그대로 반환하여 사용하기가 수월함. 

- FAST: 코너검출방법중 가장 빠름, 특정 픽셀 주변의 16개를 조사하여 그 픽샐값이 가운데 픽셀보다 충분히 밝거나 어두운 것이 9개/12개가 있으면 코너라고 판단 

 

- 가장 효율적인 방법은 FAST임. 

 

3) 해리스 코너 함수 

- blocksize는 3정도가 무난. 

- 해리스상수 k는 보통 0.04  

- 결과값으로 좌표가 반환되면 편하겠지만, 그렇지 않고 float 타입의 행렬 리턴. 행렬이 0보다 충분히 크면 적절한 threshold를 주어 코너로 판단하게 함. -> 후처리가 필요하기때문에 사용하기에 불편하긴 함. 

 

4) GoodFeaturesToTrack 방법 

- 논문: https://www.edwardrosten.com/work/fast.html

- minDistance: 검출된 두개의 코너가 너무 가까우면 하나를 버리겠다 

- 리턴값: 점들의 좌표를 3차원으로 줌. N은 코너점의 개수 

 

5) FAST 

- threhold는 30~60정도 추천 

- nommaxSuppression: 근방에 코너가 또 검출될수있기때문에 이것을 억제(가장 큰것만 선택) default 값이 true임. 

- FAST 방법은 노이즈에 민감함. 속도가 항상 좋기때문에 FAST가 코너검출에 가장 효율적임.