2022.06.29 금일은 배경차분 MOG 배경모델에 관한 강의였다.
MOG란?
- Mixture of Gaussian , GMM ( Gaussian Mixture Model )
- 각 픽셀에 대해 MOG 확률 모델을 설정하여 배경과 전경을 구분
- 예를들어 ' 배경영상에서 A라는 부분은 원래 픽셀값이 100이었어 ' 라고 정해놓고 전경과 비교하는 것이 아닌
' 배경 영상에서 A라는 부분은 100근방의 가우시안 모델을 따르고있어 ' 라고 정의하는 모델
- Mixutre ( 혼합 ) 를 보면 알 수 있듯 하나의 가우시안 모델을 사용하는 것이 아닌 2개 이상의 가우시안 모델을 사용
- 데이터 사이언스쪽 전반적으로 사용되는 데이터 분석기법이다.
다양한 배경 모델 구성 방법
- Static scene : 배경영상 등록
- Single Gaussian model : 픽셀마다 가우시안 모델을 정의
- Gaussian mixture model : 가우시안 2개 이상의 모델을 등록
예를들어 나무를 배경으로 등록시켜놨을때 바람에 흔들리게되면 나뭇잎과 하늘 2개의 모델을 등록한다.
- Adaptive Gaussian mixture model : 가우시안 모델을 몇개 사용할지 프레임을 보고 알아서 결정해주는 방법
OpenCV에서 제공하는 배경 추정 알고리즘
- 위 2개의 클래스 ( KNN, MOG2 ) 를 이용하게되면 저번시간에 배웠던 이동평균 알고리즘 ( 지속적 배경 업데이트 )과
비슷하지만 조금 더 성능이 좋은 결과를 얻을 수 있다.
BackgroundSubtractorMOG2 클래스 생성 함수
cv2.createBackgroundSubtractorMOG2 ( , history=None, varThreshold = None, detectShadows = None ) -> dst
history : 히스토리 길이. 기본값은 500. ( 과거 몇프레임 이용할지 )
varThreshold : 픽셀과 모델 사이의 마할라노비스 거리 ( Mahalanobis distance ) 제곱에 대한 임계값.
해당 픽셀이 배경 모델에 의해 잘 표현되는 지를 판단.
기본값은 16. ( 새로들어온픽셀값이 배경영상의 픽셀값과 부합하는지 )
detecShadows : 그림자 검출 여부. 기본값은 True
전면 객체 마스크 생성 함수
cv2.BackgroundSubtractor.apply ( image, fgmask = None, learningRate = None ) -> fgmask
image : (입력 ) 다음 비디오 프레임
fgmask : ( 출력 ) 전경 마스크 영상. 8비트 이진 영상
learningRate : 배경 모델 학습 속도 지정 ( 0~1사이의 실수 ). 기본값은 -1
배경 영상 반환 함수
cv2.BackgroundSubtractor.getBackgroundImage( , backgroundImage = None ) -> backgroundImage
backgoundImage : (출력) 학습된 배경 영상
지금 학습되고있는 상태의 배경영상확인
fgmask 가 bs.apply 함수로 변환되어 0 or 128 or 255 3개의 픽셀값으로 구성되어있는 영상으로 return이된다.
( 128 - 그림자 )
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 객체추척과 모션벡터 _ 캠시프트 알고리즘 (0) | 2022.06.30 |
---|---|
[Open CV] 객체추척과 모션벡터 _ 평균이동 알고리즘 (0) | 2022.06.29 |
[Open CV] 객체추척과 모션벡터 _ 배경차분 _ 이동평균배경 (0) | 2022.06.27 |
[Open CV] 객체추척과 모션벡터 _ 배경차분 _ 정적배경차분 (0) | 2022.06.26 |
[Open CV] 특징점검출과매칭 _ 실전코딩 ( AR비디오 플레이어 ) (0) | 2022.06.25 |