32 #include <emmintrin.h> 38 typedef __int8 int8_t;
39 typedef __int16 int16_t;
40 typedef __int32 int32_t;
41 typedef __int64 int64_t;
42 typedef unsigned __int8 uint8_t;
43 typedef unsigned __int16 uint16_t;
44 typedef unsigned __int32 uint32_t;
45 typedef unsigned __int64 uint64_t;
95 support_threshold = 0.85;
97 candidate_stepsize = 5;
98 incon_window_size = 5;
100 incon_min_support = 5;
109 speckle_sim_threshold = 1;
113 filter_adaptive_mean = 1;
114 postprocess_only_left = 1;
122 support_threshold = 0.95;
123 support_texture = 10;
124 candidate_stepsize = 5;
125 incon_window_size = 5;
127 incon_min_support = 5;
136 speckle_sim_threshold = 1;
138 ipol_gap_width = 5000;
140 filter_adaptive_mean = 0;
141 postprocess_only_left = 0;
162 void process (uint8_t* I1,uint8_t* I2,
float* D1,
float* D2,
const int32_t* dims);
170 support_pt(int32_t u,int32_t v,int32_t d):u(u),v(v),d(d){}
177 triangle(int32_t c1,int32_t c2,int32_t c3):c1(c1),c2(c2),c3(c3){}
180 inline uint32_t getAddressOffsetImage (
const int32_t& u,
const int32_t& v,
const int32_t& width) {
184 inline uint32_t getAddressOffsetGrid (
const int32_t& x,
const int32_t& y,
const int32_t& d,
const int32_t& width,
const int32_t& disp_num) {
185 return (y*width+x)*disp_num+d;
189 void removeInconsistentSupportPoints (int16_t* D_can,int32_t D_can_width,int32_t D_can_height);
190 void removeRedundantSupportPoints (int16_t* D_can,int32_t D_can_width,int32_t D_can_height,
191 int32_t redun_max_dist, int32_t redun_threshold,
bool vertical);
192 void addCornerSupportPoints (std::vector<support_pt> &p_support);
193 inline int16_t computeMatchingDisparity (
const int32_t &u,
const int32_t &v,uint8_t* I1_desc,uint8_t* I2_desc,
const bool &right_image);
194 std::vector<support_pt> computeSupportMatches (uint8_t* I1_desc,uint8_t* I2_desc);
197 std::vector<triangle> computeDelaunayTriangulation (std::vector<support_pt> p_support,int32_t right_image);
198 void computeDisparityPlanes (std::vector<support_pt> p_support,std::vector<triangle> &tri,int32_t right_image);
199 void createGrid (std::vector<support_pt> p_support,int32_t* disparity_grid,int32_t* grid_dims,
bool right_image);
202 inline void updatePosteriorMinimum (__m128i* I2_block_addr,
const int32_t &d,
const int32_t &w,
203 const __m128i &xmm1,__m128i &xmm2,int32_t &val,int32_t &min_val,int32_t &min_d);
204 inline void updatePosteriorMinimum (__m128i* I2_block_addr,
const int32_t &d,
205 const __m128i &xmm1,__m128i &xmm2,int32_t &val,int32_t &min_val,int32_t &min_d);
206 inline void findMatch (int32_t &u,int32_t &v,
float &plane_a,
float &plane_b,
float &plane_c,
207 int32_t* disparity_grid,int32_t *grid_dims,uint8_t* I1_desc,uint8_t* I2_desc,
208 int32_t *P,int32_t &plane_radius,
bool &valid,
bool &right_image,
float* D);
209 void computeDisparity (std::vector<support_pt> p_support,std::vector<triangle> tri,int32_t* disparity_grid,int32_t* grid_dims,
210 uint8_t* I1_desc,uint8_t* I2_desc,
bool right_image,
float* D);
213 void leftRightConsistencyCheck (
float* D1,
float* D2);
216 void removeSmallSegments (
float* D);
217 void gapInterpolation (
float* D);
220 void adaptiveMean (
float* D);
221 void median (
float* D);
228 int32_t width,height,bpl;
float ** triangle
Definition: triangle.cpp:404
int32_t incon_min_support
Definition: elas.h:67
parameters(setting s=ROBOTICS)
Definition: elas.h:87
bool postprocess_only_left
Definition: elas.h:81
float sigma
Definition: elas.h:72
bool add_corners
Definition: elas.h:68
Elas(parameters param)
Definition: elas.h:148
float support_threshold
Definition: elas.h:62
int32_t disp_min
Definition: elas.h:60
int32_t incon_threshold
Definition: elas.h:66
int32_t speckle_size
Definition: elas.h:77
int32_t support_texture
Definition: elas.h:63
int32_t disp_max
Definition: elas.h:61
float speckle_sim_threshold
Definition: elas.h:76
int32_t incon_window_size
Definition: elas.h:65
bool filter_adaptive_mean
Definition: elas.h:80
int32_t lr_threshold
Definition: elas.h:75
int32_t ipol_gap_width
Definition: elas.h:78
float beta
Definition: elas.h:70
int32_t grid_size
Definition: elas.h:69
float gamma
Definition: elas.h:71
setting
Definition: elas.h:56
float sradius
Definition: elas.h:73
bool subsampling
Definition: elas.h:82
bool filter_median
Definition: elas.h:79
int32_t candidate_stepsize
Definition: elas.h:64
void process(uint8_t *I1, uint8_t *I2, float *D1, float *D2, const int32_t *dims)
Definition: elas.cpp:31
~Elas()
Definition: elas.h:151
int32_t match_texture
Definition: elas.h:74