MATLAB Answers


How to find number of neigbours of a pixel in binary image?

Dear all,
I have a binary image that contains many lines. I want to detect any pixel that has 2 neighboring pixels and in some cases 3 or 1 neighboring pixel (considering all possible 8-connectivity directions).
In other words, go to each pixel and check how many neighbors it has by checking the 8-connectivity. If it has 2 neighbors then select this pixel and finally will have a binary image that contains these pixels.
Any idea how to do that?

  댓글 수: 0

로그인 to comment.

답변 수: 1

Teja Muppirala 님의 답변 14 Sep 2016
 채택된 답변

Here are two ways to do it:
numberNeighboringPixels = 2; % Can also be 1 or 3
BW1 = rand(15,60) > 0.9; % Just a sample image
%%Using Lookup Table
lut = makelut(@(x)sum(x(:))==(numberNeighboringPixels+1),3);
BW2_LUT = bwlookup(BW1,lut) & BW1;
%%Using Convolution
BW2_CONV = ( conv2(single(BW1),ones(3),'same') == numberNeighboringPixels+1 ) & BW1;
%%Plot and show the results are the same
imagesc(BW1); title('Original Image');
imagesc(BW1+BW2_LUT); title('Pixels with neighbors (using lookup table)');
imagesc(BW1+BW2_CONV); title('Pixels with neighbors (using convolution)');

  댓글 수: 1

Thank you very much. I think there are some conditions that can not be solved with this approach and will try to note them later.

로그인 to comment.

Translated by