常言道“温故而知新”,写此文章就是对自己目前学习内容的小小的总结与记录。
本文力求用最简洁的语言,详细的代码将此部分内容讲解清楚,但由于博主同样是刚刚接触OpenCV,或许表达上有些瑕疵,还望读者能够指教探讨,大家共同进步。
博主机器配置为:VS2013+opencv2.4.13+Win-64bit。
若本文能给读者带来一点点启示与帮助,我就很开心了。
=========================分割线========================
值域滤波:
两者相乘后,就会产生依赖于数据的双边滤波权重函数:
=======================分割线====================
OpenCV将双边滤波封装在bilateralFilter()函数中,作用是输入一副图像对其进行双边滤波。下面来看下bilateralFilter()函数的定义:
void bilateralFilter( InputArray src, OutputArray dst, int d,
double sigmaColor, double sigmaSpace,
int borderType=BORDER_DEFAULT );
参数说明:
/*
功能:非线性滤波之双边滤波
*/
#include
#include
#include
#include
using namespace std;
using namespace cv;
int main()
{
//------------【1】读取源图像并检查图像是否读取成功------------
Mat srcImage = imread("D:\\OutPutResult\\ImageTest\\boat1.jpg");
if (!srcImage.data)
{
cout << "读取图片错误,请重新输入正确路径!\n";
system("pause");
return -1;
}
imshow("【源图像】", srcImage);
//------------【2】对图像进行双边滤波处理------------
Mat dstImage;
bilateralFilter(srcImage, dstImage, 9, 9 * 9, 9 / 2);//双边滤波
imshow("【双边滤波】", dstImage);
waitKey(0);
return 0;
}
======================分割线==================