모션 기록 이미지를 별도의 독립 모션(예: 왼손, 오른손)에 해당하는 몇 부분으로 분할합니다. 함수는 반복 개체 검색 알고리즘을 구현합니다. 개체의 입력 백 프로젝션과 초기 위치를 사용합니다. 후면 투영 이미지의 창에 있는 매스 중심이 계산되고 검색 창 중심이 매스 중심으로 이동합니다. 프로시저는 지정된 횟수의 반복 기준이 수행될 때까지 또는 창 중심이 기준보다 적게 이동할 때까지 반복됩니다. 알고리즘은 CamShift() 내부에서 사용되며 CamShift()와 달리 검색 창 크기 또는 방향은 검색 중에 변경되지 않습니다. calcBackProject()의 출력을 이 함수에 전달하기만 하면 됩니다. 그러나 후면 투영을 미리 필터링하고 노이즈를 제거하면 더 나은 결과를 얻을 수 있습니다. 예를 들어 findContours()를 사용 하 여 연결 된 구성 요소를 검색 하 고 작은 영역 (등고선()))으로 윤곽을 버리고 나머지 윤곽선 그리기() drawContours() 를 사용 하 여 렌더링 하 여이 작업을 수행할 수 있습니다. 이 예제는 선이 메모리에 유지되지 않고 점의 첫 번째 위치에서 점의 마지막 기록된 위치까지 그려지는 방식이 약간 다릅니다. Lucas-Kanade 메서드는 희소 기능 집합에 대한 광학 흐름을 계산합니다(이 예에서는 Shi-Tomasi 알고리즘을 사용하여 감지된 모서리). OpenCV는 조밀한 광학 흐름을 찾는 또 다른 알고리즘을 제공합니다. 프레임의 모든 점에 대한 광학 흐름을 계산합니다.

2003년 거너 파네백의 «다각적 확장에 따른 2프레임 모션 추정»에 설명된 거너 파네백의 알고리즘을 기반으로 합니다. 픽셀이 성공적으로 상태[0] == 1및 features_next[0]를 찾은 경우 다음 프레임에서 픽셀 좌표가 표시됩니다. 값 정보는 이 예제에서 찾을 수 있습니다: OpenCV/샘플/cpp/lkdemo.cpp [A| 이 값을 늘리면 감지되는 피처 수가 최대 500개까지 증가합니다: (이전 인터페이스에서) CAMSHIFT가 수렴하는 데 걸린 반복 횟수는 선택한 영역에서 평균 모션 방향을 계산하고 0 사이의 각도를 반환합니다. 360도. 평균 방향은 최근 움직임이 더 큰 가중치를 가지며 과거에 발생한 모션이 mhi에 기록된 바와 같이 더 작은 가중치를 가지는 가중치 방향 히스토그램에서 계산됩니다. 석회화흐름피르LK()에 전달할 수 있는 이미지 피라미드를 생성합니다. 모션을 LED 색상으로 변환하는 프로젝트에서 작업하는 동안 프로젝트에 필요한 해상도를 얻을 수 있도록 다양한 매개 변수 조합의 효과를 비교하는 간단한 스크립트를 만들었습니다. 바라건대 이러한 결과를 공유하면 동등하게 당황한 다른 사람들에게 도움이 될 것입니다. 배경 모델을 업데이트하고 달리 명시되지 않는 한 모든 비디오가 이러한 매개 변수로 실행된 전경 마스크를 반환합니다. 가장 직관적인 매개 변수는 각 프레임에서 감지되는 모서리 수를 제어하는 maxCorners입니다. 낮은 maxCorners 매개 변수는 식별되지 않은 피쳐로 연결됩니다: 기본 생성자는 모든 매개 변수를 기본값으로 설정합니다. .

이 함수는 피라미드에서 Lucas-Kanade 광학 흐름의 희소한 반복 버전을 구현합니다.