如果我们给出逻辑或整数,似乎regionprops'orientation'的行为是不同的:
A = [ 0 0 0 1 1 0 ;
0 0 0 1 0 0 ;
1 1 0 0 0 0 ;
0 0 0 0 0 0 ;
0 0 0 0 1 0 ;
0 0 0 0 0 0 ]
a_orientation = regionprops(A,'Orientation')
% Orientation: 28.1550
B = logical(A)
b_orientation = regionprops(B,'Orientation')
% 3x1 struct array with fields:
% Orientation
b_orientation.Orientation
% ans =
% 0
%
% ans =
% 45.0000
%
% ans =
% 0
%
如何在不改变类型的情况下使regionprops的逻辑行为与整数相同?
答案 0 :(得分:3)
当您将A
(双精度矩阵)传递到regionprops
时,它被视为label matrix,只有一个标记区域对应于这些区域。它基本上假设您提供给它的数据是bwlabel
的输出。在标记为1的所有像素上计算度量标准。
当您传递B
(逻辑矩阵)时,它被视为binary image,其中找到了三个不同的区域(即8个连接的组件)。为每个地区返回指标。
我不相信有任何方法可以让regionprops
以不同方式处理逻辑输入而不先转换其类型。逻辑输入似乎总是经历连接组件处理步骤,将每个“岛”标识为要分析的单独区域。