Test on KITTI dataset

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Test on KITTI dataset

zhuqingzhang
Hello,Matlabbe:
       I tested the rtabmap on kitti datasets with different sequences. I find that the results are not good. To be specific, the dense cloudpoints map has many empty areas, especially road surface. The following picture is the result of  sequence 2011_09_26_drive_0001_sync. Note that there is almost no road surface but just some lane lines. I wonder why the results for kitti are not good? Maybe the influence of illumination? or other reasons? Is there any methods to improve it?

Thanks a lot!

Reply | Threaded
Open this post in threaded view
|

Re: Test on KITTI dataset

matlabbe
Administrator
Hi,

The disparity image is generated by cv::StereoBM by default. Normally when there is not a lot of texture, the algorithm won't compute any disparity. cv::StereoSGBM can be also used, but at a higher cost. Look at the corresponding parameters:
$ rtabmap --params | grep Stereo

Param: Stereo/DenseStrategy = "0"                          [0=cv::StereoBM, 1=cv::StereoSGBM]
Param: Stereo/Eps = "0.01"                                 [[Stereo/OpticalFlow=true] Epsilon stop criterion.]
Param: Stereo/Iterations = "30"                            [Maximum iterations.]
Param: Stereo/MaxDisparity = "128.0"                       [Maximum disparity.]
Param: Stereo/MaxLevel = "5"                               [Maximum pyramid level.]
Param: Stereo/MinDisparity = "0.5"                         [Minimum disparity.]
Param: Stereo/OpticalFlow = "true"                         [Use optical flow to find stereo correspondences, otherwise a simple block matching approach is used.]
Param: Stereo/SSD = "true"                                 [[Stereo/OpticalFlow=false] Use Sum of Squared Differences (SSD) window, otherwise Sum of Absolute Differences (SAD) window is used.]
Param: Stereo/WinHeight = "3"                              [Window height.]
Param: Stereo/WinWidth = "15"                              [Window width.]
Param: StereoBM/BlockSize = "15"                           [See cv::StereoBM]
Param: StereoBM/Disp12MaxDiff = "-1"                       [See cv::StereoBM]
Param: StereoBM/MinDisparity = "0"                         [See cv::StereoBM]
Param: StereoBM/NumDisparities = "128"                     [See cv::StereoBM]
Param: StereoBM/PreFilterCap = "31"                        [See cv::StereoBM]
Param: StereoBM/PreFilterSize = "9"                        [See cv::StereoBM]
Param: StereoBM/SpeckleRange = "4"                         [See cv::StereoBM]
Param: StereoBM/SpeckleWindowSize = "100"                  [See cv::StereoBM]
Param: StereoBM/TextureThreshold = "10"                    [See cv::StereoBM]
Param: StereoBM/UniquenessRatio = "15"                     [See cv::StereoBM]
Param: StereoSGBM/BlockSize = "15"                         [See cv::StereoSGBM]
Param: StereoSGBM/Disp12MaxDiff = "1"                      [See cv::StereoSGBM]
Param: StereoSGBM/MinDisparity = "0"                       [See cv::StereoSGBM]
Param: StereoSGBM/Mode = "0"                               [See cv::StereoSGBM]
Param: StereoSGBM/NumDisparities = "128"                   [See cv::StereoSGBM]
Param: StereoSGBM/P1 = "2"                                 [See cv::StereoSGBM]
Param: StereoSGBM/P2 = "5"                                 [See cv::StereoSGBM]
Param: StereoSGBM/PreFilterCap = "31"                      [See cv::StereoSGBM]
Param: StereoSGBM/SpeckleRange = "4"                       [See cv::StereoSGBM]
Param: StereoSGBM/SpeckleWindowSize = "100"                [See cv::StereoSGBM]
Param: StereoSGBM/UniquenessRatio = "20"                   [See cv::StereoSGBM]
 
Another way is to decimate the image to get more dense point cloud but at the cost of losing accuracy, with Mem/ImagePostDecimation parameter (set to 2 for example).

Integrating other dense disparity computation algorithms is also possible, see StereoDense class (currently there are only 2 types).

cheers,
Mathieu