图像噪点消除

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

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

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

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

均值滤波是一种经典的线性滤波方法。
核心思想:在图像上使用一个指定大小的卷积核(滤波器),计算该卷积核覆盖区域内所有像素的平均****值,并将这一平均值赋给该区域中心像素。
均值滤波的主要步骤包括:
卷积核:卷积核是一个矩形区域。均值滤波像素值对最终结果的贡献是均等的。
滑动过程:卷积核会从图像的左上角开始,逐步在图像上滑动,计算出每个位置的新像素值,直到
覆盖整幅图像。
当卷积核移动到图像边缘时,可能会遇到超出图像范围的情况。这时需要进行边界填充,以确保卷积核能够覆盖边缘的像素。
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//边界处理方式
    )
相关推荐
聆风吟º2 分钟前
CANN算子开发:ops-nn神经网络算子库的技术解析与实战应用
人工智能·深度学习·神经网络·cann
偷吃的耗子7 分钟前
【CNN算法理解】:CNN平移不变性详解:数学原理与实例
人工智能·算法·cnn
勾股导航7 分钟前
OpenCV图像坐标系
人工智能·opencv·计算机视觉
神的泪水9 分钟前
CANN 生态实战:`msprof-performance-analyzer` 如何精准定位 AI 应用性能瓶颈
人工智能
芷栀夏9 分钟前
深度解析 CANN 异构计算架构:基于 ACL API 的算子调用实战
运维·人工智能·开源·cann
威迪斯特9 分钟前
项目解决方案:医药生产车间AI识别建设解决方案
人工智能·ai实时识别·视频实时识别·识别盒子·识别数据分析·项目解决方案
笔画人生10 分钟前
# 探索 CANN 生态:深入解析 `ops-transformer` 项目
人工智能·深度学习·transformer
feasibility.12 分钟前
AI 编程助手进阶指南:从 Claude Code 到 OpenCode 的工程化经验总结
人工智能·经验分享·设计模式·自动化·agi·skills·opencode
程序猿追12 分钟前
深度剖析 CANN ops-nn 算子库:架构设计、演进与代码实现逻辑
人工智能·架构
灰灰勇闯IT14 分钟前
领域制胜——CANN 领域加速库(ascend-transformer-boost)的场景化优化
人工智能·深度学习·transformer