专栏首页智能算法机器视觉算法(第13期)----直方图处理中的两大神器!

机器视觉算法(第13期)----直方图处理中的两大神器!

上期我们一起揭开了图像处理中的卷积操作的疑惑, 机器视觉算法(第12期)----图像处理中的卷积操作真的是在做卷积吗? 今天,我们一起看下直方图处理中的两大神器:直方图均衡与直方图匹配。

这两个东西,自从学过之后,一直很少用,直到最近在对图像进行对比度拉伸的时候,发现这个玩意儿是那么的爽。

首先,撇除详细原理,先两句话把直方图均衡和直方图匹配说明下。 其实直方图均衡和直方图匹配跟那些log变化,幂指变换,γ变化本质差不多,区别就在于这个变换函数的不同。

直方图均衡:把图像像素的灰度值根据自身直方图的累积分布函数,进行灰度值变换。 直方图匹配:把图像像素的灰度值根据模板直方图的累积分布函数,进行灰度值变换。

在进行具体操作之前,先说下啥是直方图的累积分布函数? 累积分布函数其实就是概率分布函数的积分。在直方图上就体现为小于灰度值L的像素个数所占的比例,这个比例最大值为1,最小值为0。

直方图均衡

那么直方图均衡具体怎么操作呢?这里不去整什么公式说明(想看的话,可以找本图像处理书籍翻翻),用一个例子进行说明:

假如,我们有一张64x64大小,3bit的图像(8个灰度级),该图像的灰度分布以及直方图值如下:

其中r值为灰度级,n为像素个数,p为占比即概率值。接下来怎么做均衡呢? 既然是按照直方图的累积分布函数进行变换,那么就需要对直方图概率密度函数做累积,如下公式,其中L-1为最大灰度值,p的求和为累积分布函数:

具体计算如下:

依次计算结果取整如下:

其中s0就是将灰度值r0进行均衡后的灰度值,依次类推。然后,我们看下均衡前后的直方图以及变换函数,如下,其中左图为原图直方图,中图为变换函数,即左图的累积分布函数,有图为均衡后的直方图:

因为直方图是概率密度函数的近似,而且在处理中不允许造成新的灰度级,所以在实际的直方图均衡应用中,很少见到完美平坦的直方图。从上面直方图也可以看到,均衡后并没那么平坦,但是确实具有展开输入图像直方图的趋势,均衡后的图像的灰度级跨越更宽灰度级范围,最终结果是增强了对比度。 最后来看一组实际图片效果(图片来源于冈萨雷斯数字图像处理),其中,左侧图像为原图,中间为均衡后的图像,右侧为均衡后的直方图,效果杠杠的:

直方图匹配

懂了直方图均衡,那么直方图匹配就没那么难理解了,本质上就是把原图像的累积分布函数换成模板图像的累积分布函数。但是具体实现来说,多了一些伎俩。这里,我们还是采用一个例子进行说明,还采用上面的64x64的那个图,其直方图如下图中的左上图,右上图为需要匹配的直方图,左下图为右上图得到的变换函数,右下图为将左上图进行直方图匹配后的结果。

具体实现如下: 首先第一步,对其本身原图像进行做一个直方图均衡,如下:

第二步,对模板图像进行直方图均衡,得到结果如下:

接下来第三步就是将s映射到z上的一个就近映射变换,如下图:

其中rk代表原图像的灰度值,sk为原图像均衡后的值,G(z)为目标图像均衡后的值,Zq为目标图像的灰度值。这样根据sk和Gz的就近映射,就将原图像的直方图匹配到了模板图像的直方图上。

其实直方图匹配对图像的效果是根据要匹配的直方图而定的,不是说一定能拉伸对比度,能增加亮度啥的,主要是看要匹配的直方图是一个什么样的效果。大多数时候,直方图匹配都是一个试凑的过程。一个可用的指导路线就是用手边的问题进行学习,一般来说,并没有规定直方图的规则,对于任何一个给定的增强任务都必须借助于实际分析。

好了,至此,我们一起揭开了直方图处理中的两大神器,希望对我们的学习有所帮助,感觉对您有帮助,就点个赞吧。

本文分享自微信公众号 - 智能算法(AI_Algorithm),作者:左右Shawn

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端面试中的常见的算法问题

    作者:Jack Pu 链接:www.jackpu.com/qian-duan-mian-shi-zhong-de-chang-jian-de-suan-fa-w...

    智能算法
  • 深度学习入门之工具综述

    原文:Getting Started with Deep Learning: A REVIEW OF AVAILABLE TOOLS 作者: MATTHEW R...

    智能算法
  • 在大数据时代 每家公司都要有大数据部门吗?

    很多大数据创业公司提供的服务,似乎企业自己也能实现,那何不干脆自己做?结论也不能下得太武断。 如果这个问题换做是:在电气时代,每家公司都要有个发电...

    智能算法
  • 深入理解MySQL8.0直方图

    墨墨导读:MySQL 8.0 新功能直方图,继承于Oracle ,MairaDB的实现方式。本文从MySQL角度解释,直方图是什么。

    数据和云
  • 任意半径中值滤波(扩展至百分比滤波器)O(1)时间复杂度算法的原理、实现及效果。

    主要参考论文:Median Filter in Constant Time.pdf

    用户1138785
  • MYSQL 8 Histogram statistics 直方图,开始开挂的MYSQL

    周六日,松懈了,罪过罪过, MYSQL 从8.0开始就开始正式走到开挂数据库得行列,估计8.0铺开后,大部分原先的MYSQL的经验的进行一次洗牌,今天就从MYS...

    AustinDatabases
  • C++ OpenCV直方图计算

    上述直方图概念是基于图像像素值,其实是对图像梯度,每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直方图的概念的真正意义,不过是基于图像像素灰...

    Vaccae
  • 【DB笔试面试634】在Oracle中,什么是直方图(Histogram)?直方图的使用场合有哪些?

    在Oracle数据库中,CBO会默认认为目标列的数据在其最小值(LOW_VALUE)和最大值(HIGH_VALUE)之间是均匀分布的,并且会按照这个均匀分布原则...

    小麦苗DBA宝典
  • 【从零学习OpenCV 4】直方图匹配

    经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社...

    小白学视觉
  • 【DB笔试面试636】在Oracle中,如何收集直方图信息?在收集直方图时有哪些注意事项?

    默认情况下,数据库会为列收集基本统计信息,但不会收集直方图信息。Oracle通过指定DBMS_STATS的METHOD_OPT参数来创建直方图。METHOD_O...

    小麦苗DBA宝典

扫码关注云+社区

领取腾讯云代金券