图像的二值化问题总是一个问题。虽然使用深度学习的方法取得了不小的进展,但是传统的方法还是值得借鉴。

刚好随机游走到这篇文章 挖个07年的坟  地址:http://people.scs.carleton.ca/~roth/iit-publications-iti/docs/gerh-50002.pdf

  这是二值化后的效果。

全局阈值法在上面的情况下会失效,所以本文使用了一种自适应的阈值算法。

作者使用了积分图 (Integral Image) 作为阈值分割工具,这也算是积分图的应用吧。

公式(1)是坐标(x,y)处的积分值的计算方法, (2)是计算两个对角点像素的和。

图像2给出了积分图的计算事例。 左:图像灰度值 中:计算的对应的积分图   最后一个是解释公式(2),类似于几何文氏图

作者给出的阈值分割判据是:

计算目标点周围S邻域正方形内的均值

比较该目标点与均值的差距

  如果目标点灰度值小于均值的 某一百分比(阈值) 目标点为0

  如果目标点灰度值大于均值的某一百分比(阈值)    目标点为1

作者取的邻域S,和百分比 没有找到,公布代码的网址也挂掉了。

检测结果:

乱侃:

这是很早的一篇文章了,和现在Opencv里的adaptivethreshold原理差不多。

该文章里引用的另一个人的方法比较有意思:

对图像进行按行扫描,计算前s个像素的滑动平均值,对于要判定的像素,比较其与这个滑动平均值的大小,然后判定。

总之,这篇文章比较老,作者使用了积分图来加快计算某一像素领域内的均值,这点在当时应该比较新,对于深度学习来说就是做了个sxs的均值卷积,现在根本不是问题。

当然,现在这种局部自适应阈值的方法还是大量使用,因为他最能讲的通,简单明了。但是就像图1里的阈值分割结果,四周的假阳性有点多啊。这个的消除才是现在的难点。

消除这些假阳性的方法有: 形态学的方法(膨胀,腐蚀) ,几何尺寸先验知识过滤,等 ,传统论文大概都是这个套路。总之,难点还是如何消除分割错误的像素。

 

读《Adaptive Thresholding Using the Integral Image》自适应图像阈值的更多相关文章

  1. Adaptive Thresholding & Otsu’s Binarization

    Adaptive Thresholding Adaptive Method - It decides how thresholding value is calculated. cv2.ADAPTIV ...

  2. Domain Adaptive Faster R-CNN:经典域自适应目标检测算法,解决现实中痛点,代码开源 | CVPR2018

    论文从理论的角度出发,对目标检测的域自适应问题进行了深入的研究,基于H-divergence的对抗训练提出了DA Faster R-CNN,从图片级和实例级两种角度进行域对齐,并且加入一致性正则化来学 ...

  3. Wellner 自适应阈值二值化算法

    参考文档: Adaptive Thresholding for the DigitalDesk.pdf       Adaptive Thresholding Using the Integral I ...

  4. 一种局部二值化算法:Sauvola算法

    之前接触过全局二值化(OTSU算法),还有OPENCV提供的自适应二值化,最近又了解到一种新的局部二值化算法,Sauvola算法. 转载自:http://www.dididongdong.com/ar ...

  5. Computer Graphics Research Software

    Computer Graphics Research Software Helping you avoid re-inventing the wheel since 2009! Last update ...

  6. ostu进行遥感图像的分割

    城市地区道路网的简单的阈值分割.采用的是单ostu(最佳阈值分割)算法,废话少说,如果不太清楚该算法,请参考文献[1]中的图像分割这一章的介绍.程序直接运行的效果如下.

  7. 限制对比度自适应直方图均衡(Contrast Limited Adaptive histgram equalization/CLAHE)

    转自:http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html 一.自适应直方图均衡化(Adaptive histgram eq ...

  8. InnoDB关键特性之自适应hash索引

    一.索引的资源消耗分析 1.索引三大特点 1.小:只在一个到多个列建立索引 2.有序:可以快速定位终点 3.有棵树:可以定位起点,树高一般小于等于3 2.索引的资源消耗点 1.树的高度,顺序访问索引的 ...

  9. Dubbo 源码分析 - 自适应拓展原理

    1.原理 我在上一篇文章中分析了 Dubbo 的 SPI 机制,Dubbo SPI 是 Dubbo 框架的核心.Dubbo 中的很多拓展都是通过 SPI 机制进行加载的,比如 Protocol.Clu ...

随机推荐

  1. Nginx笔试题!

    1.Nginx实现HTTP及TCP负载均衡的模块?HTTP就是工作在七层协议TCP工作在四层协议 Nginx七层负载:七层通过虚拟的URL或主机名接收请求在server里面配置location反向代理 ...

  2. Weka算法算法翻译(部分)

    目录 Weka算法翻译(部分) 1. 属性选择算法(select attributes) 1.1 属性评估方法 1.2 搜索方法 2. 分类算法 2.1 贝叶斯算法 2.2 Functions 2.3 ...

  3. word2vec词向量处理英文语料

    word2vec介绍          word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集 ...

  4. unique() 函数详解

    简介 顾名思义,unique,独一无二的.这个函数可以对容器中的元素进行"去重". 但是需要注意,这里的"去重",并没有把重复的元素删除,只是不重复的元素放到了 ...

  5. Spring学习(四)

    Spring Ioc容器 1.具有依赖注入功能的容器.负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖.在Spring中BeanFactory是Ioc容器的实际代表者.BeanFactor ...

  6. Python流程控制-2 条件判断

    条件判断 条件判断是通过一条或多条判断语句的执行结果(True或者False)来决定执行的代码块. 在Python语法中,使用if.elif和else三个关键字来进行条件判断. if语句的一般形式如下 ...

  7. 线程安全Collections.synchronizedList

    ollections.synchronizedList引发的线程安全问题 有些容器是线程安全的(Vector,ConcurrentLinkedQueue等),有些则不是(list等),利用类 似 pr ...

  8. Codeforces Round #620 (Div. 2) 题解

    A. Two Rabbits 思路: 很明显,如果(y-x)%(a+b)==0的话ans=(y-x)/(a+b),否则就为-1 #include<iostream> #include< ...

  9. List模拟栈

    import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main<E ...

  10. C语言笔记 14_标准库&assert&ctype&errno&float&limits

    C 标准库 <assert.h> 简介 C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息. 已定义的宏 ass ...