HDR&ToneMapping

高动态光照渲染(High-Dynamic Range,简称HDR)图像,相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range)图像,利用每个曝光时间相对应最佳细节的LDR图像来合成最终HDR图像,能够更好地反映出真实环境中的视觉效果。

如上文所说HDR,为高动态范围的简称,何为高动态范围,举例说明:
现实真正存在的亮度差,即最亮的物体亮度,和最暗的物体亮度之比为10的8次方
, 而人类的眼睛所能看到的范围是10的5次方左右,但是一般的显示器,照相机能表示的只有256种不同的亮度。
但是我们可以多拍几张照片,2张,3张,...., 甚至几十张,这些照片的曝光依次增大,很多朋友应该可以想到,随着照片曝光的增大,照片会依次变亮,换一种角度,照片所表示的细节会由暗处向亮处改变。
根据上面的原理,如果我们将照相机拍摄的很多张图片合成,结果图片的数量级一般为10的16次方甚至更多。这样问题就出现了,或者更高数量级的亮度只能存在电脑里,而一般的显示器只能表示10的8次方个亮度数量级,用256个数字来模拟
所能表示的信息,这种模拟的方法就是HDR技术核心内容之一,学名叫Tone-Mapping(色调映射) 。用Tone-mapping压缩以后,我们所合成的HDR影像就能很好地在显示器上显示了,能给人以震撼人心的效果。

参考Opengl官方文档之HDR的描述

Hdr.png

但是事实上,对人物的渲染效果不怎么好;用了gamma效果就是一层雾霾;

所以,只能继续找方案
参考知乎的文档
终极版是用的美国电影艺术与科学学会的算法(ACES ToneMapping), 我都试了一遍,这些家伙都是处理物体, 人物处理也不好。

加到我的美颜算法:

//acesToneMapping
vec3 x = centralColor.rgb * 0.8; //0.6
centralColor.rgb = clamp((x * (2.51 * x + 0.03)) / (x * (2.43 * x + 0.59) + 0.14), 0.0, 1.0);
gl_FragColor = vec4(centralColor, 1.0);

效果一般,不过用这个基本可以不用其它美颜算法了,皮肤也比较白;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要学习拍照摄影,了解相机的相关技术参数、原理概念也是很必要的。下面以iPhone6为例说明其相机参数的含义,帮助大...
    陈游掠影阅读 11,093评论 0 8
  • 官网中文版 1 简易天空替换## 技能:线性擦除,追踪运动,用颜色键K出人物,用色彩曲线调色。(1)天空图片素材放...
    朱细细阅读 13,877评论 4 82
  • 相信你应该见过一些HDR照片,也许你很清楚这就是HDR照片,或者你并不知道这就是HDR技术制作的。相比普通单次曝光...
    超级无敌赛亚小能人阅读 9,274评论 0 16
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,429评论 4 61
  • 早晨九点二十五分 应该是上午? 下着毛毛细雨 不仔细感觉发现不了的那种 比刚到这个城市时下的雨小一点 扁桃体肿大到...
    泡芙泡芙泡阅读 2,778评论 0 0

友情链接更多精彩内容