http://lueseypid.tistory.com/88
모멘트
외곽선 모멘트는 두 외곽선의 유사도를 비교하는 간단한 방법중 하나이다. 모멘트는 외곽선의 전체적인 특성을 표현하는 척도로써, 외관상에 존재하는 모든 픽셀을 이용하여 계산된다.
OpenCV에서는 cvContourMoments()함수를 통해 외곽선의 모멘트를 계산한다.
void cvContourMoments( CvSeq* contour, //외곽선 CvMoments* moments //모멘트값이 저장될 변수 ); |
CvMoments 구조체
typedef struct CvMoments { double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; /* spatial moments */ double mu20, mu11, mu02, mu30, mu21, mu12, mu03; /* central moments */ double inv_sqrt_m00; /* m00 != 0 ? 1/sqrt(m00) : 0 */ } CvMoments; |
cvContourMoments() 함수는 m00, m01, ..... m03 원소만 사용하고 나머지는 다른 함수들에서 사용된다.
cvGetSpatialMoment()
double cvGetSpatialMoment( CvMoments* moments, int x_order, int y_order ); |
CvMoments 구조체에서 특정 차수 모멘트를 반환한다. (단, 3차이하)
정규화 모멘트
모멘트는 유사도를 비교하는 속성으로 사용하나 만족스러운 성능을 보여주지 못하기떄문에 보다 실용적으로 사용되기 위해서는 정규화 모멘트를 사용함으로써, 모양은 같고 크기가 다른 객체에 대해서도 유사한 모멘트값을 추출해내야한다.
OpenCV에서는 휴의 불변모멘트와 같이 정규화된 모멘트 계산함수를 제공한다.
SimpleImageAnalysisbyMoments.pdf