当前位置:首页 » 操作系统 » 直方图均衡化算法

直方图均衡化算法

发布时间: 2023-06-08 20:38:41

⑴ 说明直方图匹配与直方图均衡两种处理算法原理的区别.考虑在什么情况

首先需要说明的是,如果你说的是一道完整的题目,则这道题目没有唯一解,因为题目中没有说明原始图像的灰度级数(比如原始图像是16个灰度级的,或者是32个灰度级的,等等)。为了给你提供一个解题思路,现在人为假设原始图像是16个灰度级的,其它灰度级的解法类似。1、图像的灰度直方图求法为:(1)先计算图像中各个灰度级的出现频率,用h(i)表示灰度级i的出现频率,其值等于灰度级出现次数/图像像素个数:h(0)=2/16h(1)=1/16h(2)=3/16h(3)=2/16h(4)=0/16h(5)=1/16h(6)=4/16h(7)=1/16h(8)=1/16h(9)=1/16h(10)=h(11)=h(12)=h(13)=h(14)=h(15)=0/16。然后以灰度级i为横轴,出现频率h(i)为纵轴即可绘制出图像对应的直方图。(2)图像进行直方图均衡化处理的过程为:先计算累积分布,用r(i)表示灰度级i的累积分布:r(0)=h(0)=2/16r(1)=r(0)+h(1)=2/16+1/16=3/16r(2)=r(1)+h(2)=3/16+3/16=6/16r(3)=r(2)+h(3)=6/16+2/16=8/16r(4)=r(3)+h(4)=8/16+0/16=8/16r(5)=r(4)+h(5)=8/16+1/16=9/16r(6)=r(5)+h(6)=9/16+4/16=13/16r(7)=r(6)+h(7)=13/16+1/16=14/16r(8)=r(7)+h(8)=14/16+1/16=15/16r(9)=r(8)+h(9)=15/16+1/16=16/16=1r(10)=r(11)=r(12)=r(13)=r(14)=r(15)=1将累积分布进行量化(量化时需要用到原始图像的灰度级数,这也是为什么前面需要说明的原因),量化后的灰度级用rq(i)表示,量化公式为rq(i)=ROUND(r(i)*15),(说明:量化公式中的15等于原始图像灰度级数减1),可得:rq(0)=ROUND(r(0)*15)=2rq(1)=ROUND(r(1)*15)=3rq(2)=ROUND(r(2)*15)=6rq(3)=ROUND(r(3)*15)=8rq(4)=ROUND(r(4)*15)=8rq(5)=ROUND(r(5)*15)=8rq(6)=ROUND(r(6)*15)=12rq(7)=ROUND(r(7)*15)=13rq(8)=ROUND(r(8)*15)=14rq(9)=ROUND(r(9)*15)=15rq(10)=ROUND(r(10)*15)=15rq(11)=ROUND(r(11)*15)=15rq(12)=ROUND(r(12)*15)=15rq(13)=ROUND(r(13)*15)=15rq(14)=ROUND(r(14)*15)=15rq(15)=ROUND(r(15)*15)=15因此,原始图像中的灰度级和均化后图像中的灰度级之间的对应关系为:0->21->32->63->84->85->86->127->138->149->1510->1511->1512->1513->1514->1515->15将原始图像中对应的灰度值安装上述对应关系替换成相应的灰度值,即可得到均化图像,结果如下:38138612212146128156122(在电脑上直接做的,仅供参考。ROUND(.)表示四舍五入。)

⑵ 直方图均衡化

想象一下,如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高。但是一副高质量的图像的像素值分布应该很广泛。所以你应该把它的直方图做一个横向拉伸(如下图),这就是直方图均衡化要做的事情。通常情况下,这种操作会改善图像的对比度。

这种方法通常用来增加许多图像的全局 对比度 ,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法, 亮度 可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来 X光 图像中更好的 骨骼 结构显示以及曝光过度或者曝光不足 照片 中更好的细节。这种方法的一个主要优势是它是一个相当直观的技术并且是 可逆 操作,如果已知均衡化 函数 ,那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景 噪声 的对比度并且降低有用 信号 的对比度。

我们先来看看相应的直方图和累积直方图,然后使用 OpenCV 进行直方图均衡化。

我们可以看出来直方图大部分在灰度值较高的部分,而且分布很集中。而我们希望直方图的分布比较分散,能够涵盖整个 x 轴。所以,我们就需要一个变换函数帮助我们把现在的直方图映射到一个广泛分布的直方图中,这就是直方图均衡化。

**限制对比度自适应性直方图均衡化 CLAHE **

在上边做的直方图均衡化会改变整个图像的对比度,但是在很多情况下,这样做的效果并不好。的确在进行完直方图均衡化之后,图片背景的对比度被改变了。但是你再对比一下两幅图像中雕像的面图,由于太亮我们丢失了很多信息。

原理:

为了解决这个问题,我们需要使用自适应的直方图均衡化 CLAHE (Contrast Limited Adaptive Histogram Equalization)。这种情况下,整幅图像会被分成很多小块,这些小块被称为“tiles”(在 OpenCV 中 tileGridSize默认是 8x8),然后再对每一个小块分别进行直方图均衡化(跟前面类似)。所以在每一个的区域中,直方图会集中在某一个小的区域中(除非有噪声干扰)。如果有噪声的话,噪声会被放大。为了避免这种情况的出现,要使用对比度限制。

CLAHE中,每一个像素邻域都要进行对比度限制,从而得到对应的变换函数,被用来降低AHE中噪声的增强,这主要是通过限制AHE中的对比度增强来实现的。像素周围邻域噪声的增强主要是由变换函数的斜率造成的,由于像素邻域的噪声与邻域的CDF成正比,因此也与邻域直方图在该中心像素位置的值成正比,CLAHE之所以能够限制对比度,是因为它在计算邻域的CDF之前在指定阈值处对直方图进行了修剪,如下图所示,这一做法不仅限制了CDF的斜率,也限制了变换函数的斜率,其中对直方图进行切割所使用的阈值,被称作修剪限制度(clip limit),这个参数不仅依赖于直方图的归一化,而且依赖于像素邻域的size大小,通常设为3到4之间。

对于每个小块来说,如果直方图中的 bin 超过对比度的上限的话,就把其中的像素点均匀分散到其他 bins 中,然后在进行直方图均衡化。最后,为了去除每一个小块之间“人造的”(由于算法造成)边界,再使用双线性差值,与原图做图层滤色混合操作(可选)。

实现:

参考文献:
网址: 直方图均衡化
Adaptive_histogram_equalization
书籍:《数字图像处理》《OpenCV-Python 中文教程》

热点内容
张艺谋我们一家访问人 发布:2024-05-05 12:38:05 浏览:111
美版安卓系统怎么安装 发布:2024-05-05 12:37:18 浏览:920
qq邮箱缓存地址 发布:2024-05-05 12:37:16 浏览:986
电位算法 发布:2024-05-05 12:36:01 浏览:727
我的世界清风斗罗大陆服务器地址 发布:2024-05-05 12:35:50 浏览:453
dell服务器如何进入bios 发布:2024-05-05 12:34:26 浏览:330
在线名片制作源码 发布:2024-05-05 12:29:27 浏览:447
阴阳师按键脚本 发布:2024-05-05 12:00:33 浏览:760
魔兽查脚本 发布:2024-05-05 11:54:37 浏览:39
sqlserver执行时间 发布:2024-05-05 11:50:31 浏览:649