2014-09-13 4 views
0

내가하고있는 일에 대해 조금 소개 ... 학문적 목적을 위해 opencv를 사용하여 장면의 정적 객체를 감지하는 응용 프로그램을 C++로 만듭니다. 이 응용 프로그램은 백그라운드 뺄셈과 추적의 결합 된 접근 방식을 기반으로하며 객체 포기와 관련된 이벤트 감지가 정상적으로 작동합니다. 하지만 지금은 해결할 수없는 문제가 있습니다. 백그라운드에서 개체를 입력하기 전후에 개체 제거 이벤트를 탐지하는 유한 상태 시스템을 구현해야합니다. 이렇게하려면 상사가 물건의 가장자리를 사용하도록 명령했습니다.opencv (matchShapes가 아님)의 두 가장자리 이미지를 비교하는 방법

이제 문제가 발생했습니다. 도로를 따라 불법 주차 된 차량을 감지 한 후, 차량이 무엇을하는지 이해하기 위해 다양한 이미지의 가장자리 (현재의 배경, 현재 프레임에서 캡처 한 배경)를 비교해야합니다 (움직임을 감지 함). , 주차 된 상태로 유지되거나 배경에있는 상태에서 움직임을 포착). 차량 (일반적으로 차량의 크기가 다름)이있는 장면의 영역에서이 비교를 실행하면 이진화 된 CV_8UC1 cv :: Mat을 얻음으로써 canny 알고리즘을 사용하여 가장자리를 당깁니다. 이 시점에서 나는 그들을 비교해야합니다. findContours로 윤곽선을 탐지하여 matchShapes와 비교하려고 시도했지만 올바른 방법으로 보이지는 않습니다. 첫 번째 이미지의 각 윤곽선을 두 번째 윤곽선과 비교하고, 일반적으로 두 개의 이미지를 campare에 비교합니다. 다른 수의 등고선 (예를 들어, 배경이 원래 배경과 현재 배경 인 경우, 배경에 차량이 들어감에 따라 현재 배경의 가장자리가 증가했기 때문).

또한 각 픽셀이 다른 두 개의 절대 차이에 해당하는 새 이미지를 만든 다음 차이 이미지 (wPx)의 흰색 픽셀 수를 계산했으며이 값을 비교 방법으로 사용했습니다 : 두 개의 임계 값 (thr1과 thr2)을 설정하고 wPxthr2 * 주변 이미지가 다른 경우 차량의 경계 rect (픽셀)의 픽셀 수를 계산했습니다. (백분율 임계 값을 설정 했으므로 임계 값을 차량 크기에 맞추기 위해 테두리 상자의 둘레로 그들을 몰핑합니다.) 그러나이 솔루션은 매우 강력하지 않습니다.

나에게 제안할만한 것이 있습니까? 대단히 고맙습니다. StackOverflow 사용자가 한 번 이상 도와 주셨습니다!

PS : THIS 제가

  • 제 차량의 정지없이 백그라운드 인 비교 한 화상의 일례이며, 거리의 에지를 포함

  • 두 번째는 원래 배경이며, 고정 차량이 감지 될 때 캡처 된 배경입니다.

  • 세 번째는 현재 배경입니다 (이 경우 원래 프레임과 동일하지만 변경됩니다).

  • 네 번째는 비디오의 현재 프레임입니다.

답변

2

A Novel SIFT-Like-Based Approach for FIR-VS Images Registration을 살펴볼 수 있습니다. Aguilera et al. 에지 지향 히스토그램 설명자 (EOH-SIFT)을 제안하십시오.
이 논문에서는 가시 스펙트럼과 적외선 영상을 서로에 대해 등록하고자합니다. 이미지의 특성이 다르기 때문에 두 이미지에서 가장자리/윤곽선을 먼저 추출하여 이미지와 유사합니다. EOH-SIFT descriptor taken from the above paper

  1. 는 각각에 대해 4 × 4 구역으로
  2. 를 이미지 패치 세분 :
    그래서, 당신은 (위의 논문에서 촬영) 다음 그림이 기술자를 사용하여 이미지 패치를 설명 할 수 있습니다 16 개 개의 하위 영역 (5 통) 형상의 방향의 히스토그램을 작성
  3. 가 크기 16x5 = 80 빈들 중 하나 디스크립터 벡터에 함께 넣어 히스토그램
  4. 는 특징 벡터를 정규화

그래서 (사례 4에서) 비교하려는 모든 이미지는 80 차원의 특성 벡터로 설명됩니다. 서로 유클리드 거리를 계산하고 평가하여 서로를 비교할 수 있습니다.

참고 : 여기서 크기 80x80 또는 100x100 (NxN) 픽셀의 패치가 제안됩니다. 크기를 이미지 크기로 조정해야 할 수도 있습니다.