• 【OpenCV学习】第6课:图像模糊(中值滤波,高斯双边滤波)


    仅自学做笔记用,后续有错误会更改

    理论
    中值滤波:对核内数值先进行排序,再取中间那个值
    在这里插入图片描述
    注1:中值滤波属于统计学的排序滤波器
    注2:中值滤波对椒盐噪声有很好的抑制作用

    高斯双边滤波(美颜磨皮效果一般都是用的这个):
    1.均值滤波:无法克服边缘像素信息丢失缺陷,因为它是基于平均权重的
    2.高斯滤波:克服了该缺陷,但是无法完全避免,因为没有考虑到像素值的不同
    3.高斯双边滤波:是一种边缘保留的滤波方法,避免了边缘数据的丢失,保留了图像轮廓不变
    4.高斯双边滤波有两个核, 一个空域核(上边图那个绿色的格子),一个值域核(用来保留像素值的差异,将像素值的差距限定在一定范围内,差距太大的就不用去模糊)
    5.高斯双边滤波 一般配合 锐化卷积操作,可以达到美颜的效果

    相关API
    中值滤波:medianBlur(Mat src, Mat dst, ksize);
    高斯双边模糊: bilateralFilter(Mat src, Mat dst,1 d = 15,150,3)
    -15 计算的半径,半径之内的像素都会被纳入计算,如果提供-1则根据sigma space参数取值
    -150 sigma color决定了多少差值之内的像素会被计算
    -3 sigma space 如果d的值大于0,则这个3就无效,否则就是根据这个值来推算d的值

    代码示例

    Mat srcImageMat,dstImageMat;
    srcImageMat = imread(...);
    
    // 中值滤波
    // mediaBlur(srcImageMat, dstImageMat, 3);
    // 高斯双边滤波
    // bilateralFilter(srcImageMat, dstImageMat, 15, 100, 5);
    // 高斯双边滤波 + 锐化卷积(也就是磨皮效果演示)
    bilateralFilter(srcImageMat, dstImageMat, 15, 100, 5);
    Mat resultImg;
    Mat kernel = (MAT_(3, 3) << 0,-1 ,0, -1, 5, -1, 0, -1, 0);
    filter2D(dstImageMat, resultImg, -1, kernel , Point(-1, -1), 0);
    imshow("Final Result", resultImg);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    效果截图:
    中值滤波效果截图:
    在这里插入图片描述

    高斯双边滤波效果截图:
    在这里插入图片描述
    高斯双边滤波 + 锐化 效果截图(效果就是磨皮):
    在这里插入图片描述

  • 相关阅读:
    Java 中的参数传递方式
    prometheus自定义邮件告警和自定义微信机器人告警
    字符串压缩(三)之短字符串压缩
    Nginx负载均衡机制及常见问题
    初学者入门的可视化超级色彩公式
    人工智能轨道交通行业周刊-第61期(2023.9.18-9.24)
    c++中的重载
    基于BP神经网络的非线性函数拟合(一维高斯函数)研究-含Matlab代码
    UI 自动化测试 —— selenium的简单介绍和使用
    电子器件系列57:肖特基二极管(BAS7005)
  • 原文地址:https://blog.csdn.net/qq_25563175/article/details/128194023