当前位置: 首页 > wzjs >正文

企业网站开发实训总结什么是互联网营销师

企业网站开发实训总结,什么是互联网营销师,跨境电商和外贸的区别,长治网站设计目录 一、直方图 1、计算并显示直方图 2、使用matplotlib方法绘制直方图(不划分小的子区间) 3、使用opencv的方法绘制直方图 (划分16个小的子亮度区间) 4、绘制彩色图像的直方图,将各个通道的直方图值都画出来 二、…

目录

一、直方图

 1、计算并显示直方图

2、使用matplotlib方法绘制直方图(不划分小的子区间)

3、使用opencv的方法绘制直方图 (划分16个小的子亮度区间)

4、绘制彩色图像的直方图,将各个通道的直方图值都画出来

二、直方图均衡化

(1)绘制原图的直方图

 (2)绘制经过直方图均衡化后的图片的直方图

(3)自适应直方图均衡化(局部直方图处理)

三、直方图均衡化的应用

1. 增强图像对比度

2. 提升图像视觉效果

3. 统一图像灰度分布

4. 适用于低对比度图像

总结


一、直方图

直方图:是图像中像素强度分布的图形表达方式,统计各个强度像素值的个数。

直方图的作用:例如视频中。通过标记帧和帧之间显著的边缘和颜色的统计变化,来检测视频中场景的变换。

灰度值在0 - 255范围之间总共 256 个值,可以将我们的范围划分为子部分(称为bins),例如我们可以将这些像素亮度值划分为16个区间值,【0,15】、【16,31】,这两个就是两个亮度区间,它表示会统计亮度值在0到15的所有像素点的个数。

 1、计算并显示直方图

cv2.calcHist(images,channels,mask,histSize,ranges)  计算图像的直方图,用于表示图像中像素灰度级别的分布情况.
images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]

channels: 表示传入的图像通道数。如果输入图像是灰度图它的值就是 [0]。
          如果是彩色图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。

mask: 掩模图像。统计整幅图像的直方图就把它为None。但是如果你想统计图像某一部分的直方图,你就制作一个掩模图像并使用它。

histSize:BINS的数目。也需用中括号括来   (分成多少个区间)
  BINS :上面的直方图显示了每个像素值的像素数,即从0到255。即您需要256个值才能显示上述直方图。
      但是请考虑一下,如果您不需要单独查找所有像素值的像素数,而是在像素值间隔内查找像素数,
      例如,您需要找到介于 0 到 15 之间的像素数,然后是 16 到 31、32到47...、240 到 255。
      您只需要 16 个值来表示直方图。
因此,只需将整个直方图拆分为 16 个子部分,每个子部分的值就是其中所有像素计数的总和。
这每个子部分都称为"BIN"。在第一种情况下,条柱数为256(每个像素一个),而在第二种情况下,它只有16。BINS 在 OpenCV 文档中由术语histSize表示。

ranges: 像素值范围常为 [0 256]

2、使用matplotlib方法绘制直方图(不划分小的子区间)

 这里使用了 numpy 的 ravel 函数,将多维数组拉成一维数组。

img =cv2.imread('../data/310.jpg',cv2.IMREAD_GRAYSCALE)# 转成一维
a=img.ravel()# 使用 matplotlib 的 hist 函数绘制直方图。
plt.hist(a,bins=256)
plt.show()# 参数解释:
# - a:一维数组,即图像的像素值组成的数组。
# - bins=256:指定直方图的条数,即灰度级的数量。

效果:可以看出下面结果中有0~256的亮度值的统计情况 

 

3、使用opencv的方法绘制直方图 (划分16个小的子亮度区间)

#这里的calcHist参数在上面有介绍,这里是对img图片做直方图统计,采用灰度图,即零通道,未设置掩膜,划分为16个区间,亮度值统计[0,256]的值
phone_hist = cv2.calcHist([img],[0],None,[16],[0,256])
plt.plot(phone_hist)#使用calcHist的值绘制曲线图
plt.show()

效果,统计的值为每个亮度区间内属于该亮度值的像素点个数

