소소한 컴퓨터 이야기

색상 정보로 객체 추적하기

by Cori

Meanshift 추적과, CamShift 추적 기법이 무엇인지 알아보고, 이 추적 기법들을 사용하여 대상 객체의 색상 정보로 추적을 해본다. 

 

* 해당 포스팅에서 다루고 있는 모든 내용은 다음 서적을 참고하였습니다.

 

파이썬으로 만드는 OpenCV 프로젝트

“개발자에게 딱 필요한 만큼의 이론과 활용 가능한프로젝트로 배우는 OPENCV 프로그래밍”OPENCV는 영상 처리와 컴퓨터 비전 분야에서 현존하는 가장 영향력 있는 라이브러리이다.이 책은 누구나


내용 정리

1. MeanShift 추적 

0) 정의

대상 객체의 색상 정보를 사용하여 추적하는 방법으로, 평균 이동 알고리즘을 사용하여 추적한다. 

역투영한 결과에서, 최초 객체를 지정한 좌표를 기준으로 평균 이동하여 이동한 객체의 중심점을 찾는 방식 

더보기

* 평균 이동이란 ?

영상의 일정한 반경 크기의 커널 윈도로 픽셀 값의 평균 값을 커널의 중심으로 바꿔서 이동하는 것을 반복하다 보면 그 주변에서

가장 밀집한 곳을 찾을 수 있다. 이런 방법으로 특정 공간 내의 분포의 피크를 찾는 방법을 평균 이동이라고 하며, 이를 이용하면

이동을 시작한 지점에서 중지한 지점까지를 하나로 묶으면 연결된 영역을 찾을 수 있음 

 

같은 방법으로, 가장 빈도가 많은 색상을 구해서 연결된 영역의 모든 픽셀 값으로 바꾸면 연결된 영역을 구분할 수 있다. 

 

1) 수행 절차

· 추적 대상을 선정해서 HSV 컬러 스페이스의 H값 히스토그램 계산

· 전체 영상의 히스토그램 (HSV 컬러 스페이스의 H값) 계산 결과로 역투영 

· 역투영 결과에서 이동한 객체를 MeanShift로 추적 

 

* 최초로 추적 대상 좌표를 구할 때에는, 사람이 손으로 지정하거나 객체 인식을 통해 구해야 함 

 

2) MeanShift 함수

-> retval, window = cv2.meanShift(probImage, window, criteria) 

 

* meanShift() 함수는 probImage 인자에 추적할 객체가 역투영된 히스토그램을 전달하고, window에 초기 추적 위치를 (x, y, w, h)

꼴로 전달하면 반복 시도한 횟수와 함께 새로운 객체의 위치를 (x, y, w, h) 꼴로 반환한다. 

더보기

· probImage: 검색할 히스토그램의 역투영 결과

· window: 검색 시작 위치, 검색 결과 위치 (x, y, w, h)

· criteria: 검색 중지 요건, 튜플 객체로 전달 

    · type 

      · cv2.TERM_CRITERIA_EPS: 정확도가 epsilon보다 작으면 중지

      · cv2.TERM_CRITERIA_MAX_ITER: max_iter 횟수를 채우면 중지

      · cv2.TERM_CRITERIA_COUNT: MAT_ITER와 동일한 조건을 만족하면 중지

    · max_iter: 최대 반복횟수 

    · epsilon: 최소 정확도 

· retval: 수렴한 반복횟수 

 

3) 활용

'AI > Computer Vision' 카테고리의 다른 글

스케치 효과 카메라  (0) 2021.10.20
모자이크 처리  (0) 2021.10.19
색상 변환 (BGR -> HSV, YUV, YCbCr)  (0) 2021.10.15
웹캠으로 실시간 움직임 감지하기  (1) 2021.09.26
역투영  (0) 2021.09.25

블로그의 정보

코딩하는 오리

Cori

활동하기