问题标签 [stereoscopy]

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 投票
2 回答
5970 浏览

opengl - 如何将 3D 图像输出到我的 3D 电视?

我有一台 3D 电视,如果我不至少尝试让它显示我自己创作的漂亮 3D 图像,我会推卸我的责任(作为一个极客)!

我之前已经完成了非常基础的 OpenGL 编程,所以我理解了其中的概念——假设我可以将自己渲染成一个简单的四面体或立方体并让它旋转一下;如何让我的 3D 电视以 3D 形式显示此图像?

请注意,我了解 3D 工作原理的基础知识(从 2 个不同角度渲染同一图像两次,每只眼睛一个),我的问题是关于实际执行此操作的后勤工作(我需要 SDK 吗?等等...)

  • 我的电视使用偏振 3D,尽管我的意图是这个问题也与其他 3D 技术相关(如果可能的话)
  • 我的笔记本电脑有一个 HDMI 输出,我打算用它来连接我的电视(这与使用 VGA/分量视频电缆有什么区别吗?)
  • 过去我曾尝试过 GLUT / OpenGL,但是如果它更容易/只有真正可能使用一些替代技术来做到这一点,那很好
0 投票
3 回答
6696 浏览

opengl - 如何将兼容 HDMI 1.4a 的立体信号从 OpenGL 应用程序输出到 3DTV?

我有一个 OpenGL 应用程序,它通过 HDMI 将立体 3D 视频输出到现成的电视,但它目前需要显示器支持手动选择正确格式的 pre-1.4a 方法(并排,上下ETC)。但是,现在我有一个我需要支持的设备,它只支持 HDMI 1.4a 3D 信号,据我所知,它是某种发送到显示器的数据包,告诉它 3D 视频的格式。我正在使用NVIDIA Quadro 4000,我想知道是否可以以标准 3DTV 看到正确格式的方式输出我的视频(或告诉视频卡如何),类似于 3D 蓝光或其他 1.4a - 兼容设备,无需手动选择某种 3D 模式。这可能吗?

0 投票
1 回答
3348 浏览

c# - NV_STEREO_IMAGE_SIGNATURE 和 DirectX 10/11 (nVidia 3D Vision)

我正在尝试使用 SlimDX 和 DirectX10 或 11 来控制 nVidia 3D Vision Kit 上的立体化过程。多亏了这个问题,我才能让它在 DirectX 9 中运行。但是,由于缺少一些方法,我无法让它在 DirectX 10 或 11 下运行。

算法是这样的:

  1. 渲染左眼图像
  2. 渲染右眼图像
  3. 创建一个能够同时包含它们的纹理加上一个额外的行(因此纹理大小将是 2 * 宽度,高度 + 1)
  4. 写下这个 NV_STEREO_IMAGE_SIGNATURE 值
  5. 在屏幕上渲染此纹理

我的测试代码跳过了前两个步骤,因为我已经有了立体纹理。它是以前的 .JPS 文件,特别是包含在 nvidia 3D 套件随附的示例图片中的文件之一。第 5 步使用全屏四边形和着色器通过正交投影矩阵将立体化纹理渲染到其上。我为 DX9 看到的示例代码不需要这个,只需调用 StretchRect(...) 方法将纹理复制回后台缓冲区。所以也许是因为这个原因不起作用?在 DX10 中是否有类似的方法来完成此操作?我认为渲染到后台缓冲区理论上与在其上复制(或 StretchRecting)纹理相同,但也许不是?

下面是我的代码(slimdx): 立体化过程

NV_STEREO_IMAGE_SIGNATURE 数据

主要的

提前致谢!

0 投票
1 回答
3254 浏览

opengl - OpenGL 渲染可以用于 3D 显示器吗?

我们一直在考虑购买支持 3D 的 LCD 显示器以及具有 3D 立体视觉功能的显卡(ATI Radeon 5870 或更好)的机器。这是为了显示我们使用 OpenGL 以 3D 形式渲染的一些科学数据。现在我们可以期望 GPU、显示器和快门眼镜来处理立体显示还是我们需要修改渲染程序?如果有用于 3D 立体显示器的图形编程的特定技术,将非常感谢一些教程链接。

0 投票
2 回答
666 浏览

android - 如何为 HTC EVO 3D 使用 SDK?

有没有人尝试使用 SDK 编写 OpenGL 应用程序,尤其是使用 Eclipse?

我试过了,但我无法编译示例。

如何使用 HTC SDK?对于非 3D 手机,可以将 OpenGL 应用程序渲染为立体立体图以供查看。

0 投票
1 回答
178 浏览

3d - 立体视觉和虚拟相机设置

我想知道你们中是否有人知道从一个简单的相机矩阵计算两个相机矩阵(左和右)的方法?为了具有立体效果(模拟人的双眼)。

谢谢你的帮助。

0 投票
1 回答
380 浏览

opencv - 我可以在 POSIT + OpenCV 中使用 mm 吗?

我正在尝试按照本教程中的描述使用 POSIT,但在理解一些事情时遇到了一些麻烦。

我有来自平行六面体的 9 个坐标 (x,y,z) 值。此坐标值的单位以 mm 表示。我已经计算了二维投影点(x',y',z'),只需使用

x' = (x/z)*f && y' = (y/z)*f

将 z 定义为 f/2,将 f(焦距)定义为 1000 mm。

3D 点表示如下:

为什么是 0.00 f?我可以简单地将它们表达为,例如:

所有单位都可以用毫米表示吗?

为了得到这个问题的答案,我一直在做一些研究,但我仍然无法理解。如果有人可以帮助我,我将不胜感激!

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 坐标?

我的代码是:

0 投票
1 回答
562 浏览

3d - 立体渲染

我正在尝试开发一个应用程序,它可以渲染来自网络摄像头的两个视频流,使其在 3D 显示器上被视为立体图像。我以前从未处理过立体 3D,但理论上这应该像将流渲染到两个不同的表面并为适当的眼睛显示每个表面一样简单(抱歉,不完全熟悉术语)。我知道 NVidia 驱动程序可以“立体化”任何 3D 应用程序。我也知道视频游戏将此功能作为单独的设置包含在内,因此打开并使用它应该很简单。

不过,我无法在 MSDN 或 NVidia 网站上找到有关如何执行此操作的任何指南。

我将不胜感激在这方面的任何帮助。

谢谢!

0 投票
0 回答
225 浏览

opencv - 立体网络摄像头的机械校准和微调

有很多关于立体(计算机)视觉的读物。从这些阅读中得到的最值得注意的信息是,你几乎被 OpenCV 困住了……这绝对不是一件坏事。

大多数文章都是关于通过 OpenCV 功能进行校准以补偿劣质/便宜的镜头。

现在我更关心相机在其背板上定位的机械校准。您只能通过校准来补偿这么多,这就是为什么我希望我的相机定位接近完美。

我将 2 个罗技 9000 拧在相距约 10 厘米的铝背板上。我的目标是在 2-40 米范围内做一些深度感知。

我将如何检查相机的相对位置是否正确?我正在考虑将相机指向很远的距离(> 500m)并确保相机的中心(像素)正在查看相同的(部分)场景。这够了吗?我是否还应该注意角落显示的内容,还是稍后通过镜头校准完成?

另外,在一个有点相关的注释上:最终我需要绘制一个视差图。OpenCV 上有无数使用“快速”和“慢速”算法的指南。我将实时使用“快速”,它需要使用大量参数进行微调。这是相机类型/镜头的一次性调整,还是我应该为每个(新)场景都这样做?在后者的情况下,它会使我的立体相机在实践中变得不那么有用。