4、绘制彩色图像的直方图,将各个通道的直方图值都画出来

img=cv2.imread('zl.jpg')
color=('b','g','r')    #设置绘制的折线图每条线的颜色
for i,col in enumerate(color):    #依次遍历三个颜色通道histr=cv2.calcHist([img],[i],None,[256],[0,256])    #依次计算每个通道的直方图值plt.plot(histr,color=col)    #绘制折线图
plt.show()

效果:分别统计了不同颜色通道下的直方图

二、直方图均衡化

直方图均衡化:直方图均衡化是一种图像增强技术,它可以通过增加图像的对比度和亮度来改善图像的质量。直方图均衡化通过将图像的像素值分布均匀化来实现这一目标。
在Python OpenCV中,可以使用cv2.equalizeHist()函数来实现直方图均衡化。该函数将输入图像转换为灰度图像,并将其像素值分布均匀化,从而增强图像的对比度和亮度。下面是将不均衡的直方图均衡化之后的结果。

(1)绘制原图的直方图

woman = cv2.imread('ja.jpg',cv2.IMREAD_GRAYSCALE)
# # # phone_hist = cv2.calcHist([phone],[0],None,[256],[0,256])
plt.hist(woman.ravel(), bins=256)#numpy中的ravel将数组多维度拉成一维数组
plt.show()

 可以看出图像的亮度值集中在50左右

 

 (2)绘制经过直方图均衡化后的图片的直方图

phone_equalize = cv2.equalizeHist(woman)
plt.hist(phone_equalize.ravel(), bins=256)#numpy中的ravel将数组多维度拉成一维数组
plt.show()

与原图对比,直方图均衡化是对全局做均衡化,这使亮度值很大的像素点增多了,表现在图像上就是图像整体变亮。 

 

(3)自适应直方图均衡化(局部直方图处理)

普通直方图均衡化(HE)通过全局灰度变换增强对比度,但对噪声敏感且可能过度放大局部噪声(如暗部噪声)。自适应直方图均衡化(AHE) 将图像划分为多个子块(tiles),对每个子块独立进行直方图均衡化,从而实现局部对比度增强,避免全局均衡化的缺陷。

改进版:限制对比度的自适应直方图均衡化(CLAHE, Contrast-Limited AHE):在 AHE 基础上,通过设定灰度值裁剪阈值(clip limit),防止子块内噪声或纹理被过度增强,是实际应用中更常用的方法。

主要优点

  • 局部对比度增强:针对不同区域的局部特征调整对比度,适合光照不均或局部细节丰富的图像(如医学影像、卫星图像)。
  • 抑制噪声放大:通过裁剪阈值(clip limit)限制子块内直方图的峰值,避免噪声或纹理被过度增强。
  • 保留细节与自然感:相比全局均衡化,CLAHE 在增强局部细节的同时,减少过增强导致的伪影(如棋盘效应)。

函数:cv2.createCLAHE([, clipLimit[, tileGridSize]]) 

参数说明:
clipLimit:设定子块内直方图均衡化时的灰度值裁剪阈值,单位为 “像素数 / 面积”(即每个灰度级允许的最大像素数密度)。可选项,默认值 8
titleGridSize:设定子块的大小(行数 × 列数),单位为像素。可选项,默认值 (8,8)。
  • titleGridSize取值影响
    • 较小尺寸(如 4x4):局部细节增强更精细,但计算量增加,可能引入棋盘效应(需通过插值缓解)。
    • 较大尺寸(如 16x16):局部处理更粗糙,适合全局对比度增强需求,减少分块边界的影响。

创建一个自适应直方图对像,并将上面的woman这张图像传入

clahe = cv2.createCLAHE(clipLimit=1, tileGridSize=(16,16))#通过类创建了一个局部均衡化对象
phone_clahe = clahe.apply(woman)
plt.hist(phone_clahe.ravel(), bins=256)#numpy中的ravel将数组多维度拉成一维数组
plt.show()

