如何使用Python绘制图像的均衡直方图?

时间:2015-07-08 21:51:21

标签: python image-processing matplotlib

所以这是我的代码。变量img是原始图像。变量eq是均衡图像。

from matplotlib.pyplot import imread, imshow, show, subplot, title, get_cmap, hist
from skimage.exposure import equalize_hist


img = imread('images/city.tif')
eq = equalize_hist(img)

subplot(221); imshow(img, cmap=get_cmap('gray')); title('Original')
subplot(222); hist(img.flatten(), 256, range=(0,256)); title('Histogram of      origianl')
subplot(223); imshow(eq, cmap=get_cmap('gray'));  title('Histogram Equalized')
subplot(224); hist(eq.flatten(), 256, range=(0,256));

show()

现在,当我运行代码时,我得到原始的直方图就好了。但是均衡的直方图是不正确的。这是我的所有输出

enter image description here

我做错了什么?!?!

编辑:来自the answer的内置matlab命令适用于特定图像

enter image description here

1 个答案:

答案 0 :(得分:3)

看起来它将图像从uint8格式(0到255之间的整数值)转换为float32float64格式(浮点值介于0之间)和1包括在内)。试试eq = np.asarray(equalize_hist(img) * 255, dtype='uint8')