• 最优二值化


    昨天要做一个最优二值化,原QR图如下:

    对其做最优二值化,即在其直方图两个灰度波峰之间的的波谷用来做二值化的阈值。也就是下图中所示的小红点。

    在连续变量中可以用求导的方式来获得波峰和波谷的位置,但是对于离散变量,要如何求这个小红点的位置捏?

    方法一:

    可以设计这样一个检测结构

    用这个结构对直方图上的灰度1~255进行检测,如果左侧的灰度值高于检测点的灰度值,且右侧的灰度值也高于检测点的灰度值。那么就说明检测点所处的位置就是某一个波谷了。

    但是,这样又出现了另一个问题,直方图波形中的毛刺会导致很多“虚波谷”的出现。

    所以,在使用上述结构检测之前,要先对直方图波形进行平滑处理。

    直方图的平滑处理可以考虑这两种方法。

    用插值的方法进行直方图平滑

    如果对直方图进行频域滤波会怎样

    在例子中,使用的是插值的方法。

    插值以后,根据上面的检测结构检测波峰和波谷:

    原图:

    红色代表检测到的波峰,绿色代表检测到的波谷。

    测试另一张图:

    测试标准QR图 :

    测试增加了灰度渐变的标准QR图:

    可以看出用这种方法找到的波峰波谷还是太多,不好寻找我们所希望的阈值T。

    方法二:

    求导。在已经平滑处理的直方图上,进行求导处理。

    定义直方图的某点x的导数为:

    由此,可以求得某一直方图的导数图,如图:

    可以观察到,在导数图中,两个灰度聚集区中间会有一段导数值为0的较长区域。寻找阈值T将从此处入手。

    统计导数图(不包括首尾两端导数值为0的区域)中,0区域的长度,选择其中最长的一段的中点作为阈值的取值点。

    效果如下图所示:

     但是,在测试这张图的时候阈值的取值出现了很大偏差:

    问题出在进行直方图平滑处理时,把右半边的直方图内容给处理掉了。

  • 相关阅读:
    SQL Server 父子迭代查询语句,树状查询
    金山单词2003
    算算你的女友值多少钱?(精确新版)
    腾讯QQ2006 Fianl 海峰实用版(0114)┊
    私人保险箱 5.85 免费下载
    金山快译 2007 下载个人收藏专业版
    2007最新花之神匠代码 2月份更新 (3分钟搞定)
    金山词霸2007免费下载
    写给下一个她的男友
    SAP 价格条件表PRCD_ELEMENTS
  • 原文地址:https://www.cnblogs.com/elaron/p/2544712.html
Copyright © 2020-2023  润新知