【信号处理第十章】 数字滤波器,卷积与互相关 |
您所在的位置:网站首页 › 为什么卷积核要反转 › 【信号处理第十章】 数字滤波器,卷积与互相关 |
传统数字滤波器与卷积,卷积在图片的应用 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 ’ ’ + 3 y ’ + 2 y = u y’’ +3y’ + 2y = u y’’+3y’+2y=u 让
X
1
=
y
,
X
2
=
y
’
=
X
1
’
X_1 = y, X_2 = y’ = X_1’
X1=y,X2=y’=X1’ 则上式变为:
X
2
’
=
−
3
X
2
–
2
X
1
−
u
X_2’ = -3 X_2 – 2 X_1 - u
X2’=−3X2–2X1−u
X
1
’
=
X
2
X_1’ = X_2
X1’=X2 通用形式为: X ’ = A ∗ X + B ∗ u X’ = A*X + B*u X’=A∗X+B∗u Y = C ∗ X Y = C*X Y=C∗X 微分方程或微分方程组转换到状态空间形式,而状态空间与laplace 传递函数之间可以相互转换 事实上,矩阵A 的特征值就是s传递函数的极点。系统的传递函数(阵)可以通过矩阵变换得到: Y ( s ) = C ∗ ( s ∗ I − A ) − 1 ∗ B Y(s) = C * (s * I - A)^{ -1} * B Y(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)。
滤波器在卷积时先进行反转得到 g(-τ) ,再位移x轴得位移t个单位后的函数g(t-τ) 。 然后对信号f(t)滑动乘积,并对乘积进行积分或者累加得卷积结果。 由以上可以看出,信号处理中的卷积是对滤波器进行反转位移后,再沿轴滑动,每一个滑动位置相交区域的面积,即为该位置的卷积值。 3. 信号处理中的互相关理解了卷积操作之后理解互相关更加简单,互相关是两个函数之间的滑动点击或滑动内积。相对于卷积操作来说,互相关中的滤波器 g(t) 不进行反转,直接沿轴滑动,同样每一个滑动位置处的卷积值为两函数相交区域的面积。 卷积公式: 放在图像分析里,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。
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |