알고리즘
import cv2 as cv
import numpy as np
img = cv.imread("citrus.bmp", cv.IMREAD_GRAYSCALE)
cv.imshow("img", img)
H, W = img.shape[:]
output = np.zeros((H, W), img.dtype)
#valuable 선언 및 초기화
hist = np.zeros(256, int) #히스토그램은 0~255이므로 256개이다.
sum_of_hist = np.zeros(256, int)
#1. Calculation of histogram
for y in range(H):
for x in range(W):
k = img[y, x]
hist[k] = hist[k] + 1
sum = 0
#2. Cumulative Histogram
for i in range(len(hist)):
sum = sum + hist[i]
sum_of_hist[i] = sum
#3. Transform the input image to output image
area = H * W
Dm = 255 #0~255.
for y in range(H):
for x in range(W):
k = img[y, x]
output[y, x] = (Dm/area) * sum_of_hist[k]
cv.imshow("output", output)
cv.imwrite('/Users/jiwonheo/bin/python3/Users/jiwonheo/Development/학교 강의/영상정보처리/lab3/HistogramEq.bmp', output)
cv.waitKey(0)
디스플레이단에서는, Physical Power(전압) 에 의해서 rgb 값을 제어함.
근데 Physical Power는 Linear 하게 동작하지 않기 때문에, 원래의 영상과 다른 색상 영상으로 보여지게됨
알고리즘