Advertisement

图像增强_【图像增强03】基于Retinex理论的图像增强

阅读量:

一、Retinex理论介绍

Retinex 源于Retina(视网膜)和Cortex(大脑皮层)合成词的缩写,故该理论又被称为“视网膜大脑皮层理论”。Retinex理论的基本原理模型是以人类视觉系统为出发点发展而来的一种基于颜色恒常性的色彩理论。该理论认为:(1)人眼对物体颜色的感知与物体表面的反射性质有着密切关系,即反射率低的物体看上去较暗,反射率高的物体看上去是较亮。(2)人眼对物体色彩的感知具有一致性,不受光照变化的影响。
296072d347fce5cf7d3537482bdb8551.png

基本原理:通过从原始图像中估计光照分量,然后设法去除(或降低)光照分量,获得物体的反射性质,从而获得物体的本来面貌。估计光照分量的计算式:
ca345e3749b0fc8d698798859822480b.png0187ffcdfa2ef31a022f5a9a90bc5aa8.png

其中,F(x,y)是中心环绕函数,定义:
6cef589d3b492c4ccb919ec9061bc190.png

中心环绕 Retinex主要分为单尺度 Retinex方法和多尺度 Retinex方法。 二、单尺度Retinex增强

1. 基于单尺度Retinex的增强方法具体算法步骤如下:

(1)计算C颜色通道的光照分量估计值ic(x,y);

(2)对fc(x,y)进行对数变换处理:
c2034be83f05fa7d4d37c893e63e03e2.png

(3)计算反射分量,获得单尺度Retinex增强图像:
a799bf98ebaf025871a562dd324768f2.png

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. 处理效果:
d884a3b42d5dcd009b8cb4b71ef39e02.png c7346f0e56120b5d53a02c0d9584b563.png

原始图像 单尺度Retinex增强

三、多尺度Retinex增强

1. 基于多尺度Retinex的增强方法具体算法步骤如下:

(1)设置不同尺度αn , n=1,2,…;****

(2)计算不同尺度的中心环绕函数Fn(x,y);

(3)求不同尺度的Retinex增强输出;
300f179034bda787755b167cf21ff9b9.png Rnc(x,y)是第C通道第n个尺度Retinex增强输出。

2. MATLAB代码如下:

复制代码
    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. 处理效果:
0a3229415ed72f6cdce089c9f60225e3.png c223d9460666a8b1046b9ae690837f33.png

原始图像 多尺度Retinex增强

参考文献:

刘茜,卢心红. 基于多尺度Retinex的自适应图像增强方法[J]. 计算机应用, 2009.

赵晓霞,王汝琳.改进的多尺度Retinex算法及其应用[J]. 计算机工程, 2011.

全部评论 (0)

还没有任何评论哟~