1

我正在研究光线追踪器,当添加不同的颜色(如灯光、反射光和折射光)时,我得到的值高于 1,然后我需要进行钳位。但是夹紧可能不正确?也许我应该以其他方式处理这个问题?

4

2 回答 2

2

不,不,不,不要夹住。现实世界中没有最大光强度或辐射值。你认为究竟什么物理过程对应于限制光值?

钳位甚至应该发挥作用的唯一时间是,如果您将最终像素保存为非 HDR 图像格式(例如,8 位整数像素)或在监视器上显示。然后,您仍然应该考虑某种色调映射或平滑滚降来模拟胶片响应,而不是硬钳。但更好的做法是将图像保存为 HDR 格式(即浮点,例如 16 或 32 位浮点 OpenEXR 文件),并将色调映射(减少到有限的动态范围)留给显示程序。

于 2012-11-25T08:44:04.747 回答
1

这不是错误,它是一种称为饱和度的效果,或者可能是过度曝光。它发生在胶片和数码相机中,也发生在你的眼睛里。问题很简单,您的感光器(对于眼睛,或数码相机中的 CCD,或胶片相机中的感光化合物)有太多的光能,以至于接收器已饱和至其最大输出值。换句话说,你可以继续向它注入更多的能量,但受体将无法输出任何更强的信号,所以它看起来还是一样的。因此,简单的解决方案是简单地将所有颜色值饱和为 1.0,这模仿了真实感光器中发生的情况。

当然,当这种情况发生在您的眼睛中时,您的瞳孔会收缩,因此不会有太多的光线进入,并且当摄影师拍摄过度曝光的照片时,出于同样的原因,他们可能会减小光圈或曝光时间。您可以在渲染器中执行相同的操作,只需将每个像素的颜色值除以固定数量即可。这类似于收缩瞳孔或限制曝光时间以减少到达每个受体的光能。这样做之后,您仍然需要钳制任何大于 1 的值(或任何最大颜色值)。

当然,您可以使用双精度浮点存储非常大的数值颜色值,或者使用 BigInts 存储任意大的数值,例如。但迟早,您需要在“现实生活”中实际生成此图像:通过打印机,或在监视器上,或将其存储为标准图像格式,如 PNG。无论您使用何种机制,可以生成的输出值范围都是有限的,您需要将颜色调整到该范围内。您可以使用我描述的任何一种技术来执行此操作:您可以简单地钳制可用范围之外的任何内容,或者您​​可以按固定量缩放所有值,以便所有值都适合该范围。在前一种情况下,您会在图像中出现剪裁,这意味着您会在光线非常明亮的任何地方失去细节。在后一种情况下,如果颜色值已经接近在一起,您将体验到对比度的损失,因为缩小它们会使它们更接近。通常,您将希望应用这两种技术来限制这两个不同的问题。您可以尝试分析图像的统计数据并通过算法决定如何调整它,但我不确定那会是什么样子。另一种方法是通过反复试验手动调整它(可能使用较低质量的渲染,因此每次试验不会花费很长时间)。您可以尝试分析图像的统计数据并通过算法决定如何调整它,但我不确定那会是什么样子。另一种方法是通过反复试验手动调整它(可能使用较低质量的渲染,因此每次试验不会花费很长时间)。您可以尝试分析图像的统计数据并通过算法决定如何调整它,但我不确定那会是什么样子。另一种方法是通过反复试验手动调整它(可能使用较低质量的渲染,因此每次试验不会花费很长时间)。

于 2012-12-04T14:13:17.267 回答