1. 程式人生 > >數字影象處理,基於小波變換的影象對比度增強演算法

數字影象處理,基於小波變換的影象對比度增強演算法

      小波變換下的影象對比度增強技術實質上是通過小波變換把影象訊號分解成不同子帶,針對不同子帶應用不同的演算法來增強不同頻率範圍內的影象分量,突出不同尺度下的近似和細節,從而達到增強影象層次感的目的。

       根據小波的多解析度分析原理將影象進行多級二維離散小波變換,可以將影象分解成影象近似訊號的低頻子帶和影象細節訊號的高頻子帶。其中,影象中大部分的噪聲和一些邊緣細節都屬於高頻子帶,而低頻子帶主要表徵影象的近似訊號。為了能夠在增強影象的同時減少噪聲的影響,可以對低頻子帶進行非線性影象增強,用以增強目標的對比度,抑制背景;而對高頻部分進行小波去噪處理,減少噪聲對影象的影響。最後小波重構得到增強的紅外影象。基於小波變換的紅外影象增強模型如下圖所示



1,基於小波變換的簡單線性變換對比度增強演算法:

load woman;  
subplot(121);
image(X);colormap(map);title('原始影象');%畫出原影象

[c,s]=wavedec2(X,3,'sym4');  %進行二層小波分解

len=length(c);
justdet = prod(s(1,:));%擷取細節係數起始位置(不處理近似係數)  
%處理低頻分解係數,突出輪廓
for I =1:justdet
    if(c( I )>250)
      c( I )=1.5*c( I );
    end
end
%處理高頻分解係數,弱化細節
for I =justdet:len
    if(c( I ) < 150)
      c( I )=0.75*c( I );
    end
end

nx=waverec2(c,s,'sym4');%分解係數重構

subplot(122);
image(nx);title('增強影象')%畫出增強影象
利用上面程式碼進行兩層分解得到的增強效果圖:



利用上面程式碼進行三層分解得到的增強效果圖:


通過對小波係數進行簡單的線性變來增強影象對比度,雖然能夠取得一定的效果,根據對低頻和高頻係數增加不同的倍數,可以得到不同的視覺效果,但倍數的選擇更多受到不同人的主觀影響,不能做到最優的選取。

另外,簡單的使用該方法還是會在增強影象的同時加大噪聲,影響對比度的增強效果。

2,小波變換和直方圖均衡化結合的影象增強演算法

通俗一點說,直方圖均衡化就是對影象進行非線性拉伸,重新分配影象畫素值,使一定灰度範圍內的畫素數量大致相同。直方圖均衡化就是把給定影象的直方圖分佈改變成“均勻”分佈直方圖分佈。一般而言,經過直方圖均衡化處理之後,灰度值出現概率較小的畫素會被合併,從而導致該影象的部分灰度值被壓縮,而灰度值出現概率較大的畫素則會被拉伸。因此灰度值的合併必然引起來影象細節的丟失,而灰度值拉伸過程中必然會使得影象中的噪聲被區域性的增強。尤其是對於紅外影象中背景和目標的灰度值非常接近的情況下,必然使得紅外影象中的噪聲被放大,細節丟失。

影象中經過小波變換後得到小波係數中的低頻資訊實際上表徵了影象的低頻資訊,也即影象的整體輪廓。

而影象中的高頻小波係數則包含了影象的細節資訊,包括噪聲、細節和邊緣資訊等。

因此通過只對低頻小波係數進行直方圖均衡化的方法就會很好的改善影象的噪聲資訊被放大的特性,因為影象的噪聲資訊已經大部分被包含在高頻小波係數中。而對於高頻小波係數而言,可以通過類似硬閾值去噪的方法,去除影象中的噪聲,並對非噪聲的高頻小波係數進行增強,從而強化影象中的細節部分。這樣就用小波變換的方法很好的彌補了直方圖均衡化演算法中增強噪聲和丟失細節的問題,從而更好的完成了影象的增強。

I=imread('oct.bmp');
figure 
imshow(I);title('yuan')


[ca,ch,cv,cd]=dwt2(I,'db6');
X=imadjust(uint8(ca),[],[],1.3);
xx=idwt2(uint8(X),ch,cv,cd,'db6');
figure 
imshow(uint8(xx));


參考資源:

【1】一種基於小波變換的非線性紅外影象增強演算法劉興淼,王仕成,趙 靜(陝西省第二炮兵工程學院,陝西 西安 710025)