In MATLAB, the function ‘regionprops’ is used to
measure the image properties. Here are some basic properties computed without
using the function.
Read
an image and find the connected components using ‘bwlabel’ function.
Using the Labeled matrix as an input, the properties
can be measured.
Example:
A=[1 0 0 1
1 1 1 1
0 0 1 1]
To find Area:
· The total number of ‘ON’ pixels in the image.
The number of ones in the matrix is 8.
To find Centroid:
·
Find the row and column having pixel
value one. Eg.[row,column]=find(label==1)
Row=[ 1 2
2 2 3
1 2 3]
Column=[ 1 1
2 3 3
4 4 4]
·
Find the mean of the row and column
having pixel value one.
Mean of Row=2 and mean of column=
2.75
To find the Bounding Box:
·
We need 4 points, starting position(x,y)
, length and breadth.
·
Minimum value of row and column minus
0.5 gives starting position(x,y) respectively
·
Minimum value of row=1-0.5=0.5
·
Minimum value of column=1-0.5=0.5
·
Maximum value of column – minimum value
of column+1 gives breadth of the box
·
Maximum value of column=4
·
Max value-min value of column=3+1
·
Maximum value of row- minimum value of
row +1gives length of the box
·
maximum value of row=3
·
Max value – Min value=2+1
·
Bounding Box value for the given
example:0.5000 0.5000 4.0000
3.0000
To find the Perimeter
·
Find the boundary of the labeled
component
Boundary pixels:
1 1
2 2
2 3
1 4
2 4
3 4
3 3
2 2
2 1
1 1
·
Find the distance between the each adjoining pair of pixels around the border of the region.
· Use the distance formula:
·
For instance, calculate the distance
between the two points (1,1) and (2,2). distance=sqrt((2-1).^2+(2-1).^2)=1.41
·
Similarly, the distance is computed for
all the pixel positions.
·
The perimeter for the given example is
10.2426
To find the Roundness:
·
Roundness of an object can be determined using the
formula:
Roundness=(4*Area*pi)/(Perimeter.^2)
If the Roundness is greater than 0.90 then, the object is circular in shape.
Result= (4*8*3.14)/10.2426.^2=0.9582
To find the Equivdiameter
·
Formula: sqrt(4*Area/pi).
Equivdiameter for the given example:3.1915
MATLAB CODE:
%Measure Basic Image Properties without using 'regionprops' function
%Measure Area, Perimeter, Centroid , Equvidiameter, Roundness and Bounding Box
clc
%Read Original Image
I=imread('coins.png');
%Convert to Binary
B=im2bw(I);
%Fill the holes
C=imfill(B,'holes');
%Label the image
[Label,Total]=bwlabel(C,8);
%Object Number
num=4;
[row, col] = find(Label==num);
%To find 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);
%Find Area
Obj_area=numel(row);
display(Obj_area);
%Find Centroid
X=mean(col);
Y=mean(row);
Centroid=[X Y];
display(Centroid);
plot(X,Y,'ro','color','r');
hold off;
%Find Perimeter
BW=bwboundaries(Label==num);
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,2)-c(i+1,2)).^2);
end
display(Perimeter);
%Find Equivdiameter
EquivD=sqrt(4*(Obj_area)/pi);
display(EquivD);
%Find Roundness
Roundness=(4*Obj_area*pi)/Perimeter.^2;
display(Roundness);
%Calculation with 'regionprops'(For verification Purpose);
%Sdata=regionprops(Label,'all');
%Sdata(num).BoundingBox
%Sdata(num).Area
%Sdata(num).Centroid
%Sdata(num).Perimeter
%Sdata(num).EquivDiameter