Adjacency and connectivity are used to define the basic relationship between the pixel values. There are various ways in which the pixel values can be adjacent to each other or connected, viz. 4-adjacency, 8-adjacency and m-adjacency; and correspondingly 4-connectivity, 8-connectivity and m-connectivity.

In order to identify objects in a digital pattern, we need to locate groups of black pixels that are “connected” to each other. In other words, the objects in a given digital pattern are the connected components of that pattern. And pixels can be connected when they exhibit one of the various types of adjacency.

Program to demonstrate Connectivity

Create a checker board pattern and count the number of objects using 4 and 8 connectivity.

clc; clear all;close all

I=checkerboard(20);
figure,imshow(I);
[l num]=bwlabel(I); % check the number of objects using 4 and 8
RGB=label2rgb(l); %Display the objects using conversion label2rgb
figure,imshow(RGB)


Program to demonstrate that Connectivity helps in
1) applying bounding box for selected Objects
2) calculate
i)area ii) mean iii)centroid iv) perimeter


clc; clear all; close all;
I=imread('coins.png');
figure,imshow(I);
B=im2bw(I);
figure,imshow(B);
c=imfill(B,'holes'); % Fill the holes
figure,imshow(c);
[label,num]=bwlabel(c); %label the image
display(num)
object=3; % To apply bounding box for labelled 3
[row col]=find(label==object); % to find the coordinates of the bounding box
sx=min(col)-0.5;
sy=min(row)-0.5;
breadth=max(col)-min(col)+1;
len=max(row)-min(row)+1;
bbox=[sx sy breadth len];
display(bbox);
figure,imshow(I);
hold on;

x=zeros([1 5]);
y=zeros([1 5]);
x(:)=bbox(1);
y(:)=bbox(2);
x(2:3)=bbox(1)+bbox(3);

y(3:4)=bbox(2)+bbox(4);
plot(x,y);
obj_area=numel(row);
display(obj_area);

% Finding Centroid
X=mean(col);
Y=mean(row);
Centroid=[X Y];
display(Centroid);
plot(X, Y,'o','color','r');
hold off

% Perimeter calculation
BW=bwboundaries(label==object);
figure, imshow(I);
hold on
visboundaries(BW);
c=cell2mat(BW(1));
perimeter=0;
for i=1:size(c,1)-1
perimeter=perimeter+sqrt((c(i,1)-c(i+1,1)^2+c(i+1,2)).^2);
end
display(perimeter);

%calculation with region propeerties for verification purpose
sdata=regionprops(label,'all'); % click on sdata and check for different parameters

Thus, adjacency, connectivity and component labelling can be summed up here.
Check out the next article on Arithmetic operations on Digital Images of Digital Image.
Go back to Spatial resolution and quantization of digital image