OpenCV空间滤波
Posted 程序猿武道馆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV空间滤波相关的知识,希望对你有一定的参考价值。
滤波是数字图像处理中的基础概念,可以在空间域和频域进行。本文主要讲讲使用OpenCV如何在空间域对图像进行滤波。关于滤波的数学理论,这里不再描述,有很多书籍有详细的介绍。
通俗来讲,滤波就是使用一个滤波器核(就是一个矩阵)对数字图像数据(另一个矩阵)进行处理,处理的过程就是使用滤波器核的中心,分别放在图像的每一个像素上,然后通过中心像素的领域像素,对中心像素进行修改。常见的一种解释,就是把滤波器核当做一块毛玻璃,我们将毛玻璃从图像上滑过,记录下来毛玻璃透过来的图像,这就是我们滤波后的图像。
OpenCV使用filter2D方法对图像进行滤波,为了演示滤波,这里使用三个比较特殊的滤波器核进行实验。还有很多有意思的滤波器,大家可以网上看看。
三个滤波器分别如kernel1-3所示,第一个核是锐化核,图像锐化会增强图像的边缘及灰度跳变的部分,第二个核是一个边缘检测核,可以检测图像的边缘,最后一个核会让图像显示出浮雕的效果。
filter2D必须至少传入三个参数,分别代表原图像,结果图像的深度(一个像素数据所占的位数,传递-1表示和原图像采用一样的深度)以及滤波器核。上面的代码运行的结果如图所示:
使用filter2D可以使用任意的核进行滤波,更加灵活。
图像处理领域有一些常用的滤波方式(图像模糊),直接提供了相应的接口。看下面的例子,待处理的图像是Lena图像带有椒盐噪声的图片
上面的代码分别使用了均值滤波(blur),高斯滤波(GaussianBlur),中值滤波(medianBlur)以及双边滤波(bilateralFilter)。运行效果如图所示:
可以看到,对于去除椒盐噪声,使用均值滤波和中值滤波可以得到比较好的结果,但是高斯滤波和双边滤波则不是很好。
上面接口的参数可以查看OpenCV的接口文档,必须有的参数一般包括原图像和核的尺寸,对于高斯滤波和双边滤波需要添加相应的sigma参数,即标准差,它会直接影响到低通滤波的带宽。
苹果用户可长按或扫描下方二维码进行赞赏
以上是关于OpenCV空间滤波的主要内容,如果未能解决你的问题,请参考以下文章
Python 大白从零开始 OpenCV 学习课-7. 空间域图像滤波