python 实现直方图等化(histogram equalization)
Digital image processing中的Histogram equalization 的作用是强化对比度,也就是将已将Gray_image 中像素值强度越高的地方变得更高,越低的地方变得更低,已达到增强对比度的效果。
import cv2
import numpy as np
img = np.array([[52, 55, 61, 66, 70, 61, 64, 73],
[63, 59, 55, 90, 109, 85, 69, 72],
[62, 59, 68, 113, 144, 104, 66, 73],
[63, 58, 71, 122, 154, 106, 70, 69],
[67, 61, 68, 104, 126, 88, 68, 70],
[79, 65, 60, 70, 77, 68, 58, 75],
[85, 71, 64, 59, 55, 61, 65, 83],
[87, 79, 69, 68, 65, 76, 78, 94]])
cv2.imwrite("img.jpg", img)
img = cv2.imread("img.jpg",0)
gray_degree = []
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if img[i][j] in gray_degree:
continue
else:
gray_degree.append(img[i][j])
gray_degree.sort()
gray_degree.sort()
count = np.zeros(len(gray_degree))
for a in range(len(gray_degree)):
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if gray_degree[a] == img[i][j]:
count[a] += 1
img_ = np.zeros(img.shape)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
img_[i][j] = sum(count[:gray_degree.index(img[i][j])]) * 255 / 64
img_
cv2.imwrite("img_.jpg", img_)
输出结果:
before:
after: