Project 5: Motion Detection
Due Nov. 18
(points 200)
Grading: 50 points = ave from survey, 150 points using Binary
Grading Fomula
You are to write a GUI Java application that will detect moving
objects in an image sequence.
You will work in teams of 3-4 and present the running program
and the results to your classmates. You will be given
time in class to work on this project but, it will require time
outside of class.
Data Capture - Input
First you must capture a number of sequences of images using the
cameras in the lab that have objects moving through it. The camera
is stationary in each case. You must have one sequence in which
there is only a single object moving through the scene. Another
sequence must have two objects that cross paths.
Other test cases you must use: test1 , test2
Output
You are to produce a sequence of output images comprising a linear
time capture sequence in which the pixels that are moving are set
to some visually distinctive color (act as a highlighter) and the
rest of the pixels are unchanged in the image sequence. The images
are stored in files as well as can be displayed by the user via
some GUI selection mechanism, as well as you should have one GUI
selection that displays the output images in a time-delayed sequence.
GUI
- User should be able to display both the input and resulting
output image sequences.
- User should be able to display individual input and output
images.
- Also user should be able to "play" both the input
and output sequences as a movie. Specifically, the images will
be displayed continually in a loop in sequence, until the user
hits stop.
- Ability to load different input image sequences. You need
to create a data file that is loaded that lists the number of
images in the sequence as well as their filenames.
- Ability to save the output image sequence. Should prompt user
for a base filename. If the user specifies "outputI",
then the program should create the following filenames "outputI1"
"outputI2", "outputI3", etc. for each of
the output images in the sequence.
CONSIDERATONS
I want you to consider all of the following potential problems
and pose answers to them and implement them in your system.
Your deliverable item number 1 must describe
not only your algorithms but, specifically address how you have
answered these problems:
Prob1: What happens when an
object moves into a scene and then remains stationary for
the rest of the video sequence. You should not detect it
as moving. How can you do this in the background mode. See
test sequence test1 |
Prob2: What if you extend
the video sequence described in prob1 so that now the object
that was at rest starts moving again. How will effect your
algorithm that took into consideration Prob
1. See test sequence test1 |
Prob3: If you have an object
that has one or more regions that are of the same color.
Is it possible to detect these pixels when in Relative mode.
In the hybrid-mode (see below) come
up with a scheme that uses relative information but, also
merges it with background information to get around this
problem. See test sequence
test2. |
Program Modes: Background, Relative and Hybrid.
The user can select to run the program in one of 2 modes. The first
is "background" mode and the second is "relative".
You will have 2 different motion detection algorithms that are invoke
for the 2 different operating modes respectivley.
Background mode
In this case, you will prompt the user to supply you
a image of the scene with none of the moving objects in it...hence
a kind of "background" image. You can use this image
to help you with motion detection.
Relative mode
In this case, you will not be provided with a "background"
image and you must only use the image sequence given as input.
Hybrid mode
Here you will create results that will in some way "combine"
or "fuse" the results from both the Relative and Background
mode to alleviate Prob3 listed above.
Implementation Details
You will select a supervisor from your group to monitor progress on
the project. Everyone must partcipate in all phases of this projects.
Also, EVERYONE must be able to understand and reproduce the code created
if necessary. If you do not individually complete the portion of the
work allocated to you as stipulated by the supervisor, you will not
be given credit on that phase of the project AND this work must then
be redistributed by the supervisor to the rest of the class.
Attendance throughout the class periods we will work on this
project is CRITICAL and NECESSARY for credit on this project. ONLY
absences excused by written doctor reports or other accepted excuses
(see instructor) will be allowed and in this case a different individual
project will be assigned to you.
Deliverables
- HTML paper on how you designed your MotionDetection Program.
Describe your approach and why you decided to take it. Note- you must
address the problems discussed above as required
above. Show results on the 2 images above. Discuss how you might improve
your algorithm.
Upload HTML w/images, etc. to one person's server account. Print out
this HTML paper and write on top the URL of its location. YOU MUST create
your own test sequence, in addition you must test using the sequences
test1 and test2.
- Fully comment and test out program.
- Turn in diskette with all java code and compiled class files needed
to run the program. IF YOU use additional classes not in standard Java,
you need to have all of the files here...make a JAR file.
- Printout of code, fully commented, with YOUR NAME ON TOP, and INSTRUCTIONS
ON HOW TO RUN THE CODE FROM YOUR DISKETTE.
- A one-page description of how code is structured and the state of
how it works.
- A one-page description of each persons contribution to the project.
If you have 3 people in your group this page should be formated by having
3 sections, each with a different person's name as the header. Under
each section, describe that person's contributions to the design, code,
and documentation development.
- Print outs of screen shots of program working showing the results
of: image loading and display of image sequence before and after processing.
|