Retinex是一种基于生物学视觉系统的图像增强算法,旨在模拟人眼对图像的感知

Retinex是一种基于生物学视觉系统的图像增强算法,旨在模拟人眼对图像的感知。Retinex算法通过分解图像的反射分量和亮度分量来提高图像的对比度和亮度。其中,单尺度Retinex增强算法是Retinex算法中的一种变体。
单尺度Retinex增强算法基于以下假设:图像中的每个像素是由反射和亮度两个部分组成的,反射部分表示物体表面的颜色和亮度,而亮度部分表示光照条件。算法将图像分解为反射分量和亮度分量,通过对反射分量进行局部对比度增强和动态范围压缩,来提高图像的对比度和亮度。
具体而言,单尺度Retinex增强算法通过以下步骤实现图像增强:

  1. 将输入图像转换为对数空间(log空间),将图像中的每个像素从原始像素值转换为对数像素值。
  2. 对转换后的图像进行高斯模糊,以模糊图像中的高频噪声。
  3. 计算图像的反射分量,通过将模糊后的图像与原始图像进行除法运算得到。
  4. 对反射分量进行局部对比度增强,通过使用高斯滤波器计算局部对比度权重,并将权重应用于反射分量。
  5. 对增强后的反射分量进行动态范围压缩,将反射分量中的灰度值映射到[0,1]的范围内。
  6. 计算图像的亮度分量,通过将原始图像除以反射分量得到。
  7. 将增强后的反射分量和亮度分量相乘,得到最终的增强图像。
Image=(imread('1.jpg'));
%读取彩色图像,提取出红、绿、蓝三个通道的像素值。
subplot(1,3,1), imshow(Image), title('原始图像');
[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');
%将估计的光照分量归一化到0到1之间,并将三个通道合并成一张彩色图像
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);
subplot(1,3,2), imshow(Li), title('估计光照分量');
%通道的像素值进行对数变换,得到强光照下的图像,并将三个通道合并成一张彩色图像。
Rhigh=log(RI./Rlow+1);    
Ghigh=log(GI./Glow+1);                                            
Bhigh=log(BI./Blow+1); SSRI=cat(3,Rhigh,Ghigh,Bhigh);
subplot(1,3,3), imshow(SSRI), title('单尺度Retinex增强');

在这里插入图片描述

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值