图像噪点消除

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

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

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

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

均值滤波是一种经典的线性滤波方法。
核心思想:在图像上使用一个指定大小的卷积核(滤波器),计算该卷积核覆盖区域内所有像素的平均****值,并将这一平均值赋给该区域中心像素。
均值滤波的主要步骤包括:
卷积核:卷积核是一个矩形区域。均值滤波像素值对最终结果的贡献是均等的。
滑动过程:卷积核会从图像的左上角开始,逐步在图像上滑动,计算出每个位置的新像素值,直到
覆盖整幅图像。
当卷积核移动到图像边缘时,可能会遇到超出图像范围的情况。这时需要进行边界填充,以确保卷积核能够覆盖边缘的像素。
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//边界处理方式
    )
相关推荐
小柯南敲键盘3 小时前
跨马翻译:图片翻译软件批量处理,跨境电商视频字幕AI智能抠图
人工智能·python·音视频
EasyCVR3 小时前
空地联动!RTMP/GB28181/RTSP/ONVIF视频汇聚平台EasyCVR地质灾害视频监测+无人机巡检救援救援方案
人工智能·easycvr·国标gb28181
程序猫.3 小时前
双指针问题
java·数据结构·算法
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(59):Synapse——让相关记忆沿情景—语义图被逐步激活
论文阅读·人工智能·学习·开源·github
格林威3 小时前
C#图像夜间识别率提升:使用OpenCvSharp和Halcon融合DeepSORT实现复杂场景下准确识别
开发语言·人工智能·数码相机·机器学习·计算机视觉·c#·视觉检测
袁俪3 小时前
智能体搭建
人工智能
开源量化GO3 小时前
先确认策略想法能不能变成规则
人工智能·python
luckystar513~3 小时前
Hermes 实战 :调度——cron 6:00 无人值守跑日报
人工智能·agent·智能体·hermes·实战专栏
心抵鹊3 小时前
力扣每日一题:计算右侧小于当前元素的个数(hard)
算法·leetcode
3A Cloud3 小时前
Huashu Design:把 AI Agent 变成一间以 HTML 为画布的设计工作室
前端·人工智能·html