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

  1. 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.
  2. Fully comment and test out program.
  3. 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.
  4. Printout of code, fully commented, with YOUR NAME ON TOP, and INSTRUCTIONS ON HOW TO RUN THE CODE FROM YOUR DISKETTE.
  5. A one-page description of how code is structured and the state of how it works.
  6. 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.
  7. Print outs of screen shots of program working showing the results of: image loading and display of image sequence before and after processing.

© Lynne Grewe