世界看起来是什么样的? 是啊,这个世界上有些东西看起来是那么漆黑,比如山洞,煤,晚上的床底等.而有些东西即使在晚上看起来也不是那么黑暗,比如沙子,以及人脸.有些部分是明亮的,白衬衣,雪,灯泡,而有些东西当然是非常耀眼的,如聚光灯,天空,太阳以及激光等.
在显示器上显示的图像有一个亮度范围,一般来说是255,从0(黑色)到255(白色)之间的一个值. 现在我们的脑袋里已经存有了这些概念,那么如何能够在计算机屏幕上创建一个真实的这个世界的图像呢?自然世界有着一个及其宽阔的亮度范围,但是计算机只能显示他们非常狭小的一部分,你可能需要缩小真实世界的亮度以适应他,比如用0表示一个极其黑的山洞,而用255表示太阳.但是如果你这么做了,在表现图像的时候你会遇到非常严重的问题,比如说人脸,会变得非常暗.比如下面这副图:
有一种选择是你可以对亮度值进行剪裁,比如说如果一个物体比雪还要白的话就给他设置亮度为255.在下面你可以看到这副图:
OK.我又想再问另外一个问题,照片看起来是怎样的? 就像计算机屏幕,照相机对于亮度也只能表现一个很狭窄的范围.在相片里,最暗的东西看起来也并不是很黑,而最明亮的部分怎么也不会比他所处的环境明亮(译者注:原文是environment,应该理解成这个物体周围很进的一小片空间). 但照片为什么看起来并没有遇到上面所说的问题呢?事实上,照片也有类似的问题,但是在处理这么大范围亮度的强度上,照相机做的很好.另外照相机还做了曝光控制.如果理解这些的话,会帮助我们更好的理解照片的生成.
拍摄照片的过程: 在照片被拍摄的时候,快门只打开极短的时间让少量光线进入.光线被相机透镜聚焦成一张轻微感光的胶片.一旦胶片被保露在光线下,胶片所包含的化学物质就会分解,这样记录在胶片上的图像也会被破坏,可能照片会变得更亮. 进入相机镜头的光线可以由快门时间以及光圈大小来控制.接着底片停止感光并显影出颜色.这是负片.再用灯泡把他晒到另外一张纸上这就是照片了.
那么他跟计算机图形有什么关系那? 最简单化的照片模型告诉了我们为什么相机要擅长于拷贝更大范围的亮度强度.让我们考虑最初来自场景光线的曝光.想象在一快小小的胶片上有着100W mol的感光化学物质.光线落在了那个区域上,有50W mol的物质分解了,因此在照片上他只能显示出一半亮度的图像来.如果相同数量的光线又落在了这个区域上,又有一半的化学物质分解,剩下1/4了,图像将会是75%的亮度.随着越来越多的光线落在这个区域上,越来越多的化学物质会分解.然而,随着越来越少的化学物质存在于这个区域上,分解同样多的物质,你需要更多的光线.
在现实中,这是非常简化的但是很流行的图表.真是的胶片感光并不是完美地平滑的.事实上这副图在胶片接受了大量光线以后应该会再次开始下降.典型的效果就是: 曝晒. 或许你还记得,这是一个指数衰减的图像.递减的速度和剩余的数量是成比例的.如果有更多的化学物质留在胶片上的话,他理所当然的分解的更快. 那么,使用上面这副图,可以很轻易的知道在有一定数量的光线落在上面以后胶片还能有多少物质感光,那么就很容易得到照片上应该得到的结果. 总的来说,下面这个方程给出了一切: brightness = 1 - e-light 当然,一个照相机如果不能进行曝光控制的话他会是多么的没用.光线落在胶片上仅仅是光线进入照相机的结果,通过光圈,通过快门时间.为了更大程度的简化复杂度,我们可以忽略光圈和快门速度.而把他们单独抽象成一个变量K.较小的K将会返回一个较暗的亮度值. (light hitting film) = (light entering camera) * K
return ( 1 - exp(light * exposure) ) * 255 end function
for every pixel on the screen 计算每个象素上进入照相机的光线L.可以用射线跟踪或者其他什么 Pixelvalue = Expose(L, K) plot this pixel with a brightness of Pixelvalue end of loop end of main procedure 参考文献: The Virtual Darkroom http://tangle.seas.gwu.edu/~geigel/vdr/ 这是一个创建计算机图像,并且使用相片胶片类似的机制以黑白色渲染他们的系统.跟上面这个简化版本来说,这个软件要高级的很多,并且模拟微粒以及曝光两种模式. 译者废话: 如果有什么翻译错误或者不妥的地方,请告诉我. |
-
2007-04-22
-
2007-04-15
-
2007-04-10