我认为这可能是更简单的丢弃使用bwconncomp
而是使用bwlabel
(或bwlabeln
如果这是N维)。
[labelA, numA] = bwlabel (mA);
[labelB, numB] = bwlabel (mB);
inter = labelA & labelB;
cluster_ind = unique (labelA(inter));
match_cluster = repmat ({[]}, numA, 1);
match_ind = repmat ({[]}, numA, 1);
for idx = cluster_ind
%% index with IDs from A to get...
%% ... an array with IDs from B that intersect it
match_clusters{idx} = unique (labelB(labelA == idx));
%% ... linear indices for the elements that match something in B
match_ind{idx} = find (labelA === idx);
end
我假设你有他们,给予bwconncomp
如果没有之前的原始图像,应该是微不足道的,从它的输出重建标签图像。
谢谢,这可能工作。但是我有一个问题。我想知道矩阵A中的点周围的簇是否与矩阵B中的簇相对应的位置。我可以使用bwdist(A,'棋盘')来查找周围的点并且使矩阵C进行比较。然而,问题在于,如果群集靠近在一起,则可以将矩阵B中的单独群集分组在一起。 – Mykje
@Mykje你对集群A周围的点有什么意义?你不需要使用'bwdist',这非常不方便。您可以用一个适当的大小SE来扩大图像,并减去原始图像以获取周围的像素。但这是一个单独的问题。 – carandraug
两个矩阵中的聚类位置没有重叠。然而,矩阵B中的所有聚类将仅位于距离矩阵A中的聚类的一个像素(它们最接近的位置)。我需要知道哪些聚类是近代的,哪些聚焦点是什么。 – Mykje