用C语言从零开始写一个图像处理程序之三(卷积原理简介)
卷积这个概念其实非常简单,先从一维卷积谈起,在信号采集的过程中会有噪音干扰,信号是会随着时间进行波动的比如说一条曲线(拿画图板画的): 要采集T点的数据的时候,要考虑旁边的权重,离中心点T越近,则权重越大,比如上图的三个点,T的权重为2,旁边的点离中心远一点,则权重低一些,那就设为1呗那么最简单的一个一维卷积核就产生了[1,2,1]键入上述图片是一个巨大的集合,那么可以写一个集合:[1,2,3,2
从信号采集到一维卷积:
卷积这个概念其实非常简单,先从一维卷积谈起,在信号采集的过程中会有噪音干扰,信号是会随着时间进行波动的
比如说一条曲线(拿画图板画的):

要采集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]
可以发现和第一张图片差不多,但是更短
该过程如下:

这个数组明显比原来的数组丢失怎么办,有两种办法处理
在边缘填上空白值
[0,1,2,3,2,1,2,0]
或者复制最边缘的值
[1,1,2,3,2,1,2,2]
采集一遍就会得到和原来数组长度一样的新的卷积结果了
数学公式:
卷积边缘是为了抵消噪声的,所以离当前时间点 越近的测量点权重应该越高,我们可以用下面的公式表示

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

一张图就解释清楚了,得到一点附加周围噪声的权值的结果
下一篇文章将接着上一篇直接用一个常用的卷积核 Prewitt算子去完成一副图像的处理
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)