1、一维信号的卷积

  卷积是一种是数学运算,对于一维连续信号f(x)来说,f(x)和g(x)的卷积是一种积分运算,如下

  

python一维卷积向量怎么写_像素点


  它的几何意义是这样的:第一步,先把g(x)关于原点对称,得到g(-x);第二步,把g(-x)向右平移a个单位得到g(a-x)的图像,如果两个图像有交叉部分,那么交叉部分的面积就是卷积。

  上面说的是一维连续信号,如果是一维离散信号呢,因为积分是求和的极限,那么对于离散信号的卷积就是一种求和运算。对于离散信号x(n)和h(n)来说,他们的卷积如下

  

python一维卷积向量怎么写_图像处理_02


  几何过程也是类似的。先关于远点对称,在平移,只不过只能平移整数个单位,因为是离散信号,再相乘再相加。

2、一维信号的卷积有什么用

  对于信号处理来说,基本的模型是输入信号,处理信号,输出信号这个过程,不管什么信号,总得有输出,从输入到输出的过程都叫信号处理过程,其中包含的噪声、滤波等等都是这个过程中发生的事情。可以证明(谁证明的就不知道了),假设输入信号叫x,处理信号对应的系统函数叫h,那么输入信号等于x和h的卷积。(具体的证明见信号和系统这本书)。

  但是卷积是积分运算,计算起来比较麻烦,所以能不能不通过卷积运算就能把输出信号算出来呢?能!就是通过变换域的方法,什么叫变换域,在正常处理中我们的信号都是关于时间t的信号,也就是说是自变量是t,我们叫时间域(就类似于定义域)。通过一种可逆的变换把时间域变换到别的域(比如傅里叶变换,拉普拉斯变换),从别的域进行处理,再反变换(因为我们需要的是时间域的东西,所以必须得可逆)回来。傅里叶变换和拉普拉斯变换分别是把时间域(简称时域)变换到频率域和s域(就是指变换之后的自变量是频率和s),可以证明(证明过程见信号和系统书吧):时域的卷积相当于频域(s域)的相乘。

  所以,对于信号的处理可以在时域处理,也可以在变换域处理。

3、数字图像的卷积

  数字图像在实质上就是一个二维数组,在信号的角度上来说是二维离散信号,只不过自变量不是时间,而是空间像素点了,所以正常需要处理的是空间域,类比二维信号也有变换域(频域,小波域等等),对于二维信号的处理也有如下结论:处理后的图像g(x,y)等于输入图像f(x,y)和处理过程h(x,y)的卷积。其中A矩阵和B矩阵的卷积如下。

  

python一维卷积向量怎么写_卷积_03


  数字图像进行卷积干吗用?主要用来图像增强和去噪。

4、几个常用术语

  模板:模板就是一个矩阵(其实就是下面说的卷积核),也就是处理图像这个过程对应的函数,对应卷积运算。

  卷积运算:可以看做加权求和的过程,为了图像增强和减少噪声,用该像素点的邻域像素点进行加权,得到处理完之后这个点的像素点(会把噪声减弱,当然也会有别的问题)。

  卷积核:上面不是说了卷积运算了嘛,这个点的邻域和哪个矩阵进行加权啊?换句话说,这个点的邻域那么多像素点,这些像素点所占的权重是多少啊?这些权重构成一个矩阵,这个矩阵就叫卷积核,卷积核的行数和列数都是奇数。

  比如要对R5这个像素点进行卷积运算,有下面的式子成立,这个卷积核的数组直接决定卷积的结果。

  

python一维卷积向量怎么写_图像处理_04


  使用卷积核的时候回出现一个问题——边界问题:当处理图像边界像素时,卷积核与图像使用区域不能匹配,卷积核的中心与边界像素点对应, 卷积运算将出现问题。

  处理办法:

A. 忽略边界像素,即处理后的图像将丢掉这些像素。

B. 保留原边界像素,即copy边界像素到处理后的图像。5、常用的模板

python一维卷积向量怎么写_图像处理_05


python一维卷积向量怎么写_卷积核_06