问题标签 [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 回答
371 浏览

algorithm - 轴对齐照片的 3D 重建

在浏览了关于这个主题的其他线程之后,我相信我的问题可能会有一个相当简单的答案。我收到了一组六张轴对齐的物体照片,例如:

http://www.flickr.com/photos/nnenn/4479290754/in/photostream

是否有任何算法可以重建该对象的 3d 近似值?我尝试并取得了一定成功的一件事是创建了六个 3 维“棱镜”(每张图片一个),它们在 x、y 或 z 方向上是无限的,并取它们的交集。这工作正常,但它对输入有点敏感,我想知道是否有更强大的众所周知的东西。我应该补充一点,我预计显然需要一些人工干预,但我想知道如何最大限度地减少必要的这种干预量。

一个可能有用的子程序如下所示:假设我要拍摄六张照片中的每个像素并将其识别为一个组件,因此例如属于驾驶舱的所有像素都标记为“1”,所有像素都属于最左边导弹被标记为“2”,依此类推。这对重建有帮助吗?

谢谢!

0 投票
3 回答
15828 浏览

c++ - 从点创建 OOBB

如何为给定点创建最小的 OOBB?创建 AABB 或球体非常容易,但我在创建最小 OOBB 时遇到了问题。

[编辑]

第一个答案没有给我带来好的结果。我没有大量的点云。我的积分很少。我正在做碰撞几何生成。例如,立方体有 36 个点(6 个边,每个三角形 2 个,每个三角形 3 个点)。第一篇文章的算法对立方体给出了不好的结果。多维数据集的示例点:http: //nopaste.dk/download/3382(应该返回标识轴)

0 投票
5 回答
17156 浏览

algorithm - 使用来自多个点的多个图像构建 3d 模型(kinect)

如果从各个角度收集各种图像以及深度数据,是否可以构建静止物体的 3d 模型,我在想的是有一种圆形传送带,其中放置 kinect 和传送带,而传送带要在 3d 空间中重建的真实对象位于中间。传送带随后围绕图像旋转一圈并捕获大量图像(每秒可能 10 个图像),这将允许 kinect 从每个角度捕获图像,包括深度数据,理论上这是可能的。该模型还必须使用纹理重新创建。

我想知道是否有任何类似的项目/软件已经可用并且任何链接将不胜感激这是否可能在 6 个月内我将如何继续执行此操作?例如您可以指出我的任何类似算法等

谢谢, 米琳达

0 投票
2 回答
7169 浏览

matrix - 相机矩阵中的主点(编程问题)

在 3x3 相机矩阵中,主点有什么作用?它的位置是如何形成的?我们可以想象一下吗?据说主点是光轴与像平面的交点。但为什么它并不总是在图像的中心?我们使用opencv

0 投票
6 回答
61960 浏览

image-processing - 3D 重建 -- 如何从 2D 图像创建 3D 模型?

如果我用相机拍照,所以我知道相机到物体的距离,比如房子的比例模型,我想把它变成一个我可以操纵的 3D 模型,以便我可以评论房子的不同部分。

如果我坐下来考虑拍摄不止一张照片、标记方向和距离,我应该能够弄清楚如何做到这一点,但是,我想我会问是否有人有一些论文可以帮助解释更多。

你用什么语言解释并不重要,因为我正在寻找最好的方法。

现在我正在考虑展示房子,然后用户可以在高度方面提供一些帮助,例如从相机到模型那部分顶部的距离,并且如果足够多,就可以开始计算高度其余的,特别是如果有自上而下的图像,然后从四个侧面的角度拍摄,以计算相对高度。

然后零件的颜色需要不同,以帮助区分我期望的模型的各个部分。

0 投票
2 回答
14797 浏览

opencv - OpenCV with stereo 3D reconstruction

Say I plan to use OpenCV for 3D reconstruction using a stereo approach...and I do not have any special stereo camera but only webcams.

1.)How do I build a cheap stereo setup using a set of web cams? 2.)Is it possible to snap two images using web cams and convert them to stereo using openCV API?

I will use the stereo algorithm from the link below Stereo vision with OpenCV

Using this approach I want to create a detailed mapping of an indoor environment. (I would not like to use any projects like Insight3D which cannot be used for commercial purposes without distributing the source code)

0 投票
1 回答
400 浏览

c++ - 如何使 rgbdemo 与非 kinect 立体相机一起工作?

我试图让RGBDemo(主要是重建器)与 2 个罗技立体相机一起工作,但我不知道该怎么做。

我注意到nestk库中有一个opencv 抓取器,它的头文件包含在reconstructor.cpp 中。然而,当我尝试“rgbd-viewer --camera-id 0”时,它一直在寻找 kinect。

