图像降噪学习笔记-局部滤波器

基础不是很牢靠,开始从新学习图像降噪部分

图像降噪中的空间域滤波算法主要通过对图像像素及其邻域进行操作,以平滑噪声或强化信号的方式来改善图像质量。以下是一些常用的空间域滤波算法及其详细介绍和应用场景:

1. 均值滤波器(Mean Filter)

基本原理: 均值滤波是最简单的线性平滑滤波器之一。它对图像中每一个像素点,取其周围邻域内所有像素值的算术平均值作为新的像素值。这样做的目的是通过平均化消除局部随机噪声,但同时也可能导致图像细节的模糊。

一般采用3*3,5*5,7*7的局部区域像素值进行求和;

应用场景: 适用于去除图像中均匀分布的高斯白噪声或椒盐噪声,常用于预处理阶段,尤其是对噪声水平较低、对细节保留要求不高的图像。

2. 中值滤波器(Median Filter)

基本原理: 中值滤波是一种非线性滤波方法,它对目标像素邻域内的像素值进行排序,取中间值(中位数)替代原像素值。由于中位数不受极端值(如噪声)的影响,中值滤波能有效抑制椒盐噪声和脉冲噪声,同时对边缘和细节保留较好。

获取局部区域像素值后进行排序,取中位数即可。

应用场景: 适用于去除图像中的椒盐噪声、脉冲噪声或孤立的亮暗点,特别适合保持边缘清晰度的图像降噪,如医学影像、文档扫描、卫星图像等。

3. 高斯滤波器(Gaussian Filter)

基本原理: 高斯滤波器是一种线性平滑滤波器,它采用二维高斯函数作为卷积核。高斯函数在空间上呈正态分布,中心处权重最大,随着距离增加权重逐渐减小。通过高斯滤波器对图像进行卷积,可以实现对图像的平滑处理,同时对不同尺度的噪声具有良好的抑制效果。

设计好卷积核与标准差;

应用场景: 适用于去除图像中的高斯噪声、平滑图像细节以及作为其他图像处理算法(如边缘检测、特征提取)的预处理步骤。广泛应用于自然图像处理、医学影像、遥感图像等领域。

4. 双边滤波器(Bilateral Filter)

基本原理: 双边滤波器是一种非线性滤波器,它结合了空间域邻近度和值域相似度两个权重。空间权重依赖于像素之间的欧氏距离,值域权重依赖于像素灰度值的差异。这种设计使得滤波过程中既能保持边缘清晰又能有效平滑噪声。

需要设计好空间与值域高斯函数的标准差;

应用场景: 适用于保留边缘细节的同时平滑图像,尤其适用于去除光照变化引起的噪声、保留纹理细节的图像降噪,如人像美化、医学影像增强、计算机视觉中的预处理等。

5. 导向滤波器(Guided Filter)

基本原理: 导向滤波器是一种基于局部线性模型的滤波器,它利用一个引导图像(通常为原始图像或其边缘信息)来指导滤波过程。滤波器在保持边缘和结构的同时,能有效平滑噪声,且计算效率较高。

初始设计的边缘信息很重要;

应用场景: 适用于需要结合边缘信息进行精确降噪的场景,如图像去雾、超分辨率重建、图像增强等,特别是在保持边缘和结构清晰度的同时进行细节平滑。

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
S-L滤波器是一种用于图像处理的线性滤波器,可以用于平滑和降噪。下面是在MATLAB中实现S-L滤波器的代码: ```matlab function [output_image] = sl_filter(input_image, window_size, lambda) % 转换为灰度图像 if size(input_image,3) == 3 input_image = rgb2gray(input_image); end % 将图像转换为双精度类型 input_image = im2double(input_image); % 获取图像大小 [height, width] = size(input_image); % 设置输出图像初始值为0 output_image = zeros(height, width); % 计算窗口大小的一半 half_window = floor(window_size/2); % 循环遍历图像像素 for i = 1:height for j = 1:width % 获取当前像素的窗口 window = input_image(max(i-half_window,1):min(i+half_window,height), max(j-half_window,1):min(j+half_window,width)); % 计算窗口的标准差 sigma = std2(window); % 计算S-L滤波器的权值 weight = 1 / (1 + (sigma/lambda)^2); % 计算输出像素值 output_image(i,j) = sum(sum(window .* weight)) / sum(sum(weight)); end end % 将输出图像的像素值限制在0-1之间 output_image(output_image < 0) = 0; output_image(output_image > 1) = 1; % 将输出图像转换为uint8类型 output_image = uint8(output_image * 255); end ``` 函数需要三个输入参数:输入图像、窗口大小和λ值。输出图像是经过S-L滤波器处理后的图像。在函数中,我们首先将输入图像转换为灰度图像,并将其转换为双精度类型。然后,我们循环遍历图像像素,并计算每个像素的S-L滤波器权值。最后,我们计算输出像素值,并将输出图像的像素值限制在0-1之间。最后,我们将输出图像转换为uint8类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空久安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值