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

7 ビュー (過去 30 日間)
Meshooo 2016 年 9 月 14 日
コメント済み: Meshooo 2016 年 9 月 16 日
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?
Meshoo

サインインしてコメントする。

### 採用された回答

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;
%%Using Convolution
BW2_CONV = ( conv2(single(BW1),ones(3),'same') == numberNeighboringPixels+1 ) & BW1;
%%Plot and show the results are the same
figure
subplot(3,1,1);
imagesc(BW1); title('Original Image');
subplot(3,1,2);
imagesc(BW1+BW2_LUT); title('Pixels with neighbors (using lookup table)');
subplot(3,1,3);
imagesc(BW1+BW2_CONV); title('Pixels with neighbors (using convolution)');
##### 1 件のコメント表示非表示 なし
Meshooo 2016 年 9 月 16 日
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.

サインインしてコメントする。

### カテゴリ

Find more on Neighborhood and Block Processing in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by