Matlab 返回单个结果的regionprops

Matlab 返回单个结果的regionprops,matlab,Matlab,我不能正确理解函数“regionprops”。例如,如果我创建一个包含三个不同区域的二进制矩阵,它只会将一个中心点作为输出: a = zeros(100,100); a(1:49,1:49) = 1; a(1:25,75:100) = 1; a(51:100,51:100)= 1; spy(a) regionprops(a,'Centroid') 但是如果我加上一行 a=bwmorph(a,'erode',0); 这完全不起作用,我得到三个不同的中心点作为输出,每个区域一

我不能正确理解函数“regionprops”。例如,如果我创建一个包含三个不同区域的二进制矩阵,它只会将一个中心点作为输出:

a  = zeros(100,100);
a(1:49,1:49)    = 1;
a(1:25,75:100)  = 1;
a(51:100,51:100)= 1;
spy(a)

regionprops(a,'Centroid')
但是如果我加上一行

    a=bwmorph(a,'erode',0);

这完全不起作用,我得到三个不同的中心点作为输出,每个区域一个。为什么它们会给出不同的输出?是否真的需要添加一行无用的代码?

输入到
regionprops
。如果它不是,那么它就是,因此它的处理就像所有
1
值都是同一对象的一部分一样

您可以通过将其显式转换为
逻辑矩阵来解决此问题

regionprops(logical(a), 'Centroid')   % or regionprops(a == 1, 'Centroid')
更好的选择可能是首先使用
false
而不是
zero
来构造
a
,从而使
a
具有逻辑性

a = false(100, 100);
a(1:49,1:49)    = 1;
a(1:25,75:100)  = 1;
a(51:100,51:100)= 1;

无操作腐蚀导致其工作的原因是
bwmorph
的输出是一个逻辑矩阵。

对于
false
-+1。我正要发表评论。