1

움직이는 물체를 움직이는 카메라에서 분리하여 이후에 추가 처리 알고리즘을 적용 할 수 있도록 노력하고 있습니다. 그러나 조금 갇혀있는 것 같습니다.옵티컬 플로를 사용하여 움직이는 물체 확인하기

지금까지 OpenCV로 작업 중이며 PyrLokOpticalFlow에서 스파 스 광학 흐름을 얻고 있습니다. 내가 작업하고 있었던 일반적인 아이디어는 이미지의 배경 지점과 다르게 움직이는 특징을 찾은 후 추적/처리를 위해 움직이는 물체로 간주되는 이러한 다르게 움직이는 특징의 클러스터를 찾는 것이 었습니다. 내 문제는 이와 같은 전략을 사용하는 몇 권의 학술 논문을 찾았지만, 지금까지는 그것을 달성하기위한 간단한 방법을 찾을 수 없었다는 것입니다.

이 옵티컬 플로우 데이터를 사용하여 움직이는 카메라에서 움직이는 물체를 감지하는 좋은 방법은 무엇입니까? 이것이 최선의 접근법일까요? 아니면 간과 할 수있는 간단한 접근법이 있습니까?

답변

2

나는 OpenCV에서 내가 원하는 것을 어느 정도 수행하는 방법을 찾을 수 있었다.

GoodFeaturesToTrackDetector와 PyrLKOpticalFlow (prevPts와 nextPts를 제공)를 사용하여 연속 된 두 이미지 사이의 희소 한 광 흐름 점을 찾은 후 findHomography와 RANSAC를 사용하여 독립적으로 움직이는 물체로 인한 특이 치를 제외하고 카메라 이동으로 인한 동작을 추정합니다. 그런 다음 perspectiveTransform을 사용하여 카메라 움직임을 설명하는 prevPts를 왜곡합니다 (warpedPts 제공). 그런 다음 움직이는 물체를 찾기 위해 뒤틀린 점을 nextPts와 비교할 수 있습니다.

결과적으로 카메라가 움직여도 warpedPts와 nextPts의 점이 오브젝트가 고정되어 있으면 점이 크게 변하지 않고 추적 점이 움직이는 물체에있을 때 큰 변화가 있습니다. 거기에서 움직임의 근접성과 유사성에 근거하여 움직이는 점을 그룹화하는 것입니다.

0

우선 이론에서 기억 하듯이 광학 유동은 움직이는 카메라에서 실제로 가장 잘 작동합니다 (움직이는 물체가 아닌 & 움직이는 물체와 함께). 인접 픽셀 내에서 동일한 흐름을 가정하기 때문에 의미가 있습니다. 너가 lucas kanade 방법에 관하여 읽는 중대한 출발점은 계속하고있는 무슨을 이해할 것이다.

두 번째, 문제는 일부 기능을 추적하는 것이 아니라 장면에서 움직이는 일부 개체를 감지하는 것입니다. 이를 위해 희소 세트 대신 dense optical flow을 사용해야 할 수도 있습니다. 장면이 여전히 남아 있었다면 배경 빼기도 큰 가능성이 있습니다.

+0

내 문제는이 응용 프로그램에서는 가능한 모든 실시간을 가능한 한 실시간으로 유지해야한다는 것입니다 (우리가 사용하는 카메라의 경우 15FPS). 조밀 한 옵티컬 플로우를 사용하는 것이 좋을지라도, 각 프레임에 대해 실행해야하는 다른 프로세싱과 프로세싱 사이에는 GPU에서 대부분의 처리를 수행하는 경우에도 시간이 충분하지 않습니다. –

+0

그래서 LK 방법, 격자 방향 픽셀 선택으로 이동하고 움직이는 부분을 찾아야합니다. 동적 배경 빼기는 어떨까요? 비록 opencv에서 구현되었는지 모르겠다. – baci

관련 문제