Histogram
영상과 같은 Big Data의 형태, 중심, 산포를 알기 위해 graph, table, statistic value 등을 계산한다.
이때 대표적으로 사용되는 것이 histogram이며 [0, 255] 사이 값들의 도수에 해당하는 데이터의 개수를 count 한다.
히스토그램 계산
- 히스토그램: [0, L-1] 사이의 명암값 각각이 영상에 몇 번 나타나는지 표시
- 히스토그램 h와 정규화 히스토그램(l은 명암값)
h(l)=∣{(j,i)∣f(j,i)=l}∣h^(l)=M×Nh(l)
- h(l)은 명암값이 l인 픽셀의 수를 의미하며 h는 전체 도수를 표현한 히스토그램이다.
- 정규화 히스토그램은 히스토그램을 전체 픽셀 수로 나누어 비율값으로 표현한다.
- 정규화하지 않고 사용하면 영상의 크기에 따라 빈도 경향이 달라지기 때문에 정규화 히스토그램을 사용한다.
히스토그램 용도
- 영상의 특성 파악
- 히스토그램 평활화(Equalization)
- 히스토그램을 평평하게 만들어 주는 연산
- 명암의 동적 범위를 확장하여 영상의 품질을 향상시킨다.
- 많이 몰린 명암값을 중점적으로 확장한다.
- 명암값이 설정한 min, max 값에 골고루 분포하도록 설정한다
- 누적 히스토그램 c를 매핑 함수로 사용한다.
c(lin)=∑l=0linh^(l)
lout=T(lin)=round(c(lin)×(L−1))
- cf) Histogram Stretching: 명암 최대, 최솟값 비율을 이용해서 고정된 비율로 scaling하는 확장 방법
- 명암값이 설정한 min, max 값 전역에 분포하도록 설정한다.
- scaling이기 때문에 히스토그램 중간에 비어있는 값이 존재할 수 있다.
- 원본 영상의 명암값이 이미 골고루 분포된 경우 평활화를 적용해 시각적 느낌이 나빠질 수 있다.
- 평활화는 명암값이 특정 영역에 몰려있는 경우에 유리한 연산이다.
- 영상처리 연산은 분별력을 가지고 활용 여부를 결정해야 한다.
히스토그램 역투영과 얼굴 검출
- 히스토그램 역투영: 영상으로부터 이미 알고 있는 영역의 값이 있을 때 유사한 분포를 가진 확률 값으로 표현하는 것
- 히스토그램을 매핑 함수로 사용하여 화소 값을 신뢰도 값으로 변환한다.
- ex) 피부의 명암값은 127~156에만 존재한다고 가정했을 때 해당 값에서 멀수록 낮은 확률로 피부임을 의미한다.
- 얼굴 검출
- 모델 얼굴에서 구한 히스토그램 hm을 화소의 컬러 값을 얼굴에 해당하는 신뢰도 값을 변환한다.
- 실제로는 비율 히스토그램 hr을 사용한다.
hr(j,i)=min(h^i(j,i)h^m(j,i),1.0)
- 히스토그램 역투영 결과
- 얼굴 영역은 높은 신뢰도 값을 가지지만 이외의 영역도 높은 값을 가질 수 있따.
- 한계
- 비슷한 색 분포를 갖는 다른 물체를 구별하지 못한다.
- 검출 대상이 여러 색 분포를 갖는 경우 오류 가능성이 있다.
- 색상은 조명 환경에 민감하다.
- 장점
- 배경을 조정할 수 있는 상황에 적합하다.
- 이동과 회전에 불변이고 가려짐(occlusion)에 강인하다. - 일부만 보여도 인식 가능