Python+OpenCV-02 模糊操作
OpenCV学习的实质
我们经常说,OpenCV更像一个库函数,里面提供了大量的接口API,集合了许多图像操作的算法。对OpenCV的学习其本质就是对这些算法的学习。对我们来说比较好的一面是,学习OpenCV,我们不需要从头开始自己再编写算法,而是学习怎么调用这个算法。算法的调用其本质就是传参的过程,我们需要做的是仔细的阅读OpenCV的官方文档,把每一个方法中需要传递的参数的类型和约束条件理解了就好。官方文档是英文的,我们可以借助翻译软件来帮助我们来理解。
模糊操作简析
在图像处理中,我们经常会获得一些带噪点的图像(在图像中一些区域的图像点会比周围的图像点要深或者浅),不利于对图像的进一步的观察和操作。这时就需要用到模糊操作。经过模糊操作后的图像,会变得好像被水晕过一般,具备了水墨画的感觉。我们都知道水墨画更加写意,油画更加写实。模糊操作也是这样,经过模糊操作以后,图像个性化的点被削弱,保留下图像的共性的东西。在这一文中,我们将探讨三种常见的模糊操作,均值模糊、中值模糊和自定义模糊。
卷积操作简析
进入模糊操作以后,卷积一词就会频繁的出现在我们的学习进程中。一直到利用 卷积神经网络(CNN) 来对图像进行分类、识别、语义划分等,我们都会见到卷积操作的身影。图像处理中的卷积操作和数学中的不太一样,图像处理中的卷积更加简单。
在图像处理中,读入计算机中的图片,都是一个又一个的像素点,这些像素点由0~255的数构成,保存在矩阵中。如下图所示。
上面那张图显示的就是一张图片在计算机中的真实的存储状态,我们可以看出这是一个三行三列的矩阵。
接下来我们定义一个卷积核函数,用来对图像进行卷积变化。需要注意的是,不同的卷积核卷积方法是一样的,唯一的不同点是卷积核函数的数值的不同,从而会对图像产生不同的影响。我们这一篇文章中探讨三种常见的模糊操作,均值模糊、中值模糊和自定义模糊,也是由于核函数不同。定义一个核函数如下:<