您的位置:首页 > 娱乐 > 明星 > 计算机视觉全系列实战教程:(九)图像滤波操作

计算机视觉全系列实战教程:(九)图像滤波操作

2024/10/6 22:19:02 来源:https://blog.csdn.net/qq_42279379/article/details/139636503  浏览:    关键词:计算机视觉全系列实战教程:(九)图像滤波操作

1.图像滤波的概述

(1)Why (为什么要进行图像滤波)

  • 去噪:去除图像在获取、传输等过程中的各种噪音干扰
  • 提取特征:使用特定的图像滤波器提取图像特定特征

(2)What (什么是图像滤波)

使用滤波核对图像进行卷积运算或非线性运算,以达到去噪或提取特征的目的的图像处理技术

2.线性滤波

What:对各像素灰度进行简单处理(乘以一个权重),最后求和

(1)方框滤波

归一化方框滤波器和均值滤波器的核基本一致,主要区别是:是否进行归一化处理,如果不进行归一化处理,则表示的是方框滤波
在opencv中的滤波算法如下:

void cv::boxFilter(cv::Mat &imSrc, //输入图像cv::Mat &imDst, //输出图像int depth, //图像深度cv::Size ssize, //方框滤波器的尺寸cv::Point(-1,-1), //默认以中心点为基准bool normalize = true, //是否进行归一化处理int borderType = 4);

(2)均值滤波

均值滤波器的核的元素全是1,并进行了归一化操作:即每个元素都会除以核的总数
在这里插入图片描述

void cv::blur(cv::Mat &imSrc, //输入图像cv::Mat &imDst,  //输出图像cv::Size ksize,  //滤波核的尺寸Point anchor=Point(-1,-1),  //默认以中心点为基准int borderType=BORDER_DEFA  //图像外部像素的边界模式,一般默认值即可);

(3)高斯滤波

形状类似于概率论中的高斯分布模型(正态分布模型)

void cv::GaussianBlur(cv::Mat &imSrc, //输入图像cv::Mat &imDst, //输出图像cv::Size ksize, //高斯滤波核的尺寸double sigmaX, //高斯核函数在X方向的标准偏差double sigmaY = 0, //高斯核函数在Y方向的标准偏差int borderType = BORDER_DEFAULT);

3.非线性滤波

(1)中值滤波

用像素点领域的灰度值来代替该像素点的灰度值,可以去除最大值和最小值,针对椒盐噪声效果很好

void cv::medianBlur(cv::Mat &imSrc, //输入图像cv::Mat &imDst, //输出图像int ksize  //中值滤波核的尺寸);

(2)双边滤波

双边滤波能够在保持边缘的前提下实现降噪的目的,缺点是效率较慢
基本原理:考虑两个权重因素来组成卷积核

  • 空域权重:两点之间的距离,距离越远权重越低
  • 值域权重:两点之间的像素值相似程度,越相似权重越大。
void cv::bilalteralFilter(cv::Mat &imSrc, //输入图像cv::Mat &imDst,  //输出图像double sigmaColor, //值域的标准差double sigmaSpace,  //空间域的标准差int borderType = BORDER_DEFAULT);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com