2022.06.13 금일은 모멘트 기반 객체 검출에 관한 강의였다.
모멘트 ( Moments ) 란?
- 영상의 형태를 표현하는 일련의 실수값들의 집합 ( 특징 벡터 추출 방법 )
- 특정 함수 집합과의 상관관계 ( correlatjion ) 형태로 계산
- Geometric moments, Cetntral moments, Normalized moments, Legendre moments, Complex moments,
Zernike moments, ART(Angular Radial Transform ), etc.
Geometric moments, Cetntral moments, Normalized moments가 성능이 좋은 모멘트는 아니다.
위 3가지의 모멘트는 1960년대에 나왔던 모멘트 추출 방법인데 현재 더 효율이 좋고 최근에 나온 모멘트는Legendre moments, Zernike moments , ART 등이 있다.하지만 현재 OpenCV 에는 구현되어있지 않기때문에 위 G,C,N Moments를 사용해야한다.
Hu의 7개 불변 모멘트 ( Hu's seven invariant moments )
- 3차 이하의 정규화된 중심 모멘트를 조합하여 만든 7개의 모멘트 값
- 영상의 크기, 회전, 이동, 대칭 변환에 불변 ( Moment 값은 유지된다 )
모양 비교 함수
cv2.matchShapes( contour1, contour2, method, parameter ) -> retval
contour1 : 특정객체의 첫 번째 외곽선 좌표 또는 그레이스케일 영상
( 외곽선은 findContours 함수 사용 )
contour2 : 두 번째 외곽선 또는 그레이 스케일 영상
method : 비교 방법 지정.
cv2.CONTOURS_MATCH_I1,cv2.CONTOURS_MATCH_I2,cv2.CONTOURS_MATCH_I3 중 하나 사용
* 3번째 방법이 가장 좋다고 알려져있다. ( I1 or I3 )
parameter : 사용되지 않음. 0 지정
retval : 두 외곽선 또는 그레이스케일 영상 사이의 거리 ( distance )
참고사항 : Hu의 불변 모멘트를 이요하여 두 외곽선 또는 영상의 모양을 비교
( 크기, 회전, 이동, 대칭 변환에 강인 )
결국 모멘트 기반 객체검출이라고 하는 것은
지정되어있는 객체를 기반으로 검출하고자하는 영상을 전체스캔하여 가장 비슷한 객체를 찾아내주는
템플릿 매칭과 유사한 객체검출 알고리즘이라고 생각하면 쉬울 것 같다.
Object 영상을 반전시킨 뒤 Threshold 함수를 사용하여 이진화시킨다.
이진화시킨 영상을 사용하여 contour 를 찾아준 뒤 검출된 하나의 객체를 obj_pts 변수에 지정한다.
이후 src ( 입력영상 )도 마찬가지로 반전시킨뒤 이진화하고, findContours를 사용하여 외곽선들을 contours에 저장한다.
pts에 contours에 저장되어있는 외곽선 정보들을 넣으면서검출된 contour의 면적이 1000보다 작으면 노이즈라고 판단하여 continue로 해당 외곽선은 무시한다.이후 노이즈가 아니라고 판단된 contour는 boundingRect 함수로 해당 외곽선을 둘러싸는 바운딩박스를 만들어주고rectangle 을 사용하여 그려준다.
이후 금일 배운 matchShapes 함수를 사용하여 Object와 해당 윤곽선의 모멘트를 비교한다.
그렇게 나온 retval ( 두 외곽선 또는 그레이스케일 영상 사이의 거리 )를 사용하여
Object 의 이미지와 Src에서 검출된 객체 이미지가 비슷하면 작은값, 다르면 큰값이 나온다는 점을 사용하여
모멘트 검사를 진행한다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 영상 분할과 객체 검출 _ 템플릿매칭 ( 인쇄체 숫자 인식 ) (0) | 2022.06.15 |
---|---|
[Open CV] 영상 분할과 객체 검출 _ 템플릿 매칭 (0) | 2022.06.14 |
[Open CV] 영상 분할과 객체 검출 _ 그랩컷 (0) | 2022.06.12 |
[Open CV] 이진 영상 처리 _ 다양한 외곽선 함수 (0) | 2022.06.11 |
[Open CV] 이진 영상 처리 _ 외곽선 검출 (0) | 2022.06.10 |