Matlab:如何在边界框中找到一个点

时间:2013-10-16 21:23:43

标签: matlab find bounding-box

我有一系列分散在整个大矩阵中的点或位置,矩阵内部有一个小的边界框。我需要一种方法来检查数组中的点是否在边界框内。谢谢你的建议。

BoundingBox = [BB1,BB2,BB3,BB4];
Array = [x1,y1;x2,y2;x3,y3;x4,y4;x5,y5;x6,y6];

我试过了

ismember([BB1,BB2,BB3,BB4],Array);

ismember(rectangle('Position',[BB1,BB2,BB3,BB4]),Array);

但没有任何效果

2 个答案:

答案 0 :(得分:2)

试试这个:

% Array         an Nx2 matrix containing the X,Y coordinates of the points with
%               respect to the big matrix
%
% BoundingBox   a vector of length 4 representing the bounding box as follows:
%               [minimumX, minimumY, sizeX, sizeY]


isInBox = @(M,B) (M(:,1)>B(1)).*(M(:,1)<B(1)+B(3)).*(M(:,2)>B(2)).*(M(:,2)<B(2)+B(4));
isInBox(Array,BoundingBox);

如果您将严格不等式更改为>=<=,您也会接受边界框上的点。

答案 1 :(得分:1)

您应该仔细阅读ismember()的文档:

  
    

属于set array

的成员的数组元素   

因此,此检查与设置操作有关。

相反,您应该使用inpolygon()来检查点是否在多边形内。