十三种基于直方图的图像全局二值化算法原理、实现、代码及效果
创作时间:
作者:
@小白创作中心
十三种基于直方图的图像全局二值化算法原理、实现、代码及效果
引用
CSDN
1.
https://m.blog.csdn.net/yangchaojjyy/article/details/145111438
图像二值化的目的是最大限度地将图像中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果。
在这些庞大的分类方法中,基于直方图的全局二值算法占有了绝对的市场份额,这些算法都从不同的科学层次提出了各自的实施方案,并且这类方法都有着一些共同的特点:
- 简单
- 算法容易实现
- 执行速度快
本文摘取了若干种这类方法进行了介绍。
一、灰度平均值法
- 描述:即使用整幅图像的灰度平均值作为二值化的阈值,一般该方法可作为其他方法的初始猜想值。
- 原理:
- 实现代码:
二、百分比阈值(P-Tile法)
- 描述:Doyle于1962年提出的P-Tile (即P分位数法)可以说是最古老的一种阈值选取方法。该方法根据先验概率来设定阈值,使得二值化后的目标或背景像素比例等于先验概率,该方法简单高效,但是对于先验概率难于估计的图像却无能为力。
- 原理:该原理比较简单,直接以代码实现。
三、基于谷底最小值的阈值
- 描述:此方法实用于具有明显双峰直方图的图像,其寻找双峰的谷底作为阈值,但是该方法不一定能获得阈值,对于那些具有平坦的直方图或单峰图像,该方法不合适。
- 实现过程:该函数的实现是一个迭代的过程,每次处理前对直方图数据进行判断,看其是否已经是一个双峰的直方图,如果不是,则对直方图数据进行半径为1(窗口大小为3)的平滑,如果迭代了一定的数量比如1000次后仍未获得一个双峰的直方图,则函数执行失败,如成功获得,则最终阈值取两个双峰之间的谷底值作为阈值。
注意在编码过程中,平滑的处理需要当前像素之前的信息,因此需要对平滑前的数据进行一个备份。另外,首数据类型精度限制,不应用整形的直方图数据,必须转换为浮点类型数据来进行处理,否则得不到正确的结果。
该算法相关参考论文如下:
J. M. S. Prewitt and M. L. Mendelsohn, "The analysis of cell images," innnals of the New York Academy of Sciences, vol. 128, pp. 1035-1053, 1966.
C. A. Glasbey, "An analysis of histogram-based thresholding algorithms," CVGIP: Graphical Models and Image Processing, vol. 55, pp. 532-537, 1993. - 实现代码:
其中IsDimodal函数为判断直方图是否是双峰的函数,代码如下: - 效果:
原图 二值图 原始直方图 平滑后的直方图
对于这种有较明显的双峰的图像,该算法还是能取得不错的效果的。
四、基于双峰平均值的阈值
- 描述:该算法和基于谷底最小值的阈值方法类似,只是最后一步不是取得双峰之间的谷底值,而是取双峰的平均值作为阈值。
- 参考代码:
- 效果:
原图 二值图 原始直方图 平滑后的直方图
五、迭代最佳阈值
- 描述:该算法先假定一个阈值,然后计算在该阈值下的前景和背景的中心值,当前景和背景中心值得平均值和假定的阈值相同时,则迭代中止,并以此值为阈值进行二值化。
- 实现过程:
求出图象的最大灰度值和最小灰度值,分别记为gl和gu,令初始阈值为:
根据阈值T0将图象分割为前景和背景,分别求出两者的平均灰度值Ab和Af:
令
如果Tk=Tk+1,则取Tk为所求得的阈值,否则,转2继续迭代。 - 参考代码:
- 效果:
原图 二值图 直方图
六、OSTU大律法
- 描述:该算法是1979年由日本大津提出的,主要是思想是取某个阈值,使得前景和背景两类的类间方差最大,matlab中的graythresh即是以该算法为原理执行的。
- 原理:关于该算法的原理,网络上有很多,这里为了篇幅有限,不加以赘述。
- 参考代码:
- 效果:该算法对于那些具有平坦的直方图的图像具有一定的适应能力。
七、一维最大熵
- 描述:该算法把信息论中熵的概念引入到图像中,通过计算阈值分割后两部分熵的和来判断阈值是否为最佳阈值。
- 算法原理:这方面的文章也比较多,留给读者自行去查找相关资料。
- 参考代码:
八、力矩保持法
- 描述:该算法通过选择恰当的阈值从而使得二值后的图像和原始的灰度图像具有三个相同的初始力矩值。
- 原理:参考论文:W. Tsai, “Moment-preserving thresholding: a new approach,” Comput.Vision Graphics Image Process., vol. 29, pp. 377-393, 1985.由于无法下载到该论文(收费的),仅仅给出从其他一些资料中找到的公式共享一下。其中的A\B\C的函数可见代码部分。
- 参考代码:对于很多图像,该算法页能取得比较满意的结果。
九、基于模糊集理论的阈值
该算法的具体分析可见:基于模糊集理论的一种图像二值化算法的原理、实现效果及代码此法也借用香农熵的概念,该算法一般都能获得较为理想的分割效果,不管是对双峰的还是单峰的图像。
十、Kittler最小错误分类法
由于精力有限,以下几种算法仅仅给出算法的论文及相关的代码。该算法具体的分析见:
- Kittler, J & Illingworth, J (1986), "Minimum error thresholding", Pattern Recognition 19: 41-47
参考代码:从实际的运行效果看,该算法并不很好。
十一:ISODATA(也叫做intermeans法)
参考论文:
- Ridler, TW & Calvard, S (1978), "Picture thresholding using an iterative selection method", IEEE Transactions on Systems, Man and Cybernetics 8: 630-632, http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4310039
参考代码(未做整理):
十二、Shanbhag 法
参考论文:
Shanbhag, Abhijit G. (1994), "Utilization of information measure as a means of image thresholding", Graph. Models Image Process. (Academic Press, Inc.) 56 (5): 414--419, ISSN 1049-9652, DOI 10.1006/cgip.1994.1037
参考代码(未整理):
十三、Yen法
参考论文:
- Yen J.C., Chang F.J., and Chang S. (1995) "A New Criterion for Automatic Multilevel Thresholding" IEEE Trans. on Image Processing, 4(3): 370-378
- Sezgin M. and Sankur B. (2004) "Survey over Image Thresholding Techniques and Quantitative Performance Evaluation" Journal of Electronic Imaging, 13(1): 146-165
参考代码(未整理):一行很多代码是摘自开源软件ImageJ的资料,读者也可以参考:Auto Threshold 这里获得更多的信息。
最后,我对这些算法的做了简单的UI界面,供有兴趣的读者参考。工程代码下载:http://files.cnblogs.com/Imageshop/HistgramBinaryzation.rar
热门推荐
华罗庚:从初中生到剑桥学者
大学生就业心理调适与应对
平价OR高端?美妆大揭秘:成分比拼,效果实测,性价比之王花落谁家?
为什么不能长期喝中药,会出现哪些不良影响?医生说出了答案
英语:如何正确理解使用“Make Sense”
喜用神木火适合佩戴什么?朱砂、玛瑙等饰品选择
长期服用他汀的人 要小心这4个副作用
系上安全带,关键时刻保性命!
《自然》子刊:咖啡对肠菌的影响,实在是太大了
新移民首次登陆美国详细指南-2024
东方雨虹年报解析:净利润骤降95%背后的战略抉择与财务考量
宝宝几个月适合断奶?宝宝断奶全攻略:何时断?怎么断?注意啥?
表达方式和表现手法的区别是什么 有什么不同
同睡好处多?揭秘同床共枕对睡眠和亲子关系的影响
金秀贤危机公关评估:鞠躬痛哭能否扭转“塌房”命运?
一个好网名的特征与创作指南
锦鲤一年能长多少厘米?不同年份锦鲤体型增长情况
蛋壳膜的功效有哪些?怎么吃?5个隐藏优势大解密!
如何在海南陵水县做出购房决策?这种决策需要依据什么因素?
白发转黑的方子,两味中药代茶饮,一个特效穴,补虚又乌发!
有钱人家的厨房都这么设计,快来跟着学!
步进电机梯形加减速原理详解
巴菲特的投资哲学与股票选择策略
小孩颌下淋巴结肿大硬按压痛怎么回事
专家视点 | DHA与认知功能发育研究进展
网站打开慢的原因分析及优化建议
低代码开发平台的深度剖析与实战应用
如何为电脑装双硬盘并为两块硬盘分别装不同的系统
GARCH模型与机器学习在金融波动率分析中的应用研究
棕色脂肪:人体自带的“燃脂引擎”与健康守护者