2011-02-09 6 views
4

오브젝트 추적을 위해 opencv의 camshift 알고리즘을 사용하고 있습니다. 입력은 웹캠에서 가져오고 객체는 연속 프레임 사이에서 추적됩니다. 어떻게 추적을 강화할 수 있습니까? 물체를 빠른 속도로 움직이면 추적이 실패합니다. 또한 객체가 프레임에 없을 때 잘못된 탐지가 있습니다. 어떻게 향상시킬 수 있습니까?open cv에서 camshift 알고리즘 개선

+0

캠 샤프트 알고리즘만으로는이 문제를 해결할 수 없을 것이라고 생각합니다. – karlphillip

+1

추적 알고리즘을 선택하는 것은 어떤 종류의 개체를 추적하는지에 따라 다릅니다. 또한 개체를 추적하거나 지역화하는 중입니까? – count0

답변

2

개체 추적은 컴퓨터 비전에서 활발한 연구 영역입니다. 이를 수행 할 수있는 수많은 알고리즘이 있으며 그 중 어느 것도 시간의 100 %를 처리하지 못합니다.

실시간으로 추적해야하는 경우 간단하고 빠른 것이 필요합니다. 움직이는 물체를 배경에서 분할하는 방법이 있다고 가정합니다. 그런 다음 색상 막대 그래프와 같은 객체 표현을 계산하고 다음 프레임에서 찾은 객체와 비교할 수 있습니다. 개체가 프레임 사이에서 너무 멀리 이동하지 않았는지 확인해야합니다. 고급 모션 추적을 시도하려면 Kalman 필터를 찾아야합니다.

개체가 프레임에 없다는 것을 결정하는 것도 큰 문제입니다. 첫째, 어떤 종류의 물건을 추적하려고합니까? 사람들? 자동차? 개들? 소음이나 다른 종류의 대상과는 달리 프레임의 움직이는 물체가 관심 대상인지 여부를 알려주는 물체 분류기를 만들 수 있습니다. 분류 기준은 크기에 대한 제약과 같이 매우 단순한 것이거나 매우 복잡 할 수 있습니다. 후자의 경우 계산할 수있는 기능, 지원 벡터 머신과 같은 분류 알고리즘에 대해 알아야하며, 훈련을 위해 트레이닝 이미지를 수집해야합니다.

요약하면 신뢰할 수있는 추적기는 쉽게 구축 할 수 없습니다.

1

처음 두 프레임에서 개체를 찾았다 고 가정합니다. 이 정보를 통해 세 번째 프레임에서 개체를 예상 할 수있는 위치를 추정 할 수 있습니다. 제네릭 찾기 알고리즘을 사용하는 대신 외삽 법이 예측하는 근사값을 확인하도록 제한함으로써보다 느리고 정교한 알고리즘을 사용할 수 있습니다. 정확하게 예상되는 곳이 아닐 수도 있지만 (아마도 속도 벡터가 변하고있을 것입니다), 확인 된 영역을 확실히 줄일 수 있어야합니다.

이렇게하면 프레임의 다른 부분이 개체로 잘못 식별되는 횟수를 줄일 수 있습니다 (프레임의 더 작은 부분을보고 있고 더 나은 기능 감지기를 사용하고 있기 때문에).

발견 한 내용을 기반으로 외삽 법을 업데이트하고 다음 프레임을 반복합니다.

개체가 프레임 밖으로 나가면 처음 두 프레임에서와 마찬가지로 일반 기능 감지기로 돌아가서 개체가보기로 돌아 왔을 때 다시 "잠금"을 시도하십시오.

또한 가능한 한 많은 빛을 실제 장면에 던집니다. 장면이 어두우면 웹캠이 더 긴 노출 시간을 사용하여 움직이는 물체에서 더 많은 동작 흐려짐을 유발합니다. 모션 블러는 기능 감지기에서 매우 어려울 수 있습니다 (방향 및 속도에 대한 정보를 제공 할 수 있음).

0

camShift에서 검색 창의 경계를 확장하면 알고리즘이 약간의 불규칙성을 유발할 수 있지만 빠르게 움직이는 객체에 적응할 수있게되었습니다. 창 테두리를 10 % 더 크게 만들고 어떻게되는지보십시오.