问题标签 [projective-geometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
868 浏览

matlab - 如何实现 3d 重建算法

最近我一直在研究从多个 2d 视图进行 3d 重建。我读过的大部分内容都集中在基本矩阵、极线几何和该主题的其他理论原理上。假设给定两张图像,我知道如何计算每个 2d 点对应的 3d 点。

我的问题是:

  1. 我应该使用哪些软件或库来显示 3d 模型?
  2. 我如何表示 3d 模型?

我知道可以使用 MATLAB 或 OpenCV,但我没有找到任何讨论如何使用它的内容。

0 投票
1 回答
2768 浏览

matlab - 将 3D 世界点反向投影到新的视图图像平面

编辑:

我所拥有的:相机内在因素、校准外在因素、2D 图像和深度图

我需要什么:2D 虚拟视图图像

我正在尝试为基于深度图像的渲染生成一个新颖的视图(右视图)。这样做的原因是在必须重建右视图的接收器处只有左图像和深度图可用(参见图像)

我想知道这些步骤是否会给我想要的结果或者我应该做什么,

首先,通过使用 CalTech 的 MATLAB 相机校准工具箱,可以获得内在、外在矩阵。

然后,可以通过这种方法“ http://nicolas.burrus.name/index.php/Research/KinectCalibration#tocLink2 ”使用校准参数将它们映射到3D世界点

现在,我想将此投影到新的图像平面(右视图)。右视图只是左视图的平移,并且由于设置而没有旋转。我该如何进行这种重建?

另外,我可以从 MATLAB 立体校准工具估计 R 和 T,并使用 P2 = R*P1+T 将原始左视图中的每个点转换为右视图吗,P1 和 P2 是 3D 世界点 P 在各自平面上的图像点。

非常感谢任何想法和帮助,如果问题不清楚,将重新措辞/添加细节。

0 投票
0 回答
401 浏览

opencv - 给定相机运动,从两幅图像重建 3D 点

我正在尝试从同一相机拍摄的两张图像中重建 3D 点的真实坐标。相机未校准,但运动(平移和旋转)是已知的。简而言之:

要求:

  • 无需校准

除了图像点对应之外的额外约束:

  • 已知的相机平移和旋转
  • 在所有视图中使用相同的相机

我知道,仅从图像点对应关系来看,一个场景只能被重建到一个投影变换。通过更多的约束,可以进行仿射或相似性重建。就我而言,我需要进行相似性重建。

鉴于上述限制,相似性重建是否可能?如果可能的话,我应该怎么做?

我试图从几个角度来解决这个问题。由于我数学不流利,所以我尽量使用opencv。

  1. findFundamentalMat()从这两个图像中,希望以某种方式提取两个相机矩阵,然后triangulatePoints()。你可能已经猜到了,我被困在了中间,无法从基本矩阵中获取相机矩阵。

    教科书“计算机视觉中的多视图几何”(Hartley 和 Zisserman 着)给出了一个表达式(第 256 页,结果 9.14),它根据基本矩阵和极点之一来表达相机矩阵。但是,在不知道相机的内在参数(要求:无需校准)的情况下,我不知道如何获得对极。

  2. 我还尝试将我的问题视为立体声系统并使用 opencv 的stereo***功能。但是它们似乎都需要人工干预来校准,这违反了我的要求。

所以,这就是我今天在这里提出这个问题的原因。关键仍然是,考虑到这些额外的限制,相似性重建是否可能?我不够聪明,无法理解那里的丰富知识,也无法提出自己的解决方案。任何帮助表示赞赏。

0 投票
0 回答
284 浏览

matlab - 卫星图像的单应图像变换问题

我想将单应性应用于卫星图像。我发现这篇文章很有帮助。所以我决定使用相同的 Matlab 代码。

但输出只是小盒子。我正在使用 MATLAB 2015b 在此处输入图像描述

使用imtransform编辑单应性maketform

输出 在此处输入图像描述

我怎样才能从中心做到这一点。像这样的东西 在此处输入图像描述

0 投票
1 回答
944 浏览

c++ - 投影几何 - 使用 eigen 在 3D 中查找平面

我正在尝试用 3D 中的三个点构建一个平面。我想使用射影几何来实现这一点。

据我所知,可以“简单地”解决以下问题来找到飞机:

我知道我需要有一个约束。因此我想设置x(3) = 1. 有人可以指点我正确的使用方法吗?

到目前为止,我有以下代码:

0 投票
0 回答
171 浏览

opengl - 两帧间变换的模型变换

给定:a)运动物体的两帧和它们之间的欧几里得变换(旋转+移位),将第一帧上的对象投影与其在第二帧上的投影对齐。b) 第一帧的模型变换矩阵;c) 两个帧的视图和投影矩阵相同。

