所以这是我的代码。变量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()
现在,当我运行代码时,我得到原始的直方图就好了。但是均衡的直方图是不正确的。这是我的所有输出
我做错了什么?!?!
编辑:来自the answer的内置matlab命令适用于特定图像
答案 0 :(得分:3)
看起来它将图像从uint8
格式(0到255之间的整数值)转换为float32
或float64
格式(浮点值介于0之间)和1包括在内)。试试eq = np.asarray(equalize_hist(img) * 255, dtype='uint8')
。