回覆列表
  • 1 # 浩宇大兄弟

    基於MATLAB的運動模糊影象恢復技術轉載 2018年04月15日 08:48:37 閱讀 1792基於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附加約束的函式。 附錄:[plain]

    view plain

    copy

    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 ofmotion blurred images[J]. Acta AutomaticaSinica,2003,29(3):466-471.

  • 中秋節和大豐收的關聯?
  • 宋朝奸相秦檜、韓侂冑、史彌遠、賈似道,為何能擅權亂政百餘年?