如何找到第二帧的模型变换矩阵?谢谢。

0 投票
1 回答
479 浏览

graphics - 如何根据两个连续帧的投影变换矩阵估计相机位姿?

我正在研究 kitti 视觉里程计数据集。我使用投影变换来注册两个 2D 连续帧(请参见此处的投影变换示例 )。我想知道这个 3*3 的投影变换矩阵是如何与 kitti 数据集提供的 ground truth 姿势相关的。

该数据集给出了序列的真实姿态(轨迹),如下所述:

文件夹“姿势”:

文件夹“pose”包含前 11 个序列的基本真实姿势(轨迹)。此信息可用于训练/调整您的方法。每个文件 xx.txt 包含一个 N x 12 表,其中 N 是该序列的帧数。第 i 行通过 3x4 变换矩阵表示左相机坐标系的第 i 个姿势(即,z 指向前方)。矩阵以行对齐的顺序存储(第一个条目对应于第一行),并在第 i 个坐标系中取一个点并将其投影到第一个 (=0th) 坐标系中。因此,平移部分(第 4 列的 3x1 向量)对应于第 i 帧中左侧相机坐标系相对于第一(=第 0)帧的位姿。您的提交结果必须使用相同的数据格式提供。

给定真实姿势的一些样本:

1.000000E+00 9.043680E-12 2.326809E-11 5.551115E-17 9.043683E-12 1.000000E+00 2.392370E-10 3.330669e-16

9.999978e-01 5.272628e-04 -2.066935e-03 -4.690294e-02 -5.296506e-04 9.999992e-01 -1.154865e-03 -2.839928e-02 2.066324e-03 1.155958e-03 9.999971e-01 8.586941 e-01

9.999910E-01 1.048972E-03 -4.131348E-03 -9.374345E-02 -1.058514E-03 9.9999968E-01 -2.3081.308104E-03 e+00

9.999796E-01 1.566466E-03 -6.198571E-03 -1.406429E-01-01 -1.587952E-03 9.9999927E-01-01 -01 -3.462706E-036E-03-03-049979715762E-515762E--515762E--515762E--515762E-192EY2E-192EENEM e+00

9.999637E-01 2.078471E-03 -8.263498E-03 -1.874858E-01 -2.116664E-03 9.9999871E-01-01-01-01-4.4.615826E-03-015826E-03 -1.1.1.135202E-135255334EE1 8.2555555555555555555555555555555555555555555555555555555555555555555太平值e+00

9.999433e-01 2.586172e-03 -1.033094e-02 -2.343818e-01 -2.645881e-03 9.999798e-01 -5.770163e-03 -1.419150e-01 1.031581e-02 5.797170e-03 9.999299e-01 4.291335 e+00

9.999184E-01 3.088363E-03 -1.239599E-02 -2.812195E-01 -01 -3.174350E-03 9.999710E-01-6.922975E-03-01-01-01-03-01.703-1.7027443E.7497955555555555555555555555555555555555555555555555555555飞机e+00

9.998890e-01 3.586305e-03 -1.446384e-02 -3.281178e-01 -3.703403e-03 9.999605e-01 -8.077186e-03 -1.986703e-01 1.443430e-02 8.129853e-03 9.998627e-01 6.007777 e+00

9.998551e-01 4.078705e-03 -1.652913e-02 -3.749547e-01 -4.231669e-03 9.999484e-01 -9.229794e-03 -2.270290e-01 1.649063e-02 9.298401e-03 9.998207e-01 6.865477 e+00

9.998167e-01 4.566671e-03 -1.859652e-02 -4.218367e-01 -4.760342e-03 9.999347e-01 -1.038342e-02 -2.554151e-01 1.854788e-02 1.047004e-02 9.997731e-01 7.724036 e+00

9.997738E-01 5.049868E-03 -2.066463E-02 -02 -4.687329E-01 -5.289072E-03 9.9999194E-01-01 -1.1.153730E-02 e+00

