使用BoundinBox显示的信息的顺序是什么,我的意思是:{y,x,Δy,Δx}
或{x,y,Δx,Δy}
答案 0 :(得分:0)
regionprops
州的文档,'BoundingBox'
:
返回包含区域的最小矩形,(...),例如
[ul_corner width]
。ul_corner
以[x y z ...]
格式指定边界框的左上角。width
以[x_width y_width ...]
格式指定每个维度的边界框的宽度。 (...)
因此图像的BoundingBox格式为[x, y, Δx, Δy]
。现在,重要的是要记住,矩阵是如何在MATLAB中编制索引的。例如:
>> x = [1, 2; 3, 4]
x =
1 2
3 4
>> x(1:2, 1)
ans =
1
3
>> x(1, 1:2)
ans =
1 2
从这个例子可以清楚地看到,MATLAB使用列优先索引,即矩阵中的第一个维度是列( y轴),第二个维度是行( x轴)!
要使用BoundingBox提取图像的一部分,您需要记住正确执行此操作:
>> a = imread('circlesBrightDark.png');
>> bw = a < 100;
>> props = regionprops(bw,'BoundingBox');
>> bbox = props(2).BoundingBox
bbox =
259.5000 79.5000 81.0000 81.0000
>> x = bbox(1);
>> y = bbox(2);
>> dx = bbox(3);
>> dy = bbox(4);
>> circle = a( y : y+dy , x : x+dx )
bw circle