TABLE TENNIS BALL DETECTION-MAT LAB CODE:
Using the concept of
roundness to detect a circular object, the table tennis ball in mid air or in
palm is detected.
FLOW CHART:
1. Read input image
·
Read
a RGB image with ball in mid air or ball in palm.
MATLAB
CODE:
%Read the input image
Img=imread(Filename);
axes('Position',[0 .1 .74 .8],'xtick',[],'ytick',[]);
imshow(Img);title('Original Image');
2. Image Pre-processing
·
Convert
the RGB image to grayscale image.
·
Apply
median filter
·
Adjust
the brightness and contrast of the image using ‘imadjust’ function.
MATLAB CODE:
I=rgb2gray(Img); % Converting RGB Image to
% Gray Scale
Image
I=im2double(I); % Converting Gray scale Image
% to Double type
J = medfilt2(I,[3 3]); % Median Filter ,
% 3x3
Convolution
% on Image
I2 = imadjust(J); % Improve to quality of Image
% and
adjusting
% contrast and brightness values
3. Threshold the image
·
The
pixel value greater than the threshold value is converted to one else zero.
MATLAB CODE:
Ib = I2> 0.9627;
4. Image Labeling
·
Label
the connected components using ‘bwlabel’ function
·
Remove
components that are smaller in size.
MATLAB CODE:
%Labelling
[Label,total] = bwlabel(Ib,4); % Indexing segments by
% binary
label function
%Remove components that is small and tiny
for i=1:total
if(sum(sum(Label==i)) < 500 )
Label(Label==i)=0;
end
end
5. Find the image properties: Area, Perimeter
and Centroid
·
Using
‘regionprops’ function, find the Area, Perimeter, Bounding Box and Centroid.
MATLAB CODE:
%Find the properties of the image
Sdata
= regionprops(Label,'all');
6. Calculate the Roundness
·
Roundness
= 4*PI*A/P^2
MATLAB CODE:
%Find the
components number
Un=unique(Label);
my_max=0.0;
%Check the Roundness metrics
%Roundness=4*PI*Area/Perimeter.^2
for i=2:numel(Un)
Roundness=(4*pi*Sdata(Un(i)).Area)/Sdata(Un(i)).Perimeter.^2;
my_max=max(my_max,Roundness);
if(Roundness==my_max)
ele=Un(i);
end
end
7. Find the component with the maximum
roundness value
·
Find
the max of the Roundness value for all the labeled components
8. Show the detected table tennis ball
·
Use
the ‘BoundingBox’ values to plot rectangle around the ball
·
Mark
the centroid of the ball
MATLAB CODE:
%Draw the box around the ball
box=Sdata(ele).BoundingBox;
box(1,1:2)=box(1,1:2)-15;
box(1,3:4)=box(1,3)+25;
%Crop the image
C=imcrop(Img,box);
%Find the centroid
cen=Sdata(ele).Centroid;
%Display the image
axes('Position',[0 .1 .74 .8],'xtick',[],'ytick',[])
imshow(Img);
hold on
plot(cen(1,1),cen(1,2),'rx');%Mark the centroid
9. Generate report
·
Find
the radius using the Equidiameter obtained using ‘regionprops’ function.
·
Display
the radius,Area,Perimeter and Centroid of the ball.
·
Show
the Binary and Original image of the cropped ball.
MATLAB CODE:
Rad=(sdata(ele).EquivDiameter)/2;
Rad=strcat('Radius of the
Ball :',num2str(Rad));
Area=sdata(ele).Area;
Area=strcat('Area of the
ball:',num2str(Area));
Pmt=sdata(ele).Perimeter;
Pmt=strcat('Perimeter of
the ball:',num2str(Pmt));
Cen=sdata(ele).Centroid;
Cent=strcat('Centroid:',num2str(Cen(1,1)),',',num2str(Cen(1,2)));
BALL IN MID AIR: