Commit a26e496d authored by Vladislav Vinogradov's avatar Vladislav Vinogradov Committed by Alexander Smorkalov

minor fix for StereoCSBP data cost compute kernel and test

(cherry picked from commit 84f33d05)
parent d579d3e5
...@@ -103,16 +103,22 @@ namespace cv { namespace gpu { namespace device ...@@ -103,16 +103,22 @@ namespace cv { namespace gpu { namespace device
{ {
static __device__ __forceinline__ float compute(const uchar* left, const uchar* right) static __device__ __forceinline__ float compute(const uchar* left, const uchar* right)
{ {
return fmin(cdata_weight * ::abs((int)*left - *right), cdata_weight * cmax_data_term); int l = *(left);
int r = *(right);
return fmin(cdata_weight * ::abs(l - r), cdata_weight * cmax_data_term);
} }
}; };
template <> struct DataCostPerPixel<3> template <> struct DataCostPerPixel<3>
{ {
static __device__ __forceinline__ float compute(const uchar* left, const uchar* right) static __device__ __forceinline__ float compute(const uchar* left, const uchar* right)
{ {
float tb = 0.114f * ::abs((int)left[0] - right[0]); uchar3 l = *((const uchar3*)left);
float tg = 0.587f * ::abs((int)left[1] - right[1]); uchar3 r = *((const uchar3*)right);
float tr = 0.299f * ::abs((int)left[2] - right[2]);
float tb = 0.114f * ::abs((int)l.x - r.x);
float tg = 0.587f * ::abs((int)l.y - r.y);
float tr = 0.299f * ::abs((int)l.z - r.z);
return fmin(cdata_weight * (tr + tg + tb), cdata_weight * cmax_data_term); return fmin(cdata_weight * (tr + tg + tb), cdata_weight * cmax_data_term);
} }
......
...@@ -158,7 +158,7 @@ GPU_TEST_P(StereoConstantSpaceBP, Regression) ...@@ -158,7 +158,7 @@ GPU_TEST_P(StereoConstantSpaceBP, Regression)
cv::Mat h_disp(disp); cv::Mat h_disp(disp);
h_disp.convertTo(h_disp, disp_gold.depth()); h_disp.convertTo(h_disp, disp_gold.depth());
EXPECT_MAT_NEAR(disp_gold, h_disp, 1.0); EXPECT_MAT_SIMILAR(disp_gold, h_disp, 1e-4);
} }
INSTANTIATE_TEST_CASE_P(GPU_Calib3D, StereoConstantSpaceBP, ALL_DEVICES); INSTANTIATE_TEST_CASE_P(GPU_Calib3D, StereoConstantSpaceBP, ALL_DEVICES);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment