Opencv进阶篇---图像直方图

1、直方图:对灰度图像中的各像素值得个数的统计
在这里插入图片描述
cv.calcHist(sec,channels,mask,histSize,ranges)
src:原图像格式为uint8或float32,当传入图函数时应用中括号[]括起来,例如[src]
channels:同样用中括号括起来,如果传入图像是灰度图,它的值就是[0],如果是彩色图,则传入[0][1][2]分别对应着BGR
mask:掩模图像,统计整副图像的直方图将其置为None,如果只统计图像的一部分直方图时需要制作一个掩模
histSize:BIN的数目,也应该用中括号括起来
ranges:像素范围常为[0,256]
灰度图像直方图:
在这里插入图片描述

src=cv.imread("E:\OpenCVTests\Samples\sample\The Eighth notebook\cat.jpg",0)#0表示灰度图像
hist=cv.calcHist([src],[0],None,[256],[0,256])
plt.hist(src.ravel(),256)
plt.show()

**彩色图像二值图:**分通道展示
在这里插入图片描述

src=cv.imread("E:\OpenCVTests\Samples\sample\cat.jpg")
color=['b','g','r']
for i,col in enumerate(color):
    histr=cv.calcHist([src],[i],None,[256],[0,255])
    plt.plot(hist,color=col)
    plt.xlim([0,256])

**2、**掩码(mask)操作:相当于对图像进行截取,掩码部分为255,其它部分为黑色,与原始图形结合后,就只显示图像与掩码重合的部分
分别为原图、掩码图、掩码图应用于原图之后、掩模图部分的直方图
在这里插入图片描述

mask=np.zeros(src.shape[:2],np.uint8)#第一个参数,刚好创建与原始图像一样大小的形状,所以为src.shape[:2];uint8,无符号整型,刚好表示0-255的范围
mask[100:300,100:400]=255#默认要求,指定mask在图像上的范围,mask为白色,其它部分为黑色
histr = cv.calcHist([src], [i], mask, [256], [0, 255])#将mask应用到原图上,则只会显示mask区域对应的直方图

3、cv.equalizeHist()直方图均衡化
原始图像直方图结果:
在这里插入图片描述
预期直方图结果:
在这里插入图片描述
处理方法:统计各个灰度值点的个数------>求取每个像素点出现的概率------>计算出累积概率------>用累积概率与总的像素点范围相乘------>结果为新的灰度值,详见下表
在这里插入图片描述

def equalHistDemo(image):#直方图均衡化作用:增强图像的对比度,黑色背景大米的例子----自适应均衡化
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)#直方图均衡化必须是针对灰度级的图像的,因此需转化图像的色彩空间
    dst=cv.equalizeHist(gray)
    cv.imshow("equalize",dst)

4、cv.createCLAHE()自适应直方图均衡化:对图像进行分块均衡化,以保留图像各个部分各自的特征
如下图,图像各个区域的差值明显,不适合做统一的均衡化
在这里插入图片描述
结果:
在这里插入图片描述

def claheDemo(image):#直方图部分均衡化,即对均衡化的参数可调节----自定义均衡化
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    clahe=cv.createCLAHE(clipLimit=3.0,tileGridSize=(8,8))#clipLimit该参数控制均衡化的程度
    dst=clahe.apply(gray)
    cv.imshow("clahe",dst)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值