我试图将斑点的质心与一个位于斑点中间的小窗口进行比较。边界框。此窗口的尺寸是边界框尺寸的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%?
答案 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坐标做同样的事情,你已经完成了。