XB3

xb3

The xb3 package

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.


xb3
Author(s): Miguel Oliveira, Tiago Talhada
autogenerated on Mon Mar 2 2015 01:33:02