From e693f4b4085f7c259e288160b3f3b9f881b88ef9 Mon Sep 17 00:00:00 2001 From: Vladislav Vinogradov Date: Thu, 19 Aug 2010 15:29:56 +0000 Subject: [PATCH] fixed bug in DisparityBilateralFilter --- modules/gpu/src/bilateral_filter.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/gpu/src/bilateral_filter.cpp b/modules/gpu/src/bilateral_filter.cpp index ffe6a1e797..cc745db6c3 100644 --- a/modules/gpu/src/bilateral_filter.cpp +++ b/modules/gpu/src/bilateral_filter.cpp @@ -100,12 +100,17 @@ namespace short edge_disc = max(short(1), short(rthis.ndisp * rthis.edge_threshold + 0.5)); short max_disc = short(rthis.ndisp * rthis.max_disc_threshold + 0.5); - bf::load_constants(&table_color[0], table_space, rthis.ndisp, rthis.radius, edge_disc, max_disc); + float* table_color_dev; + cudaSafeCall( cudaMalloc((void**)&table_color_dev, table_color.size() * sizeof(float)) ); + cudaSafeCall( cudaMemcpy(table_color_dev, &table_color[0], table_color.size() * sizeof(float), cudaMemcpyHostToDevice) ); + bf::load_constants(table_color_dev, table_space, rthis.ndisp, rthis.radius, edge_disc, max_disc); if (&dst != &disp) disp.copyTo(dst); bf::bilateral_filter_gpu((DevMem2D_)dst, img, img.channels(), rthis.iters, stream); + + cudaSafeCall( cudaFree(table_color_dev) ); } typedef void (*bilateral_filter_operator_t)(DisparityBilateralFilter& rthis, vector& table_color, GpuMat& table_space,