Commit d5af311a authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

fix bilateral filter behavior when color_sigma == 0 and/or spatial_sigma == 0 (ticket #469)

parent 4875ffc9
...@@ -1288,8 +1288,6 @@ bilateralFilter_8u( const Mat& src, Mat& dst, int d, ...@@ -1288,8 +1288,6 @@ bilateralFilter_8u( const Mat& src, Mat& dst, int d,
double sigma_color, double sigma_space, double sigma_color, double sigma_space,
int borderType ) int borderType )
{ {
double gauss_color_coeff = -0.5/(sigma_color*sigma_color);
double gauss_space_coeff = -0.5/(sigma_space*sigma_space);
int cn = src.channels(); int cn = src.channels();
int i, j, k, maxk, radius; int i, j, k, maxk, radius;
Size size = src.size(); Size size = src.size();
...@@ -1302,6 +1300,9 @@ bilateralFilter_8u( const Mat& src, Mat& dst, int d, ...@@ -1302,6 +1300,9 @@ bilateralFilter_8u( const Mat& src, Mat& dst, int d,
sigma_color = 1; sigma_color = 1;
if( sigma_space <= 0 ) if( sigma_space <= 0 )
sigma_space = 1; sigma_space = 1;
double gauss_color_coeff = -0.5/(sigma_color*sigma_color);
double gauss_space_coeff = -0.5/(sigma_space*sigma_space);
if( d <= 0 ) if( d <= 0 )
radius = cvRound(sigma_space*1.5); radius = cvRound(sigma_space*1.5);
...@@ -1389,8 +1390,6 @@ bilateralFilter_32f( const Mat& src, Mat& dst, int d, ...@@ -1389,8 +1390,6 @@ bilateralFilter_32f( const Mat& src, Mat& dst, int d,
double sigma_color, double sigma_space, double sigma_color, double sigma_space,
int borderType ) int borderType )
{ {
double gauss_color_coeff = -0.5/(sigma_color*sigma_color);
double gauss_space_coeff = -0.5/(sigma_space*sigma_space);
int cn = src.channels(); int cn = src.channels();
int i, j, k, maxk, radius; int i, j, k, maxk, radius;
double minValSrc=-1, maxValSrc=1; double minValSrc=-1, maxValSrc=1;
...@@ -1408,6 +1407,9 @@ bilateralFilter_32f( const Mat& src, Mat& dst, int d, ...@@ -1408,6 +1407,9 @@ bilateralFilter_32f( const Mat& src, Mat& dst, int d,
sigma_color = 1; sigma_color = 1;
if( sigma_space <= 0 ) if( sigma_space <= 0 )
sigma_space = 1; sigma_space = 1;
double gauss_color_coeff = -0.5/(sigma_color*sigma_color);
double gauss_space_coeff = -0.5/(sigma_space*sigma_space);
if( d <= 0 ) if( d <= 0 )
radius = cvRound(sigma_space*1.5); radius = cvRound(sigma_space*1.5);
......
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