首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用已知的正交(相机)投影矩阵将2d中的点转换回3d?

将2D点转换回3D点在计算机视觉和图形学中是一个常见的问题。对于正交投影矩阵,这个问题可以通过一些数学推导来解决。正交投影矩阵通常会丢失深度信息,因此从2D点恢复3D点需要一些假设或额外的信息。

正交投影矩阵

正交投影矩阵通常是一个4x4矩阵,用于将3D点投影到2D平面。假设正交投影矩阵为 PP,它的形式通常如下:

P=[1000010000000001]P=​1000​0100​0000​0001​​

这个矩阵将3D点 (x,y,z,1)(x,y,z,1) 投影到2D点 (x,y,0,1)(x,y,0,1)。

从2D点恢复3D点

由于正交投影丢失了深度信息 zz,我们需要一些假设来恢复3D点。常见的假设是我们知道3D点所在的平面,或者我们有额外的深度信息。

假设已知深度 zz

如果我们知道2D点对应的深度 zz,我们可以直接恢复3D点。假设2D点为 (u,v)(u,v),已知深度为 zz,则3D点 (x,y,z)(x,y,z) 可以通过以下方式计算:

x=ux=u

y=vy=v

因此,3D点为 (u,v,z)(u,v,z)。

假设已知3D点所在的平面

如果我们知道3D点所在的平面,例如 z=z0z=z0​,我们也可以恢复3D点。假设2D点为 (u,v)(u,v),已知平面为 z=z0z=z0​,则3D点 (x,y,z)(x,y,z) 可以通过以下方式计算:

x=ux=u

y=vy=v

z=z0z=z0​

因此,3D点为 (u,v,z0)(u,v,z0​)。

示例代码

以下是一个Python示例代码,演示如何从2D点恢复3D点,假设已知深度 zz

代码语言:javascript
复制
def convert_2d_to_3d(u, v, z):
    """
    将2D点 (u, v) 转换为3D点 (x, y, z),假设已知深度 z。
    
    参数:
    u (float): 2D点的x坐标
    v (float): 2D点的y坐标
    z (float): 已知的深度值
    
    返回:
    (float, float, float): 3D点 (x, y, z)
    """
    x = u
    y = v
    return (x, y, z)

# 示例
u, v = 10, 20
z = 5  # 假设已知深度
x, y, z = convert_2d_to_3d(u, v, z)
print(f"3D点: ({x}, {y}, {z})")
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

坐标系与矩阵(6)模型视图投影矩阵

至此,我们介绍了模型视图矩阵,这里,多插一句,就是法线转换。已知: ? 此时,已知 ? ,对应法线 ? 。该经过矩阵 ? 转换到新坐标系下,对应法线 ? : ?...两个公式可得,法线变化对应矩阵是逆矩阵: ? 下面进入投影部分,既然是投影,就是一种降维求近似解过程,我们可以理解为洗照片,把3D空间降维到2D,最主要有两种方式:正交投影和透视投影。 ?...正交投影 ? 如上图左侧,相机下形成一个四棱锥,我们会把影像投影到近裁剪面上,这也是各类设备和眼睛成像基本原理,对应常见透视投影。...基于相似三角形和z值特点(近裁剪面所有点不变,远裁剪面的中心不变),可得如果三个结论: ? 可得: ? 这样,最终透视投影矩阵以及投影矩阵有两种情况: ?...这样,我们可以得到最终模型视图投影矩阵,实现将3D空间下 ? 映射到2D平面: ? 下一篇和本篇在原理上没有区别,但主要专注于视觉相机本身范畴。

1K30

基于Python进行相机校准

