2 #ifndef _STEREO_MATCHER_NEW_H_
3 #define _STEREO_MATCHER_NEW_H_
5 #include <yarp/os/all.h>
7 #include <iCub/stereoVision/elasWrapper.h>
8 #include <iCub/stereoVision/stereoCamera.h>
11 #include "sgbm_cuda_header.h"
13 #include "opencv2/ximgproc/disparity_filter.hpp"
22 Rect computeROI2(Size2i src_sz, Ptr<StereoMatcher> matcher_instance);
27 enum SM_MATCHING_ALG {
58 int speckleWindowSize;
60 int numberOfDisparities;
71 SM_BLF_FILTER BLFfiltering;
72 SM_WLS_FILTER WLSfiltering;
73 SM_MATCHING_ALG stereo_matching;
95 class StereoMatcherNew {
110 cv::Mat disparity_blf;
111 cv::Mat disparity16_blf;
115 cv::Mat disparity_wls;
116 cv::Mat disparity16_wls;
121 SM_MATCHING_ALG stereo_matching;
122 SM_BLF_FILTER blf_filtering;
123 SM_WLS_FILTER wls_filtering;
128 Ptr<cv::ximgproc::DisparityWLSFilter> wls_filter;
132 cv::cuda::GpuMat imageGpu, gpuDisp, filtGpu;
133 Ptr<cuda::DisparityBilateralFilter> pCudaBilFilter;
134 SGM_PARAMS cuda_params, params_right;
138 Params stereo_parameters;
145 void matchSGBMCUDA();
149 elasWrapper* elaswrap;
158 void initELAS(yarp::os::ResourceFinder &rf);
164 void initCUDAbilateralFilter();
171 void setParameters(
int minDisparity,
int numberOfDisparities,
int SADWindowSize,
172 int disp12MaxDiff,
int preFilterCap,
int uniquenessRatio,
173 int speckleWindowSize,
int speckleRange,
double sigmaColorBLF,
174 double sigmaSpaceBLF,
double wls_lambda,
double wls_sigma,
175 SM_BLF_FILTER BLFfiltering, SM_WLS_FILTER WLSfiltering,
176 SM_MATCHING_ALG stereo_matching);
189 void setAlgorithm(
string name);
197 cv::Mat getDisparity(
string kind);
205 cv::Mat getDisparity16(
string kind);
211 void updateCUDAParams();
218 void filterBLF(
string kind);
225 void filterWLS(
string kind);
233 StereoMatcherNew(yarp::os::ResourceFinder &rf,
StereoCamera * stereo);
The base class defining stereo camera.