问题标签 [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.
opencv - Opencv triangulatePoints 函数没有给出世界单位的距离
我想估计世界单位的 3D 坐标。我使用立体 3D 重建技术。我用鼠标从左右立体图像中手动选择相应的点。两幅图像都是用安装在移动车辆上的同一个相机拍摄的。我使用 opencv 来找到两个相机之间的基本矩阵和姿势。然后我使用 opencv triangulatepoint 函数在世界单位中查找对象的 3D 坐标。我得到了坐标,但我认为这些坐标是按比例缩放的。它们不在实际世界单位中。让我知道如何在世界单位中获取坐标到左相机。如果我选择少于 6 个对应关系,则 triangulatePoints 函数也不起作用。如果对应数小于 6,请告诉我如何使用三角函数。
提前致谢 !!
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.
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 点云模型
编辑
这是代码最后一行包含错误。
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. 如果有人能告诉我我的算法出了什么问题,我真的很感激。谢谢!
computer-vision - 如何从共享相机视图的两个基本矩阵计算相对比例?
我知道由两个相机视图 A 和 B 之间的基本矩阵F AB表示的比例仅在一个比例范围内是正确的(即,您不知道您是近距离观察小树还是更远地观察大树离开)。
但是,给定三个点a、b、c和两个基本矩阵F AB和F BC,它应该能够关联它们的相对比例。我的第一个想法是只选择所有三个视图中都存在的两个特征,并使用F AB和F BC计算它们的距离,然后将它们分开。也许对所有三个视图中存在的所有特征进行平均?我在正确的轨道上,还是有更好的方法来做到这一点?
camera - SFM/MVS如何克服不同相机之间的色差?
我熟悉两个视图立体,但对 SFM(运动结构)和 MVS(多视图立体)的确切工作原理感到模糊。
假设我有两对立体相机,(A, B)
并且(C, D)
. A
我可以使用带有相机的双视图立体计算相机的深度图A
和B
. C
同样,我可以使用带有相机的双视图立体计算相机的深度图C
和D
. 基于校准,我可以将深度图A
转换为点云,并使用来自相机的颜色值对它们进行着色A
。同样,我可以将深度图C
转换为点云,并使用来自 camera 的颜色值对它们进行着色C
。在一个完美的世界中,当我叠加点云A
和点云C
时,它应该看起来很完美,没有任何明显的颜色问题,但不幸的是,在现实世界中,什么相机之间会有一些色差A
和相机C
捕捉空间中的同一点。A
我尝试了各种在相机和相机中都可见的点云的颜色平均方法,但无论如何,在仅在相机中可见的点云和在相机和相机中可见C
的点云之间会有明显的颜色“接缝” .A
A
C
但是,这种颜色问题在 SFM 和 MVS 中似乎并不存在。如colmap、AliceVision和RealityCapture的结果所示。我已经阅读了多篇关于 SFM/MVS 如何工作的教程,但没有一篇具体解释了它是如何克服颜色问题的。他们中的大多数人专注于解释如何生成深度,以及 SFM 估计内在函数和姿势的情况。有人可以向我解释一下传统的 SFM/MVS 使用什么方法来解决色差?我将不胜感激一个教程/论文的链接,该链接也解释了这一点。
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 代码加载文件中的数据吗?
感谢您的帮助和真诚的回复。
panoramas - 如何定位一组等距矩形全景图像?
我有大约 10 个 equirectangular 图像,并且每个全景图手动创建了大约 10 个点的映射。(即 pano1->pointA (U1,V1) = pano2->pointZ (Uz,Vz) )我需要采取什么算法/方法来定位这些全景图(查找相机位置,每个全景图的旋转).. OpenVSLAM ?请有任何提示。
谢谢你。
python-3.x - stereoRectify 与 stereoRectifyUncalibrated
我正在使用 OpenCV 构建 3D 重建软件,但在进行特征匹配后我被卡住了。我正在关注本教程,它使用 stereoRectifyUncalibrated。我应该什么时候使用它?自从我使用棋盘法获取相机参数以来,我已经校准了图像。无论如何我可以使用它还是应该使用 stereoRectify ?