AJax技术

【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波(2)

字号+ 作者:H5之家 来源:H5之家 2015-12-13 14:25 我要评论( )

上面我们刚说到,medianBlur_SortNet 是一个函数模板,其源码于smooth.cpp的1439行开始,由于其函数体很长,我们在此只贴出它的函数声明。 templateclass Op, class VecOpstatic void medianBlur_SortNet( constMat

上面我们刚说到,medianBlur_SortNet 是一个函数模板,其源码于smooth.cpp的1439行开始,由于其函数体很长,我们在此只贴出它的函数声明。

template<class Op, class VecOp> static void medianBlur_SortNet( constMat& _src, Mat& _dst, int m );


medianBlur函数使用中值滤波器来平滑(模糊)处理一张图片,从src输入,而结果从dst输出。

且对于多通道图片,每一个通道都单独进行处理,并且支持就地操作(In-placeoperation)。

 

C++: void medianBlur(InputArray src,OutputArray dst, int ksize)


参数详解:

 

 调用范例:

//载入原图 Mat image=imread("1.jpg"); //进行中值滤波操作 Mat out; medianBlur( image, out, 7);


用上面三句核心代码架起来的完整程序代码:

//-----------------------------------【程序说明】---------------------------------------------- // 说明:【中值滤波medianBlur函数的使用示例程序】 // 开发所用OpenCV版本:2.4.8 // 2014年4月3 日 Create by 浅墨 //------------------------------------------------------------------------------------------------ //-----------------------------------【头文件包含部分】--------------------------------------- // 描述:包含程序所依赖的头文件 //---------------------------------------------------------------------------------------------- #include "opencv2/core/core.hpp" #include"opencv2/highgui/highgui.hpp" #include"opencv2/imgproc/imgproc.hpp" //-----------------------------------【命名空间声明部分】--------------------------------------- // 描述:包含程序所使用的命名空间 //----------------------------------------------------------------------------------------------- using namespace cv; //-----------------------------------【main( )函数】-------------------------------------------- // 描述:控制台应用程序的入口函数,我们的程序从这里开始 //----------------------------------------------------------------------------------------------- int main( ) { //载入原图 Mat image=imread("1.jpg"); //创建窗口 namedWindow("中值滤波【原图】" ); namedWindow("中值滤波【效果图】"); //显示原图 imshow("中值滤波【原图】", image ); //进行中值滤波操作 Mat out; medianBlur( image, out, 7); //显示效果图 imshow("中值滤波【效果图】" ,out ); waitKey(0 ); }

 

运行效果图(孔径的线性尺寸为7):


 

 

3.2  双边滤波——bilateralFilter函数

 

用双边滤波器来处理一张图片,由src输入图片,结果于dst输出。

C++: void bilateralFilter(InputArray src, OutputArraydst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT)

 

调用代码示范如下:

 

//载入原图 Mat image=imread("1.jpg"); //进行双边滤波操作 Mat out; bilateralFilter( image, out, 25, 25*2, 25/2 );


 

用一个完整的示例程序把bilateralFilter函数熟悉一下:

 

//-----------------------------------【程序说明】---------------------------------------------- // 说明:【双边滤波bilateralFilter函数的使用示例程序】 // 开发所用OpenCV版本:2.4.8 // 2014年4月3 日 Create by 浅墨 //------------------------------------------------------------------------------------------------ //-----------------------------------【头文件包含部分】--------------------------------------- // 描述:包含程序所依赖的头文件 //---------------------------------------------------------------------------------------------- #include "opencv2/core/core.hpp" #include"opencv2/highgui/highgui.hpp" #include"opencv2/imgproc/imgproc.hpp" //-----------------------------------【命名空间声明部分】--------------------------------------- // 描述:包含程序所使用的命名空间 //----------------------------------------------------------------------------------------------- using namespace cv; //-----------------------------------【main( )函数】-------------------------------------------- // 描述:控制台应用程序的入口函数,我们的程序从这里开始 //----------------------------------------------------------------------------------------------- int main( ) { //载入原图 Mat image=imread("1.jpg"); //创建窗口 namedWindow("双边滤波【原图】" ); namedWindow("双边滤波【效果图】"); //显示原图 imshow("双边滤波【原图】", image ); //进行双边滤波操作 Mat out; bilateralFilter( image, out, 25, 25*2, 25/2 ); //显示效果图 imshow("双边滤波【效果图】" ,out ); waitKey(0 ); }运行效果图:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Ajax+PHP简单入门教程

    Ajax+PHP简单入门教程

    2015-11-19 11:41

  • GitHub和SourceTree入门教程

    GitHub和SourceTree入门教程

    2015-11-11 12:38

  • React JS快速入门教程

    React JS快速入门教程

    2015-11-10 17:09

  • 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX]

    2015-10-23 16:17

网友点评
a