zoukankan      html  css  js  c++  java
  • Tone Mapping(色调映射) 认识

    Tone Mapping(色调映射) 认识

    • 目录

           

    1. 【背景 - 高动态图像】
    2. 【起源】
    3. 【定义】
    4. 【举个例子】
    5. 【研究分类】
    • 详细

    1. 【背景 - 高动态图像】

    图像的动态范围: 图像的 Max(亮度值) /  Min(亮度值)

    高动态图像       : 动态范围大的图像

    高动态 VS 普通 : 高动态图像(位数 > 8位)    普通灰度图像(位数 = 8位 一般情况)   显示器的灰度Only 8位

    怎么办 -处理     : 将高动态图像的颜色 -> 变换 才能显示出来;

    另外高动态图像的灰度值分布的很不均匀,只有少数的像素点较亮,所以如果直接对图像进行线性的归一化(把灰度最大值映射为255,最小值映射为0)再显示,则图像会一片黑(参考左下图)。色调映射(tone mapping)就是为了解决这个问题而生。

                  --- 延伸:自然图像亮度特点。 亮度单位是坎德拉/平方米(cd/m2), 自然界中的亮度从星光(10^-2 cd/m2数量级),到日光(10^4 cd/m2数量级),动态范围为10^6,非常大。

    2. 【起源】

    eg1 : 在18世纪时,画家在作画的时候面临着这样一个问题:自然界中光线亮度的范围非常大,而颜料颜色的范围却非常有限。

                因此,找出一套行之有效的颜色转换方法,用范围有限的颜料,画出颜色范围很宽的自然光,变得尤为重要。现如今,这种颜色的转换的方法,就成为色调映射。

    eg2 : 在摄影学中,底片的对比度往往很低,直接冲洗的话,很难表现图片中的细节。
                所以也需要对底片进行处理(Dodging and Burning),这也引入了色调映射的一类方法,详细内容会在后面叙述。
    eg3 : 在20世纪70年代,电子相机的出现,人们开始使用模拟电路,来处理图像。
                之后随着数字相机的出现与发展,发展出了现在的各种色调映射(Tone mapping)算法

    3. 【定义】

     色调映射算法 : 指对图像颜色进行映射变换的算法。

                    目的, 调整图像的灰度,使得处理后的图像人眼看起来更加舒适,能更好的表达原图里的信息与特征。

                   理解 : 通常被理解为将颜色值从高动态范围(HDR)映射到低动态范围(LDR) 的过程。

                       在Unity(虚拟现实引擎软件)中,这意味着对于大多数平台上任意16 位的浮点型颜色值将被映射为 [0,1] 范围内的传统8位颜色值。

    4. 【举个例子】

     Gamma校正

    5. 【研究分类】

     色调映射研究方法大致分为两类 : 全局 / 局部

    1> 全局算法

    特点 :

    1. 任意相同颜色的像素点,在映射后,还是相同的颜色;
    2.全局算法一般较简单,速度快;
    3.全局算法的性能一般劣于局部方法;

    存在算法 : 直方图均衡化、Gamma、对数校正、直方图规定化、分段灰度变换

    2>局部算法

    特点 :

     
    1.映射前颜色相同的像素点,映射后颜色可能不同
    2.局部算法一般较全局方法更复杂,速度相对较慢;
    3.局部算法的性能一般优于全局方法;
    4.会出现光晕等现象

    存在算法 : 分块中值直方图等

     

    特别感谢新浪博客作者 陈法圣 资料链接: http://blog.sina.com.cn/s/blog_6a5781350102w707.html 

    相关公式参考链接 :http://www.cnblogs.com/bigbigtree/p/3458797.html

    相关优秀算法示例 :https://wenku.baidu.com/view/d5996bb8be23482fb5da4c26.html

    以上内容只是简单搭起框架 , 日后在做项目或研究过程中会持续更新。。。

  • 相关阅读:
    JAVA内存模型(Java Memory Model ,JMM)
    多线程(一)多线程实现、线程状态、线程调度、线程同步、线程数据传递
    Java中如何实现代理机制(JDK动态代理和cglib动态代理)
    HashMap与HashTable
    SSH远程会话管理工具
    nginx 无法启动:bind() to 0.0.0.0:443 failed
    nginx 提示the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
    php Allowed memory size of 134217728 bytes exhausted
    nginx 部署php项目 404
    RabbitMQ+PHP教程
  • 原文地址:https://www.cnblogs.com/cjhd/p/7530440.html
Copyright © 2011-2022 走看看