zoukankan      html  css  js  c++  java
  • 实现图像复原的相关MATLAB程序举例

    1.维纳滤波复原


    I=checkerboard(8);
    noise=0.1*randn(size(I));
    PSF=fspecial('motion',21,11);
    Blurred=imfilter(I,PSF,'circular');
    BlurredNoisy=im2uint8(Blurred+noise);
    NP=abs(fftn(noise)).^2;
    NPOW=sum(NP(:)/prod(size(noise));
    NCORR=fftshift(real(ifftn(NP)));
    IP=abs(fftn(I)).^2;
    IPOW=sum(IP(:)/prod(size(noise));
    ICORR=fftshift(real(ifftn(IP)));
    ICORR1=ICORR(:,ceil(size(I,1)/2));
    NSR=NPOW/IPOW;
    subplot(221);imshow(BlurredNoisy,[]);
    title('模糊和噪声图像');
    subplot(222);imshow(deconvwnr(BlurredNoisy,PSF,NSR),[]);
    title('deconbwnr(A,PSF,NSR)');
    subplot(223);imshow(deconvwnr(BlurredNoisy,PSF,NCORR,ICORR),[]);
    title('deconbwnr(A,PSF,NCORR,ICORR)');
    subplot(224);imshow(deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1),[]);
    title('deconbwnr(A,PSF,NPOW,ICORR_1_D)');



    2.规则化滤波复原程序


    I=checkerboard(8);
    PSF=fspecial('gaussian',7,10);
    V=.01;
    BlurredNoisy=imnoise(imfilter(I,PSF),'gaussian',0,V);
    NOISEPOWER=V*prod(size(I));
    [J LAGRA]=deconvreg(BlurredNoisy,PSF,NOISEPOWER);
    subplot(221);imshow(BlurredNoisy);
    title('A=Blurred and Noisy');
    subplot(222);imshow(J);
    title('[J LAGRA]=deconvreg(A,PSF,NP)');
    subplot(223);imshow(deconvreg(BlurredNoisy,PSF,[],LAGRA/10));
    title('deconvreg(A,PSF,[],0.1*LAGRA)');
    subplot(225);imshow(deconvreg(BlurredNoisy,PSF,[],LAGRA/10))
    subplot(224);imshow(deconvreg(BlurredNoisy,PSF,[],LAGRA*10));
    title('deconvreg(A,PSF,[],10*LAGRA');

    3.Lucy-Richardson复原程序举例

    %Lucy-Richardson复原程序
    I=checkerboard(8);
    PSF=fspecial('gaussian',7,10);
    V=.0001;
    BlurredNoisy=imnoise(imfilter(I,PSF),'gaussian',0,V);
    WT=zeros(size(I));
    WT(5:end-4,5:end-4)=1;
    J1=deconvlucy(BlurredNoisy,PSF);
    J2=deconvlucy(BlurredNoisy,PSF,20,sqrt(V));
    J3=deconvlucy(BlurredNoisy,PSF,20,sqrt(V),[],WT);
    subplot(221);imshow(BlurredNoisy);
    title('A=Blurred and Noisy');
    subplot(222);imshow(J1);
    title('deconvlucy(A,PSF)');
    subplot(223);imshow(J2);
    title('deconvlucy(A,PSF,NI,DP)');
    subplot(224);imshow(J3);
    title('deconvlucy(A,PSF,NI,DP,[],WT)');

    4.盲去卷积复原

    %盲去卷积复原
    I=checkerboard(8);
    PSF=fspecial('gaussian',7,10);
    V=.0001;
    BlurredNoisy=imnoise(imfilter(I,PSF),'gaussian',0,V);
    WT=zeros(size(I));
    WT(5:end-4,5:end-4)=1;
    INITPSF=ones(size(PSF));
    FUN=inline('PSF+P1','PSF','P1');
    [J P]=deconvblind(BlurredNoisy,INITPSF,20,10*sqrt(V),WT,FUN,0);
    subplot(221);imshow(BlurredNoisy);
    title('A=Blurred and Noisy');
    subplot(222);imshow(PSF,[]);
    title('True PSF');
    subplot(223);imshow(J);
    title('Deblured Image');
    subplot(224);imshow(P,[]);
    title('Recovered PSF');
  • 相关阅读:
    windows 开发 数据模版 Itemtemp
    windows 8 获取用户账号信息
    从客户端中检测到有潜在危险的 Request.Form 值解决方法
    asp.net异步处理
    知道web.config 中的 urlMappings怎么用?
    .net c#日期时间函数大全
    设计模式学习心得之工厂类模式(一)简单工厂模式
    远程网页内容抓取
    TreeView数据绑定的方法(1)
    URLRewriter.dll asp.net伪静态
  • 原文地址:https://www.cnblogs.com/nktblog/p/2489607.html
Copyright © 2011-2022 走看看