91.548 home

mtg 13: Course Review
• mtg 13 html

mtg 12: Research Papers
• mtg 12 html

mtg 7: Robot Vision
• lab 7 html

mtg 6: LabVIEW Embedded for Blackfin
• lab 6 html

mtg 5: VDK (visual dsp++ kernel)
• lab 5 html
• VDK manual index html

mtg 4: laser cutter
• lab 4 html

mtg 3: FPGA design/implementation
• lab 3 html
• control eng 1800-1930, pp. 96–152 no link
• Xilinx Spartan 3E XC3S250E
  – promo pdf
  – homepage html
  – data sheet pdf
• Xilinx Quick Start pdf

mtg 2: sensors/motors/arch/control
• lab 2 html
• control eng 1800-1930, pp. 51–95 no link
• dynamic pwr mgm't, from BF537 data home page html • sensors html

mtg 1: intro
• syllabus html
• BF-HB manual & schems no link
• BF537 manual (pages 1-13) pdf
• DSP guide zip
• control eng 1800-1930, pp. 1-50 no link
• lab 1 html files

91.548 Lab 7: Robot Vision

due March 29

The objective this week is to write image processing code on the Blackfin using a CMOS digital camera.

At present, the cameras do not work on the Blackfin Handy Board, but we have two Blackfin EZ kits with AV Extender cards that accept the cameras.

Research/Writing Assignment

Also this week, I would like you to conduct project planning for your main project. Saturday April 8 at Botfest will be the first public demonstration of your project.

For next week, I would like a full page project plan for what you want to do. The plans:

  • Should be posted on the course Wiki, under the page name SemesterProjectPlans.
  • People definitely can work together. I'd like this to be planned.
  • For this week, describe your overall project intent and a list of 3 to 8 key milestones or pieces of functionality.

Some ideas for things to do:

  • Set up a Blackfin-with-camera on the pen plotter in the hallway. Have it capture portraits, vectorize them, and output HPGL line draw commands to the pen plotter. It's interpreted computer art!

  • Climb the LabVIEW learning curve, and do a significant robot control problem with it (e.g., mapping using sonars on a servo). Note: I have LabVIEW widgets for most of the HB functionality now.

Implementation Project

The sample code we are using configures the Blackfin's PPI port to acquire images from the camera. The data is a YUV colorspace, which is described on Wikipedia at http://en.wikipedia.org/wiki/YUV. Broadly, the U and V channels define the color (“chrominance”), while the Y channel is the luminance (or brightness).

The actual data from the camera is in the byte order VYUY, with the Y channel is sampled 2x as often as the V and U. The image viewer in VDSP does not directly support this byte ordering, so a byte-swap operation is run to create an image in the YVYU sequence.

To view images, run the code with a breakpoint after the byte-swap, and then refresh the image viewer.

Your task: Get the image acquisition up and running, and then write some kind of image filtering/feature extraction code. Demonstrate your code by having it produce either a new image or an extracted feature set. Document on a Wiki page.

For example, image segmentation (a.k.a blob tracking). Phil Thoren has described his algorithm for this (in Phission) as:

The blobbing/segmentation code works by:
   1.) Generating an array ("height" elements long) of a linked list segment elements that describe matching pixels groups within a row.
      - The matching pixels groups are generated by either matching some color/threshold or using nearest neighbor thresholds.
   2.) Comparing the linked list from row 1 to row 2, row 2 to row 3, etc. and setting up pointers that connect overlapping horizontal segments
   3.) Traversing the up/down/left/right pointers of the line segments to create blob information

This is probably more general than you may want, at least for a first pass. For example, you could simplify this with the limitation of exactly one object to be tracked.

Other possibilities are edge-detection or motion-tracking. Use your imagination, and find on-line resources and tutorials.

Note: people can/should collaborate on this. Make sure all contributors are listed as authors on the Wiki project page.

Last modified: Wednesday, 22-Mar-2006 14:34:39 EST by fred_martin@uml.edu