HDR图像显示
来源:互联网 发布:win10很卡怎么优化 编辑:程序博客网 时间:2024/05/22 04:55
高动态范围图像
(High-Dynamic Range,简称HDR),相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range)图像,利用每个曝光时间相对应最佳细节的LDR图像来合成最终HDR图像。
tone mapping
一张HDR图片,它记录了远远超出256个级别的实际场景的亮度值,超出的部分在屏幕上是显示不出来的。所以线性解码,总是导致图像一部分区域过于明亮,或者另一部分过于暗淡。
解决的方法就是tone mapping。这里我们将图像分解为两个层,一个基层(base layer or large-scale features)和一个细节层(detail layer)。只对基层进行对比度压缩,保持细节层不变。这里为将图像分解成两层,且保持边缘特性,就需要采取一些快速健壮的保边去噪的滤波器。比如说双边滤波(BF)等。
算法流程
根据《Fast Bilateral Filtering for the Display of High-Dynamic-Range Images 》给出了对比度缩减的流程:
- input intensity= 1/61*(R*20+G*40+B)
- r=R/(input intensity), g=G/input intensity, B=B/input intensity
- log(base)=Bilateral(log(input intensity))
- log(detail)=log(input intensity)-log(base)
- log (output intensity)=log(base)*compressionfactor+log(detail) - log_absolute_scale
- R output = r*10^(log(output intensity)), etc.
注:第一步是将原图像转换成其灰度图像,你可以使用其他你喜欢的转换公式。compressionfactor是对基层的压缩系数,log_absolute_scale是一个偏置参数,以确保基层压缩后最大像素值为1,这两个参数都与图像相关。这里作者建议取值
compressionfactor = targetContrast/(max(log(base)) - min(log(base))),log_absolute_scale= max(log(base))*compressionfactor。
代码
通常算法最后还要进行gamma校正,示例如下,edge preserving fliter你可以换成其他:
%BFTONEMAP High Dynamic Range tonemapping using BF%% The script reduces the dynamic range of an HDR image using the method% originally proposed by Durand and Dorsey, "Fast Bilateral Filtering% for the Display of High-Dynamic-Range Images",% ACM Transactions on Graphics, 2002.%% Load HDR image from file and convert to greyscalehdr = double(hdrread('smallOffice.hdr'));I = 0.2989*hdr(:,:,1) + 0.587*hdr(:,:,2) + 0.114*hdr(:,:,3);logI = log(I+eps);%% Perform edge-preserving smoothing using bilateralFilterbase = log(bilateralFilter(I));%% Compress the base layer and restore detailcompression = 0.25;detail = logI - base;OUT = base*compression + detail;OUT = exp(OUT);%% Restore colorOUT = OUT./I;OUT = hdr .* padarray(OUT, [0 0 2], 'circular' , 'post');%% Finally, shift, scale, and gamma correct the resultgamma = 1.0/2.2;bias = -min(OUT(:));gain = 0.45;OUT = (gain*(OUT + bias)).^gamma;imshow([hdr OUT]);
效果
bilateralFilter是双边滤波器,若是你找不到合适的,可以到这里下载。
参考
[1]: http://people.csail.mit.edu/fredo/PUBLI/Siggraph2002/
[2]: http://www.cnblogs.com/Imageshop/p/3428809.html
[3]:
http://baike.baidu.com/link?url=FeAX3SzIdJdyzL4JwHQhB_Nyv4-mDeNF1lUQe7vBBCe5K6RV7y9HGgJDIBmSvdn79OR17vwSWQjARC9U2xi7LJL38X2V27qqkJ6ESSCcAYgPDLZln8oE0JCiHnydMmdG
[4]: http://people.csail.mit.edu/sparis/bf/
转载请保留以下信息
- HDR图像显示
- 基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。
- 快速双边滤波在High-Dynamic Range(HDR)图像显示中的应用
- 快速双边滤波在High-Dynamic Range(HDR)图像显示中的应用
- 快速双边滤波在High-Dynamic Range(HDR)图像显示中的应用。
- 基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。
- 基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。
- HDR阴影高光图像增强
- HDR/WDR...一系列关于图像的基本概念
- HDR 图像系列文章之序
- 使用HDR色调预设调整图像
- HDR
- HDR
- HDR
- HDR
- HDR
- hdr
- HDR
- Xcode常用快捷键
- OC 详解深拷贝与浅拷贝
- 神奇的图像处理算法
- “正直角三角形” Contest2074 - 中南大学第九届大学生程序设计竞赛网络预选赛
- 关于继承方式
- HDR图像显示
- 数据库面试题(mysql,nosql)
- 数值的整数次方
- centos每天自动备份mysql数据库方法及脚本
- surf与sift特征点检测代码实现
- CString转换成int CString类相应函数
- foj1060 Fibonacci数列
- 45. Jump Game II
- 敏捷开发需要的是 "对" 的 "人", 而不是 "对" 的 "角色"