히스토그램 스트레칭
histogram stretching
영상의 히스토그램이 그레이스케일 전 구간에 걸쳐 나타나도록 변경하는 선형 변환 기법
특정 구간에 집중되어 나타난 히스토그램을 마치 고무줄을 늘이듯이 펼쳐서 grayscale 범위 전 구간에서 히스토그램이 골구루 나타나도록 변환
dst(x,y)=Gmax−Gmin255×src(x,y)−Gmax−Gmin255×Gmin
dst(x,y)=Gmax−Gminsrc(x,y)−Gmin×255
히스토그램 평활화
histogram equalization
히스토그램이 grayscale 전체 구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법
누적 분포 함수 구하기 : cdf(g)=0≤i≤g∑p(i)
변환 함수 : dst(x,y)=round(cdf(src(x,y))×Lmax)
g | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|
h(g) | 4 | 3 | 2 | 1 | 0 | 2 | 3 | 1 |
p(g) | 164 | 163 | 162 | 161 | 0 | 162 | 163 | 161 |
cdf(g) | 164 | 167 | 169 | 1610 | 1610 | 1612 | 1615 | 1 |
cdf(g) ∗Lmax | 1628 | 1649 | 1663 | 1670 | 1670 | 1684 | 16105 | 7 |
round | 2 | 3 | 4 | 4 | 4 | 5 | 7 | 7 |
src : 8비트 1채널 입력 영상
dst : src와 같은 크기 같은 타입인 결과 영상
void equalizeHist(InputArray src, OutputArray dst);
결과 비교
둘 다 명암비가 좋아짐
스트레칭 : 직선 함수 사용, 빈 부분 균일
평활화 : 곡선 함수 사용, 개수가 많은 부분 넓게 펼침, 구역별 균일 픽셀 분포