面对不同的渲染算法,比如:PT、BDPT、PM、SPPM、Original MLT、PSSMLT、MMLT等等,对比不同渲染算法效果的常用方式是:相同时间下,渲染图片的质量(或者,渲染相同质量图片所需的时间)。
这里涉及到一个关键问题:怎么评估渲染图片的质量?
一般是,计算渲染图片和参考图片(标准图片)的MSE(均方误差)。
参考图片的选择要特别注意!!!
参考图片的选择要特别注意!!!
参考图片的选择要特别注意!!!
(小编正是在因为选错了参考图片然后被折磨得死去活来之后,才决定写这篇博文的)
举例说明。
假设我们要用MMLT渲染这么一个场景:
https://benedikt-bitterli.me/resources/
小编下载这个场景模型的原因是:其提供了参考图片(如果是本地自己用path tracing渲染一张参考图片的话,至少得好几十个小时吧)
具体怎么用PBRT-V3渲染这个场景,不是本篇文章的内容。此处默认已经完成渲染得到了一张渲染图片。
现在,是要根据渲染图片和参考图片的MSE判断渲染图片的质量。
下载的场景模型文件夹中包含两张参考图片,分别是:
TungstenRender.exr
TungstenRender.png
在不调节场景的几何参数时,对应的参考图片应该是来自TungstenRender.exr。
小编用的MSE程序是基于网络上找的一段python代码改的。
python貌似不能直接读取.exr文件,另外考虑到这个场景的描述文件中设置的渲染图片输出格式为.png,所以,我们将.exr格式的参考图片转换为.png格式。
Mac中的Preview软件是可以读取.exr格式的,而且可以直接将其转换为.png格式。但是,不要这么做,不要这么做,不要这么做!!!!!
这样操作得到的png参考图片和PBRT-V3产生的渲染图片是“不匹配”的,所以会导致MSE计算错误。
小编转换参考图片的具体步骤如下(敲黑板,划重点):
1,shift+cmd+4在屏幕上截一张640x360的图(考虑到:参考图片是1280x720分辨率,另外“截图”刚好是png格式),然后用Preview打开截图;
2,用Preview打开原.exr格式的参考图片,然后复制参考图片(ctrl+a,ctrl+c);
3,将1280x720参考图片粘贴到640x360的“截图”上(参考图片会自动缩小,然后调整位置使得参考图片刚好填在“截图”上)
4,Tools–>Adjust Size,将Resolution后面的数字由144改成72(此时“截图”图片即为1280x720分辨率png格式的参考图片了)
得到正确的参考图片之后,就可用如下代码计算MSE了。
(再次声明这段程序是基于网路上的python代码改的,原出处找不到了