영상추적 프로그램(DTracker)

개발한 것들 2013.11.29 14:37

최근 몇년간 개인적으로 가장 많은 시간을 들여서 연구했던 것이 영상추적 알고리즘입니다. OpenCV meanshift / camshift를 이용한 추적 프로그램 예제코드와 그동안 제가 개발했던 영상추적기(실행파일만)를 순서대로 올립니다.



1. OpenCV의 MeanShift / CamShift 추적기


처음 영상추적 개발을 시작하면서 저도 가장 기본적이라고 할 수 있는 meanshift부터 시작했습니다. 당시에 직접 meanshift를 구현하여 돌려보았지만 성능이 그다지 만족스럽지는 않았습니다.


블로그에 올릴 목적으로 최근 OpenCV에서 제공하는 meanshift, camshift를 이용한 영상 추적기를 새로 구현해 보았습니다. 아래의 프로그램을 이용하면 meanshift, camshift 추적기의 사용법 및 성능, 장단점에 대해 쉽게 테스트할 수 있습니다 (소스코드 포함).


tracker_opencv.zip



사용법: 위 화면에 보는 것처럼 camshift 알고리즘, meanshift 알고리즘을 선택할 수 있고 사용할 색상모델을 선택할 수 있게 되어 있습니다. 마우스로 추적할 박스영역을 그리면 되고 스페이스바를 누르면 일시멈춤이 됩니다. 실행도중 언제든지 추적대상을 바꿀 수 있습니다.


OpenCV에서 제공하는 샘플코드 등에는 단일채널(hue, gray 등) 히스토그램만을 이용한 예가 나와 있지만 실제로는 HSV나 RGB의 3D 채널을 모두 이용할 경우에 추적 성능이 훨씬 좋습니다. 그 구체적인 방법에 대해서는 첨부 파일에 있는 소스코드를 참조하기 바랍니다.


다음은 위 프로그램을 적용한 데모 동영상들입니다 (OpenCV에서 제공하는 기본적인 tracker 들로서 일반적인 성능은 좋지 않습니다. 어떤 면이 강하고 또 어떤 경우에 잘 안되는지 아래 동영상들을 보면서 확인하시기 바랍니다).


opencv camshift demo - hsv 3d color model


opencv meanshift demo - rgb 3d color model


opencv meanshift demo - rgb 3d color model


실제 테스트를 해 보면 알겠지만 camshift의 경우 크기, 회전 변화를 추적할 수 있으며 특히 사람 얼굴을 추적하는데에 매우 뛰어난 성능을 보입니다. 하지만 camshift는 물체가 단일색일 경우 그리고 배경과 구분되는 색일 경우의 성능은 매우 뛰어나지만 물체에 여러 색상이 섞여있거나 배경과 유사한 색일 경우에는 오히려 meanshift보다 성능이 떨어집니다


meanshift나 camshift 모두 색상 히스토그램을 이용한 추적 방식이기 때문에 이에 따른 장단점은 명확합니다. 히스토그램의 특성상 위치정보는 고려하지 않기 때문에 물체의 형태가 변해도 추적이 가능한 반면, 다른 한편으로는 색이 배치된 위치정보를 잃어버리기 때문에 물체의 색 구성이 배경과 유사한 경우에는 추적에 실패하기 쉽습니다.


결론적으로 meanshift/camshift 등은 단순한 환경(공장자동화 응용, 배경도 단색, 물체도 단색)에서는 최고의 tracker이지만 일반적인 환경에서는 거의 적용이 힘들다고 볼 수 있습니다.



2. DTracker Ver.1 (히스토그램 기반)


처음에 시도해 보았던 meanshift가 일반적인 환경에서는 성능이 너무 떨어졌기에 이를 개선하고자 당시 여러 시도를 해 보았었는데 그 때 개발한 영상추적기가 dtracker v1입니다. meanshift와 마찬가지로 색상 히스토그램을 이용합니다만 meanshift보다는 훨씬 성능이 뛰어납니다. 사용한 색상 모델은 RGB 3D 모델입니다 (실행파일 첨부: 소스코드는 포함되지 않음).


dtracker_v1.zip


