Matlab 返回单个结果的regionprops
我不能正确理解函数“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); 这完全不起作用,我得到三个不同的中心点作为输出,每个区域一
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。我正要发表评论。