히스토그램 평활화란 ( Histogram Equalization ) ?
- 히스토그램이 그레이스케일 전체구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법이다.
이는 전날에 알아본 Histrogram Stretching 기법과는 조금 다른 방식의 기법이다.
누적 분포함수 ( 히스토그램을 누적해서 함수를 만들고 누적된 함수를 이용해서 픽셀값을 변환하는 기법 ) 을 사용
예를들면
위 표와 같이 p(g) 함수값을 누적으로 더해서 나오는 값이 cdf(g)로 나오는 결과를 볼 수 있는데 위 표에서 나온 값에
현재 영상 픽셀의 최대값을 곱한 뒤 나오는 소수값들을 반올림하여 정수형태로 사용한다.
위와같이 최종적으로 평활화 계산된 이후, 기존 픽셀값을 평활화된 픽셀값으로 변형시켜주는 기법이다.
* Histogram Stretching 과 Histogram Equalization 의 차이점을 보자면
히스토그램 스트레칭은 있는 픽셀들을 균일하게 그대로 잡아서 피고
히스토그램 평활화는 픽셀값이 많이 뭉쳐있는 곳을 더 많이 피고 적게 뭉쳐있는 곳은 많이 피지 않는다는
차이가 있다.
실제 OpenCV에서 아래와같은 코드로 간단하게 히스토그램 평활화를 수행할 수 있다.
cv2.equalizeHist
실제로 위와같이 Histogram Equalization 을 진행하게 되면 밝은 곳은 더 밝아지고 어두운 곳은 더 어두워지는 것을
볼 수 있다.
* GrayScale 영상뿐 아니라 TrueColor 영상에서도 히스토그램 평활화를 실행할 수 있다.
직관적인 방법으로 R , G , B 의 픽셀값을 추출하여 히스토그램 평활화를 진행한 뒤 다시 Merge 하여 영상을 만들면
되지 않을까라는 생각을 했는데 이 방법으로 진행하게 되면 색감이 바뀌어 버리는 경우가 발생하게되어 이렇게
사용하면 안된다.
그래서 R , G , B 값을 YCrCb 타입으로 변환하고 밝기값만 추출하여 ( Y ) 히스토그램 평활화를 실행시켜준 뒤
다시 Merge하는 방법을 사용하면 된다. 색상성분은 cr cb 는 건들지 않는다.
여기서 중요한 점은 ycrcb로 변환한 이미지를 다시 B G R 로 변환해주고 실행시켜줘야한다는 점이다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 기본적인 영상처리 기법 _ 히스토그램 역투영 (0) | 2022.05.13 |
---|---|
[Open CV] 기본적인 영상처리 기법 _ 특정 색상 영역 추출 (0) | 2022.05.12 |
[Open CV] 기본적인 영상처리 기법 _ 영상의 명암비 조절 (0) | 2022.05.10 |
[Open CV] 기본적인 영상처리 기법 _ 히스토그램 분석 (0) | 2022.05.10 |
[Open CV] 기본적인 영상처리 기법 _ 컬러 영상과 색 공간 (0) | 2022.05.08 |