数字图像处理实验九维纳滤波

1、运动模糊图像

2、逆滤波结果

3、计算噪信比K值滤波结果

4、调节噪信比K参数,显示不同的维纳滤波结果

clear;
clc;
close all;

f = checkerboard(8);                  %调用棋盘板图像

%%将图像的数据格式转换为double型
f=im2double(f);                       %将灰度图像由uint8转为double

%%建立退化模型
PSF = fspecial('motion',27,55);          %对图像进行27个像素点,55度角的模糊建模                     
gb = imfilter(f,PSF,'circular');         %将图像与退化模型叠加 

%%添加噪声
noise = imnoise(zeros(size(f)),'gaussian',0,0.0001);%高斯噪声。均值为0,方差0.002  
g = gb + noise;                         %添加噪声的退化图像

%%当K=0时,相当于直接逆滤波
fr1 = deconvwnr(g,PSF);    %%逆滤波 {维纳滤波(退化图像,点扩散函数(退化模型),噪信比为0)}

%%通过比率进行维纳滤波
Sn = abs(fft2(noise)).^2;                %噪声功率谱                   
nA = sum(Sn(:))/numel(noise);            %噪声平均功率                   
Sf = abs(fft2(f)).^2;                    %图像功率谱                   
fA = sum(Sf(:))/numel(f);                %图像平均功率   
K = sum(noise(:).^2)/sum(f(:).^2);       %计算常数比率K                 
fr2 = deconvwnr(g,PSF,K);                %使用常数比率的维纳滤波复原

%%通过将自相关函数进行维纳滤波
NCORR = fftshift(real(ifft2(Sn)));       %噪声自相关函数
ICORR = fftshift(real(ifft2(Sf)));       %原图像自相关函数
fr3 = deconvwnr(g,PSF,NCORR,ICORR);      %使用自相关函数的滤波结果

%%形成一个3×3得窗口
subplot(2,3,1);imshow(f);title('原图像');
subplot(2,3,2);imshow(gb);title('运动模糊图像');
subplot(2,3,3);imshow(noise,[ ]);title('高斯噪声图像');
subplot(2,3,4);imshow(fr1);title('逆滤波结果(有噪声)');
subplot(2,3,5);imshow(fr2);title('计算噪信比K值滤波结果');
subplot(2,3,6);imshow(fr3);title('使用自相关函数的维纳滤波结果');

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

放氮气的蜗牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值