在二维数字图像中,其每个像素点对应了不同的像素值,其像素值各不相同。可以对像素值特定范围内的图像图像进行操作,划分这个范围的值就被称为图像阈值,它不是一个固定的量级,是根据每幅图像和处理要求动态改变。例如我们可以从图像中利用阈值分割出我们需要的部分,利用其像素值与背景在灰度特性上的差异,图像具有了不同的灰度等级,可据此指定一个合理的阈值从而确定图像中的像素值是否属于这个区域。所以其是像素操作的一种形式。
opencv官方文件中给出的解释是:为了从一幅图像中提取我们需要的部分,应该用图像中的每一个像素点的灰度值与选取的阈值进行比较,并作出相应的判断(阈值的选取依赖于具体的问题,物体在不同的图像中可能会有不同的灰度值)。
一旦找到了需要分割的物体像素点,我们可以对这些像素点设定一些特定的值来标识(例如:可以将物体的像素点的灰度值设定为:’0’黑色,其他的像素点灰度值设置为:’255’白色;当然像素点的灰度值可以任意,但最好设定两种颜色对比度较强,方便观察结果)。
给出一个简单的有关像素灰度的图片,如下:
图中的蓝色水平线代表着具体的一个阈值。
opencv提供了threshold()函数对图像的阈值进行处理,threshold()共支持五中类型的阈值化方式,分别是二进制阈值化、反二进制阈值化、截断阈值化、阈值化为0和反阈值化为0。
1.二进制阈值化
二进制阈值化的数学公式如下:
在运用二进制阈值化操作时,首先指定一个阈值量即像素的灰度值,遍历图像中像素值,大于这个阈值的像素均设置为最大像素值(如8位灰度值最大为255),灰度值小于设定阈值的像素点像素值重新赋值为0.得到如下图所示图像,借用二进制概念,超过该阈值即为1,否则为0.
2.反二进制阈值化
反二进制阈值化顾名思义就是与第一个阈值化类型相反,其数学公式如下: