import matplotlib.pyplot as plt
import numpy as np
import cv2
def convert(r):
x = np.zeros([256])
for i in range(r.shape[0]):
for j in range(r.shape[1]):
x[r[i][j]]+=1
x = x/r.size
sum_x = np.zeros([256])
for i,_ in enumerate(x):
sum_x[i] = sum(x[:i])
s = np.empty(r.shape,dtype=np.uint8)
for i in range(r.shape[0]):
for j in range(r.shape[1]):
s[i][j] = 255 * sum_x[r[i][j]]
return s
im = cv2.imread('tetet.jpg')
im_mat = np.asarray(im)
#原直方图
plt.hist(im_mat.reshape([im_mat.size]),256,density=1)
plt.show()
#均衡化直方图
im_converted_mat = convert(im)
plt.hist(im_converted_mat.reshape([im_converted_mat.size]),256,density=1)
plt.show()
#均衡化图
cv2.imshow('original',im)
cv2.imshow('jpg',im_converted_mat)
cv2.waitKey()
数字图像处理 直方图均衡化
最新推荐文章于 2024-03-29 12:40:10 发布