传统数字滤波器与卷积,卷积在图片的应用

1.数字滤波器

对于一个线性时不变系统,施加一个输入 u(t) ,我们可以得到一个输出 y(t) . 如果输入是一个冲击,则输出y(t) 被称作冲击响应,用 h(t) 来表示,是系统的内核。

对于任意 u(t), 输出 y(t) 可以通过 u(t) 与冲击响应 h(t) 的卷积得到,这是 FIR 滤波器的基本原理。

我们还可以通过系统微分方程转换为差分方程,或是通过 laplace 传递函数转换到差分方程,最后得到一个递推公式,这种形式的滤波器就是IIR 滤波器。

1.1 时域处理的两种情形

一个系统可以用时域的微分方程来建立,然后可以用 laplace 的传递函数来处理,把解微分方程变为多项式乘法,可以简单的求解。

还有另外一种处理形式就是状态空间,以矩阵形式来处理微分方程或微分方程组,利用矩阵变换求解,类同齐次方程组的矩阵形式。

1.1.1 微分方程 转 矩阵变换

例如微分方程:

y’’+3y’+2y=uy’’ +3y’ + 2y = uy’’+3y’+2y=u

让 X1=y,X2=y’=X1’X_1 = y, X_2 = y’ = X_1’X1​=y,X2​=y’=X1​’
则上式变为:
X2’=−3X2–2X1−uX_2’ = -3 X_2 – 2 X_1 - uX2​’=−3X2​–2X1​−u
X1’=X2X_1’ = X_2X1​’=X2​


通用形式为:
X’=A∗X+B∗uX’ = A*X + B*u X’=A∗X+B∗u
Y=C∗XY = C*XY=C∗X

微分方程或微分方程组转换到状态空间形式,而状态空间与laplace 传递函数之间可以相互转换

事实上,矩阵A 的特征值就是s传递函数的极点。系统的传递函数(阵)可以通过矩阵变换得到:

Y(s)=C∗(s∗I−A)−1∗BY(s) = C * (s * I - A)^{ -1} * BY(s)=C∗(s∗I−A)−1∗B

同理,连续域的微分方程对应了离散域的差分方程, 离散域状态空间相应的变为:
X(k)=A∗X(k−1)+B(u−1)X(k) = A*X(k-1) + B(u-1)X(k)=A∗X(k−1)+B(u−1)
Y(k)=C∗X(k)Y(k) = C*X(k)Y(k)=C∗X(k)


2. 信号处理中的卷积操作

https://zhuanlan.zhihu.com/p/30994790
https://zhuanlan.zhihu.com/p/366472797

在信号处理中,对于信号f(t)和滤波器 g(t)。


对信号进行滤波即对f(t)和g(t)执行卷及操作,卷积公式为:

滤波器在卷积时先进行反转得到 g(-τ) ,再位移x轴得位移t个单位后的函数g(t-τ) 。

然后对信号f(t)滑动乘积,并对乘积进行积分或者累加得卷积结果。

由以上可以看出,信号处理中的卷积是对滤波器进行反转位移后,再沿轴滑动,每一个滑动位置相交区域的面积,即为该位置的卷积值。

3. 信号处理中的互相关

理解了卷积操作之后理解互相关更加简单,互相关是两个函数之间的滑动点击或滑动内积。相对于卷积操作来说,互相关中的滤波器 g(t) 不进行反转,直接沿轴滑动,同样每一个滑动位置处的卷积值为两函数相交区域的面积。

4. 信号处理中的图像卷积操作

卷积公式:

它的物理意义大概可以理解为:系统某一时刻的输出是由多个输入共同作用(叠加)的结果

放在图像分析里,f(x) 可以理解为原始像素点(source pixel),所有的原始像素点叠加起来,就是原始图了。

g(x)可以称为作用点,所有作用点合起来我们称为卷积核(Convolution kernel)

卷积核上所有作用点依次作用于原始像素点后(即乘起来),线性叠加的输出结果,即是最终卷积的输出,也是我们想要的结果,我们称为destination pixel.

卷积(或者协相关)演示

  • https://blog.csdn.net/zouxy09/article/details/49080029

首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程

对图像和滤波矩阵进行逐个元素相乘再求和的操作就相当于将一个二维的函数移动到另一个二维函数的所有位置,这个操作就叫卷积或者协相关。

卷积协相关的差别是,卷积需要先对滤波矩阵进行180的翻转,但如果矩阵是对称的,那么两者就没有什么差别了。