9.997264E-01 5.527315E-03 -2.27292E-02 -5.155474E-01-01 -5.816781E-03 9.999025E-01 -01 -1.268908E-02-02-02-02-02-3.121547EED1 2.21547ENE1 2.21565656EENEM e+00

9.996745E-01 6.000540E-03 -2.479692E-02 -5.624310E-01-01 -6.345160E-03 9.998840E-01-01-01-1.384246E-02 -.3.405416E.40199898989877777777777198ENE-0198ENE-0198ENE-0198ENE-0198ENE e+01

9.996182e-01 6.468772e-03 -2.686440e-02 -6.093087e-01 -6.873365e-03 9.998639e-01 -1.499561e-02 -3.689250e-01 2.676374e-02 1.517453e-02 9.995266e-01 1.115757 e+01

9.995562E-01 7.058450E-03 -2.894213E-02 -6.562052E-01 -01 -7.530449E-03 9.998399E-01-01-01-1.623192E-02 E.623192E-02-3.973964E122EN12EEN12EEN12EEN12EEN2EE1 2E2292EEN2EEMEN-012EN2EEN2EEME e+01

9.995095E-01 5.595311E-03 -3.081450E-02 -7.018788E-01 -01 -6.093682E-03 9.998517E-01-01-1.610315E-02 -02 -02-4.239119E1919E1197111983ENY111983ENEME e+01

0 投票
1 回答
2054 浏览

computer-vision - 给定两个相机之间的旋转和平移计算单应性

我知道可以通过使用至少四个对应点来计算单应矩阵。

我想知道如果我已经知道两个相机之间的旋转和平移,包括相机内在函数,我是否以及如何获得单应矩阵?

我发现了一些看起来像这样的东西

H= K R K^-1

但这假设是纯旋转。纯翻译会是什么情况?如果我想用不是纯粹来自平面上的点的单应矩阵来扭曲图像怎么办?

我现在有点困惑,真的很感激任何解释!先感谢您!

0 投票
1 回答
3121 浏览

image-processing - 计算透视图像中两点之间的距离

我想验证透视图像中两点 C 和 D (CD) 之间的距离。

这张照片是在我的客厅里拍的。每个瓷砖的尺寸为 0.6x0.6(以米为单位)。

在此处输入图像描述

真实世界测量:

A 点和 D 点 (AD) 之间的距离 = 1.8 米。A点和B点之间的距离(AB)= 0.6米

图像平面坐标:

A' = (232, 613)

B' = (221, 341)

C' = (215, 189)

D' = (210, 98)

在此处输入图像描述

我使用交叉比率来计算 CD。

R{A', B', C', D'} = 1.316

R{A,B,C,D} = (AC * BD)/(AD * BC)

经过计算,CD为0.584m(而不是0.6m)

问题:

1) 我用来验证 CD 的方法是否正确?

2)我是否应该考虑 A 和 D 之间的角度(不是 90 度)

3)我应该在这里研究消失点吗?

4) 如果我们不知道 A 和 B 之间的真实世界距离,而只知道 AC 和 AD,是否可以计算 B 和 A 或 B 和 D 之间的距离?

5) 上面计算的差0.016m,可以接受吗?

我是投影几何的新手。如果我做错了什么,请告诉我。

0 投票
1 回答
1617 浏览

opencv - 齐次坐标是否通过在相机成像中附加带有 1 的图像坐标来表示

在相机成像中,点坐标有几个术语。

世界坐标:[X, Y, Z] 物理单位

图像坐标:[u, v] 以像素为单位。

这些坐标是否通过附加 1 成为齐次坐标?有时在书籍和纸张中它由 [x, yw] 表示。w什么时候用?什么时候用1?

在函数initUndistortRectifyMap,http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#void%20initUndistortRectifyMap(InputArray%20cameraMatrix,%20InputArray%20distCoeffs,%20InputArray%20R,%20InputArray%20newCameraMatrix, %20Size%20size,%20int%20m1type,%20OutputArray%20map1,%20OutputArray%20map2)

应用以下过程

在此处输入图像描述

坐标 [xy 1] 有一个术语吗?我不明白为什么 R 可以应用于 [xy 1]?在我看来,R 是 3D 的转换。[xy 1] 是一个 2d 点还是一个 3d 点?

[uv]->[xy]->[xy 1]->[XYW]->[x' y'] 坐标按照上面的链处理。其背后的原理是什么?