Halcon-图像处理-二值化-binary_threshold

来源:互联网 发布:ubuntu 调整时区 编辑:程序博客网 时间:2024/05/16 08:53
binary_threshold
——用二进制阈值来分割图像。

Halcon算子原型:
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
参数:
Image:需要进行阈值的图像
Region:处理后的区域
Method:分割方法('max_separability':最大限度的可分性, 'smooth_histo':直方图平滑)
LightDark:提取的是黑色部分还是白色部分
UsedThreshold:自动阈值使用的阈值值

描述:
binary_threshold通过一个自动确定的全局阈值并返回区域中的分段区域来分割单通道图像。例如:在同质照明的背景下对字符的分割很有用。binary_threshold还会返回UsedThreshold中使用的阈值。
所使用的阈值是由方法中给出的方法决定的。目前,操作符提供了以下两种方法:“max_separability”和“smooth_histo”。这两种方法都只能用于具有双峰直方图的图像。
方法“smooth _histo”提供了由操作员bin_threshold提供的相同功能。方法“max_separability”倾向于为UsedThreshold确定较小的值。此外,它对柱状图中的稀疏孤立峰不太敏感,而且往往比“平滑”要快得多。
最大限度的可分性(max_separability):
通过选择Method= ' max_separability ',根据“灰度直方图的阈值选择方法”灰度直方图自动阈值调用。该算法首先计算图像的直方图,然后利用统计矩找到将像素分割为前景和背景的最优阈值,并最大化这两个类之间的可分性。此方法仅适用于byte和uint2图像。
直方图平滑(smooth_histo):
通过选择Method = 'smooth_histo ' binary_threshold可以通过以下方式确定阈值:首先确定灰度值的相对直方图。然后,从直方图提取相关的最小值,作为阈值操作的参数。为了减少最小值,直方图被平滑处理为一个高斯函数,就像在auto_threshold中一样。在平滑直方图中,掩模尺寸增大,直到最小值。然后,阈值设置为这个最小值的位置。

看效果:
LightDark=light,max_separability选的区域比smooth_histo少一点
LightDark=dark,max_separability选的区域比smooth_histo多一点

另:
bin_threshold:二值化阈值,自动地全局阈值方法,使用Threshold找到两个波峰之间的最小值,分割出来的是非黑即白。

二值化的方法:(参考:http://blog.csdn.net/jia20003/article/details/8074627)

方法一:扫描图像的每个像素值,值小于127的将像素值设为0(黑色),值大于等于127的像素值设为255(白色)。该方法的好处是计算量少速度快。

 

方法二:计算像素的平均值K,扫描图像的每个像素值如像素值大于K像素值设为255(白色),值小于等于K像素值设为0(黑色)

 

方法三:使用直方图方法来寻找二值化阈值,直方图是图像的重要特质,直方图方法选择二值化阈值主要是发现图像的两个最高的峰,然后在阈值取值在两个峰之间的峰谷最低处。