我的问题: 1. 到目前为止,RGBDemo 是否仅适用于 kinect?2. 如果 RGBDemo 可以与非 kinect 立体相机一起工作,我该怎么做?3. 如果我需要为非 kinect 立体相机编写自己的实现,有什么建议可以开始吗?

提前致谢。

0 投票
1 回答
2240 浏览

opencv - 是否可以通过 2d-3d 点关系获得图像或相机位置的正面平行视图?

是否可以使用 2d-3d 点关系获得图像或相机位置的正面平行视图OpenCV

为此,我有内在和外在参数。我在图像(关系 2d-3d)上还有一组控制点(位于一个平面上)的 3d 坐标。

实际上我需要相机的位置和方向,但是如果我可以将图像转换为正面平行视图,就不难找到它。

如果无法使用 OpenCV,是否有其他库可以解决此任务?

0 投票
1 回答
2867 浏览

c++ - 使用 OpenCV 进行 3D 重建 C++ ..基本矩阵太大

好的,在进行了 4 天的无脑编程之后,我将我的生活难题发布到 stackoverflow,当时似乎没有任何事情可以让事情正确或至少接近正确。抱歉有点戏剧化,但我今天觉得自己像个糟糕的程序员。

无论如何,我的问题是:

使用 RANSAC (N>8) 获得基本矩阵。

我有两个具有宽基线但有足够重叠的图像,以便正确匹配足够数量的 SURF 关键点(~308)(我绘制它们)。

现在是问题所在。我将 2D 点传递给 cv::findFindamentalMat 但我得到完全没有根据的结果。函数返回:

为了规避矩阵的大动态范围,Hartley 建议对数据点进行归一化(在欧几里得空间而不是投影空间归一化)......即使这样做,结果也几乎相同。(10^-9 到 10^9)

我知道 FundMat 仅在规模上是准确的,但 10^-9 到 10^+9 的差异太大了。

我在这里提到了其他问题,但我似乎没有得到任何线索:findfundamentalmatrix-doesnt-find-fundamental-matrix how-to-calculate-the-fundamental-matrix-for-stereo-vision

任何想法都会很棒。在为软件管道的其余部分考虑未校准的图像时,这是一个非常重要的步骤。

如果代码有帮助。(虽然它没有缩进和着色......这里的空间太少了。) https://sites.google.com/site/3drecon124/

0 投票
3 回答
21446 浏览

c++ - 没有相机信息的 2 张图像的 3D 重建

我是这个领域的新手,我正在尝试用 2d 图像在 3d 中建模一个简单的场景,但我没有任何关于相机的信息。我知道有3 个选项

  • 我有两张图像,并且我知道我从 XML 加载的相机模型(内部模型),例如loadXMLFromFile()=> stereoRectify()=>reprojectImageTo3D()

  • 我没有,但我可以校准我的相机 => stereoCalibrate()=> stereoRectify()=>reprojectImageTo3D()

  • 我无法校准相机(这是我的情况,因为我没有拍摄 2 张​​图像的相机,然后我需要使用 SURF、SIFT 在两张图像上找到对关键点(我可以使用任何 blob检测器),然后计算这些关键点的描述符,然后根据它们的描述符匹配右图和左图的关键点,然后从中找到基本矩阵。处理要困难得多,大概是这样的:

    1. 检测关键点(SURF,SIFT)=>
    2. 提取描述符 (SURF,SIFT) =>
    3. 比较和匹配描述符(BruteForce,基于 Flann 的方法)=>
    4. 从这些对中找到基本 mat ( findFundamentalMat()) =>
    5. stereoRectifyUncalibrated()=>
    6. reprojectImageTo3D()

我正在使用最后一种方法,我的问题是:

1) 对吗?

2)如果没问题,我对最后一步有疑问stereoRectifyUncalibrated()=> reprojectImageTo3D()。函数的签名reprojectImageTo3D()是:

参数:

  • disparity– 输入单通道 8 位无符号、16 位有符号、32 位有符号或 32 位浮点视差图像。
  • _3dImage– 输出与 . 大小相同的 3 通道浮点图像disparity。的每个元素都包含从视差图中计算出_3dImage(x,y)的点的 3D 坐标。(x,y)
  • Q– 4x4 透视变换矩阵,可以用 获得stereoRectify()
  • handleMissingValues– 指示函数是否应处理缺失值(即未计算差异的点)。如果handleMissingValues=true,则与异常值相对应的具有最小视差的像素(请参阅StereoBM::operator())被转换为具有非常大 Z 值(当前设置为 10000)的 3D 点。
  • ddepth– 可选的输出数组深度。如果为-1,则输出图像将具有CV_32F深度。ddepth也可以设置为CV_16S,CV_32S或 `CV_32F'。

我怎样才能得到Q矩阵?是否可以通过,和或以其他方式获得Q矩阵?FH1H2

3)是否有另一种方法可以在不校准相机的情况下获得 xyz 坐标?

我的代码是: