python– 局部直方图均衡

python– 局部直方图均衡,第1张

概述我试图在python中使用一些图像分析(我必须使用python).我需要进行全局和局部直方图均衡化.全局版本运行良好,但本地版本使用7x7足迹,结果非常差.这是全球版本: import matplotlib.pyplot as plt import matplotlib.image as mpimg from scipy import nd

我试图在python中使用一些图像分析(我必须使用python).我需要进行全局和局部直方图均衡化.全局版本运行良好,但本地版本使用7×7足迹,结果非常差.

这是全球版本:

   import matplotlib.pyplot as plt   import matplotlib.image as mpimg   from scipy  import ndimage,misc   import scipy.io as io   from scipy.misc import toimage   import numpy as n   import pylab as py   from numpy import *   mat = io.loadmat('image.mat')   image=mat['imageD']   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 = 0.6 * cdf / cdf[-1] #normalize     #use linear interpolation of cdf to find new pixel values     im2 = interp(im.flatten(),bins[:-1],cdf)     #returns image and cumulative histogram used to map     return im2.reshape(im.shape),cdf   im=image   im2,cdf = histeq(im)

要做本地版本,我试图使用像这样的通用过滤器(使用与之前加载的相同的图像):

   def func(x):     cdf=[]     xhist,bins=histogram(x,256,normed=True)     cdf = xhist.cumsum()      cdf = 0.6 * cdf / cdf[-1]      im_out = interp(x,cdf)     mIDval=interp(x[24],cdf)     return mIDval print im.shape im3=ndimage.filters.generic_filter(im,func,size=im.shape,footprint=n.ones((7,7)))

有没有人有任何建议/想法为什么第二个版本不起作用?我真的被卡住了,任何评论都会非常感激!提前致谢!最佳答案您可以使用scikit-image库执行全局和局部直方图均衡.从链接中骄傲地窃取,下面是片段.均衡是使用磁盘形内核(或覆盖区)完成的,但您可以通过设置kernel = np.ones((N,M))将其更改为方形.

import numpy as npimport matplotlibimport matplotlib.pyplot as pltfrom skimage import datafrom skimage.util import img_as_ubytefrom skimage import exposureimport skimage.morphology as morpfrom skimage.filters import rank# Original imageimg = img_as_ubyte(data.moon())# Global equalizeimg_global = exposure.equalize_hist(img)# Local Equalization,disk shape kernel# Better contrast with disk kernel but Could be differentkernel = morp.disk(30)img_local = rank.equalize(img,selem=kernel)fig,(ax_img,ax_global,ax_local) = plt.subplots(1,3)ax_img.imshow(img,cmap=plt.cm.gray)ax_img.set_Title('Low contrast image')ax_img.set_axis_off()ax_global.imshow(img_global,cmap=plt.cm.gray)ax_global.set_Title('Global equalization')ax_global.set_axis_off()ax_local.imshow(img_local,cmap=plt.cm.gray)ax_local.set_Title('Local equalization')ax_local.set_axis_off()plt.show()
总结

以上是内存溢出为你收集整理的python – 局部直方图均衡全部内容,希望文章能够帮你解决python – 局部直方图均衡所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存