1

완전히 일정한 배경이 아닌 물체의 움직임과 회전을 확인하려고합니다. 다음은 예입니다 : 내가 처리하고있는 객체는 반드시이 충분 가장자리를 제공하지 않기 때문에 작동하지 않습니다 tutorials에서와 같이 변환을 찾는 키포인트를 사용하여키포인트를 사용하지 않고 움직이는 물체를 찾으십시오.

image1 image2

. 변경된 배경으로 인해 차이 이미지를 작성하고 분할을 수행하는 경우가 종종 실패합니다. 이 예제에서는 그렇게 나쁘지는 않지만 반사 또는 약간의 변형이있을 수 있습니다.

difference image

내가 다른 하나 개의 이미지에서 개체 (이 예에서 파란색 일을) 매핑 (자유의 사 학위 아핀) 변환 행렬을 찾는 방법에 어떤 아이디어?

+0

아마도 옵티컬 플로 메서드를 사용해보아야합니다. 그러면 변환을 계산할 필요가 없습니다. Lucas Kanade 메서드는 아마 그런 부드러운 영역을 처리 할 수 ​​없기 때문에 Horn-Schunk와 같은 전역 메소드를 사용해야합니다. SIFT-Flow와 같은보다 정교한 기법을 사용할 수도 있습니다. 이 솔루션에 대해 어떻게 생각하십니까? – GilLevi

+0

제안 해 주셔서 감사합니다. 나는 cv.CalcOpticalFlowHS를 시도했지만 실제로 나를 위해 일한 매개 변수를 찾을 수 없었다. SIFT-Flow가 재미있어합니다. OpenCV와 함께 사용할 구현을 알고 있습니까? –

+0

이 구현에 대해서만 알고 있습니다 : http://people.csail.mit.edu/celiu/ECCV2008/ – GilLevi

답변

0

이미지 뺄셈 결과에 이진 임계 값을 사용하십시오 (여기에 설명 된대로 - Foreground Extraction) - 작은 변화 (번개 변경 결과 임)는 삭제해야합니다. 그 전에는 일부 필터를 사용하여 가장자리를 흐리게 할 수도 있지만 중간 값 필터는 좋은 옵션 일 수 있습니다 (그러나 다른 필터도 시도해보십시오). -이 기법을 입력 이미지와 이미지 뺄셈 결과 모두에 사용해보십시오.

// 편집 :
당신은 SURF 사용하려고 할 수 있습니다 변형 결정 - http://robots.stanford.edu/cs223b05/notes/CS%20223-B%20T1%20stavens_opencv_optical_flow.pdf 또는 훨씬 간단한 방법 - 당신이 회전 광학 플로우 기술을 사용하려고 계산할 필요가없는 경우 http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html
을 :
를 1. 첫 번째와 두 번째 이미지에서 마커 윤곽선의 기하학적 중심을 계산합니다 (모든 점의 위치를 ​​추가하고 점의 수로 결과를 나눕니다) (contour1 및 contour2 이름). 또는 채워진 윤곽의 중심을 계산할 수도 있습니다. 이는 사용자가 결정합니다.
2. 변환은 다음과 같습니다 movementVector = centerOfContour2 - centerOfContour1

결과가 충분히 정확하지 않을 경우에는 이미지에 가장 큰 윤곽을 찾을 수 있도록 당신이 어떤 소음이 없습니다 (빈 이미지를이 윤곽을 그리는 시도 유물 등). 새 이미지에 대해 모든 작업을 수행하십시오.

+0

그래, 차이 이미지를 계산하기 전에 흐리게하는 것이 결과가 완벽하지는 않지만 어느 정도 도움이됩니다. 그러나 움직이는 물체가 아주 좋은 윤곽을 가질 것이라고 말하자. (여기서 겹치는 부분이없는 나의 예에서는 색상이 동일하기 때문에). 그러면 변환을 어떻게 결정할 수 있습니까? –

+0

수정 된 답변보기 – cyriel

+0

물론 SURF (SIFT, BRIEF, ORB 등)를 사용하면 쉽지만 예제와 같이 다루는 많은 객체에서 작동하지 않습니다. 그리고 움직임 벡터만으로는 충분하지 않습니다. 또한 회전이 필요하지만 차이 이미지의 분할 된 윤곽은 기본 관성 모멘트를 사용하기에 충분하지 않습니다. 세그먼트 화 된 윤곽선을 새 이미지에 그려도 세그먼트 화가 처음에는 좋지 않은 경우 도움이되지 않습니다. 이것을 예시하기 위해 나는 나의 예에서 객체들을 겹쳐서 선택했다. ;) –

관련 문제