图形学中的世界、相机、Clip(裁剪)、NDC等坐标系

在计算机视觉中,相机模型通常涉及到的坐标系有世界、相机、归一化平面、像素坐标系等。然而,在图形学里面,在NeRF、3D Gaussian Splatting等三维重建方法,在OpenGL中,会遇到一个NDC(Normalized Device Coordinates,归一化设备坐标)坐标系。这里,将仔细地讲解各个坐标系,以及推导公式。

1、世界坐标系

这个坐标系不做过多的介绍,可前往针孔相机模型推导这里学习。在世界坐标系中,假设一个任意的点为:,这里用齐次坐标进行表达。

2、相机坐标系

这个坐标系也不做过多的介绍, 可前往针孔相机模型推导这里学习。在相机坐标系中,任意一个点为:。从世界坐标系转换到相机坐标系,需要一个外参矩阵,也就是旋转矩阵R和平移矩阵T。用公式表达为:

需要注意的是,在上式中用的不是齐次表达。

3、裁剪和NDC坐标系

这两个坐标系可以一起讲,只相差了一个齐次的除法。例如,在裁剪坐标系下,一个点为,其中为齐次坐标表达的第4维,即齐次尺度因子,作为透视除法的分母,控制近大远小。通常,的大小为深度值,也即

从裁剪坐标系转到NDC坐标系,非常的简单,公式如下:

则NDC坐标系下一个点的齐次表达为

从上述表达可以看到,裁剪坐标系和NDC坐标系其实是一回事,就差了一个透视除法。

3.1 相机到裁剪坐标系推导

接下来,最为重要的是,我怎么将相机坐标系转换到裁剪坐标系。两个坐标系之间的变换,通常是使用一个投影矩阵P,也就是:

核心问题,就在于,如何推导获得这个P矩阵(4*4的矩阵)。在图1中,用AI生成了一个图,详细地表达了上面我推导的公式和关系。

图1:相机坐标系到裁剪坐标系的变换示意图(AI生成)

在裁剪坐标系中,有两个很重要的概念,就是近平面和远平面。相机理论上可以看到从相机前方一直延伸到无穷远的区域,但是图形渲染必须要明确,视椎体中哪些点保留,哪些点丢弃。因此,定义了一个近平面和远平面,只有处于这两个平面之间的区域,才会保留并投影。

定义近平面深度值为,远平面深度值为。将投影到近平面上,根据相似三角形,公式为:

在近平面上,为了将坐标值归一化到-1,1之间,需要除以近平面投影面的宽度和高度

相机的视场角大小fovX和fovY是已知的,则可以根据相机视场角大小推导出的大小,推导的过程如下图所示(AI生成):

在获得之后,对的值做一个归一化,就可得到ndc坐标系中的坐标值,公式如下:

如果,我们令,那么上式表达就可以转为一个矩阵表达P,并用齐次坐标进行表达,整理后如下:

上式中,左边是裁剪坐标系,只需要都除以一个就变成了NDC坐标系。在上式中,投影矩阵P中还存在两个未知数,就是A和B。接下来,推到获取A和B。

除以,就可以得到NDC坐标,因为的,因此公式如下:

当近平面的点代入的时候,;远平面的点代入的时候,,根据这个约束,可得到方程:

通过上面两个方程,就可以直接解出A和B的值,分别为:

到这里,就获得了完成的投影矩阵P,通过该矩阵,可以先将相机坐标系转到裁剪坐标系,再除以一个齐次因子,就转到了NDC坐标系。

相关推荐
2601_957418801 小时前
如何开发一个相机照片传输App?从设备连接到图片上传完整流程解析
数码相机
浪里镖客3 天前
Python调用海康MV-CU013-AUOM(USB3.0连接)工业相机录制视频
数码相机
QYR-分析3 天前
手持声学相机行业增速稳健 国产突围开启产业新格局
数码相机
gaosushexiangji3 天前
基于高速3D-DIC的风力叶片旋转工况下应变测量与振动模态分析
数码相机
格林威5 天前
工业相机Chunk功能全解析:图像嵌入时间戳、编码器元数据(附堡盟C#代码)
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
XMAIPC_Robot5 天前
RK3588四路1080P工业MIPI相机视觉网关,同时支持RK3588+FPGA的24路相机同步方案
人工智能·数码相机
吐了啊取名字太难6 天前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程
科技圈快迅6 天前
科美锐(Komery)新手入门数码相机产品梳理:百元到千元,不同价位实际能买到什么
数码相机
OAK中国_官方7 天前
OAK相机 IMU 和外壳标定
数码相机