将Blob的质心与边界框的中心进行比较

时间:2014-07-20 12:34:52

标签: image algorithm image-processing vb6

我试图将斑点的质心与一个位于斑点中间的小窗口进行比较。边界框。此窗口的尺寸是边界框尺寸的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%?

1 个答案:

答案 0 :(得分:1)

你有边界框的边缘:

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坐标做同样的事情,你已经完成了。