我認爲這可能是更簡單的丟棄使用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