regionprops返回单个结果

时间:2016-09-27 20:39:16

标签: 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);

绝对没有,我得到三个不同的中心点作为输出,每个区域一个。为什么他们提供不同的输出,添加无用的代码行是否真的很必要?

1 个答案:

答案 0 :(得分:3)

guard let dictionary = snapshot.value as? [String: AnyObject], let email = (snapshot.value as? NSDictionary)?["name"] as? String, let latitude = (snapshot.value as? NSDictionary)?["latitude"] as? Double, let longitude = (snapshot.value as? NSDictionary)?["longitude"] as? Double, let online = ((snapshot.value as? NSDictionary)?["online"] as? Bool)! else { // Some error } assumed that the input is a labels matrix的输入。如果不是,则为{{3}},因为它被处理,好像所有guard let值都是同一对象的一部分。

您可以通过明确地将其转换为Flatten Packages矩阵

来解决此问题
regionprops

更好的选择可能是使用1而不是logical构建regionprops(logical(a), 'Centroid') % or regionprops(a == 1, 'Centroid') ,使a成为logical

false

no-op erode导致它工作的原因是zeros的输出是逻辑矩阵。