Python中的直方图均衡化

5 投票
1 回答
9431 浏览
提问于 2025-04-17 15:26

我有一个处理照片直方图均衡化的程序:

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

但是它没有像这张图那样,正确地调整图像的对比度。我哪里做错了呢?

1 个回答

5

你确定你不是在用错误的颜色映射来渲染吗?试试这个

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

或者

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

撰写回答