히스토그램 스트레칭과 평활화

BERT·2023년 4월 21일
0

Computer Vision

목록 보기
19/56

히스토그램 스트레칭

histogram stretching
영상의 히스토그램이 그레이스케일 전 구간에 걸쳐 나타나도록 변경하는 선형 변환 기법
특정 구간에 집중되어 나타난 히스토그램을 마치 고무줄을 늘이듯이 펼쳐서 grayscale 범위 전 구간에서 히스토그램이 골구루 나타나도록 변환

dst(x,y)=255GmaxGmin×src(x,y)255×GminGmaxGmindst(x, y)=\displaystyle\frac{255}{G_{max}-G_{min}} \times src(x, y)-\frac{255\times G_{min}}{G_{max}-G_{min}}

dst(x,y)=src(x,y)GminGmaxGmin×255dst(x, y)=\displaystyle\frac{src(x, y)-G_{min}}{G_{max}-G_{min}}\times 255

히스토그램 평활화

histogram equalization
히스토그램이 grayscale 전체 구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법

누적 분포 함수 구하기 : cdf(g)=0igp(i)cdf(g)=\displaystyle\sum_{0\le i\le g} p(i)
변환 함수 : dst(x,y)=round(cdf(src(x,y))×Lmax)dst(x,y)=round(cdf(src(x,y))\times L_{max})

g01234567
h(g)43210231
p(g)416\cfrac{4}{16}316\cfrac{3}{16}216\cfrac{2}{16}116\cfrac{1}{16}0216\cfrac{2}{16}316\cfrac{3}{16}116\cfrac{1}{16}
cdf(g)416\cfrac{4}{16}716\cfrac{7}{16}916\cfrac{9}{16}1016\cfrac{10}{16}1016\cfrac{10}{16}1216\cfrac{12}{16}1516\cfrac{15}{16}11
cdf(g)
Lmax*L_{max}
2816\cfrac{28}{16}4916\cfrac{49}{16}6316\cfrac{63}{16}7016\cfrac{70}{16}7016\cfrac{70}{16}8416\cfrac{84}{16}10516\cfrac{105}{16}77
round23444577

src : 8비트 1채널 입력 영상
dst : src와 같은 크기 같은 타입인 결과 영상

void equalizeHist(InputArray src, OutputArray dst);

결과 비교

둘 다 명암비가 좋아짐
스트레칭 : 직선 함수 사용, 빈 부분 균일
평활화 : 곡선 함수 사용, 개수가 많은 부분 넓게 펼침, 구역별 균일 픽셀 분포

0개의 댓글