计算机视觉中法线(normal)相关知识详解
计算机视觉中法线(normal)相关知识详解
本文系统地介绍了计算机视觉中法线(normal)的相关知识,包括法线的定义、法线图的渲染、法向量转伪彩色图的方法、法线预测方法以及法线预测的下游任务。文章适合计算机视觉领域的初学者阅读。
1. 法线是什么
在计算机视觉中,法线是一个物体表面任意一点的切平面的法向量。宏观上看来,法向量就是垂直于物体表面的向量。预测法线的原因是法线是一个2.5D的表达,预测一个2D场景中的法线可以让我们获得场景的三维信息,因此法线可以算是一个三维先验。
2. 标准的法线图
根据普遍认知,一个物体的法线图的坐标系是右手坐标系,即x轴向右,y轴向上,z轴垂直电脑屏幕向外。我们可以通过观察一个球的法线图来了解坐标系并且了解通用的法线伪彩色图的样子,下图是从BiNI论文中截取的球的法线图。
从上图可以看出坐标系的设定,并且可以看出球的法线图右侧是偏红色的,上侧是偏绿色和黄色的,而右侧是偏蓝色的。我们将这种法线图认为是标准的法线。
需要注意的是,很多论文中看到的法线图颜色可能不同,这是因为每个论文的坐标系设定不一样。标准法线的坐标系的设定是相机坐标系,并且相机坐标系遵循右手坐标系,这样任何物体的任何角度的法线图的颜色都符合上图,更加的统一。在科研中,可能会遇到使用物体坐标系、世界坐标系来生成法线图的情况,还会有虽然是相机坐标系但不是右手坐标系的情况,这些都需要特别注意。
那么如何去渲染法线图呢?在一些真实世界数据集中,有传感器可以直接获取法线图,在这里不多赘述,主要介绍合成数据集的法线图生成。使用blender工具进行生成时,将相机放到世界坐标系原点,视角朝着z的负半轴,即可生成一张物体的标准法线。
3. 法向量转为伪彩色图方式
获取到的法向量的原始范围是[-1,1]的,所以首先需要将其映射到[0,1]的范围内,即设法向量为n,将(n+1)/2即可将其映射到[0,1]范围内,之后根据需要选择8位彩色或16位将其255或者65535即可,这样获得的伪彩色图即为标准法线图。需要注意的是,只有当法向量的坐标符合标准情况,获取的法线图才为标准法线图,如果向量方向不对,可以先修改法向量坐标(即对应坐标值取反),然后再生成法线图。
如果想从一张png格式的法线图获取法向量真值,只需要将上述计算反过来即可。
法线图只是一种法向量可视化的方法,存储的还是真正的法向量,.npy格式和.png格式的法向量只在精度上有细微差距。在之前还遇到了.exr高动态范围格式的法向量,这个格式的法向量的范围是[0,1]。
4. 法线预测方法
随着深度学习和diffusion模型的发展,从最早的纯深度学习和光度立体的预测法线的方法,逐渐进化到了目前使用Diffusion模型生成法线的方法。在光度立体领域,是使用同一个相机视角下不同光照方向的多张图对于物体表面的法线进行预测,常见的假设有朗伯表面预测,标定光照方向预测,这些假设都是不符合真实世界情况的,不具有通用性。2023年CVPR的论文SDM-Unips完成了通用的光度立体网络,只需要输入图片即可预测法线,这是光度立体领域的一个重要工作,其数据集的质量非常高。
2024年有很多工作使用Diffusion技术来预测法线,首先是wonder3d,其在预测法线后进行三维重建,但是wonder3d的预测效果很差。之后是geowizard,此文章联合预测深度和法线,效果稍好。之后是genpercept和stable normal,这两篇文章通过将diffusion这种概率模型转为一种确定性(deterministic)模型来使法线的预测更加稳定,stable normal目前在单图法线预测上效果最优。还有一些通过回归预测的方式,例如dsine等等,在此不多赘述,想了解的同学可以自己去看。
如果希望了解目前这些技术的法线预测效果,huggingface官网提供了demo可以上传图片直接生成法线,感兴趣的可以用过搜索geowizard, stable normal等关键词尝试。
5. 法线预测后的下游任务
法线是一种2.5D的表达,其中包含了一定的三维信息,所以是能够有下游应用的。在Bilateral normal integration文章中,根据法线生成了物体的surface,说明精确的法线图的可以进行三维重建的。同时法线可以作为先验进行监督,目前NeRF,3DGS等三维表达都可以渲染出法线,真实的法线可以监督三维重建过程。总之,法线的预测的应用还是很多的。
综上所述,本文对于法线的一些基础知识进行了汇总,希望可以帮助初学者。