Gaussian Mixture Model 은 전 배경 분리를 하는 방법중의 하나로서
여러개의 가우시안 확률밀도함수로 데이터의 분포를 모델링 하는 방법이다.
영상에서는 각각의 픽셀값에 해당되며 (대개 0~255 값을 지니는 밝기값 , GrayScale)
배경의 학습을 통해 , 배경모델이 형성되며 ,이를 이용해 전경을 따로 뽑아낼수 있다.
대략 이러한 함수를 만들어서 사용할 수 있겠다.
가우시안 혼합 모델에 대한 내용은 cvaux.h 라이브러리에 존재한다.
구글링 하기보다는 실제 헤더 파일을 뒤져보는게 더 이해나 응용이 빠를것이다.
업데이트만 하고 끝나는 것 처럼보이는데
실제로 전경, 배경을 얻기 위해서는 배경 모델의 멤버변수로 존재한다.
cvaux.h 에서 background/ foreground 나오는 부분을 찾아보면
구조체 구조가 나올것이다.
실제로 적용시켜본 결과를 보면
학습중이다. 20프레임 이전까지는 학습을 하면서 배경 모델을 형성한다.
사진처럼 실제 객체들이 감지가 되었는데 이는 학습을 하면서 동시에 전배경 분리를 한 결과인 것이다.
학습이 되면서 사람의 잔상 같은게 남게 되었는데 저 부분은 학습이 진행되면 될수록
연해진다(?),
프레임이 많이 진행된 결과이다.
20프레임 이후이므로 이미 형성된 배경모델을 기반으로 전 배경을 분리한다.
완전한 배경을 가지고 학습을 한것이 아니기 때문에 (학습을 하는 도중에 객체가 움직임)
후추소금 노이즈 (Salt&Pepper noise) 비슷하게 발생한다. 저런 잡음은
Median Filter 로 제거하는 것이 효과적일 것이다.
똑같은 46프레임에서 이번에는 Median Filter 가 적용된 전경이다.
상당히 깔끔해진 것을 알 수 있다.
하지만 무었보다 중요한 점은 배경 학습이 깔끔하게 이루어져야 한다는 것이다.
'CV' 카테고리의 다른 글
졸작, 연속된 이미지 읽는 객체 만들기 opencv (0) | 2011.11.23 |
---|---|
object tracking, box kernel (7) | 2011.09.08 |
OpenCV GMM Gaussian Mixture Model 전배경 분리 (4) | 2011.08.29 |
OpenCV , find connected component (6) | 2011.08.22 |
opencv , image processing , 2 pass labeling (9) | 2011.08.10 |
albiol 모션 분석 특징 추출 (0) | 2011.07.05 |
댓글을 달아 주세요
안녕하세요, 혹시 GMM에 관련된 예제 소스를 얻을 수 있을까요??
2011.11.14 22:26 [ ADDR : EDIT/ DEL : REPLY ]위에 update 함수 만든거 있죠, 저런식으로 사용하세요, 가우시안 학습 모델로 생성한뒤에 해당 모델을 업데이트 시켜주면 되요
2011.11.14 23:29 신고 [ ADDR : EDIT/ DEL : REPLY ]성대아싸님 안녕하세요.
2011.12.14 18:04 [ ADDR : EDIT/ DEL : REPLY ]눈팅만 하고 가지만 많이 와서 도움을 받고 있습니다.
다름이 아니라... 위의 업데이트 코드로 영상을 업데이트시키면,
프레임이 지나면 지날수록 영상이 뚝뚝끊어지는 현상이 발생합니다.
혹시, 다른 처리를 해줘야하는 부분이 있는지요. cvReleaseBGStatModel 을 안해서 그런걸까요?
제가 코딩을 잘못해서 소스코드를 찾다가 들어왔습니다
2013.05.24 10:27 [ ADDR : EDIT/ DEL : REPLY ]혹시 위 프로그램처럼 돌아가는 소스코드를 얻을수 있을까요?