역투영
by Cori앞서 배운 2차원 히스토그램과 HSV 컬러 스페이스를 이용하면 색상으로 특정 물체나 사물의 일부분을 배경에서 분리할 수 있다.
기본 원리는 물체가 있는 관심영역과 H와 V 값의 분포를 얻어낸 후 전체 영상에서 해당 분포의 픽셀만 찾아내는 것
* 해당 포스팅에서 다루고 있는 모든 내용은 다음 서적을 참고하였습니다.
내용 정리
1. 역투영
0) 정의
-> 히스토그램 역투영은 영상의 각 픽셀이 주어진 히스토그램 모델에 얼마나 일치하는지를 검사하는 방법으로, 임의의 색상 영역을
검출할 때 효과적이다. 역투영을 이용하면 알파 채널이나 크로마 키 같은 보조 역할 없이도 복잡한 모양의 사물을 분리할 수 있지만,
대상 사물의 색상과 비슷한 색상이 뒤섞여 있을 때는 효과가 떨어지는 단점도 있음
* 역투영은 전체 영상의 색상 정보와 대상 객체의 색상 정보의 비율을 0~255 구간으로 노멀라이즈 한 것으로 볼 수 있다.
역투영 결과 값은 추적 대상 객체의 색상 값과 비슷한 영역의 픽셀들만 큰 값을 가짐
1) 역투영 함수
-> cv2.calcBackProject(img, channel, hist, ranges, scale)
· img: 입력 영상, [img]처럼 리스트로 감싸서 표현
· channel: 처리할 채널로, 리스트로 감싸서 표현한다. (1채널: [0], 2채널: [0, 1], 3채널: [0, 1, 2])
· hist: 역투영에 사용할 히스토그램
· ranges: 각 픽셀이 가질 수 있는 값의 범위
· scale: 결과에 적용할 배율 계수
2) 활용
선택한 관심 영역을 HSV 컬러 스페이스로 변경하고, H와 S채널에 대한 2차원 히스토그램을 계산한 결과를 역투영 함수에 인자로 전달
* masking() 함수: 스레시홀드와 마스킹을 거쳐 결과를 출력
cv2.getStructuringElement(), cv2.filter2D() 함수: 마스크의 표면을 부드럽게 함
다음은 역투영을 수행한 결과물이다.
역투영의 경우 사물의 색상과 비슷한 생상이 뒤섞여 있을 때 효과가 떨어진다고 하였는데, 다음은 효과가 떨어지는 역투영 영상이다.
'AI > Computer Vision' 카테고리의 다른 글
색상 변환 (BGR -> HSV, YUV, YCbCr) (0) | 2021.10.15 |
---|---|
웹캠으로 실시간 움직임 감지하기 (1) | 2021.09.26 |
영상 히스토그램 그리기 (0) | 2021.09.24 |
노멀라이즈, 이퀄라이즈, CLAHE (0) | 2021.09.23 |
영상 합성과 마스킹 (1) | 2021.09.22 |
블로그의 정보
코딩하는 오리
Cori