Correlation 和 Convolution可以说是图像处理最基本的操作,但却非常有用。这两个操作有两个非常关键的特点:它们是线性的,而且具有平移不变性shift-invariant。平移不变性指我们在图像的每个位置都执行相同的操作。线性指这个操作是线性的,也就是我们用每个像素的邻域的线性组合来代替这个像素。这两个属性使得这个操作非常简单,因为线性操作是最简单的,然后在所有地方都做同样的操作就更简单了。

最左边就是我们原始输入图像了,中间是卷积层,-8就是卷积的结果。

信号处理中的滤波器的规则

实际上,在信号处理领域,卷积有广泛的意义,而且有其严格的数学定义,但在这里不关注这个。

2D卷积需要4个嵌套循环4-double loop,所以它并不快,除非我们使用很小的卷积核。这里一般使用3x3或者5x5。而且,对于滤波器,也有一定的规则要求:

1)滤波器的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。

2)滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。

3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。

4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

卷积核的演示

1、啥也不做
这个滤波器啥也没有做,得到的图像和原图是一样的。因为只有中心点的值是1。邻域点的权值都是0,对滤波后的取值没有任何影响。(不同的padding,图片的尺寸会有调整)

2、图像锐化滤波器Sharpness Filter

最简单的3x3的锐化滤波器如下:

图像的锐化和边缘检测很像,首先找到边缘,然后把边缘加到原来的图像上面,这样就强化了图像的边缘,使图像看起来更加锐利了。这两者操作统一起来就是锐化滤波器了,也就是在边缘检测滤波器的基础上,再在中心的位置加1,这样滤波后的图像就会和原始的图像具有同样的亮度了,但是会更加锐利。

实际上是计算当前点和周围点的差别,然后将这个差别加到原来的位置上。另外,中间点的权值要比所有的权值和大于1,意味着这个像素要保持原来的值。

3、边缘检测Edge Detection

我们要找水平的边缘:需要注意的是,这里矩阵的元素和是0,所以滤波后的图像会很暗,只有边缘的地方是有亮度的。

为什么这个滤波器可以寻找到水平边缘呢?因为用这个滤波器卷积相当于求导的离散版本:你将当前的像素值减去前一个像素值,这样你就可以得到这个函数在这两个位置的差别或者斜率。

下面的滤波器可以找到垂直方向的边缘,这里像素上和下的像素值都使用:

再下面这个滤波器可以找到45度的边缘:取-2不为了什么,只是为了让矩阵的元素和为0而已。

那下面这个滤波器就可以检测所有方向的边缘:

为了检测边缘,我们需要在图像对应的方向计算梯度。用下面的卷积核来卷积图像,就可以了。但在实际中,这种简单的方法会把噪声也放大了。另外,需要注意的是,矩阵所有的值加起来要是0.

4、浮雕Embossing Filter

浮雕滤波器可以给图像一种3D阴影的效果。只要将中心一边的像素减去另一边的像素就可以了。这时候,像素值有可能是负数,我们将负数当成阴影,将正数当成光,然后我们对结果图像加上128的偏移。这时候,图像大部分就变成灰色了。

这种效果非常的漂亮,就像是将一副图像雕刻在一块石头上面一样,然后从一个方向照亮它。它和前面的滤波器不同,它是非对称的。另外,它会产生负数值,所以我们需要将结果偏移,以得到图像灰度的范围。

5、均值模糊Box Filter (Averaging)
我们可以将当前像素和它的四邻域的像素一起取平均,然后再除以5,或者直接在滤波器的5个地方取0.2的值即可,如下图:

所以,如果你想要更模糊的效果,加大滤波器的大小即可。或者对图像应用多次模糊也可以。

6、高斯模糊
均值模糊很简单,但不是很平滑。高斯模糊就有这个优点,所以被广泛用在图像降噪上。特别是在边缘检测之前,都会用来移除细节。高斯滤波器是一个低通滤波器。

7、运动模糊Motion Blur

运动模糊可以通过只在一个方向模糊达到,例如下面9x9的运动模糊滤波器。注意,求和结果要除以9。


这个效果就好像,摄像机是从左上角移动的右下角。

