히스토그램 평활화

5050·2021년 7월 11일
1

컴퓨터비전

목록 보기
3/15

히스토그램(histogram)은 표로 되어 있는 도수 분포를 정보 그림으로 나타낸 것이다. 더 간단하게 말하면, 도수분포표를 그래프로 나타낸 것이다. 보통 히스토그램에서는 가로축이 계급, 세로축이 도수를 뜻하는데, 때때로 반대로 그리기도 한다.
= 위키백과 =

이미지에서 히스토그램은 각 픽셀마다 빈도수를 체크해 각 값에 맞게 막대 그래프를 그리는 것이다.
즉 x축에 가질 수 있는 것은 0~255, y는 각 값에 따른 개수(이미지의 크기에 따라 매우 높아질 수 있으므로 스케일해주는 것이 좋다.)

Lenna 이미지의 히스토그램

히스토그램이 골고루 퍼져있다면 더 선명한 이미지가 된다. 반대로 좁은 영역에 몰려있다면 명암대비가 떨어져 선명하지 않은 이미지가 된다.
그래서 히스토그램 평활화를 통해 높은 명암대비를 가지게 하는 것이 목표이다.
원리는 히스토그램을 퍼뜨리는 것인데, 히스토그램의 누적을 이용하여 스케일하는 것이다.
만약, 픽셀값이 50인데 50까지 누적빈도를 구하여 전체 히스토그램대비 얼마나 차지하는 지 구하고 255(최대값)을 곱하여 255의 해당 비율로 보내버리는 것이다 그러면 0~255 사이에 균등하게 가져가는 효과를 기대할 수 있게 된다.

픽셀값 빈도수 구하기

누적 빈도수 구하기

255의 비율에 맞는 스케일하기

wh는 이미지의 width * height이다.
0.5를 더해주는 것은 반올림해주기 위함

흑백 이미지 히스토그램 평활화

같은 원리를 사용하여 각 채널마다 히스토그램 평활화를 적용해보았다.

색상이 너무 바뀌길래 궁금해서 검색해보니 색상정보를 건드리지 않고 히스토그램 평활화를 적용하는 방법들이 소개되었다.
그 방법은 BGR의 이미지를 YUV의 값으로 바꾸고 Y에 대해서만 히스토그램 평활화를 적용하는 것이다.
YUV와, BGR, HSV등 여러가지 컬러모델이 있는 것으로 아는데 나중에 한 번 정리를 해야겠다
여기서 YUV는 예전 흑백밖에 없을 당시 Y만 사용해서 송신했는데 나중에 컬러가 도입이 되었을 때 동일하게 송신해서 흑백을 쓰던 사람들에게는 흑백만 컬러에는 컬러를 하기위해 추가적으로 UV가 추가된 것이라 들었다. Y가 녹색 정보를 가지는 동시에 흑백이미지가 되고 UV는 빨강, 파랑을 띄운다. YUV에서도 변형된 NV12 등을 통해 엣지 디바이스 같은 곳에서는 더 적은 메모리를 통해 이미지를 표현하기도 한다. 나중에 자세하게 다뤄야겠다.

profile
하이

1개의 댓글

comment-user-thumbnail
2022년 7월 6일

ㅎㅇ

답글 달기