Exercises
Using
cvRunningAvg()
, re-implement the averaging method of background subtraction. In order to do so, learn the running average of the pixel values in the scene to find the mean and the running average of the absolute difference (cvAbsDiff()
) as a proxy for the standard deviation of the image.Shadows are often a problem in background subtraction because they can show up as a foreground object. Use the averaging or codebook method of background subtraction to learn the background. Have a person then walk in the foreground. Shadows will "emanate" from the bottom of the foreground object.
Outdoors, shadows are darker and bluer than their surround; use this fact to eliminate them.
Indoors, shadows are darker than their surround; use this fact to eliminate them.
The simple background models presented in this chapter are often quite sensitive to their threshold parameters. In Chapter 10 we'll see how to track motion, and this can be used as a "reality" check on the background model and its thresholds. You can also use it when a known person is doing a "calibration walk" in front of the camera: find the moving object and adjust the parameters until the foreground object corresponds to the motion boundaries. We can also use distinct patterns on a calibration object itself (or on the background) for a reality check and tuning guide when we know that a portion of the background has been occluded.
Modify the code to include an autocalibration mode. Learn a background model and then put ...
Get Learning OpenCV now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.