【信号处理第十章】 数字滤波器,卷积与互相关相关推荐

  1. 卷积和互相关操作的关系

    本文首发于 算法社区 dspstack.com,转载请注明出处,谢谢. 前言# 卷积和互相关操作在数字信号处理中都是非常重要的公式,卷积是迟缓线性时不变系统的输出响应,而相关操作则在系统识别方面非常有 ...

  2. 卷积、互相关、自相关

    卷积.互相关.自相关 看累了,写篇blog 刚刚在看通信方面的概念,看到了很多关于"相关"的概念.之前学信号的时候接触过,但不是重点内容,so 印象不太深.瞅了瞅信号书,感觉理解了 ...

  3. 傅里叶变化与卷积和互相关操作的转换

    已知有二维信号f(x,y),g(x,y),其对应的傅里叶变化结果为F(x,y),G(x,y). 本篇文章不对公式进行推导,只是运用.有兴趣的话可以自行百度. 1.卷积与傅里叶的转换 FT{f(x,y) ...

  4. 信号处理之FIR数字滤波器(Matlab仿真)

    数字滤波器的作用是滤除不感兴趣的信号,留下想要的信号.数字滤波器可分为无限脉冲响应(IIR)数字滤波器.有限脉冲响应(FIR)数字滤波器两种,两者各有优缺点,其中FIR数字滤波器因其具有良好的线性相位 ...

  5. CS131专题-1:卷积、互相关

    前言:尽最大努力,把[卷积]和[互相关]的诞生.原理,及其物理意义搞清楚. 目录 1 卷积 1.1 卷积是什么 1.2 卷积公式的定义 1.3 卷积运算的物理意义 1.3.1 离散卷积例子:信号分析 ...

  6. 基于MATLAB的数字信号处理(4) IIR数字滤波器设计及软件实现

    文章目录 一.实验目的 二.实验原理 三.设计IIR数字滤波器 一.实验目的 熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法 学会调用 MATLAB 信号处理工具箱中滤波器设计函数(或滤波器设 ...

  7. matlab卷积和互相关,互相关与卷积

    互相关 设两个函数分别是f(t)和g(t),则互相关函数定义为: 它反映的是两个函数在不同的相对位置上互相匹配的程度. 线性卷积 在泛函分析中,是通过两个函数f和g生成第三个函数的一种数学算子,表征函 ...

  8. 数字信号处理相关1(卷积(convolution)的几种解释)

    来自:https://blog.csdn.net/bitcarmanlee/article/details/54729807 来自:https://www.zhihu.com/question/222 ...

  9. 卷积神经网络互相关运算和卷积运算原理

    卷积神经网络用的其实不是卷积运算,实际用的是互相关运算:互相关运算和卷积运算的区别在于对输入结果所加的权重系数的顺序不同而已,但由于神经网络本身就是训练参数的,所以两者的输出结果其实是一样的,而互相关 ...

  10. 数字信号处理--7.5--FIR数字滤波器

    当系统严格要求线性相位时,采用FIR滤波器,因为达到同样的效果,FIR的阶数比IIR高很多.. 线性相位条件:单位冲激响应h(n)序列以n = (N - 1)/ 2为偶对称中心,群延迟延时t = N ...

最新文章

  1. Handler消息传递机制
  2. JAVA中获取当前运行的类名,方法名,行数
  3. 【李开复】从优秀到卓越 (二)
  4. python urlretrieve 管道_Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。...
  5. 无需任何启动盘,在windows系统上一键安装linux(ubuntu)双系统的方法!
  6. 认识代码编辑区域与解决方案区域 005
  7. NYOJ541 最强DE 战斗力(第五届省赛试题)
  8. 【CodeForces - 507B】Amr and Pins(思维贪心,几何问题)
  9. Linux开机报write same failed manually zeroing错误
  10. python文件都是脚本吗_脚本语言系列之Python | Python文件IO
  11. 3-VUE -set
  12. Java之非对称加密
  13. 2021考研复试面试形式:线上视频面试注意事项?
  14. 第一个将Palette Mode引入VVC,阿里云在JVET会议上引起关注
  15. 廖雪峰python实战(一)
  16. 80端口跟8080端口有什么具体区别?
  17. Cisco ❀ 二层交换安全技术
  18. openwrt编译smartdns_老大静态编译openwrt平台mipsel_24kc架构的smartdns时报错,求救!...
  19. IntelliJ IDEA创建Servlet最新方法 Idea版本2021以及IntelliJ IDEA创建Servlet 404问题,找不到对应的路径。
  20. 奇葩公司规定之搞笑版(改编自真实规定)

热门文章

  1. Acrobat DC安装方法
  2. Java微信消息推送(二)
  3. 基于Lua语言的wireshark插件编写
  4. html lt;tablegt;,HTML布局lt;divgt;orlt;tablegt;,
  5. 面试官: MySQL 数据库的优化,你知道有哪些?
  6. 为什么我推荐你用Ubuntu开发?
  7. 接口自动化测试框架搭建(1、环境、框架的思路及目录构成)--python+HTMLTestRunnerCN+request+unittest+mock+db
  8. linux 文件 跳板机_linux 跳板机得搭建
  9. 计算机中丢失profapi,profapi.dll
  10. 算法知识点——(5)集成算法—GBDT详解