XB3

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.

    Author:
    Tiago Talhada
    Date:
    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

      /snr/scam/short/left/image_raw
      /snr/scam/short/left/camera_info
      /snr/scam/short/right/image_raw
      /snr/scam/short/right/camera_info

      /snr/scam/wide/left/image_raw
      /snr/scam/wide/left/camera_info
      /snr/scam/wide/right/image_raw
      /snr/scam/wide/right/camera_info

      How to use the package?

      Here is an example on how to use xb3 package.

      <launch>
        <!-- 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"/>  
        </node>
              <param name="width" type="int" value="640"  />
              <param name="height" type="int" value="480"  />
      </group>
      </launch>
      

      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">
            </node>
      </group>
      
      <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" />
      </group>
      

      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


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