您好, 访客   登录/注册

基于MATLAB的图像复原设计

来源:用户上传      作者:

  摘要:图像处理是一门迅速发展的学科,在大量领域有着极其广泛的应用。在景物成像的过程中可能出现的模糊、失真或噪声还有变形,会导致图像质量下降,从而降低了图形的科学性,也造成了经济损失。本文主要介绍使用matlab中的图像用户界面(GUI)程序设计的快速开发环境来搭建,然后在图形用户界面中添加控件和程序代码,从而实现各种算法的图像复原。
  关键词:图像复原;MATLAB;GUI
  中图分类号:G633.7 文献标识码:B文章编号:1009-9166(2009)011(c)-0087-01
  
  在实际的日常生活中,人们要接触很多图像,画面。而在景物成像这个过程里可能会出现模糊、失真或混入噪声,最终导致图像质量下降,这种现象称为图像“退化”。因此我们可以采取一些技术手段来尽量减少甚至消除图像质量的下降,还原图像的本来面目,这就是图像复原。引起图像模糊有多种多样的原因,举例来说有运动引起的,高斯噪声引起的,斑点噪声引起的,椒盐噪声引起的等等。
  图像复原的算法:数字图像复原问题实际上是在一定的准则下,采用数学最优化方法从退化的图像去推测原图像的估计问题。不同的准则及不同的数学最优化方法就形成了各种各样的算法。常见的复原方法有,逆滤波复原算法,维纳滤波复原算法,盲卷积滤波复原算法,约束最小二乘滤波复原算法等等。图像复原是图像处理中的重要技术。图像复原的可以在某种意义上对图像进行改进,既可以改善图像的视觉效果,又能够便于后续处理。图像复原在电子监视、医疗摄像等领域具有重要的用途。
  MATLAB既能进行科学计算,又能开发出所需的图形界面。图形用户界面(GUI)是由光标、菜单、按键、窗口、文字说明等对象构成的一个用户界面。
  MATLAB语言有着和其他高级语言不同的特点,同时它也被称为第四代计算机语言,MATLAB语言的最大特点是简单和直接。MATLAB语言中丰富的函数使得开发者无须重复编程,只要简单的调用就可,它让人们从原本繁琐的程序代码中解放了出来。
  下面来介绍一下实现图像模糊来然后通过调用MATLAB图像复原函数来检测复原功能。
  (1)运动引起的图像模糊:
  subplot('axes1');
  hold off;
  global A;
  global B;
  xy=inputdlg({'LEN';'THETA'},'please input')%参数输入
  end
  H=fspecial('motion',x,y);%点扩展函数
  MotionBlur=imfilter(A,H,'replicate');%产生运动模糊图像
  B=MotionBlur;
  imshow(B);%显示图像
  figure;
  subplot(1,2,1),imshow(A),title('模糊前');
  subplot(1,2,2),imshow(B),title('运动模糊后');
  实现图像复原
  (1)逆滤波复原算法:
  subplot('axes1');
  hold off;
  global A;
  global B;
  xy=inputdlg({'LEN';'THETA'},'please input')%参数输入
  end
  PSF=fspecial('motion',x,y);%点扩展函数
  [J P]=deconvblind(A,PSF,30);%逆滤波复原
  B=J;
  imshow(B);%显示处理后的图像
  figure;
  subplot(1,2,1),imshow(A),title('逆滤波处理前');
  subplot(1,2,2),imshow(B),title('逆滤波处理后');
  (2)维纳滤波复原:
  subplot('axes1');
  hold off;
  global A;
  global B;
  xy=inputdlg({'LEN';'THETA'},'please input')%参数输入
  end
  PSF=fspecial('motion',x,y);%点扩展函数
  Blurred=imfilter(A,PSF,'circular','conv');%模糊化
  wnr=deconvwnr(Blurred,PSF);%维纳滤波复原
  B=wnr;
  imshow(B);%显示处理后的图像
  figure;
  subplot(1,2,1),imshow(A),title('维纳滤波前');
  subplot(1,2,2),imshow(B),title('维纳滤波后');
  在实际的检测中我们发现采用维纳滤波复原可以取得比较好的效果,这个算法可以使估计的点扩散函数值更加接近它的真实值。在我们知道模糊图像的点扩展函数的情况下,可以调用常规的图像复原算法;而现实里还会遇见不知道点扩展函数的情况,这个时候我们就可以利用盲卷积复原算法。它是利用原始图像模糊,同时进行清晰图像的恢复和点扩展函数计算的一种方法。因此,盲卷积复原算法的优点就是,对失真情况还未知的情形下,仍然能够操作恢复模糊图像。
  经过测试证明,matlab具有强大的功能,尤其在图像处理方面具有优势。本文只涉及了其中的一小部分进行应用,但已经足以看出matlab处理图像的快速和高效。
  作者单位:浙江传媒学院
  
  参考文献:
  [1]贺兴华.MATLAB7.x图像处理[M].人民邮电出版社.2006
  [2]姚敏.数字图像处理[M].机械工业出版社.2007


转载注明来源:https://www.xzbu.com/9/view-942166.htm