自适应直方图均衡化则是划分子块均衡化会减少分块边界的影响。 

 使用hstack()函数水平堆叠上面的三张图片用于对比,直方图均衡化与自适应直方图均衡化的区别

  • hstackhconcat):水平堆叠,沿列方向扩展。
  • vstackvconcat):垂直堆叠,沿行方向扩展(对应函数为 np.vstack 和 cv2.vconcat)。
res = np.hstack((woman,phone_equalize,phone_clahe))
cv2.imshow('phone_equalize',res)
cv2.waitKey(0)

 从左到右依次是原图、直方图均衡化、自适应直方图均衡化

三、直方图均衡化的应用

1. 增强图像对比度

  • 原理:将图像中原本集中的灰度范围 “拉伸” 到更宽的动态范围,使图像中不同灰度级的像素分布更均匀(直方图趋于平坦)。
  • 效果:让原本对比度低、细节模糊的图像(如暗部过暗或亮部过亮)变得更清晰,暗部和亮部的细节更容易分辨。
  • 示例:在医学影像(如 X 光片)中,均衡化可增强组织间的对比度,便于医生观察病灶。

2. 提升图像视觉效果

  • 通过均衡化,图像中原本难以区分的灰度区域(如相近的明暗过渡)会变得层次分明,整体视觉效果更自然。
  • 例如:修复老照片时,均衡化可改善因曝光不足或过度导致的细节丢失。

3. 统一图像灰度分布

  • 将图像的灰度直方图调整为近似均匀分布,使像素灰度值覆盖更广泛的范围。
  • 这为后续的图像处理任务(如图像分割、特征提取、模式识别等)提供更优质的输入,提升算法效果。

4. 适用于低对比度图像

  • 特别适合处理因光照不均、传感器噪声等导致对比度低下的图像(如阴天拍摄的照片、卫星遥感图像),通过均衡化恢复图像细节。

总结

直方图均衡化通过重新分配像素的灰度值,将图像的动态范围最大化利用,使图像从 “对比度不足” 转变为 “层次丰富”,是图像处理中基础且高效的增强手段。其本质是通过数学变换(累积分布函数,CDF)实现灰度的非线性映射,从而优化视觉效果和后续处理的可行性。

http://www.dtcms.com/wzjs/383702.html

相关文章:

  • 广州建站哪个济南兴田德润实惠吗网站seo哪家好
  • 做网站先做前台还是后台品牌咨询
  • 推广网站怎样做广州seo服务
  • 怎么给公司做微网站宣传推广的形式有哪些
  • 有没有专门教做扯面的网站一个企业该如何进行网络营销
  • 湖南省住房和建设厅网站高德北斗导航
  • 甘肃温室大棚建设网站网站联盟广告
  • 哪个网站可以做照片分享福建百度代理公司
  • 深圳网站设计网站建设哪个好如何做网站平台
  • 小程序 企业网站站长之家的seo综合查询工具
  • 做美国直邮物流网站seo推广培训课程
  • 海珠区做网站的公司百度推广seo怎么学
  • 课程网站建设ppt模板制作网站需要什么技术
  • 网站免费正能量直接进入检察官免费推广软件工具
  • 武汉市人民政府电话优化大师客服
  • 软件系统定制开发百度seo词条优化
  • app门户网站百度竞价代理商
  • wordpress软件站站长网站优化公司
  • 静态网站开发课程相关新闻营销策划经典案例
  • 个人兼职网站建设html网页制作代码
  • 网站不显示域名解析错误怎么办网站seo搜索
  • 武汉网站建设云搜123哪家好互联网运营推广公司
  • 初中生怎样做网站赚钱google谷歌搜索引擎入口
  • 哪个网站可以做结婚证电商运营自学全套教程
  • 做网站租服务器多少钱黑帽seo培训网
  • 架设网站软文推广网
  • 开业时网站可以做哪些活动长尾关键词搜索
  • 淘宝客网站做好了该怎么做哈尔滨最新疫情
  • 网站备案被拒绝汽车行业网站建设
  • 做一个交友网站怎样做需要多少资金百度app登录