gpu::
StereoBM_GPU
¶Class computing stereo correspondence (disparity map) using the block matching algorithm.
class StereoBM_GPU
{
public:
enum { BASIC_PRESET = 0, PREFILTER_XSOBEL = 1 };
enum { DEFAULT_NDISP = 64, DEFAULT_WINSZ = 19 };
StereoBM_GPU();
StereoBM_GPU(int preset, int ndisparities = DEFAULT_NDISP,
int winSize = DEFAULT_WINSZ);
void operator() (const GpuMat& left, const GpuMat& right,
GpuMat& disparity, Stream& stream = Stream::Null());
static bool checkIfGpuCallReasonable();
int preset;
int ndisp;
int winSize;
float avergeTexThreshold;
...
};
The class also performs pre- and post-filtering steps: Sobel pre-filtering (if PREFILTER_XSOBEL
flag is set) and low textureness filtering (if averageTexThreshols > 0
). If avergeTexThreshold = 0
, low textureness filtering is disabled. Otherwise, the disparity is set to 0 in each point (x, y)
, where for the left image
This means that the input left image is low textured.
Note
Enables gpu::StereoBM_GPU
constructors.
gpu::StereoBM_GPU::
StereoBM_GPU
()¶
gpu::StereoBM_GPU::
StereoBM_GPU
(int preset, int ndisparities=DEFAULT_NDISP, int winSize=DEFAULT_WINSZ)¶Parameters: |
|
---|
Enables the stereo correspondence operator that finds the disparity for the specified rectified stereo pair.
void gpu::StereoBM_GPU::
operator()
(const GpuMat& left, const GpuMat& right, GpuMat& disparity, Stream& stream=Stream::Null())¶Parameters: |
|
---|
Uses a heuristic method to estimate whether the current GPU is faster than the CPU in this algorithm. It queries the currently active device.
bool gpu::StereoBM_GPU::
checkIfGpuCallReasonable
()¶gpu::
StereoBeliefPropagation
¶Class computing stereo correspondence using the belief propagation algorithm.
class StereoBeliefPropagation
{
public:
enum { DEFAULT_NDISP = 64 };
enum { DEFAULT_ITERS = 5 };
enum { DEFAULT_LEVELS = 5 };
static void estimateRecommendedParams(int width, int height,
int& ndisp, int& iters, int& levels);
explicit StereoBeliefPropagation(int ndisp = DEFAULT_NDISP,
int iters = DEFAULT_ITERS,
int levels = DEFAULT_LEVELS,
int msg_type = CV_32F);
StereoBeliefPropagation(int ndisp, int iters, int levels,
float max_data_term, float data_weight,
float max_disc_term, float disc_single_jump,
int msg_type = CV_32F);
void operator()(const GpuMat& left, const GpuMat& right,
GpuMat& disparity, Stream& stream = Stream::Null());
void operator()(const GpuMat& data, GpuMat& disparity, Stream& stream = Stream::Null());
int ndisp;
int iters;
int levels;
float max_data_term;
float data_weight;
float max_disc_term;
float disc_single_jump;
int msg_type;
...
};
The class implements algorithm described in [Felzenszwalb2006] . It can compute own data cost (using a truncated linear model) or use a user-provided data cost.
Note
StereoBeliefPropagation
requires a lot of memory for message storage:
and for data cost storage:
width_step
is the number of bytes in a line including padding.
Enables the gpu::StereoBeliefPropagation
constructors.
gpu::StereoBeliefPropagation::
StereoBeliefPropagation
(int ndisp=DEFAULT_NDISP, int iters=DEFAULT_ITERS, int levels=DEFAULT_LEVELS, int msg_type=CV_32F)¶
gpu::StereoBeliefPropagation::
StereoBeliefPropagation
(int ndisp, int iters, int levels, float max_data_term, float data_weight, float max_disc_term, float disc_single_jump, int msg_type=CV_32F)¶Parameters: |
|
---|
StereoBeliefPropagation
uses a truncated linear model for the data cost and discontinuity terms:
For more details, see [Felzenszwalb2006].
By default, gpu::StereoBeliefPropagation
uses floating-point arithmetics and the CV_32FC1
type for messages. But it can also use fixed-point arithmetics and the CV_16SC1
message type for better performance. To avoid an overflow in this case, the parameters must satisfy the following requirement:
Uses a heuristic method to compute the recommended parameters ( ndisp
, iters
and levels
) for the specified image size ( width
and height
).
void gpu::StereoBeliefPropagation::
estimateRecommendedParams
(int width, int height, int& ndisp, int& iters, int& levels)¶Enables the stereo correspondence operator that finds the disparity for the specified rectified stereo pair or data cost.
void gpu::StereoBeliefPropagation::
operator()
(const GpuMat& left, const GpuMat& right, GpuMat& disparity, Stream& stream=Stream::Null())¶
void gpu::StereoBeliefPropagation::
operator()
(const GpuMat& data, GpuMat& disparity, Stream& stream=Stream::Null())¶Parameters: |
|
---|
gpu::
StereoConstantSpaceBP
¶Class computing stereo correspondence using the constant space belief propagation algorithm.
class StereoConstantSpaceBP
{
public:
enum { DEFAULT_NDISP = 128 };
enum { DEFAULT_ITERS = 8 };
enum { DEFAULT_LEVELS = 4 };
enum { DEFAULT_NR_PLANE = 4 };
static void estimateRecommendedParams(int width, int height,
int& ndisp, int& iters, int& levels, int& nr_plane);
explicit StereoConstantSpaceBP(int ndisp = DEFAULT_NDISP,
int iters = DEFAULT_ITERS,
int levels = DEFAULT_LEVELS,
int nr_plane = DEFAULT_NR_PLANE,
int msg_type = CV_32F);
StereoConstantSpaceBP(int ndisp, int iters, int levels, int nr_plane,
float max_data_term, float data_weight,
float max_disc_term, float disc_single_jump,
int min_disp_th = 0,
int msg_type = CV_32F);
void operator()(const GpuMat& left, const GpuMat& right,
GpuMat& disparity, Stream& stream = Stream::Null());
int ndisp;
int iters;
int levels;
int nr_plane;
float max_data_term;
float data_weight;
float max_disc_term;
float disc_single_jump;
int min_disp_th;
int msg_type;
bool use_local_init_data_cost;
...
};
The class implements algorithm described in [Yang2010]. StereoConstantSpaceBP
supports both local minimum and global minimum data cost initialization algorithms. For more details, see the paper mentioned above. By default, a local algorithm is used. To enable a global algorithm, set use_local_init_data_cost
to false
.
Enables the gpu::StereoConstantSpaceBP
constructors.
gpu::StereoConstantSpaceBP::
StereoConstantSpaceBP
(int ndisp=DEFAULT_NDISP, int iters=DEFAULT_ITERS, int levels=DEFAULT_LEVELS, int nr_plane=DEFAULT_NR_PLANE, int msg_type=CV_32F)¶
gpu::StereoConstantSpaceBP::
StereoConstantSpaceBP
(int ndisp, int iters, int levels, int nr_plane, float max_data_term, float data_weight, float max_disc_term, float disc_single_jump, int min_disp_th=0, int msg_type=CV_32F)¶Parameters: |
|
---|
StereoConstantSpaceBP
uses a truncated linear model for the data cost and discontinuity terms:
For more details, see [Yang2010].
By default, StereoConstantSpaceBP
uses floating-point arithmetics and the CV_32FC1
type for messages. But it can also use fixed-point arithmetics and the CV_16SC1
message type for better performance. To avoid an overflow in this case, the parameters must satisfy the following requirement:
Uses a heuristic method to compute parameters (ndisp, iters, levelsand nrplane) for the specified image size (widthand height).
void gpu::StereoConstantSpaceBP::
estimateRecommendedParams
(int width, int height, int& ndisp, int& iters, int& levels, int& nr_plane)¶Enables the stereo correspondence operator that finds the disparity for the specified rectified stereo pair.
void gpu::StereoConstantSpaceBP::
operator()
(const GpuMat& left, const GpuMat& right, GpuMat& disparity, Stream& stream=Stream::Null())¶Parameters: |
|
---|
gpu::
DisparityBilateralFilter
¶Class refining a disparity map using joint bilateral filtering.
class CV_EXPORTS DisparityBilateralFilter
{
public:
enum { DEFAULT_NDISP = 64 };
enum { DEFAULT_RADIUS = 3 };
enum { DEFAULT_ITERS = 1 };
explicit DisparityBilateralFilter(int ndisp = DEFAULT_NDISP,
int radius = DEFAULT_RADIUS, int iters = DEFAULT_ITERS);
DisparityBilateralFilter(int ndisp, int radius, int iters,
float edge_threshold, float max_disc_threshold,
float sigma_range);
void operator()(const GpuMat& disparity, const GpuMat& image,
GpuMat& dst, Stream& stream = Stream::Null());
...
};
The class implements [Yang2010] algorithm.
Enables the gpu::DisparityBilateralFilter
constructors.
gpu::DisparityBilateralFilter::
DisparityBilateralFilter
(int ndisp=DEFAULT_NDISP, int radius=DEFAULT_RADIUS, int iters=DEFAULT_ITERS)¶
gpu::DisparityBilateralFilter::
DisparityBilateralFilter
(int ndisp, int radius, int iters, float edge_threshold, float max_disc_threshold, float sigma_range)¶Parameters: |
|
---|
Refines a disparity map using joint bilateral filtering.
void gpu::DisparityBilateralFilter::
operator()
(const GpuMat& disparity, const GpuMat& image, GpuMat& dst, Stream& stream=Stream::Null())¶Parameters: |
|
---|
Colors a disparity image.
void gpu::
drawColorDisp
(const GpuMat& src_disp, GpuMat& dst_disp, int ndisp, Stream& stream=Stream::Null())¶Parameters: |
|
---|
This function draws a colored disparity map by converting disparity values from [0..ndisp)
interval first to HSV
color space (where different disparity values correspond to different hues) and then converting the pixels to RGB
for visualization.
Reprojects a disparity image to 3D space.
void gpu::
reprojectImageTo3D
(const GpuMat& disp, GpuMat& xyzw, const Mat& Q, int dst_cn=4, Stream& stream=Stream::Null())¶Parameters: |
|
---|
See also
Finds the object pose from 3D-2D point correspondences.
void gpu::
solvePnPRansac
(const Mat& object, const Mat& image, const Mat& camera_mat, const Mat& dist_coef, Mat& rvec, Mat& tvec, bool use_extrinsic_guess=false, int num_iters=100, float max_dist=8.0, int min_inlier_count=100, vector<int>* inliers=NULL)¶Parameters: |
|
---|
See also
[Felzenszwalb2006] | (1, 2) Pedro F. Felzenszwalb algorithm [Pedro F. Felzenszwalb and Daniel P. Huttenlocher. Efficient belief propagation for early vision. International Journal of Computer Vision, 70(1), October 2006 |
[Yang2010] | (1, 2, 3)
|