利用小波融合对由聚焦失败导致的图像模糊进行修复
圖像的融合是將兩幅或多幅圖像融合在一起,以獲取對同一場景的更為精確、更為全面、更為可靠的圖像描述。融合算法應該充分利用各原圖像的互補信息,使融合后的圖像更適合人的視覺感受,適合進一步分析的需要。例如在實際攝影拍照時,由于焦距的緣故,近景或遠景總有一者可能處于模糊不清的狀態。此時運用圖像融合技術就可以將兩張模糊的圖片(一張近景模糊,一張遠景模糊)進行融合。小波變換是圖像的多尺度、多分辨率分解,它可以聚焦到圖像的任意細節。
? ? ? ?隨著小波理論及其應用的發展,將小波多分辨率分解用于像素級圖像融合也已經得到廣泛的應用。具體實現時,首先對每一幅原圖像分別進行小波變換,建立圖像的小波塔型分解;然后對各分解層分別進行融合處理。各分解層上的不同頻率分量可采用不同的融合算子進行融合處理,最終得到融合后的小波金字塔;最后對融合后所得的小波金字塔進行小波重構,所得到的重構圖像即為融合圖像。
圖1 ?用小波進行圖像融合
在MATLAB中我們可以直接使用函數wfusimg()來實現圖像的融合,下面給出它的常用語法形式:
XFUS = wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH)
[XFUS,TXFUS,TX1,TX2] =wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH)
? ? ? ?其中,X1和X2是待融合的兩幅原始圖像。參數WNAME給出要采用哪種小波,而LEVEL則給出了小波分解的層數。需要特別說明的是參數AFUSMETH和DFUSMETH,它們分別指定了低頻(近似)信息和高頻(細節)信息的融合方法。具體的可選項有'max'、'min'、'mean'、'img1'、'img2'或者'rand',它們分別表示近似和細節信息的融合方式為取X1和X2對應元素中的最大值、最下值、平均值、前者、后者或者隨機選擇。返回值XFUS是融合后的結果圖像,而TXFUS、TX1和TX2則對應XFUS、X1和X2的小波分解樹。
? ? ? 下面這段代碼演示了利用小波工具箱中的函數wfusimg()來實現圖像融合的方法。小波變換的絕對值大的小波系數,對應著顯著的亮度變化,也就是圖像中的顯著特征。于是選擇絕對值大的小波系數作為保留細節所需的小波系數。低頻部分系數可以選擇二者之間的最大值,也可以采用二者之間的平均值。最后重構出圖像即可。
X1 = imread('cathe1.bmp');
X2 = imread('cathe2.bmp');
XFUS = wfusimg(X1,X2,'sym4',5,'mean','max');
imshow(XFUS,[]);
? ? ? ?該段程序的運行結果如圖1所示,第三幅圖像就是將前兩幅圖像進行融合后的結果。易見,融合處理后的結果成功去除了前兩幅圖像中模糊不清的部分。
? ? ? ?當然,我們也可以不使用小波工具箱中給出的現成函數,而選擇自己動手實現基于小波的圖像融合算法。這對我們實際了解該算法是如何進行的大有裨益。下面這段示例程序實現了與前面代碼段相同的作用,請讀者留意注釋說明的部分。另需說明的是,下面這段程序僅僅是為了演示算法實現而編寫的,因此并沒做異常處理的考慮,我們默認待處理的兩幅原始圖像的尺寸是一樣的。
X1 = imread('cathe1.bmp');
X2 = imread('cathe2.bmp');
M1 = double(X1) / 256;
M2 = double(X2) / 256;
N = 4;
wtype = 'sym4';
[c0,s0] = wavedec2(M1, N, wtype);
[c1,s1] = wavedec2(M2, N, wtype);
length = size(c1);
Coef_Fusion = zeros(1,length(2));
%低頻系數的處理,取平均值
Coef_Fusion(1:s1(1,1)) = (c0(1:s1(1,1))+c1(1:s1(1,1)))/2;
%處理高頻系數,取絕對值大者,這里用到了矩陣乘法
MM1 = c0(s1(1,1)+1:length(2));
MM2 = c1(s1(1,1)+1:length(2));
mm = (abs(MM1)) > (abs(MM2));
Y? = (mm.*MM1) + ((~mm).*MM2);
Coef_Fusion(s1(1,1)+1:length(2)) = Y;
%重構
Y = waverec2(Coef_Fusion,s0,wtype);
imshow(Y,[]);
? ? ? ?上面這段代碼中用到了小波重構函數waverec2(),函數waverec2()其實就是wavedec2()的相反過程,該函數的常用語法形式如下:
X = waverec2(C,S,'wname')
X = waverec2(C,S,Lo_R,Hi_R)
? ? ? ?其中,參數C、S、N和'wname'的意義都與二維小波分解函數wavedec2()中定義的一樣,這里不再贅言。Lo_R是重構低通濾波器,Hi_R是重構高通濾波器。
? ? ? ?圖像融合在工業圖像采集中具有非常重要的應用。通常,在不同的焦距下,由工業攝像頭拍攝的一組圖像會因為景深的不同而產生局部模糊的現象,為得到全局的清晰圖像,勢必要對整組圖像進行融合,這時小波變換無疑是首選處理技術。
? ? ? ?在圖像融合過程中,小波基的種類和小波分解的層數對融合效果有很大的影響,對特定的圖像來說,哪一種小波基的融合效果最好,分解到哪一層最合適,則是算法設計者需要研究的問題。
總結
以上是生活随笔為你收集整理的利用小波融合对由聚焦失败导致的图像模糊进行修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像的泊松(Poisson)编辑、泊松融
- 下一篇: 数字图像处理特效中彩色墨水效果的设计与实