用C语言从零开始写一个图像处理程序之三(卷积原理简介)

从信号采集到一维卷积:

卷积这个概念其实非常简单,先从一维卷积谈起,在信号采集的过程中会有噪音干扰,信号是会随着时间进行波动的

比如说一条曲线(拿画图板画的):

用C语言从零开始写一个图像处理程序之三(卷积原理简介)_第1张图片

 要采集T点的数据的时候,要考虑旁边的权重,离中心点T越近,则权重越大,比如上图的三个点,T的权重为2,旁边的点离中心远一点,则权重低一些,那就设为1呗

那么最简单的一个一维卷积核就产生了

[1,2,1]

键入上述图片是一个巨大的集合,那么可以写一个集合:
[1,2,3,2,1,2]

卷积核运动到T(2)的时候,就会产生

      [1,2,1]

[1,2,3,2,1,2]

上下数字一乘,就会产生一个值8,那么8点就是新的这个地方的值

如果从头向后运动的话,就会产生一个新的数组

[8,10,8,6]

可以发现和第一张图片差不多,但是更短

该过程如下:

用C语言从零开始写一个图像处理程序之三(卷积原理简介)_第2张图片

这个数组明显比原来的数组丢失怎么办,有两种办法处理

在边缘填上空白值

[0,1,2,3,2,1,2,0]

或者复制最边缘的值

[1,1,2,3,2,1,2,2]

采集一遍就会得到和原来数组长度一样的新的卷积结果了

数学公式:

卷积边缘是为了抵消噪声的,所以离当前时间点  越近的测量点权重应该越高,我们可以用下面的公式表示

用C语言从零开始写一个图像处理程序之三(卷积原理简介)_第3张图片

从一维卷积扩展到二维卷积:

用C语言从零开始写一个图像处理程序之三(卷积原理简介)_第4张图片

一张图就解释清楚了,得到一点附加周围噪声的权值的结果

下一篇文章将接着上一篇直接用一个常用的卷积核 Prewitt算子去完成一副图像的处理

你可能感兴趣的:(图像处理,深度学习,人工智能,c语言,c++)