Lets Learn together... Happy Reading

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

Table Tennis Ball Detection-MATLAB 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:





like button Like "IMAGE PROCESSING" page

11 comments:

Arjun Nichal said... Reply to comment

I really like your blog.....its awesome....
Keep blogging.....

Unknown said... Reply to comment

Really very useful.. thanks for sharing..

Unknown said... Reply to comment

Really very useful & thanks for sharing...

Anonymous said... Reply to comment

I just saw this blog yesterday, it is really very informative for beginner. If there is also some examples for recognition and classification. It would be very useful for learners.

Anonymous said... Reply to comment

It is very informative for beginner. If there is also some examples for recognition and classification then it would also very useful. Thank for sharing.

Galaxy Winners -kokila Hansamali said... Reply to comment

It is very useful because we are doing a sky observation project based on image processing using MATLAB.... I agree with saila it may be very helpful to us that if you present some examples on recognition

Ameya said... Reply to comment

Hey..very informative code..but when I try it the mark for the ball isn't at the proper place..it's outside the image..Can it be because I don't have the original image?

Mayur Kagathara said... Reply to comment

WOW dude.. thank u very much

Unknown said... Reply to comment

Hi ! I tried the code above, only the original image with ball marked with a red cross appears. Didn't get the calculation report or binary image. Could you help? Or is the code not adequate?

falah said... Reply to comment

Hi ! I tried the code above, only the original image with ball marked with a red cross appears. Didn't get the calculation report or binary image. Could you help? Or is the code not adequate?

PRIYANKANARAYANAN said... Reply to comment

i tried this coding for an eye image to detect the OD but the bounding box is not displayed and segmented please help me out

Enjoyed Reading? Share Your Views

Previous Post Next Post Home
Google ping Hypersmash.com