Ask Your Question

Revision history [back]

Depth Shadow in GPU Block Matching and CSBP

I am interested in using the stereo correspondence algorithms in the gpu module. However, the results I am able to achieve are quite poor because there is no depth shadow (matches are supposedly found where none should be found). My question is this: do I have to accept this functionality or is there a way to achieve the results that I desire? Also, why are the results of the CUDA Block matching so different from the cpu implementation and why are we given control over so few parameters?

This is the disparity image I generate with CSBP and some filtering:

image description

For comparison, see the quality of my results with SGBM:

image description

click to hide/show revision 2
I included the library version for reference (2.4.7)

Depth Shadow in GPU Block Matching and CSBP

I am interested in using the stereo correspondence algorithms in the gpu module. module (2.4.7). However, the results I am able to achieve are quite poor because there is no depth shadow (matches are supposedly found where none should be found). My question is this: do I have to accept this functionality or is there a way to achieve the results that I desire? Also, why are the results of the CUDA Block matching so different from the cpu implementation and why are we given control over so few parameters?

This is the disparity image I generate with CSBP and some filtering:

image description

For comparison, see the quality of my results with SGBM:

image description

Depth Shadow Discontinuities in GPU Block Matching GPU::BM and CSBPGPU::CSBP

I am interested in using the stereo correspondence algorithms in the gpu GPU module (2.4.7). However, the results I am able to achieve are quite poor because not useable as there is are no depth shadow (matches shadows in the output disparity maps. This means that matches are supposedly found where none should be found). (i.e. there is no confidence or best match threshold to reject these matches/decisions). My question is this: do I have to accept this functionality or is there a way to achieve quality segmentation at severe depth discontinuities? Is the only way to achieve this through some combination of fiterSpeckles(CPU) and DisparityBilateralFilter(GPU)?

How have you gotten the best results that I desire? Also, why are the results of the CUDA Block matching so different from the cpu implementation and why are we given control over so few parameters?real-time parallel stereo methods (not BP)? How did you eliminate poor matches? What postprocessing steps did you follow?

This is the disparity image I generate with CSBP and (and some filtering: first attempts at filtering). Notice the "ghosting" of my fingers to the right of my actual fingers, this is the garbage I want removed:

image description

For comparison, see the quality of my results with SGBM:

image description

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 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). My question is this: is there a way to achieve quality segmentation at severe depth discontinuities? Is the only way to achieve this through some combination of fiterSpeckles(CPU) and DisparityBilateralFilter(GPU)?

How have you gotten the best results from the real-time parallel stereo methods (not BP)? How did you eliminate poor matches? What postprocessing steps did you follow?

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, this is the garbage what I want removed:

image description

For comparison, see the quality of my results with SGBM:

image description

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:

image description

For comparison, see the quality of my results with SGBM:

image description

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 great errors at depth edges/discontinuities. My question is this: is there a way to achieve quality segmentation (sharp edges) at severe depth 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 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? filter.

How have you gotten the best results from the real-time parallel stereo methods (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" absence of my fingers to a depth 'shadow' where the right of my actual fingers and the generally poor depth map to the right of the foreground objects, this is what I to clean up/remove: disparity really shouldn't be estimated:

image description

For comparison, see the quality of my results with SGBM:

image description

Depth Discontinuities in GPU::BM and GPU::CSBP

I am interested in using the stereo correspondence algorithms in the GPU module (2.4.7). (2.4.X). However, the results I am able to achieve are not useable as there are great errors at depth edges/discontinuities. My question is this: is there a way to achieve quality segmentation (sharp edges) at severe depth 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.

How have you gotten the best results from the real-time parallel stereo methods (not BP)? How did you eliminate poor matches? What postprocessing steps did you follow?

This is the disparity image I generate with CSBP (and some first attempts at filtering). Notice the absence of a depth 'shadow' where the disparity really shouldn't be estimated:

image description

For comparison, see the quality of my results with SGBM:

image description