问题标签 [structure-from-motion]

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 投票
0 回答
272 浏览

opencv - Opencv triangulatePoints 函数没有给出世界单位的距离

我想估计世界单位的 3D 坐标。我使用立体 3D 重建技术。我用鼠标从左右立体图像中手动选择相应的点。两幅图像都是用安装在移动车辆上的同一个相机拍摄的。我使用 opencv 来找到两个相机之间的基本矩阵和姿势。然后我使用 opencv triangulatepoint 函数在世界单位中查找对象的 3D 坐标。我得到了坐标,但我认为这些坐标是按比例缩放的。它们不在实际世界单位中。让我知道如何在世界单位中获取坐标到左相机。如果我选择少于 6 个对应关系,则 triangulatePoints 函数也不起作用。如果对应数小于 6,请告诉我如何使用三角函数。

提前致谢 !!

0 投票
1 回答
1208 浏览

python - Why do triangulated points not project back to same image points in OpenCV?

I have two corresponding image points (2D) visualized by the same camera with intrinsic matrix K each coming from different camera poses (R1, t1, R2, t2). If I triangulate the corresponding image points to a 3D point and then reproject it back to the original cameras it only closely matches the original image point in the first camera. Can someone help me understand why? Here is a minimal example showing the issue:

The reprojection error in the first camera is always good (< 1px) but the second one is always large.

0 投票
0 回答
325 浏览

matlab - 在 Matlab 中使用多个 2D 图像的 3D 点云

我正在尝试在 MATLAB 中从具有多个视图的运动构造结构但是关于相机参数出现错误请告诉我如何从 356 RGB 航空图像创建我自己的相机参数以及如何使用 MATLAB 从这些图像构造 3d 点云请帮助我这将是一个很大的恩惠。

我试图从 exif 文件和元数据中导出相机信息作为相机参数

这是此示例代码中的错误https://www.mathworks.com/help/vision/examples/structure-from-motion-from-multiple-views.html,当我在我的数据上实现它时

未定义的函数或变量“cameraParams”。

StructureFromMotionFromMultipleViewsExample 中的错误(第 80 行)I = undistortImage(images{1}, cameraParams);

我期望来自多个图像的输出 3D 点云模型

编辑

这是代码最后一行包含错误。

0 投票
1 回答
1006 浏览

python-3.x - 使用运动结构进行 3D 重建

我想使用 Structure-from-motion 算法进行 3D 重建。我正在使用 opencv 在 python 中执行此操作。但是有些获得的点云是如何分成两半的。我的输入图像是: 图像 1 图像 2 图像 3。 我将每 2 个图像匹配,例如 image1 与 image2 和 image2 与图像 3。我尝试了不同的特征检测器,如 SIFT、KAZE 和 SURF。使用获得的点,我计算基本矩阵。我从 Opencv 的相机校准中获得了相机内在函数,并存储在下面代码中的变量“mtx”和“dist”中。

在 cv2.triangulatePoints 之后,我希望获得一个点云。但是我得到的结果有 2 个表面,如下图所示。

结果 1. 如果有人能告诉我我的算法出了什么问题,我真的很感激。谢谢!

0 投票
1 回答
214 浏览

computer-vision - 如何从共享相机视图的两个基本矩阵计算相对比例?

我知道由两个相机视图 A 和 B 之间的基本矩阵F AB表示的比例仅在一个比例范围内是正确的(即,您不知道您是近距离观察小树还是更远地观察大树离开)。

但是,给定三个点abc和两个基本矩阵F ABF BC,它应该能够关联它们的相对比例。我的第一个想法是只选择所有三个视图中都存在的两个特征,并使用F ABF BC计算它们的距离,然后将它们分开。也许对所有三个视图中存在的所有特征进行平均?我在正确的轨道上,还是有更好的方法来做到这一点?

0 投票
1 回答
158 浏览

camera - SFM/MVS如何克服不同相机之间的色差?

我熟悉两个视图立体,但对 SFM(运动结构)和 MVS(多视图立体)的确切工作原理感到模糊。

假设我有两对立体相机,(A, B)并且(C, D). A我可以使用带有相机的双视图立体计算相机的深度图AB. C同样,我可以使用带有相机的双视图立体计算相机的深度图CD. 基于校准,我可以将深度图A转换为点云,并使用来自相机的颜色值对它们进行着色A。同样,我可以将深度图C转换为点云,并使用来自 camera 的颜色值对它们进行着色C。在一个完美的世界中,当我叠加点云A和点云C时,它应该看起来很完美,没有任何明显的颜色问题,但不幸的是,在现实世界中,什么相机之间会有一些色差A和相机C捕捉空间中的同一点。A我尝试了各种在相机和相机中都可见的点云的颜色平均方法,但无论如何,在仅在相机中可见的点云和在相机和相机中可见C的点云之间会有明显的颜色“接缝” .AAC

但是,这种颜色问题在 SFM 和 MVS 中似乎并不存在。如colmapAliceVisionRealityCapture的结果所示。我已经阅读了多篇关于 SFM/MVS 如何工作的教程,但没有一篇具体解释了它是如何克服颜色问题的。他们中的大多数人专注于解释如何生成深度,以及 SFM 估计内在函数和姿势的情况。有人可以向我解释一下传统的 SFM/MVS 使用什么方法来解决色差?我将不胜感激一个教程/论文的链接,该链接也解释了这一点。

0 投票
1 回答
164 浏览

python - 如何在 Python 代码中从 Visual SFM 读取 .mat 文件?

有人可以帮助我使用 Python 代码来读取从 Visual SFM 生成的 .mat 文件吗?您可以从以下链接下载 .mat 文件:

https://github.com/cvlab-epfl/tf-lift/tree/master/example

您可以在链接中的 zip 中获取 .mat 文件,该文件就是我寻求帮助的文件。它似乎是一个 ASCII 文件。我不知道如何读取文件中的数据。我尝试使用scipy.io.loadmat()将数据加载到 .mat 文件中,但出现错误:

有人可以帮我用 Python 代码加载文件中的数据吗?

感谢您的帮助和真诚的回复。

0 投票
1 回答
288 浏览

python - OpenCV - 从二维图像点正确恢复姿势和地标位置

我正在尝试对视频输入进行 3D 场景重建和相机姿态估计,但是相机位置与我在视频中看到的不匹配。

这是我为恢复姿势和地标位置而编写的代码

当我通过这个视频时,我得到了这个作为我的输出 运行我的程序的结果

我不明白为什么当摄像机只在视频中直行时它会向右转。我怀疑我cv2.recoverPose错误地实施了该方法,但我不知道我还能做些什么来使它变得更好。我将完整的代码放在PasteBin中,以防有人想要复制该程序。任何帮助将不胜感激。太感谢了!

0 投票
0 回答
12 浏览

panoramas - 如何定位一组等距矩形全景图像?

我有大约 10 个 equirectangular 图像,并且每个全景图手动创建了大约 10 个点的映射。(即 pano1->pointA (U1,V1) = pano2->pointZ (Uz,Vz) )我需要采取什么算法/方法来定位这些全景图(查找相机位置,每个全景图的旋转).. OpenVSLAM ?请有任何提示。

谢谢你。

0 投票
0 回答
60 浏览

python-3.x - stereoRectify 与 stereoRectifyUncalibrated

我正在使用 OpenCV 构建 3D 重建软件,但在进行特征匹配后我被卡住了。我正在关注教程,它使用 stereoRectifyUncalibrated。我应该什么时候使用它?自从我使用棋盘法获取相机参数以来,我已经校准了图像。无论如何我可以使用它还是应该使用 stereoRectify ?