Count Objects in an Image

In this example, you import an intensity image of a wheel from the MATLAB® workspace and convert it to binary. Then, using the Opening and Label blocks, you count the number of spokes in the wheel. You can use similar techniques to count objects in other intensity images. However, you might need to use additional morphological operators and different structuring elements.

    Note:   Running this example requires a DSP System Toolbox™ license.

You can open the example model by typing

ex_vision_count_objectsex_vision_count_objects

on the MATLAB command line.

  1. Create a new Simulink® model, and add to it the blocks shown in the following table.

    Block

    Library

    Quantity

    Image From File

    Computer Vision System Toolbox™ > Sources

    1

    Opening

    Computer Vision System Toolbox> Morphological Operations

    1

    Label

    Computer Vision System Toolbox > Morphological Operations

    1

    Video Viewer

    Computer Vision System Toolbox > Sinks

    2

    Constant

    Simulink > Sources

    1

    Relational Operator

    Simulink > Logic and Bit Operations

    1

    Display

    DSP System Toolbox > Sinks

    1

  2. Use the Image From File block to import your image. Set the File name parameter to testpat1.png. This is a 256-by-256 matrix image of 8-bit unsigned integers.

  3. Use the Constant block to define a threshold value for the Relational Operator block. Set the Constant value parameter to 200.

  4. Use the Video Viewer block to view the original image. Accept the default parameters.

  5. Use the Relational Operator block to perform a thresholding operation that converts your intensity image to a binary image. Set the Relational Operator parameter to <.

    If the input to the Relational Operator block is less than 200, its output is 1; otherwise, its output is 0. You must threshold your intensity image because the Label block expects binary input. Also, the objects it counts must be white.

  6. Use the Opening block to separate the spokes from the rim and from each other at the center of the wheel. Use the default parameters.

    The strel function creates a circular STREL object with a radius of 5 pixels. When working with the Opening block, pick a STREL object that fits within the objects you want to keep. It often takes experimentation to find the neighborhood or STREL object that best suits your application.

  7. Use the Video Viewer1 block to view the opened image. Accept the default parameters.

  8. Use the Label block to count the number of spokes in the input image. Set the Output parameter to Number of labels.

  9. The Display block displays the number of spokes in the input image. Use the default parameters.

  10. Connect the block as shown in the following figure.

  11. Set the configuration parameters. Open the Configuration dialog box by selecting Model Configuration Parameters from the Simulation menu. Set the parameters as follows:

    • Solver pane, Stop time = 0

    • Solver pane, Type = Fixed-step

    • Solver pane, Solver = discrete (no continuous states)

  12. Run the model.

    The original image appears in the Video Viewer1 window. To view the image at its true size, right-click the window and select Set Display To True Size.

    The opened image appears in the Video Viewer window. The following image is shown at its true size.

    As you can see in the preceding figure, the spokes are now separate white objects. In the model, the Display block correctly indicates that there are 24 distinct spokes.

You have used the Opening and Label blocks to count the number of spokes in an image. For more information about these blocks, see the Opening and Label block reference pages in the Computer Vision System Toolbox Reference. If you want to send the number of spokes to the MATLAB workspace, use the To Workspace block in Simulink or the Signal to Workspace block in DSP System Toolbox. For more information about STREL objects, see strel in the Image Processing Toolbox documentation.

Was this topic helpful?