【问题标题】:How can I calculate the number of the neighbours for each cell?如何计算每个单元格的邻居数?
【发布时间】:2016-03-01 23:07:57
【问题描述】:

我想计算二值图像中六边形单元格的百分比,这意味着有另外 6 个相邻单元格的单元格的数量。例如标有1、2、3、4号的单元格都有6个相邻单元格。

我正在寻找可以在 Matlab 中执行此操作的函数。我尝试了不同的 Matlab 函数,例如 regionprops 和 bwconncomp。然而,没有人为我工作。有什么想法吗?

这里有一张简单的图片:

【问题讨论】:

  • 亲爱的安德拉斯,事实上,我已经尝试删除它,但我不能,我不为什么?
  • 亲爱的安德拉斯,相信我,我做到了,但我不知道有什么问题!!。你怎么知道有人发布了问题或他需要帮助?我可以在我的个人资料中进行任何设置吗?我是这个网站的新手。
  • 阿拉我看到你已经成功删除了你之前的问题。我已经在这里删除了我的 cmets(因为它们现在已经过时了),我建议你对你的也这样做(如果你用鼠标悬停在你的评论上,一个小的“x”图标会出现在它的末尾)。

标签: image matlab image-processing


【解决方案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;

结果如下:

Ps:你必须删除一个到count,因为单元格的分区存在于函数unique中。

Pss:imcomplement 是必需的,因为bwlabeln 标签为白色值。

【讨论】:

  • 亲爱的 R. Bergamote 感谢您的帮助,但我认为它不能解决问题。我需要的是找到每个单元格的邻居数。
  • 真的!我的回答与问题完全无关,让我看看:D
  • @AlaaAlwaisy,我更新了答案,现在应该没问题
  • @AlaaAlwaisy 如果答案解决了您的问题,请考虑将其标记为已接受。另外,如果您觉得答案有用,请考虑对其进行投票。这些行为会给那些帮助你的人带来声誉,让他们的工作变得有价值(同样,接受答案也会给你一些代表)。
猜你喜欢
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2019-07-24
相关资源
最近更新 更多