Python的直方图均衡化

5
我有一个处理照片直方图均衡化的例程:
def histeq(im,nbr_bins=256):

   #get image histogram
   imhist,bins = histogram(im.flatten(),nbr_bins,normed=True)
   cdf = imhist.cumsum() #cumulative distribution function
   cdf = 255 * cdf / cdf[-1] #normalize

   #use linear interpolation of cdf to find new pixel values
   im2 = interp(im.flatten(),bins[:-1],cdf)

   return im2.reshape(im.shape), cdf

#im = array(Image.open('AquaTermi_lowcontrast.jpg').convert('L'))
im = array(Image.open('Unequalized.jpg').convert('L'))
#Image.open('plant4.jpg').convert('L').save('inverted.jpg')

im2,cdf = histeq(im)

plt.imshow(im2)
plt.savefig("outputhisto.jpg")

当我使用维基页面直方图均衡化图片运行此代码时,结果如下所示: enter image description here 而不是将图像的对比度适当调整到类似于这个。我做错了什么?

不知道。但当有六个赞时,这似乎并不重要 :) - Nissa
1个回答

5

您确定您只是没有使用错误的色彩地图进行渲染吗?请尝试

plt.imshow(im2, cmap=plt.cm.gray)

或者

plt.imshow(im2, cmap=plt.get_cmap('gray'))

1
太聪明了!哈哈,那很简单。确切的语法是cmap=plt.cm.gray而不是grey。谢谢! - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接