美文网首页
OpenCV图像处理(六)图像滤波(1)

OpenCV图像处理(六)图像滤波(1)

作者: 行走行囊 | 来源:发表于2018-04-07 21:03 被阅读0次

1、滤波的作用

图像滤波,是指尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,其处理的好坏直接影响到后续图像处理的有效性和可靠性。滤波操作也叫平滑处理,主要目的有两个:模糊图像和消除噪音。

2、滤波的方式

均值滤波:最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应像素的平均值(所有像素的加权系数相等)。
高斯滤波:高斯滤波可以消除高斯噪声,其操作原理是用一个模板,该模板的加权系数通过高斯函数确定,再用这个模板对图像的每个像素进行卷积操作,得到滤波后的图像。
中值滤波:其基本思想是用像素点领域灰度值的中值来代替该像素点的灰度值,可有效的去除椒盐噪声。
双边滤波:双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值的相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。注意,双边滤波对处理彩色图像的椒盐噪声效果不明显。

3、滤波函数

// 均值滤波
void blur( InputArray src, OutputArray dst,
                        Size ksize, Point anchor = Point(-1,-1),
                        int borderType = BORDER_DEFAULT );
// 高斯滤波
void GaussianBlur( InputArray src, OutputArray dst, Size ksize,
                                double sigmaX, double sigmaY = 0,
                                int borderType = BORDER_DEFAULT );
// 中值滤波
void medianBlur( InputArray src, OutputArray dst, int ksize );
// 双边滤波
void bilateralFilter( InputArray src, OutputArray dst, int d,
                                   double sigmaColor, double sigmaSpace,
                                   int borderType = BORDER_DEFAULT );

4、测试代码

// 添加椒盐噪声
void addSalt(Mat& image, int n)//本函数加入彩色盐噪声  
{
    srand((unsigned)time(NULL));
    for (int k = 0; k<n; k++)//将图像中n个像素随机置零  
    {
        int i = rand() % image.cols;
        int j = rand() % image.rows;
        //将图像颜色随机改变  
        image.at<Vec3b>(j, i)[0] = 250;
        image.at<Vec3b>(j, i)[1] = 150;
        image.at<Vec3b>(j, i)[2] = 250;
    }
}
src.png

均值滤波

Mat src = imread("D:/hf.jpg");
Mat blur_img;
blur(src,blur_img,Size(5,5));
imshow("blur_img", blur_img);
blur_img.png

高斯滤波

Mat src = imread("D:/hf.jpg");
Mat gaussianBlur_img;
GaussianBlur(src, gaussianBlur_img,Size(5,5),0,0);
imshow("gaussianBlur_img", gaussianBlur_img);
gaussianBlur_img.png

中值滤波

Mat src = imread("D:/hf.jpg");
Mat mid_img;
addSalt(src, 1000);
medianBlur(src,mid_img,5);
imshow("mid_img", mid_img);
椒盐处理.png mid_img.png

双边滤波

Mat src = imread("D:/hf.jpg");
Mat bilateralFilter_img;
bilateralFilter(src, bilateralFilter_img, 25, 25 * 2, 25 / 2);
imshow("bilateralFilter_img",bilateralFilter_img);

相关文章

  • OpenCV图像处理(六)图像滤波(1)

    1、滤波的作用 图像滤波,是指尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,其处理的好坏直接影响到后续图像...

  • OpenCV 之ios 图像平滑处理

    OpenCV 之ios 图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函...

  • 2019个人学习计划

    2019年努力... 1.OpenCV图像处理人脸识别滤波处理,基底层C++代码实现;微像素OpenCV图片处理-...

  • iOS OpenCV 图像灰度处理

    iOS OpenCV 图像灰度处理 iOS OpenCV 图像灰度处理

  • OpenCV 线性滤波

    线性滤波 图像滤波与滤波器 图像滤波,指的是在尽量保留图像特征的条件下对目标图像得噪声进行抑制,是图像处理当中不可...

  • 图像平滑处理

    图像平滑处理(Smoothing Images)图像模糊处理(Blurring Images)图像滤波(Image...

  • OpenCV图像处理(七)图像滤波(2)

    1、形态学滤波 简单来说,形态学操作就是基于形状的一系列图像处理操作,最基本的形态学操作:膨胀、腐蚀。在图像处理中...

  • 卷积,滤波,平滑

    图像处理基本概念——卷积,滤波,平滑 图像卷积:一种实现手段,可以说是数学在图像处理的一种延伸。图像滤波:一种图像...

  • 博客收集

    1. 图像处理: 图像处理基本算法-形态学OpenCV-Pythonimage fusion 2. 图像数据: I...

  • 51cto 贾志刚 OpenCV图像处理从入门到精通系列专题8套

    【课程简介】 OpenCV图像处理从入门到精通系列专题 包含OpenCV图像处理, 图像特征提取与对象识别, 5个...

网友评论

      本文标题:OpenCV图像处理(六)图像滤波(1)

      本文链接:https://www.haomeiwen.com/subject/qaincftx.html