Image Processing

Histogram Equalization (히스토그램 평활화)/CLAHE

민토즈 2020. 10. 12. 17:07
300x250

Histogram Equalization은 이미지의 픽셀이 특정 범위 값 주변에 분포해 있을 때, 양쪽 끝으로 히스토그램을 펼쳐서 Contrast 조정하는 방법이다.  

 

예제는 이미지를 histogram equlization을 사용해서 Contrast 조정을 했고, 히스토그램 그래프를 보면 어두운 부분과 밝은 부분이 고르게 분포되어 있는 것을 확인할 수 있다. 이미지에 따라서 histogram equalization 후 품질 저하가 발생할 수 있는데, 이미지 전체의 누적 히스토그램을 평활화하면서 특정 색 범위가 훼손되는 경우이다. 대안으로, 이미지를 여러 개의 블록으로 나누고(8x8), 각 블록 별로 histogram equalization을 사용하는 방법을 적용하면, Histogram Equalization에 비해서 자연스러운 변환이 이뤄진 것을 확인할 수 있다. 전체적으로 히스토그램이 고르게 펼쳐지지는 않지만, 원본 픽셀 범위 주변으로 펼쳐지면서 품질 저하를 방지할 수 있다.

 

* 학습용 이미지의 Data Augmentation을 위한 CLAHE 적용

원본 이미지/histogram equalization/CLAHE

 

히스토그램(원본/histogram equalization/CLAHE)

import cv2
import numpy as np
from matplotlib import pyplot as plt

image = cv2.imread("src.jpg", cv2.IMREAD_GRAYSCALE)

equ_image = cv2.equalizeHist(image)

clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))

clahe_image = clahe.apply(image)

 

 

300x250