fixed bug in DisparityBilateralFilter
authorVladislav Vinogradov <no@email>
Thu, 19 Aug 2010 15:29:56 +0000 (15:29 +0000)
committerVladislav Vinogradov <no@email>
Thu, 19 Aug 2010 15:29:56 +0000 (15:29 +0000)
modules/gpu/src/bilateral_filter.cpp

index ffe6a1e..cc745db 100644 (file)
@@ -100,12 +100,17 @@ namespace
         short edge_disc = max<short>(short(1), short(rthis.ndisp * rthis.edge_threshold + 0.5));\r
         short max_disc = short(rthis.ndisp * rthis.max_disc_threshold + 0.5);\r
 \r
-        bf::load_constants(&table_color[0], table_space, rthis.ndisp, rthis.radius, edge_disc, max_disc);\r
+        float* table_color_dev;\r
+        cudaSafeCall( cudaMalloc((void**)&table_color_dev, table_color.size() * sizeof(float)) );\r
+        cudaSafeCall( cudaMemcpy(table_color_dev, &table_color[0], table_color.size() * sizeof(float), cudaMemcpyHostToDevice) );\r
+        bf::load_constants(table_color_dev, table_space, rthis.ndisp, rthis.radius, edge_disc, max_disc);\r
 \r
         if (&dst != &disp)\r
             disp.copyTo(dst);\r
 \r
         bf::bilateral_filter_gpu((DevMem2D_<T>)dst, img, img.channels(), rthis.iters, stream);\r
+\r
+        cudaSafeCall( cudaFree(table_color_dev) );\r
     }\r
 \r
     typedef void (*bilateral_filter_operator_t)(DisparityBilateralFilter& rthis, vector<float>& table_color, GpuMat& table_space, \r