我试着将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坐标再做同样的操作,就完成了。