袁江琛
(無錫城市職業(yè)技術學院, 江蘇 無錫 214153)
生活中由于景物運動,攝像設備的抖動,曝光時間過長等原因,拍攝出的照片會出現(xiàn)模糊現(xiàn)象。如何針對模糊圖像進行模糊特征建模以及選擇算法,最大程度復原清晰圖像是有實際意義的。本文利用運動模糊圖像退化及退化模型的建立,重點討論鑒別線型運動模糊特征的算法,以點擴散函數(shù)(PSF)建立模糊模型,以及使用維納濾波法還原圖像。并針對維納濾波的不足提出可行的改進方法。
設原始圖像為f(x,y),攝像機與物體的相對速度為v,曝光時間內(nèi)相對角位移為θ,g(x,y)為實際拍攝的圖像,則有如下關系:
(1)
此處先討論無角度偏移的情況,則上式可簡化為:
(2)
對上式離散化化簡,結果為:
g(x,y)=∑f(x-i,y)/L
(3)
式中,L為像素數(shù)。此式表明一副模糊圖可看成由多幅圖像疊加而成。
(4)
對以上矩陣進行傅里葉變換得到:
(5)
由上式可看出h(u,v)與v無關,即為在一列中v的值是相同的。令:
(6)
因為在模糊圖像中存在大量的平行于運動角度的直線軌跡,所以只需要對模糊圖像進行邊緣檢測即可快速地估計出運動角度。而邊緣檢測的基本思想就是針對圖像中灰度有跳躍的地方標記出來,這些軌跡就是圖像邊緣??墒褂胹obel算子進行邊緣檢測,sobel算子思想為將兩組矩陣與圖像作平面卷積,即可分別得出垂直及水平的灰度差分近似值。
(7)
uSobel=imag;
fori= 2:high- 1
forj= 2:width- 1
Gx= (U(i+1,j-1) + 2*U(i+1,j) +F2(i+1,j+1)) - (U(i-1,j-1) + 2*U(i-1,j) +F2(i-1,j+1));
Gy= (U(i-1,j+1) + 2*U(i,j+1) +F2(i+1,j+1)) - (U(i-1,j-1) + 2*U(i,j-1) +F2(i+1,j-1));
uSobel(i,j) =sqrt(Gx^2 +Gy^2);
end
end
根據(jù)邊緣檢測繪制的圖像即可簡易的確定模糊角度。
由上述提出的G(u,v)=H(u,v)F(u,v)+N(x,y)函數(shù)可知,在忽略噪聲因素N的時候,對函數(shù)逆向運算反卷積運算即可得到近似的原圖。
(8)
但是由上式可以看出,在噪聲不能被忽略并且H較小時,噪聲會被放大,并且由于H存在零點,在這些點處的圖像無法被恢復。從數(shù)學上來說,統(tǒng)計誤差函數(shù)最小時精度最高,統(tǒng)計誤差可表示如下:
(9)
則通過化簡可以得到:
(10)
從公式中可以看出維納濾波法引入了Sp(u,v)/Sf(u,v)噪信功率比這項。當噪聲為0時維納濾波與逆向濾波等價,當噪聲較大時,通過信噪比抑制復原中對噪聲的放大。
由上述證明過程可以看出,維納濾波法的關鍵在于反卷積運算。Matlab中自帶的deconvwnr函數(shù)即部分代碼為:
wnr1 = deconvwnr(blurred, PSF2, 0);
subplot(2,3,1),imshow(wnr1);
title('修復圖像');
其中,PSF函數(shù)即為點擴散函數(shù),Blurred為模糊圖像。Matlab中PSF函數(shù)有3個參數(shù),分別為模糊類型、模糊尺度和模糊角度。第一個為’motion’類型,即為運動模糊。而后兩者的數(shù)值就需要根據(jù)上文所說的方法進行測定。
這樣在復原的過程中,邊緣像素的運算會受到權重的影響,防止了因為像素缺失導致的灰度跳躍。但具體矩陣中的權值大小仍有待探索。
對于含噪聲的圖片可以先使用灰度均衡法對圖片先行處理。這種改進方法的基本思想是使含有噪點的圖片的灰度均勻分布,防止在進行反卷積運算時擴大噪聲。
現(xiàn)用r,s表示原始圖像和變換后圖像的灰度值。0表示為黑,1表示為白。設變換函數(shù)為s=T(r)且T(r)有以下特點:
(1)在0 (2)在0 由概率論可知,若圖像灰度值的概率密度函數(shù)Pr(r)和T(r)已知,則變換后的概率密度函數(shù)為: (11) 由均衡化的定義可知Ps(s)=1,則積分后可得: (12) 此公式只針對連續(xù)灰度的圖像。對于離散灰度的圖像處理相似。 Matlab中提供了histeq函數(shù)進行灰度均衡。但是該函數(shù)是針對離散灰度圖像的,對于連續(xù)灰度的圖像處理后視覺上會出現(xiàn)色階的跳躍。根據(jù)上文的轉(zhuǎn)換函數(shù)和histeq函數(shù)編寫了一個新的適用于連續(xù)函數(shù)的灰度均衡函數(shù),matlab代碼如下: NumPixel=zeros(1,256); fori= 1:height forj= 1:width NumPixel(I(i,j) + 1) =NumPixel(I(i,j) + 1) + 1; end end ProbPixel=zeros(1,256); fori= 1:256 ProbPixel(i) =NumPixel(i) / (height*width* 1.0); end CumuPixel=zeros(1,256); fori= 1:256 ifi== 1 CumuPixel(i) =ProbPixel(i); else CumuPixel(i) =CumuPixel(i- 1) +ProbPixel(i); end end CumuPixel=uint8(255 .*CumuPixel+ 0.5); fori= 1:height forj= 1:width I(i,j) =CumuPixel(I(i,j)); end end 實驗效果如圖1所示。 由前文的討論可知,模糊尺度與模糊角度確定后即可較大程度地復原模糊圖像。在圖2中利用matlab對一副運動模糊圖像的模擬復原。使用前文方法得到原圖模糊尺度約為103px,模糊角度為1.5。 本文建立了針對圖像的模糊過程的模型和復原過程的模型,也針對圖像復原算法的不足進行了優(yōu)化處理。實驗表明,圖像復原主要圍繞在參數(shù)確認和復原濾波兩方面。對于參數(shù)確認研究希望能找到一種更加精確確認模糊角度的算法,對于復原濾波方面希望能得出更加智能的算法,能自動檢測到模糊區(qū)域。2.4 算法效果
3 結束語