Contents

Graphics

Abandoned Object Detection

This example shows how to track objects at a train station and to determine which ones remain stationary. Abandoned objects in public areas concern authorities since they might pose a security risk. Algorithms, such as the one used in this example, can be used to assist security officers monitoring live surveillance video by directing their attention to a potential area of interest.

This example illustrates how to use the Blob Analysis and MATLAB® Function blocks to design a custom tracking algorithm. The example implements this algorithm using the following steps: 1) Eliminate video areas that are unlikely to contain abandoned objects by extracting a region of interest (ROI). 2) Perform video segmentation using background subtraction. 3) Calculate object statistics using the Blob Analysis block. 4) Track objects based on their area and centroid statistics. 5) Visualize the results.

Watch the Abandoned Object Detection exampleWatch the Abandoned Object Detection example.

Example Model

The following figure shows the Abandoned Object Detection example model.

Store Background Subsystem

This example uses the first frame of the video as the background. To improve accuracy, the example uses both intensity and color information for the background subtraction operation. During this operation, Cb and Cr color channels are stored in a complex array.

If you are designing a professional surveillance system, you should implement a more sophisticated segmentation algorithm.

Detect Subsystem

The Detect subsystem contains the main algorithm. Inside this subsystem, the Luminance Segmentation and Color Segmentation subsystems perform background subtraction using the intensity and color data. The example combines these two segmentation results using a binary OR operator. The Blob Analysis block computes statistics of the objects present in the scene.

Abandoned Object Tracker subsystem, shown below, uses the object statistics to determine which objects are stationary. To view the contents of this subsystem, right-click the subsystem and select Look Under Mask. To view the tracking algorithm details, double-click the Abandoned Object Tracker block. The MATLAB® code in this block is an example of how to implement your custom code to augment Computer Vision System Toolbox™ functionality.

Abandoned Object Detection Results

The All Objects window marks the region of interest (ROI) with a yellow box and all detected objects with green boxes.

The Threshold window shows the result of the background subtraction in the ROI.

The Abandoned Objects window highlights the abandoned objects with a red box.

Abandoned Object Detection

This example shows how to track objects at a train station and to determine which ones remain stationary. Abandoned objects in public areas concern authorities since they might pose a security risk. Algorithms, such as the one used in this example, can be used to assist security officers monitoring live surveillance video by directing their attention to a potential area of interest.

This example illustrates how to use the Blob Analysis and MATLAB® Function blocks to design a custom tracking algorithm. The example implements this algorithm using the following steps: 1) Eliminate video areas that are unlikely to contain abandoned objects by extracting a region of interest (ROI). 2) Perform video segmentation using background subtraction. 3) Calculate object statistics using the Blob Analysis block. 4) Track objects based on their area and centroid statistics. 5) Visualize the results.

Watch the Abandoned Object Detection exampleWatch the Abandoned Object Detection example.

Example Model

The following figure shows the Abandoned Object Detection example model.

Store Background Subsystem

This example uses the first frame of the video as the background. To improve accuracy, the example uses both intensity and color information for the background subtraction operation. During this operation, Cb and Cr color channels are stored in a complex array.

If you are designing a professional surveillance system, you should implement a more sophisticated segmentation algorithm.

Detect Subsystem

The Detect subsystem contains the main algorithm. Inside this subsystem, the Luminance Segmentation and Color Segmentation subsystems perform background subtraction using the intensity and color data. The example combines these two segmentation results using a binary OR operator. The Blob Analysis block computes statistics of the objects present in the scene.

Abandoned Object Tracker subsystem, shown below, uses the object statistics to determine which objects are stationary. To view the contents of this subsystem, right-click the subsystem and select Look Under Mask. To view the tracking algorithm details, double-click the Abandoned Object Tracker block. The MATLAB® code in this block is an example of how to implement your custom code to augment Computer Vision System Toolbox™ functionality.

Abandoned Object Detection Results

The All Objects window marks the region of interest (ROI) with a yellow box and all detected objects with green boxes.

The Threshold window shows the result of the background subtraction in the ROI.

The Abandoned Objects window highlights the abandoned objects with a red box.

Annotate Video Files with Frame Numbers

You can use the vision.TextInserter System object in MATLAB, or theInsert Text block in a Simulink® model, to overlay text on video streams. In this Simulink model example, you add a running count of the number of video frames to a video using the Insert Text block. The model contains the From Multimedia File block to import the video into the Simulink model, a Frame Counter block to count the number of frames in the input video, and two Video Viewer blocks to view the original and annotated videos.

You can open the example model by typing

ex_vision_annotate_video_file_with_frame_numbersex_vision_annotate_video_file_with_frame_numbers

on the MATLAB® command line.

  1. Run your model.

  2. The model displays the original and annotated videos.

