Project 4: Motion Detection

Due  
(points 150)


    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 may 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.

    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.

     

    Program Modes: Background and Relative.

    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.

     

     

    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. 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.
  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 2001