实战OpenCV之图像滤波
基础入门
图像滤波是数字图像处理中一种非常重要的技术,主要用于图像噪声去除、图像平滑、突出图像特征,或者进行图像风格的转换。它通过数学运算对图像中的像素值进行修改,以达到特定的处理目的。图像滤波可以分为两大类,分别为:线性滤波、非线性滤波。
线性滤波器通过一个固定的权重矩阵(即:滤波核或卷积核)与图像的每个像素及其周围像素进行卷积操作,从而实现对图像的平滑或锐化。这个权重矩阵决定了滤波的效果,常见的线性滤波器有:高斯滤波、均值滤波等。
非线性滤波不遵循线性叠加原则,常见的有中值滤波等。非线性滤波对于消除椒盐噪声尤为有效,因为它能保留边缘细节。
均值滤波
均值滤波是最基础的线性滤波方法,它将每个像素点替换为其邻域像素值的平均值,这有助于消除图像中的随机噪声。在OpenCV中,均值滤波使用cv::blur函数,其函数原型如下。
void cv::blur(InputArray src, OutputArray dst, Size ksize,
Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT);
各个参数的含义如下。