相机校准目的是找到相机内在和外在参数。 ? 总览 为了校准相机,我们对3D对象(例如图案立方体)成像,并使用3D对象与其2d图像之间3D-2D对应关系来查找相机参数。...在第一部分,我们仅计算内部参数(假设外部参数是已知),而在第二部分,我们共同计算内部参数和外部参数。 内部参数计算 我们使用校准对象是魔方。 我们对立方体进行成像,如下图所示。...2D(x,y)与相应3D(X,Y,Z)之间关系由下式给出 1. x =αx(X / Z)+ s(Y / Z)+ px 2. y =αy(Y / Z)+ py 内部和外部参数计算 在上一部分,我们假设已知外部参数...最简单这种对应关系是在未知相机映射下3DX及其图像x之间。给定足够多这种对应关系,可以确定相机矩阵。 算法 假设给出了3D2D图像之间许多点对应关系。...验证计算参数准确性 为此,我们将计算重新投影误差,该误差是对2D与通过使用计算出相机参数投影3D而获得2D之间距离度量。 该图以橙色显示了原始2D,并以绿色显示了重新投影

1.3K20
  • 三维重建——相机几何参数标定

    三维重建——相机几何模型和投影矩阵,我们已经看到了透视相机成像模型和相机矩阵: 现在我们来思考一个问题,如果已知一系列3D和其对应2D图像,如何通过上述模型求得相机矩阵P,进而求得相机内参...以上表达式经典求解方法是采用SVD分解,A分解为3个特别矩阵乘积: 其中,V矩阵正交矩阵,而∑是一个对角据阵,对角元素都是非负。那么上式解p就是V对应着最小奇异值那一列。...1.7 实施方案及小结 本节我们介绍了直接线性变换法DLT, 它通过已知3D2D对来求得相机矩阵,进一步分解得到相机内参数K和外参数R、t。如何获取3D-2D对信息呢?...你可以看见,代数距离实际上优化已知3DX和2Dxi投影Xi'之间距离。这并不是一个最优距离函数。...那么几何距离就是3DXi通过投影矩阵投影2Dxi'和实际成像2Dxi之间距离(下图中红线段) 用公式表达即为: 那么,整个优化过程就变成了最小化这个距离过程 有很多优秀软件包可用用于进行上式

    1.3K10

    理解单目相机3D几何特性

    所以我们首先必须了解相机如何3D场景转换为2D图像基本知识,当我们认为相机坐标系物体场景是相机原点位置(0,0,0)以及在相机坐标系X、Y、Z轴时,摄像机3D物体场景转换成由下面的图描述方式...摄像机投影矩阵 上图中所示关系由相机投影矩阵公式或相机矩阵P更全面定义,摄像机矩阵P解释和推导如下所示: 在三维世界中选择一个参考点,将其标记为原点,并定义世界坐标系轴,世界坐标系旋转并平移到相机坐标系下...在世界坐标系定义三维现在位于相机坐标系。...这里b[x,y,z,1]有助于用[R | t]进行积,以获得3D空间中该相机坐标,R表示旋转矩阵,t表示平移矩阵,该矩阵首先将旋转到相机坐标系方向,然后将其平移到相机坐标系,[R | t]也称为相机外参矩阵...相机坐标系定义一个可以用K(摄像机矩阵投影到图像平面上,K是一个内参矩阵,它采用fx和fy,将相机坐标系x和y值缩放为图像平面的u和v值,此外,K还涉及sx和sy,它们图像原点从图像中心转换到左上角图像坐标系下

    1.6K10

    基于消失点相机自标定(1)

    摘要 相机是通过透视投影变换来3D场景转换为2D图像。在射影变换,平行线相交于一称之为消失点。本文详细介绍了两种利用消失点特性标定方法。...相机校准最后一步是计算平移向量t。假设我们已知场景已知长度一小段,其两个端点中第一个位于世界原点。在不失概括性情况下,世界中心可以在场景任何一上选择。...线段由世界P1=[0,0,0]T和P2=[xp2,yp2,zp2]T确定,如下图所示。 ? 由于旋转矩阵R已知,我们可以线段与其在相机坐标系图像对齐: ?...唯一需要计算固定参数是焦距。通过以下单应性,三个相互正交方向对应消失点投影到图像平面上: ? 这三个消失点可以用比例来表示为: ? 考虑到投影矩阵分解,等式(2)所示,可得: ?...为了计算它们,可以通过分离比例因子λi并使用无穷远处齐次与平移向量相乘来重新排列方程: ? 两边方程乘以(KR)T,并考虑旋转矩阵正交性约束,得到: ? 这里定义Q矩阵为 ?

    3.7K21

    一文详解PnP算法原理

    PnP(Perspective-n-Point)问题几何结构如图1所示,给定3D坐标、对应2D坐标以及内参矩阵,求解相机位姿。...已知: 求解相机外参:R、t 透视投影模型为: 每组3D-2D匹配对应两个方程,一共有12个未知数,至少需要6组匹配。...因此, 旋转矩阵, 平移矩阵求得: 2.P3P P3P问题是已知三个3D目标点与其2D投影之间对应关系,来确定标定相机位姿问题。...解个数直接对应于四次多项式实根个数。要得到唯一解,至少还应引入一,构建2个三角形,进行求解。另一种方法是RANSAC算法,该算法集划分为3个点子集,检查这些子集一致性。...3.2求解旋转角和平移矢量方程 相机坐标系与新坐标系绕之间旋转矩阵: 其中, 3.3获取相机位姿 再获取到相机坐标系与新坐标系绕之间旋转和平移矩阵,进而可直接相机坐标系与世界坐标系绕之间旋转和平移矩阵

    3K20

    基础渲染系列(一)图形学基石——矩阵

    但是,我们不会使用该方法,因为有一些有用转换会改变底部行。 5 投影矩阵 到目前为止,我们一直在3D一个位置转换为3D空间中另一个位置。但是这些最终如何在2D显示器上绘制呢?...这需要从3D空间转换为2D空间。我们可以为此创建一个Transform矩阵! 对相机投影进行新具体转换。从单位矩阵开始。 ? 将其添加为最终转换。 ?...(相机投影最终结果) 5.1 正交相机3D2D最直接方法是简单地放弃一个维度。这会将3D空间折叠成一个平面。该平面就像画布一样,用于渲染场景。让我们放弃Z维度试试,看看会发生什么。 ? ?...(正交投影) 实际上,网格变为2D了。但你仍然可以缩放,旋转和重新放置所有内容,之后会将其投影到XY平面上。这是基本正交摄影机投影。 我们原始相机位于原点,并朝正Z方向看。...从齐次坐标转换为欧几里得坐标,然后进行所需划分。 ? ? 正交投影最大区别是不会直接向下移动到投影平面。 相反,它们会朝着相机位置(原点)移动,直到撞到切面。

    4.9K23

    自动驾驶视觉融合-相机校准与激光投影

    然而激光雷达得到3D云, 而单目相机得到2D图像, 如何3D空间中投影到图像平面上, 从而获得激光雷达与图像平面相交区域, 是本文研究重点....上文提过, 在相机世界, 3D外界转换到2D图像像素转换方程是 我们可以通过相机内在参数 intrinsic camera parameters 实现这一换....需要注意是缩放成分S已集成到内矩阵K, 因此不再是外参矩阵一部分. 3D 投影方程 通过各个外参矩阵和内参矩阵进行级联, 实现了3D激光雷达到2D图像平面上投影....以下等式说明了如何使用齐次坐标在相机0图像平面上将空间中3D激光雷达X投影2D像素Y(使用Kitti自述文件表示法): RT_velo_to_cam * x :是Velodyne坐标...如果P_rect_00改成P_rect_2, 也就是从参考相机0投影相机2像素坐标系(其他相机相对与相机0有偏移b(i)). 以下为实现激光雷达3D投影2D图像平面的步骤: // 1.

    1.7K11

    3D图形学线代基础

    标题所言都是些很基础但是异常重要数学知识,如果不能彻底掌握它们,在 3D 世界寸步难行。...你可能有点疑惑了,本文标题写3D,但是文中例子却都基于 2D 坐标系?...正交矩阵 对于某个矩阵 A,如果其置换矩阵等于其逆矩阵,则称该矩阵 A 为正交矩阵: ? 已知某个矩阵正交矩阵,那么就可以根据上述性质快速求出其逆矩阵;以旋转变换为例(旋转矩阵正交矩阵): ?...视图矩阵 相机坐标系三个轴示例图所示分别为相机 Y 轴(上方向)、相机 Z 轴(相机视线反方向)以及相机 X 轴(右方向);在初始化相机时我们设置了相机位置 P(p1,p2,p3)、相机焦点...由于旋转矩阵正交矩阵,其逆矩阵等于其矩阵;根据矩阵规律,可得: ? 最终求得视图矩阵如下: ? 投影矩阵 投影矩阵则会把相机坐标系场景转换到投影平面上,以透视投影为例: ?

    2K31

    自动驾驶:Lidar 3D传感器云数据和2D图像数据融合标注

    相机数据本质上是2D,它不提供对象距离。尽管可以使用摄像头传感器焦距和光圈来近似物体深度,但是由于在摄像头传感器3D场景捕获到2D平面上时会固有地丢失信息,因此无法精确定位。...相机传感器数据和激光雷达云数据融合涉及2D3D3D2D投影映射。 3D2D投影 硬件 我们从Motional提供最全面的开源数据集开始:nuScenes数据集。...随后,激光雷达每一帧图像将被转换回世界坐标系统。摄像机矩阵M1, M2, M3, M4, M5, M6将从每个摄像机坐标系统C1, C2, C3, C4, C5, C6换回世界坐标系统W1。...3D云数据转换为世界坐标系 通过与自我框架平移和旋转矩阵相乘,激光雷达参考系(L1)每个框架都将转换回世界坐标系。...从3D相机坐标系转换为2D相机框 一旦数据进入相机参考框架,就需要将其从3D相机参考框架投影2D相机传感器平面。这是通过与相机固有矩阵相乘来实现

    3K21

    GAMES101

    (projection transformation) 定义相机 位置 往哪看 向上方向 现实是移动相机,变换景物 图形学相机不动,永远在原点 经过变换,把相机位置移动到原点,同时保持看到景物不变...又因为旋转矩阵正交矩阵,所以他矩阵就只需要置一下就可以得到了! 注意,不但相机要做这个变换,其他物体也要做这个变换,因为我们想让相机看到景物相对不变。...Projection (投影) transformation 3D to 2D Orthographic (正交) projection 没有近大远小 平行投影 首先定义空间中一个立方体,...(1, 0, 0) how to do perspective projection 先将frustum远平面,挤压成和近平面一样大(从左图变成右图) 再做正交投影投影到近平面 上述操作过程几点假设...如何求解第三行 任何近平面上不会改变(也就是对于任意(, , , 1),经过这个矩阵变换后,位置仍然不变) 任何远平面上,值不会改变 (, , , 1)是可以通过矩阵变换得到(, ,

    1.3K30

    68. 三维重建3-两视图几何

    三维重建2——相机几何参数标定中介绍了相机透视几何模型,以及如何求取这个模型各项参数 现在我们来思考一个问题:如果已知某个图像坐标,如何能够求得它在三维空间中位置?...关于这一,你齐次坐标的知识,你可以再看看我在66. 三维重建1——相机几何模型和投影矩阵介绍。...注意这里用了^符号来标明相机坐标系坐标: 很容易通过Longuet-Higgins等式得到下面的式子,这就是基础矩阵F由来: 所有本质矩阵E性质,基础矩阵都继承了,只不过应用时2D坐标位于图像像素坐标系...今天延续上一篇文章,我讲解了下面几部分内容: 三角测量:已知一对投影,和相机矩阵,如何反求空间中 对角几何:对同一场景用两个相机成像时几何约束关系 本质矩阵:在相机坐标系对极几何约束数学关系...基础矩阵:在图像像素坐标系对极几何约束数学关系,以及如何用8法来求基础矩阵 因为篇幅原因,我省掉了如何通过非线性最小二乘法自动求解基础矩阵过程。

    87920

    变换(Transform)(2)-坐标空间变换

    假设我们已知子坐标空间\mathbf{C} 三个坐标轴\mathbf{P} 下表示是:\mathbf{[x_c, y_c, z_c]} ,以及\mathbf{C} 原点在\mathbf{P}表示是...而这个旋转就是一个正交矩阵,所以直接置即可,也就是: 如果对 观察空间中坐标轴在世界空间表示是uvw,那么世界空间坐标轴旋转成观察空间矩阵是u v w感到困惑的话,请再次阅读本章节最上面的 坐标空间变换...同样地,在各种引擎以及自己设计小系统时,不会用这6个参数来表示正交投影可视空间 正交投影可视空间相比于透视投影要简单得多,要定义一个需要依赖摄像机以及三个参数: 相机与近裁剪平面的距离Near 相机与远裁剪平面的距离...也就是说跟正交投影矩阵一样,透视投影矩阵也有z轴反转(深度值越大离相机越远)形式: \left....至此,通过模型变换到屏幕变换,实现了3D场景投影到了2D屏幕上。

    8220

    opengl投影矩阵变换_opengl 坐标

    由OpenGL渲染3D场景必须作为2D图像投影到计算机屏幕上。GL_PROJECTION matrix投影 矩阵 用于此投影 转变。首先,它将所有顶点数据从眼睛坐标(相机坐标系)转换为裁剪坐标系。...翻译: 视锥体裁剪剔除和标准化设备坐标(NDC) 在透视投影,一个3D是在一个截去上半部分金字塔形状内(视图坐标系)被映射到一个立方体(NDC);x坐标的范围从[l,r]到[-1,1],y坐标的范围从...由于glFrustum()函数只接受参数near和far参数距离值为正,我们必须在投影矩阵创建期间把near和far取反。 在openGL,在视图空间中一个3D,被投影到近平面(透视面)。...翻译 现在,我们只需要处理投影矩阵前三行。找到Zn和Xn、Yn有一不同,因为在视图坐标总是投影到-n近平面。我们需要为唯一z值做裁剪和深度测试,另外,我们应该能够对他取消投影(逆变换)。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站立刻删除。

    1.7K10

    【笔记】《游戏编程算法与技巧》1-6

    但因此3D图形向量也有行和列两种等价表示方式, 对应变换矩阵置与左乘右乘区别....或看为坐标系变换, 这里原本是(0, 1)y轴变换为了(1, 1), 因此整个图形发生了倾斜: 平移: 借助了齐次坐标的特性, 行向量左乘下面的矩阵后, 如果w为1也就是3D的话, 矩阵最下面一行就会起到平移作用...场景变换到相机坐标系所用变换矩阵称为观察矩阵 投影坐标系: 有时称视口坐标系. 将自定义视体变为标准视体过程, 变换后原本自定义视体内容会变换到标准视体....屏幕坐标系: 投影坐标系(-1, 1)进一步移动和缩放到对应屏幕像素分辨率坐标系上, 供给像素着色器处理 投影变换 正交投影: 最简单投影矩阵, 由右侧平移部分和左侧缩放部分组成, 注意这里是基于列向量...而z分量本身则需要保持近似线性插值, 联立方程将近平面和远平面的深度投影到0-1从而求解出第三行两个矩阵系数. 最后这个视体进行一次正交投影映射到(1, -1)即可.

    4.1K31

    SLAM实习生面试基础知识总结

    由于这个函数使用特征同时包含正确和错误匹配,因此计算单应性矩阵依赖于二次投影准确性),统计容差范围内匹配最多作为最适合模型,剔除误匹配。 2....也就是根据相机投影模型构造构造代价函数,利用非线性优化(比如高斯牛顿或列文伯格马夸而尔特)来求最优解,利用雅克比矩阵稀疏性解增量方程,得到相机位姿和特征3D位置最优解。...描述PnP Perspective-n-Points, PnP(P3P)提供了一种解决方案,它是一种由3D-2D位姿求解方式,即需要已知匹配3D和图像2D。...目前遇到场景主要就是SLAM算法估计相机位姿时通常需要PnP给出相机初始位姿,第一帧图像3D以及对应到第二帧图像2D,通过相机成像模型,3D投影到二维平面,通过构建误差目标函数通过优化调整位姿方法使得误差目标函数达到最小...,所以它求得是当前帧相对于上一帧位姿变换,都是基于已知3D和对应图像2D求解相机运动过程。

    2.3K31

    CVPR 2023|Limap:基于3D line重建算法

    λ1和 λ2是投影矩阵,让所有假设三维线端点位于2D端点对应相机光线上。 对于每个匹配2D线段,通过代数线三角化生成一个假设。设 (Rm,tm) 为匹配视图相机姿态。...对于每个2D线段,一个像素阈值内所有2D关联起来,从而与它们对应3D关联起来。...一致性分数是通过对每个图像最佳分数求和来定义: 此时已为每个2D线段分配了唯一3D线 (其最佳3D线候选)。然后目标是这些2D线段集成到3D线track。...为此提出了两种新线评分措施,可以应对不同端点配置和跨图像可变尺度: 重叠分数:L1正交投影到L2上,投影端点剪切到L2端点 (如果它们落在L2之外) 以获得线段 ,并将长度与阈值τ进行比较...最小化能量可以写如下: 分别是优化项,线优化项,线和联合优化项。 eperp是垂直距离,Lk是3D线段2D投影,lk是2D线段,w∠是1减去投影和观测线之间2D角度余弦指数。

    66040

    使用OpenCV实现哈哈镜效果

    视频 图像形成理 我们首先需要了解如何世界上3D投影相机图像坐标系,这部分内容我们默认小伙伴们已经了解,如果不了解,可以简单搜索一下,会有很多讲解文章。这里我们只做一个简单介绍。...世界坐标3D和图像像素具有以下等式映射关系。其中P是相机投影矩阵。 ? ? ? 项目的主要内容 整个项目可以分为三个主要步骤: 创建一个虚拟相机。...定义3D表面(镜面),并使用合适投影矩阵值将其投影到虚拟相机。 使用3D曲面的投影图像坐标来应用基于网格变形以获得有趣镜子所需效果。 下图可能会帮助我们更好地理解步骤。 ?...图1:创建数字滑稽镜像所涉及步骤。创建一个3D表面,即镜子(左),在虚拟相机捕获平面以获取相应2D,使用获得2D点将基于网格变形应用于图像,从而产生类似于滑稽镜子效果。...我们只是想做一些看起来很有趣事情。 我们需要做就是捕获(投影),首先将原始图像(或视频帧)表示为虚拟相机3D平面,然后使用投影矩阵将该平面上每个投影到虚拟相机图像平面上。

    2K20

    3D 可视化入门:渲染管线原理与实践

    因此,需要通过应用视图矩阵(view matrix), 以世界为原点模型坐标 变换为 以相机为原点相机坐标(camera coordinates)。 3.1.1.3 投影矩阵 投影矩阵有两种。...在 WebGL 和 WebGPU ,几何着色器均不可用。 3.2 投影 - Projection 投影分平行投影和透视投影两类。在 3D 渲染中一般使用正交投影和透视投影。...q=camera#webgl_camera 通过切换不同相机,查看透视投影正交投影区别。...在 3D 渲染正交投影可配置参数有 6 个,分别为六面体左右上下远近。...它将 2D 纹理上像素直接映射到 3D 表面上。随着多通道渲染发展,目前有更多各种各样贴图。 凹凸贴图、法线贴图、置换贴图、反射贴图、高光贴图和环境闭塞贴图...

    6.6K21

    高翔Slambook第七讲代码解读(三角测量)

    这里,只有triangulation函数是一个新面孔,在这里阅读以下形参信息,可以预测其功能是通过已知特征2d坐标与特征配对信息,以及刚求解得到相机位姿变化,来求取特征3d坐标。...: 前一帧图像,先将特征2d坐标投影到归一化平面坐标,再将三角化得到3d坐标除以其深度信息来计算其归一化坐标(这里可以看出来三角化处理得到3d坐标是位于前一帧相机坐标系下),并进行对比; 后一帧图像...,同样是先将特征2d坐标投影到归一化平面坐标,再将前一帧相机坐标系下3d进行R、t位姿变换,计算出特征点在当前帧相机坐标系下坐标,再除以其深度值来计算归一化坐标,进而进行比较。...t放到旋转矩阵R右侧,增广成3×4变换矩阵,这里这个变换矩阵更具体来讲为projection matrix(投影矩阵);进而使用pixel2cam两组2d特征像素坐标转化成归一化平面坐标;最后,...可以看出通过三角测量解算出3d坐标点,分别在前一帧与当前帧投影得到归一化坐标,与原始特征2d坐标根据相机内参解算出归一化坐标相差很小,误差在小数点后3位左右。

    2.4K70
    领券