Depth Discontinuities in GPU::BM and GPU::CSBP
I am interested in using the stereo correspondence algorithms in the GPU module (2.4.7). However, the results I am able to achieve are not useable as there are no great errors at depth shadows in the output disparity maps. This means that matches are found where none should be (i.e. there is no confidence or best match threshold to reject these matches/decisions). edges/discontinuities. My question is this: is there a way to achieve quality segmentation (sharp edges) at severe depth discontinuities? Is discontinuities in either the gpu::BM or gpu::CSBP? I know from reading the paper on CSBP that this is a problem inherent to the method and is supposedly fixed by using a bilateral or median filter. Also, for the block matching implementation, why is low texture the only way to achieve this through some combination of fiterSpeckles(CPU) and DisparityBilateralFilter(GPU)?criteria for rejecting a potential match, should not a threshold of winning percentage also be in place, why is this not a part of the GPU implementation?
How have you gotten the best results from the real-time parallel stereo methods (not (not BP)? How did you eliminate poor matches? What postprocessing steps did you follow? Is the only way to achieve this through some combination of fiterSpeckles(CPU) and DisparityBilateralFilter(GPU) (which would be unfortunate as filterSpeckles would have to be performed prior to bilateral filtering and so the image would have to be moved back and forth from host to device)?
This is the disparity image I generate with CSBP (and some first attempts at filtering). Notice the "ghosting" of my fingers to the right of my actual fingers, fingers and the generally poor depth map to the right of the foreground objects, this is what I want removed: to clean up/remove:
For comparison, see the quality of my results with SGBM: