Image Processing Reference
In-Depth Information
1 Introduction
One of the most important goals of security surveillance is to collect and disseminate real-time
information and provide situational awareness to operators and security analysts [ 1 ]. Only
then educated decisions and future reasoning can be made and prevent undesirable incidents
[ 2 ] . The need for surveillance spans in many domains, including commercial buildings, law
enforcement, the military, banks, parking lots, city setings as well as hallways and entrances
to buildings, etc. Most of today's surveillance is used primarily as a forensic tool, to investig-
ate what has already happened, and not to prevent an incident. Detection of objects, people,
peoples' faces [ 3 ], cars, and their patern of movement is necessary to enhance automated de-
cision making and alarming. This is a difficult problem to solve [ 4 ] . One of the most common
approaches to solving this problem is background subtraction [ 4 - 6 ] where each pixel is com-
pared to its intensity value and if the change is above a threshold, it is marked as motion de-
tected. In Ref. [ 2 ] the authors developed an object detection system that is based on pixel and
region analysis and gives beter results in sudden pixel intensity variations. Many times mo-
tion detection alone may not be enough. The identity of the object or person that triggers the
motion detector may need to be identified. Other times the trajectory of the moving entity may
need to be tracked [ 7 - 9 ] .
2 Graphical Processing Unit and Compute Unified
Device Architecture
Originally, graphics processors were used primarily to render images. In recent years,
however, these graphical processing units (GPUs) are also used to solve problems involving
massive data-parallel processing. Thus, GPUs have been transformed to general purpose
graphical processing units (GPGPUs) and can be viewed as external devices that can perform
parallel computations for problems that don't only involve graphics.
Lately, GPUs have experienced a tremendous growth, mainly driven by the gaming in-
dustry. GPUs are now considered to be programmable architectures and devices consisting of
several many-core processors capable of running hundreds of thousands of threads concur-
rently.
NVIDIA Corporation provides a new API that utilizes C/C++ to program their graphics
cards. This API is called CUDA (Compute Unified Device Architecture) [ 10 ] and enables us to
utilize relatively easily data-parallel algorithms [ 11 - 13 ]. CUDA has been used in simulations
[ 14 - 16 ] , genetic algorithms [ 17 ] , DNA sequence alignment [ 18 ], encryption systems [ 19 , 20 ] ,
image processing [ 21 - 29 ] , digital forensics [ 30 ] , and other ields.
CUDA is available for most operating systems, and it is freely available; CUDA is restricted
to NVidia graphics cards, however, CUDA is a highly parallel computing platform and pro-
gramming model and provides access to an elaborate GPU memory architecture and parallel
thread execution management. Each thread has a unique identifier. Each thread can then per-
form the same operation on different sets of data.
A CUDA program consists of two main components. The program that runs on the host
computer and functions (called kernels) that run on the GPU. Each kernel is executed as a
batch of threads organized as a grid of thread blocks. The size of the grid and blocks is user
conigurable to it the problem's requirements. These blocks can be configured as 1D, 2D, for
3D matrices. This architecture is built around a scalable array of multithreaded streaming mul-
Search WWH ::




Custom Search