[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


반응형
Posted by codens