圆形和线性卷积

信息处理 图像处理 卷积
2022-01-05 23:14:25

循环卷积和线性卷积有什么区别?我什么时候会选择其中之一?在图像处理中,过滤器应用于带有掩码的图像,我应该选择哪种类型的卷积?

2个回答

如果您有一个数据向量d,它由元素d1,d2,...dN,那么线性卷积会按顺序对它们进行运算,从d1开始,以dN结束。

想象一下,数据向量d由一张纸条表示,其中N个元素按顺序书写。dN的位置)与开头(写入d_1的位置)接触,将纸条形成一个圆圈d1卷积即循环卷积。在实践中,线性卷积和循环卷积几乎相同,区别发生在线性卷积的开始和结束。在线性卷积中,您假设数据前后都有零(即我们假设“ d0 ”和“ dN+1 ”为0),而在循环卷积中,我们将数据包装成周期性的(即“ d0 "dN和“ dN+1 ”等于d1)。

同样的原则也适用于多维数组。对于线性卷积,每个轴都有明确的起点和终点,前后均假设为零。对于循环卷积,数据在每个轴上环绕。

When would I choose one over the other?

除了一些非常罕见的例外,我们不会“选择”循环卷积。我们几乎总是想要线性卷积。循环卷积的出现如此之多的原因是因为通过 FFT(FFT、乘法、逆 FFT)进行的卷积是循环卷积,而不是线性的。

当您在图像中实现卷积时,您必须注意边界值,因为在某些时候您的卷积掩码会“脱离”图像进行处理。根据您填充缺失值的方式,将确定您是否实现循环卷积:

  • 如果你用 0 填充缺失值,那么你将留在线性卷积中
  • 如果您按周期性填充缺失值,那么您可能会使用循环卷积。

请注意,如果您在傅里叶域中实现卷积,那么除了循环卷积之外别无选择,因为 FFT 算法会隐式地对您的图像进行周期化。

- 编辑 -

卷积通常在傅立叶域(=> 循环卷积)中实现,因为由于 FFT 算法,它在大多数情况下明显更快。存在快速线性卷积算法,但通常保留给可分离内核情况,您可以分别水平和垂直过滤图像,这也比简单的 2D 实现产生更少的操作。