  Motion detection in video is important for a number of applications and
fields. In video surveillance, motion detection is an essential accompaniment
to activity recognition for early warning systems. Robotics also has much to
gain from motion detection and segmentation, particularly in high speed motion
tracking for tactile systems. There are a myriad of techniques for detecting
and masking motion in an image. Successful systems have used Gaussian Models to
discern background from foreground in an image (motion from static imagery).
However, particularly in the case of a moving camera or frame of reference, it
is necessary to compensate for the motion of the camera when attempting to
discern objects moving in the foreground. For example, it is possible to
estimate motion of the camera through optical flow methods or temporal
differencing and then compensate for this motion in a background subtraction
model. We selection a method by Yi et al. using Dual-Mode Single Gaussian
Models which does just this. We implement the technique in Intel's Thread
Building Blocks (TBB) and NVIDIA's CUDA libraries. We then compare
parallelization improvements with a theoretical analysis of speedups based on
the characteristics of our selected model and attributes of both TBB and CUDA.
We make our implementation available to the public.
