2016-10-23 4 views
0

이 질문은 나를 오랫동안 괴롭힌다. 기본 차량 계산 프로그램은 다음을 포함합니다 : 1. 차량을 인식합니다. 2. 기능별로 차량 추적.opencv를 사용하여 차량 궤도 추적

그러나 차량 # 1이 시간 t에서 발견되면 t + 1에서 프로그램은 차량을 추적하기 시작하지만 # 1도 프로세스를 인식하여 찾을 수 있고 t + 2 프로그램은 두 개의 차량이됩니다 추적하지만 실제로는 프레임에서 하나의 # 1입니다. 인식 된 차량이 중복 된 것을 어떻게 피할 수 있습니까?

미리 감사드립니다.

답변

1

제대로 이해했다면 이미 추적하고있는 물체 (탐지기/추적기 통신 부족)를 감지하는 것이 좋습니다. 이 경우 다음 중 하나를 수행 할 수 있습니다

  • 사전 체크 - 검색하는 동안 당신은 이미 물체를 추적하거나
  • 후 확인 지역 제외 - 근처 추적 것들 탐지 된 개체를, 폐기를 (어떤 이유로 든 "선택적"감지가 가능하지 않은 경우)

몇 가지 가능한 구현이 있습니다.

  1. 마스크. 추적 된 객체 근처의 영역이 "표시"되어있는 바이너리 마스크를 만듭니다 (예 : 다른 곳의 추적 된 객체 및 0에 가까운 객체). 특정 위치에서 탐지되기 전에 어떤 항목이 추적되고 있는지 신속하게 확인하고 사후 검사 접근 방식을 고수하면 탐지가 중단되거나 (사전 검사 접근) 탐지 된 객체를 제거 할 수 있습니다.

  2. 브 루트 - 힘. 특정 위치와 추적 된 위치 간의 거리를 계산하십시오 (겹쳐진 영역과 다른 특성을 확인할 수도 있습니다). 그런 다음 이미 추적 된 개체와 너무 비슷하거나 유사한 탐지를 무시할 수 있습니다.

어떤 방법이 더 좋은지 생각해 봅니다. O 필요

  1. 마스크 (N ) 동작은 모든 관심 위치를 확인하기 위해 마스크와 O (M ) 작업에 모든 객체 추적을 추가한다. 즉, = 인 N는 M 추적 물체의 수와 인 O (최대 (N, M)), O (N + M)의 예를 검사 위치 (검출 된 오브젝트의 개수). 어떤 번호 (N 또는 M)는 응용 프로그램에 따라 더 커집니다. 바이너리 마스크를 보관하기 위해서는 추가 메모리가 필요합니다 (대개 중요하지 않지만 다시 응용 프로그램에 따라 다릅니다).

  2. 무차별은 O (N* M) 작업 (M 위치 각각 N 후보에 대해 확인)을 필요로한다. 추가 메모리가 필요 없으며 검사 중에 더 복잡한 논리를 수행 할 수 있습니다. 예를 들어 객체가 갑자기 크기/색상/프레임이 한 프레임 내에서 변경되는 경우 - 원래의 객체를 완전히 완전히 다른 객체로 생각할 수 있으므로 추적하지 않고 대신 다른 작업을 수행해야합니다.

요약하면 : 당신이 객체가 많이있을 때

  1. 마스크가 점근 좋습니다. 감지하는 동안 슬라이딩 창 검색과 같은 작업을 수행하고 일부 영역을 제외 할 수있는 경우 거의 필수적입니다 (이 경우에는 M). 사전 점검과 함께 사용하십시오.
  2. 브 루트 포스은 개체가 거의없고 다른 속성과 관련된 검사를 수행해야 할 때 적합합니다. 사후 점검과 함께 사용하는 것이 가장 좋습니다.

무언가를 필요로하는 경우 - 더 창의적이어야하며 어떻게 든 마스크에서 객체 속성을 인코딩해야합니다 (일정한 조회 시간을 얻기 위해). 또는 더 복잡한 데이터 구조를 사용하여 (" 브 루트 포스 "검색).

관련 문제