信号处理与卷积

940阅读 0评论2022-01-12 wwm
分类:Python/Ruby

数据平滑处理 是一个卷积过程,比如移动平均

1. 信号处理与滤波器

我们知道计算机处理数据是按帧处理的,也就是说计算机对信号的处理是不连续的。例如对声音的读写,录音的原理是以非常高的频率记录声音信号,播放的时候按照一定频率将数据读取出来,这一过程就是信号处理。在图形学中回忆下上一章中的画线,直线本身是连续的但是我们使用每个像素对其采样(信号处理), 当在屏幕上显示时(还原信号)由于还原的精度(或者频率)不同就可能导致还原信号过程中出现噪点或者锯齿(声音也是一样会有噪音)。而解决这类问题的方式就是使用滤波器。

2. 卷积与滤波

2.1 卷积

回忆下数学知识里的卷积,在图形学中使用较多的是其离散形式:(卷积内容在数学基础中)

由于图形学中使用较多的是卷积的离散形式,本文中将较多的以离散形式的卷积作为说明(同样使用与卷积的连续形式)。


2.2 卷积与滤波

考虑下游戏中要模拟一个物体的移动,其速度值随时间变化如下图:

采样的数据为a[i],也可以理解为函数a[i],为了使的每个时刻的速度相对平滑,我们需要对每个点在一定范围r(如果要算整段平均速度则r为整段范围)内计算平均值(求平均值其实就可以看做吧原始信号做平滑处理,也就是滤波的过程)即:

到目前为止好像整个滤波过程与卷积并没有什么关系。但是仔细观察平均函数的计算公式和卷积的计算公式,如果卷积公式中的函数b是一个常量函数: b[i] = 1/ (2r+1)。那么卷积函数正好变为了求平均速度的函数,此时函数b就称为原始信号a的滤波器。由这个示例做推广,我们可以把函数a[i]看做信号源,函数b[i]作为滤波器函数,则a与b的卷积就是信号a经过b滤波后的结果。由于卷积符合交换律,因此也可以看做信号b经过a滤波器过滤后的结果。

2.2 二维及多维卷积

卷积的定义或者上述速度的例子都是一维的,在图形学中更多的是对图片/像素进行滤波更多的需要的是二维的滤波过程。卷积同样适用于二维及多维,二维卷积公式如下:

图形学中经常使用一个滤波器(如像素集)对像素进行处理如下图中使用某像素周边9个像素(可能是同图片的9个像素也可能是另一图片的九个像素甚至可以是定是的9个像素值)作为滤波器函数:


3. 总结

  • 主要复习下卷积的公式 (a★b)(x) = ∑a(i)b(x-i)
  • 在卷积公式中可以以把b(x)函数看做滤波器函数,在图形学中其作用是将原始图片像素滤波成为新的像素值。




上一篇:Python计算大文件行数方法及性能比较
下一篇:用卷积计算移动平均