2014-07-20 7 views
0

Я пытаюсь сравнить центроид блоба с маленьким окном, расположенным в центре рамки рамки. Размеры этого окна составляют 20% от размеров ограничительной рамки.Сравнение центроида Блоба с центром ограничивающей рамки

Я реализовал этот алгоритм первым, чтобы найти блоб центроид

и это код:

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

У вас есть края прямоугольника:

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 и вы сделали.

Смежные вопросы