Blob Tool
------内容引用自Cognex帮助文档
你可以使用 Blob 工具来检查图像中的一个区域,并定位由灰度值范围有限且形状通常不可预测的像素组成的特征。检测和分析这些特征(或称为 blob)的过程称为 blob 分析。通过 blob 分析,你可以获取关于图像中特定特征的存在、数量、位置、形状和方向的信息。此外,还可以利用 blob 分析来发现图像中特征之间的拓扑关系。
术语 | 定义 |
---|---|
形态学 | 通过在图像内的像素邻域应用算术运算符来改变区域形状的过程 |
相对阈值 | 相对于图像内像素值分布来定义阈值的过程。 |
行程长度编码(RLE) | 一种数据压缩技术,通过将相同值的字节序列压缩为运行长度和值来存储。 |
二阶转动惯量 | 静止物体抵抗围绕轴旋转的倾向。关于特定轴的物体的转动惯量是通过将物体每一部分的质量乘以该部分距离给定轴的距离的平方来计算的 |
分割 | 将图像像素划分为对象像素和背景像素。分割是斑点分析的重要组成部分。 |
阈值化(二值化) | 通过选择一个简单的阈值来执行分割;阈值一侧的像素是对象像素,另一侧的是背景像素。也称为绝对阈值化。 |
拓扑学 | 描述区域之间空间关系的方法。 |
斑点分析概述
斑点分析是在图像中检测和分析二维形状的过程。
斑点分析可以为您的应用程序提供有关图像中斑点数量、位置、形状和方向的信息,还可以提供斑点之间拓扑关系的信息。例如:(一个点在一个弧段的端点; 一个简单弧段不会自相交; 一个点在一个区域的边界上;一个点在一个区域的内部; 一个点在一个区域的外部;)
什么时候用斑点分析
斑点分析并不适用于每一个视觉应用。以下特征表明一个应用适合使用斑点分析:
-
二维对象的图像
-
高对比度图像
-
存在/缺失检测
-
需要尺度和旋转不变性
另一方面,具有以下特征的应用可能不适合斑点分析:
-
低对比度图像
-
场景中的重要特征无法仅通过两个灰度级表示
图像特征提取中的平移不变性、旋转不变性、尺度不变性
1.平移不变性是指对象的特征在平移变换下保持不变,不受平移的影响。实现平移不变性的方法可以是将对象的特征点相对于其中一个点的距离作为特征表示,这样就可以保证在平移变换下该距离不变。
2.旋转不变性是指对象的特征在旋转变换下保持不变,不受旋转的影响。实现旋转不变性的方法可以是将对象的特征点相对于中心点的极角和距离作为特征表示,这样就可以保证在旋转变换下该极角不变。
3.尺度不变性是指对象的特征在尺度变换下保持不变,不受尺度的影响。实现尺度不变性的方法可以是将对象的特征点相对于中心点的距离与比例尺作为特征表示,这样就可以保证在尺度变换下该距离与比例尺的乘积不变。
图像分割
-
硬阈值
-
空间量化误差
-
软阈值化和像素加权
-
相对硬阈值化
-
动态阈值
-
相对软阈值化
-
像素映射
-
阈值图像
通常情况下,用于斑点分析的所有图像都是场景的灰度图像。虽然对于人类观察者来说可能很容易识别场景中的斑点或物体,但在进行斑点分析之前,必须将图像中的每个像素分配为对象像素或背景像素。通常情况下,对象像素被赋值为1,而背景像素被赋值为0。
可以使用多种技术将图像分割为对象像素和背景像素。接下来的部分将描述这些技术。
硬阈值
最简单的图像分割技术是选择一个阈值像素值。所有灰度值低于阈值的像素被分配为对象像素,而所有灰度值高于阈值的像素被分配为背景像素。这种技术称为二值化阈值或硬阈值。
图1展示了一个理想化的场景,应用硬阈值的过程,以及将图像分割为对象和背景像素的结果。在下面的示例中,使用了阈值值为150。所有灰度值大于或等于150的像素被视为背景;所有灰度值小于150的像素被视为对象。
图1. 使用硬阈值进行图像分割
空间量化误差
硬阈值化在图像分割中表现良好。但是,当对结果分割图像进行斑点分析时,分析结果常常受到空间量化误差的影响。
空间量化误差是由于对象在场景中的确切边缘几乎不会精确地落在图像中两个像素的边界上而产生的。斑点边缘落在的像素具有某种中间的像素值。根据对象的多少,像素被视为对象像素或背景像素。斑点位置的微小变化可能导致报告的斑点边缘位置发生很大变化。
图2说明了空间量化误差。虽然斑点的边缘仅移动了一个像素的小部分,但在硬阈值化图像中报告的斑点边缘已经移动了整个像素宽度。
图2. 空间量化误差
当真实的斑点边界移动了一个像素的小部分时,硬阈值化计算出的边缘移动为整整一个像素。
空间量化误差会影响报告的斑点的大小、周长和位置。空间量化误差对斑点面积的影响取决于斑点的形状。
图3和图4中的示例假设,被斑点覆盖少于50%的像素被分配为背景像素,而被斑点覆盖50%或更多的像素被分配为对象像素。
图3:像素网格上的对象位置影响报告的面积
在这两组图中,请注意由于斑点在像素网格上略微移动而导致分配为对象像素的像素数量发生变化。在图3中,斑点是一个尺寸为8.5x8.5像素的正方形。在图的左侧,斑点位于网格的中心,完全覆盖了64个像素(网格中心的8x8像素正方形),以及每个边界斑点周围四分之一的像素。由于边界像素被斑点覆盖的比例少于50%,它们不被计算为对象像素,因此总的对象像素数量为64个。在图的右侧,斑点位于网格的中心,完全覆盖了49个像素(网格中心的7x7像素正方形),以及每个边界斑点周围四分之三的像素。由于边界像素被斑点覆盖的比例超过50%,它们被计算为对象像素,因此总的对象像素数量为81个。
空间量化误差的严重程度取决于图像中周长与面积的比率。请注意,在图4中,当周长与面积的比率更大时,空间量化误差的影响显著增加。
图4:随着斑点周长与斑点面积比率的增加,空间量化误差增加
与像素网格对齐的边缘,比如矩形的边缘,往往会产生系统性的增强误差,而圆形物体等其他边缘则往往会产生随机的抵消误差。
软阈值化和像素加权
在使用硬阈值对图像进行分割后,空间量化误差会产生,因为分割图像中的每个像素只能取两个值之一,即对象(1)或背景(0)。当分割图像中可能的像素值数量增加时,像素可以表示对象、背景或对象与背景之间的边缘。
通过分配像素权重来增加分割图像中可能的像素值数量。像素权重是一个介于0和1.0之间的数字,表示像素所代表的内容。像素权重为1.0意味着像素属于对象。像素权重为0意味着像素属于背景。像素权重在0和1.0之间表示像素位于对象边缘。
当使用加权像素值组成的图像计算斑点测量时,例如面积,是通过像素权重的总和来计算的。基于像素权重进行计算时,空间量化误差的影响大大降低。图5展示了一个简单的3x1像素斑点。当斑点相对于像素网格移动时,包含非零像素值的像素的权重总和保持不变。即使是图3和图4中显示的更复杂的形状,情况也是如此。
图5. 像素加权
你可以通过提供一个软二值阈值将灰度图像转换为分段为加权像素值的图像。与单一阈值的硬阈值不同,软阈值由一系列阈值组成。值高于阈值范围的像素被赋予0的权重(背景),值低于阈值范围的像素被赋予1的权重(物体),而在阈值范围内的像素被赋予0到1之间的权重,通常是线性的方式。图6提供了硬阈值和软阈值的图形表示。
图6. 硬阈值和软阈值
注意:图6中显示的阈值适用于浅色背景上的暗色物体。
相对硬阈值
在前面的章节描述的分割技术中,需要确定适当的分割阈值。最常见的方法是试错法。然而,如果应用程序使用的图像在亮度上存在图像间变化,静态阈值就无法正确地分割不同图像的变化。图7展示了这个问题。
图7. 静态阈值在图像亮度变化时的失败
Blob工具允许您根据图像中的像素值定义一个相对阈值。
相对阈值使用两组参数进行指定。首先,您需要指定希望工具将其视为尾部像素的图像内像素百分比。尾部像素是图像中具有最低和最高值的像素。在像素值直方图中,尾部像素出现在直方图的左侧和右侧。Blob工具确定您指定的像素百分比所在位置的上下像素值。这些像素值称为右尾像素值和左尾像素值。
相对阈值的第二个参数是阈值百分比。Blob工具确定位于两个尾部像素值之间指定百分比距离的像素值,并使用此像素值作为阈值像素值。图8展示了Blob工具如何计算相对阈值。
图8. 计算相对阈值
在图8所示的例子中,左尾和右尾的百分比被指定为5%,阈值百分比值被指定为40%。该工具计算了左尾、右尾和阈值像素值。
图9展示了如何使用相对阈值为每个不同亮度的图像产生适当的阈值值。
图9. 相对阈值
动态硬阈值
无论您是直接指定硬阈值还是使用相对阈值计算阈值,其目的都是得到一个有效地将背景像素与目标像素分割的阈值,如图10所示。
图10. 理想的硬阈值
硬动态阈值化是根据输入图像直方图自动计算适当阈值的过程。硬动态阈值化通过计算使得阈值两侧像素加权方差最小化的阈值来确定这个阈值。这种方法通常能够为具有双峰像素值分布的图像生成一个良好的阈值。图11展示了如何将有效的阈值值与阈值两侧像素值的方差联系起来。
图11. 阈值与组内方差
在输入图像中不存在双峰像素值分布的情况下,动态硬阈值可能效果不佳。
相对软阈值化
除了根据图像中像素的百分比(排除尾部像素后)指定硬阈值外,您还可以使用相对值来指定软阈值。
要指定相对软阈值,您需要提供以下数值:
-
要排除的低尾和高尾像素的百分比
-
用于低阈值的百分比值
-
用于高阈值的百分比值
-
软度步数
该工具使用与相对硬阈值化部分描述相同的过程来计算低阈值和高阈值。根据尾部百分比指定的低尾和高尾值将被丢弃,并使用剩余低值和高值之间距离的指定百分比作为低阈值和高阈值,如图12所示。
图12. 计算相对软阈值的40%和45%
像素映射
某些类型的场景无法使用任何种类的二进制阈值技术进行分割。二进制阈值仅在所有斑点的所有部分比背景区域的所有部分更亮(或更暗)时才有效。在斑点包含空洞且空洞与背景的其余部分不是相同色调的情况下,二进制阈值始终会失败。
图13显示了一个图像示例,其中阈值处理未能产生期望的结果。图像显示了一个暗色部分和一个浅色背景。由于光照条件不佳,部分内部的两个空洞的像素值低于部分的像素值。任何将构成部分的像素分配为对象像素的阈值也将将构成部分内的空洞像素分配为对象像素。或者,将将构成对象的像素与构成部分内空洞的像素分配为不同分段的阈值也会将构成部分的像素分配为背景像素。图13显示了图像上这两种类型的阈值分割的结果。
图13. 无法通过阈值分割的图像
你可以使用像素映射来分割像图13所示的图像。像素映射允许您精确指定哪些像素值范围将被指定为对象像素(像素权重为1),哪些像素值范围将被指定为背景像素(像素权重为0),以及哪些像素值范围将被指定为边缘像素(像素权重在0和1之间)。像素映射是一个简单的查找表,定义了要分配给每个像素值的像素权重。
图14展示了一个可能用于分割图13所示图像的像素映射的示例。
图14. 使用像素映射分割图像
阈值图像
某些类型的图像不能使用阈值化和像素映射分割方法。这些图像通常是包含多种渐变或其他光照问题的场景,导致对象和背景中存在相同的像素值。图15展示了一个无法使用阈值化或像素映射分割的场景示例。
图15. 无法使用阈值化或像素映射分割的图像
由于某些背景像素值与对象像素值相同,因此无法使用阈值化或像素映射来分割图像。如果您获取一个场景中对象不存在的参考图像,您可以通过将要分割的图像中的每个像素与参考图像或阈值图像中对应的像素进行比较来进行分割。两幅图像之间像素值差异超过一定阈值的像素被分配为对象像素,而两幅图像中相同的像素被分配为背景像素。这种技术称为使用阈值图像进行分割。
使用阈值图像来分割图像包括提供一个场景中对象不存在的阈值图像和一个阈值值。在对实际图像进行分割时,每个要分割的图像中的像素,如果其与阈值图像中对应的像素之间的差异超过提供的阈值值,则被视为对象像素。所有与阈值图像中对应像素没有差异的像素则被视为背景像素。图16展示了使用阈值图像进行分割的示例。
图16. 使用阈值图像分割图像
连通性分析
-
整图连通性分析
-
连接的斑点分析
-
标记连通性分析
一旦图像被分割成目标像素和背景像素,就需要进行连通性分析,以将目标像素组合成连接的目标像素组或斑点。连通性分析包括以下三种类型:
整图连通性分析
在整体图像斑点分析中,分割图像中的所有目标像素被视为构成一个单独的斑点。即使斑点像素分布在多个不相连的集合中,对于斑点分析来说,它们也被视为一个单一的斑点。所有的斑点统计数据和度量是基于图像中的每个目标像素计算的。
连接的斑点分析
连接的斑点分析使用连接标准将图像中的目标像素组合成离散的、连接的斑点。一般来说,连通性分析通过将所有相邻的目标像素连接在一起形成斑点。不相邻的目标像素不被视为同一个斑点的一部分。
标记连通性分析
根据您的应用程序进行的图像处理类型,您可能希望对被分割成除目标和背景像素之外的其他像素组的图像进行斑点分析。例如,您可以将图像分割成四个不同的像素组,每个组代表不同范围的像素值。这种分割称为标记分割。当您对经过标记分割的图像执行连通性分析时,连通性分析会连接所有具有相同标记的像素。在标记连通性中,没有目标和背景的概念。
形态学操作 灰度形态学是在图像中对连续像素邻域应用简单操作的过程。Blob工具提供的操作允许您替换图像中每个像素的最小像素值或最大像素值,这些值位于该像素特定邻域内。下表列出了每个邻域和操作,以及操作的典型用途和对图像影响的理想化表示。
注意:形态学操作考虑对象和背景像素。哪些图像像素变为对象像素,哪些变为背景像素取决于您指定的分割参数。形态学操作始终将白色像素解释为对象,黑色像素解释为背景。
斑点的属性
一旦图像被分割,并且斑点或斑点已经被定位和识别,应用程序可以开始考虑有关斑点的信息。
斑点是一个任意的二维形状。斑点的形状可以用多种不同的测量方式来描述。斑点工具返回的测量结果可分为以下几类:
-
几何属性
-
非几何属性
-
拓扑属性
这些属性组的详细描述见下文各节。
几何属性
斑点的几何属性是指斑点本身固有的测量特征。几何属性可以相对于由斑点本身定义的坐标系统来表达;当斑点移动或旋转时,这些属性不会改变。
下文将详细描述每个斑点的几何属性。图17展示了斑点的几何属性。
图17. 斑点的几何属性
面积
斑点的面积定义为斑点中每个非零像素的加权像素值之和。如果对图像应用了硬二值阈值进行分割,则面积简单地等于斑点中非零像素的数量。如果正在执行灰度分析,则面积为像素权重的总和。
如果斑点位于使用硬二值阈值分割的图像中,则斑点面积的公式为:
图18. 面积,硬二值阈值
$$Area = \sum(x,y)
$$
如果斑点位于使用软二值阈值或像素映射分割的图像中,则斑点面积的公式为:
图19. 面积,软二值阈值
$$Area = \sum W(x,y)
$$
其中,W 是坐标 (x,y) 处像素的权重。
周长
斑点的周长是斑点外边缘的长度。斑点的周长通过计算非零值像素与值为0像素之间的像素边缘数量来确定。
质心
斑点的质心代表斑点的平衡点。如果用均匀材料的片材剪裁成斑点的形状,那么斑点平衡的点就是其质心。请注意,斑点的质心可能并不实际位于斑点本身之内。图20展示了一个质心不位于斑点内部的示例。
图20. 质心
质心的计算是通过确定斑点中每个像素在 x 轴和 y 轴上的加权像素位置的平均值来完成的。给出斑点质心的 x 和 y 分量的公式如下:
图21. 质心的XY坐标
Cx = \frac{1}{A} \sum_{x,y} xW(x,y)
Cy = \frac{1}{A} \sum_{x,y} yW(x,y)
其中,A 是加权面积,W(x,y) 是坐标 (x,y) 处像素的权重。
注:尽管质心在客户端或图像坐标中报告时随着斑点移动而变化,但相对于斑点的几何范围而言,质心是不变的。因此,它被描述为一种几何属性。
关于主轴的二阶转动惯量
物体关于某轴的二阶转动惯量是该物体抵抗绕该轴旋转的倾向。如果用均匀材料的片材剪裁成斑点的形状,二阶转动惯量将指示该物体在给定轴上旋转时的惯性阻力。
斑点的二阶转动惯量是衡量斑点在给定轴周围有多广泛分布的指标。二阶转动惯量数值越高,斑点分布越广泛。
斑点关于某轴的二阶转动惯量通过取每个像素的权重,乘以该像素到给定轴距离的平方,然后计算所有斑点中像素的这个值之和来计算。
斑点的主轴被定义为二阶转动惯量最小的轴。斑点的主轴是斑点最容易绕其旋转的轴。斑点的主轴始终通过斑点的质心。
斑点的次轴被定义为穿过质心的轴,其二阶转动惯量最大。斑点的次轴是斑点最难绕其旋转的轴。斑点的次轴始终是通过斑点质心的与主轴成90°角的线。
主轴和次轴合称为主轴。
几何范围
斑点的几何范围指的是以斑点的主轴为方向的矩形四边到斑点质心之间的距离,该矩形完全包围了所有斑点像素。
非几何属性
斑点的非几何属性是指仅与外部坐标系有关的斑点测量,通常由帧抓取器生成的像素网格定义。随着斑点的旋转或位置变化,这些属性也会相应改变。每个斑点的非几何属性在以下部分进行描述。图22展示了一个斑点的非几何属性。
图22. 斑点的非几何属性
斑点中位数
斑点的中位数是两条线的交点,其中一条平行于x轴,另一条平行于y轴,使得斑点总像素重量的一半位于线的每一侧。因为斑点中位数是一个非几何属性,所以它比质心更少可靠地指示斑点的真实位置。然而,斑点的质心比斑点中位数更容易受到空间量化误差的影响;在斑点是圆形并且使用硬二值阈值来分割图像的情况下,斑点中位数可能比质心更有用。
关于坐标轴的二阶转动惯量
斑点关于坐标轴的二阶转动惯量是衡量斑点相对于两个坐标轴有多广泛分布的指标。
坐标范围
斑点的坐标范围是指斑点的质心到完全包围所有斑点像素的与坐标轴平行的矩形四边的距离。
拓扑属性
任何经过斑点分析的场景最终被分析为一个或多个特征的集合。一个特征可以是一个斑点,也可以是斑点内的孔洞,或者是一个斑点内的孔洞中的斑点。图像中斑点和孔洞之间的关系被描述为场景的拓扑结构。关于一个特征的主要拓扑信息包括:
-
特征的标签(斑点或孔洞)
-
哪些特征被该特征所包围
-
哪个特征包围了该特征
标签
一个特征的标签表示该特征是一个斑点还是一个孔洞。
如果正在执行标记的连通性分析,一个特征的标签是组成该特征的每个像素的像素标签。
层次位置
图23展示了如何使用树结构表示一组斑点之间的拓扑关系。根斑点是包含所有其他斑点和孔洞的斑点。树上的每个节点包含一个用于标识斑点的键或ID;每个树节点还包含一个标签,指示该特征是一个斑点还是一个孔洞。
图23:使用树结构描述的斑点拓扑结构
斑点工具概述
图像分割
硬二值阈值化
支持硬二值阈值化。您可以指定要用作阈值的确切像素值,并定义阈值以上的像素是对象像素还是背景像素。这使您能够正确分割暗背景上的光物体图像以及亮背景上的暗物体图像。
硬动态阈值化
支持硬动态阈值化。如果指定此分割模式,斑点工具将计算最小化阈值两侧像素加权方差的硬阈值。这通常会为像素值双峰分布的图像生成良好的阈值。
软二值阈值化
对于软二值阈值化,您需要提供一个低阈值、一个高阈值、过渡的软度(在阈值范围内使用的过渡级别数),以及一个反转标志。这些参数用于对图像进行阈值处理,如图24所示。
图24. 软二值阈值化参数
图24中展示的软二值阈值适用于暗背景上的亮物体。如果将阈值应用于亮背景上的暗物体图像,则反转标志将设置为true,并且参数将按图25所示进行解释。
图25. 设置了反转标志的软二值阈值
硬相对阈值
要指定硬相对阈值,您需要指定作为左尾和右尾值处理的像素百分比,以及阈值百分比。斑点工具计算定义指定大小尾部的像素值,然后计算位于两个尾部值之间指定百分比距离的像素值。
软相对阈值
要指定软相对阈值,您需要指定作为左尾和右尾值处理的像素百分比,以及两个百分比值,一个用于低阈值,一个用于高阈值。斑点工具计算定义指定大小尾部的像素值,然后计算位于两个尾部值之间指定百分比距离的像素值。这两个计算出的像素值与您指定的软度值一起用于构建软阈值,如《软二值阈值》部分所述。
像素映射
对于像素映射,该工具允许您为 CogImage8Grey 输入图像指定一个包含 256 个元素的查找表,并为 CogImage16Grey 输入图像指定一个包含 65536 个元素的查找表。查找表定义了如何分配输入像素值的像素权重。因为该表由整数值组成,而不是浮点值(从 0.0 到 1.0),因此还提供了一个缩放因子。缩放因子定义了映射表中的哪个值(从 0 到 255 或从 0 到 65535)对应于像素权重为 1。缩放因子应该等于查找表中的最大值;像素权重等于查找表中的值除以缩放因子。
阈值输入图像
阈值图像的大小必须与要进行阈值分割的图像大小相同。您还必须提供一个包含 256 个元素(用于 CogImage8Grey 输入图像)或包含 65536 个元素(用于 CogImage16Grey 输入图像)的查找表,该表指定阈值图像与要分割图像之间像素值差异的每个像素权重,以及一个用于阈值处理前映射输入图像的 256 个元素或 65536 个元素的查找表。除了这些查找表之外,您还必须提供一个定义映射表中的哪个值(从 0 到 255 或从 0 到 65535)对应于像素权重为 1 的比例值。
先前分割的图像
斑点工具还支持已经分割的图像。在这种情况下,您需要提供一个缩放值,该值定义了分割图像中的哪个值(从 0 到 255 或从 0 到 65535)对应于像素权重为 1。
形态学操作
灰度形态学是将简单的运算符应用于图像内连续的像素邻域的过程。Blob工具提供的运算符允许您在图像中的每个像素位置上,用特定邻域内的最小像素值或最大像素值替换。下表列出了每个邻域和运算符,以及操作的典型用途,以及操作对图像效果的理想化表示。
注意:请记住,形态学运算符考虑对象像素和背景像素。哪些图像像素成为对象像素,哪些成为背景像素取决于您指定的分割参数。形态学操作始终将白色像素解释为对象像素,黑色像素解释为背景。
名称 | 形态学操作 | 用途 | 例程 |
---|---|---|---|
水平膨胀(eMaxH) | 用水平相邻像素的最大值替换图像中的每个像素 | 减少或消除物体内部的竖向孔洞,增加竖向物体特征的浓度 | |
水平腐蚀(eMinH) | 用水平相邻像素的最小值替换图像中的每个像素 | 减少或消除物体上的竖向特征,增加物体内部竖向孔洞的浓度 | |
垂直膨胀(eMaxV) | 用垂直相邻像素的最大值替换图像中的每个像素 | 减少或消除对象内部的水平形状孔洞,增加水平形状对象特征的浓度。 | |
垂直腐蚀(eMinV) | 用垂直相邻像素的最小值替换图像中的每个像素 | 减少或消除对象内部的水平形状对象特征,增加水平形状孔洞的浓度 | |
正方形膨胀(eMaxS) | 用图像中每个像素及其八个垂直和水平相邻的最小值替换图像中的每个像素 | 减少或消除对象内部的孔洞,增大对象的特征浓度 | |
正方形腐蚀(eMinS) | 用图像中每个像素及其八个垂直和水平相邻的最小值替换图像中的每个像素 | 减少或消除对象特征,增加对象内部孔洞的浓度 | |
水平开运算(eMaxMinH) | 首先对图像进行水平腐蚀操作,然后进行水平膨胀操作。 | 保留对象内部的垂直形状孔洞,同时消除垂直形状的对象特征。 | |
水平闭运算(eMinMaxH) | 首先对图像进行水平膨胀操作,然后进行水平腐蚀操作。 | 保留对象内部的垂直形状特征,同时消除对象内部的垂直形状孔洞。 | |
垂直开运算(eMaxMinV) | 首先对图像进行垂直腐蚀操作,然后进行垂直膨胀操作。 | 保留对象内部的水平形状孔洞,同时消除对象内部的水平形状对象特征。 | |
垂直闭运算(eMinMaxV) | 首先对图像进行垂直膨胀操作,然后进行垂直腐蚀操作。 | 保留对象内部的水平形状特征,同时消除对象内部的水平形状孔洞。 | |
正方形开运算(eMaxMinS) | 首先对图像进行正方形腐蚀操作,然后进行方形膨胀操作。 | 保留对象内的孔洞,同时消除小的对象特征。 | |
正方形闭运算(eMinMaxS) | 首先对图像进行正方形膨胀操作,然后进行方形腐蚀操作。 | 保留对象内的特征,同时消除对象内的孔洞。 |
组合形态学操作
Blob工具允许您在图像上组合高达八种形态学操作。这些操作按顺序执行。
连通性
-
灰度连通性
-
标签连通性
连通性阶段的执行方式取决于正在执行的连接性分析类型。连接性阶段的输出是一个包含图像中所有斑点信息的斑点场景描述。
灰度连通性
无论图像如何被分割,连接像素成斑点的技术都是相同的。
斑点被定义为一组连接的对象像素,其中对象像素是任何具有非零权重的像素。Blob工具以8邻域来定义对象的连通性;也就是说,所有与给定像素边缘接壤以及触碰其角落的对象像素都被认为与该像素连接。
由于对象像素是8连接的,背景像素是4邻域的;也就是说,背景像素在对角线方向上不被认为是连接的。图27展示了4邻域和8邻域的示意图。
图27. 8邻域和4邻域
这种方式定义连通性具有拓扑性质,如图28所示。在图28中,如果将物体像素(黑色)解释为8连通,则它们被视为单个 blob。如果它们是4连通的,那么会有8个 blob,因为对角相邻的像素不被视为连通。
图28. 物体像素是8连通,形成单个 blob
标签连通性
在标签连通性分析中,一个 blob 被定义为一组连接的特征像素,其中每个像素具有相同的标签。由于将特征分为对象和背景在标签连通性分析中并不适用,因此 Blob 工具以6连通性进行标签连通性分析。图29展示了当工具进行标签连通性分析时,与目标像素连接的六个像素。
图29. 6连通性
图像修剪与填充
由于大多数图像中存在的缺陷,例如图像噪声,即使经过分割和遮罩处理后,图像可能仍然包含不需要的特征。一种用于从图像中移除小特征的技术是特征修剪和填充。
在连通性阶段,Blob 工具允许您忽略所有尺寸低于某个阈值的特征(包括 blob 和孔洞)。这称为图像修剪。当您对图像进行修剪以移除所有尺寸低于某个阈值的特征时,返回给定 blob 的 尺寸是基于包含已修剪特征的 blob 计算的,尽管修剪特征本身不被视为包含特征的子特征。
例如,如果一幅图像中包含一个面积为900像素的 blob,内含8个面积为10像素的孔洞,在最小特征尺寸设定为20像素时进行修剪,Blob 工具报告的是存在一个面积为900像素的单一 blob。
您可以选择指示 Blob 工具填充已修剪特征所占据的空间。这称为图像填充。在标签连通性的情况下,被填充的特征将用具有相同标签的像素填充。在灰度连通性的情况下,用于填充特征的像素值是被填充特征正左侧像素的值。随着每行像素被填充,该行像素的正左侧像素值被用作该行的填充值。
图30说明了修剪和填充图像之间的区别。
图30. 修剪和填充的图像
非圆度 (Acircularity)
有两种衡量blob非圆形程度的方法。
第一种方法由以下公式给出:
C = \frac{P^2}{4 \pi A}
其中,P是blob的周长,A是blob的面积。
对于一个完全圆形的blob,C的值为1。blob越不圆形,C的值越大。
第二种非圆度的衡量方法是通过blob半径值与r0的标准化均方根偏差给出,其中r0是blob面积除以π的平方根。
Blob工具的使用
使用斑点分析解决视觉问题的基本步骤是:
-
获取待分析场景的图像。
-
确定分割方法和阈值。
-
选择形态学运算符以及修剪和填充参数(可选)。
-
使用步骤1至4中选择的参数执行斑点分析。
-
解释斑点分析的结果。
光照和光学考虑因素
Blob分析最适合可以轻松分割为前景和背景像素的图像。通常,具有感兴趣的不透明物体的强背光场景会产生适合斑点分析的图像。
图像分割
图像分割的过程是斑点分析中最难以预测和最具挑战性的方面,特别是如果您面对图像对比度和斑点数量在图像之间变化较大的情况。本节描述了一些可以有效分割图像的技术和工具。
图像越一致,您在编写应用程序时对图像了解的信息越多,分割方法的效果就会越好。
选择分割类型
第一步是为您的应用程序选择分割类型。以下表格定义了选择分割类型的一些指南:
分割类型 | 使用场景 | 优势 | 劣势 |
---|---|---|---|
硬阈值 | 速度关键的应用,处理大型物体 | 速度快 | 由于空间量化误差,精度略低 |
软阈值 | 适用于对象和背景之间简单的二进制分割的任何应用 | 简单,精度高 | |
相对阈值 | 补充硬或软阈值;在图像之间的亮度变化时很有用 | 处理图像亮度变化 | 比绝对阈值慢,因为要计算图像百分比 |
动态阈值 | 补充硬二进制;基于输入图像自动计算阈值 | 无需配置 | 可能无法处理某些图像 |
像素映射 | 非二进制分割的应用,处理对象像素和背景像素之间的复杂关系 | 灵活性高 | 复杂度较大 |
阈值图像 | 处理背景照明不均匀的应用,背景像素可能与对象像素具有相同的值 | 处理其他无法分割的场景 | 需要一致的图像 |
选择分割阈值
一旦选择了分割类型,您必须确定应用程序将使用的特定阈值或阈值。如果您的应用程序分析的图像具有一致的亮度和对比度,您可以通过检查几张样本图像来轻松确定适当的阈值。如果您的图像具有显著的亮度或对比度变化,您的应用程序必须能够动态调整阈值。
如果您的应用程序需要处理图像之间的亮度变化,您应考虑指定相对阈值。
应用形态学操作到图像
您应选择能够按照您期望修改图像的形态学操作。请记住,形态学操作可以改变斑点的几何属性,如它们的大小和形状,以及拓扑属性(以前未连接的斑点可能会连接起来,可能会打开孔等)。
标签:分割,阈值,BlobTool,斑点,像素,对象,图像 From: https://www.cnblogs.com/Honsen/p/18302626