图像噪点消除

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

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

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

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

均值滤波是一种经典的线性滤波方法。
核心思想:在图像上使用一个指定大小的卷积核(滤波器),计算该卷积核覆盖区域内所有像素的平均****值,并将这一平均值赋给该区域中心像素。
均值滤波的主要步骤包括:
卷积核:卷积核是一个矩形区域。均值滤波像素值对最终结果的贡献是均等的。
滑动过程:卷积核会从图像的左上角开始,逐步在图像上滑动,计算出每个位置的新像素值,直到
覆盖整幅图像。
当卷积核移动到图像边缘时,可能会遇到超出图像范围的情况。这时需要进行边界填充,以确保卷积核能够覆盖边缘的像素。
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//边界处理方式
    )
相关推荐
菜鸟233号7 小时前
力扣377 组合总和 Ⅳ java实现
java·数据结构·算法·leetcode
我是大咖7 小时前
二级指针与指针数组搭配
c语言·数据结构·算法
悟纤7 小时前
Suno 电子舞曲创作指南:102 个实用 Prompt 精选 | Suno高级篇 | 第20篇
人工智能·prompt·suno·suno ai·suno api·ai music
北京耐用通信7 小时前
石油化工车间的“通讯救星”:耐达讯自动化Profibus总线光纤中继器有多实用?
人工智能·科技·物联网·自动化·信息与通信
檐下翻书1737 小时前
具身智能:AI在物理环境中的感知-行动闭环
人工智能
十铭忘7 小时前
动作识别10——基于骨骼点的动作识别PoseC3D
人工智能·深度学习·计算机视觉
用针戳左手中指指头7 小时前
AI小白搞AI之目标检测:王者荣耀画面识别
人工智能·python·yolo·目标检测·王者荣耀
码农三叔7 小时前
(9-2-02)自动驾驶中基于概率采样的路径规划:基于Gazebo仿真的路径规划系统(2)
人工智能·机器学习·机器人·自动驾驶·rrt
Fasda123457 小时前
使用VFNet模型实现车轮缺陷检测与分类_改进模型_r50-mdconv-c3-c5_fpn_ms-2x_coco
人工智能·分类·数据挖掘
大学生毕业题目8 小时前
毕业项目推荐:105-基于yolov8/yolov5/yolo11的烟草等级检测识别系统(Python+卷积神经网络)
人工智能·python·yolo·目标检测·cnn·pyqt·烟草等级