问题标签 [3d-reconstruction]

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 回答
1395 浏览

image-processing - 用于 3D 重建的图割算法类型

我已经阅读了几篇关于使用图形切割进行3D 重建的论文,我注意到似乎有两种替代方法可以解决这个问题。

一种方法是体积方法,它描述了体素的 3D 区域,图切割用于推断每个体素的二进制标记(包含或不包含感兴趣的对象)。采用这种方法的论文包括Multi-View Stereo via Volumetric Graph Cuts and Occlusion Robust Photo-ConsistencyA Surface Reconstruction Using Global Graph Cut Optimization

第二种方法是 2D 的,它试图用投影到那里的 3D 点的深度来标记参考图像的每个像素。采用这种方法的论文包括Computing Visual Correspondence with Occlusions via Graph Cuts

我想了解每种方法的优点/缺点,以及在选择使用哪种方法时最重要的。到目前为止,我了解第一种方法的一些优点是:

  1. 这是一个二元问题,因此完全可以使用 Max-Flow 算法解决。
  2. 提供简单的遮挡建模方法。

第二种方法的一些优点是:

  1. 图的每个节点的较小邻居集。
  2. 更容易建模平滑度(但它会提供更好的结果吗?)。

此外,我会对选择一种或另一种表示方式更好的情况以及原因感兴趣。

0 投票
1 回答
2700 浏览

vtk - 如何将两个点云或多边形数据集合并为一个?(合并不附加)

我正在开发一个实时扫描仪,我可以在其中实时扫描表面。到目前为止,我可以扫描表面的一小块并可以保存它。一个补丁意味着仅对表面(点云或三角形)进行 1 次扫描。

我想要的是,我想实时扫描多个补丁。为此,我必须将前一个补丁与当前补丁合并。但我不知道合并两个补丁的标准方式或算法是什么,也不知道哪一个是最好的合并方式,例如,在三角剖分之前(点云合并),或者在三角剖分之后(网格合并)。合并意味着删除重叠的点或三角形

我的想法:如果有两个点云,源和目标然后使用VTK,从目标点云中找到一个最近的点,然后选择一个点,另一个被丢弃。这是一种合并的方法吗?这只是我的想法?但问题是,源和目标中的点数会有所不同。

如何使用 VTK 合并两个补丁,请指导我?

还建议我实现实时扫描任务的标准和最佳方式是什么。

案例#1:
i)点云采集

ii) 注册

iii) 合并

iv) 三角测量

案例#2:

i) 点云采集

ii) 注册

iii) 三角测量

iv) 合并

案例#3:

i) 点云采集

ii) 三角测量

iii)注册

iv) 合并

请指导我。谢谢。

0 投票
1 回答
2481 浏览

c++ - 从一些没有校准的图像中重建 3D?

我想在不使用棋盘校准的情况下从多个图像进行 3D 重建。我正在使用 OpenCV 并研究从 30 张图像中获取模型 3D 的方法,而无需使用棋盘图案校准相机。

这可能吗?我在哪里可以获得外部参数?

我可以在不校准的情况下进行 3D 重建吗?

0 投票
2 回答
2357 浏览

opencv - 隧道状结构中的运动结构(SfM)?

我有一个非常具体的应用程序,我想在其中尝试从运动中获取结构以获得 3D 表示。目前,我从运动中找到的所有软件/代码示例都是这样的:“从各个角度拍摄的固定物体以创建 3D”。这不是我的情况。

在我的例子中,摄像机在走廊中间移动并向前看。有时,相机可以看向其他方向(左、右、上、下)。相机永远不会后退或回头,它总是向前移动。由于走廊很小,几乎所有东西都可以看到(没有隐藏点)。走廊有时会很长。

我已经尝试过这个软件,但它在我的特定情况下不起作用(但在正常使用时非常棒)。有人可以向我推荐一个可以针对我的特定需求的库/软件/工具/论文吗?或者你是否曾经需要实现类似的东西?欢迎任何帮助!

