Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab regionprops方向与逻辑和整数的行为不同_Matlab - Fatal编程技术网

Matlab regionprops方向与逻辑和整数的行为不同

Matlab regionprops方向与逻辑和整数的行为不同,matlab,Matlab,如果我们给出一个逻辑或整数,regionprops的“方向”行为似乎有所不同: 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_orientatio

如果我们给出一个逻辑或整数,regionprops的“方向”行为似乎有所不同:

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在不改变类型的情况下以与整数相同的逻辑方式运行?

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

当您传递
B
(逻辑矩阵)时,它被视为a,其中有三个不同的1区域(即8个连接的组件)。为每个区域返回度量


我认为没有任何方法可以让
regionprops
在不转换逻辑输入类型的情况下对其进行不同的处理。逻辑输入似乎总是经过一个连接的组件处理步骤,该步骤将每个“孤岛”标识为要分析的独立区域。

出于好奇,为什么不能使用类似
b_-orientation=regionprops(双(b),'orientation')的东西呢?
?或者
b_orientation=regionprops(uint8(b),'orientation')
如果内存有问题。无论如何,出现这种差异似乎是因为逻辑输入
regionprops
计算
true
值之间的连接组件,而对于数字,它将每个数字解释为已经定义了一个组件。比较
a\u-orientation=regionprops(a,'Area')
a\u-orientation=regionprops(B,'Area')
对于regionprops“Area”是相同的。我知道我可以利用你的建议,但我希望了解regionprops为什么会这样。你的问题是如何避免这种情况,而不是它为什么会发生。原因是我在评论中所说的。格诺维奇在他的回答中提供了更好的解释。