2010-02-02 8 views
34

나는 고정되어 있고 실내 지역을 가리키는 카메라를 가지고있다. 사람들은 약 5m 이내에 카메라를 지나갈 것입니다. OpenCV을 사용하여 과거를 걷는 사람을 감지하고 싶습니다. 이상적인 반환은 경계 사각형이있는 감지 된 개체의 배열입니다.OpenCV를 사용하는 사람들을 어떻게 탐지하고 추적합니까?

나는 내장 된 샘플의 몇 가지 살펴 보았다 :

  • 파이썬 샘플 중에 정말
  • C 방울 추적 샘플 유망 보이지만, 동의하지 않습니다 적용되지 않는다 라이브 비디오는 테스트를 어렵게 만듭니다. 또한 샘플 중 가장 복잡하기 때문에 관련 지식을 추출하고이를 Python API 문제로 변환합니다.
  • 'motempl'샘플도 이후 비디오 프레임에서 실루엣을 계산한다는 점에서 유망 해 보입니다. 아마 그 다음에 그것을 사용하여 강하게 연결된 구성 요소를 찾고 개별 얼룩 및 경계 상자를 추출 할 수 있습니다. 그러나 후속 프레임에서 발견되는 얼룩을 동일한 얼룩으로 식별하는 방법을 찾기 위해 노력하고 있습니다. 바람직 파이썬을 -

은 이러한 작업을 수행하기위한 지침 또는 샘플을 제공 할 수있는 사람인가?

+2

한 대담한 노력. 무슨 일이 일어나는지보고 싶다. –

+0

@Trent 당신이 진지한 지 아닌지 확실하지 않습니다. OpenCV에는 그런 방법이 없습니다. –

+0

@ 닉 존슨, 유감스럽게도 유감스럽게 생각합니다. 실제 환경에서 사람들을 탐지하고 추적 할 수 있다는 것은 결코 쉬운 일이 아닙니다. 조명 조건, 장애물, 그림자 제거 등을 포함한 극복에 많은 장애물이 있습니다. – Trent

답변

27

OpenCV의 최신 SVN 버전에는 HOG 기반 보행자 감지 기능이 포함되어 있습니다. 그것은 사전 훈련 된 탐지기와 파이썬 래퍼도 제공됩니다.

from cv import * 

storage = CreateMemStorage(0) 
img = LoadImage(file) # or read from camera 

found = list(HOGDetectMultiScale(img, storage, win_stride=(8,8), 
       padding=(32,32), scale=1.05, group_threshold=2)) 

그래서 그 대신 추적, 당신은 단지 각 프레임에 검출기를 실행하고 직접 출력을 사용할 수 있습니다 : 다음과 같이 기본적인 사용법이다.

구현을 위해서는 src/cvaux/cvhog.cpp을, 파이썬 예제 (둘 다 OpenCV 소스)를 보려면 samples/python/peopledetect.py을 참조하십시오.

1

이것은 컴퓨터 비전 과정의 일환으로 수행 한 프로젝트와 비슷하며 올바르게 진행하는 것이 어려운 문제라고 지금 말할 수 있습니다.

전경/배경 세분화를 사용하고 모든 얼룩을 찾고 그 둘을 사람으로 결정할 수 있습니다. 문제는 사람들이 함께 가고, 서로를 지나치는 경향이 있기 때문에 아주 잘 작동하지 않는다는 것입니다. 그래서 얼룩은 두 사람으로 아주 잘 구성 될 수 있습니다. 그러면 얼룩이 흩어져서 함께 걸 으면서 병합하는 것을 볼 수 있습니다.

한 블로 브에서 여러 사람을 구별하는 방법이 필요합니다. 이것은 하나의 SO 게시물에 답변 할 수있는 사람이있을 것으로 기대하는 문제는 아닙니다.

제 조언은 사용 가능한 연구에 뛰어 들고 거기에서 무엇이든 찾을 수 있는지 확인하는 것입니다. Autoliv는 자동차에서 IR 카메라를 사용하여 보행자를 탐지하는 제품을 보유하고 있으며 상점에 출입하는 고객의 수를 계산하는 다른 제품을 보았습니다.

+0

나는 하나의 '얼룩 (blob)'에서 여러 사람들을 식별하는 것에 대해 실제로 괴롭 히지 않았습니다. 활동의 얼룩을 찾아 내고 경계 상자와 중심을 찾는 것에 더 관심이 있습니다. 누군가가 OpenCV에서 사용할 수있는 일련의 알고리즘을 제안 할 수 있기를 바랬습니다. :) –

4

이것은 분명히 중요한 작업은 아닙니다. 영감을 얻기 위해 과학 출판물을 조사해야합니다 (Google Scholar 여기에 친구가 있습니다). 다음은 사람의 탐지 및 추적에 대한 문서입니다. Human tracking by fast mean shift mode seeking

+0

내가 주석으로 말했듯이, 나는 그들이 인간이라는 것을 결정할 필요가 없습니다. 움직이는 얼룩을 격리하고 추적해야합니다. –

5

닉,

은 당신이 찾고있는 무슨 사람들이 감지하지만, 움직임 감지되지 않습니다. 당신이 해결하려고하는 것에 대해 더 많이 말한다면, 우리는 더 잘 대답 할 수 있습니다. 어쨌든, 당신이 결과로 무엇을 할 것인지에 따라 움직임 감지를하는 많은 방법이 있습니다. 가장 간단한 것은 differencing과 thresholding이고 복잡한 것은 적절한 백그라운드 모델링 -> foreground subtraction -> morphological ops -> connected component analysis이고, 필요한 경우 blob 분석이 뒤 따른다. opencv 코드를 다운로드하고 샘플 디렉토리를 살펴보십시오. 당신은 당신이 찾고있는 것을 볼 수 있습니다. OCV에 대한 Oreilly 서적도 있습니다. 이 도움이

희망, 낸드

관련 문제