卷积与高斯滤波
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
t=0时刻:y(0)=x(0)h(0); t=1时刻:当前石块引起的影响x(1)h(0);t=0时刻石块x(0)引起的
残余影响x(0)h(1); y(1)=x(1)h(0)+ x(0)h(1); t=2时刻:当前石块引起的影响x(2)h(0); t=0时刻石块x(0)引起的残余影响x(0)h(2); t=1时刻石块x(1)引起的残余影响x(1)h(1); y(2)=x(2)h(0)+ x(1)h(1)+x(0)h(2); …… t=N时刻: 当前石块引起的影响x(N)h(0); t=0时刻石块x(0)引起的残余影响x(0)h(N); t=1时刻石块x(1)引起的残余影响x(1)h(N-1); y(N)=x(N)h(0)+ x(N-1)h(1)+x(N-2)h(2)+…+x(0)h(N); 这就是离散卷积的公式了
当我们每次要丢石子时,站在当前的时间点,系统的对我们的回应都是h(0),时间轴之后的
(h(1),h(2).....)都是对未来的影响。而整体的回应要加上过去对于现在的残余影响。 现在我们来观察t=4这个时刻。 站在t=0时刻看他对于未来(t=4)时刻(从现在往后4秒)的影响,可见是x(0)h(4) 站在t=1时刻看他对于未来(t=4)时刻的影响(从现在往后3秒),可见是x(1)h(3) 站在t=2时刻看他对于未来(t=4)时刻的影响(从现在往后2秒),可见是x(2)h(2) 站在t=3时刻看他对于未来(t=4)时刻的影响(从现在往后1秒),可见是x(3)h(1)
丁志博
卷积
如果随便给你两个函数让你算卷积,其实没什么具体意义,就是用某 种规则实现某种运算而已。如果要探究物理意义,那么最好把它放到一个 具体的环境中去。 在“信号与系统”中论述系统对输入信号的响应就是卷积的目的之一。 卷积表示为y(n) = x(n)*h(n) 使用离散数列来理解卷积会更形象一点,我们把y(n)的序列表示成 y(0),y(1),y(2) and so on; 这是系统响应出来的信号。 同理,x(n)的对应时刻的序列为x(0),x(1),x(2)...and so on; 系统的响应不仅与当前时刻系统的输入有关,也跟之前若干时刻的输 入有关,因为我们可以理解为这是之前时刻的输入信号经过一种过程(这 种过程可以是递减,递增,或其他)对现在时刻系统输出的影响,那么显 然,我们计算系统输出时就必须考虑现在时刻的信号输入的响应以及之前 若干时刻信号输入的响应之“残留”影响的一个叠加效果。
Байду номын сангаас
当从h(0)往右看,你看到的是现在对于未来的影响,当
翻转h(t)之后,从h(0)往左看,你依次看到的越来越远 的过去对现在的影响
数字图像处理中的卷积
在数字图像处理中, 有一种基本的处理方法:线性滤波. 待处理的平面数字图像可被看做一个大
矩阵, 图像的每个像素对应着矩阵的每个元素。用于滤波的是一个滤波器小矩阵(也叫卷积核), 滤波器小矩阵一般是个方阵, 也就是行数和列数相同。进行滤波就是对于大矩阵中的每个像素, 计算它周围像素和滤波器矩阵对应位置元素的乘积, 然后把结果相加到一起, 最终得到的值就 作为该像素的新值, 这样就完成了一次滤波.(加权求和)(在边缘处可以用0填充边缘会变黑, 或复制边缘像素)
高斯滤波器
高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器。高斯 平滑滤波器对于抑制服从正态分布的噪声非常有效。(移除细节) 其中,高斯分布参数Sigma决定了高斯函数的宽度。对于图像处理来说,常用 二维零均值离散高斯函数作平滑滤波器。
由于图像都是一个像素一个像素的离散的变化,而现实中的高斯函数是连续 的,所以我们用到的高斯模板都是模拟出来高斯函数的形状 理论上来讲,图像中每点的分布都不为零,这也就是说每个像素的计算都需 要包含整幅图像。在实际应用中,在计算高斯函数的离散近似时,在大概3σ
在频域中理解高斯滤波器
原图 3*3模板σ=0.5 3*3模板σ=0.8 3*3模板σ=1.8 20*20模板 σ=0.5 20*20模板 σ=0.8 20*20模板 σ=1.8 sigma的大小决定低频/高频被突出/抑制的程度;空域上,这玩意就是对窗口内 像素的灰度/颜色取加权平均,sigma大权重差别大,sigma小权重差别小。
(-1, 1) (0,1) ( -1,0) (-1,-1) (0,0) (0,-1) (1,1) (1,0) (-1,1) 0.0453542 0.0566406 0.0453542 0.0947416 0.118318 0.0947416 0.0566406 0.0707355 0.0564604 0.118318 0.147761 0.118318 0.0453542 0.0564604 0.0453542 0.0947416 0.118318 0.0947416
卷积时为什么要对其中一个函数 进行翻转?
打个比方,往平静的水面里面扔石头。我们把水面的反应看作是一种
冲击响应。水面在t=0时刻石头丢进去的时候会激起高度为h(0)的波纹, 但水面不会立马归于平静,随着时间的流逝,波纹幅度会越来越小, 在t=1时刻,幅度衰减为h(1), 在t=2时刻,幅度衰减为h(2)……直到一段 时间后,水面重复归于平静。 从时间轴上来看,我们只在t=0时刻丢了一块石头,其它时刻并没有做 任何事,但在t=1,2….时刻,水面是不平静的,这是因为过去(t=0时刻) 的作用一直持续到了现在。 那么,问题来了: 如果我们在t=1时刻也丢入一块石子呢?此时t=0时刻的影响还没有消 失(水面还没有恢复平静)新的石子又丢进来了,那么现在激起的波 浪有多高呢?答案是当前激起的波浪与t=0时刻残余的影响的叠加。那 么t=0时刻对t=1时刻的残余影响有多大呢?
假设0时刻系统的响应为y(0),若其在1时刻时,此种响应未改变,
则1时刻的响应就变成了y(0)+y(1),叫序列的累加和。但常常系统 中不是这样的,因为0时刻的响应不太可能在1时刻仍旧未变化, 那么怎么表述这种变化呢,就通过h(t)这个响应函数与x(0)相乘 来表述,表述为x(m)×h(n-m),引入这个函数就能够表述y(0)在1 时刻究竟削弱了多少,然后削弱后的值才是y(0)在1时刻的真实 值,再通过累加和运算,才得到真实的系统响应。 再拓展点,某时刻的系统响应往往不一定是由当前时刻和 前一时刻这两个响应决定的,也可能是再加上前前时刻,前前 前时刻,前前前前时刻,等等,那么怎么约束这个范围呢,就 是通过对h(n)这个函数在表达式中变化后的h(n-m)中的m的范围 来约束的。即说白了,就是当前时刻的系统响应与多少个之前 时刻的响应的“残留影响”有关。 当考虑这些因素后,就可以描述成一个系统响应了,而这 些因素通过一个表达式(卷积)即描述出来
距离之外的像素都可以看作不起作用,(σ=1时,在3σ内的概率为99.73%)那 些像素的计算也就可以忽略。通常,图像处理程序只需要计算(6σ + 1) * (6σ + 1) 的矩阵就可以保证相关像素影响。 当我们的模板是个3*3的模板(模糊半径=1),σ=1.5时,得到如下矩阵,之后进 行归一化,这个矩阵的总和是0.4787147。这意味着我们需要乘矩阵的所有元 素1/0.4787147以便最终增加到1。