OpenCV-Python系列六:图像滤波
图像滤波是一种十分常见的图像处理手段。通常,你可以认为相邻位置像素是紧密联系的,它们共同来显示对某个物体,图像滤波则通过运算来排除图像中和周围相差大的像素。当然,这并不是绝对的, 有时候你为了评估图像的质量,也会将这些“特立独行”的像素作为选取的目标 。无论你采用什么方法,记住你要的目标就行,有时候你的目标可能是别人的背景。
滤波常常会使得图像变得模糊(非绝对),那么,为什么你需要将一幅清晰的图像变得模糊呢?下面的例子应该可以解释。
高斯滤波采用满足正态分布的核模板,其参数的主要参数是标准差σ,代表核的离散程度,σ值越小,模板中心系数与边缘系数差越大,平滑的程度越小。
高斯滤波对图像采集过程中由于不良照明/高温引起的传感器噪声信号有较好的效果,消除了图像中的高频信号。
由于得到的是一维的Gaussian Kernel,你可以采用下面的方式转为二维的
为了便于直观感受高斯滤波的效果,使用Canny算子来提取轮廓对比,你可以试试在特征提取前加高斯滤波对比。
补充说明:对于均值滤波,你也可以使用cv2.boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]])来实现,需要将normalize设置为True,当设置normalize为False时,实现的是将kernel内像素相加,官方文档做出的描述为:
中值滤波对图像中的脉冲型(椒盐等)噪声信号处理效果好,当 你的应用场景存在这种颗粒感的噪声信号时,中值滤波会是一种很好的选择 。它,选取kernel区域内像素点集的中值最为锚点的像素值,对类似投票机制中的最高分(高灰阶点)和最低分(过低灰阶点)影响有很好的抑制作用。
如果你的应用涉及到图像美化,双边滤波可以初步达到你的期望,关于双边滤波,这里不做展开,由你来探索,其函数参数信息如下。
对于opencv-python的图像滤波部分有问题欢迎留言, Have Fun With OpenCV-Python, 下期见。
2024-11-19 广告