regionprops orientation与逻辑和整数的行为不同

时间:2017-11-14 16:11:30

标签: matlab

如果我们给出逻辑或整数,似乎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的逻辑行为与整数相同?

1 个答案:

答案 0 :(得分:3)

当您将A(双精度矩阵)传递到regionprops时,它被视为label matrix,只有一个标记区域对应于这些区域。它基本上假设您提供给它的数据是bwlabel的输出。在标记为1的所有像素上计算度量标准。

当您传递B(逻辑矩阵)时,它被视为binary image,其中找到了三个不同的区域(即8个连接的组件)。为每个地区返回指标。

我不相信有任何方法可以让regionprops以不同方式处理逻辑输入而不先转换其类型。逻辑输入似乎总是经历连接组件处理步骤,将每个“岛”标识为要分析的单独区域。