精华内容
下载资源
问答
  • 运动图像成像容易导致模糊,基于MATLAB可以做运动图像的修复处理。这个文档给出了具体实现方法。可以参考使用。
  • matlab运动模糊图像复原 实验报告

    热门讨论 2011-05-08 17:49:44
    matlab运动模糊图像复原matlab运动模糊图像复原matlab运动模糊图像复原matlab运动模糊图像复原matlab运动模糊图像复原
  • 基于matlab模糊图像复原,复原模糊图像为运动模糊图像,复原采用3种方法,维纳滤波 最小二乘 RC。
  • 简单运动模糊图像复原GUI设计,我的运行环境2014b,内附使用说明和汇报PPT,可进行读取图片、撤销上一步操作、保存图片、运动模糊、图像复原(包括直接逆滤波、维纳滤波、Lucy-Richardson算法、约束最小二乘法、盲去...
  • 《数字图像处理-MATLAB运动模糊图像复原 图像复原技术也常被称为图像恢复技术图像复原技术能够去除或减轻在获取数字图像过程中发生的图像质量下降(退化)问题,从而使图像尽可能地接近于真实场景
  • 运动模糊图像复原算法 五. 实验结果和对比分析 六. 总结与展望 简介 一. 研究背景 由于成像的相对移动如相机的抖动被摄物体的高速移动等使图像产生的运动模糊是常见的图像降质原因. 根据运动模糊的特点通过一定...
  • 有段时间需要做图像复原的研究,就用了平时用的比较多的MATLAB平台。利用的是MATLAB的工具箱,但各个参数的设置我都研究了一段时间,也参考了萨冈雷斯的关于图像处理的著作。程序前半部分不含噪声用了四种滤波法,后...
  • 申明:本资源提供matlab版的图像复原常用的运动模糊仿真图像生成程序,未经授权,仅供研究使用,不得使用于任何商用场合。 仿真程序提供2种途径:空域仿真方法和频域仿真方法。
  • 图像退化的因素各种各样,但最主要的就是在得到图像,传送过程和保存的时候导致的,还有由于形成图像系统的不同、想要拍的物体和相机之间的相对运动,一些空气媒介等等都会让图像变得模糊不清楚、混入噪声、照片对比...

    图像退化

    图像退化的因素各种各样,但最主要的就是在得到图像,传送过程和保存的时候导致的,还有由于形成图像系统的不同、想要拍的物体和相机之间的相对运动,一些空气媒介等等都会让图像变得模糊不清楚、混入噪声、照片对比度也有所降低等种种现象。当下,通常见到的退化图像一般是运动的模糊类型、高斯噪声的模糊类型和离焦的模糊类型,有时还有多种模糊混合在一块的情况。而且因为噪声一般都会存在于各种情况当中,因此模糊的图像里面往往都存在噪声的这一影响因素。

    图像退化的时候,有两个因素会影响这一过程,其一就是退化的模糊函数,也就是所说的点扩散函数。其二是噪声的这个因素,先是建立起一个数学表达式的模型,在这里面找到想要知道的一些先验知识,最后把图像进行还原,想要找到并确定先验知识就是一个难点同时也是重点,对图像噪声的确定和模糊函数的确立最主要。点扩散函数想要得到确定那就得先知道图像为什么退化,知道其原因和退化的过程,才能进一步了解其点扩散函数,进而对图像的模糊函数展开估计,知道这些以后就能够结合各种优秀算法对图像进行还原了,把图像退化的这个过程反向思考,逆转过来达到原图像的恢复。

    图像模糊类型识别

    点扩散函数会随着图像模糊种类的不同而变化,想要把模糊参数更精确的找出来,那么把不同的图像模糊类型进行分类处理,就可以根据不同的类型做出相应不同的处理办法,不一样的点扩散函数就直接求取不同的参数即可。比如,如果将运动模糊类型和散焦模糊类型的图像分开来看的话,运动的这类图像找到其运动模糊方向和运动模糊长度就可以了。其中对于模糊类型的判别,傅里叶变换是一个很重要的依据。
    不同类型图像的傅里叶变换频域图像:
    在这里插入图片描述 同样还有散焦图像:
    在这里插入图片描述

    模糊图像的还原

    运动模糊

    在这里插入图片描述还原效果图:

    在这里插入图片描述还原前,观察其频域图像:

    在这里插入图片描述
    发现它是水平方向上的运动模糊(其相间条纹是竖直的),故采用’motion‘掩模进行复原,运动模糊的LEN可以自己实验得到:

    clc;
    clear;
    close all;
    
    [img,map]=imread('2.bmp');
    img=ind2gray(img,map);
    figure,imshow(img),title('原图');
    psf=fspecial('motion',40,0);
    res1=deconvblind(img,psf);
    figure,imshow(res1),title('盲去卷积10次');
    res2=deconvblind(img,psf,20);
    figure,imshow(res2),title('盲去卷积20次');
    res3=deconvblind(img,psf,30);
    figure,imshow(res3),title('盲去卷积30次');
    res4=deconvblind(img,psf,50);
    figure,imshow(res3),title('盲去卷积50次');
    

    散焦模糊

    在这里插入图片描述还原效果图:

    在这里插入图片描述在复原前,观察图像频域图像:
    在这里插入图片描述故能判断这是一个散焦图像(频域图像中间是圆),故采用’disk‘掩模进行复原,模糊半径可以自己实验得到。

    clc;
    clear;
    close all;
    
    [img,map]=imread('3.bmp');
    img=ind2gray(img,map);
    figure,imshow(img),title('原图');
    psf=fspecial('disk',8);
    res1=deconvblind(img,psf);
    figure,imshow(res1),title('盲去卷积10次');
    res2=deconvblind(img,psf,20);
    figure,imshow(res2),title('盲去卷积20次');
    res3=deconvblind(img,psf,30);
    figure,imshow(res3),title('盲去卷积30次');
    res4=deconvblind(img,psf,50);
    figure,imshow(res3),title('盲去卷积50次');
    
    展开全文
  • matlab图像与视频实用案例详解pdf+源码、模糊图像复原源码加图片、运动图像点扩散函数
  • 模糊图像复原

    2011-09-16 10:43:06
    图像线性滤波复原 运用MATLAB软件,并结合维纳滤波法对各种模糊图像进行复原重建 创建一个仿真运动模糊的PSF来模糊图像。 (2)利用deconvwnr函数对无噪声模糊图像进行复原重建 (3)利用deconvwnr函数对有噪声模糊...
  • 基于MATLAB运动模糊图像恢复技术王洪珏(温州医学院,浙江,温州)摘要:MATLAB是当今流行的科学计算软件,它具有很强的数据处理能力。在其图像处理工具箱中有四个图像复原函数,本文就这些函数的算法原理、运用和...

    基于MATLAB的运动模糊图像恢复技术

    王洪珏

    (温州医学院,浙江,温州)

    摘要:MATLAB是当今流行的科学计算软件,它具有很强的数据处理能力。在其图像处理工具箱中有四个图像复原函数,本文就这些函数的算法原理、运用和恢复处理效果结合实力效果作简要对比讨论。

    0 前言

    图像复原时图像处理中一个重要的研究课题。图像在形成、传输和记录的过程中,由于传感器的噪声、摄像机未对好焦、摄像机与物体相对运动、系统误差、畸变、噪声等因素的影响,使图像往往不是真实景物的完善影像。这种图像在形成、传输和记录过程中,由于成像系统、传输介质和设备的不完善,使图像质量下降的过程称为图像的退化。图像复原就是通过计算机处理,对质量下降的图像加以重建或恢复的过程。

    图像复原过程一般为:找退化原因→建立退化模型→反向推演→图像复原

    1 算法产生概述

    开发算法时,首先要创建图像退化的线性数学模型,接着选择准则函数,并以适当的数学形式表达,然后进行数学推演。推演过程中通常要进行表达形式(即空域形式、频域形式、矩阵-矢量形式或变换域形式)的相互转换,最后得到图像复原算式。

    退化数学模型的空域、频域、矢量-矩阵表达形式分别是:

    g(x,y)=d(x,y)*f(x,y)+n(x,y)

    G(u,v)=D(u,v)•F(u,v)+N(u,v)

    g=HF+n

    其中:g(x,y)、d(x,y)、f(x,y)、n(x,y)分别为观测的退化图像、模糊函数、原图像、加性噪声,*为卷积运算符,(x=0,1,2,…,M-1),(y=0,1,2,…,N-1)。

    2 运动模糊的产生

    景物与相机之间的相对运动通常会使相机所成的像存在运动模糊。对于线性移不变模糊,退化图像u0可以写成,u0=h*u+n,其中h为模糊核,*表示卷积,n为加性噪声。由du/dt=0,文献[5]将这种运动模糊过程描述为波动方程:

    аu/аt+Vxаu/аx+ Vyаu/аy=0

    其中,Vx=dx/dt, Vy=dy/dt为x,y方向上的速度分量并且通过分析该方程的达朗贝尔解得出结论:

    vаu0/аx=u(x)-u(x-L)

    其中v= ,即退化图像沿运动方向的导数等于原始图像和其移位L后图像的差,这里L也可以认为是模糊长度。

    在MATLAB中,可以由fspecial函数创建一个确定类型的PSF(点扩散函数),然后使用这个PSF与原始图像进行卷积,从而得到退化(模糊)的图像。

    3 维纳滤波图像复原MATLAB实现

    MATLAB图像处理工具箱提供了维纳滤波图像复原函数deconvwnr,该函数的语法格

    下:

    J=deconvwnr(I,PSF)

    J=deconvwnr(I,PSF,NSR)

    J=deconvwnr(I,PSF,NCORR,ICORR)

    说明:

    J=deconvwnr(I,PSF)用于复原由于PSF以及可能的加性噪声卷积退化的图像I,该算法利用图像和噪声的相关矩阵,从估计图像与真实图像之间的最小均方误差意义上来说是最佳的。在没有噪声的情况下,维纳滤波器退化成理想的逆滤波器。

    J=deconvwnr(I,PSF,NSR)中的NSR是信噪功率比,NSR可以是标量,或者是和图像I一样大小尺寸的数组,NSR的默认值为0。

    J=deconvwnr(I,PSF,NCORR,ICORR)中的NCORR和ICORR分别是噪声和原始图像的自相关函数。NCORR和ICORR是不超过原始图像的尺寸和维数的任意尺寸和维数。一个N维的NCORR或ICORR数组对应每一维的自相关,如果PSF为向量,则向量NCORR或ICORR代表第一维的自相关函数;如果PSF为数组,则一维的自相关函数由PSF所有的非单维对称计算推得,标量NCORR或ICORR表示噪声或图像的功率。

    4 最小二乘方图像复原MATLAB实现

    MATLAB图像工具箱子提供了deconvreg函数,用来完成对模糊图像的约束最小二乘方复原。deconvreg函数语法格式如下:

    J=deconvreg(I,PSF)

    J=deconvreg(I,PSF,NOISEPOWER)

    J=deconvreg(I,PSF,NOISEPOWER,LRANGE)

    J=deconvreg(I,PSF,NOISEPOWER,LRANGE,REGOP)

    [J,LAGRA]=deconvreg(I,PSF,...)

    说明:

    J=deconvreg(I,PSF)用于复原由于PSF以及可能的加性噪声退化的图像,在保持图像平滑的条件下,该算法在估计图像和实际图像间的最小二乘方误差的意义上来说是最佳的。

    J=deconvreg(I,PSF,NOISEPOWER)中的NOISEPOWER是加性噪声功率,默认值是0;

    J=deconvreg(I,PSF,NOISEPOWER,LRANGE)中的向量LRANGE制定了寻找最佳解的范围,该算法就是在LRANGE的范围内找到最佳的拉格朗日乘数。如果LRANGE是标量,算法假定LAGRA已经给定并等于LRANGE,此时忽略NOISEPOWER的值。LRANGE默认的范围为[le-9

    le9];

    J=deconvreg(I,PSF,NOISEPOWER,LRANGE,REGOP)中的REGOP是约束自相关的规则化算子。拉普拉斯算子是保持图像平滑的默认算子。REGOP的维数不能超过图像的维数,任意非单维必须与PSF的非单维相对应。

    [J,LAGRA]=deconvreg(I,PSF,...)输出复原图像J以及拉格朗日乘数。

    5 Lucy-Richardson图像复原MATLAB实现

    当已知PSF,但对噪声的信息知道很少或者不知道噪声信息时,可以用Lucy-Richardson算法得到效果较好的复原图像。Lucy-Richardson采用迭代法,能够按照泊松噪声统计标准求出给定PSF卷积后,最有可能成为输入模糊图像的图像。MATLAB提供了deconvlucy函数,该函数通过加速收敛的迭代算法完成图像的复原。为了改善图像复原的质量,光学系统的特性也可以作为该函数的输入参数。deconvlucy函数的语法格式如下:

    J=deconvlucy(I,PSF)

    J=deconvlucy(I,PSF,NUMIT)

    J=deconvlucy(I,PSF,NUMIT,DAMPAR)

    J=deconvlucy(I,PSF,NUMIT,DAMPAR,WEIGHT)

    J=deconvlucy(I,PSF,NUMIT,DAMPAR,WEIGHT,READOUT)

    J=deconvlucy(I,PSF,NUMIT,DAMPAR,WEIGHT,READOUT,SUBSMPL)

    说明:

    J=deconvlucy(I,PSF用于恢复由PSF卷积和可能的加性噪声引起的退化的图像。该算法基于结果复原图像J的极大似然值,它是原始图像在泊松统计标准下的一个实例。

    J=deconvlucy(I,PSF,NUMIT)中的NUMIT用于指定deconvlucy函数迭代的次数,如果不指定,默认值为10。

    J=deconvlucy(I,PSF,NUMIT,DAMPAR)中的DAMPAR用于指定结果图像的偏差阈值,默认值为0;该参数指定了在收敛过程中,结果图像J与原始图像I背离的程度。

    J=deconvlucy(I,PSF,NUMIT,DAMPAR,WEIGHT)中的WRIGHT表示每个像素的加权值,它记录了每个像素反映相机记录的质量。

    J=deconvlucy(I,PSF,NUMIT,DAMPAR,WEIGHT,READOUT)中的READOUT制定了加性噪声值和读出相机噪声值,默认值为0。

    J=deconvlucy(I,PSF,NUMIT,DAMPAR,WEIGHT,READOUT,SUBSMPL)中的SUBSMPL描述了已知PSF时子采样次数,默认值为1。

    6 盲去卷积图像复原MATLAB实现

    盲去卷积复原实在不知道PSF的情况下,利用原始模糊图像,同时顾及PSF和清晰图像的一种恢复方法。MATLAB提供了盲去卷积复原函数deconvblind,该函数的语法格式如下:

    [J,PSF]= deconvblind(I,INITPSF)

    [J,PSF]= deconvblind(I,INITPSF,NUMIT)

    [J,PSF]= deconvblind(I,INITPSF,NUMIT,DAMPAR)

    [J,PSF]= deconvblind(I,INITPSF,NUMIT,DAMPAR,WEIGHT)

    [J,PSF]=

    deconvblind(I,INITPSF,NUMIT,DAMPAR,WEIGHT,READOUT)

    [J,PSF]=deconvblind(...FUN,P1,P2,...,PN)

    说明:

    [J,PSF]=

    deconvblind(I,INITPSF)利用最大似然算法去卷积图像I,返回复原图像J和复原的PSF。INITPSF表示PSF的估计值;参数NUMIT用于指定迭代的次数,默认值为10;

    参数DAMPAR用于指定结果图像的偏差阈值,默认值为0;参数WEIGHT制定了在图像复原中,采用输入图像I的哪些像素。参数READOUT用于指定相应的加性噪声值和读出相机的噪声值,默认为0。

    [J,PSF]=deconvblind(...FUN,P1,P2,...,PN)中的FUN是一个描述PSF附加约束的函数。

    附录:

    I=Imread('football.jpg');

    Len=30;

    Theta=45;

    PSF=fspecial('motion',Len,Theta);

    BlurredA=imfilter(I,PSF,'circular','conv');

    Wnrl=deconvwnr(BlurredA,PSF);¨

    BlurredD=imfilter(I,PSF,'circ','conv');

    INITPSF=ones(size(PSF));

    [K DePSF]=deconvblind(BlurredD,INITPSF,30);

    BlurredB=imfilter(I,PSF,'conv');

    V=0.02;

    Blurred_I_Noisy=imnoise(BlurredB,'gaussian',0,V);

    NP=V*prod(size(I));

    J=deconvreg(Blurred_I_Noisy,PSF,NP);

    BlurredC=imfilter(I,PSF,'symmetric','conv');

    V=0.002;

    BlurredNoisy=imnoise(BlurredC,'gaussian',0,V);

    Luc=deconvlucy(BlurredNoisy,PSF,5);

    subplot(2,3,1);imshow(I);title('原图像');

    subplot(2,3,6);imshow(PSF);title('运动模糊后图像');

    subplot(2,3,2);imshow(Wnrl);title('维纳滤波修复图像');

    subplot(2,3,3);imshow(J);title('最小二乘方修复图像');

    subplot(2,3,4);imshow(Luc);title('Lucy-Richardson修复图像');

    subplot(2,3,5);imshow(K);title('盲去卷积修复图像');

    参考文献:

    [1] 陈波.一种新的运动模糊图像恢复方法[J].深圳:深圳大学数学与计算机科学学院,2008.

    [2] 刘刚,王立香,董延.MATLAB数字图像处理[M].机械工业出版社,2010.

    [3] 康实.MATLAB的图像处理工具箱中图像复原函数的比较[J].广州:广东交通职业技术学院,2006.

    [4] 徐志影,李晋平.MATLAB及其在图像处理中的应用[J].徐州:中国矿业大学资源学院,2003.

    [5] CAI LIDONG.Traveling wave equation and restoration of

    motion blurred images[J]. Acta Automatica

    Sinica,2003,29(3):466-471.

    展开全文
  • 物理热力学上有这样的一条...而我们要的图像也是这样,图像在形成,传输,记录的过程中,受到多种因素的影响,图像的质量都会有所下降,比如图像模糊,失真,有噪声等。这一图像质量下降的过程称为图像的退化。...

    f02ab574b1e47743a5535e2108aa703d.png

    物理热力学上有这样的一条定理,孤立的热力学系统的熵不减少,总是增大或者不变。说明一个孤立系统不可能朝低熵的状态发展,即不会变得有序。这条法则放之四海而皆准,微观意义上来说就是:一切自然过程总是沿着分子热运动的无序性增大的方向进行。而我们要的图像也是这样,图像在形成,传输,记录的过程中,受到多种因素的影响,图像的质量都会有所下降,比如图像,模糊,失真,有噪声等。这一图像质量下降的过程称为图像的退化。而我们这里要讲的是图像的复原。

    首先我们画一张思维导图来理清这部分知识的脉络,其实我们前面文章讲的很多知识都是为这部分做铺垫。

    a3556faf031fc738a43c988582170395.png

    1.图像退化模型

    b49ffad86231eea977b2e24dd3ce44bd.png

    2.逆滤波复原法

    逆滤波复原法也叫做反向滤波法,其主要过程是首先将要处理的数字图像从空间域转换到傅里叶频率域中,进行反向滤波后再由频率域转换到空间域,从而得到复原的图像信号,

    3.非约束复原

    非约束复原方法仅仅要求某种优化准则为最小,不考虑其他任何约束的复原方法,常用的有非约束复原的代数方法和逆滤波复原法。所谓非约束复原的代数方法是用线性代数中的理论解决图像复原问题。通常选择最小二乘方作为优化准则的基础。

    4.有约束复原

    有约束图像复原技术除了要求了解关于退化系统的传递函数之外,还需要知道某些噪声的统计特征或噪声与图像的某些相关情况。根据所了解的噪声的先验知识的不同,采用不同的约束条件,从而得到不同的图像复原技术。最常见的方法有约束的最小二乘方约束复原原法维纳滤波法,有约束最小平方复原和去除由匀速运动引起的模糊。在最小二乘方约束复原法中,为了在数学上更容易处理,常常附加某种约束条件,形成不同的约束条件,就可得到不同类型的有约束最小二乘方图像复原方法。维纳滤波是假设图像信号可近似看成平稳随机过程的前提下,按照使输入图像和复原图像之间的均方误差达到最小的准则函数来实现图像复原的方法。

    5.图像复原示例演示

    a.逆滤波复原法实践

    明天更新

    b.最小二乘滤波滤波举例

    imfilter函数的基本语法如下

    B = imfilter(A,h)

    他的作用是:将滤镜应用到原始图像上,创建带有运动模糊的图像。注意,与其他过滤函数相比,imfilter的内存效率更高,因为它输出与输入图像数组相同的数据类型的数组。

    fspecial函数中,‘motion’指的是运动模糊算子

    d50f0f1ce102aeac83287827a869bfa6.png

    运行代码如下:

    a=imread('f.jpg');%读取原始图像
    LEN=31;
    %图像的模糊化
    THETA=11;
    PSF1=fspecial('motion',LEN,THETA);%创建运动模拟退化函数
    PSF2=fspecial('gaussian',10,5); 
    Blurred1=imfilter(I,PSF1,'circular','conv');%产生退化图像
    Blurred2=imfilter(I,PSF2,'conv');
    %模糊化图像加噪
    V=.002;
    BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V);
    BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V);
    subplot(1,3,1);imshow(I)
    title('原图像');
    %用真实的PSF函数和噪声强度作为参数进行图像复原
    NP=V*prod(size(I));
    regl=deconvreg(BlurredNoisy1,PSF1,NP); %使用约束的最小二乘方滤波
    reg2=deconvreg(BlurredNoisy2,PSF2,NP);
    subplot(1,3,2);imshow(regl);
    title('BlurredNoisyl—"motion"');
    subplot(1,3,3);imshow(reg2);title('BlurredNoisyl—"gaussian"');
    

    运行结果:

    76333e180e05f4a069b4491ca347797d.png

    c.维纳滤波复原举例

    a=imread('f.jpg');
    I=rgb2gray(a);
    LEN=31;
    THETA=11;
    PSF1=fspecial('motion',LEN, THETA);
    PSF2=fspecial('gaussian',10,5);
    Blurred1=imfilter(I,PSF1,'circular','conv');
    Blurred2=imfilter(I,PSF2,'conv');
    V=.002;
    BlurredNoisyl=imnoise(Blurred1,'gaussian',0,V);
    BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V);
    subplot(1,3,1);imshow(I);title('lena');
    wnr1=deconvwnr(Blurred1, PSFI);  %采用常系数对图像进行维纳滤波
    wnr2=deconvwnr(Blurred1,PSF2);
    subplot(1,3,2);imshow(wnr1);title('Restoredl,True PSF');
    subplot(1,3,3);imshow(wnr2);title('Restored2.True PSF');

    今天的文章就到这里,晚点有空会更新,关注微信公众号Asoul水云天课堂,获取更多推送,更多学习资料,原版图像处理电子书籍。

    展开全文
  • 基于MATLAB图像复原

    2011-03-06 19:42:23
    %无噪声运动模糊图像 C=deconvwnr(B,psf);%对B进行维纳滤波 figure(1); subplot(3,1,1); imshow(A); title('输入图像'); subplot(3,1,2); imshow(B); title('运动模糊'); subplot(3,1,3); imshow(C); title('无噪声...
  • 图像复原matlab代码

    2015-05-06 14:59:36
    数字图像处理 图像复原matlab代码 维纳滤波 逆滤波 运动模糊 大气湍流模糊
  • 运动模糊图像复原研究的整体思路主要是用matlab中的 imfilter()函数对图像进行线性空间滤波,产生运动模糊图像,建立退化模型→ 通过radon变换来获取模糊参数,即点扩散函数PSF→ 最后由估计得出的PSF再用维纳滤波...

          运动模糊图像复原研究的整体思路主要是用matlab中的 imfilter()函数对图像进行线性空间滤波,产生运动模糊图像,建立退化模型 → 通过radon变换来获取模糊参数,即点扩散函数PSF → 最后由估计得出的PSF再用维纳滤波对图像进行复原。由仿真实验得知,在已知PSF的情况下使用自相关函数的维纳滤波法对图像进行复原可以获得较好的复原效果,因此难点在于如何精确地估计运动模糊参数PSF。

    1、基本原理:

          点扩散函数PSF主要有两个重要参数:(1)模糊方向;(2)模糊尺度。本次主要是针对第一个参数----模糊方向的估计进行了研究。运动模糊方向是指运动方向与水平方向的夹角,由文献得知运动模糊主要是降低了运动方向的高频成分,而对其他方向的高频成分影响较小。常见的辨识方法有频域法和倒谱法,wym 两种方法都试过,仿真实验结果表两种方法各有好处。

          频域法的原理是将退化图像进行二维傅里叶变换,得到具有相互平行的规则明暗条纹的频谱。设暗纹与 x 轴正向夹角为 φ ,运动模糊方向与 x 轴夹角为 θ ,图像尺寸为 M × N,根据傅里叶变换的时频特性可以知道,可通过公式 tan(θ) = tan(φ − 90°) × M/N  得到模糊角度 θ ,因此只要通过 Radon 变换检测出频谱暗条纹与水平方向的夹角即可到运动模糊方向。

          倒谱法的主要原理是先将退化图像进行二维傅里叶变换,然后取对数,再进行反傅里叶变换得到退化图像的倒频谱,分离出退化图像的模糊信息,进而通过 Radon 变换得到运动模糊方向。

          Radon 变换是对频谱图上某一指定角度进行线积分,通过计算1°~180°的Radon变换得到180列的矩阵 R,每一列向量是图像在一个角度上沿一族直线的积分投影,因为积分直线束与频谱中的亮暗条纹平行,所以所得的投影向量中应有一个最大值,在频域法中最大值所对应的列数就等于模糊方向与x轴正方向水平夹角;在倒谱法中,最大值对应的列数 ±90°即为所求的模糊角度。

          具体理论和公式推导就不列出来了。。有兴趣的同学请 STFW。。(什么?不知道什么是 STFW? 请自行 STFW。。)

    2、算法实现:

      (1)频域法

        1)     对模糊图像进行灰度化,并计算其二维傅里叶变换;

        2)     对傅里叶变换值的动态范围进行压缩;

        3)     对压缩后的结果进行循环移位,使其低频成分居中;

        4)     用canny算子对压缩居中后的频谱图像进行边缘检测使其二值化;

        5)     将二值化后的频谱图做从1°~180°的radon变换;

        6)     找出radon变换后的矩阵中的最大值,求出其对应的列数 n;

        7)     通过公式 tan(θ) = tan(φ − 90°) × M/N  = tan(n − 90°) × M/N 求出运动模糊方向。

        实现代码:

        

     1 close all;
     2 clear all;
     3 
     4 %% 读入并显示图像
     5 filename = 'ex.jpg';
     6 I = imread(filename);
     7 
     8 figure
     9 imshow(uint8(I));
    10 title('原图');
    11 
    12 %% 生成运动模糊图像
    13 PSF = fspecial('motion',50, 120);
    14 g = imfilter(I, PSF, 'circular');
    15 figure 
    16 imshow(uint8(g));
    17 title('运动模糊图');
    18 
    19 %% 对运动模糊图像进行灰度化,并进行二维快速傅里叶变换,生成其频谱图
    20 gb = rgb2gray(g);
    21 figure
    22 imshow(uint8(gb));
    23 PQ = paddedsize(size(gb));
    24 F = fft2(gb, PQ(1), PQ(2));
    25 figure
    26 imshow(uint8(F));
    27 
    28 
    29 %% 将频谱压缩,居中
    30 H = log(1+abs(F));
    31 Hc = fftshift(H);
    32 figure
    33 imshow(uint8(Hc));
    34 
    35 %% 用canny算子将压缩居中后的频谱图进行边缘检测,二值化
    36 T = graythresh(Hc);
    37 bw=edge(Hc, 'canny', T);
    38 figure
    39 imshow(bw);
    40 
    41 %% 对二值化后的频谱图进行radon变换
    42 theta = 1:180;
    43 R = radon(bw, theta);
    44 figure
    45 imshow(R);
    46 
    47 %% 计算出通过radon变换求出的模糊角度
    48 MAX = max(max(R));
    49 [m, n] = find(R == MAX);
    50 [M,N] = size(Hc);
    51 beita = atan(tan(n*pi/180)*M/N)*180/pi;

     

         (2)倒谱法:

            

           1)     对模糊图像进行灰度化,并计算其二维傅里叶变换;

           2)     对傅里叶变换取对数,平方后再进行一次反傅里叶变换得到其倒频谱;

           3)     对倒频谱动态范围进行压缩;

           4)     对压缩后的结果进行循环移位,使其低频成分居中;

           5)     用canny算子对压缩居中后的频谱图像进行边缘检测使其二值化;

           6)     将二值化后的频谱图做从1°~180°的radon变换;

           7)     找出radon变换后的矩阵中的最大值,其对应的列数±90°即为所求的模糊方向。

           实现代码:

           

     1 close all;
     2 clear all;
     3 
     4 %% 读入并显示图像
     5 filename = 'ex.jpg';
     6 I = imread(filename);
     7 
     8 figure
     9 imshow(uint8(I));
    10 title('原图');
    11 
    12 %% 生成运动模糊图像
    13 PSF = fspecial('motion',80, 150);
    14 g = imfilter(I, PSF, 'circular');
    15 figure 
    16 imshow(uint8(g));
    17 title('运动模糊图');
    18 
    19 %% 对运动模糊图像进行灰度化,并进行二维快速傅里叶变换,生成其频谱图
    20 gb = rgb2gray(g);
    21 figure
    22 imshow(uint8(gb));
    23 PQ = paddedsize(size(gb));
    24 F = fft2(gb, PQ(1), PQ(2));
    25 figure
    26 imshow(uint8(F));
    27 
    28 %% 作出倒频谱
    29 F1 = log(1+abs(F));
    30 F2 = abs(F1).^2;
    31 F3 = real(ifft2(F2));
    32 figure
    33 imshow(uint8(F3));
    34 
    35 
    36 %% 将倒频谱压缩,居中
    37 H = log(1+abs(F3)); % 将倒频谱动态范围进行压缩
    38 Hc = fftshift(H); % 将压缩结果进行循环移位,使低频成分居中
    39 figure
    40 imshow(uint8(Hc));
    41 
    42 %% 通过阈值处理,边缘检测“canny”算子二值化倒频谱
    43 T = graythresh(Hc);
    44 bw=edge(Hc, 'canny', T);
    45 figure
    46 imshow(bw);
    47 
    48 %% 对倒频谱从1°到180°作radon变换,以求出模糊角度
    49 theta = 1:180;
    50 R = radon(bw, theta);
    51 figure
    52 imshow(R);
    53 
    54 %% 计算出通过倒频谱radon变换估计出的模糊角度
    55 MAX = max(max(R));
    56 [m, n] = find(R == MAX);
    57 if 90 < n <= 180
    58    beita = n - 90;
    59 else if 0 < n < 90
    60         beita = n + 90;
    61     else if n == [90;90] | n == [180;180]
    62             beita = n(1);
    63         end;

     

    7、仿真结果及算法评价:

         经过反复、多次、令人崩溃的调试参数,得出结论,模糊角度估计的精确度主要与边缘检测的阈值 T,运动模糊尺度和运动模糊方向这三个变量有关,经调试,阈值选取由graythresh 函数算出的全局阈值效果较好,而模糊尺度越小精度越低。

          频域法:当模糊尺度大于20像素时,模糊方向处于0°~90°时,检测效果很好,误差低于0.5°,但当模糊尺度低于20像素时,由于中心化处理致使频谱图中间出现的十字亮线使模糊方向常为90°或180°;而当模糊尺度大于90°时,估计到的模糊方向像脱缰的野马。。完全不知道怎么才能估计出如此恶心的数据的。。

         倒谱法:当模糊尺度大于40像素时,可以检测的模糊方向较大,基本从0°到180°都可以检测,不过误差在5°左右,模糊尺度小于40像素时误差就很大了,不能用作检测

     

                                                                                                                                           。。。。。。。。。。以上

     

    转载于:https://www.cnblogs.com/yomman/p/3424494.html

    展开全文
  • Matlab运动模糊,维纳滤波

    千次阅读 2020-11-10 11:19:37
    任选一幅彩色风景图片作为源图像,设置不同的模糊参数实现任一副图像运动模糊(fspecial,imfilter函数),再用imadd和imnoise给图像添加不同类型的噪声,显示噪声图像。 对1产生的图像分别进行复原,选用维纳滤波器...
  • 本次设计用到的是MATLAB软件然后进行仿真,对模糊图像建立退化模型,运用几种方法进行不同程度的复原,主要用了5种有关图像复原的方法,包括了维纳滤波算法、约束最小二乘滤波算法、Lucy-Richardson算法、循环边界...
  • Matlab图像退化与复原

    2021-01-31 15:30:29
    退化: % checkerboard产生测试板图像,第一个参数是每个正方形一边的像素数... % 运动模糊,PSF刚好为空间滤波器 gb = imfilter(f,PSF,'circular'); % 减少边界效应 noise = imnoise(zeros(size(f)),'gaussian',0,0
  • matlab数字图像处理(六)图像复原

    千次阅读 2020-06-09 02:43:55
    图像复原 图像退化/复原过程的模型 图像复原与图像增强不同,图像复原必须逼近原始图像。 图像在形成、记录、处理和传输过程中,由于成像 系统、...− 运动模糊:成像传感器与被拍摄景物之间的相对运动, 引起所成图像
  • 图像复原作业(matlab)

    2011-03-22 18:29:49
    本资源是采用matlab进行的图像复原,去除了运动模糊,并进行了对比度调整,使得图像接近真实图像。 1)利用高斯低通滤波器进行滤波,可以滤掉一些边缘和尖锐部分,但缺点是会使图像模糊,这些缺点在第3步中可以解决...
  • 本次设计用到的是MATLAB软件然后进行仿真,对模糊图像建立退化模型,运用几种方法进行不同程度的复原,主要用了5种有关图像复原的方法,包括了维纳滤波算法、约束最小二乘滤波算法、Lucy-Richardson算法、循环边界...
  • 数字图像处理-运动模糊&逆滤波&维纳滤波(Matlab)

    千次阅读 多人点赞 2020-11-05 20:19:13
    1-1 图像退化(均值滤波+椒盐噪声)1-2 直接逆滤波还原图像1-3 去掉噪声分量逆滤波还原图像2、对一幅灰度图像进行运动模糊并叠加高斯噪声,并采用维纳滤波进行复原。2-1 图像退化(运动模糊+高斯噪声)2-2
  • 运动模糊图像复原中经常要用到点扩散函数psf,该程序实现求取点扩散函数psf,即实现Matlab中的fspecial函数(求psf),你只要设定好参数length和angle就可以了,调用get_psf()- Motion-blurred images are often ...
  • 本次设计用到的是MATLAB软件然后进行仿真,对模糊图像建立退化模型,运用几种方法进行不同程度的复原,主要用了5种有关图像复原的方法,包括了维纳滤波算法、约束最小二乘滤波算法、Lucy-Richardson算法、循环边界...
  • I = imread(‘peppers.png’); %读取一幅图像’peppers.png’ ... %运动模糊函数的长度为31,角度为11° THETA = 11; PSF = fspecial(‘motion’,LEN,THETA); %产生运动模糊函数 Blurred = imfilter(I,PSF,‘ci.
  • 破损图像复原

    千次阅读 2019-09-28 12:47:51
    破损图像复原简介实验工具介绍-MATLAB实验步骤实验及结论 简介 因摄像机与物体相对运动,以及系统误差、畸变、噪声等因素的影响,使图像往往不是真是景物的完善映像,因而图像复原技术就此产生;在图像恢复中,需要...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

matlab运动模糊图像复原

matlab 订阅