• opencv2函数学习之blur,GaussianBlur,medianBlur和bilateralFilter:实现图像平滑处理


    在opencv2中,可能使用blur对图像进行平滑处理,这种方法就是最简单的求平均数。

    • 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法。

    • 平滑处理的用途有很多, 但是在很多地方我们仅仅关注它减少噪声的功用。

    • 平滑处理时需要用到一个 滤波器 。 最常用的滤波器是 线性 滤波器。

    void blur( const Mat& src, Mat& dst,Size ksize, Point anchor=Point(-1,-1),int borderType=BORDER_DEFAULT );

    参数:

    src:原图像。

    dst:目标图像。

    ksize:定义滤波器的大小。如Size(3,3)。

    anchor:指定锚点位置(被平滑点), 如果是负值,取核的中心为锚点。可省略

    borderType:推断边缘像素,一般取默认值BORDER_DEFAULT。可省略

    例:

    blur(src,dst,Size(3,3));

     

    OpenCV2函数 GaussianBlur 执行高斯平滑,高斯滤波是将输入数组的每一个像素点与 高斯内核 卷积,将卷积和当作输出像素值。

    void GaussianBlur( const Mat& src, Mat& dst, Size ksize,double sigmaX, double sigmaY=0,int borderType=BORDER_DEFAULT );

    参数:

    sigmaX:x方向的标准方差。可设置为0让系统自动计算。

    sigmaY:y方向的标准方差。可设置为0让系统自动计算。

    例:

    GaussianBlur(src,dst,Size(9,9),0,0);

     

    OpenCV2函数 medianBlur 执行中值滤波操作,中值滤波将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的 中值 代替 。

    void medianBlur( const Mat& src, Mat& dst, int ksize );

    OpenCV2函数 bilateralFilter 执行双边滤波操作,类似于高斯滤波器,双边滤波器也给每一个邻域像素分配一个加权系数。 这些加权系数包含两个部分, 第一部分加权方式与高斯滤波一样,第二部分的权重则取决于该邻域像素与当前像素的灰度差值。

    void bilateralFilter( const Mat& src, Mat& dst, int d,double sigmaColor, double sigmaSpace,int borderType=BORDER_DEFAULT );

    参数:

    d:像素的邻域直径。

    sigmaColor:颜色空间的标准方差.

    sigmaSpace:坐标空间的标准方差(像素单位).

    例:

    bilateralFilter ( src, dst, i, i*2, i/2 );

     

    ……

  • 相关阅读:
    设计模式之观察者模式
    设计模式之外观模式
    设计模式之模板模式
    设计模式之装饰器模式
    设计模式之代理模式
    .NET常见问题汇总
    使用位运算计算两个整数的加减
    一个程序判断CPU是大端还是小端
    后缀表达式 转 表达式树
    实习一个月的小结
  • 原文地址:https://www.cnblogs.com/denny402/p/3848316.html
Copyright © 2020-2023  润新知