2012-10-13 3 views
1

EM 알고리즘을 사용하여 두 개의 가우스 혼합을 사용하여 비디오 프레임의 색상 분포를 추정하려고합니다. 이를 위해 EM 계산을 용이하게하기 위해 두 가지 가우시안 방법으로 색상 분포에서 두 개의 개별 피크를 사용하려고합니다. OpenCV에서 이들을 구현하는 데 몇 가지 어려움이 있습니다.가우시안 혼합 모델로 색상 분포 추정

첫 번째 질문은 어떻게 두 개의 봉우리를 결정할 수 있습니까? 나는 OpenCV에서 피크 추정치를 조사했지만, 여전히 별도의 기능을 찾을 수 없었다. 그래서 두 지역을 결정한 다음 최대 값을 정점으로 찾습니다. 이 방법이 맞습니까?

두 번째 질문은 OpenCV에서 EM을 사용하여 가우시안 혼합 모델을 수행하는 방법은 무엇입니까? 내가 아는 한, "cv :: EM :: predict"함수는 가장 가능성있는 혼합물 구성 요소의 인덱스를 줄 수 있습니다. 그러나 저는 EM 훈련에 어려움을 겪습니다. 나는 다른 코드를 수색하고 발견했지만 정확한 매개 변수를 찾는 것은 너무 어렵다. 누군가 나에게 이것에 대한 예제 코드를 제공 할 수 있습니까? 미리 감사드립니다.

+1

1. '두 개의 피크'라고 말했을 때 가우스 분포의 피크를 참조 했습니까? 그렇다면 pdf를 통해 피크의 중심을 계산하여이 값을 쉽게 얻을 수 있습니다 (사용 가능한 경우). 2. 두 번째 질문에 대해 실제로 Opencv는 당신이하려고하는 것과 비슷한 일을 할 수있는 샘플을 문서화했습니다. "EM을 사용하는 다중 가우스 분포의 무작위 샘플 클러스터링" opencv 문서와 함께 제공됩니다 !!! http://opencv.willowgarage.com/documentation/cpp/expectation-maximization.html – james

+0

@james : 답변 해 주셔서 감사합니다. –

+0

@james : openCV 2.4.2를 사용하고 opencv 문서의 예제 코드를 사용한 후에 "CvEMParams"가 인식되지 않습니다. 나는 검색했고 "cv :: EM" "paramType"을 대신 사용했지만 여전히 올바르지 않습니다. 설명해 주시겠습니까? –

답변

1

@ederman, 웹 링크 대신 {OpenCV library location} \ opencv \ samples \ cpp \ em.cpp를 사용해보십시오. 링크의 샘플 코드가 오래되었다고 생각합니다. OpenCV 2.3.1에서 샘플 코드를 성공적으로 컴파일했습니다. 2.4.2에서는 문제가되지 않습니다.

행운을 빕니다 :)

+0

이제 작동했습니다. 감사합니다. –

0

내 첫 번째 질문은입니다 : 어떻게 두 개의 피크를 확인할 수 있습니까?

가능한 샘플 범위의 범위를 반복하고 EM.predict (sample) [0]이 최고점에 도달 할 때 테스트합니다.