一张数字图像只有黑色和白色,这种“非黑即白”的图像像素的灰度值无论在什么数据类型中只有最大值和最小值两种取值,因此称其为二值图像。二值图像色彩种类少,可以进行高度的压缩,节省存储空间,将非二值图像经过计算变成二值图像的过程称为图像的二值化。
二值化方法的集成,所有的方法都实现了一个功能,就是给定一个阈值,计算所有像素灰度值与这个阈值关系,得到最终的比较结果。函数中有些阈值比较方法输出结果的灰度值并不是二值的,而是具有一个取值范围,不过为了体现其最常用的功能,我们仍然称其为二值化函数或者阈值比较函数。
1.threshold
函数原型:threshold(Image : Region : MinGray, MaxGray : )
函数功能:使用全局阈值分割图像。
参数说明:
Image :HImage类型,输入图像,即待分割图像。
Region :HRegion类型,输出区域,即分割后的区域。
MinGray :输入灰度低阈值,0~255。
MaxGray :输入灰度高阈值,0~255,需大于MinGray 。
函数原理:
算子通过从输入图像中提取灰度值gray满足:MinGray < gray< MAxGray
条件的像素。
2.fast_threshold
函数原型:fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )
函数功能:使用全局阈值分割图像。
参数说明:
Image :HImage类型,输入图像,即待分割图像。
Region :HRegion类型,输出区域,即分割后的区域。
MinGray :输入灰度低阈值,0~255。
MaxGray :输入灰度高阈值,0~255,需大于MinGray 。
MinSize :提取对象的最小尺寸。
函数原理:
算子通过从输入图像中提取灰度值gray满足:MinGray < gray< MAxGray条件的像素。为了减少处理时间,选择分两步进行:首先,处理所选水平线上的所有点,这些点由它们的距离MinSize指定。接着,处理所有之前选中的点的邻域(size (2MinSize+1) x (2MinSize+1))。
3.bin_threshold
函数原型:bin_threshold(Image : Region : : )
函数功能:使用自动确定的全局阈值分割单通道灰度值图像
参数说明:
Image :HImage类型,输入图像,即待分割图像。
Region :HRegion类型,输出区域,即分割后的区域。
函数原理:
首先,确定灰度值的相对直方图。然后,从直方图中提取相关的最小值minimum,作为阈值操作的参数。为了减少最小值的数量,直方图使用高斯平滑,高斯模板的大小被逐渐放大,直到在平滑直方图中只有一个最小值minimum。最后选取图像最小值到minimum的像素。
4.auto_threshold
函数原型:auto_threshold(Image : Regions : Sigma : )
函数功能:使用由直方图确定的阈值分割图像。
参数说明:
Image :HImage类型,输入图像,即待分割图像。
Region :HRegion类型,输出区域,即分割后的区域。
Sigma :输入,用于直方图的高斯平滑,Sigma >= 0.0。
函数原理:
使用多重阈值分割单通道图像。首先确定灰度值的绝对直方图。然后,从直方图中提取相关的最小值,依次作为阈值操作的参数。字节图像的阈值为0,255,以及从直方图中提取的所有最小值(直方图用标准差Sigma的高斯滤波器平滑后)。对于每个灰度值区间,生成一个区域。因此,区域的数量就是最小值+ 1的数量。
5.binary_threshold
函数原型:binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
函数功能:使用自动确定的全局阈值分割单通道图像
参数说明:
Image :HImage类型,输入图像,即待分割图像。
Region :HRegion类型,输出区域,即分割后的区域。
Method:输入,选择二值化采用的方法。分别有’max_separability’, ‘smooth_histo’。
LightDark :输入,选择提取前景或背景,分别有 ‘dark’, ‘light’。
UsedThreshold:输出,算子自动计算采用的二值化阈值。
函数原理:
算子有两种方法,这两种方法只能用于具有双峰直方图的图像。
一、‘smooth_histo’: 原理和bin_threshold()算子相同。
二、‘max_separability’:类间最大法,该算法首先计算图像的直方图,然后利用统计矩找出将像素分为前景和背景的最优阈值,使这两个类的可分性最大化。这种方法只适用于字节和uint2图像。它对直方图中远离光谱其余部分的薄孤立峰不太敏感,而且通常比“smooth_histo”更快。
6.dual_threshold
函数原型:dual_threshold(Image : RegionCrossings : MinSize, MinGray, Threshold : )
函数功能:使用双重阈值对带符号图像的阈值分割。
参数说明:
Image :HImage类型,输入图像,即待分割图像。
RegionCrossings :HRegion类型,输出区域,即分割后的区域。
MinSize:输入,小于MinSize的区域被抑制。
MinGray:输入,对绝对灰度值小于MinGray的区域进行抑制。
Threshold :输入,灰度值小于Threshold(或大于-Threshold)的区域将被抑制。
函数原理:
将输入图像分割成灰度值>Threshold 的区域Threshold(“正”区域)和灰度值<Threshold 的区域“负”区域)。只有大小大于MinSize的“正”或“负”区域才会被保留,灰度值在MinGray和-MinGray之间的区域会被抑制。
7.hysteresis_threshold
函数原型:hysteresis_threshold(Image : RegionHysteresis : Low, High, MaxLength : )
函数功能:对图像执行迟滞阈值分割。
参数说明:
Image :HImage类型,输入图像,即待分割图像。
RegionHysteresis :HRegion类型,输出区域,即分割后的区域。
Low:输入,灰色值的下限阈值
High:输入,灰色值的上限阈值
MaxLength :输入,“潜在”点到达“安全”点的路径的最大长度。
函数原理:
所有在输入图像中具有大于或等于High的灰度值的点立即被接受(“安全”点)。相反,所有灰色值小于Low的点将被立即拒绝。如果“潜在”点通过长度最多为MaxLength点的“潜在”点路径连接到“安全”点,那么两个阈值之间的灰色值的“潜在”点将被接受。这意味着“安全”点会影响它们的周围环境(滞后)。
8.dyn_threshold
函数原型:dyn_threshold (OrigImage, ThresholdImage, RegionDynThresh, Offset, LightDark)
函数功能:使用局部阈值分割图像。
参数说明:
OrigImage:原始输入图像
ThresholdImage:平滑处理之后的输入图像
RegionDynThresh:结果输出图像
Offset: 相对于ThresholdImage图像每个像素值的偏移量
LightDark:选择项,提取亮、暗或类似区域?
默认值:“light”提供的选项: ‘dark’, ‘equal’, ‘light’, ‘not_equal’
其原理如下:
从输入图像中选择像素满足阈值条件的区域,令g{o} = g{OrigImage}, g{t} = g{ThresholdImage}。那么LightDark= 'dark’的条件是:g{o} <= g{t} - Offset,OrigImag和ThresholdImage每个像素分别逐一比较,当ThresholdImage的像素值减去 Offset偏移量大于或者等于OrigImag的像素值时,则表示OrigImag的像素值满足条件阈值,以像素值255保存到RegionDynThresh中,其余不满足则以像素值0保存在RegionDynThresh中。