2020.10.31 使用OpenCV进行图像模糊 【OpenCV C++】

本文探讨了图像噪声去除的几种方法,包括均值滤波、中值滤波、高斯滤波和双边滤波。重点介绍了双边滤波在保护边缘信息方面的优势,并通过示例代码展示了如何应用双边滤波和掩膜处理来增强图像的边缘和人物轮廓,提升图像的立体感。
摘要由CSDN通过智能技术生成

去除图像噪声

1.均值滤波

2.中值滤波(还有最小,最大值滤波)

3.高斯滤波

4.双边滤波

(起到一种模糊的作用)

具体采用哪一种滤波手段,需要根据自己对图像后续的处理要求有关,然后选择合适的图像预处理滤波方法。

源代码:

// testOpencv08.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

int main()
{
    //std::cout << "Hello World!\n";
    Mat src, dst;
    const char* inputWindow = "input image";
    const char* outputWindow = "output image";

    src = imread("E:/imageSources/7.jpg");
    if (!src.data) {
        printf("can not load image");
        return -1;
    }

    namedWindow(inputWindow,WINDOW_AUTOSIZE);
    imshow(inputWindow,src);

    Mat kernal = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
    Mat result;
    //均值滤波(平滑噪声)
    //SIZE的大小选择为奇数(因为需要一个单着的像素)
    //blur(src,dst,Size(25,1),Point(-1,-1));
    //高斯滤波
    //GaussianBlur(src,dst,Size(25,1),11,11);
    //中值滤波
    //medianBlur(src,dst,3);
    //高斯双边滤波

    //120处理阈值
    bilateralFilter(src, dst, 5, 120, 3);
    
    namedWindow(outputWindow, WINDOW_AUTOSIZE);
    imshow(outputWindow, dst);
    filter2D(dst, result, -1, kernal, Point(-1, -1), 0);
    imshow("yanmo image", result);

    waitKey(0);
    return 0;
}

采用双边模糊,再用掩膜处理图像结果:

可以看到经过双边处理(双边模糊会保护边缘信息)后,再用掩膜处理,将边缘信息更加凸显出来。人物轮廓更加凸显出来,脸部立体感更强了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值