对象特征的定义

Blob 分析用于提取检测到的对象的特征。 不提供对象本身的图像。 Blob 分析算子可用于计算最常见的对象特征,这些特征使用几何和统计方法来描述对象。 相应地,支持以下特征

  • 面阵
  • bounding box
  • center of gravity
  • contour length

。 下面将对每个特征进行详细定义。

面积

图像中的每个对象都可以通过包含在该对象中的所有前景像素的坐标列表来描述 。 因此,对象或其区域 R 可以描述为

对象的面积是该对象的像素数量,即区域 R 的大小。

换句话说:对象的面积是其所有像素的总和。此特征通常用于区分不同大小的对象。

边界框

区域 R 的 bounding box 是适合该对象的最小轴平行矩形。这是一个简单但非常有用的特征,用于描述对象在图像中的位置。

此特征为每个对象提供四个值,在 VisualApplets 中描述为

对于 Blob Analysis 1D 算子,此特征有所不同,因为无法给出对象的绝对坐标。 请参阅 'Blob_Analysis_1D' 以获取解释。

重心

center of gravity 在 x 和 y 方向上计算,是对象所有绝对坐标的总和。 每个对象的原点是图像的左上角。

和

请注意,center-of-gravity 值未进行归一化。 在 blob 分析之后,需要将它们除以对象面积。 要执行此除法,请使用位于 arithmetics 库中的 DIV 算子。 或者,也可以在主机 PC 上执行除法。

和

对于 Blob Analysis 1D 算子,此特征有所不同。请参阅 'Blob_Analysis_1D' 以获取解释。

轮廓长度

此特征由对象所有轮廓的长度定义。 包括外边缘和内边缘(后者由孔洞引起)。

Contour Length 区分 4 邻域和 8 邻域。如果 blob 分析算子设置为使用 4 邻域检测对象,则通过仅在正交方向上扫描对象边缘来确定轮廓长度。 如果 blob 分析算子设置为 8 邻域,则轮廓长度还会考虑对角连接的对象边缘。 因此,根据算子的邻域设置,该特征会提供两个不同的结果。

下面两张图阐明了这一区别。 这两张图都显示包含单个对象的图像。

在上图中,使用 4 邻域检测对象。 对于此对象,轮廓长度将位于对象边缘的所有像素相加。 仅考虑水平和垂直像素连接。 因此,该对象的轮廓长度为 30 倍正交长度。

在下图中,blob 分析使用 8 邻域。 轮廓长度还考虑了对角边缘。该对象的轮廓长度为 14 倍正交长度 + 8 倍对角长度。

结果在轮廓长度上有所不同。

4 邻域:Contour Orthogonal = 30, Diagonal = 0

图 426。4 邻域:Contour Orthogonal = 30, Diagonal = 0


8 邻域:Contour Orthogonal = 14, Diagonal = 8

图 427. 8 连通邻域:Contour Orthogonal = 14,Diagonal = 8


连接两个相邻对角像素的边缘具有轮廓长度 它表示等腰三角形的斜边。此平方根运算不由 blob 分析算子执行。 请确保在后续的设计中执行此操作。 总轮廓长度可以通过以下方式获取

对于边缘与图像边缘不平行的对象,轮廓长度的对角线分量非常重要。

例如,半径为 5.5 像素的圆的周长为 。下图展示了此圆。 在左侧图中,周长使用 8 连通邻域计算。 在右侧图中,周长使用 4 连通邻域计算。 该示例表明,使用 8 连通邻域计算的结果 (32.97) 接近 理论结果 (34.56), 而使用 4 连通邻域计算的结果 (40) 则较差——它等于具有相同直径的矩形的周长。

使用 8 连通邻域(左)和 4 连通邻域(右)计算周长

图 428. 使用 8 连通邻域(左)和 4 连通邻域(右)计算周长