matlab实现约束最小二乘方滤波

        尽管维纳滤波可以获得比逆滤波更好的效果,但也存在如下问题

        1)维纳波需要知道未退化图像和声的功率谱,而未退化图像与噪声的功率一般都是未知的。此时,可以近似,但是功率谱比的常数估计一般还是没有合适的解。 ​

        2)维纳滤波建立在最小化统计准则的基础上,它所得到的结果只是平均意义上的最优。 据此,本节将要介绍的约束最小二乘方滤波可以在一定程度上解决上述问题。其一约束最小二乘方滤波只要求噪声方差和均值的知识,而这些参数经常能通过一幅给定的退化图像计算出来;其二,约束最小二乘方滤波对于所处理的每一幅图像都能产生最优的结果。

close all;
clear all;
clc;
I=imread('lena.bmp');
I=rgb2gray(I);
I=im2double(I);
%运动模糊+高斯噪声
LEN=25;                                 %设置运动位移为7个像素
THETA=45;                               %设置运动角度为45°
PSF=fspecial('motion',LEN,THETA);       %建立二维仿真线性运动滤波器PSF
MF=imfilter(I,PSF,'circular','conv');   %用PSF产生退化图像
%高斯噪声
noise_var=0.01;noise_mean=0;
MFN=imnoise(MF,'gaussian',noise_mean,noise_var); 
%计算噪信比
NSR=noise_var/var(I(:));    
K1=deconvwnr(MFN,PSF,NSR);              %维也纳滤波
[M N]=size(I);
NOISEPOWER=M*N*(noise_var-noise_mean);
K2=deconvreg(MFN,PSF,NOISEPOWER);       %最小二乘方滤波

figure;
subplot(221),imshow(I);
subplot(222),imshow(MFN),title('运动模糊+高斯噪声');
subplot(223),imshow(K1),title('维也纳滤波');
subplot(224),imshow(K2),title('最小二乘方滤波');

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

安心不心安

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

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

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

打赏作者

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

抵扣说明:

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

余额充值