Color Formatting

For this example, the color format for the video was set to Intensity, and therefore the color value for the text was set to a scaled value. If instead, you set the color format to RGB, then the text value must satisfy this format, and requires a 3-element vector.

Inserting Text

Use the Insert Text block to annotate the video stream with a running frame count. Set the block parameters as follows:

  • Main pane, Text = ['Frame count' sprintf('\n') 'Source frame: %d']

  • Main pane, Color value = 1

  • Main pane, Location [x y] = [2 85]

  • Font pane, Font face = LucindaTypewriterRegular

By setting the Text parameter to ['Frame count' sprintf('\n') 'Source frame: %d'], you are asking the block to print Frame count on one line and the Source frame: on a new line. Because you specified %d, an ANSI C printf-style format specification, the Variables port appears on the block. The block takes the port input in decimal form and substitutes this input for the %d in the string. You used the Location [x y] parameter to specify where to print the text. In this case, the location is 85 rows down and 2 columns over from the top-left corner of the image.

Configuration Parameters

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 = inf

  • Solver pane, Type = Fixed-step

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

Draw Shapes and Lines

When you specify the type of shape to draw, you must also specify it's location on the image. The table shows the format for the points input for the different shapes.

Rectangle

ShapePTS inputDrawn Shape
Single RectangleFour-element row vector
[x y width height] where
  • x and y are the one-based coordinates of the upper-left corner of the rectangle.

  • width and height are the width, in pixels, and height, in pixels, of the rectangle. The values of width and height must be greater than 0.

M Rectangles

M-by-4 matrix

[x1y1width1height1x2y2width2height2xMyMwidthMheightM]

where each row of the matrix corresponds to a different rectangle and is of the same form as the vector for a single rectangle.

Line and Polyline

You can draw one or more lines, and one or more polylines. A polyline contains a series of connected line segments.

ShapePTS inputDrawn Shape
Single LineFour-element row vector [x1 y1 x2 y2] where
  • x1 and y1 are the coordinates of the beginning of the line.

  • x2 and y2 are the coordinates of the end of the line.

M Lines

M-by-4 matrix

[x11y11x12y12x21y21x22y22xM1yM1xM2yM2]

where each row of the matrix corresponds to a different line and is of the same form as the vector for a single line.

Single Polyline with (L-1) SegmentsVector of size 2L, where L is the number of vertices, with format, [x1, y1, x2, y2, ..., xL, yL].
  • x1 and y1 are the coordinates of the beginning of the first line segment.

  • x2 and y2 are the coordinates of the end of the first line segment and the beginning of the second line segment.

  • xL and yL are the coordinates of the end of the (L-1)th line segment.

The polyline always contains (L-1) number of segments because the first and last vertex points do not connect. The block produces an error message when the number of rows is less than two or not a multiple of two.

M Polylines with (L-1) Segments

2L-by-N matrix

[x11y11x12y12x1Ly1Lx21y21x22y22x2Ly2LxM1yM1xM2yM2xMLyML]

where each row of the matrix corresponds to a different polyline and is of the same form as the vector for a single polyline. When you require one polyline to contain less than (L–1) number of segments, fill the matrix by repeating the coordinates of the last vertex.

The block produces an error message if the number of rows is less than two or not a multiple of two.

Polygon

You can draw one or more polygons.

ShapePTS inputDrawn Shape
Single Polygon with L line segmentsRow vector of size 2L, where L is the number of vertices, with format, [x1 y1 x2 y2 ... xL yL] where
  • x1 and y1 are the coordinates of the beginning of the first line segment.

  • x2 and y2 are the coordinates of the end of the first line segment and the beginning of the second line segment.

  • xL and yL are the coordinates of the end of the (L-1)th line segment and the beginning of the Lth line segment.

The block connects [x1 y1] to [xL yL] to complete the polygon. The block produces an error if the number of rows is negative or not a multiple of two.

M Polygons with the largest number of line segments in any line being L

M-by-2L matrix

[x11y11x12y12x1Ly1Lx21y21x22y22x2Ly2LxM1yM1xM2yM2xMLyML]

where each row of the matrix corresponds to a different polygon and is of the same form as the vector for a single polygon. If some polygons are shorter than others, repeat the ending coordinates to fill the polygon matrix.

The block produces an error message if the number of rows is less than two or is not a multiple of two.

Circle

You can draw one or more circles.

ShapePTS inputDrawn Shape
Single CircleThree-element row vector
[x y radius] where
  • x and y are coordinates for the center of the circle.

  • radius is the radius of the circle, which must be greater than 0.

M Circles

M-by-3 matrix

[x1y1radius1x2y2radius2xMyMradiusM]

where each row of the matrix corresponds to a different circle and is of the same form as the vector for a single circle.

Was this topic helpful?