특징은 meanshift로 추적 가능한 것은 모두 추적할 수 있으며 배경이 유사한 경우에도 어느정도 추적이 가능합니다. 특히 서서 걸어가는 보행자를 추적할 때 성능이 좋은 편입니다. 그레이/칼라 영상 모두 가능하며 처리속도는 i7기준으로 200 ~ 1,000 fps 정도입니다.


다음은 dtracker v1 추적기를 적용한 데모 동영상들입니다.


dtracker(histogram) demo1


dtracker(histogram) demo2


dtracker(histogram) demo3


dtracker(histogram) demo4


dtracker(histogram) demo5


dtracker(histogram) demo6



3. DTracker Ver2 (Optical Flow 기반)


처음 개발했던 히스토그램 기반의 dtracker v1는 물체의 크기변화는 추적하지 못하며 다른 물체에 의해 가려지는 경우 추적 성능이 떨어지는 문제가 있었습니다 (예: 위 dtracker v1 데모동영상 6). 이러한 단점을 개선하고자 개발한 것이 dtracker v2인데 dtracker v2에서는 기존 히스토그램 방식을 버리고 optical flow 방식을 사용하였습니다 (테스트용 실행파일 첨부: 소스코드는 포함되지 않음).


dtracker_v2.zip


특징은 추적 대상의 크기변화, 회전변화를 추적할 수 있으며 부분적으로 가려지는 경우에도 추적이 가능합니다. 또한 추적 도중 흔들림이 거의 없고 초기 설정한 추적 영역을 정확하게 추적할 수 있습니다. 그레이/칼라 영상 모두 가능하며 처리속도는 i7 기준으로 40 ~ 300 fps 정도입니다.


다음은 dtracker v2 추적기를 적용한 데모 동영상들입니다.


dtracker(optical flow) demo1


dtracker(optical flow) demo2


dtracker(optical flow) demo3


dtracker(optical flow) demo4


dtracker(optical flow) demo5



4. 향후 개발할 tracker


1차 목표는 현재 개발된 히스토그램 방식과 optical flow 방식을 결합하는 것입니다. 형태가 고정된 물체의 경우 optical flow 방식이 훨씬 좋은 성능을 내지만 사람 등과 같이 형태가 변하는 경우에는 히스토그램 방식이 더 뛰어날 때가 많습니다. 각각의 장단점이 있으므로 이들 장점을 잘 결합하는게 1차 목표입니다.


2차 목표는 detector 기능을 추가하는 것입니다. 현재까지 개발한 tracker들은 detector 기능이 없습니다. 그래서 추적하던 물체가 완전히 사라졌다가 나타나는 경우에는 다시 복구하지 못하는 문제가 있습니다(예: dtracker v2 demo4). 개발한 tracker는 속도와 추적 정확도 면에서 기존 어떤 추적기와도 견줄 수 있지만 detector 기능이 없음으로 해서 요즘 나오는 tld tracker 등에 밀리고 있습니다. detection 기능만 보완되면 괜찮은 추적기가 완성될 것으로 생각합니다.


저의 궁극적인 목표는 추적할 대상 물체를 스스로 인식하고 그 경계까지 완벽하게 추적하는 것입니다. 예를 들어 초기에 물체의 정확한 영역이 아닌 배경까지 포함된 영역을 추적 대상으로 설정해 줘도 그 안에 포함된 실제 물체 영역만을 찾아내어 추적하는 추적기, 또는 초기에 물체의 일부 영역만 지정해줘도 알아서 전체 물체 영역을 식별하고 해당 물체를 추적해 주는 추적기를 개발하는 것입니다.



※ 동영상 출처


참고로 테스트에 사용한 동영상들의 원본 출처는 다음과 같습니다 (대부분 영상추적 분야에서 벤치마킹용으로 사용되는 공개 동영상들입니다).


[VTD] http://cv.snu.ac.kr/research/~vtd/

[FragT] http://www.cs.technion.ac.il/~amita/fragtrack/fragtrack.htm

[LOT] http://www.eng.tau.ac.il/~oron/LOT/LOT.html

[TLD] http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html



by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고

