我有一個3D圖像,分爲連續區域,其中每個體素具有相同的值。分配給該區域的值對該區域是唯一的,並用作標籤。下面的例子描述了圖像與2D情況:MATLAB在3D圖像中識別相鄰區域
1 1 1 1 2 2 2
1 1 1 2 2 2 3
Im = 1 4 1 2 2 3 3
4 4 4 4 3 3 3
4 4 4 4 3 3 3
我想創建描述這些區域之間adjaciency的曲線圖。在上述情況下,這將是:
0 1 0 1
A = 1 0 1 1
0 1 0 1
1 1 1 0
我正在尋找一個迅速解決在MATLAB大型3D影像做到這一點。我想出了一個遍歷所有區域的解決方案,每個迭代需要0.05s
- 不幸的是,對於32,000個區域的圖像,這將花費半個多小時。現在有人有這樣更優雅的方式嗎?我張貼低於目前的算法:
labels = unique(Im); % assuming labels go continuously from 1 to N
A = zeros(labels);
for ii=labels
% border mask to find neighbourhood
dil = imdilate(Im==ii, ones(3,3,3));
border = dil - (Im==ii);
neighLabels = unique(Im(border>0));
A(ii,neighLabels) = 1;
end
imdilate
是我想避免的瓶頸。
謝謝你的幫助!
MEX文件?快速照明.... – kkuilla
感謝您的建議。不過,似乎imdilate已經在MEX文件中實現了! – Lisa