谢谢!

0 投票
0 回答
2123 浏览

opencv - 使用三角测量的基于图像的重建

我目前正在尝试实现 Hartley 和 Sturm(此处)提出的三角测量算法,但遇到了一些困难。我想我理解它背后的想法,但我不确定如何参数化极线铅笔。

给定两个图像,以及它们之间的估计基本矩阵,我怎么能:

1)在两个图像中找到极坐标?

2)变换图像,使每个所需的点都在原点,极点在轴之一?

3) 计算具有特殊形式的新基本矩阵(见论文第 5 页)?

之后,我想我可以找到距离多项式并将其最小化,但这些步骤是阻碍我的步骤。

我正在使用 OpenCV,一些示例代码会很棒:)

0 投票
1 回答
4767 浏览

matlab - 如何测试基本矩阵?

在我的应用程序中,我使用 2 个摄像头进行 3D 对象重建。为了校准相机,我使用 2 组图像计算基本矩阵,以找到相机姿势(旋转和平移)。我使用 SVD 来查找 R 和 T。但是当我尝试检查矩阵的准确性时,它根本不起作用:重建点的位置与真实位置不符。

如何检查我是否以正确的方式进行?

这是我使用的 Matlab 代码:

谢谢你。

0 投票
2 回答
9712 浏览

opencv - 来自相应图像的相机运动

我正在尝试根据相应图像的运动来计算新的相机位置。图像符合针孔相机模型。

事实上,我没有得到有用的结果,所以我尝试描述我的程序并希望有人可以帮助我。

我用 SIFT 匹配相应图像的特征,用 OpenCV 的 FlannBasedMatcher 匹配它们,并用 OpenCV 的 findFundamentalMat(方法 RANSAC)计算基本矩阵。

然后我通过相机内在矩阵(K)计算本质矩阵:

我用奇异值分解将基本矩阵分解为旋转和平移:

然后我尝试通过三角测量找到正确的解决方案。(这部分来自http://www.morethantechnical.com/2012/01/04/simple-triangulation-with-opencv-from-harley-zisserman-w-code/所以我认为应该可以正常工作)。

然后使用以下公式计算新位置:

其中 new_pos & old_pos 是向量 (3x1),R 是旋转矩阵 (3x3),t 是平移向量 (3x1)。

不幸的是,我没有得到有用的结果,所以也许有人知道可能出了什么问题。

以下是一些结果(以防万一有人可以确认其中任何一个肯定是错误的):

0 投票
1 回答
640 浏览

matrix - 你能推荐一个基本矩阵计算的参考数据来源吗

具体来说,理想情况下,我希望图像具有点对应关系以及 F 和左右极点的“黄金标准”计算值。我也可以使用基本矩阵以及内在和外在的相机属性。

我知道我可以从两个投影矩阵构造 F,然后从 3D 实际点生成左右投影点坐标并应用高斯噪声,但我真的很想使用其他人的参考数据,因为我正在尝试测试功效我的代码并编写更多代码来测试第一批(可能是坏的)代码似乎并不聪明。

谢谢你的帮助

问候戴夫

0 投票
1 回答
426 浏览

kinect - Kinect Fusion - 数据格式 - 对象分割

我最近开始为我的 3D 重建项目使用 Kinect Fusion。我在这个领域有两个问题:

  1. .STL 文件里面有什么?它是场景中不同对象的顶点吗?

  2. 如何在重建文件中分割特定对象(例如我的手)?有没有办法使用 Kinect Fusion 来做到这一点?

先感谢您!

0 投票
1 回答
527 浏览

3d-reconstruction - 通过校准矩阵进行 3D 重建

我有一对图像和从未校准的相机拍摄的相应点。我也有相机的校准矩阵。是否可以将 2D 图像坐标乘以校准矩阵的倒数并像校准情况一样进行重建过程?(本质矩阵等)