笔记:OpenCV4.5.4 【c++】模糊图像

模糊原理

Smooth/Blur 是图像处理中最简单和常用的操作之一

使用该操作的原因之一就为了给图像预处理时候减低噪声

使用Smooth/Blur操作其背后是数学的卷积计算 

 

 通常这些卷积算子计算都是线性操作,所以又叫线性滤波

归一化盒子滤波(均值滤波) 

高斯滤波 

均值模糊     - blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1)); 

 

#include <iostream>
#include <cstring>
#include <opencv2/highgui/highgui.hpp>
#include<cmath>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main() 
{
    Mat src = imread("D:/opencv/2/a.jpg");
    if (src.empty()) 
    {
        cout << "could not load image..." << endl;
        return -1;
    }

    namedWindow("input", WINDOW_AUTOSIZE);
    //moveWindow("input", 100, 100);
    imshow("input", src);

    //均值模糊
    Mat jzdst;//通过周围的像素点的平均值来取代中心像素点的像素值。 只能相对减少噪声,且对噪声特别敏感
    blur(src, jzdst, Size(3, 3), Point(-1, -1));
    namedWindow("均值模糊", WINDOW_AUTOSIZE);
    //moveWindow("均值模糊", 100, 100);
    imshow("均值模糊", jzdst);  
    waitKey(0);
    return 0;
}

高斯模糊     - GaussianBlur(Mat src, Mat dst, Size(11, 11), sigmax, sigmay); 其中Size(x, y), x, y 必须是正数而且是奇数 

//高斯模糊
    Mat gsdst;//对周围像素点有特殊的算子,可以更加平滑的取代中心像素点的值。 保持图像平滑的同时,更能保存图像的灰度特征
    GaussianBlur(src, gsdst, Size(3, 3), 3, 3);
    // Mat kernel=(Mat_<char>(3,3)<<0,-1,0,-1,5,-1,0,-1,0);
    //   filter2D(gsdst,gsdst,gsdst.depth(),kernel);
    char gs[] = "高斯模糊";
    namedWindow(gs, WINDOW_AUTOSIZE);
    imshow(gs, gsdst);

 中值模糊medianBlur(Mat src, Mat dest, ksize)

统计排序滤波器 中值对椒盐噪声有很好的抑制作用

 

 

 Mat zzdst;//取周围像素点的中值,取带中心像素点。 对噪声不敏感,但会导致图像没有连续性。 对椒盐噪声有很好的处理效果
 medianBlur(src, zzdst, 11);                   //椒盐噪声就像 一幅图像上面撒了一些盐巴,一粒一粒不恰当的像素点
 namedWindow("中值滤波", WINDOW_AUTOSIZE);
 imshow("中值滤波", zzdst);

双边滤波bilateralFilter(src, dest, d=15, 150, 3);

 - 15 –计算的半径,半径之内的像数都会被纳入计算,如果提供-1 则根据sigma space参数取值     

- 150 – sigma color 决定多少差值之内的像素会被计算      

- 3 – sigma space 如果d的值大于0则声明无效,否则根据它来计算d值 中值模糊的ksize大小必须是大于1而且必须是奇数。

均值模糊无法克服边缘像素信息丢失缺陷。

原因是均值滤波是基于平均权重 高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同

高斯双边模糊 – 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变 

    //双边滤波
    Mat sbdst;
    bilateralFilter(src, sbdst, 30, 50, 3);
    namedWindow("双边滤波", WINDOW_AUTOSIZE);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值