HDR技术之带参数估计的经典Reinhard色调映射算法的改进(嵌入了亮度均衡/暗光增强算法)

上一篇博客已经贴出了带参数估计的经典Reinhard色调映射算法的代码。不过需注意的是,论文中是根据反映HDR图像动态范围的Zone数自动选择是采用全局映射还是局部映射。局部色调映射可以显著提升图像对比度,但是耗时显著增多,且局部映射结果同样面临局部亮度过暗的问题,因此,在HDR全局色调映射算法中嵌入快速暗部细节增强/亮度均衡算法很有意义。由于本人前期曾开发过这样的快速亮度均衡算法,因此,实现这种想法就成了水到渠成的事儿。下面给出包含HDR数据库、原始Reinhard全局及局部色调映射算法及附加亮度均衡后处理的对应算法程序及其处理结果的压缩包的网盘链接以及处理效果示例(读者可改变控制最大增益的C值获得不同程度的亮度提升,改变Gamma值获得适合自己显示器的伽马校正结果)。

链接:https://pan.baidu.com/s/134qkMo7leu2yLMj6ZezgRA                       提取码:80rc 

网盘中个别程序因复制粘贴过程中没怎么改注释,可能会引起理解混乱,但重新上传比较麻烦,现把正常注释的脚本文件粘贴如下,请读者下载资源后自行替换:

close all;clc
filename = 'data/HDR images/Arches_E_PineTree_3k.hdr';
try
    hdr = double(hdrread(filename));
catch
    disp('Can not open file!');
    return;
end
if max(size(hdr))>2000
    hdr=imresize(hdr,0.5);
    hdr(hdr<0)=0;
end
gamma=1/1.6;
figure,imshow(hdr.^gamma);

tic
rgb1=ALTM(hdr,gamma); %带参数估计的Reinhard局部色调映射算法
toc
figure,imshow(rgb1);
imwrite(rgb1,'res.png');


C=1.0; %控制最大增益的关键参数
tic
rgb2=mALTM(hdr,gamma,C); %局部色调映射,改进版本(附加亮度均衡后处理)
toc
figure,imshow(rgb2);
imwrite(rgb2,'res2.png');


tic
rgb3=AGTM(hdr,gamma);%全局色调映射
toc
figure,imshow(rgb3);
imwrite(rgb3,'res3.png');

tic
rgb4=mAGTM1(hdr,gamma);%全局色调映射,改进版本1(亮度均衡作为后处理)
toc
figure,imshow(rgb4);
imwrite(rgb4,'res4.png');


tic
rgb5=mAGTM2(hdr,gamma);%全局色调映射,改进版本2(亮度均衡嵌入变换公式)
toc
figure,imshow(rgb5);

处理效果(按原图、全局映射、附加亮度均衡后处理的全局映射、局部映射和附加亮度均衡后处理的局部映射顺序贴图,参数采用Reinhard的参数估计技术选取):

 

 

 

 

 

 

可以看出,经亮度均衡后处理后图像整体更加明亮且亮度分布比较均衡,看起来更加舒服。在局部对比度方面总体上优于原始Reinhard色调映射算法(偶尔可能出现对比度更低的情况,如最后一张测试图,这种情况一般出现在本身亮度就比较高的区域,经过亮度提升后细节反而更不明显)。由于在亮度均衡算法中使用了保边滤波器,所以基本可以完全消除光晕效应。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值