top of page

Using MATLAB to Measure the Diameter of an Object within an Image





AIM:

Through this application note you will be able to write a MATLAB script file to import an image, segment the image in order to isolate the desired object from its background and then use the MATLAB functions that come with the Image Processing Toolbox to determine the objects diameter.

INTRODUCTION:

MATLAB is a high-level language and interactive environment for computer computation, visualization, and programming.

Image Processing Toolbox is an application available for use in MATLAB, which provides a comprehensive set of reference-standard algorithms, functions, and apps for image processing, analysis, visualization, and algorithm development.

MATLAB Software

Image Processing Toolbox (Downloadable application)

PROCESS:

Import Image

Open the MATLAB software and in the application section; download the Image Processing Tool Box. Create a new MATLAB script file. Refer to Figure 2 to begin adding code to import the desired image to measure into the MATLAB workspace.It is important that the Current Folder that you are working out of be the folder that contains both the script file and image. The command imread reads an image and converts it into a “3-dimensional” matrix in the RGB color space. The image used in this tutorial is ball.jpg (Figure 1), which is a 534 by 401 pixel image. The imread function converts this into a matrix that is 401x534x3 (Rows x Columns x RGB). The final dimension (RGB) corresponds to a red, green and blue intensity level. Use imshow to view the produced image in a new window.


Figure 1; Original Image,



Figure 2; Code to Import an Image



Figure 3; obj variable in workspace



Segment Image

Follow the code in Figure 4 below to segment the image into a binary image to differentiate the background from the desired objects. The first step taken is to divide the image into three images based on the intensities of each red, green and blue component within the image. This is Color Based Image Segmentation. You can see from Figure 5 that the blue plane is the best choice to use for Image Thresholding because it provides the most contrast between the desired object (foreground) and the background. Image Thresholding takes an intensity image and converts it into a binary image based on the level desired (See line 25). A value between 0 and 1 determines which pixels (based on their value) will be set to a 1 (white) or 0 (black)). To choose the best value suited for your application right-click on the value and at the top of the menu and select “Increment Value and Run Section”. Set the increment value to 0.01 and choose the best value at which to threshold. Figure 5 shows the result of the Image Thresholding at 0.37. You can see that the image (Top-right of Figure 6) has been segmented between the object we desire to measure and the background.


Figure 4; Code to Segment the Image


Figure 5; Color Thresholding



Figure 6; Complete Segmentation and Cleanup Image

Segmentation Continued (Remove Noise)

As you can see from the top-left image in Figure 6 there is quite a bit of “noise” and we need to clean the image up significantly to improve the accuracy of our diameter measurement. Refer to Figures 6 & 7 on the procedures taken to clean up the image and provide a more uniform blob to analyze. Blobs in this document are any collection of white pixels that touch to create a cohesive and distinct object.


Figure 7; Code to Cleanup Image/Remove Noise



Measuring Image

The image in the bottom-right corner of Figure 6 is the result of all image segmentation and cleanup procedures to provide one distinct and cohesive blob, which represents the ball in the original image. Having the original image in a binary form such as this will make it easy for other functions built into MATLAB to quickly analyze the region and a host of different information. The regionprops function is the tool that will provide the MajorAxisLength of the blob in the image. As you can see, by not suppressing line 45 (Figure 8) with a semi-colon, the diameter is displayed in the Command Window (Figure 10).


Figure 8; Code to Measure the Object Diameter


Results

The diameter is now displayed in the Command Window to be approx. 170 pixels across. This was verified in Figure 9 by using the imdistline function in line 50 (Figure 8). As you can see between the two figures, the value calculated by the code was very close to the manual measurement in Figure 9.


Figure 9; Original Image Manually Measure




Figure 10; Diameter Output in the Command Window



References

1. Image Processing Made Easy. Perf. Andy Thé. Mathworks. N.p., 15 Oct. 2014. Web. 07 Nov. 2014. <http://www.mathworks.com/videos/image-processing-made-easy81718.html>.

2. Author: Matthew Wesolowski

568 views0 comments

Recent Posts

See All
bottom of page