【MATLAB例程】二维萨维茨基-戈莱滑动窗口滤波(SG)图像降噪与质量评价,附MATLAB程序(m文件)的下载链接

在这里插入图片描述

完整代码,附下载链接

程序介绍

面向灰度图像局部噪声抑制与细节保持问题,独立实现二维萨维茨基-戈莱滑动窗口滤波(SG)。程序在每个局部窗口内拟合二维二次多项式,并取窗口中心的拟合值作为输出,在平滑高斯噪声的同时保持局部斜率和曲率趋势。程序采用单个 .m 文件,方便学习、参数调试和二次开发。

例程定位

本目录只实现二维萨维茨基-戈莱滑动窗口滤波(SG),不通过算法名称变量或 switch/case 切换其他滤波器。核心滤波、测试图像、噪声和指标均写在同一个入口文件中,不依赖Image Processing Toolbox

算法原理

窗口坐标构成二次多项式设计矩阵。由于窗口形状固定,中心估计可以预先化为一个卷积核,再通过反射边界卷积处理整幅图像。

运行结果

  • 原始与含噪图像图:对比包含渐变、纹理、几何边缘和细线结构的原始测试图像与高斯噪声图像。
    在这里插入图片描述

  • 滤波结果与误差图:展示二维萨维茨基-戈莱滑动窗口滤波(SG)输出及其相对原始图像的绝对误差。
    在这里插入图片描述

  • 边缘剖面与质量指标图:对比典型行灰度剖面,并给出滤波前后的PSNR、局部SSIM和边缘保持指标。
    在这里插入图片描述

  • 命令行输出:直接输出图像与窗口尺寸、噪声类型、MSE、PSNR、局部SSIM、边缘指标、提升量、运行时间及有效值检查结果。
    在这里插入图片描述

MATLAB源代码

部分代码如下:

%% 二维萨维茨基-戈莱滑动窗口滤波(SG)图像处理例程
% 作者:matlabfilter,接定位与导航、滤波相关的matlab代码定制
% 2026-08-24/Ver1
% 单文件例程:生成测试图像与噪声,完成滤波、指标评价和结果显示。

clc; clear; close all;
rng(0);

%% 参数设置与测试图像
cfg.imageSize = 128;
cfg.windowSize = 5;
cfg.noiseDescription = '高斯噪声';
cfg.noiseSigma = 0.070;
originalImage = generateTestImage(cfg.imageSize);

%% 添加与算法场景匹配的噪声
noisyImage = clipImage(originalImage + cfg.noiseSigma * randn(size(originalImage)));

%% 执行二维萨维茨基-戈莱滑动窗口滤波(SG)
tic;
[filteredImage, diagnosticData] = applyCurrentFilter(noisyImage, cfg);
elapsedTime = toc;
filteredImage = clipImage(filteredImage);

assert(isequal(size(filteredImage), size(originalImage)), '滤波结果尺寸与输入不一致。');
assert(all(isfinite(filteredImage(:))), '滤波结果包含NaN或Inf。');
assert(all(filteredImage(:) >= 0 & filteredImage(:) <= 1), '滤波结果超出[0,1]范围。');

%% 手工计算图像质量指标
noisyMetrics = evaluateImageQuality(originalImage, noisyImage);
filteredMetrics = evaluateImageQuality(originalImage, filteredImage);
printResults(cfg, noisyMetrics, filteredMetrics, elapsedTime);

%% 绘图:图窗保持纯净,源码不保存图片或添加水印
plotOriginalAndNoisy(originalImage, noisyImage, cfg);
plotFilteredAndError(originalImage, filteredImage);
plotProfileAndMetrics(originalImage, noisyImage, filteredImage, ...
    noisyMetrics, filteredMetrics);


%% 本地函数

完整代码下载链接:https://download.csdn.net/download/callmeup/93325652

如需帮助,或有导航、定位滤波相关的代码定制需求,可从个人主页左侧联系我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MATLAB卡尔曼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值