让我们说,我有一个矩阵(imread)如下:
A = [0 0 1 0 0;
0 0 1 0 0;
0 1 1 1 0;
0 0 1 0 0;
0 0 0 0 0];
我想将非零元素的边界框作为
BB = show_me_the_bounding_box(A);
BB = [1, 2, 4, 4]; % y0, x0, y1, x0
我应该用什么功能来做呢?
答案 0 :(得分:3)
stats = regionprops(A,'BoundingBox');
BB = stats.BoundingBox;
答案 1 :(得分:2)
要获得您想要的结果,请使用:
[y,x] = ind2sub(size(A), find(A))
coord = [y, x]
[min(coord) max(coord)] % [1 2 4 4]
但请注意,使用正确的约定,边界框为:
[y,x] = ind2sub(size(A), find(A))
coord = [x, y]
mc = min(coord)-0.5
Mc = max(coord)+0.5
[mc Mc-mc] % [1.5 0.5 3 4]
产生的结果与:
相同stats = regionprops(A, 'BoundingBox')
BB = stats.BoundingBox % [1.5 0.5 3 4]
使用以下代码可以轻松地将代码调整为3D图像:
[y,x,z] = ind2sub(size(A), find(A));
coord = [x, y, z];
mc = min(coord)-0.5;
Mc = max(coord)+0.5;
[mc Mc-mc]