图像噪点消除

噪声
定义:图像中的干扰因素,导致像素值随机变化或异常。
高斯噪声:符合正态分布,导致图像模糊或产生噪点。
椒盐噪声:随机分布的黑白点。
滤波器
定义:用于处理图像噪声的工具,常称为卷积核

工作原理:在图像上滑动,计算区域内的像素值,修改中心像素值。
线性滤波:通过线性运算处理邻域像素。
均值滤波:计算邻域像素的平均值,平滑图像。
高斯滤波:通过加权平均处理高斯噪声。
非线性滤波:基于像素间的逻辑关系进行运算。
中值滤波:适用于去除椒盐噪声,保留图像边缘细节。

双边滤波:同时考虑空间距离和像素值差异,保留边缘的同时平滑图像。
滤波与模糊
低通滤波器:
允许低频信号通过,抑制高频信号。
用于去除噪点、平滑和模糊图像。
高通滤波器:
抑制低频信号,增强高频信号。

用于增强图像边缘,锐化图像。

均值滤波是一种经典的线性滤波方法。
核心思想:在图像上使用一个指定大小的卷积核(滤波器),计算该卷积核覆盖区域内所有像素的平均****值,并将这一平均值赋给该区域中心像素。
均值滤波的主要步骤包括:
卷积核:卷积核是一个矩形区域。均值滤波像素值对最终结果的贡献是均等的。
滑动过程:卷积核会从图像的左上角开始,逐步在图像上滑动,计算出每个位置的新像素值,直到
覆盖整幅图像。
当卷积核移动到图像边缘时,可能会遇到超出图像范围的情况。这时需要进行边界填充,以确保卷积核能够覆盖边缘的像素。
void blur(
InputArray src, // 输入图像
OutputArray dst, // 输出图像
Size ksize, // 卷积核的大小
Point anchor = Point(-1, -1), // 锚点
int borderType = BORDER_DEFAULT // 边界处理方式

);

方框滤波是一种线性滤波方法,通过应用一个矩形的卷积核来计算并更新图像中每个像素的值。
方框滤波使用的卷积核通常是一个全为1的矩阵

α 是一个缩放因子,α的值取决于 normalize 参数的设置。
方框滤波的过程与均值滤波一模一样,都采用卷积核从图像左上角开始,逐个计算对应位置的像素值,并从左至右、从上至下滑动卷积核,直至到达图像右下角,唯一的区别就是核值可能会不同。
void boxFilter(
InputArray src, // 输入图像
OutputArray dst, // 输出图像
int ddepth, // 输出图像的深度
Size ksize, // 卷积核大小
Point anchor = Point(-1, -1), // 锚点位置(默认值表示核中心)
bool normalize = true, // 是否进行均值归一化
int borderType = BORDER_DEFAULT // 边界处理方式

);

高斯滤波的卷积核权重并不相同:中间像素点权重最高,越远离中心的像素权重越小。高斯公式如下:

其中的值也是与自适应二值化里的一样,当时会取固定的系数,当kernel大于7并且没有设置时,会使用固定的公式进行计算σ的值:

3*3****的卷积核为例,其核值如下所示:

卷积核从图像左上角开始,逐个计算对应位置的像素值,并从左至右、从上至下滑动卷积核,直至到达图像右下角,唯一的区别就是核值不同。
void GaussianBlur(
InputArray src, // 输入图像
OutputArray dst, // 输出图像
Size ksize, // 高斯核的大小
double sigmaX, // X方向的标准差
double sigmaY = 0, // Y方向的标准差(可选,默认与sigmaX相同)
int borderType = BORDER_DEFAULT // 边界处理方式

);

中值又叫中位数,是所有数排序后取中间的值。中值滤波没有核值
而是在原图中从左上角开始,将卷积核区域内的像素值进行排序,并选取中值作为卷积核的中点的像素值。
选择卷积核:使用一个固定大小的卷积核覆盖图像中的局部区域。卷积核的大小通常为3×3、5×5
等。
排序与取中值:对于每个卷积核覆盖的区域,将像素值按照从小到大的顺序排列,取出中间的值作
为该区域中心像素的新值。
重复操作:将卷积核移动到下一个位置,重复以上步骤。
中值是一种非线性操作,效率相比前面几种线性滤波要慢。
void medianBlur(
InputArray src, // 输入图像
OutputArray dst, // 输出图像
int ksize // 卷积核的大小

);

模糊操作基本都会损失掉图像细节信息,尤其前面介绍的线性滤波器,图像的边缘信息很难保留下来。然而,边缘信息是图像中很重要的一个特征,所以这才有了双边滤波。
双边滤波综合考虑距离和色彩的权重结果:

  1. 空间距离权重:与当前像素点距离越远的像素点,权重越小。--空域--物理距离
  2. 颜色相似度权重:与当前像素点颜色差异越大的像素点,权重越小。--值域
    void bilateralFilter(
    InputArray src, //输入图像
    OutputArray dst, //滤波后的图像输出
    int d, //滤波器领域的直径
    double sigmaColor, //控制颜色相似度的参数
    double sigmaSpace, //控制空间距离的参数
    int borderType = BORDER_DEFAULT//边界处理方式
    )
相关推荐
政安晨17 分钟前
政安晨【零基础玩转开源AI项目】- AutoGPT:全球首个自主AI Agent从入门到实战(致敬OpenClaw的小回顾)
人工智能·ai·autogpt·全球首个agent框架·致敬openclaw之作·参考价值·ai开源agent框架
Shawn_Shawn5 小时前
mcp学习笔记(一)-mcp核心概念梳理
人工智能·llm·mcp
33三 三like7 小时前
《基于知识图谱和智能推荐的养老志愿服务系统》开发日志
人工智能·知识图谱
芝士爱知识a7 小时前
【工具推荐】2026公考App横向评测:粉笔、华图与智蛙面试App功能对比
人工智能·软件推荐·ai教育·结构化面试·公考app·智蛙面试app·公考上岸
腾讯云开发者8 小时前
港科大熊辉|AI时代的职场新坐标——为什么你应该去“数据稀疏“的地方?
人工智能
工程师老罗8 小时前
YoloV1数据集格式转换,VOC XML→YOLOv1张量
xml·人工智能·yolo
颜酱8 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919108 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878388 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab