图像线性滤波实现,主要包括以下三种
方框滤波
平均滤波
高斯滤波
方框滤波就是没有归一化的均值滤波
void boxFilter(){ // 载入原图 Mat image=imread(“../img/1.jpg”); //创建窗口 namedWindow( “方框滤波【原图】” ); namedWindow( “方框滤波【效果图】”); //显示原图 imshow( “方框滤波【原图】”, image ); //进行方框滤波操作 Mat out; boxFilter( image, out, -1,Size(5, 5)); //显示效果图 imshow( “方框滤波【效果图】” ,out ); waitKey( 0 ); }
均值滤波实现
void averageFilter(){ //【1】载入原始图 Mat srcImage=imread(“../img/1.jpg”); //【2】显示原始图 imshow( “均值滤波【原图】”, srcImage ); //【3】进行均值滤波操作 Mat dstImage; blur( srcImage, dstImage, Size(7, 7)); //【4】显示效果图 imshow( “均值滤波【效果图】” ,dstImage ); waitKey( 0 ); }
高斯滤波实现
void gaussinFilter(){ // 载入原图 Mat image=imread(“../img/1.jpg”); //创建窗口 namedWindow( “高斯滤波【原图】” ); namedWindow( “高斯滤波【效果图】”); //显示原图 imshow( “高斯滤波【原图】”, image ); //进行高斯滤波操作 Mat out; GaussianBlur( image, out, Size( 5, 5 ), 0, 0 ); //显示效果图 imshow( “高斯滤波【效果图】” ,out ); waitKey( 0 ); }
非线性滤波实现
主要包括均值滤波与双边滤波。
中值滤波(Median filter)是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节,.
双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。
双边滤波器的好处是可以做边缘保存(edge preserving),一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显地模糊边缘,对于高频细节的保护效果并不明显。双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波。
中值滤波
void centerFilter(){ // 载入原图 Mat image=imread(“../img/1.jpg”); //创建窗口 namedWindow( “中值滤波【原图】” ); namedWindow( “中值滤波【效果图】”); //显示原图 imshow( “中值滤波【原图】”, image ); //进行中值滤波操作 Mat out; medianBlur ( image, out, 7); //显示效果图 imshow( “中值滤波【效果图】” ,out ); waitKey( 0 ); }
双边滤波