我试着将blob的质心与一个位于blob边界框中间的小窗口进行比较。此窗口的尺寸是边框尺寸的20%。
我首先实现了这个算法,以找到blob质心
这是密码:

For y = 0 To bmp.ScaleHeight - 1
  For x = 0 To bmp.ScaleWidth - 1
    If bmp.Point(x, y) = vbWhite
      Then
        Xs = Xs + x
        Ys = Ys + y
        area = area + 1
    endIF
  Next x
Next y
YCenteroid = Ys / area
XCentroid = Xs / area

然后我用
BlobHeight = MaxY - MinY
BlobWidth = MaxX - MinX

我现在有了边界框和质心,如何比较小中心框内外的质心,大约是边界框的20%?

最佳答案

有边界框的边:

MinX    MaxX
  |      |
  ########-MinY
  #      #
  #      #
  #      #
  ########-MaxY

给定BlobWidth,我们知道中心框从.4*BlobWidth开始,持续.2*BlobWidth(直到(.4+.2)*BlobWidth = .6*BlobWidth)。
MinCenteredX = MinX + 0.4*BlobWidth
MaxCenteredX = MinX + 0.6*BlobWidth

现在您只需检查XCentroid是否在它们之间,即:
MinCenteredX <= XCentroid And XCentroid <= MaxCenteredX

现在对y坐标再做同样的操作,就完成了。

10-07 13:08