[OpenCV] 동작 감지, 개체 추적, 개념 OpenCV 함수
OpenCV - Motion Analysis and Object Tracking
http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html
// 추적
Mean-Shift :
- 관심영역(ROI, Region of Interest)에서 가장 밀도가 높은 곳(무게중심)으로 중심이동을 반복
- 히스토그램 방법과 혼용
- 추적할 대상 영역의 히스토그램을 저장
- histogram backprojection : 상의 픽셀값들을 확률값으로 변경
- 확률값 분포에 mean shift를 적용 물체 추적
- 단점 : 최적의 ROI지정이 힘들다, 속도 느림, 비슷한 색상에서 에러
- 크기가 변하면 에러
CamShift ( Continuously Adaptive Mean Shift Algorithm ) :
- Mean-Shift의 단점 보강, ROI를 자동 조절
- 검출된 객체의 Hue 값의 분포를 이용하여 추적
- 장점 : 속도빠름, 추적 객체크기(ROI) 자동 조절
- 단점 : 조도변화, 잡음에 영향을 많이 받음
- 객체가 여러색이면 Mean-Shift보다 성능 떨어짐
//
Kalman Filter(칼만 필터)
init, predict, correct
- 선형관계 예측
- 물체의 위치, 속도, 가속도 등을 측정
- 1. 예측(predict) : 이전 값을 토대로 현재값을 추정(재귀적)
- 2. 보정(correct, update) : 예측 상태와 실제 상태를 토대로 다시 계산
- 선형 칼만필터(LKF,Linear Kalman Filter) :
실제환경은 비선형, 잡음도 비 가우시안 -> 잘 안맞음
- 확장 칼만필터(EKF, Extended Kalman Filter)
- 선형화하는 기준점을 계속 갱신
- 반복적 확장칼만필터
- 다양한 움직임의 개체를 추적할 경우 : 파티클 필터(particle filter) (Condensation 알고리즘)
http://blog.naver.com/qlfydehd/110095772140
//배경 제거(추출)
BackgroundSubtractorMOG2
- 가우시안 혼합 기반의 배경분리 알고리즘
getBackgroundImage()
BackgroundSubtractor를 상속받음
BackgroundSubtractorMOG 에 비해 인자가 추가됨, 대체 사용
BackgroundSubtractorGMG
- 일련의 이미지에서 일련의 마스크 리턴
- OpenCV 샘플 : bgfg_gmg
//옵티컬 플로우(Optical Flow)
- 옵티컬 플로우 알고리즘들 성능 평가 사이트
http://vision.middlebury.edu/flow/eval/
- Pyramid LK가 가장 뛰어남
* 옵티컬 플로우(OF, Optical Flow)
- 움직임 추적 방법, 픽셀의 속도 계산
- 밀집 옵티컬 플로우(DOF, dense optical flow)
- 영상에 내부의 모든 픽셀의 속도를 계산 -> 느림
- 혼-셩크(Horn–Schunck ) 방법
- Gunnar Farneback’s algorithm : calcOpticalFlowFarneback
- 희소 옵티컬 플로우
- 코너와 같이 특이점을 지정한후 그 점들을 계산 -> 빠름
- 단점 : 큰 움직임 발생시 감지 힘듬
- 루카스-카네데(LK, Lucas–Kanade ) 방법
- 피라미드LK
- 원본으로 영상 피라미드를 구성, 상위계층에서 하위계층으로 추적
- 큰 움직임도 감지
- calcOpticalFlowPyrLK, buildOpticalFlowPyramid
estimateRigidTransform : 두점간의 optimal affine 계산
updateMotionHistory : 윤곽을 통한 동작내용(motion history image)을 갱신
calcMotionGradient : 동작의 gradient orientation 을 계산
calcGlobalOrientation : 일정 구역의 global motion orientation을 계산
segmentMotion : 동작을 나눔
calcOpticalFlowSF : 옵티컬 플로우 “SimpleFlow”알고리즘
- Non-iterative, Sublinear
createOptFlow_DualTVL1 : “Dual TV L1”알고리즘
DenseOpticalFlow : 밀집 옵티컬 플로우
- calc, collectGarbage
//
http://blog.naver.com/msnayana/80109766471
http://blog.naver.com/msnayana/80107534127
'Code' 카테고리의 다른 글
[OpenCV]KalmanFilter, 마우스 움직임 예측하기 칼만필터 예제 (0) | 2014.01.07 |
---|---|
[OpenCV]Kalman Filter(칼만 필터) (0) | 2014.01.06 |
[OpenCV] 보행자 검출 (pedestrian/people detection) 기술 (0) | 2013.12.21 |
[OpenCV] 객체인식( Feature Detection, 검출, 매칭 ) 기술 (0) | 2013.12.21 |
[OpenCV] 영상 추적 기본 개념 이론 (0) | 2013.12.21 |