基于matlab的圖像去霧算法詳細講解與實現(xiàn)-附matlab實現(xiàn)源代碼_第1頁
基于matlab的圖像去霧算法詳細講解與實現(xiàn)-附matlab實現(xiàn)源代碼_第2頁
基于matlab的圖像去霧算法詳細講解與實現(xiàn)-附matlab實現(xiàn)源代碼_第3頁
基于matlab的圖像去霧算法詳細講解與實現(xiàn)-附matlab實現(xiàn)源代碼_第4頁
基于matlab的圖像去霧算法詳細講解與實現(xiàn)-附matlab實現(xiàn)源代碼_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上本文主要介紹基于Retinex理論的霧靄天氣圖像增強及其實現(xiàn)。并通過編寫兩個程序來實現(xiàn)圖像的去霧功能。1 Rentinex理論Retinex(視網(wǎng)膜“Retina”和大腦皮層“Cortex”的縮寫)理論是一種建立在科學實驗和科學分析基礎上的基于人類視覺系統(tǒng)(Human Visual System)的圖像增強理論。該算法的基本原理模型最早是由Edwin Land(埃德溫蘭德)于1971年提出的一種被稱為的色彩的理論,并在顏色恒常性的基礎上提出的一種圖像增強方法。Retinex 理論的基本內(nèi)容是物體的顏色是由物體對長波(紅)、中波(綠)和短波(藍)光線的反射能力決定的,而

2、不是由反射光強度的絕對值決定的;物體的色彩不受光照非均性的影響,具有一致性,即Retinex理論是以色感一致性(顏色恒常性)為基礎的。根據(jù)Edwin Land提出的理論,一幅給定的圖像S(x,y)分解成兩幅不同的圖像:反射物體圖像R(x,y)和入射光圖像L(x,y),其原理示意圖如圖8.3-1所示。圖-1 Retinex理論示意圖對于觀察圖像S中的每個點(x,y),用公式可以表示為: S(x,y)=R(x,y)×L(x,y) (1.3.1)實際上,Retinex理論就是通過圖像S來得到物體的反射性質(zhì)R,也就是去除了入射光L的性質(zhì)從而得到物體原本該有的樣子。2 基于Retinex理論的

