咨询电话:400-810-1418服务与监督电话:400-006-6572
×

提交成功
我们会有专属的教育顾问联系您,请保持手机畅通。

Nuke中浮点型和整型数据的区别是什么?

发布时间:2019-10-07 17:17:33

对于整型和浮点的概念实则为一种数据类型。如果学习过C语言的读者会知道整型数据用"int"来表示,数据为1,3 全部为整数;浮点使用"float"表示,数据为10,1,12-带有小数,具体精确到小数点后多少位,可以进行定义。那么在表示图像文件的RGB通道数值时也分为整型数值和浮点数值。其1实在Nuke软件中对图像进行合成操作时都是采用浮点方式进行计算的。

对于图像的Bit Depth数据类型,整型和浮点之间究竟有什么区别呢?

一个图表,整型16bit,0-65 536,浮点6bit,0->1(EXR),如图4.045所示。

如图4.045所示,16bit的整型数据,值的范围为0-65 536,假设我们把图像的数值规定在0-1之间,那么16bit整型,也就是在0-1之间切分出65 536份,而浮点类型的数据呢?那便是要看我们软件可以精确到小数点后面多少位了?Nuke究竟可以精确到小数点后面多少位呢?我们这里通过在Nuke中输入Python的代码来得到,如图4.046所示。


我们可以看到0.5除以0.3应该是除不尽的,所以最终返回的结果保留了小数点后面多少位就代表ite进行浮点运算时精确到了小数点后面多少位。

1.66”小数点后面有11位,也就是100多亿,要比16bit的65 536大了不知道多少倍,因婚点数据要比整型数据更加精确。

浮点类型的数据还有一个非常强大的优势,就是整型数据会被压缩到0-1的范围内,超出的部分便会被裁切掉,而浮点类型的数据会完美地保留下来,理论上为0-infinity(无限)(这一点读者可以查看16bit hal件的开发文档)。

下面通过一张图像来说明整型与浮点之间的差别,如图4.047所示。这张图像为16 Bit-half的OemEXR格式文件(16 bit"half"表述的就是16bit-loat浮点)。

如图4.048所示,光标所指的视图区域,下面的数值区域显示的RGB通道数值为"4.7734432500,0.7339",如上面图表所示一样,在高曝光区域的数值超过了1。


如图4.049所示,查看示波图,可以看到RGB三通道的信息都被很好地保留了,并且远远超出底部橙色的警示线(底部的橙色线条实际上是0-1的范围线,从高度上来看差距非常大)。

当我们调整视窗的Gain光圈参数时,会发现图像上的玻璃显现出了丰富的细节,就好像降低了相机光后产生的结果,图像原有的信息全部都被保留下来了,如图4.050所示。


下图为使用16 bit short(整型)Tif格式文件,注意同样为光标所指区域,可是在显示RGB三通道数值时,变成了"0.39478,0.21558,0.08997",如图4.051所示。


可以看到,数据被压缩到0-1的范围内(颜色全部分布在橙色警示线内),如图4.052所示。调节Gain参数后的结果,图像并没有显现出玻璃的细节,而变成了灰色,这是因为图像高亮区域的信息被截断了,没有保留下来,如图4.053所示。


上面的案例让我们非常惊叹于浮点类型的数据与整型类型的数据之间的差距。可以看出,浮点类型的数据有着明显的优势,其实它的这些优势同胶片非常相似,这也是为什么在制作电影特效时需要使用浮点类型的数据。

这里我们再来看一下胶片素材的显示效果,如图4.054所示,这是一张夜景的胶片数字图像。

放大其室内着火的区域,也是高曝光区域,如图4.055所示,光标所指像素区域的数值为9.49619,5.41802,2.47059,同样数值是大于1的。


降低显示Gain时,可以看到火焰的细节全部都被展现出来了,完美地还原了其原始的显示效果,如图4.056所示。


当然,胶片的魅力远不止这点,但其较高的宽容度却可以称之为最重要的一点,因为只有这样才可裂保证胶片在放映过程中充分还原其原始的显示效果。毕竟电影始终要带给我们最高的视觉享受。在进行电影后期特效制作过程中,需要无时无刻地注意素材的宽容度。特别是在这种有高亮度信息显示的镜美中,如果合入的素材没有较高的宽容度,那么势必会造成素材之间融合出现问题。因此无论是三维渲乘出来的素材文件,还是后期素材,都要尽量保证其为Float[浮点]型数据。