How to find number of neigbours of a pixel in binary image?
7 ビュー (過去 30 日間)
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?
Teja Muppirala 2016 年 9 月 14 日
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;
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)');