利用Matlab进行图像的复原

该文章探讨了如何使用点扩散函数创建运动模糊图像,并通过修改参数调整模糊程度。接着,利用维纳滤波器deconvwnr对无噪声和有噪声的运动模糊图像进行复原重建。实验中,对比了不同参数设置下复原图像的效果,包括仅使用deconvwnr函数,以及考虑噪声信号功率比和相关系数的情况。
摘要由CSDN通过智能技术生成

本文章包含以下内容:

1.用点扩散(PSF)函数创建运动模糊图像,修改参数改变模糊程度。

a) 无噪声运动模糊图像

b) 有噪声运动模糊图像

2.用维纳滤波复原函数deconvwnr 对模糊图像进行复原重建。

   a) 对无噪声运动模糊图像用deconvwnr(I,PSF)进行复原;

b)对有噪声运动模糊图像用deconvwnr(I,PSF)、deconvwnr(I,PSF,NSR) 和deconvwnr(I,PSF,NCORR,ICORR)函数进行复原。

代码如下:

function U()
    clear;
    clc;
    img = im2double(imread('cameraman.tif'));  % 读取文件
    figure('Name','图像复原');  % 开一个叫图像复原的窗口
    subplot(2,4,1);imshow(img);title('cameraman.tif原图');   % 显示原图
    % 运动模糊(motion)滤波器================================================
    len = 28 ;
    theta = 14;
    PSF = fspecial('motion');    % 逆时针方向以theta角度运动了len个像素
    % 进行滤波=============================================================
    blurred = imfilter(img,PSF,'circular','conv');   % 无噪声模糊图像,
    % ‘circular’	边界之外的输入数组值是通过隐式假设输入数组具有周期性来计算的。
    % ‘conv’	使用卷积执行多维滤波
    % 添加噪声=============================================================
    % 这里没用imnoise为了方便后面信噪比和相关性的计算
    noisy=0.1*randn(size(img));
    blurrednoisy = blurred+noisy; % 有噪声模糊图像
    subplot(2,4,2);imshow(blurred);title('无噪声模糊图像');   % 显示无噪声模糊图像
    subplot(2,4,5);imshow(blurrednoisy);title('有噪声模糊图像');   % 显示有噪声模糊图像
    subplot(2,4,4);imshow(noisy);title('噪声图像');   % 显示噪声图像
    % 图像复原 ============================================================
    % deconvwnr(I,PSF,NSR)      deconvwnr(I,PSF,NCORR,ICORR)
    % NSR 噪声信号功率比 NCORR,ICORR噪声和原图像的自相关系数
    % 对无噪声运动模糊图像用deconvwnr(I,PSF)进行复原
    img_1 = deconvwnr(blurred,PSF);
    subplot(2,4,3);imshow(img_1);title('模糊复原图像');   % 模糊复原图像
    % 对有噪声运动模糊图像复原
    sn = abs(fft2(noisy)).^2;   % 噪声功率谱
    np = sum(sn(:)/numel(noisy));   % 噪声功率 
    sf = abs(fft2(img)).^2;   % 图像功率谱
    fp = sum(sf(:)/numel(img));   % 图像功率 
    NSR = np/fp;    % 噪声功率比
    NCORR = fftshift(real(ifft2(sn)));   % 噪音相关系数
    ICORR = fftshift(real(ifft2(sf)));    % 图像相关系数
    img_2 = deconvwnr(blurrednoisy,PSF);
    img_3 = deconvwnr(blurrednoisy,PSF,NSR);
    img_4 = deconvwnr(blurrednoisy,PSF,NCORR,ICORR);
    subplot(2,4,6);imshow(img_2);title('噪声模糊NSR=0复原');
    subplot(2,4,7);imshow(img_3);title('噪声模糊NSR复原');
    subplot(2,4,8);imshow(img_4);title('噪声模糊相关复原');
end

结果如下:

 

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值