CV2011. 8. 29. 15:09

Gaussian Mixture Model 은 전 배경 분리를 하는 방법중의 하나로서

여러개의 가우시안 확률밀도함수로 데이터의 분포를 모델링 하는 방법이다.


영상에서는 각각의 픽셀값에 해당되며 (대개 0~255 값을 지니는 밝기값 , GrayScale)

배경의 학습을 통해 , 배경모델이 형성되며 ,이를 이용해 전경을 따로 뽑아낼수 있다.

 

대략 이러한 함수를 만들어서 사용할 수 있겠다.

가우시안 혼합 모델에 대한 내용은 cvaux.h 라이브러리에 존재한다.

구글링 하기보다는 실제 헤더 파일을 뒤져보는게 더 이해나 응용이  빠를것이다. 


업데이트만 하고 끝나는 것 처럼보이는데

실제로 전경, 배경을 얻기 위해서는 배경 모델의 멤버변수로 존재한다.


cvaux.h 에서 background/ foreground 나오는 부분을 찾아보면

구조체 구조가 나올것이다.
 

실제로 적용시켜본 결과를 보면

 
학습중이다. 20프레임 이전까지는 학습을 하면서 배경 모델을 형성한다.

사진처럼 실제 객체들이 감지가 되었는데 이는 학습을 하면서 동시에 전배경 분리를 한 결과인 것이다.

학습이 되면서 사람의 잔상 같은게 남게 되었는데 저 부분은 학습이 진행되면 될수록

연해진다(?),

 

프레임이 많이 진행된 결과이다.

20프레임 이후이므로 이미 형성된 배경모델을 기반으로 전 배경을 분리한다.

완전한 배경을 가지고 학습을 한것이 아니기 때문에 (학습을 하는 도중에 객체가 움직임)

후추소금 노이즈 (Salt&Pepper noise) 비슷하게 발생한다. 저런 잡음은

Median Filter 로 제거하는 것이 효과적일 것이다.

 
똑같은 46프레임에서 이번에는 Median Filter 가 적용된 전경이다.

상당히 깔끔해진 것을 알 수 있다.

하지만 무었보다 중요한 점은 배경 학습이 깔끔하게 이루어져야 한다는 것이다. 
Posted by 멍충한아싸

댓글을 달아 주세요

  1. GMM

    안녕하세요, 혹시 GMM에 관련된 예제 소스를 얻을 수 있을까요??

    2011.11.14 22:26 [ ADDR : EDIT/ DEL : REPLY ]
  2. 위에 update 함수 만든거 있죠, 저런식으로 사용하세요, 가우시안 학습 모델로 생성한뒤에 해당 모델을 업데이트 시켜주면 되요

    2011.11.14 23:29 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 난장판

    성대아싸님 안녕하세요.
    눈팅만 하고 가지만 많이 와서 도움을 받고 있습니다.
    다름이 아니라... 위의 업데이트 코드로 영상을 업데이트시키면,
    프레임이 지나면 지날수록 영상이 뚝뚝끊어지는 현상이 발생합니다.
    혹시, 다른 처리를 해줘야하는 부분이 있는지요. cvReleaseBGStatModel 을 안해서 그런걸까요?

    2011.12.14 18:04 [ ADDR : EDIT/ DEL : REPLY ]
  4. 부탁드려요`

    제가 코딩을 잘못해서 소스코드를 찾다가 들어왔습니다
    혹시 위 프로그램처럼 돌아가는 소스코드를 얻을수 있을까요?

    2013.05.24 10:27 [ ADDR : EDIT/ DEL : REPLY ]