How to find nearby labels?

I have matrix I and I want to show that region with label 1 is neighbours with regions with label 2 and 4. Or region with label 2 is neighbour with region 1,4,5,and 3.
I =
1 1 1 2 3 3
1 1 2 2 3 3
4 4 4 5 5 3
4 4 4 4 5 5

 Accepted Answer

Andrei Bobrov
Andrei Bobrov on 25 Jun 2019
Edited: Andrei Bobrov on 25 Jun 2019
I =[...
1 1 1 2 3 3
1 1 2 2 3 3
4 4 4 5 5 3
4 4 4 4 5 5];
N = unique(I);
n = numel(N);
out = cell(n,2);
for ii = 1:n
out(ii,:) = {ii, unique(I(bwdist(I == ii,'chessboard')==1))};
end
or
N = unique(I);
n = numel(N);
out = cell(n,2);
o3 = ones(3);
for ii = 1:n
lo = I == ii;
out(ii,:) = {ii, unique(I(imdilate(lo,o3) + lo == 1))};
end
out_as_table = cell2table(out,'v',{'number','neighbours'})

1 Comment

Hi, Mr Andrei
I want to know the means of the functions on the above code. For example:
rgb2lab means Covert RGB to CIE 1967 L*a*b*
nume1 means ..........................
o3 means ...................
ones (3) means ...............................
cell(n,2); means .............
ii means ............
Io means ..............
I(imdilate(lo,o3) means .....................

Sign in to comment.

More Answers (0)

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Asked:

on 25 Jun 2019

Commented:

on 21 Jun 2021

Community Treasure Hunt

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

Start Hunting!