fpga enhanced surveillence techniques -...
TRANSCRIPT
FPGA ENHANCED SURVEILLENCE TECHNIQUES
by
Brian Coulson Heflin
B.A., University of Colorado at Colorado Springs, 2006
A thesis submitted to the Graduate Faculty of the
University of Colorado at Colorado Springs
in partial fulfillment of the
requirements for the degree of
Masters of Science
Department of Electrical and Computer Engineering
EAS_ECE_2008_004
This thesis for Master of Science degree by
Brian C. Heflin
has been approved for the
Department of Electrical and Computer Engineering
by
__________________________
Chia-Jiu Wang, Chair
__________________________
Terrence E. Boult
__________________________
Ramaswami Dandapani
________________
Date
Brian C. Heflin (M.S., Electrical and Computer Engineering)
FPGA Enhanced Surveillance Techniques
Thesis directed by Professor Chia-Jiu “Charlie” Wang
This thesis presents the theory, development and the simulation results for
a target detection and tracking system designed around a Virtex 4 FX FPGA.
The chosen target detection method is based on the subtraction of a reference
background from the current image obtained from the camera sensor.
Additionally, a comparison of different target detection and tracking algorithms
that use the background subtraction method for target detection is also
presented. Portions of the implemented FPGA accelerated target detection and
tracking system are based on the Lehigh Omnidirectional Tracking System
(LOTS) tracking system developed at Lehigh University under the guidance of
Dr. Terry Boult. The FPGA modules implemented the target detection, reference
background model and per pixel threshold updates, and the reduced resolution
“parent” image used the in target tracking algorithm. Xilinx simulation results are
shown for all of the implemented HDL modules. Finally, Xilinx map and post
place and route timing results are presented to show that the system can operate
with an input clock frequency of 200 MHz.
iv
Acknowledgements
First, I would like to give thanks to my thesis committee chairman Dr. Chia-Jiu
(Charlie) Wang. I met Dr. Wang early in my undergraduate program and feel that
his knowledge and support was the key to my educational development and my
success in my Electrical Engineering curriculum.
I would also like to show my gratitude to Dr. Terrance E. Boult for his
assistance, patience, and guidance throughout my thesis research. I would also
like to extend my thanks to him for his comments and ideas during our graduate
meetings.
I also wish to show my appreciation to Michael D. Ciletti. His knowledge and
insights to the Verilog HDL language, and algorithm development for FPGAs is
exceptional. I feel honored and privileged to have been his student.
Finally, I would like to thank the School of Engineering and Applied Sciences
and the Electrical Engineering department chair Dr. T.S. Kalkur for giving me the
opportunity to perform the role as associate professor for the Spring 2008 Rapid
Prototyping with FPGAs class.
Table of Contents
List of Tables…………………………………………………………..vii
List of Figures…………………………………………………………....x
CHAPTER
I. INTRODUCTION………………………………………………..1
1.1 Visual Surveillance Fundamentals…………………..…….……2
1.2 Basic Background Subtraction…...……………………..………3
1.3 Purpose and Scope of the Study……………...………..………4
1.4 Arrangement of Thesis…………………………………………..5
1.5 Data / Other Limitations………………………………………….6
II. REVIEW OF THE LITERATURE……………………………..8
2.1 Introduction………………………………………………………..8
2.2 W4 Algorithm………………………………………………………8
2.2.1 W4 Background Modeling and Foreground Pixel Detection…………………………………………………...8
2.2.2 Tracking with the W4 Algorithm…………………………...9
2.3 Single Gaussian Model/Pfinder System………………………12
2.3.1 Target Detection using a Pfinder ……………………….12 2.3.2 Target Tracking using Pfinder …………………………..13
2.3 Adaptive Mixture of Gaussians………………………………...14
2.4 LOTS……………………………………………………………...15
2.4.1 Background Subtraction………………………………….16
2.4.2 Pixel Thresholding…………………………….…………..19
2.4.3 QCC………………………………………………………...21
2.4.4 Cleaning Regions…………………………………………23
2.4.5 Tracking with LOTS……………………………………….25
2.5 SUMMARY OF ALGORITHMS………………………………..25
III. METHODOLOGY…………..………………………………..29
3.1 FPGA Based Methodology and Architecture Introduction…..29
3.2 Background Subtraction/Pixel Thresholding HDL Modules...31
3.2.1 Background Subtraction Controller HDL Module………32
3.2.2 Background Subtraction Data Path……………………..37
3.3 16x16 Reduced Target Map……………………………………43
3.3.1 16x16 Reduced Target Map Controller…………………44
3.3.2 16x16 Reduced Target Map Datapath………………….48
3.4 TARGET MAP FILTER HDL Module………………………….50
3.4.1 TARGET MAP FILTER Controller……………………….50
3.4.2 Target Map Filter Datapath………………………………53
IV. Simulation/Synthesis Results……….…………….………..56
4.1 Simulation Introduction…………………………………………56
4.2 Background and Threshold Initialization……………………...57 4.3 Simulation Results for the Background Subtraction HDL
Modules…………………………………………………………..60
4.3.1 Experiments with FRAME 870…………………………..60
4.3.2 Experiments with FRAME 911…………………………..63
4.3.3 Simulation Results for the Target Map HDL Modules..66
4.3.4 Simulation Results for the Target Filter HDL Modules…………………………………………………67
4.4 QCC Results……………………………………………………..68
4.5 Discussion of Simulation Results……………………………...72
4.5.1 Simulation Results For the Target Map HDL Modules..74
4.5.2 Simulation of Target Map Filter HDL Modules…………74
4.6 Xilinx XST Synthesis results …………………………………..75
4.6.1 Xilinx XST Synthesis Summary………………………….76
V. CONCLUSION……...………………………………………...78
BIBLIOGRAPHY………………………………………………..80
APPENDIX
A. Synthesis, Map, Place and Route and Static Timing Report……………………………………………….....81
B. Verilog HDL Code……………………………………130
vii
List of Tables
TABLE
2.1. Summary of the 4 Target Detection and Tracking Algorithms……………….25
2.2. Results of [6] for the 4 Target Detection and Tracking Algorithms………….26 3.1. Truth Table for Embedded Update Flags………………………………………31 3.2. The Inputs to the Background Subtraction Controller
module………………………………………………………………..…………..33 3.3. The outputs of the Background Subtraction Controller
module…………………………………………………………………….………33 3.4. Control Signals Asserted at Each State Background Subtraction
Controller……………………………………………………………………………37 3.5. The Inputs to the Background Subtraction Data Path Module……………....38 3.6. The Outputs of the Background Subtraction Data Path Module…………….40 3.7. Truth Table for the 6-bit map_inc Value………………………………………..43 3.8. The Inputs to the 16x16 Reduced Target Map Controller Module…………..44 3.9. The Outputs to the 16x16 Reduced Target Map Controller Module………..44 3.10. Control Signals Asserted at Each State 16x16 Reduced Target Map
Controller………………………………………………….………………………47 . 3.11. The Inputs to 16x16 Reduced Target Map Data Path Module……………..48
3.12. The Outputs of the 16x16 Reduced Target Map Data Path Module………49 3.13. The inputs to the Target Map Filter controller module are………………….51 3.14. The Outputs of the Target Map Filter controller module……………………51 3.15. Control Signals Asserted at Each State 16x16 Reduced Target Map
Filter…………………………………………………………………………….…51 3.16. The Inputs to Target Map Filter Data Path Module………………………….53
3.17. The Outputs of the Target Map Filter Data Path Module…………………...54 4.1. Two Background Reference Models……………………………………………57
4.2. Output Threshold Images for Both Initialization Techniques………………...59
4.3. Verilog HDL simulation results for Caviar Frame 870………………………..60
4.4. Verilog HDL simulation results for Caviar Frame 911………………………..63
4.5. Returned images from the QCC algorithm…………………………………….68
4.6. Frame Rate and Corresponding Frame Size for a MICRON MT9T001…….72
4.7. Logic That Did not Meet Timing and the Actions Taken to Allow the Design
to Run at 200 MHz……………………………………………………………….75
xi
List of Figures
FIGURE
1.1. Eight Major Stages In A Target Tracking System………………………………2
2.1. Example of Correlating Silhouette Edges to Track a Person Running……..10
2.2. Example of the W4 Locating Both Target’s Head, Torso, Hands and Feet..11
2.3. Example 24x24 Difference Image With It’s “parent” Image………………….22
3.1. Top Level Block Diagram for the FPGA Based Target Detection and Tracking System………………………………………………………………....30
3.2. ASM Chart for Background Subtraction Controller……………………………36 3.3. ASM Chart for 16x16 Reduced Target Map Controller……………………….46 3.4. ASM Chart for Target Map Filter Controller……………………………………52 4.1.Verilog HDL simulation results for the 16x16 reduced target map using a
constant map_inc value of 6’b010_010…………………………………………66 4.2. Verilog HDL Simulation Results for the 16x16 Reduced Target Map
Filter……………………………………………………………………………….67
CHAPTER 1
INTRODUCTION 1.1 Visual Surveillance Fundamentals
Visual surveillance algorithms have the job of detecting and tracking
targets. “From an architecture point of view, many visual surveillance systems
further decompose the problem resulting in to eight major stages: acquisition,
detection, grouping, tracking, filtering, classification, updating models, and
sensor control” [1]. Figure 1 below shows the block diagram of a target tracking
system.
Figure 1: Eight Major Stages In A Target Tracking System
The first two phases in the tracking of a target are the acquisition phase, where
the next image from a camera sensor is obtained and the detection phase where
a target or multiple targets are located within the image from the camera sensor.
The detector used in some target tracking systems is based on subtraction of a
reference background model from the image obtained from the sensor in the
acquisition phase.
1.2 Basic Background Subtraction
The detection phase uses background subtraction to detect changes in a
scene by computing the absolute difference, for every pixel, between the current
frame and a stored reference background frame . A difference image is
computed with equation (1.1):
(1.1)
where delta is the absolute difference the pixels of B and I. Next, if delta is
greater than a noise-based threshold , it is assumed that the pixel value
change is due to the presence of a target. Additionally, the choice of must be
high enough to ignore noise, but low enough to detect targets. There are two
primary approaches to reference modeling. The first is to adapt the reference
model over time by blending information and statistics extracted from many
images. The second method uses the two most recent frames for building the
reference image. After the detection phase has completed the next stage is the
grouping phase. The objective of the grouping phase is to assign a label to
pixels that are potentially a target pixel. “The most basic form of grouping is
simple connected components—the assignment of the same label to adjacent
pixels. Since this stage is early in the system, these uniformly labeled and well-
connected pixels regions are not necessarily deemed true targets. They are
often referred to with the less descriptive term blobs” [1]. The next phase is the
tracking phase. In the tracking phase each “blob” is related to blobs detected in
previous frames. An example of basic tracking would be to associate blobs from
the current frame to blobs from the previous frames that overlap or are within
some proximity of each other. After the tracking phase has completed the next
phase is the filtering phase. During the filtering phase more tests are performed
to ensure that the detected targets are really targets. The filtering process could
range from simple detection of targets without the minimum number of pixels or
area to more complex methods such as detecting changes in illumination, or
blobs that result from reflections or shadows. The optional classification phase
consists trying to further characterize detected targets. For example, a vehicle
recognition routine running in parallel with the target detection system could be
used to automatically detect and track vehicles of interest. The model update
phase consists of updating the internal models and parameters with new
information obtained from the most recent frame. “This might include adjusting
various thresholds, adjusting the background models, or updating internal system
variables. Since in many systems there can be several parameters per
pixel..[c]reating a system that both properly and rapidly self-adapts its internal
model is perhaps the largest challenge faced by visual surveillance community”
[1]. The final optional sensor control phase can incorporate the results of the
model update phase to adjust parameters of the video stream such as gain or
sensor integration time or it may activate a motor so a camera mounted to a
motor driven platform can follow the target.
1.3 Purpose of and Scope of Study
This thesis will document the implementation of an FPGA accelerated target
detection and tracking system for a stationary 3 Megapixel video camera.
Portions of the FPGA accelerated target detection and tracking system are based
on the Lehigh Omnidirectional Tracking System (LOTS) tracking system
developed at Lehigh University under the guidance of Dr. Terry Boult. The FPGA
modules will implement the target detection, reference background model and
per pixel threshold updates, and the reduced resolution “parent” image used the
in target tracking algorithm. I will also include a discussion of the complete
architecture for the target detection and tracking system including tracking,
filtering, and pixel grouping that will be executed by software running a PowerPC
embedded in a Virtex4 FX FPGA.
1.4 Arrangement of Thesis
Part I contains the introduction and the motivation for the thesis topic.
Furthermore, Part I is an introduction to the concepts of visual surveillance and
background subtraction. Part II is an examination of various target tracking
algorithms that use a target detector that is based on subtraction of a reference
background model from the image obtained from the sensor. Part III is a
complete examination of the individual Verilog HDL modules contained in the
target detection and tracking system. Additionally Part III contains a discussion of
the rest of the target tracking algorithm that will execute on a PowerPC running
on a Virtex 4 FPGA. Part IV contains my Verilog HDL simulation results for the
background subtraction/thresholding modules as well as the 16x16 reduced
resolution target map and target map filter HDL modules. Additionally, Part IV
contains a discussion of the Xilinx XSTsynthesis results, and timing benchmarks
for all of the implemented Verilog HDL modules. Part V is the thesis conclusion.
This section will be present recommendations and additional work that is needed.
Part VII is the Bibliography and Appendix. The Appendix contains all of the
Verilog code and the Xilinx synthesis, timing, map and post place and route
reports for all of the implemented Verilog HDL modules.
1.5 Data / Other Limitations
Since this thesis is the implementation of the hardware acceleration of the
target detection, reference background model updates, per pixel threshold
updates, and the reduced resolution “parent” image used in a target detection
and tracking system, the simulation data will be limited to the execution of the
background subtraction, pixel thresholding, reference background updating, and
formation of the 16x16 reduced resolution target map. The later parts of the
connect components tracking algorithm will be performed by software and is not
a part of the HDL simulation. However, the results from my simulations were
saved to data files and the connected components C++-code imported these
data files to generate the images shown in part IV.
CHAPTER 2
REVIEW OF LITERATURE
2.1 Introduction This chapter contains a review based on published literature of several target
detection and tracking algorithms including the W4, Single Gaussian Model or
Pfinder, Adaptive Mixture of Gaussians, and the Lehigh Omnidirectional Tracking
System (LOTS).
2.2 W4 Algorithm The W4 algorithm as proposed by Haritaoglu in [2] operates on gray scale
images. The W4 algorithm uses shape analysis to locate target’s hands, legs,
feet, head, and torso. Using the results of the shape analysis the W4 algorithm
will create a model of the target’s appearance so it can track the target even if
the target becomes occluded and unocculuded.
2.2.1 W4 Background Modeling and Foreground Pixel Detection
Three different parameters are assigned to each pixel to model the background.
The three parameters are the minimum intensity, maximum intensity, and the
maximum absolute difference in consecutive frames. The first step in the W4
algorithm is pixel thresholding. A pixel is considered a possible target if
(2.1) Where is the minimum intensity, and is the maximum intensity, and
is the maximum intensity difference. Unfortunately the resulting threshold
image contains a considerable amount of noise. Therefore, the next step is to
perform a region based noise cleaning that is comprised of an erosion operation
followed by a connected component analysis that removes regions with less than
50 pixels above threshold. The result of the connected component analysis is a
set of bounding boxes with target pixels. Next more morphological operations
comprised of dilatation and erosion are applied to the pixels inside of the boxes
and the final boxes are returned as targets.
2.2.2 Tracking with the W4 Algorithm
The goal of the W4 algorithm is to perform a fast and robust tracking algorithm.
The W4 algorithm is designed to track objects even if the first level of detection
does not segment multiple targets. “[The W4 algorithm] can determine whether a
foreground region contains multiple people and can segment the region into its
constituent people and track them. W4 can also determine whether people are
carrying objects, and can segment objects from their silhouettes, and construct
appearance models for them so they can be identified in subsequent frames. W4
can recognize events between people and objects, such as depositing an object,
exchanging bags, or removing an object” [2]. Next the W4 algorithm performs a
two stage motion estimation algorithm. First a preliminary calculation of the
object is performed to determine the initial displacement of the median between
the foreground region in the previous frame and current frame
Next, “…the best match between previous silhouette edges and current
silhouette edges is found by correlating over a 5x3 displacement mask centered
at the initial displacement estimate”[3].. Figure 2.1 below shows an example of
correlating silhouette edges to track a person running.
Figure 2.1: Example of Correlating Silhouette Edges to Track a Person Running
The W4 algorithm also generates a temporal texture template for each target that
is being tracked using the average intensity of the corresponding foreground
pixels. Dynamic template matching can then be used to identify targets when
they become occluded and then unoccluded. Next the W4 algorithm locates the
target’s hands, feet, legs, head, and torso “Hands are located after torso by
finding extreme regions which are connect to the torso and which are outside of
torso…height of the bounding box of an object is taken as a height of the
cardboard model, then fixed vertical scales are used to find the approximate
initial location of body parts” [3]. Figure 2.2 below shows an example of the W4
locating both targets head, torso, hands and feet.
Figure 2.2: Example of the W4 Locating Both Target’s Head, Torso, Hands and Feet
The target models are then tracked across multiple frames using a correlation
technique. “The estimated location of an template is calculated by global motion
g(t) of body and local motion l(t) of head (hands). The correlation results are
monitored during tracking to determine if the correlation is good enough to track
the parts. Changes in the correlation scores allow us to make a prediction about
whether a part is becoming occluded. When tracking fails, detection is re-
initialized subsequently with the static cardboard model”[3]. The W4 algorithm
can run at 25 Hz for 320×240 resolution images on a 400 MHz dual-Pentium II
PC.
2.3 Single Gaussian Model The Single Gaussian Model of Pfinder algorithm as proposed by Wren in [4] is
target detection and tracking system that also tries to interpret the target’s
behavior. “The system uses a multiclass statistical model of color and shape to
obtain a 2D representation of head and hands in a wide range of viewing
conditions. Pfinder has been successfully used in a wide range of applications
including wireless interfaces, video databases, and low-bandwidth coding” [4].
2.3.1 Target Detection using a Pfinder
The Pfinder system operates on color images. The intensity and color of each
pixel is represented by a vector . The mean and covariance of
each pixel is updated recursively with the following formulas:
(2.2)
(2.3)
where is the pixel in the current frame and is the learning rate, and
(2.4)
After the background adaptation phase is complete, the log likelihood of the
difference between the current image and the background is computed with
equation 2.5.
(2.5)
A pixel is classified as a potential target if else it is considered as part of
the background. Finally, the algorithm detects targets by performing connected
components on the non-background labeled pixels.
2.3.1 Target Tracking using Pfinder Once the Pfinder algorithmhas located a target it tries to build a more detailed
model. “A more detailed model of the user includes information about the
composition of the user. The same gaussian blobs that are used to classify the
image can also be useful as a model of the user” [5]. Next, the Pfinder system
tries to locate the head, feet, and hands of the target. Once the head, hands, and
feet have been located the system can track the target and can also identify if the
target is sitting, standing or pointing. The Pfinder algorithm can process 10
frames per second on an SGI indy with a 175Mhz R4400 CPU, and Vino Video
with a reduced fame size of (160x120).
2.3 Adaptive Mixture of Gaussians
In the adaptive mixture of Gaussians algorithm each pixel is modeled by a
mixture of K Gaussians:
(2.6)
where K = 3..5 or 4 in [6], “Furthermore is assumed that . The
background is updated as follows:
If matches component , i.e., is within standard deviations of (where
is 2 or 2.5), then the component is updated as follows:
(2.7) (2.8) (2.9)
where Components which did not match are updated by:
(2.10) (2.11) (2.12)
“The foreground is detected as follows. All components in the mixture are sorted
into the order of decreasing . So higher importance gets placed on
components with the most evidence and lowest variance, which are assumed to
be the background. Let for some threshold Then
components 1…B are assumed to be background. So if does not match one of
these components, the pixel is marked as foreground. Foreground pixels are
then segmented into regions using connected component labeling. Detected
regions are represented by their centriod” [6].
2.4 LOTS
The LOTS tracking system was developed at Lehigh University under the
guidance of Dr. Terry Boult. The area of application of the LOTS target detection
and tracking system is different from many other tracking systems. It was
designed to “track targets in a perimeter security type setting, i.e. outdoor
operation in moderate to high cover areas.” Some of the constrains and
implications for the LOTS system as presented in [7] are:
• The lighting is naturally varying. We must handle sunlight
filtered through trees and intermittent cloud cover.
• Targets use camouflage, thus it is unlikely that color will
add much information.
• Targets will be moving in areas with large amounts of
occlusion; finding/classifying outlines will be difficult.
Trees/brush/clouds all move. The system must have algorithms
to help distinguish these “insignificant” motions
from target motions.
• Many targets will move slowly (less than .01 pixel per
frame); some will be stationary for a two minutes or
more. Some will try very hard to blend into the motion
of the trees/brush. Therefore frame-to-frame differencing
is of limited value. Temporal adaptation schemes must
not add slow targets to the background.
• Targets will not, in general, be “upright” or isolated. Thus
we have not added “labeling” of targets based on simple
shape/scale/orientation models.
• Targets need to be detected quickly and when they are
still very small and distant, e.g. about 10-20 pixels on
target.
• Correlation, template matching, and related techniques
cannot be effectively used because of large amounts of
occlusion and because in a paraimage, image translation
is a very poor model; objects translating in the world undergo
rotation and non-linear scaling.
The LOTS target detection and tracking system has three distinctive features.
The first distinct feature is the use of multiple background reference models. The
system uses 3 background models. The second distinct feature of LOTS is the
speed that the system adapts its background models. The last distinct feature of
the LOTS target detection and tracking system system is the use of a per pixel
threshold with a high and low threshold.
2.4.1 Background Subtraction
As presented in [1] the LOTS system uses a three background models. At
time the primary background is represented by and the second
background by . The pixel intensity value is represented by , where
is the pixel index for a gray scale image. Additionally, in [1] is was
presumed that the input at time was closer to the primary background model
. The difference images are defined as:
(2.13)
(2.14)
and the variable , as the index with the smaller difference and as
the remaining index. In [1] they also allowed for a process to label the pixel as
being the the target set or in the nontarget set . The background models are
updated as follows:
(2.15)
Usually is smaller than . Additionally, the other background model is not
updated:
(2.16)
However, the LOTS system does not update every pixel in the background every
frame. Instead it reduces the rate at which the background is update so that the
multiplicative blending factor was at least 1/32. For example, an effective
integration factor with is achieved by adding 1/32 of the
new frame to the background every 1024th frame. “Given a target that differs from
a mid-gray background by 32 and a threshold of 16, the adaptation results in
requiring between 2 to 4096 frames for the target to become part of the
background” [8]. To further reduce the rate that the target pixels blend into the
reference background, pixels identified as “targets” have a smaller effective
integration factor. Initial analysis of the LOTS system showed that if the
background model was updated every frame, it became by far the most
computationally expensive component of the system since it requires a multiply,
add, and a shift operation. Therefore, for a faster implementation of the
reference background update a new update rule called the up-down, or the
conditional increment model was developed. Equation 2.17 below shows the
conditional increment model.
(2.17)
“The most important drawback to the conditional increment model is that if a
target is mislabeled, the system does not “blend” it in significantly; it does not
matter if the target is nearly the same or distant in grey values, the update is
constant. Since the primary goal of this aspect of the system is to update the
background to handle diurnal lighting changes (which should be slow), using a
scaled difference does not seem justified. Rather than always blending quickly,
LOTS has a separate rapid lighting change detection subsystem that temporarily
changes the system behavior when large (i.e. non-diurnal) lighting changes
occur. When strong lighting changes are detected, the current system
temporarily increases its thresholds while also switching to a larger alpha-
blending-based algorithm to more quickly adapt away the changes. The switch
between the modes is automatic and based on rate of growth in a number of
pixels labeled as targets. If the growth rate is very radical, such as might occur if
an adversary shines a laser directly into the imaging system, the system reports
it immediately and tries again on the next frame. With this separate lighting
model change technique, the system can maintain high sensitivity while
maintaining robustness” [1]. Since the primary and secondary backgrounds are
updated with temporal blending to allow them to track slow lighting changes, the
blending can result in persistent false alarms and targets leaving “ghosts”. To
deal with these issues the system has a third background reference image,
called the old-image that is used in the cleaning phase of the tracking algorithm.
Unlike the primary and secondary backgrounds the old-image is not updated with
an incremental or blending model instead it is an exact copy of an input frame
from between 9000-18000 frames ago. Furthermore, regions that contain targets
when the old-image is formed are marked as non targets.
2.4.2 Pixel Thresholding
The LOTS tracking system also utilizes multiple pixel thresholds. The first
threshold is a global threshold. The global threshold is used to deal with the
camera gain noise and can be adjusted while the system is running. The second
threshold is a per-pixel threshold. The per-pixel threshold “…attempts to account
for the inherent spatial variability of the scene intensity at the pixel, e.g. points
near edges will have higher variability because of small changes in the imaging
situation can cause large intensity changes” [7]. Similarly to the multiple
background models, the per-pixel threshold is not updated every frame. The
adaptation scheme slowly decreases the threshold for missed pixels. A missed
label means that the pixel was not above threshold but is part of a detected
region. If a pixel is detected the threshold remains constant. A detected label
signifies that the pixel corresponds to a detected region. Finally, if the pixel
becomes an insertion due to noisy pixels or if the threshold is to low it is
increased. An insertion label means that the pixel was above threshold but not
part of a detected region. Equation 2.18 below shows a summary of the threshold
updating scheme.
(2.18)
Since there should only be a small growth in the number of pixels that are above
threshold, the system contains a counter for the number of pixels that are above
threshold. If the growth or number of pixels is too large, the system assumes it is
probably a rapid lighting change or a radical camera motion. “The system
attempts to handle radical growth by presuming it to be a rapid lighting change
and temporarily increases both the global threshold and the allowed growth rate.
This attempt to increase the thresholds is tried twice. If it is successful in
reducing the growth, we proceed as usual except we force an update of non-
target regions with a blending factor much larger than usual. If after raising the
threshold a few times we still detect that the number of pixels differing from the
backgrounds is growing
too fast then we presume the growth must be because of camera motion. To
handle camera motion we:
1. skip tracking for this frame,
2. then increase the allowed growth rate suspending tracking for the next frame
3. call for an absolute update (all pixels are updated). If camera-motion events
are considered significant, we also inform the user” [7].
2.4.3 QCC
After the background subtraction and thresholding is complete the pixels
that are above high and/or low threshold need to be grouped into regions. A
connected component labeling technique called Quasi-Connected Components
(QCC) is used to not only to label the regions but also to discard small noise
regions in an efficient manner suitable for implementation onto a FPGA.
Furthermore, the processing time for the QCC algorithm is reduced by three
techniques. The first technique is that only the part of the row between the
leftmost pixel above threshold and the rightmost pixel above threshold is
processed. The second technique is that the connectivity analysis uses a
modified union-find data structure to allow very fast association of regions. The
last technique is the QCC algorithm operates on a reduced resolution or “parent”
image. Figure 2.3 below shows an example 24x24 difference image with it’s
“parent” image below.
Figure 2.3: Example 24x24 Difference Image With It’s “parent” Image
For example, during the initial phase of QCC the 24x24 difference image shown
in figure 2.3 could be reduced by a factor of 4 in each direction, as shown in the
6x6 image to the lower left of the difference image. “Because of its relation to
similar concepts in multi-resolution processing, this is generally called the parent
image, where each parent pixel has multiple child pixels that contribute to it. The
value of each parent pixel in this parent images is, initially, a count (area) of how
many pixels were above the low threshold and how many were above the high
threshold” [1]. The original LOTS implementation used a 32-bit integer to hold the
number of pixels above the high and low threshold in a 4x4 block. Where the
upper 16 bits contains the count of the number of pixels above the high threshold
and the lower 16-bits is the count of the number of pixels above the low threshold
but below the high threshold. In a 4x4 block the number of pixels that could be
above high and/or low threshold could be 16. “Because of limited ranges, this
allows a single 32-bit addition to combine both counts without the danger of
overflow” [1]. In figure 2.3 on the previous page the shaded pixels are above the
low threshold and the pixels that are patterned are above the high and low
thresholds. The difference image in figure 2.3 shows regions with pixels that are
above the high and/or low threshold. The upper left region contains 5 pixels
above threshold, one of which is above the high threshold. The lower left region
contains 13 pixels above the low threshold only. The middle right region contains
21 pixels above threshold, 4 of which are above the high threshold. The value of
bottom green pixel in the bottom left parent image of figure 2.3, has a value of 6
since it is the parent of 6 pixels above the low threshold and 0 above the high
threshold. The second yellow pixel is associated with 2 pixels above the low
threshold, and 1 pixel above the high threshold. Therefore it has the value
0x0100 + 0x0002 = 0x0102 (258 decimal).
2.4.4 Cleaning Regions
The next phase in the QCC algorithm is to clean the detected regions with
three different algorithms: size, lighting normalization and unoccluded region.
The first algorithm uses area thresholds to remove noise regions. The lighting
normalization and unoccluded region cleaning algorithms makes use of
normalized intensity data from the input image, the primary background, and the
third background or “old image”. The second cleaning or lighting normalization
algorithm tries to account for local lighting variations by reperforming the pixel
thresholding procedure using a normalized background intensity. The
normalized background intensity is computed for each region so it can handle
sun light filtered through a tree or small cloud patches in the scene.
The third cleaning phase or unoccluded region cleaning algorithm is used “…to
see if it is a region where a moving target has disoccluded the background, i.e.
handling a “ghost” image. This is done by doing a thresholding with-hysteresis
comparison against an intensity normalized version of the old image”[7].
2.4.5 Tracking with LOTS
The tracking phase of the QCC algorithm tries to connect target regions
detected in the current frame to targets detected in prior frames. First the QCC
algorithm uses the current “parent” image as well as the “parent” image from the
past frame to associate blobs from the previous frame. Blobs that are connected
in space-time are labeled with the same label they had in the past frame. Next
the algorithm tries to merge new regions with other regions in close proximity that
have strong temporal associations. The QCC algorithm will also connect new
regions with regions that were not in the previous frame but had been tracked in
earlier frames. “For regions that are “tracked”, we maintain information on their
position (image coordinates and 3D world coordinates), current and average
velocity (image and world), their size, length of time tracked, path (most recent
100 positions), positions avert to their most recent intensity distributions, and
their confidence measures” [7].
2.5 SUMMARY OF ALGORITHMS
In summary, the Pfinder algorithm and the adaptive mixture of gaussian
MOG algorithms are very computationally intensive and the system parameters
require extensive tuning. The algorithms are also very sensitive to changes in
illumination such as the sun going behind a cloud. Additionally, the longer that
the scene remains static the smaller the variances of the background will become
and a sudden change in illumination will cause the entire frame to turn into a
target. The W4 algorithm is less computationally expensive than the Pfinder
algorithm or adaptive MOG algorithms however, the W4 algorithm is extremely
sensitive to motion of background objects camera jitter, and illumination changes.
The LOTS algorithm is also less computationally expensive than the Pfinder or
adaptive MOG algorithms and it can also account for sudden changes in
illumination even if the scene remains static for extended periods of time. Table
2.1 below shows a summary of the 4 target detection and tracking algorithms.
Table 2.1: Summary of the 4 Target Detection and Tracking Algorithms.
Method Speed Adaptability & Precision
Complexity Changes in Illumination
W4 Medium Low Low Sensitive Single Gaussian/ Pfinder
Slow Medium High Sensitive
Adaptive MOG
Slow High High Less Sensitive than Single
Gaussian LOTS Fast High Low Moderately
Sensitive
Additionally, in [6] the authors compared the various target detection and tracking
algorithms against each other using a performance measure called Tracker
Detection Rate (TRDR) and False Alarm Rate (Far).
Where is a true positive detection, is an insertion or false positive, and
is a messed target or false negative. Table 2.2 below shows the results of
their experiments for the 4 target detection and tracking algorithms from the
previous section.
Table 2.2: Results of [6] for the 4 Target Detection and Tracking Algorithms
From table 2.2 if can be seen that the LOTS algorithm had the highest target
detection rate and the second lowest false alarm rate as compared to the other 3
algorithms. While the Pfinder, MOG and W4 algorithms can be used to detect
and track targets, for an FPGA implementation the computational complexity of
the 3 algorithms out weighs the performance as compared to the LOTS
algorithm. Additionally, the LOTS algorithm can achieve better performance while
using only fixed point operations that can readily implemented onto a FPGA.
While the W4 is less complex than the Pfinder and MOG algorithms it still
requires more complex dilation and erosion operations on the pixel data as
compared to the LOTS algorithm. Furthermore the SGM, MGM and W4
algorithms are extremely sensitive to motion of background objects camera jitter,
and illumination changes while the LOTS algorithm has routines to account for
camera jitter, and illumination changes.
CHAPTER 3
METHODOLOGY
3.1 FPGA Based Methodology and Architecture Introduction
The FPGA based architecture for implementation the target detection and
tracking system consists of using the FPGA fabric for the preprocessing of the
data to include the background subtraction, background reference model
updates, pixel thresholding, and the forming the reduced resolution “parent”
image presented in section 2.4.3 in conjunction with using an embedded
PowerPC to perform the later steps of the target tracking using the QCC
algorithm. The FPGA based architecture will allow parts of the tracking system
to execute in parallel and at different clock frequencies if necessary. The
PowerPC and FPGA modules can transfer data through the use of the FPGA’s
embedded dual-port block ram. The PowerPC can be connected to a dual port
block ram controller that allows the C-code to access the block ram’s content
easily through the use of pointers to the block ram’s assigned address space.
Additionally, user created HDL modules known as pcores, that are attached to
the processor local bus or PLB bus will be used to read and write pixel data,
background model, and threshold data to the multiport-memory controller
input/output buffers. Then the multiport-memory controller will read and write the
data to the DDR SDRAM. Figure 3.1 below shows the top level block diagram for
the FPGA based target detection and tracking system.
Figure 3.1: Top Level Block Diagram for the FPGA Based Target Detection and Tracking System
3.2 Background Subtraction/Pixel Thresholding HDL Modules
The background subtraction HDL Module will accept 8-bit pixel data and
64-bit background and threshold data for processing. Since the reference
background data is only 32-bits for input every pixel this will allow the HDL
module to operate on two pixels in parallel. The output of the background
subtraction HDL Module is the map increment or map_inc value for the 16x16
reduced target map HDL modules and the updated reference background and
threshold data that will be stored back to the DDR SDRAM. Embedded data in
the 3 most significant bits (MSBs) of the per pixel threshold data will be used as
update flags. The truth table for the embedded flags is shown below in table 3.1.
Table 3.1: Truth Table for Embedded Update Flags
Threshold[7] Threshold[6] Threshold[5] Action Performed
0 0 0 No Update
0 0 1 Update B1 Detected
0 1 0 Update B1 Missed
0 1 1 Update B1 Insertion
1 0 0 Update B2 Detected
1 0 1 Update B2 Missed
1 1 0 Update B2 Insertion
1 1 1 No Update
A detected label signifies that the pixel corresponds to a detected region. An
insertion label means that the pixel was above threshold but not part of a
detected region. A missed label means that the pixel was not above threshold
but is part of a detected region.
3.2.1 Background Subtraction Controller HDL Module
The background subtraction controller HDL module is a finite state
machine (FSM) that will control the flow of pixel and reference background data
into the background subtraction datapath module for processing. Control signals
are sent from the background subtraction controller to the background
subtraction datapath to perform operations such as subtraction of the current
pixel data from the reference backgrounds and the reference background
updates. Additionally, at the end of every frame the controller will check the
number of pixels that were above the high and/or low threshold. If the number is
greater than a user defined value it is assumed that the change is due to a rapid
lighting change or radical camera motion. The background controller will handle
radical growth by first assuming that the growth is due to a rapid lighting change
and will increase the global threshold by 4 in addition to the allowed growth rate.
This technique is tried 2 times, if it is successful in reducing the growth, the
system will continue processing the input frames and update all non-target
regions with a slightly larger blending factor. If the previous technique fails it is
assumed that the radical growth is due to camera motion. The controller will
perform the following tasks:
1. Increase the allowed growth rate and suspend tracking for the next
frame
2. Call for an absolute update of all background reference pixels.
3. A flag or interrupt can be sent to the PowerPC to inform the user
that a camera motion event is taking place.
The ASM chart for background subtraction controller HDL module, figure 3.2, can
be found on the following page. The input and outputs of the background
subtraction controller HDL module are shown below in tables 3.2 and 3.3.
Table 3.2 The Inputs to the Background Subtraction Controller module:
Clk_200MHz System clock with a frequency of 200 MHz Reset Reset Signal from simulation testbench Threshold_Counter [21:0] Count of pixels above the threshold in the
previously process frame Table 3.3 :The outputs of the Background Subtraction Controller module: Get_data Read control signal to Pixel and Reference
Background data buffers Get_data2 Control Signal to datapath module to
indicate that pixel and reference background data on input line should be stored to temporary registers
Get_abs Control signal to data path module to indicate that the current pixel data should be subtracted from both reference backgrounds
Get_min_diff Control signal to data path module to indicate that the minimum difference between the pixel data and the reference backgrounds should be stored in the min_diff register
Update Control signal to data path module to indicate that the background data 0/1 should be incremented/decremented by the INCREMENTAL parameter
Update_alpha Control signal to data path module to indicate that the background data should be multiplied by either 15 or 7 depending on the value of update_pixel0/1_nontarget and update_pixel0/1_target
Update_alpha1 Control signal to data path module to indicate that the previously multiplied background data should be added to the current pixel data
Update_alpha2 Control signal to data path module to
indicate that the previously added data should be shifted by either 2 or 4 depending on the value of update_pixel0/1_nontarget and update_pixel0/1_target
Update_pixel0_nontarget Control signal to data path module to indicate that the reference background for pixel_0 should be updated this frame with nontarget parameters
Update_pixel0_target Control signal to data path module to indicate that the reference background for pixel_0 should be updated this frame with target parameters
Update_pixel1_nontarget Control signal to data path module to indicate that the reference background for pixel_1 should be updated this frame with nontarget parameters
Update_pixel1_target Control signal to data path module to indicate that the reference background for pixel_1 should be updated this frame with target parameters
Update_pixel0 Control signal to data path module to indicate that background_0 should be updated
Update_pixel1 Control signal to data path module to indicate that background_1 should be updated
Label Control signal to data path module to modify the update flag in background_1 and both map_inc values
Inc_SRAM_read_ptr Control signal to data path module to increment the read pointer to the pixel data and background reference data buffer
Inc_SRAM_write_ptr Control signal to data path module to increment the write pointer to the pixel data and background reference data buffer
Write_SRAM_Out Control signal to output buffers to write the current input data to the buffer
Output Control signal to data path module to output the updated background reference data and map_inc data
Temp_inc_global Control signal to data path module to indicate that the global threshold should be incremented by 4
Decrease_global_1x Control signal to data path module to indicate that the global threshold should be
decremented by 4 Decrease_global_2x Control signal to data path module to
indicate that the global threshold should be decremented by 8
Update_old_frame Control signal to data path module to indicate that the old frame reference data should be updated with the current pixel data
non_target_update Absolute_update Control signal to data path module to
indicate that all pixels should be updated this frame
Figure 3.2: ASM Chart for Background Subtraction Controller
Table 3.4 shows the controls signals that are asserted at each state shown in the
asm chart on the previous page. All of the control signals are generated with
combinational logic.
Table 3.4: Control Signals Asserted at Each State Background Controller
State Table Control Signals S_reset NONE S_get_new_frame get_frame S_get_data get_data
inc_SRAM_read_ptr S_reg_input get_data2 S_update_alpha update_alpha
update_old_frame (1 time every 9000-18000 frames)
S_update_alpha1 update_alpha1 S_update_alpha2 update_alpha2 S_get_abs get_abs S_get_min_diff get_min_diff S_label Label S_label_update label
update S_output write_SRAM_out
inc_SRAM_write_ptr S_check_threshold_count NONE S_inc_global_threshold temp_inc_global
temp_inc_limit S_clear_loop_count decrease_global_1x or 2X
abs_update S_camera_motion_loop skip_next_frame
update_All
3.2.2 Background Subtraction Data Path
The background subtraction data path HDL module will process of pixel
and reference background data. Control signals received from the background
subtraction controller will signal the datapath to perform operations such as
subtraction of the current pixel data from the reference backgrounds and
reference background updates. The input and outputs of the background
subtraction datapath HDL module are shown below in tables 3.5 and 3.6.
Table 3.5: The Inputs to the Background Subtraction Data Path module: Clk_200MHz System clock with frequency of 200 MHz Reset Reset Signal from simulation testbench Get_data Read control signal from the controller
module to indicate that to Pixel and Reference Background data buffers are being read
Get_data2 Control Signal from the controller module to indicate that pixel and reference background data on input line should be stored to temporary registers
Get_abs Control signal from the controller module to indicate that the current pixel data should be subtracted from both reference backgrounds
Get_min_diff Control signal from the controller module to indicate that the minimum difference between the pixel data and the reference backgrounds should be stored in the min_diff register
Update Control signal from the controller module to indicate that the background data 0/1 should be incremented/decremented by the INCREMENTAL parameter
Update_alpha Control signal from the controller module to indicate that the background data should be multiplied by either 15 or 7 depending on the value of update_pixel0/1_nontarget and update_pixel0/1_target
Update_alpha1 Control signal from the controller module to indicate that the previously multiplied background data should be added to the current pixel data
Update_alpha2 Control signal from the controller module to indicate that the previously added data should be shifted by either 2 or 4 depending on the value of update_pixel0/1_nontarget and update_pixel0/1_target
Update_pixel0_nontarget Control signal from the controller module to indicate that the reference background for pixel_0 should be updated this frame with nontarget parameters
Update_pixel0_target Control signal from the controller module to indicate that the reference background
for pixel_0 should be updated this frame with target parameters
Update_pixel1_nontarget Control signal from the controller module to indicate that the reference background for pixel_1 should be updated this frame with nontarget parameters
Update_pixel1_target Control signal from the controller module to indicate that the reference background for pixel_1 should be updated this frame with target parameters
Update_pixel0 Control signal to data path module to indicate that background_0 should be updated
Update_pixel1 Control signal to data path module to indicate that background_1 should be updated
Inc_SRAM_read_ptr Control signal from the controller to increment the read pointer to the pixel data and background reference data buffer
Inc_SRAM_write_ptr Control signal from the controller module to increment the write pointer to the pixel data and background reference data buffer
Write_SRAM_Out Control signal to output buffers to write the current input data to the buffer
Label Control signal from the controller module to modify the update flag in background_1 and both map_inc values
Output Control signal from the controller module to output the updated background reference data and map_inc data
Temp_inc_global Control signal from the controller module to indicate that the global threshold should be incremented by 4
Decrease_global_1x Control signal from the controller module to indicate that the global threshold should be decremented by 4
Decrease_global_2x Control signal from the controller module to indicate that the global threshold should be decremented by 8
Update_old_frame Control signal from the controller module to indicate that the old frame reference data should be updated with the current pixel data
Absolute_update Control signal from the controller module to indicate that all pixels should be updated this frame
Table 3.6: The Outputs of the Background Subtraction Data Path Module: Pixel_read_ptr Read pointer to inout data and pixel
buffers Pixel_write_ptr Write pointer to output data and pixel
buffers SRAM_out_DATA [63:0] Updated Backround and Threshold data
for 2 input pixels Map_inc_out [5:0] Data to the 16x16 reduced target map
HDL modules to indicate whether the two previously processed pixels are above/below high/low threshold.
Threshold_Counter [21:0] Count of pixels above the low threshold in the previously process frame
Since the FPGA module is processing 2 pixels in parallel, the names for the
datapath registers and wires have a 0 or 1 at the end.
The Background Subtraction Datapath consists of: 8-bit registers: Live_Pixel_0, Live_Pixel_1. Contains the values of the current
pixels being processed.
8-bit registers: Background_1_0, Background_1_1, Background_2_0, and
Background_2_1. Contains the values for the primary and secondary
backgrounds
8-bit registers: Threshold_0, Threshold_1. This register is added to the
GLOBAL_REGISTER to form the low per pixel threshold.
8-bit registers: Old_Frame_0, Old_Frame_1. Contains the values for the
Old_Frame that is between 9000-18000 frames old.
8-bit registers: T2_0, T2_1. Contains the values for the per pixel high threshold.
3-bit wire: flag_pixel_0, flag_pixel_1. Concatenation of the LBS of
Background_1_0/1, Background_2_0/1, and Old_Frame_0/1
8-bit register: GLOBAL_THRESHOLD. This register is added to the
Threshold_X register to form the low per pixel threshold.
8-bit registers: Diff_1_0, Diff_2_0, Diff_1_1, Diff_2_1. Contains the absolute
value of the Live_Pixel_X subtracted from Background_X_X.
8-bit registers: Min_Diff_0, Min_Diff_1. Contains the minimum difference from
Diff_1/2_0 and Diff_1/2_1.
3-bit registers: map_inc_0, map_inc_1. Increment value for 16x16 reduced
target map
18-bit registers: read_ptr, write_pt. Read and Write pointers to image
background and threshold data block rams.
1-bit registers: back_1_0_gt_live, back_1_0_lt_live. Flags to indicate whether
the background_data_pixel_1_0 is greater/less than the current pixel data.
1-bit registers: back_2_0_gt_live, back_2_0_lt_live Flags to indicate whether
the background_data_pixel_2_0 is greater/less than the current pixel data.
1-bit registers: back_1_1_gt_live, back_1_1_lt_live Flags to indicate whether
the background_data_pixel_1_1 is greater/less than the current pixel data.
1-bit registers: back_2_1_gt_live, back_2_1_lt_live Flags to indicate whether
the background_data_pixel_2_1 is greater/less than the current pixel data.
8-bit registers: diff_1_0_val0, diff_1_0_val1 Precomputed values of
8-bit registers: diff_2_0_val0, diff_2_0_val1 Precomputed values of
8-bit registers: diff_1_1_val0, diff_1_1_val1 Precomputed values of
8-bit registers: diff_2_1_val0, diff_2_1_val1 Precomputed values of
3.3 16x16 Reduced Target Map
The 16x16 reduced target map is an HDL implementation of the “parent”
image that is used in the QCC algorithm. The 16x16 reduced target map HDL
module will accept a 6-bit map_inc value from the background subtraction HDL
module and the output a 16 bit “parent” image value. The top 8-bits of the
“parent” image value contains the number of pixels in the 16x16 block that are
above the high threshold and the lower 8-bits is the number of pixels that are
above the low threshold but below the high threshold. The values are limited to
255 to prevent overflow. Table 3.7 below shows the truth table for the 6-bit
map_inc value.
Table 3.7: Truth Table for the 6-bit map_inc Value
MAP INC Pixel 1 Pixel 2 001_001 Below Low Threshold Below Low Threshold 001_010 Below Low Threshold Above Low Threshold and
Below High Threshold 001_100 Below Low Threshold Above High and Low
Threshold 010_001 Above Low Threshold and
Below High Threshold Below Low Threshold
010_010 Above Low Threshold and Below High Threshold
Above Low Threshold and Below High Threshold
010_100 Above Low Threshold and Below High Threshold
Above High and Low Threshold
100_001 Above High and Low Threshold
Below Low Threshold
100_010 Above High and Low Threshold
Above Low Threshold and Below High Threshold
100_100 Above High and Low Threshold
Above High and Low Threshold
3.3.1 16x16 Reduced Target Map Controller
The 16x16 reduced target map controller is a finite state machine FSM
that sends control signals to the 16x16 reduced target map datapath based on
the current state. The 16x16 reduced target map controller also contains several
counters that are used to determine some of the state transitions. The ASM chart
for 16x16 reduced target map controller HDL module, figure 3.3, can be found on
the following page. The input and outputs of the Background 16x16 reduced
target map controller HDL module are shown below in tables 3.8 and 3.9.
Table 3.8:The Inputs to the 16x16 Reduced Target Map Controller Module:
Clk_200MHz System clock with a frequency of 200 MHz Reset Reset Signal from simulation testbench Rx_map_inc Control signal from the Background
Subtrction controller to indicate that map_inc data is being transmitted at the beginning of the next clock cycle
Filter_not_ready Control signal from the Target Map Filter controller to indicate not to trasmitt the next row of map data.
Table 3.9: The Outputs to the 16x16 Reduced Target Map Controller Module:
Read_map Read control signal to the target map buffer
Write_map Write control signal to the datapath and target map buffer
Inc_map_write_addr Control signal to the datapath module to increment the write pointer of the target map buffer
Inc_map_read_addr Control signal to the datapath module to increment the read pointer of the target map buffer
Buffer_read_select Control signal to the datapath module to select which temp buffer will be used to hold the data that was read from the target map buffer
Buffer_write_select Control signal to the datapath module to select which temp buffer data will be used to write the map data to the target map
buffer Reset_map Control signal to the datapath module to
indicate that the map buffer is being reset. Reset_map_write_ptr Control signal to the datapath module to
reset the write pointer to the target map buffer to the INIT_VALUE
Reset_map_read_ptr Control signal to the datapath module to reset the read pointer to the target map buffer to the INIT_VALUE
Update_tile Control signal to the datapath module to indicate that the buffer selected for processing should be updated with the current map_inc value
Temp_select_process Control signal to the datapath module to select which temp buffer will be used to process the current map_inc data
INIT_VALUE [8:0] Address for the start of a new row MAX_VALUE [8:0] Length of the 16x16 reduced row ADD [9:0] Last address on row = INIT_VALUE +
MAX_VALUE Reset_tile Control signal to the datapath module to
indicate that both temp buffers should be reset
Rx_map_data Control signal to the Map Filter controller to indicate that the map data is being transmitted
Reset_map_read_out Control signal to the datapath module to reset the read pointer to the target map buffer to 0
Furthermore, the 16x16 reduced target map is fully parameterized to allow for
different block sizes and image sizes.
PARAMETERS for the 16x16 Reduced Target Map Controller Module Are: parameter PIXELS parameter BLOCK_SIZE=16/PIXELS parameter NUMBER_OF_ROWS parameter SIZE_OF_ROW parameter SIZE_OF_ROW_1= SIZE_OF_ROW/BLOCK_SIZE parameter SIZE_OF_ROW_2= SIZE_OF_ROW/(BLOCK_SIZE*PIXELS)
Table 3.10 shows the controls signals that are asserted at each state shown in
the asm chart on the previous page. All of the control signals are generated with
combinational logic.
Table 3.10: Control Signals Asserted at Each State 16x16 Reduced Target Map Controller
State Table Control Signals S_reset NONE S_set NONE S_reset_map_init write_map, reset_map, inc_map_write_addr S_running_init S_update_tile_init update_tile, inc_map_read_addr, read_map S_running update_tile, write_map, inc_map_write_addr
S_get_map_inc NONE S_write_last write_map S_new_row reset_map_write_pointer,reset_map_read_pointer S_read_first_value read_map S_wait_read_out_flag NONE S_update_row_counter NONE
Additionally, there are 5 counters that are used to determine some of the state
transitions:
row_update_complete_counter: Used to count the number of rows in the 16x16 reduced image that have been completely updated. update_counter: Used to count the number of updates inside of a 16x16 block. process_counter: Used to count the total number of update reset_counter: Used to count number of blocks that have been reset to 0. read_out_counter: Counts the number of blocks that have been sent to the target map filter HDL module.
3.3.2 16x16 Reduced Target Map Datapath
The 16x16 Reduced Target Map Datapath HDL module will process the
map_inc data from the background subtraction HDL modules and form a 16x16
area count of the number of pixels above the high and low thresholds. Control
signals received from the 16x16 reduced target map controller will signal the
datapath to perform operations such as updating the 16x16 block counter based
on the value of map_inc and reading and writing to the temporary target map
buffers. The input and outputs of the 16x16 Reduced Target Map datapath HDL
module are shown below in tables 3.11 and 3.12
Table 3.11: The Inputs to 16x16 Reduced Target Map Data Path Module:
Clk_200MHz System clock with a frequency of 200 MHz Reset Reset Signal from simulation testbench Rx_map_inc Control signal from the Background
Subtraction controller to indicate that map_inc data is being transmitted
Read_map Read control signal to the target map buffer
Write_map Write control signal to the datapath and target map buffer
Inc_map_write_addr Control signal from the controller module to increment the write pointer to the target map buffer
Inc_map_read_addr Control signal from the controller module to increment the read pointer to the target map buffer
Buffer_read_select Control signal from the controller module to select which temp buffer will be used to hold the data that was read from the target map buffer
Buffer_write_select Control signal from the controller module to select which temp buffer will be used to write the map data to the target map buffer
Reset_map Control signal from the controller module to indicate that the map buffer is being reset.
Reset_map_write_ptr Control signal from the controller module
to reset the write pointer to the target map buffer to the INIT_VALUE
Reset_map_read_ptr Control signal from the controller module to reset the read pointer to the target map buffer to the INIT_VALUE
Update_tile Control signal from the controller module to indicate that the buffer selected for processing should be updated with the current map_inc value
Temp_select_process Control signal from the controller module to select which temp buffer will be used to process the current map_inc data
INIT_VALUE [8:0] Address for the start of a new row MAX_VALUE [8:0] Length of the 16x16 reduced row ADD [9:0] Last address on row = INIT_VALUE +
MAX_VALUE Reset_tile Control signal from the controller module
to indicate that both temp buffers should be reset
Rx_map_data Control signal to the Map Filter controller to indicate that the map data is being transmitted
Map_data [15:0] Data containing the number of pixels in the 16x16 block that are above the high and/or low threshold
Map_inc_in [5:0] Data from the Background Subtraction HDL module indicating how the map dta should be updated
Reset_map_read_out Control signal from the controller module to reset the read pointer to the target map buffer to 0
Table 3.12: The Outputs of the 16x16 Reduced Target Map Data Path Module:
Map_read_addr [5:0] Read pointer to target map buffer Map_write_addr [5:0] Write pointer to target map buffer Map_data_out [15:0] Data containing the number of pixels in the
16x16 block that are above the high and/or low threshold
The 16x16 Reduced Target Map Data Datapath further consists of: 1-bit register: read_map_delay. read map delayed by 1 clock cycle 5-bit registers: map_inc_temp0, map_inc_temp. Temporary buffer to hold current map_inc value 16-bit registers: map_temp0, map_temp1. Temporary buffer to hold the current map data. 3.4 TARGET MAP FILTER HDL Module
The target map filter HDL module will parse every row of the 16x16 reduced
“parent” image from the 16x16 reduced target map HDL module output buffer.
On every row of the “parent” image the target map filter will insert two 16-bit
values. The first value is the position of the left most pixel that is above threshold.
The second value is the position of the right most pixel above threshold. These
inserted values will allow the connected components algorithm execute faster
since it will only have to process parts of the row that contains pixels that are
above threshold. After a row is processed by the target map filter modules, the
data will be written to a PowerPC accessible block ram for connected compinents
processing.
3.4.1 TARGET MAP FILTER Controller
The target map filter controller is a finite state machine FSM that sends
control signals to the target map filter datapath based on the current state. The
target map filter controller also contains counters that are used to determine
some of the state transitions. The ASM chart for the target map filter controller
HDL module, figure 3.4, can be found on the following page. The input and
outputs of the target map filter controller HDL module are shown below in tables
3.13 and 3.14.
Table 3.13: The inputs to the Target Map Filter controller module are:
Clk_200MHz System clock with a frequency of 200 MHz Reset Reset Signal from simulation testbench Rx_map_data Control signal from the 16x16 reduced
target map controller to indicate that map data is being transmitted
Table 3.14: The Outputs of the Target Map Filter controller module:
write_left_indicator Control signal to the datapath module to indicate that the left_indicator data should be written map data buffer.
write_right_indicator Control signal to the datapath module to indicate that the right_indicator data should be written the map data buffer.
reset_left_flag Control signal to the datapath module to indicate that the left flag buffer should be reset to 0.
filter_not_ready Control signal to the 16x16 reduced target map controller to indicate not to transmit the next row.
Write map Write control signal to target map filter buffer
Table 3.15 shows the controls signals that are asserted at each state shown in
the ASM chart on the following page. All of the control signals are generated
with combinational logic.
Table 3.15 Control Signals Asserted at Each State 16x16 Reduced Target Map Filter
State Table Control Signals S_reset NONE S_wait_flag NONE S_rx_data NONE S_write_left_indicator Write_left_indicator, filter_not_ready S_write_right_indicator Write_right_indicator, filter_not_ready,
reset_left_flag
3.4.2 Target Map Filter Datapath
The target map filter datapath HDL module will process the 16x16 reduced
map data or the “parent image”. On every row of the “parent” image the target
map filter datapath will insert two 16-bit values. The first value is the position of
the left most pixel that is above threshold. The second value is the position of the
right most pixel above threshold. Control signals received from the 16x16
reduced target map controller will signal the datapath to perform operations such
as inserting the values into the “parent” image data and writing the data to a
PowerPC accessible block ram. The input and outputs of the Target Map Filter
datapath HDL module are shown below in tables 3.16 and 3.17.
Table 3.16: The Inputs to Target Map Filter Data Path Module:
Clk_200MHz System clock with a frequency of 200 MHz Reset Reset Signal from simulation testbench Map_data_rx [15:0] Data containing the number of pixels in the
16x16 block that are above the high and/or low threshold
Rx_map_data Control signal from the 16x16 reduced target map controller to indicate that map data is being transmitted
Write_left_indicator Control signal from the controller module to indicate that the left_indicator data should be written map data buffer.
Write_right_indicator Control signal from the controller module to indicate that the right_indicator data should be written the map data buffer.
Reset_left_flag Control signal from the controller module to indicate that the left flag buffer should be reset to 0.
Table 3.17 :The Outputs of the Target Map Filter Data Path Module:
Write_ptr [`TARGET_REG_SIZE-1:0] Write pointer to the target map filter buffer
Map_data_out [15:0] Data containing the number of pixels in the 16x16 block that are above the high and/or low threshold, tags on each row
Additional registers of the Target Map Filter Datapath are: 1-bit register: rx_map_delay. rx_map signal delayed by 1 clock cycle 1-bit register: left_flag. Flag to indicate the first pixel that is above threshold on the current row has been located. 16-bit registers: left_indicator_flag, right_indicator_flag. Position of the first and last pixel on the row that is above threshold.
CHAPTER 4
SIMULATION/SYNTHESIS RESULTS
4.1 Simulation Introduction
This chapter contains simulation results for the background subtraction, 16x16
reduced target map, and target filter HDL modules. The full version of the
simulator built into Xilinx ISE was used to simulate all of the Verilog HDL
modules. Additionally, file I/O commands added in the Verilog 2001 standard
were used to load the image, background reference and threshold data to
multiple block ram modules and write the simulation data from a block ram
module back to an image file. The final simulation of the background subtraction
HDL modules consisted of producing threshold images that shows the pixels that
are above the high and low threshold image for each input image, a count of the
pixels above threshold for each input image, and the 6-bit map_inc value. The
high and low output threshold images were produced according to equations 4.1
and 4.2:
The 16x6 reduced target map filter was simulated using both a constant map_inc
value and the actual map_inc values for each of the input images generated from
the background subtraction HDL modules. Finally, the target map filter HDL
module was simulated using the 16-bit map value from the 16x16 reduced target
map output buffer data.
4.2 Background and Threshold Initialization The following image data was obtained from the CAVIAR: Context Aware
Vision using Image-based Active Recognition web site. From the CAVIAR image
sequence two empty scenes, frames 700 and 730, were selected to be the
background reference models. Table 4.1 below shows the two background
reference models.
Table 4.1 below shows the two background reference models.
Reference
Background 1
Reference
Background 2
Next, the per pixel threshold was initialized with two different techniques. The
first technique consisted of initializing the low threshold to the absolute
difference of the two reference backgrounds:
(4.3)
where represents additive noise. The additive noise value used for the
simulation was 6. The second technique consisted of using Matlab to find the
maximum and minimum pixel value inside of a 5x5 pixel block. Next the low
threshold was set according to the following equation:
(4.4)
The high threshold was set to 32 plus the low threshold for both
techniques. Table 4.2 on the following page contains the output threshold images
for both techniques.
Table 4.2 on the following page contains the output threshold images for both techniques
Threshold image using
technique # 1
Threshold image using
technique # 2
4.3 Simulation Results for the Background Subtraction HDL Modules
4.3.1 Experiments with FRAME 870
Table 4.3 below shows the Verilog HDL simulation results for Caviar Frame
870.The first set of threshold images were produced using the absolute value
plus additive noise threshold initialization technique and the second set of
images was produced using the 5x5 block average threshold initialization
technique. Table 4.3 also contains the count of the number of pixels above
threshold for both techniques. The scene contains three targets that are show
inside of the red boxes.
Table 4.3: Verilog HDL Simulation Results for Caviar Frame 870
Frame 870
Pixels above the low threshold using threshold initialization technique #1
Pixels above the low threshold using threshold initialization technique #2
Pixels above the high threshold using threshold initialization technique #1
Pixels above the high threshold using threshold initialization technique #2
Pixels above threshold
Threshold Initialization Technique #1: 2421 pixels #2: 521 pixels
4.3.2 Experiments with FRAME 911
Table 4.4 below shows the Verilog HDL simulation results for Caviar Frame
911.The first set of threshold images were produced using the absolute value
plus additive noise threshold initialization technique and the second set of
images was produced using the 5x5 block average threshold initialization
technique. Table 4.4 also contains the count of the number of pixels above
threshold for both techniques. The scene contains three targets that are show
inside of the red boxes.
Table 4.4: Verilog HDL Simulation Results for Caviar Frame 911
FRAME 911
Pixels above the low threshold using threshold initialization technique #1
Pixels above the low threshold using threshold initialization technique #2
Pixels above the high threshold using threshold initialization technique #1
Pixels above the high threshold using threshold initialization technique #2
Pixels above threshold
Threshold Initialization Technique #1: 5022 pixles #2: 1629 pixels
4.3.3 Simulation Results for the Target Map HDL Modules
Figure 4.1 below shows the Verilog HDL simulation results for the 16x16
reduced target map using a constant map_inc value of 6’b010_010. The map inc
value will update the current 16x16 block value by 2, therefore all of the blocks
should have a value of 256 as shown below. Next, I generated the 16x16 map
data from caviar frames 870 and 911 and compared the results to a similar
Matlab based target map program that I created. The results were exactly the
same for all blocks.
Figure 4.1: Verilog HDL Simulation Results for the 16x16 Reduced Target Map
4.3.4 Simulation Results for the Target Filter HDL Modules
Figure 4.2 below shows the Verilog HDL simulation results for the 16x16
reduced target map filter. For the second row or block ram addresses 26-49 the
inserted values at the block ram address were 26 and 49 since the all of the map
values are 256. Next, I generated the 16x16 map data from caviar frames 870
and 911 with the inserted values on every row and then confirmed that all of the
inserted values were correct.
Figure 4.2: Verilog HDL Simulation Results for the 16x16 Reduced Target Map Filter:
Inserted Row Indicator Values
4.4 QCC Results
The following results were obtained using a C++ and OpenCV based QCC
algorithm similar to the one presented in section 2.4.3. However the QCC
software could only accept my threshold images as the input and not the 16-bit
reduced resolution map data.The QCC algorithm returned 3 targets for both
scenes using both threshold initialization techniques. Table 4.5 below shows the
returned images from the QCC algorithm.
Table 4.5 Returned images from the QCC algorithm
Frame 870 Low Threshold
Using Threshold Initialization Technique 1
Frame 870 High Threshold
Using Threshold Initialization Technique 1
Frame 870 Low Threshold
Using Threshold Initialization Technique 2
Frame 870 High Threshold
Using Threshold Initialization Technique 2
Frame 911 Low Threshold
Using Threshold Initialization Technique 1
Frame 911 High Threshold
Using Threshold Initialization Technique 1
Frame 911 Low Threshold
Using Threshold Initialization Technique 2
Frame 911 High Threshold
Using Threshold Initialization Technique 2
4.5 Discussion of Simulation Results
The performed simulation of the HDL modules was successful in producing
both low and high threshold images from frames 870 and 911 in the CAVIAR
dataset for both threshold initialization techniques. The background subtraction
module takes a minimum of 5 clock cycles to complete all of its datapath
operations when using incremental update method and a maximum of 8 clock
cycles to complete all of its datapath operations per pixel when using the alpha
update method. The alpha update method was also one of the bottle necks in the
original LOTS system and the reason why the incremental update method was
developed. A 3-Mega pixel sensor such as the MICRON MT9T001 has a
maximum pixel clock of 48 MHz or a clock period of 20.833333 ns and can
output pixels data at the resolution and corresponding frame rate shown in table
4.6 below.
Table 4.6: Frame Rate and Corresponding Frame Size for a MICRON Mt9T001
Since the background subtraction and target map modules were designed to run
at 200 MHz or with a clock period of 5ns that gives the HDL modules 4.1667
clock cycles to process each pixel to keep up with the 48 MHz clock. However,
since I also designed the system to process 2 pixels in parallel that gives 8.3334
clock cycles to complete all of the datapath operations. With an input clock of 200
MHz clock the background subtraction HDL modules can easily process a
640x480 image at 93 fps and a 2048x1536 image at 12 fps. However for an
FPGA such as the Spartan 3E the maximum input clock frequency is around 100
MHz, therefore the modules could only process a 640x480 image at 46 fps and a
2048x1536 image at 6 fps. In comparison the original LOTS system ran at 30
frames per second on a 640x480 image using a 266 MHz K6 with MMX enabled
processors, 32 MB of memory, and a PCI frame grabber. Additionally, the count
of the number of pixels above threshold was obtained for both threshold
initialization techniques. Threshold initialization technique #2 produced lo and hi
threshold images that contained a significant less amount of noise as compared
to the first initialization technique. Caviar frame 870 contained 2421 pixels above
threshold using the first initialization technique and 331 pixels above threshold for
the second intilization technique or for the 5x5 block threshold initialization
technique. Caviar frame 911 contained 5022 pixels above threshold using the
first initialization technique and 1692 pixels above threshold for the second
intilization technique or the 5x5 block threshold initialization technique. A
reduction in the initial noise and possibly false targets is especially important
especially if the camera is not going to be running all of the time since a
significant amount of noise can lead to numerous false targets when the system
is activated. Furthermore, the 5x5 block method only requires two reference
frames and can be computed offline.
4.5.1 Simulation Results For the Target Map HDL Modules
The simulation of the target map HDL modules was successful. First a
constant map_inc value of 6’b010_010 was used as the input to the target map
hdl module. The map inc value will update the current 16x16 block value by 2,
therefore all of the blocks should have a value of 256 which the simulation results
comfirmed. Next, I generated the 16x16 map data from caviar frames 870 and
911 and compared the results to a similar Matlab based target map program that
I created. The results were exactly the same for all blocks. The target map HDL
modules have a maximum delay a 4 clock cycles between receiving the map_inc
data and updating the current block counter. Therefore, the module is always
ready for the next map_inc data when it is being transmitted from the background
subtraction HDL module.
4.5.2 Target Map filter HDL Modules
The simulation of the target map filter HDL module was successful. First I ran
the simulation using the map data with a constant value of 256. I then verified
that the inserted values for the row indicator were correct. For example, the
second row or block ram addresses 26-49 the inserted values at the block ram
address were 26 and 49 since the all of the map values are 256. Next, I
generated the 16x16 map data from caviar frames 870 and 911 with the inserted
values on every row and then confirmed that all of the inserted values were
correct.
4.6 Xilinx XST Synthesis results
All of the HDL code for was synthesized using the Xilinx ISE software. The
Xilinx ISE software includes the Xilinx Synthesis Technology (XST) which
synthesizes VHDL, Verilog, or mixed language designs into a Xilinx specific net
list or NGC file. Additionally, a global timing constraint of a system clock period
of 5 ns or a frequency of 200 MHz was applied to the design. During the HDL
code entry, testing and debugging phase of the design, the post map and post
place and route static timing analyzer was used to identify any logic that was not
meeting the global timing constraint of 5ns. Table 4.7 below shows some of the
logic that did not meet the global timing constraint and the actions taken to allow
the design to run at 200 MHz.
Table 4.7: Logic That Did not Meet Timing and the Actions Taken to Allow the Design to Run at 200 MHz.
Logic Problem Action Taken Alpha based reference background update
Trying to multiply, add, and shift a value in one clock cycle
Increase update to 3 clock cycles
Threshold counter compare in state machine
Comparing threshold counter for next state logic
Pre decoded compares in state preceding threshold counter compare outside of state machine
Update counter and indicator compares for background subtraction datapath
Assign statement for update counter and indicator compares for background subtraction datapath
Pre decoded compares using registered logic in state before compares are needed
Live_Pixel_0/1 Register Fanout Too High Duplicate LivePixel_0/1 Register in background subtraction datapath module
The global timing constraint was always met on target map and target map filter
HDL modules. The synthesis summary can be found on the following page and
the complete synthesis report can be found in Appendix A on page 81.
4.6.1 Xilinx XST Synthesis Summary
============================================================= * Final Report * ============================================================= Final Results RTL Top Level Output File Name : back_sub_top.ngr Top Level Output File Name : back_sub_top Optimization Goal : Speed Advanced HDL Synthesis Report Macro Statistics # FSMs : 3 # RAMs : 2 432x16-bit dual-port block RAM : 1 468x16-bit dual-port block RAM : 1 # Multipliers : 1 11x3-bit multiplier : 1 # Adders/Subtractors : 44 10-bit adder : 2 11-bit adder : 4 16-bit adder : 3 3-bit adder carry out : 1 5-bit adder : 1 5-bit adder carry out : 1 8-bit adder : 5 8-bit adder carry out : 7 8-bit addsub : 3 8-bit subtractor : 11 9-bit adder : 3 9-bit adder carry out : 3 # Counters : 14 10-bit up counter : 1 15-bit up counter : 2 18-bit up counter : 2 3-bit up counter : 1
4-bit up counter : 1 5-bit up counter : 1 8-bit up counter : 2 9-bit up counter : 4 # Accumulators : 5 10-bit up accumulator : 1 3-bit up accumulator : 1 5-bit up accumulator : 1 8-bit up accumulator : 1 9-bit up accumulator : 1 # Registers : 379 Flip-Flops : 379 # Comparators : 28 10-bit comparator equal : 1 10-bit comparator lessequal : 1 16-bit comparator lessequal : 2 3-bit comparator not equal : 1 4-bit comparator not equal : 1 5-bit comparator equal : 1 6-bit comparator not equal : 1 8-bit comparator greater : 10 8-bit comparator less : 3 8-bit comparator lessequal : 4 8-bit comparator not equal : 1 9-bit comparator equal : 1 9-bit comparator not equal : 1 Device utilization summary: --------------------------- Selected Device : 4vfx60ff1152-10 xc3s1200eft256-4 Number of Slices: 618 2% 7% Number of Slice Flip Flops: 450 0% 2% Number of 4 input LUTs: 1171 2% 6% Number of FIFO16/RAMB16s: 2 0% 7% Number of GCLKs: 1 3% 4%
Conclusion
In conclusion the design and simulation of the target detection and tracking HDL
modules was a success. The background subtraction datapath while processing
two pixels in parallel is able to complete all of its operations in 5 to 8 clock cycles.
Additionally, the 16x16 reduced target map and target map filter can complete
their datapath operations 4 and 2 clock cycles respectively. Xilinx post place and
route timing reports shows that the design can operate using a input clock of 200
MHz. The design could also be expanded to process 4 pixels in parallel to
accommodate a 5MPixel sensor with a master clock of 96MHz. Two pixel
threshold initialization techniques were also explored. The first technique
consisted of initializing the low threshold to the absolute difference of the two
reference backgrounds:
The second technique consisted of using Matlab to find the maximum and
minimum pixel value inside of a 5x5 pixel block. Next the low threshold was
set according to the following equation:
The second initialization technique produced threshold images that contained a
significantly less amount of noise. A reduction in the initial noise and possibly
false targets is especially important especially if the camera is not going to be
running all of the time since a significant amount of noise can lead to numerous
false targets when the system is activated. Furthermore, the 5x5 block method
only requires two reference frames and can be computed offline.
Xilinx synthesis report showed that the design utilizes approximately 617 FPGA
Slices or 2% of a Virtex 4 FX60 chip. The largest FPGA resource utilization will
come from the use of dual port block rams for the input and output buffers and
16x16 reduced target map buffers. However the buffers can always be scaled
down to make more block ram available to other parts of the system.
Finally, the hardware aspect of the target detection and tracking system is ready
for a real time implementation. However, the QCC software that can use 16x16
reduced resolution map data needs to be developed and implemented. Once the
software has been developed, the complete system can be integrated onto a
FPGA development board for further analysis and real time testing.
Bibliography
[1] T.E. Boult, R.J. Michaels, X. Gao, and M. Eckman. Into the woods: Visual surveillance of noncooperative and camouflaged targets in complex outdoor settings. Proceedings of the IEEE, 89(10):1382-1402, October 2001
[2] I. Haritaoglu, D. Harwood, and L. S. Davis. W4: real-time
surveillance of people and their activities. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(8):809– 830, August 2000.
[3] I. Haritaoglu, D. Harwood, and L. S. “W4: Who? When? Where? What” [Online document]. Available HTTP: http://www.umiacs.umd.edu/~hismail/W4_outline.htm
[4] C. Wren, A. Azarbayejani, T. Darrell, and A. Pentland. Pfinder: Real-time tracking of the human body. IEEE Transactions on Pattern Analysis and Machine Intelligence, 19(7):780–785, July 1997.
[5] C. Wren, A. Azarbayejani, T. Darrell, and A. “Real-Time Tracking of the Human Body” [Online document]. Available HTTP: http://vismod.media.mit.edu/vismod/demos/pfinder/
[6] Hall, D. Nascimento, J. Ribeiro, P. Andrade, E. Moreno, P. Pesnel, S. List, T. Emonet, R. Fisher, R.B. Victor, J.S. Crowley, J.L. Comparison of target detection algorithms using adaptive background models. Second IEEE Workshop on Visual Surveillance and Performance Evaluation of Tracking and Surveillance, 113-120, October 2005
[7] T.E. Boult, R.J. Michaels, X. Gao, P. Lewis, C. Powers, W. Yin, and A. Erkan.
Frame-Rate Omnidirectional Surveillance and Tracking of Camouflaged and Occuluded Targets. Second IEEE International Workshop on Visual Surveillance, pp48-55, 1999.
[8] T.E. Boult, R.J. Michaels, X. Gao, P. Lewis, C. Powers, W. Yin, C. Qian, and
A. Erkan. Frame-Rate Multi-Body Tracking for Surveillance. In Proc. of the DARPA IUP. 1998