一、Retinex理論介紹
「Retinex」源於Retina(視網膜)和Cortex(大腦皮層)合成詞的縮寫,故該理論又被稱為「視網膜大腦皮層理論」。Retinex理論的基本原理模型是以人類視覺系統為出發點發展而來的一種基於顏色恆常性的色彩理論。該理論認為:(1)人眼對物體顏色的感知與物體表面的反射性質有著密切關係,即反射率低的物體看上去較暗,反射率高的物體看上去是較亮。(2)人眼對物體色彩的感知具有一致性,不受光照變化的影響。基本原理:通過從原始圖像中估計光照分量,然後設法去除(或降低)光照分量,獲得物體的反射性質,從而獲得物體的本來面貌。其中,F(x,y)是中心環繞函數,定義:
中心環繞Retinex主要分為單尺度Retinex方法和多尺度Retinex方法。1. 基於單尺度Retinex的增強方法具體算法步驟如下:
(1)計算C顏色通道的光照分量估計值ic(x,y);
(2)對fc(x,y)進行對數變換處理:
(3)計算反射分量,獲得單尺度Retinex增強圖像:
2. MATLAB代碼如下:
Image=(imread('gugong1.jpg')); %打開圖像並轉換為double數據imshow(Image);[height,width,c]=size(Image);RI=double(Image(:,:,1)); GI=double(Image(:,:,2)); BI=double(Image(:,:,3)); sigma=100; filtersize=[height,width];%高斯濾波器參數gaussfilter=fspecial('gaussian',filtersize,sigma); %構造高斯低通濾波器Rlow=imfilter(RI,gaussfilter,'replicate','conv');Glow=imfilter(GI,gaussfilter,'replicate','conv');Blow=imfilter(BI,gaussfilter,'replicate','conv');minRL=min(min(Rlow)); minGL=min(min(Glow)); minBL=min(min(Blow));maxRL=max(max(Rlow)); maxGL=max(max(Glow)); maxBL=max(max(Blow)); RLi=(Rlow-minRL)/(maxRL-minRL);GLi=(Glow-minGL)/(maxGL-minGL);BLi=(Blow-minBL)/(maxBL-minBL);Li=cat(3,RLi,GLi,BLi);figure;imshow(Li);title('估計光照分量');imwrite(Li,'light.bmp');Rhigh=log(RI./Rlow+1);%獲得R通道的高頻分量Ghigh=log(GI./Glow+1);%獲得G通道的高頻分量Bhigh=log(BI./Blow+1);%獲得B通道的高頻分量SSRI=cat(3,Rhigh,Ghigh,Bhigh);figure;imshow((SSRI));title('單尺度Retinex增強');imwrite(SSRI,'SSRI.bmp');3. 處理效果:
原始圖像 單尺度Retinex增強
1. 基於多尺度Retinex的增強方法具體算法步驟如下:
(1)設置不同尺度αn , n=1,2,…;
(2)計算不同尺度的中心環繞函數Fn(x,y);
(3)求不同尺度的Retinex增強輸出;
Rnc(x,y)是第C通道第n個尺度Retinex增強輸出。
Image=(imread('gugong1.jpg')); %打開圖像並轉換為double數據imshow(Image);title('原始圖像');[height,width,c]=size(Image);RI=double(Image(:,:,1)); GI=double(Image(:,:,2)); BI=double(Image(:,:,3));beta=0.4;alpha=125;CR=beta*(log(alpha*(RI+1))-log(RI+GI+BI+1));CG=beta*(log(alpha*(GI+1))-log(RI+GI+BI+1));CB=beta*(log(alpha*(BI+1))-log(RI+GI+BI+1));Rhigh=zeros(height,width);Ghigh=zeros(height,width);Bhigh=zeros(height,width);sigma=[15 80 250]; filtersize=[height,width];%高斯濾波器參數for i=1:3 gaussfilter=fspecial('gaussian',filtersize,sigma(i)); %構造高斯低通濾波器 Rlow=imfilter(RI,gaussfilter,'replicate','conv'); Glow=imfilter(GI,gaussfilter,'replicate','conv'); Blow=imfilter(BI,gaussfilter,'replicate','conv'); Rhigh=1/3*(CR.*log(RI./Rlow+1)+Rhigh);%獲得R通道的高頻分量 Ghigh=1/3*(CG.*log(GI./Glow+1)+Ghigh);%獲得G通道的高頻分量 Bhigh=1/3*(CB.*log(BI./Blow+1)+Bhigh);%獲得B通道的高頻分量endMSRCRI=cat(3,Rhigh,Ghigh,Bhigh);figure;imshow(MSRCRI);title('多尺度Retinex增強');imwrite(MSRCRI,'MSRCRI.bmp');3. 處理效果:
原始圖像 多尺度Retinex增強
參考文獻:
劉茜,盧心紅. 基於多尺度Retinex的自適應圖像增強方法[J]. 計算機應用, 2009.
趙曉霞,王汝琳.改進的多尺度Retinex算法及其應用[J]. 計算機工程, 2011.