'개발한 것들' 카테고리의 다른 글

카메라 캘리브레이션 프로그램 (DarkCamCalibrator)  (103) 2014.07.17
영상추적 프로그램(DTracker)  (181) 2013.11.29
Ferns Detector  (17) 2013.08.28
가상 3D 영상 생성 프로그램  (16) 2013.08.01
  • 이전 댓글 더보기
  • henry 2016.04.28 00:14 신고 ADDR 수정/삭제 답글

    안녕하세요 다크님 ㅎㅎㅎ 혹시 저 코드 비주얼 스튜디오 2015에서도 돌아가나요?

  • 감사합니다.
    혹시 소스에서는 보지못한부분인데,
    두 영상을 합쳐 한 윈도우로 출력하는 함수가 따로있나요? 실행파일은 그런식이던데

    • BlogIcon 다크pgmr 2016.05.19 22:19 신고 수정/삭제

      opencv에 새로 추가된 함수인데, vconcat이나 hconcat을 사용하면 편하게 영상들을 합칠 수 있습니다.

  • 2016.06.05 03:36 ADDR 수정/삭제 답글

    비밀댓글입니다

    • BlogIcon 다크pgmr 2016.06.07 17:15 신고 수정/삭제

      안녕하세요. 미안합니다만 개발이나 유료자문은 하지 않습니다.

  • 마르세유 2016.07.01 13:03 신고 ADDR 수정/삭제 답글

    안녕하세요 ^^ 졸업작품 때문에 트래킹을 공부중인 학부4학년생입니다.
    운전석에서 앞의차를 하려한다면. 어떤방식이 좋을까요?
    자동차들이 차선을 빠져나갓다 들어왔다 바뀌기도 하겠고, 모두 다른모양의 차들일텐데
    알고리즘이 어떤식이면 될까요. 구현이 힘들까요?

    • BlogIcon 다크pgmr 2016.07.01 16:44 신고 수정/삭제

      안녕하세요. opencv에도 추적 알고리즘들이 일부 구현되어 들어가 있습니다. 먼저 opencv에 있는 것부터 하나씩 테스트해 보시면 좋을 것 같습니다..

  • 입원중 2016.09.29 16:53 신고 ADDR 수정/삭제 답글

    혹시 여쭤봐도 될련지 모르겠지만, optical flow에서 tracking 영역에 다른 object가 들어와 occlusion이 발생하면, 침투해 들어온 object의 flow도 발생해서 track 영역이 이동하게 되지 않나요?
    저는 영역 내에 features를 잡고 optical flow vector를 구한 후, 평균을 내서 이동 vector를 잡는데, 어떻게 이동된 벡터를 구하는지 궁금합니다.

    • BlogIcon 다크pgmr 2016.09.30 01:03 신고 수정/삭제

      Median Flow Tracker에서 사용한 방법을 한번 적용해 보시면 좋을 것 같습니다. 자세한 방법은 Forward-Backward Error: Automatic Detection of Tracking Failures, ICPR 2010 논문을 참고하시기 바랍니다.

  • 입원중 2016.10.18 12:32 신고 ADDR 수정/삭제 답글

    안녕하세요 또 질문드리러 왔습니다.
    DTracker Ver2에서 tracking을 놓지면 노란 박스로 바뀌던데, optical flow에서 어떻게 tracking을 놓쳤는지 알 수 있나요? 다시 찾는 경우도 마찬가지로 궁금합니다.
    그리고 데모에 사용한 영상은 아마 영상처리용으로 공개된 영상같은데, 어디서 구하는지 알 수 있을까요?
    항상 감사합니다.

    • BlogIcon 다크pgmr 2016.10.19 15:08 신고 수정/삭제

      안녕하세요. 이전 댓글들에서도 답변드렸지만 DTracker의 알고리즘에 대해서는 말씀드리기 어렵습니다. 영상추적 분야에서 사용되는 벤치마킹 데이터셋은 http://www.votchallenge.net/과 http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html 에서 구할 수 있습니다.

  • 라임찢는라임 2016.10.19 10:21 신고 ADDR 수정/삭제 답글

    안녕하세요 질문이 있어서 왔습니다. 첫번째 첨부 자료의 오픈소스에 대한 질문인데요 코드중 calchist에 mask 라고 되어있는 부분이 그 영역의 히스토그램만 구하겟다 라는 것 같은데 roi로 영상을 잘라 냈다면 해당부분은 Mat()으로 처리 해도 같은 결과가 나타나야하는 것 아닌가요??
    그리고 hist_size를 변수로 넣으셧는데 변수는 어디서 뽑으신건가요? ㅜㅜ 답변 주시면 감사하겠습니다.

    • BlogIcon 다크pgmr 2016.10.19 15:18 신고 수정/삭제

      1. roi로 영상을 잘라 냈다면 해당부분은 Mat()으로 처리 해도 같은 결과가 나타나야하는 것 아닌가요?? => 네 맞습니다.
      2. hist_size는 어디서 구하는 것이 아니라 자신이 원하는데로 설정하는 값입니다. 제공한 샘플코드에서는 16으로 기본값이 설정되어 있습니다.

    • 라임찢는라임 2016.10.19 15:54 신고 수정/삭제

      바쁘신 와중에 답변 감사합니다.

  • 마방진 2016.12.14 11:29 신고 ADDR 수정/삭제 답글

    드론에서 사람 이미지 추적 관련해 검색하다가 여기까지 왔습니다.
    딱 제가 찾는 자료인데... 와우.. 어렵네요 ^^
    빅데이터의 연장선에서 CNN등 딥러닝쪽으로 접근하려고 했었는데,
    음... 비전쪽이라... 좀 도메인이 다른것 같기도하고... 지식 베이스가 얇아 좀 더 파본뒤 궁금한거 질문 드려도 되죠? ㅎㅎ
    참. 전 비트 리눅스 전문가 LX182기 출신입니다.. 반갑네요 ^^

    • BlogIcon 다크pgmr 2016.12.15 13:05 신고 수정/삭제

      네 반갑습니다. ^^ 궁금하신 내용이 있으면 언제든지 댓글 남겨주시기 바랍니다.

  • 지각생 2017.01.19 22:23 신고 ADDR 수정/삭제 답글

    ^^ 멋지십니다. 요즘 tracking에 대해 공부를하고있습니다.
    혹시 dtracker version2 에 사용된 optical flow 는 Lucas-Kanade 방법을 사용하신 것인가요? 성능이 너무 좋아 보입니다!

    아..! 다른 댓글들에 보니 알고리즘 공개가 어렵다고 되어있군요! 죄송합니다

    • BlogIcon 다크pgmr 2017.01.21 07:54 신고 수정/삭제

      네.. opencv에 구현되어 있는 기본적인 lucas-kanade 방법을 사용한 것이 맞습니다.

  • 꿈나무 2017.05.24 01:20 신고 ADDR 수정/삭제 답글

    안녕하세요! 다크 프로그래머님 질문이 있습니다.
    mfc 영상처리를 이용해 중심점을 잡고 싶습니다.
    파랑색을 잡사어 이치화를 시킨다음
    10*10 색종이의 중심점을 잡고 싶은데
    전제가 파란색 풍 배경안에서 파랑색 색종이 안의 중심접을 잡아야 합니다.
    때문에 파란색 배경도 색종이와 같이 잡혀서 중심점이 많이 흔들릅니다.
    이럴경우 어떻게 프로그램을 바꿔야 파랑색 색종이 중심점을 잡을 수 있을까요?

    현재 ycbcr로 이치화 시키고 보더팔로우 경계 잡아서 파랑색 잡고있습니다
    open cv는 사용할 수 없습니다.
    꼭좀 알고싶어요!

    • BlogIcon 다크pgmr 2017.05.24 08:27 신고 수정/삭제

      안녕하세요. 파란색 배경에서 파란색 색종이를 잘 못찾는 문제는 제가 봐도 잘 안되는 문제로 보입니다. 색이 구분이 안된다면 방법이 없지 않겠습니까?

    • 꿈나무 2017.05.26 21:34 신고 수정/삭제

      한밤중에 생각해서 그런지 너무 당연한걸 여쭈고 있었네요.. 다른 해결책을 알아봐야겠네요!

  • 할수있다 2017.06.01 11:20 신고 ADDR 수정/삭제 답글

    안녕하세요? 과제중인 학생입니다.
    프로그래밍에 관하여 이 page에서 많이 배웠습니다. 감사합니다.
    혹시 질문 한 가지 드려도 될까요?
    위의 open source를 통해서 image를 추적하고 난 다음, 추적한 image의 거리값을 나타낼 수 있는 방법은 혹시 없을 까요?

    • BlogIcon 다크pgmr 2017.06.01 13:27 신고 수정/삭제

      조건에 따라 다른데요.. 일반적으로는 불가능합니다. 스테레오 카메라 등의 특수한 카메라를 사용하거나 물체의 크기를 알고 있거나 등의 부가적인 정보가 없으면 어렵습니다.

    • 할수있다 2017.06.01 15:34 신고 수정/삭제

      답변 정말 감사합니다.
      혹시 위에 처럼 한 객체를 추적하고 객체까지의 거리를 출력해주는 open source를 알고 계신게 있으신가요? 알고계신게 있으시다면 가르쳐주시면 감사하겠습니다.

    • BlogIcon 다크pgmr 2017.06.01 17:36 신고 수정/삭제

      그러한 오픈 소스는 없습니다. 말씀드렸다시피 일반적인 카메라 영상으로는 거리 측정이 안됩니다. kinect 센서와 같이 3차원 거리가 바로 나오는 센서 등을 사용해야 합니다.

    • 할수있다 2017.06.01 18:45 신고 수정/삭제

      네~도움주셔서 정말 감사합니다~

  • ㅇㅇㅇ 2017.06.06 20:33 신고 ADDR 수정/삭제 답글

    안녕하세요? mean shift에 관해 공부하고 있는 학생입니다. code를 분석하다가 질문이 있어
    댓글 남깁니다.
    if(m_param.method == MEANSHIFT)
    {
    int itrs = meanShift(m_backproj, m_rc, TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, m_param.max_itrs, 1 ));
    rectangle(img, m_rc, Scalar(0,0,255), 3, CV_AA);
    }
    m_backproj가 히스토그램 정보를 가져오는 거 같은데 m_rc, TermCriteria, rectangle은 어떤 의미인가요?

    • BlogIcon 다크pgmr 2017.06.06 22:20 신고 수정/삭제

      opencv 함수에 대한 설명은 온라인 help를 참조하시기 바랍니다. http://docs.opencv.org/

    • ㅇㅇㅇ 2017.06.07 20:20 신고 수정/삭제

      네~ 도움 주셔서 정말 감사합니다.

    • ㅇㅇㅇ 2017.06.07 23:47 신고 수정/삭제

      한 가지만 더 여쭙겠습니다. 혹시 camshift를 이용하여 camshift 윈도우창 크기에 따라 추적하고 있는 대상의 위치를 인식하여 로봇이 따라가게 하는 것이 가능할까요?

    • BlogIcon 다크pgmr 2017.06.08 10:04 신고 수정/삭제

      tracker를 이용해서 로봇이 물체를 따라가는 것은 충분히 가능한 시나리오입니다. 하지만 camshift를 사용하는 것은 좋은 선택이 아니라 생각합니다. camshift는 제한된 환경에서 사람의 얼굴을 추적하는데는 뛰어난 성능을 보이지만 일반적인 물체를 추적하는 용도로는 적합하지 않습니다. 차라리 mean-shift가 훨씬 효과적일 것입니다. 또는 공개되어 있는
      최신 tracking 기술들도 고려해 볼 필요가 있습니다. opencv에도 kcf 등 최신 tracker 들이 일부 포함되어 있으니 우선 opencv에 포함되어 있는 tracker들부터 테스트해 보시면 좋을 듯 싶습니다.

    • ㅇㅇㅇ 2017.06.09 16:31 신고 수정/삭제

      네~알겠습니다.
      도와주셔서 감사합니다~

  • 할수있나? 2017.06.12 11:49 신고 ADDR 수정/삭제 답글

    안녕하세요 트래킹에대해 공부하고있는 학생입니다.
    DTracker Ver.1이 어떤부분이 개선된건지 알고싶습니다!

  • BlogIcon 한세경 2017.06.15 09:04 신고 ADDR 수정/삭제 답글

    좋은 내용입니다. 언뜻 드는 생각인데
    생물의 인지방식과 비슷하게 신경망 등과 결합해서 Context 기반의 인지를 하면 성능이 더 올라갈 수 있지않을까 하는 생각이 드네요. 대략적인 아이디어입니다만 단일 객체뿐 아니라 전체 배경에서 각각의 오브젝트를 인지하고 그들과의 상호관계(일종의 context 인식)까지 고려한 추적방식이 도움이 되지 않을려나 싶습니다. 특히 물체가 사라졌다 나타난다던가 원래의 비주얼한 특성을 많이 잃어버렸을때요. 그렇게 하기 위해 신경망 등하고 연계하면 어떨까 싶어요^^

    개인적으로 다크 프로그래머님이 지금 어디서 므슨 일을 하시는지 궁금해졌네요 ㅎㅎ

    • BlogIcon 다크pgmr 2017.06.15 21:39 신고 수정/삭제

      네, 좋은 의견 감사합니다. 결국은 tracking 문제를 풀기 위해 궁극적으로 가야할 방향을 말씀해 주신 것 같습니다. 전적으로 동감하며 그러한 개념을 어떻게 구체화시킬 수 있을지 좀더 고민해 봐야겠습니다. 저도 사실 물체만 추적해서는 한계가 있다고 느끼고 있습니다. 배경이 아닌 것을 물체라고 규정할 수도 있고 배경을 잘 추적함으로써 궁극적으로 물체를 더 잘 추적할수 있을텐데.. 그 구체적인 방법이 계속 고민입니다.

  • 질문있습니다 2017.07.13 10:39 신고 ADDR 수정/삭제 답글

    다크님 안녕하세요 지나가다 신기해서 보게 되었는데, 성능평가는 어떻게 할 수 있나요?? 추적이 몇 % 좋아 졌다 이런 수치를 알 수 있나요??? 신기해서 보다보니 급 생각나서요

    • BlogIcon 다크pgmr 2017.07.13 10:47 신고 수정/삭제

      안녕하세요. 성능평가는 보통 정확도와 추적 지속성(실패율)을 가지고 합니다. 정확도는 추적한 결과와 ground truth(정답)와의 오버랩 정도 또는 중심거리를 가지고 측정하고 지속성은 타겟을 놓치지 않고 얼마나 오랫동안 추적할 수 있는지를 평가합니다. 예를 들어 ground truth와의 오버랩(overlap)이 0이 되면 타겟을 놓친 것으로 간주할 수 있고, 타겟을 놓칠 때마다 대상을 다시 초기화 시켜 준다고 했을 때 초기화 횟수가 많을수록 지속성이 떨어진다고 평가할 수 있습니다.

  • 질문이요~ 2017.08.20 11:20 신고 ADDR 수정/삭제 답글

    안녕하세요.
    항상 공부하는데 정말 큰 도움이 됐습니다. 감사합니다!

    이번 실행파일에서 3번옵션으로 avi 영상을 주면 프로그램이 바로 죽어버리는데 코덱문제일까요?

    • BlogIcon 다크pgmr 2017.08.20 13:52 신고 수정/삭제

      DTracker V2를 말씀하시는 것이지요? 코덱 문제라 생각됩니다만 확인을 위해서 여러 avi 파일들을 테스트해 보면 좋을 것 같습니다. 압축파일에 같이 포함되어 있는 ffmpeg 파일이 조금 옛날 버전이긴 해도 어지간한 avi 파일은 재생 가능합니다. 가지고 계신 avi 파일들 중 일부는 재생되고 일부는 재생되지 않는다면 확실히 코덱문제라고 볼 수 있겠습니다.

  • 안녕하세요 2017.08.27 17:35 신고 ADDR 수정/삭제 답글

    안녕하세요. 최근 OpenCV 프로젝트를 진행하며 많이 참고하고 있습니다.
    오늘은 트랙킹 관련 질문이 있어서 찾아 뵀는데요,
    혹시 처음부터 ROI를 설정하고 그 영역을 추적하는 것이 아니라,
    정지된 영상에서 움직이는 물체가 등장하면 그 물체를 자동으로 감지해 추적하게 하려면
    어떤 방식으로 해야하는 지가 궁금합니다. 만약 참고할 만한 내용을 알고 계시다면 알려주시면
    정말 감사할 것 같습니다 :)

    • BlogIcon 다크pgmr 2017.08.28 15:59 신고 수정/삭제

      안녕하세요. 정지(고정) 카메라에서 움직이는 물체를 찾는 방법은 보통 background subtraction 방법을 사용합니다. opencv에 MOG2라는 알고리즘이 포함되어 있으니 이를 이용하면 움직이는 물체를 분리해 낼 수 있습니다. 그리고 이렇게 처음 발견된 물체로 추적기를 초기화한 후 추적 알고리즘을 적용하면 될 것 같습니다.

  • JM 2017.09.22 11:33 신고 ADDR 수정/삭제 답글

    안녕하세요 다크님. 기존에 올려주신 소스코드를 토대로 프로그램을 빌드 해 보았습니다.
    따로 HOGcascade를 만들고, 또 Opencv에 기본적으로 있는 HOGcascade를 이용해서 보행자 추적을 돌려보았는데, 연산프레임이 1~2fps로 매우 느리게 동작합니다.
    double fps = freq / double(finish - start + 1 이 부분인지 gr_thr 부분인지..
    따로 프레임을 설정할 수 있는 코드가 어느 부분인지 모르겠어서 여쭙고자 합니다.

    • BlogIcon 다크pgmr 2017.09.25 08:19 신고 수정/삭제

      안녕하세요. 프레임레이트는 컴퓨터에서 프로그램이 수행되는 실제 속도를 측정한 것이라서 파라미터로 바꾸지는 못합니다. 혹시 debug 모드로 실행시킨 것은 아닌지요?

  • ICT전공 학생 2017.11.13 16:26 신고 ADDR 수정/삭제 답글

    안녕하세요 저는 휴먼ict에서 어플 기획을 하고 있는 학생입니다.
    OpenCV를 이용하여 핸드폰으로 사람들의 모션을 인식하여 운동 자세를 교정해주는 어플을 만드려고 하는데요. 기술적으로 구현이 가능한 테스크인지 가장 궁금합니다.
    만약 가능하다면 인식률이 올라가도록 푸른 천을 뒤에 대서 촬영을 할 생각입니다.
    그리고 자세 교정의 기반이 되는 템플릿을 제작하여 이용자의 자세를 비교하도록 할 수 있는 것인가요??

    • BlogIcon 다크pgmr 2017.11.13 16:43 신고 수정/삭제

      안녕하세요. 먼저 말씀드리고 싶은 것은 저는 질문하신 내용에 답을 드릴 수 있는 지식은 가지고 있지 않습니다. 하지만 최근 발표되는 논문들에서 딥러닝 기반으로 영상에서 사람들의 모션을 인식하여 자세를 추출하는 연구는 상당히 진행된 것으로 알고 있습니다. 다만 딥러닝 기법을 적용한 것이기 때문에 휴대폰과 같은 저사양 환경에서 실시간 동작이 가능할지는 의문입니다.

  • kinaan 2017.12.03 16:59 신고 ADDR 수정/삭제 답글

    카메라에 촬영된 대상의 feature을 잡아낸 후, 대상이 움직였을때 ransack을 feature의 이동을 나타내는 벡터를 구한 후, 움직임을 보정해주는 작업을 하려고 하는데요,,, 혹시 opencv 라이브러리에서 추천해주실만한 것들이 있나요? 영상처리쪽이 완전 처음이다보니 도움이 필요합니다.

    • BlogIcon 다크pgmr 2017.12.03 23:04 신고 수정/삭제

      opencv에 있는 tracker들은 모두 사용법이 비슷합니다. 그냥 이름만 바꿔주는 수준으로 테스트가 가능하니 제공되는 것들을 한번씩 모두 테스트해 보시면 좋을 것 같습니다.