Frame Difference
Movement detection is very salient feature in modern image processing based application. There are several approaches can be taken for detecting movement. Background subtraction is a well-known approach for computer vision based object detection. Therefore, there are already a lot of works in the literature focused on it. Background subtraction is very useful when the background is fixed and also the camera is stationary position.
To detect any kind of
change from a camera vision or video, the difference of two consecutive frames
is one of the most effective approaches. The frame difference can be defined as
equation below:
Frame Difference |
f(x, y, t) is a frame at time t. The immediate next
frame at (t+1) is f(x, y, t+1) and th
represents the threshold value parameter for decision. Three Frame difference is
an improved method from two frame difference and it uses three consecutive
frames to find the difference. From the difference of three frame images, the
changes or movement detection is done using the contour object.
Next two equations are for three frame difference
method. The additional option is that there is a scope for adding multiple
threshold value. For n frame difference method there is an option to use (n-1)
threshold values which can give more flexibility to find the moving contours.
Three Frame difference |
ROS
Robot operating system is chosen for robot based implementation of movement detection.Robot Operating System
(ROS) is an open-source, heterogeneous and scalable P2P network-based robotics
framework. ROS provides wide range of libraries and tools to help software
developers creating innovative robot applications in an organized pattern. The
benefit of using ROS is to get some useful essential features which will reduce
the development time and complexity by providing device drivers, libraries,
visualizers, message-passing, package management, access to third party tools, hardware
abstraction, and more. ROS is licensed under an open source, BSD license. The
basic advantage of ROS is code reuse for the robotic developer and researcher
in a common and generalized platform. ROS is a language-independent
architecture (C++, python, lisp, java, and more), scalable platform (ARM CPUs
to Xeon Clusters) and intent to enable researchers to rapidly develop new
robotic systems by increasing the reusability through use of standard tools and
interfaces.