图像的卷积

图像的卷积

  • 写在前面
    • 什么是卷积
    • 图像的卷积操作
            • 怎么将卷积运用到我们的图像处理上呢?
            • 图像卷积
            • 没什么用的卷积核
    • 通过卷积实现高斯滤波
            • 什么是高斯滤波
            • 怎么使用卷积实现高斯滤波
  • 写在结尾

写在前面

前段时间因为一个二维码识别项目,接触到了很多图像处理的相关技术,我发现卷积在图像处理中起到了很重要的作用。今天我们就来聊一聊卷积。

什么是卷积

卷积(Convolution)是一种积分数学运算,通俗的讲,有一个固定不动的函数,有一个沿X轴不断滑动的函数,滑动的距离和这两个函数相交部分的乘积的和形成的一个全新的函数就是这两个函数的卷积。当然他也符合一些积分的规律,等效特性,求和特性,这里就不做展开了,我们主要是将这种运算利用在我们的图像处理中。

图像的卷积操作

怎么将卷积运用到我们的图像处理上呢?

这其实是很多没接触过图像处理的人思考的,毕竟一个是函数,一个是图像,表象上没有什么交点。那么怎么让这两个看上去风马牛不相及的东西互相转换是我们首要任务。
我们对函数的理解一般是一个公式,和对应的坐标图,如下
图像的卷积_第1张图片

(函数 y = x和其对应的坐标)
但是在离散坐标中,函数就变成了这样
图像的卷积_第2张图片
(函数 y = x和其对应的离散坐标)
这样就把一个函数具体成了一些Point,而图像形成的Point中,像素点的排列顺序就是X,而像素点的值就是Y。
这样我们就可以把两个图像当作两个离散函数,每个对应的X(像素点位置)都有一个对应的Y(像素值),对这两个离散函数做卷积也就是对这两个图像做卷积,我们一般称滑动的那个函数为卷积核(Kernel)。

图像卷积

下面我们演示一下怎么对一个图像做卷积
图像的卷积_第3张图片
这也算是网上的通用图像卷积解释图了,将两个图象对应的位置的两个数字相乘并累加在一起。然后随着卷积核的滑动,我们就计算出了一个新的图像,这就是图像卷积操作。
这里很多同学会发现一个问题,因为卷积核的Size为3*3,所以卷积得到的图像比原本的图像缩了一圈,这并不影响我们的卷积结果,但是如果你是一个追求完美的,我们可以通过在原图周围补0,使原本的图像大了一圈,但因为像素值为0,同样也不会影响图像的完整性,这样得到的卷积图像Size就和原来的一样了。

没什么用的卷积核

图像的卷积_第4张图片
这个看起来没什么作用的卷积核在后面会给我们一个思路,这里先不提。

通过卷积实现高斯滤波

看了上面对图像的卷积操作,很多同学可能看懂了,同时也会觉得这有什么用呢, 但是任何复杂的操作都是由一个一个简单的步骤组合而成的。所以我们这里就需要用这些最简单的卷积来实现一个复杂操作–高斯滤波

什么是高斯滤波

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的来说,高斯滤波就是取一个像素点周围像素点的加权平均值。这样每个像素点的像素值就会受到周围像素值的影响,不会出现特别突兀的像素点,这就是消除噪声。

怎么使用卷积实现高斯滤波

卷积是求像素点的乘积和,高斯滤波则是求像素点的加权平均值,看上去好像没什么关系,但是对比前面 没什么作用的卷积核 我们可以发现,如果要求平均值,我们要想可以用这样的卷积核
图像的卷积_第5张图片
使用这样的卷积核,对图像做卷积,我们就可以得到一张图的均值滤波图,那么我们其实可以控制卷积核的值来得到我们想要的滤波效果,
高斯滤波卷积核
图像的卷积_第6张图片

写在结尾

我在后面的文章里会慢慢淡化代码,转而注重理论,因为代码只是我们实现理论的工具,理论才是我们的立身之本。加强我们的理论知识,才能提高我们的核心竞争力,天道酬勤,与君共勉。

你可能感兴趣的:(图像处理,图像处理,卷积)