大家知道,我们所使用的卷积其实是经过翻转180°之后的,那么卷积为什么要进行翻转180度呢?
一维
首先我们需要理解一下卷积,在信号分析中,如下图所示,输入信号是 f(t) ,是随时间变化的。系统响应函数是 g(t) ,图中的响应函数是随时间指数下降的,它的物理意义是说:如果在 t=0 的时刻有一个输入,那么随着时间的流逝,这个输入将不断衰减。换言之,到了 t=T时刻,原来在 t=0 时刻的输入f(0)的值将衰减为f(0)g(T)。
考虑到信号是连续输入的,也就是说,每个时刻都有新的信号进来,所以,最终输出的是所有之前输入信号的累积效果。如下图所示,在T=10时刻,输出结果跟图中带标记的区域整体有关。其中,f(10)因为是刚输入的,所以其输出结果应该是f(10)g(0),而时刻t=9的输入f(9),只经过了1个时间单位的衰减,所以产生的输出应该是 f(9)g(1),如此类推,即图中虚线所描述的关系。这些对应点相乘然后累加,就是T=10时刻的输出信号值,这个结果也是f和g两个函数在T=10时刻的卷积值。
显然,上面的对应关系看上去比较难看,是拧着的,所以,我们把g函数对折一下,变成了g(-t),这样就好看一些了。看到了吗?这就是为什么卷积要“卷”,要翻转的原因,这是从它的物理意义中给出的。
上图虽然没有拧着,已经顺过来了,但看上去还有点错位,所以再进一步平移T个单位,就是下图。
所以,在以上计算T时刻的卷积时,要维持的约束就是: t+ (T-t) = T 。这种约束的意义,大家可以自己体会。
现在大家知道为什么卷积要翻转180度了吧,其实主要跟其时序有关。
二维
现在来看一下二维,图像是可以用二维矩阵表示的,如下图:
对图像的处理函数(如平滑,或者边缘提取),也可以用一个g矩阵来表示,如:
注意,我们在处理平面空间的问题,已经是二维函数了,相当于:
那么函数f和g的在(u,v)处的卷积 f*g(u,v) 该如何计算呢?
首先我们在原始图像矩阵中取出(u,v)处的矩阵:
然后将图像处理矩阵翻转(这个翻转有点意思,不是延x轴和y轴两个方向翻转,而是沿右上到左下的对角线翻转,这是为了凑后面的内积公式。),如下:
可对比下图:
计算卷积时,就可以用 f和g’的内积:
请注意,以上公式有一个特点,做乘法的两个对应变量a,b的下标之和都是(u,v),其目的是对这种加权求和进行一种约束。这也是为什么要将矩阵g进行翻转的原因。以上矩阵下标之所以那么写,并且进行了翻转,是为了让大家更清楚地看到跟卷积的关系。这样做的好处是便于推广,也便于理解其物理意义。实际在计算的时候,都是用翻转以后的矩阵,直接求矩阵内积就可以了。
本文最后更新于2019年10月2日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
本文参考:https://www.zhihu.com/question/22298352?rf=21686447