Barrel Detection

From RoboJackets Wiki
Revision as of 22:15, 7 November 2005 by DavidF (talk | contribs) (Progress: updated link)
Jump to navigation Jump to search
A barrel, and its bounding box, as identified by BarrelBlobFinder

Objective: Determine bounding boxes for the barrels visible in a camera image.

Jump to the most promising approach for detecting barrels.

Approaches

The following approaches have been considered:

Image Acquisition & Color Identification (#1)

Strategy

  • Find orange pixels (on barrel) with (Pixels) => Red - Green => High-Pass Threshold => (Orange pixels)
  • Find while pixels (on barrel) with (Pixels) => Saturation => Low-Pass Threshold => (White pixels)
  • (Orange pixels) => Blob seperation => Orange stripes (Bounding Boxes)
  • (Orange pixels) => Blob seperation => White stripes (Bounding Boxes)
  • {Orange stripes (Bounding Boxes), White stripes (Bounding Boxes)} => Blob merging => Barrels (Bounding Boxes)

Progress

  • none so far

Image Acquisition & Color Identification (#2)

Strategy

  • Preprocessing
    • Find orange pixels (on barrel) with (Pixels) => Red - Green => High-Pass Threshold => (Orange pixels)
    • Find white pixels (on barrel) with (Pixels) => {Saturation, Brightness} => {Low-Pass Threshold, High-Pass Threshold} => (White pixels)
  • Algorithm
    • Scan horizontal lines of image, starting from the bottom, and moving up. When current scan line intersects a sufficient number of orange pixels, mark the scan line as containing the bottom edge of one or more barrels.
    • Find the interval of orange pixels on the scan line within the X% and (100-X)% quartiles (where X is a parameter - typically 5%). Mark this interval as being the bottom edge of a barrel. (The usage of quartiles is to ensure robustness in the prescense of orange pixel noise.)
      • Note: This step assumes that the bottom edges of more than one barrel will not occur in the same scan line.
    • Once the bottom edge of a barrel is identified, scan horizontal line-segments above the bottom edge, starting from the bottom and moving up. When an insufficient percentage of the current scan line-segment contains orange/white pixels, mark the line-segment as being the top edge of the barrel.
    • Once the top and bottom edges of a barrel have been identified, record the bounding box of the barrel and delete the barrel from the image (clear all of the pixels within the bounding box). Continue scanning.

Progress

  • I have written an experimental image filter called BarrelBlobFinder, included in ImageFilterDemo v1.2.3, that implements a more complex version of this algorithm. It works quite well, although it could benefit from some more calibration. --David 23:22, 19 Oct 2005 (EDT)
  • I am investigating the usage of adaptive thresholding to dynamically determine appropriate values for the threshold-style parameters of the BarrelBlobFinder filter. --David 20:48, 20 Oct 2005 (EDT)
  • I have enhanced BarrelBlobFinder to determine the width of barrels a lot more accurately. Check it out in ImageFilterDemo v1.2.5. --David 21:38, 5 Nov 2005 (EST)

Distance-Map Acquistion & Shape Identification

Strategy

  1. Scan distances in front of robot by some method, obtaining a distance-map.
  2. Find/distinguish the "plateaus" of the graph. Mark each "plateau" as the near-edge/near-face of a barrel.

Methods to Obtain a Distance Map

  1. SICK
    • Obtains a distance-map along a line projected away from the robot.
    • Pros
      • Easy to implement programmatically.
    • Cons
      • Expensive hardware. May be able to get from the CS department
  2. Stereoscopic Imaging
    • Obtains a distance-map along a plane projected away from the robot.
    • Pros
      • none significant
    • Cons
      • Difficult to implement programmatically.
      • Requires two camcorders. Currently, we only have one.

Progress

  • Spencer already has a rudimentary implementation of a steroscopic imaging algorithm.

A Note on Notation

In the above steps, items surrounded with parentheses are data. Other items are analyses or filters.