3、圖像增強的基本步驟步驟一: 利用取對數(shù)的方法將照射光分量和反射光分量分離,即:S(x, y)=r(x, y)+l(x, y)=log(R(x, y)+log(L(x, y);步驟二:用高斯模板對原圖像做卷積,即相當于對原圖像做低通濾波,得到低通濾波后的圖像D(x,y),F(xiàn)(x, y)表示高斯濾波函數(shù):D(x, y)=S(x, y) *F(x, y);步驟三:在對數(shù)域中,用原圖像減去低通濾波后的圖像,得到高頻增強的圖像G(x, y): G(x,y)=S(x, y)-log(D(x, y) ;步驟四:對G(x,y)取反對數(shù),得到增強后的圖像R(x, y): R(x,

4、y)=exp(G(x, y);步驟五:對R(x,y)做對比度增強,得到最終的結(jié)果圖像。3 多尺度Retinex算法 D Jobson等人提出了多尺度Retinex算法,多尺度算法的基本公式是: 其中,是Retinex的輸出,表示3個顏色譜帶,是高斯濾波函數(shù),表示尺度的權重因子,表示使用尺度的個數(shù),=3,表示彩色圖像,。=1,表示灰度圖像。從公式中可以看出:MSR算法的特點是能產(chǎn)生包含色調(diào)再現(xiàn)和動態(tài)范圍壓縮這兩個特性的輸出圖像。 在MSR算法的增強過程中,圖像可能會因為增加了噪聲而造成對圖像中的局部區(qū)域色彩失真,使得物體的真正顏色效果不能很好的顯現(xiàn)出來,從而影響了整體視覺效果。為了彌補這個缺點,

5、一般情況下會應用帶色彩恢復因子C的多尺度算法(MSRCR)來解決。帶色彩恢復因子C的多尺度算法(MSRCR)是在多個固定尺度的基礎上考慮色彩不失真恢復的結(jié)果,在多尺度Retinex算法過程中,我們通過引入一個色彩因子C來彌補由于圖像局部區(qū)域?qū)Ρ榷仍鰪姸鴮е聢D像顏色失真的缺陷,通常情況下所引入的色彩恢復因子C的表達式為其中,表示第個通道的色彩恢復系數(shù),它的作用是用來調(diào)節(jié)3個通道顏色的比例,表示的是顏色空間的映射函數(shù)。帶色彩恢復的多尺度Retinex算法(MSRCR)通過色彩恢復因子C這個系數(shù)來調(diào)整原始圖像中三個顏色通道之間的比例關系,從而通過把相對有點暗的區(qū)域的信息凸顯出來,以達到消除圖像色彩失

6、真的缺陷。處理后的圖像局域?qū)Ρ榷忍岣撸宜牧炼扰c真實的場景很相似,圖像在人們視覺感知下顯得極其逼真。因此,MSR算法具有較好的顏色再現(xiàn)性、亮度恒常性以及動態(tài)范圍壓縮等特性。4 例程精講例程1是基于Retinex理論進行霧靄天氣增強的MATLAB程序,讀者可結(jié)合程序及注釋對基于Retinex理論進行霧靄天氣增強的基本原理進行進一步分析,該程序的運行結(jié)果如圖-2所示。例程1:clear;close all;% 讀入圖像I=imread('wu.png');% 取輸入圖像的R分量R=I(:,:,1);N1,M1=size(R);% 對R分量進行數(shù)據(jù)轉(zhuǎn)換,并對其取對數(shù)R0=doub

7、le(R);Rlog=log(R0+1);% 對R分量進行二維傅里葉變換Rfft2=fft2(R0);% 形成高斯濾波函數(shù)sigma=250;F = zeros(N1,M1);for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:);% 對高斯濾波函數(shù)進行二維傅里葉變換Ffft=fft2(double(F);% 對R分量與高斯濾波函數(shù)進行卷積運算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在對數(shù)域中,用原圖像減去低通濾波后的圖像,得到高頻增強的

8、圖像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr=Rlog-DRlog;% 取反對數(shù),得到增強后的圖像分量EXPRr=exp(Rr);% 對增強后的圖像進行對比度拉伸增強MIN = min(min(EXPRr);MAX = max(max(EXPRr);EXPRr = (EXPRr-MIN)/(MAX-MIN);EXPRr=adapthisteq(EXPRr);% 取輸入圖像的G分量G=I(:,:,2);N1,M1=size(G);% 對G分量進行數(shù)據(jù)轉(zhuǎn)換,并對其取對數(shù)G0=double(G);Glog=log(G0+1);% 對G分量進行二維傅里葉

9、變換Gfft2=fft2(G0);% 形成高斯濾波函數(shù)sigma=250;for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:);% 對高斯濾波函數(shù)進行二維傅里葉變換Ffft=fft2(double(F);% 對G分量與高斯濾波函數(shù)進行卷積運算DG0=Gfft2.*Ffft;DG=ifft2(DG0);% 在對數(shù)域中,用原圖像減去低通濾波后的圖像,得到高頻增強的圖像DGdouble=double(DG);DGlog=log(DGdouble+1);Gg=Glog

10、-DGlog;% 取反對數(shù),得到增強后的圖像分量EXPGg=exp(Gg);% 對增強后的圖像進行對比度拉伸增強MIN = min(min(EXPGg);MAX = max(max(EXPGg);EXPGg = (EXPGg-MIN)/(MAX-MIN);EXPGg=adapthisteq(EXPGg);% 取輸入圖像的B分量B=I(:,:,3);N1,M1=size(B);% 對B分量進行數(shù)據(jù)轉(zhuǎn)換,并對其取對數(shù)B0=double(B);Blog=log(B0+1);% 對B分量進行二維傅里葉變換Bfft2=fft2(B0);% 形成高斯濾波函數(shù)sigma=250;for i=1:N1 for

11、 j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:);% 對高斯濾波函數(shù)進行二維傅里葉變換Ffft=fft2(double(F);% 對B分量與高斯濾波函數(shù)進行卷積運算DB0=Gfft2.*Ffft;DB=ifft2(DB0);% 在對數(shù)域中,用原圖像減去低通濾波后的圖像,得到高頻增強的圖像DBdouble=double(DB);DBlog=log(DBdouble+1);Bb=Blog-DBlog;EXPBb=exp(Bb);% 對增強后的圖像進行對比度拉伸增強MIN = min(mi

12、n(EXPBb);MAX = max(max(EXPBb);EXPBb = (EXPBb-MIN)/(MAX-MIN);EXPBb=adapthisteq(EXPBb);% 對增強后的圖像R、G、B分量進行融合I0(:,:,1)=EXPRr;I0(:,:,2)=EXPGg;I0(:,:,3)=EXPBb;% 顯示運行結(jié)果subplot(121),imshow(I);subplot(122),imshow(I0);*圖-2 例程1的運行結(jié)果例程2是基于Retinex理論進行霧靄天氣增強的MATLAB程序,讀者可結(jié)合程序及注釋對基于Retinex理論進行霧靄天氣增強的基本原理進行進一步分析,該程序

13、的運行結(jié)果如圖-3所示。例程2:*clear;close all;I=imread('wu.png');% 分別取輸入圖像的R、G、B三個分量,并將其轉(zhuǎn)換為雙精度型R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);R0=double(R);G0=double(G);B0=double(B); N1,M1=size(R);% 對R分量進行對數(shù)變換Rlog=log(R0+1);% 對R分量進行二維傅里葉變換Rfft2=fft2(R0);% 形成高斯濾波函數(shù)(sigma=128)sigma=128;F = zeros(N1,M1);for i=1:N1 for j=1

14、:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:);% 對高斯濾波函數(shù)進行二維傅里葉變換Ffft=fft2(double(F);% 對R分量與高斯濾波函數(shù)進行卷積運算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在對數(shù)域中,用原圖像減去低通濾波后的圖像,得到高頻增強的圖像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr0=Rlog-DRlog;% 形成高斯濾波函數(shù)(sigma=256)sigma=256;F = zeros(N1,M1)

15、;for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:);% 對高斯濾波函數(shù)進行二維傅里葉變換Ffft=fft2(double(F);% 對R分量與高斯濾波函數(shù)進行卷積運算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在對數(shù)域中,用原圖像減去低通濾波后的圖像,得到高頻增強的圖像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr1=Rlog-DRlog;% 形成高斯濾波函數(shù)(sigma=512)sigma=5

16、12; F = zeros(N1,M1);for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:);% 對高斯濾波函數(shù)進行二維傅里葉變換Ffft=fft2(double(F);% 對R分量與高斯濾波函數(shù)進行卷積運算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在對數(shù)域中,用原圖像減去低通濾波后的圖像,得到高頻增強的圖像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr2=Rlog-DRlog;% 對上述三次增

17、強得到的圖像取均值作為最終增強的圖像Rr=(1/3)*(Rr0+Rr1+Rr2); % 定義色彩恢復因子Ca=125;II=imadd(R0,G0);II=imadd(II,B0);Ir=immultiply(R0,a);C=imdivide(Ir,II);C=log(C+1); % 將增強后的R分量乘以色彩恢復因子,并對其進行反對數(shù)變換Rr=immultiply(C,Rr);EXPRr=exp(Rr);% 對增強后的R分量進行灰度拉伸 MIN = min(min(EXPRr);MAX = max(max(EXPRr);EXPRr = (EXPRr-MIN)/(MAX-MIN);EXPRr=a

18、dapthisteq(EXPRr); N1,M1=size(G);% 對G分量進行處理,步驟與對R分量處理的步驟相同,請讀者仿照R分量處理的步驟進行理解。G0=double(G);Glog=log(G0+1); Gfft2=fft2(G0);sigma=128;F = zeros(N1,M1);for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:); Ffft=fft2(double(F); DG0=Gfft2.*Ffft;DG=ifft2(DG0); DGdo

19、uble=double(DG);DGlog=log(DGdouble+1);Gg0=Glog-DGlog; sigma=256; F = zeros(N1,M1);for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:); Ffft=fft2(double(F); DG0=Gfft2.*Ffft;DG=ifft2(DG0); DGdouble=double(DG);DGlog=log(DGdouble+1);Gg1=Glog-DGlog; sigma=512; F

20、 = zeros(N1,M1);for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:); Ffft=fft2(double(F); DG0=Gfft2.*Ffft;DG=ifft2(DG0); DGdouble=double(DG);DGlog=log(DGdouble+1);Gg2=Glog-DGlog; Gg=(1/3)*(Gg0+Gg1+Gg2); a=125;II=imadd(R0,G0);II=imadd(II,B0);Ir=immultiply(R0

21、,a);C=imdivide(Ir,II);C=log(C+1); Gg=immultiply(C,Gg); EXPGg=exp(Gg); MIN = min(min(EXPGg);MAX = max(max(EXPGg);EXPGg = (EXPGg-MIN)/(MAX-MIN);EXPGg=adapthisteq(EXPGg); % 對B分量進行處理,步驟與對R分量處理的步驟相同,請讀者仿照R分量處理的步驟進行理解。 N1,M1=size(B); B0=double(B);Blog=log(B0+1); Bfft2=fft2(B0);sigma=128; F = zeros(N1,M1);

22、for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:); Ffft=fft2(double(F); DB0=Bfft2.*Ffft;DB=ifft2(DB0); DBdouble=double(DB);DBlog=log(DBdouble+1);Bb0=Blog-DBlog; sigma=256; F = zeros(N1,M1);for i=1:N1 for j=1:M1 F(i,j)=exp(-(i-N1/2)2+(j-M1/2)2)/(2*sigma*sigma); endendF = F./(sum(F(:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論