直方图均衡化的原理及实现途径_请简述图像直方图均衡的原理

直方图均衡化的原理及实现途径_请简述图像直方图均衡的原理直方图均衡化的原理及实现一、直方图1.1直方图的概念在图像处理中,经常用到直方图,如颜色直方图、灰度直方图等。图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的率。如下图所示1.2直方图的性质①直方图反映了图像中的灰度分布规律。它描述每个灰度级具有的像素个数,但不包含这些像素在图像中的位置信息。图像直方图不关心像

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

直方图均衡化的原理及实现

一、直方图

1.1 直方图的概念

在图像处理中, 经常用到直方图, 如颜色直方图、 灰度直方图等。

图像的灰度直方图就描述了图像中灰度分布情况, 能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数, 描述的是图像中具有该灰度级的像素的个数: 其中, 横坐标是灰度级, 纵坐标是该灰度级出现的率。如下图所示

在这里插入图片描述
1.2 直方图的性质

① 直方图反映了图像中的灰度分布规律。 它描述每个灰度级具有的像素个数, 但不包含这些像素在图像中的位置信息。 图像直方图不关心像素所处的空间位置, 因此不受图像旋转和平移变化的影响, 可以作为图像的特征。

② 任何一幅特定的图像都有唯一的直方图与之对应, 但不同的图像可以有相同的直方图。

③如果一幅图像有两个不相连的区域组成, 并且每个区域的直方图已知, 则整幅图像的直方图是该两个区域的直方图之和。

1.3 直方图的应用

下图是四种常见的直方图的灰度分布规律
在这里插入图片描述
如果需要将上图中灰度偏暗、偏亮或偏集中的直方图调整为灰度均匀分布的直方图,就需要用到直方图均衡化算法。

二、直方图均衡化

2.1 直方图均衡化的概念

直方图均衡化(Histogram Equalization)是一种增强图像对比度(Image Contrast)的方法,其主要思想是将一副图像的直方图分布通过累积分布函数变成近似均匀分布,从而增强图像的对比度。为了将原图像的亮度范围进行扩展, 需要一个映射函数, 将原图像的像素值均衡映射到新直方图中, 这个映射函数有两个条件:

①不能打乱原有的像素值大小顺序, 映射后亮、 暗的大小关系不能改变;

② 映射后必须在原有的范围内,即像素映射函数的值域应在0和255之间;

综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。

2.2 累积分布函数的数学原理

因为图像由一个个像素点组成,所以图像直方图均衡化是通过离散形式的累积分布函数求解的,直方图均衡化过程中,映射方法是:
在这里插入图片描述
其中,s_k指当前灰度级经过累积分布函数映射后的值,n是图像中像素的总和,n_j是当前灰度级的像素个数,L是图像中的灰度级总数。

