• 图像滤波


    滤波

    是信号和图像处理中的一种基本操作。它的目的是选择性地提取图像中某些方面的内容,这些内容在特定应用环境下传达了重要信息。滤波可去除图像中的噪声,提取有用的视觉特征,对图像重新采样,等等。它起源于通用的信号和系统理论。

    频域
    1.通过观察变化的频率,图像中灰度级的变化。有些图像含有大片强度值几乎不变的区域(如蓝天),而对于其他图像,灰度级的强度值在整幅图像上的变化很大(例如由大量细小物体构成的混乱场景)
    2.频域分析把图像分解成从低频到高频的频率成分。.有几种著名的变换法可用来清楚地显示图像的频率成分,例如傅里叶变换余弦变换
    3。图像是二维的,因此频率分为两种,即垂直频率(垂直方向的变化)和水平频率(水平方向的变化)。

    空域
    通过观察灰度分布来描述图像特征

      滤波器
    在频域分析框架下,滤波器是一种放大(也可以不改变)图像中某些频段,同时滤掉(或减弱)其他频段的算子。例如,低通滤波器的作用是消除图像中的高频部          分;高通滤波器刚好相反,用来消除图像中的低频部分。

    低通滤波器

      低通滤波器目的是减少图像变化的幅度,获得更平滑的过渡,将像素替换为周围像素的平均值

     

         cv::blur(image,result, cv::Size(5,5)); // 滤波器尺寸

          也称(box filter)块滤波器;

    注意: cv::boxFilter 对图像做滤波时,使用了一个仅由 1 组成的正方形内核。它与均值滤波器类似,但不会除以系数的数量

        高斯滤波:

    cv::GaussianBlur(image, result,cv::Size(5,5), // 滤波器尺寸
    1.5); // 控制高斯曲线形状的参数

        第四个参数必须为奇数(详见高斯滤波

     

      高斯滤波器,像素对应的权重与它到中心像素之间的距离成正比。一维高斯函数的公式为:
      在这里插入图片描述

    离中心点越远的像素权重越低,这使像素之间的过渡更加平滑。与之相反,使用扁平的均值滤波器时,远处的像素会使当前平均值发生突变。从频率上看,这意味着均值滤波器并没有消除全部高频成分。要在图像上应用二维高斯滤波器,只需先在横向线条上应用一维高斯滤波器(过滤水平方向的频率),然后在纵向线条上应用另一个一维高斯滤波器(过滤垂直方向的频率)。这是因为,高斯滤波器是一种可分离滤波器(也就是说,二维内核可分解成两个一维滤波器)。要应用普通的可分离滤波器,可使用 cv::sepFilter2D 函数。也可以用 cv::filter2D 函数直接应用二维内核。由于可分离滤波器所用的乘法运算更少,因此它的计算速度通常比不可分离滤波器要快。

    伪影是一种叫作空间假频的现象造成的。当你试图在图像中包含高频成分,但由于图像太小而无法包含时,就会出现这种现象。

    对于缩减像素采样,需要先进行高斯滤波去除高频成分

    pyrDown函数:

    函数的作用:

    对图像进行滤波然后进行下采样

    函数调用形式:

    void pyrDown(InputArray src, OutputArray dst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT )

    参数详解:

    InputArray src:表示输入图像

     OutputArray dst:表示输出图像

    const Size& dstsize=Size():表示输出图像的大小

     int borderType=BORDER_DEFAULT:表示图像边界的处理方式

    pyrUp函数

    函数功能:

    对图像进行高斯滤波,然后进行上采样;

    函数调用形式:

    void pyrUp(InputArray src, OutputArray dst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT )

    中值滤波器(消除椒盐噪声)

    medianblur(image,result,5)//最后一个参数是滤波器尺寸

    原理

    因为滤波器是非线性的,不能用核心矩阵表示,而是操作一个像素的邻域取其中值;

    定向滤波器

    用途:检测边缘

    使用sobel算子

      sobel(image,

         dst,

         cv_8u, //输出类型

         0,1//内核规格,与垂直或水平有关

         3,//尺寸

         0.4,128//比例及其偏移量

    一般sobel的运算结果为16位有符号整形,

    如果把图像看做二维函数,那么sobel算子就是图像在水平和垂直方向变化的速度。在数学属于中,这种速度称为梯度。它是一个二维向量,向量的元素是横竖两个方向的函数的一阶导数:

    grad(I)=

    sobel算子在水平和垂直方向计算像素值的差分,得到图像梯度的近似值。它在像素周围的一定范围内进行运算,以减少噪声带来的影响。
    在进行边缘检测时,通常只计算范数。。但如果需要计算范数与方向,可以使用以下函数。

    计算一阶导数的函数与算子

      prewitt

      roberts

      scharr(函数cv::scharr)

    计算导数的算子:高通滤波器

    拉普拉斯算子(二阶求导)

      未完待续

  • 相关阅读:
    TextEdit 使用Mask验证输入格式为邮箱
    大牛博客收藏
    WPF的Dispatcher类里的BeginInvoke,Invoke,InvokeAsync
    DispatcherPriority 枚举
    WPF 线程处理
    Winform UI线程和处理线程交互(进度更新显示)
    C# DataTable 类使用
    string.Format对C#字符串格式化
    C# 线程学习记录
    WPF 控件库
  • 原文地址:https://www.cnblogs.com/KAVEI/p/14731430.html
Copyright © 2020-2023  润新知