精华内容
下载资源
问答
  • matlab维纳滤波

    2017-10-14 16:28:22
    圆形轨迹加入噪声之后,将圆形轨迹分解为二个方向进行维纳滤波
  • Matlab维纳滤波理论及求解方法-(中文)第一章 维纳滤波.rar 附件中包含了维纳滤波理论及求解方法,有实例, 维纳滤波是实现最小均方差的经典滤波理论, 附件为ppt格式。有需要的下!
  • 点击查看:Matlab维纳滤波图像恢复 文件大小:2.8M 操作系统:Windows10旗舰版 开发工具:Matlab2016、2018、2020 开发语言:.m 简要概述: Matlab维纳滤波图像恢复

    点击查看:Matlab维纳滤波图像恢复

    文件大小:2.8M

    操作系统:Windows10旗舰版

    开发工具:Matlab2016、2018、2020

    开发语言:.m

    简要概述:

    Matlab维纳滤波图像恢复

    在这里插入图片描述

    展开全文
  • matlab实现维纳滤波盲反卷积迭代算法
  • matlab维纳滤波代码

    2009-05-19 22:32:12
    维纳滤波matlab代码,没有加VAD..........................
  • 维纳滤波的基本思路与传统的滤波器相似,不过在输入输出上有所不同,维纳滤波的输入为带噪语音信号,其输出为纯净语音信号的估计值。维纳滤波的数学表达如式所示。 2 DD算法:当前帧的先验信噪比的估计: 3 优化 ...

    一、简介

    维纳滤波的基本思路与传统的滤波器相似,不过在输入输出上有所不同,维纳滤波的输入为带噪语音信号,其输出为纯净语音信号的估计值。维纳滤波的数学表达如式所示。
    在这里插入图片描述
    在这里插入图片描述
    2 DD算法:当前帧的先验信噪比的估计:
    在这里插入图片描述
    3 优化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、源代码

    In=imread('pic.jpg');
    I=rgb2gray(In);
    figure;  
    subplot(2,2,1);
    imshow(In);
    title('原图像');
    subplot(2,2,2);
    imshow(I);
    title('灰度图像');
    [m,n]=size(I);
    F=fftshift(fft2(I)); 
    k=0.0005;
    H=zeros(m,n);
    for u=1:m
        for v=1:n    
            H(u,v)=exp((-k)*(((u-m/2)^2+(v-n/2)^2)^(5/6))); 
        end
    end
    G=F.*H; 
    I0=real(ifft2(fftshift(G))); 
    I1=imnoise(uint8(I0),'gaussian',0,0.001) ; 
    subplot(2,2,3);
    imshow(uint8(I1));
    title('模糊退化且添加高斯噪声的图像'); 
    F0=fftshift(fft2(I1));
    K=0.1;
    H1=zeros(m,n);
    H0=zeros(m,n);
    for u=1:m  
        for v=1:n     
            H(u,v)=exp(-k*(((u-m/2)^2+(v-n/2)^2)^(5/6)));  
            H0(u,v)=(abs(H(u,v)))^2;     
            H1(u,v)=H0(u,v)/(H(u,v)*(H0(u,v)+K)); 
        end
    end
    

    三、运行结果

    在这里插入图片描述

    四、备注

    版本:2014a

    展开全文
  • 压缩包里面有6个.m文件, blurring.m用于给图像增加抖动效果 inverseFilter.m是不考虑噪声的逆滤波 inverseFilterWithNoise.m是考虑噪声的逆滤波 wienerFiltering.m是维纳滤波 另外两个是辅助函数
  • 维纳滤波在图像恢复中的应用 维纳滤波实现图像恢复 基于MATLAB维纳滤波在图像恢复中的应用 基于MATLAB的图像复原
  • MATLAB程序分享实现图像中值均值维纳滤波源程序代码-MATLAB实现图像中值 均值 维纳滤波 源程序代码.rar 程序代码见附件,拿资料请顺便顶个贴~~ 如果下载有问题,请加我 qq 1530497909,给你在线传
  • 使用维纳滤波和 PSR 相位重建的语音增强 该算法使用维纳滤波估计基础语音信号的幅度谱,并重建语音信号的相位谱。 相位重建方法利用了谐波信号的音调同步表示 (PSR) 的某些特性,这使得相位谱的估计更快、更准确。 ...
  • 江 西 理 工 大 学 本 科 毕 业 设 计 论文 题 目基于MATLAB维纳滤波在图像恢复中的应用 1 摘 要 本文主要研究的是基于MATLAB维纳滤波在图像恢复中的应用, 在实际的 日常生活中人们要接触很多图像画面而在景物...
  • MATLAB实现维纳滤波

    2012-10-31 19:21:45
    MATLAB实现维纳滤波器包括作业题目、分析、源代码 中科院作业
  • 维纳滤波matlab实现

    2014-03-14 23:46:47
    维纳滤波matlab实现,通过读取相关图像数据,进行维纳滤波处理 ,显示处理后的图片
  • 维纳滤波Matlab程序

    热门讨论 2010-04-28 21:39:04
    维纳滤波,对维纳滤波进行Matlab仿真程序。
  • 维纳滤波 MATLAB程序

    2018-12-28 15:37:53
    维纳滤波的程序。有注解,能够实现对语音滤波并输出对比波形
  • 对已知图像进行模糊处理,用逆滤波和维纳滤波恢复图像,有Matlab程序和自己试验后的结果及简要的分析讨论
  • MATLAB源程序代码分享:MATLAB实现图像的中值滤波 均值滤波 维纳滤波
  • 图像逆滤波与维纳滤波matlab代码。包括测试图像与代码处理结果图。数字图像处理教材例子的复现。
  • Matlab实现维纳滤波法算法
  • 本文档包含有维纳滤波和逆滤波的MATLAB代码以及实验结果分析。
  • 维纳滤波的基本思路与传统的滤波器相似,不过在输入输出上有所不同,维纳滤波的输入为带噪语音信号,其输出为纯净语音信号的估计值。维纳滤波的数学表达如式所示。 2 DD算法:当前帧的先验信噪比的估计: 3 优化 ...

    一、简介

    维纳滤波的基本思路与传统的滤波器相似,不过在输入输出上有所不同,维纳滤波的输入为带噪语音信号,其输出为纯净语音信号的估计值。维纳滤波的数学表达如式所示。
    在这里插入图片描述
    在这里插入图片描述
    2 DD算法:当前帧的先验信噪比的估计:
    在这里插入图片描述
    3 优化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、源代码

    function varargout = wiener_filter(varargin)
    % WIENER_FILTER M-file for wiener_filter.fig
    %      WIENER_FILTER, by itself, creates a new WIENER_FILTER or raises the existing
    %      singleton*.
    %
    %      H = WIENER_FILTER returns the handle to a new WIENER_FILTER or the handle to
    %      the existing singleton*.
    %
    %      WIENER_FILTER('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in WIENER_FILTER.M with the given input arguments.
    %
    %      WIENER_FILTER('Property','Value',...) creates a new WIENER_FILTER or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before wiener_filter_OpeningFunction gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to wiener_filter_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
    
    % Edit the above text to modify the response to help wiener_filter
    
    % Last Modified by GUIDE v2.5 20-May-2009 10:04:40
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @wiener_filter_OpeningFcn, ...
                       'gui_OutputFcn',  @wiener_filter_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin & isstr(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
    
    
    % --- Executes just before wiener_filter is made visible.
    function wiener_filter_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to wiener_filter (see VARARGIN)
    axes(handles.axes1);
    img = checkerboard(8);
    imshow(img,[]);
    PSF = fspecial('motion',10,45);
    MF = imfilter(img,PSF,'circular');
    axes(handles.axes2);
    imshow(MF,[]);
    noise = imnoise(zeros(size(img)),'gaussian',0,0.01);
    MFN = MF+noise;
    axes(handles.axes3);
    imshow(MFN,[]);
    Sn = abs(fft2(MFN)).^2;
    Sf = abs(fft2(img)).^2;
    NCORR = fftshift(real(ifft2(Sn)));
    ICORR = fftshift(real(ifft2(Sf)));
    J = deconvwnr(MFN,PSF,NCORR,ICORR);
    axes(handles.axes4);
    imshow(J,[]);
    set(handles.len_edit,'string',10);
    set(handles.theta_edit,'string',45);
    set(handles.variance_edit,'string',0.01);
    % Choose default command line output for wiener_filter
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes wiener_filter wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    
    % --- Outputs from this function are returned to the command line.
    function varargout = wiener_filter_OutputFcn(hObject, eventdata, handles)
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Get default command line output from handles structure
    varargout{1} = handles.output;
    
    
    % --- Executes during object creation, after setting all properties.
    function image_pop_menu_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to image_pop_menu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    
    % Hint: popupmenu controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc
        set(hObject,'BackgroundColor','white');
    else
        set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
    end
    
    
    % --- Executes on selection change in image_pop_menu.
    %function image_pop_menu_Callback(hObject, eventdata, handles)
    % hObject    handle to image_pop_menu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    %LEN = str2num(get(handles.len_edit,'string'));
    %THETA = str2num(get(handles.theta_edit,'string'));
    variance = str2num(get(handles.variance_edit,'string'));
    val = get(hObject,'value');
    str = get(hObject,'string');
    switch str{val}
        case 'Lena'
            lena = [];
            lena = imread('lena.bmp');
            img = lena;
        case 'Saturn'
            saturn = [];
            load imdemos saturn
            img = saturn;
        case 'Quarter'
            quarter = [];
            load imdemos quarter
            img = quarter;
        case 'Flower'
            flower = [];
            load imdemos flower
            img = flower;
        case 'Circuit'
            circuit = [];
            load imdemos circuit
            img = circuit;
    end
    axes(handles.axes1);
    imshow(img);
    PSF = fspecial('motion',LEN,THETA);
    MF = imfilter(img,PSF,'circular','conv');
    axes(handles.axes2);
    imshow(MF);
    noise = imnoise(zeros(size(img)),'gaussian',0,variance);
    MF1 = double(MF);
    MFN = MF1+noise;
    axes(handles.axes3);
    imshow(uint8(MFN),[]);
    Sn = abs(fft2(MFN)).^2;
    Sf = abs(fft2(img)).^2;
    NCORR = fftshift(real(ifft2(Sn)));
    ICORR = fftshift(real(ifft2(Sf)));
    J = deconvwnr(MFN,PSF,NCORR,ICORR);
    axes(handles.axes4);
    imshow(J,[]);
    % Hints: contents = get(hObject,'String') returns image_pop_menu contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from image_pop_menu
    
    
    % --- Executes during object creation, after setting all properties.
    function len_edit_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to len_edit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc
        set(hObject,'BackgroundColor','white');
    else
        set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
    end
    
    
    
    function len_edit_Callback(hObject, eventdata, handles)
    % hObject    handle to len_edit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    

    三、运行结果

    在这里插入图片描述

    四、备注

    版本:2014a

    展开全文
  • 维纳滤波matlab实现

    2018-12-12 15:50:27
    维纳滤波matlab实现,清华大学数字图像处理作业,测试图像
  • 从构造大气湍流模型,运动模糊模型,gauss噪声模型开始,利用逆滤波和半径受限逆滤波还有维纳滤波处理,分成多个脚本函数文件易于调试,对比效果明显
  • Matlab时域维纳滤波的一个例子原创-实验报告.doc 题目要求: 假设一个点目标在x,y平面上绕单位圆做圆周运动,由于外界干扰,其运动轨迹发生了偏移。其中,x方向的干扰为均值为0,方差为0.05的高斯噪声;y方向...
  • 图像处理与分析作业:以lena图像为例,编程实现小波域维纳滤波.  首先使用高斯噪声叠加在原始图像上。  使用分解三次后进行维纳滤波再逐层返回,使用的是dwt2这个函数  [cA,cH,cV,cD]=dwt2(X,' bior2.2')  ...
  • 维纳滤波代码 用MATLAB实现的 代码较详细
  • MATLAB处理图像,具体包括原图像显示和噪声处理后图像,接着是维纳滤波后的还原图像,根据图像的实验结果,本程序具有较好的处理性能
  • 逆滤波和维纳滤波(附Matlab完整代码)

    万次阅读 多人点赞 2018-05-25 19:20:51
    一、实验目的 利用逆滤波和维纳滤波,对Lena加噪运动模糊降质图像进行复原,比较不同参数选择对复原结果的影响。二、实验内容1) 输入Lena图像,对图像进行运动降质;降质模型:2) 对图像叠加高斯白噪声;3) 寻找...

    一、实验目的

            利用逆滤波和维纳滤波,对Lena加噪运动模糊降质图像进行复原,比较不同参数选择对复原结果的影响。

    二、实验内容

    1)     输入Lena图像,对图像进行运动降质;降质模型:


    2)     对图像叠加高斯白噪声;

    3)     寻找最佳逆滤波半径r;

    4)     逆滤波;

    5)     IFFT,展示结果;

    6)     再寻找最佳维纳滤波K值;

    7)     维纳滤波;

    8)     IFFT,展示结果。

    三、实验过程和数学原理

    1、逆滤波

            在无噪情况下,逆滤波是完美的:


        

            然而实际情况都有噪声:

            如果H(u,v)存在零点,那么在H(u,v)零点附近进行复原,会导致第二项变得很大很大,复原效果很差。

            理论上说,我们应该找出H(u,v)的所有零点,然后规避这些零点进行逆滤波。然而,降质模型零点十分分散(实际上是一条条斜线,实验中会看到),并且要作无数个圆区域,编程非常麻烦。

            实际编程中,我们采用如下思路:既然fft后的频谱中,信号频谱主要集中在低频分量,那么,我们用fftshift,将频谱移到中心;以频谱中心为圆心,规定一个圆区域,在圆内正常逆滤波;而圆外是大量的较小的噪声分量,不给任何机会,直接赋值为0。这样,我们就不需要考虑H(u,v)的零点影响了。

            此外,再通过PSNR最大准则,寻找最佳滤波半径R。实验结果如下:




            实验代码:

    function Imagerestoration
    %~~~~~~~~~~~~~~~~~~~~~~~~~~实验说明~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
    % 1、由于T=5,a=b=1效果太差太差,几乎无法看到复原现象,因此本实验采用T=1,a=b=0.02降质模型。
    % 2、作为实验讲义的补充,本实验加入均值为0、方差为1e-3的AGWN模型。
    %       若方差过大,逆滤波效果也不理想。
    % 3、一定要对fftshift后的频谱进行运动模糊处理!!!否则现象都是错误的!!!
    %                                                                                                                                       2018-5-19 by XING
    %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
    clear;close all;clc;
    fprintf('-------------------------------逆滤波实验-------------------------------\n');
    I = im2double(imread('lena512.bmp'));% [0,1]
    [M,~] = size(I);% square
    
    % Display the original image.
    figure;
    subplot(1,3,1), imshow(I);
    title('\fontsize{20}原始图像');
    
    %% Simulate a Motion Blur:H(u,v)
    T=1;a=0.02;b=0.02;
    v=[-M/2:M/2-1];u=v';
    A=repmat(a.*u,1,M)+repmat(b.*v,M,1);
    H=T/pi./A.*sin(pi.*A).*exp(-1i*pi.*A);
    H(A==0)=T;% replace NAN
    
    %% Get the blurred Image
    % Warning: fftshift should be written
    F=fftshift(fft2(I));
    FBlurred=F.*H;
    
    % Display the blurred image
    IBlurred =real(ifft2(ifftshift(FBlurred)));
    subplot(1,3,2), imshow(uint8(255.*mat2gray(IBlurred)));
    title('\fontsize{20}运动模糊图像');
    
    %% Deblur perfectly without Noise
    FDeblurred=FBlurred./H;
    IDeblurred=real(ifft2(ifftshift(FDeblurred)));
    subplot(1,3,3), imshow(uint8(255.*mat2gray(IDeblurred)));
    title('\fontsize{20}无噪情况下直接逆滤波');
    
    %% Simulate Noise Model
    noise_mean = 0;
    noise_var = 1e-3;
    noise=imnoise(zeros(M),'gaussian', noise_mean,noise_var);
    FNoise=fftshift(fft2(noise));
    
    %% Get the Blurred_Noised Image
    FBlurred_Noised=FNoise+FBlurred;
    
    % Display the blurred_noised image
    IBlurred_Noised=real(ifft2(ifftshift(FBlurred_Noised)));
    figure;
    subplot(1,3,1), imshow(uint8(255.*mat2gray(IBlurred_Noised)));
    title('\fontsize{20}加噪运动模糊图像');
    
    %% Deblur when Ignoring Noise
    FDeblurred2=FBlurred_Noised./H;
    FH1=abs(FDeblurred2);
    IDeblurred2=real(ifft2(ifftshift(FDeblurred2)));
    subplot(1,3,2), imshow(uint8(255.*mat2gray(IDeblurred2)));
    title ('\fontsize{20}有噪情况下直接逆滤波');
    
    %% Find out the best Radius
    maxPSNR=0;
    bestRadius=0;
    tic;
    for Radius=33:1e-2:34 % 预实验bestr约为33.8左右
        FDeblurred2=zeros(M);
        
        for a=1:M
            for b=1:M
                if sqrt((a-M/2).^2+(b-M/2).^2)<Radius
                    FDeblurred2(a,b)=FBlurred_Noised(a,b)./H(a,b);
                end
            end
        end
        
        % Calculate PSNR and compare with the best
        IDeblurred2=real(ifft2(ifftshift(FDeblurred2)));
        PSNR=PSNRcal(IDeblurred2,I);
        if PSNR>maxPSNR
            maxPSNR=PSNR;
            bestRadius=Radius;
        end
    end
    
    fprintf(' 最佳滤波半径:            %.1f\n', bestRadius);
    fprintf(' 最大PSNR:              %d  dB\n', round(maxPSNR));
    fprintf(' 寻找最佳半径耗时:     %.1f s\n', toc);
    
    % Displace the best Restoration
    FDeblurred2=zeros(M);
    for a=1:M
        for b=1:M
            if sqrt((a-M/2).^2+(b-M/2).^2)<bestRadius
                FDeblurred2(a,b)= FBlurred_Noised(a,b)./H(a,b);
            end
        end
    end
    
    FH2=abs(FDeblurred2);
    
    IDeblurred2=real(ifft2(ifftshift(FDeblurred2)));
    subplot(1,3,3), imshow(uint8(255.*mat2gray(IDeblurred2)));
    title(['\fontsize{20}最佳半径为 ', num2str(bestRadius),'的圆内逆滤波']);
    
    fprintf('\n 半径逆滤波原理: \n');
    fprintf(' 1:通过fft2,使有效信号集中在低频区域,噪声集中在高频区域;\n');
    fprintf(' 2:通过fftshift,把频谱移到矩阵中心;\n');
    fprintf(' 3:以矩阵中心为圆心,规定一个半径为r的圆域;圆外直接赋0,抑制噪声;圆内正常逆滤波。\n');
    fprintf(' 这比寻找、避开H(u,v)的零点滤波,编程要简单很多,效果也不错!\n');
    
    fprintf('\n 实验结果说明: \n');
    fprintf(' 1:对于无噪运动模糊图像,逆滤波复原几乎完美 ^ ^\n');
    fprintf(' 2:对于有噪运动模糊图像,直接逆滤波是灾难,取半径滤波效果尚可。\n');
    fprintf('\n 同时说明: PSNR是多么不靠谱!\n');
    
    figure;
    subplot(1,2,1),imshow(im2double(uint8(FH1)));
    title ('\fontsize{20}有噪情况下直接逆滤波得到的图像频谱');
    subplot(1,2,2),imshow(im2double(uint8(FH2)));
    title ('\fontsize{20}圆内逆滤波得到的图像频谱');
    
    fprintf('\n~~~~~~~程序已暂停;按任意键进行维纳滤波实验~~~~~~~~\n');
    pause;

    2、维纳滤波

          理想维纳滤波器为:


          实际应用中,NSR难以被精确计算。因此,我们常常设为K,并寻找最佳K值。

          实验结果:


            实验代码:

    %% Deblur Image Using Wiener Filter
    fprintf('\n-------------------------------维纳滤波实验-------------------------------\n');
    fprintf(' 根据大量实验,我发现PSNR无法作为寻找最佳K值的标准:\n');
    fprintf(' 1:参数K将会停留在K=0处,即逆滤波;\n');
    fprintf(' 2:最大PSNR达到70dB以上,实际图像质量极差!\n');
    fprintf('\n 因此,我通过观察,选择了最佳K=0.05~\n');
    fprintf(' ps. 程序中保留了根据PSNR寻找K值的代码,有兴趣可以尝试 ^ ^\n');
    % Display the blurred_noised image again
    figure();
    subplot(1,3,1);
    imshow(uint8(255.*mat2gray(IBlurred_Noised)));
    title('\fontsize{20}加噪运动模糊图像');
    
    % Deblur with theoretic NSR
    buf=(abs(H)).^2; % Notice '.' !!!!!!!!
    NSR=FNoise./F;
    FDeblurred3=FBlurred_Noised./H.*buf./(buf+NSR);
    IDeblurred3=real(ifft2(ifftshift(FDeblurred3)));
    subplot(1,3,2), imshow(uint8(255.*mat2gray(IDeblurred3)));
    title('\fontsize{20}K=NSR的理论维纳滤波');
    
    % Find out the best K
    % tic;
    % maxPSNR=0;
    % beskK=0;
    % for K=0:1e-2:1
    %     FDeblurred2=zeros(M);
    %     FDeblurred3=FBlurred_Noised./H.*buf./(buf+bestK);
    %     IDeblurred3=real(ifft2(ifftshift(FDeblurred3)));
    %     
    %     % Calculate PSNR and compare with the best
    %     PSNR=PSNRcal(IDeblurred3,I);
    %     if PSNR>maxPSNR
    %         maxPSNR=PSNR;
    %         bestK=K;
    %     end
    % end
    % 
    % fprintf(' 最佳K值:                 %.2f\n', bestK);
    % fprintf(' 最大PSNR:             %d dB\n', round(maxPSNR));
    % fprintf(' 寻找最佳K值耗时:   %.1f s\n', toc);
    
    % Deblur with best K
    bestK=0.05;
    FDeblurred3=FBlurred_Noised./H.*buf./(buf+bestK);
    IDeblurred3=real(ifft2(ifftshift(FDeblurred3)));
    
    % Display the best restored Image
    subplot(1,3,3), imshow(uint8(255.*mat2gray(IDeblurred3)));
    title(['\fontsize{20}实际最佳K= ', num2str(bestK),'的维纳滤波']);
    
    fprintf('                                                                          Written by XING\n');
    fprintf('                                                                        2018-5-19 Beijing\n');
    end

            实验中用到的PSNR计算子程序:

    function PSNR=PSNRcal(I,I2)
    h=512;w=512;
    B=8;% 编码一个像素用8个二进制位
    MAX=2^B-1;% 图像有多少灰度级
    MES=sum(sum((I-I2).^2))/(h*w);% 均方差
    PSNR=20*log10(MAX/sqrt(MES));% 峰值信噪比
    end
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 356
精华内容 142
关键字:

matlab维纳滤波

matlab 订阅