(直方图均衡化数学原理,详细查看:> https://blog.csdn.net/superjunenaruto/article/details/52431941)

2.3 直方图均衡化的步骤

①依次扫描原始灰度图像的每一个像素, 计算出图像的灰度直方图;

②计算灰度直方图的累积分布函数;

③根据累积分布函数和直方图均衡化原理得到输入与输出之间的映射关系。

④最后根据映射关系得到结果进行图像变换

2.4 参考下面这个例子可以更直观的理解直方图均衡化的原理及过程
在这里插入图片描述
三、代码块及实现效果

3.1 代码块

import cv2
import numpy as np
from matplotlib import pyplot as plt

''' calcHist-计算图像直方图 函数原型:calcHist(images,channels,mask,histSize,ranges,hist=None,accumulate=None) images:图像矩阵,例如:[image] channels:通道数,例如:0 mask:掩膜,一般为:None histSize:直方图大小,一般等于灰度级数 ranges:横轴范围 '''

# 获取灰度图像
img = cv2.imread("D:\pycharm\exercise\spring festival holiday\lenna.PNG", 0)

# 灰度图像的直方图
hist = cv2.calcHist([img],[0],None,[256],[0,256])
plt.figure()#新建一个图像
plt.title("Grayscale Histogram")
plt.xlabel("Bins")#X轴标签
plt.ylabel("# of Pixels")#Y轴标签
plt.plot(hist)
plt.xlim([0,256])#设置x坐标轴范围
plt.show()


''' equalizeHist—直方图均衡化 函数原型: equalizeHist(src, dst=None) src:图像矩阵(单通道图像) dst:默认即可 '''
# 灰度图像直方图均衡化
dst = cv2.equalizeHist(img)

# 直方图
hist = cv2.calcHist([dst],[0],None,[256],[0,256])

plt.figure()
plt.hist(dst.ravel(), 256)
plt.show()

cv2.imshow("Histogram Equalization",np.hstack([img, dst]))
cv2.waitKey(0)

3.2 处理效果

源图直方图
在这里插入图片描述
均衡化处理后的直方图
在这里插入图片描述
源图与均衡化处理后的对比效果
在这里插入图片描述
3.3 彩色直方图均衡化代码块

# 彩色图像直方图均衡化
img = cv2.imread("lenna.png", 1)
cv2.imshow("src", img)

# 彩色图像均衡化,需要分解通道 对每一个通道均衡化
(b, g, r) = cv2.split(img)
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
# 合并每一个通道
result = cv2.merge((bH, gH, rH))
cv2.imshow("dst_rgb", result)

cv2.waitKey(0)

四、参考资料:

1、直方图均衡化原理:https://www.cnblogs.com/tianyalu/p/5687782.html

2、直方图均衡化的数学原理:https://blog.csdn.net/superjunenaruto/article/details/52431941

3、直方图均衡化方面的知识和方法:https://zhuanlan.zhihu.com/p/44918476

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179232.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch

    java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch对于中间操作和终端操作的定义,请看《JAVA8stream接口中间操作和终端操作》,这篇主要讲述的是stream的count,anyMatch,allMatch,noneMatch操作,我们先看下函数的定义longcount();booleananyMatch(Predicate<?superT>predicate);…

    2022年10月9日
    3
  • 八数码问题引发的思考

    八数码问题引发的思考学习人工智能这门课历经坎坷,拿到习题集,第一道就开口脆,原题如下:翻阅AIMA教材无思路,Berlekamp等人的文献不知如何找寻,冥想整日无头绪,遂四方觅得习题集参考答案,还是英文版:Definition:Thegoalstatehasthenumbersinacertainorder,whichwewillmeasureasstartingatt…

    2022年7月26日
    8
  • 截止失真放大电路_技术分享:音频功放失真及常见改善方法「建议收藏」

    截止失真放大电路_技术分享:音频功放失真及常见改善方法「建议收藏」音频功放失真是指重放音频信号波形畸变的现象,通常分为电失真和声失真两大类。电失真就是信号电流在放大过程中产生了失真,而声失真是信号电流通过扬声器,扬声器未能如实地重现声音。无论是电失真还是声失真,按失真的性质来分,主要有频率失真和非线性失真两种。其中,引起信号各频率分量间幅度和相位的关系变化,仅出现波形失真,不增加新的频率成分,属于线性失真。而谐波失真(THD)、互调失真(IMD)等可产生新的频率…

    2022年5月20日
    53
  • 五种聚类方法_聚类分析是一种降维方法吗

    五种聚类方法_聚类分析是一种降维方法吗本文为雷锋字幕组编译的技术博客,原标题The5ClusteringAlgorithmsDataScientistsNeedtoKnow,作者为GeorgeSeif。聚类是一种关于数据点分组的机器学习技术。给出一组数据点,我们可以使用聚类算法将每个数据点分类到特定的组中。理论上,同一组中的数据点应具有相似的属性或特征,而不同组中的数据点应具有相当不同的属性或特征(即类内差异小,…

    2022年10月20日
    4
  • goland 激活码【最新永久激活】

    (goland 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
    759
  • 最全的数据查询网站「建议收藏」

    最全的数据查询网站「建议收藏」1、国家数据——主要用户:社会情况研究人员国家统计局开设网站,公布我国各个领域的宏观经济情况,权威度高2、中国裁判文书网——主要用户:法律从业/学习/爱好者中国最高人民法院开设,权威可信,可用于查询国内裁判文书,可作数据统计来源3、中国互联网数据平台——主要用户:互联网研究人员经国家主管部门批准组建的管理和服务机构,经常发布一些有价值的互联网信息报告4、中国信通院——主要用户:互…

    2022年6月17日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号