再谈信号处理之卷积
很多童鞋在学数字信号处理的时候对卷积的概念感到困惑,因为国内教材比较晦涩,大部分老师估计也就PPT一下公式而已,比如传统的图像处理,其中边缘提取就会用到卷积的概念,用高斯核去卷积原图像实际就是对原图像进行滤波(去噪),Canny等算子的核心也是卷积;现代计算机视觉和机器学习中也经常会用到卷积的概念,比如深度学习中的卷积神经网络(CNN),对输入数据的预处理部分就是通过多核卷积提取数据特征。为了帮助大家彻底领悟“卷积”的概念,还是先从最基础的谈起吧。
这是传统数字信号处理给出的模拟信号的卷积公式:
g ( x ) = ∫ − ∞ + ∞ f ( x ) h ( τ − x ) d τ (1) g(x)=\int_{-\infty}^{+\infty}f(x)h(\tau-x)d\tau\tag{1} g(x)=∫−∞+∞f(x)h(τ−x)dτ(1)
离散信号的卷积公式:
g ( n ) = ∑ k = − ∞ ∞ f ( n ) h ( n − k ) (2) g(n) = \sum\limits_{k = - \infty }^\infty {f(n)h(n - k)}\tag{2} g(n)=k=−∞∑∞f(n)h(n−k)(2)
要想弄明白卷积,先要回顾一下信号与系统中的一个重要概念 - 线性时不变系统(LTI),只有彻底理解了LTI,才能更深刻地去理解“卷积”最基本的概念和原理。
1. 线性时不变系统
线性时不变系统及其系统响应
为了表达的简洁,下面系统模拟的就用 h ( x ) h(x) h(x)表示,离散的就用 h ( n ) h(n) h(n)表示,线性时不变系统顾名思义就是:
线性:实际就是加法(乘法的实质也是加法),如果将信号 f 1 ( x ) f_1(x) f1(x)输入系统 h ( x ) h(x) h(x)后得到的响应是 g 1 ( x ) g_1(x) g1(x), f 2 ( x ) f_2(x) f2(x)输入系统 h ( x ) h(x) h(x)后得到的响应是 g 2 ( x ) g_2(x) g2(x), f 1 ( x ) + f 2 ( x ) f_1(x)+f_2(x) f1(x)+f2(x)同时输入系统 h ( x ) h(x) h(x)后得到的响应是 g 1 ( x ) + g 2 ( x ) g_1(x)+g_2(x) g1(x)+g2(x), 系统 h ( x ) h(x) h(x)就是线性的。
爱护环保的你在你心爱的花盆里插下了含苞欲放的牡丹和玫瑰 f 1 ( x ) + f 2 ( x ) f_1(x)+f_2(x) f1(x)+f2(x),上苍有感于你的爱心,很快在你的花盆里给你绽放出了雍容华贵的牡丹花和娇艳欲滴的玫瑰花 g 1 ( x ) + g 2 ( x ) g_1(x)+g_2(x) g1(x)+g<