xb3: xb3 driver

This package is a Ros based driver for Bumblebee xb3 stereo cameras.

  • Homepage: http://ros.org/wiki/xb3
  • This is a ros driver package for Bumblebee xb3 stereocameras. This node receive images from camera and publish image topics and camera service info.

    Tiago Talhada
    May 2012

    Table of contents

    1. Published topics

    2. How to use the package?

    3. How to process stereo with stereo_image_proc?

    4. Stereo image processing parameters

      1. Pre - Filtering

      2. Post - Filtering

      Published Topics

      This package publishes the following topics



      How to use the package?

      Here is an example on how to use xb3 package.

        <!-- This is an arpua lauch file for starting up xb3. -->
        <group ns="/snr/scam">
          <node name="xb3" pkg="xb3" type="xb3">
              <remap from="/xb3_optical_frame" to="/atc/camera/xb3/left"/>  
              <param name="width" type="int" value="640"  />
              <param name="height" type="int" value="480"  />

      You can use the full camera resolution 1280x960 or 640x480.
      If you change your resolution, remember to change also your calibration files.

      How to process stereo with stereo_image_proc?

      You can use the following as a launch file to run stereo_image_proc for both baselines.

      <group ns="/snr/scam/short">
            <node name="stereoproc" pkg="stereo_image_proc" type="stereo_image_proc" 
                  args="_prefilter_size:=255 _prefilter_cap:=63 _correlation_window_size:=31 _min_disparity:=0 _disparity_range:=32 
                  _uniqueness_ratio:=10 _texture_threshold:=100 _speckle_size:=400 _speckle_range:=15">
      <group ns="/snr/scam/wide">
            <node name="stereo_image_proc" pkg="stereo_image_proc" type="stereo_image_proc" 
                  args="_prefilter_size:=255 _prefilter_cap:=63 _correlation_window_size:=31 _min_disparity:=0 _disparity_range:=32 
                  _uniqueness_ratio:=10 _texture_threshold:=100a _speckle_size:=400 _speckle_range:=15 __name:=xb3_wide_stereo_proc" />

      Stereo image processing parameters

      Here is a brief description on what does each parameter from opencv block match stereo processing.
      I take this description from the book: Learning OpenCV (page: 438:444).
      There are three stages to the block-matching stereo correspondence algorithm.

      1. Pre-filtering to normalize image brightness and enhance texture.

      2. Correspondence search along horizontal epipolar lines using an SAD ("sum of absolute difference") window.

      3. Post-filtering to eliminate bad correspondence matches.

      Pre-filter parameters

      1. prefilter_size (5, 255) (5x5, 21x21)
        -Reduce lighting differences and to enhance image texture.
        -The center pixel Ic under the window is replaced by min[max(Ic - I , Icap), Icap],
        where I is the average value in the window and Icap is
        a positive numeric limit whose default value is 30 (prefilter cap).

        • Default 9x9.

      2. prefilter_cap (1, 63) (about 1/4 of image range (0-255))
        -definition above (prefilter_size)

        • default 30.

      3. correlation_window_size (5, 255)
        -With smaller windows the processing speed is much higher
        -SAD matching window size. (5x5,...,21x21).

        • default 15.

      4. min_disparity (-128, 128)
        -Minimum disparity (=0)
        -Minimum value where the matching search will start

        • default 0.

      5. disparity_range (32, 128)
        -Reducing the disparity range to be searched can help cut down computation
        time by limiting the length of a search for a matching point along an epipolar line.
        • default 64

      Post filtering parameters

      1. uniqueness_ratio (0, 100)
        -The minimum margin in percents between the best (minimum) cost function value and
        the second best value to accept the computed disparity.

        • UniquenessRatio > (match_val-min_match)/min_match.

      2. texture_threshold (0, 100)
        -Minimum value for texture to compute disparity.
        -That is, if the sum of absolute values of x-derivatives
        computed over SADWindowSize by SADWindowSize pixel neighborhood
        is smaller than the parameter, no disparity is
        computed at the pixel.

        • default 10.

      3. speckle_size (0,1000)
        -The maximum area of speckles to remove (set to 0 to disable speckle filtering)
        -Set a speckle detector over a speckle window to prevent speckles.

        • default 100

      4. speckle_range (0,31)
        -Acceptable range of disparity variation in each connected component.
        -As long as the minimum and maximum detected disparities are within speckleRange,
        the match is allowed.
        • default 4.
     All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines

    Author(s): Miguel Oliveira, Tiago Talhada
    autogenerated on Wed Jul 23 04:35:09 2014