히스토그램 역투영(Histogram backprojection)

히스토그램 역투영이란 영상의 각 픽셀이 주어진 히스토그램에 얼마나 일치하는지 검사하는 방법으로, 객체의 모양은 무시하고 단순히 컬러 분포만으로 임의의 색상 영역을 검출할 때 효과적이다.

다음의 이미지에서 살색을 검출해보도록 하자.

우선 입력 영상에서 미리 살색영역에 대한 히스토그램을 구해야한다.

빨강색으로 지정한 영역을 살색이라 가정하고, 해당 영역의 히스토그램을 구했다.

원한다면 다른 이미지에서 구한 히스토그램 또는 임의의 히스토그램을 준비해도 된다.

다음 그림처럼 입력영상에 미리 준비한 살색 히스토그램에 부합하는 픽셀들을 선별하면 다음과 같이 살색영역을 추출할 수 있다. 

OpenCV에서 히스토그램 역투영을 함수를 제공하고 있다.

calcBackProject(
    List<Mat> images,
    MatOfInt channels, 
    Mat hist, 
    Mat dst, 
    MatOfFloat ranges, 
    double scale
)
images : 입력 영상 리스트
channels : 역투영 계산에 사용할 채널 번호 리스트
hist : 입력 히스토그램
dst : 출력 역투영 영상, 입력 영상과 동일 크기
ranges : 히스토그램 각 차원의 최솟값과 최댓값으로 구성된 리스트
scale : 출력 역투영 행렬에 추가적으로 곱할 값
Buy me a coffeeBuy me a coffee
카테고리: AndroidOpenCV

0개의 댓글

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.