python直方图每个bin中的值_python数字图像处理(9):直方图与均衡化

更新时间:2023-07-20 18:00:13 阅读: 评论:0

python直⽅图每个bin中的值_python数字图像处理(9):直
癣不能吃什么东西⽅图与均衡化
我们的美好时光在图像处理中,直⽅图是⾮常重要,也是⾮常有⽤的⼀个处理要素。
在skimage库中对直⽅图的处理,是放在exposure这个模块中。
1、计算直⽅图
函数:posure.histogram(image, nbins=256)
在numpy包中,也提供了⼀个计算直⽅图的函数histogram(),两者⼤同⼩义。
返回⼀个tuple(hist, bins_center), 前⼀个数组是直⽅图的统计量,后⼀个数组是每个bin的中间值
importnumpy as npfrom skimage importexposure,data
image=data.camera()*1.0hist1=np.histogram(image, bins=2) #⽤numpy包计算直⽅图
hist2=exposure.histogram(image, nbins=2) #⽤skimage计算直⽅图
print(hist1)print(hist2)
输出:
(array([107432, 154712], dtype=int64), array([ 0. , 127.5, 255. ]))
(array([107432, 154712], dtype=int64), array([ 63.75, 191.25]))
分成两个bin,每个bin的统计量是⼀样的,但numpy返回的是每个bin的两端的范围值,⽽skimage返回的是每个bin的中间值
2、绘制直⽅图
绘图都可以调⽤matplotlib.pyplot库来进⾏,其中的hist函数可以直接绘制直⽅图。
调⽤⽅式:
n, bins, patches = plt.hist(arr, bins=10, normed=0, facecolor='black', edgecolor='black',alpha=1,histtype='bar')
hist的参数⾮常多,但常⽤的就这六个,只有第⼀个是必须的,后⾯四个可选
arr: 需要计算直⽅图的⼀维数组
电脑扬声器下载安装
bins: 直⽅图的柱数,可选项,默认为10
normed: 是否将得到的直⽅图向量归⼀化。默认为0薜仁贵
facecolor: 直⽅图颜⾊
edgecolor: 直⽅图边框颜⾊
alpha: 透明度
histtype: 直⽅图类型,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’
返回值 :
n: 直⽅图向量,是否归⼀化由参数normed设定
bins: 返回各个bin的区间范围
patches: 返回每个bin⾥⾯包含的数据,是⼀个list
from skimage importdataimportmatplotlib.pyplot as plt
img=data.camera()
牢不可破的意思
途字组词plt.figure("hist")
arr=img.flatten()
n, bins, patches= plt.hist(arr, bins=256, normed=1,edgecolor='None',facecolor='red')
plt.show()
其中的flatten()函数是numpy包⾥⾯的,⽤于将⼆维数组序列化成⼀维数组。
是按⾏序列,如56名族
mat=[[1 2 3
4 5 6]]
经过 mat.flatten()后,就变成了
mat=[1 2 3 4 5 6]
3、彩⾊图⽚三通道直⽅图
⼀般来说直⽅图都是征对灰度图的,如果要画rgb图像的三通道直⽅图,实际上就是三个直⽅图的叠加。from skimage importdataimportmatplotlib.pyplot as plt
img=data.lena()
ar=img[:,:,0].flatten()
plt.hist(ar, bins=256, normed=1,facecolor='r',edgecolor='r',hold=1)
ag=img[:,:,1].flatten()
plt.hist(ag, bins=256, normed=1, facecolor='g',edgecolor='g',hold=1)
ab=img[:,:,2].flatten()
plt.hist(ab, bins=256, normed=1, facecolor='b',edgecolor='b')
plt.show()
其中,加⼀个参数hold=1,表⽰可以叠加
4、直⽅图均衡化
如果⼀副图像的像素占有很多的灰度级⽽且分布均匀,那么这样的图像往往有⾼对⽐度和多变的灰度⾊调。直⽅图均衡化就是⼀种能仅靠输⼊图像直⽅图信息⾃动达到这种效果的变换函数。它的基本思想是对图像中像素个数多的灰度级进⾏展宽,⽽对图像中像素个数少的灰度进⾏压缩,从⽽扩展取值
的动态范围,提⾼了对⽐度和灰度⾊调的变化,使图像更加清晰。
from skimage importdata,exposureimportmatplotlib.pyplot as plt
()
plt.figure("hist",figsize=(8,8))
arr=img.flatten()
plt.subplot(221)
plt.imshow(ay)#原始图像
plt.subplot(222)
plt.hist(arr, bins=256, normed=1,edgecolor='None',facecolor='red') #原始图像直⽅图
img1=exposure.equalize_hist(img)
arr1=img1.flatten()
plt.subplot(223)
plt.imshow(ay)#均衡化图像
浪矢杂货店plt.subplot(224)
plt.hist(arr1, bins=256, normed=1,edgecolor='None',facecolor='red') #均衡化直⽅图
plt.show()

本文发布于:2023-07-20 18:00:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1107318.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   像素   灰度级   灰度   途字   是否   个数   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图