2016-03-01 275 views
1

我想計算一個二進制圖像中的六角形單元格的百分比,這意味着有另外6個鄰居單元格的單元格的數量。例如,用1,2,3和4標記的單元都有6個鄰居單元。如何計算每個單元格的鄰居數量?

我正在尋找一個可以在Matlab中做到的功能。我已經嘗試了不同的Matlab函數,比如regionprops和bwconncomp。但是,沒有人爲我工作。有什麼想法。

一個簡單的形象是在這裏:

enter image description here

+0

親愛的安德拉斯, 其實,我試過刪除它,但我不能爲什麼? –

+0

親愛的安德拉斯, 相信我,我做到了,但我不知道有什麼問題!!你怎麼知道有人發佈了問題或他需要幫助?我的個人資料中可以設置任何設置嗎?我是這個網站的新手。 –

+0

Alaa我看到你已經成功刪除了你之前的問題。我在這裏刪除了我的評論(因爲它們現在已經過時了),我建議你對你的評論也一樣(如果你用鼠標懸停在你的評論上,在它的末尾會出現一個小的「x」圖標)。 –

回答

1

嗨,你可以使用bwlabeln功能和形態功能的繼承。

下面的代碼做這項工作:

% load image and post processing 
A = imread('LR0gx.png'); 
I = rgb2gray(A); 
I = imcomplement(I); 

% labelling of the image 
L = bwlabeln(I); 

figure; subplot 121; 
imagesc(L); title('cells labeling') 

% search and count the neighbours using the dilate function 
label = unique(L); 
for ii = label(2:end)' 
    I_temp = L == ii; 
    I_temp = bwmorph(I_temp,'dilate',2) - I_temp; 
    I_temp2 = L; I_temp2(~I_temp) = 0; 
    number_of_neighbours(ii) = size(unique(I_temp2), 1)-1; 
end 

L_2 = zeros(size(L)); 
for ii = label(2:end)' 
    L_2(L == ii) = number_of_neighbours(ii); 
end 
subplot 122; 
imagesc(L_2); title('number of neighbours'); colorbar; 

結果是以下之一:

enter image description here

PS:你必須刪除一個count因爲細胞的分區目前在功能unique

Pss:需要imcomplement,因爲bwlabeln標籤爲白色值。

+0

親愛的R. Bergamote 感謝您的幫助,但我認爲它不能解決問題。我需要的是找到每個單元的鄰居數量。 –

+0

真的!我的回答與問題完全無關,請讓我看看:D –

+0

@AlaaAlwaisy,我更新了答案,現在應該沒問題 –