我不能正确理解'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);
绝对没有,我得到三个不同的中心点作为输出,每个区域一个。为什么他们提供不同的输出,添加无用的代码行是否真的很必要?
答案 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
的输出是逻辑矩阵。