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

matlab - 仅使用立体图像对且没有校准相机的 3D 重建

我有两个空间图像,但没有相机校准输入。如何通过使用imread读取两个图像来开发 3D 模型?我也尝试遵循此代码,但这也需要相机参数。

http://in.mathworks.com/discovery/stereo-vision.html

我还尝试提出 3D 稀疏建模,但它不起作用。

http://in.mathworks.com/help/vision/examples/sparse-3-d-reconstruction-from-two-views.html

我可以使用高斯滤波器或类似的东西从立体对输入图像数据,然后将它们匹配以进行深度估计。如果我得到深度,我可以制作 3D 模型。

请建议什么可以快速完成我的时间不多了。

0 投票
2 回答
16000 浏览

unity3d - Unity- Photosphere Photo Viewer for Google Cardboard

I am trying to build a Photosphere-like application with Unity3D and use it along with Google cardboard.

I need to load different panoramic view photos and be able to view them stereoscopically, by using the Cardboard goggles.

I am having problem to use the pano images and render it into stereoscopic view in Unity.

Any suggestions will be gratefully received.

0 投票
1 回答
396 浏览

directx - 用于 3D 感知的 DirectX 立体投影转换

我正在尝试将我的单目DirectX 引擎更改为用于 Oculus Rift的立体渲染引擎。缺少的是实现 3D 感知的立体投影转换。

目前,我仍在使用我的标准单目投影矩阵:

我已经将左摄像头平移了 -0.032以创建视图矩阵,我的右眼 x_translated 0.032以创建视图矩阵。问题是立体偏离中心投影矩阵(我认为我需要)。所以我想我需要以某种方式这样做:http ://paulbourke.net/exhibition/vpac/theory2.gif 尝试了很多不同的计算,但不幸的是我得到了奇怪的结果..

已经研究了很多,这里的一些人正在成功地这样做http://www.gamedev.net/topic/597564-view-and-projection-matrices-for-vr-window-using-head-tracking/

但是方法 1会导致奇怪的随机效应。我将我的相机移回 Z 轴,但在视觉上它只能进入 -z 轴以获得 -3.f 值,所有相机值 < -3.f 没有任何视觉效果。

此外,我还在阅读这篇论文:http ://www.google.at/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCkQFjAB&url=http%3A%2F%2Fwww.marries.nl% 2Fwp-content%2Fuploads%2F2011%2F05%2FApplying-stereoscope-3D-in-games.pdf&ei=nAydVY6bBcL5UobagJgL&usg=AFQjCNEFhKttlYJYNbWF2-LptmcCi8bTZg&sig2=VOKBq9VE0k8nhHtA3gxN8g

并阅读NVIDIA 演示文稿http ://www.google.at/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCIQFjAA&url=http%3A%2F%2Fwww.nvidia.com%2Fcontent%2FGTC -2010%2Fpdfs%2F2010_GTC2010.pdf&ei=xA2dVZe3KYr8UMT6g5gL&usg=AFQjCNGeanxCoryAZvmxC1BDmf2itOgG0w&sig2=Ss2kN5gCYeoLsgJ66-442A&bvm=bv.96952980,d.d24

但我只是无法弄清楚我需要如何更改我的单目投影矩阵或如何正确设置两个离轴投影矩阵..

也许有人可以帮助我,我会很高兴的!

非常感谢!

0 投票
1 回答
276 浏览

opengl - rendering two overlapped FOV using glFrustum without GLUT_STEREO

I have a program that reads a 360 mono panorama and reads an IMU, drawing the correct part of the panorama based on the head location.

I am creating two windows, one per display, and do not want to rely on GLUT_STEREO. The draw() calls for each display are therefore independent, but right now they render the same thing, which is a gluSphere to represent the panorama. To draw the correct part of the sphere, IMU data (quaternion) becomes a rotation matrix, and that matrix is multiplied with the projection.

I wish to create a little bit of overlap with the two images, as shown with the following image: overlapped

For example, the red rectangle is my left display and the blue rectangle is my right display, but there is some overlap in the middle.

I was reading some article about stereo rendering, and I thought the solution would be to replace the call from gluPerspective() to glFrustum(), and simply modify both the left and right parameter at the same time. I thought subtracting some value to left/right parameter of glFrustum() on the display and adding some value to the left/right parameter of glFrustum() would do the trick. I modified the glutReshapeFunc() callback's projection matrix to do just that:

Unfortunately, this does not do what I expect (and I am really not sure why). I would think modifying both left and right parameter of glFrustum() would keep the same horizontal FOV but move it to the left or right. It seems to either stretch the image in or out.

I have played around with glTranslatef() on the ModelView or glLookAt(), but there place are not clear to me. Why is glFrustum() not having the right behavior please, and what am I missing?

0 投票
1 回答
97 浏览

camera - 立体相机的独立旋转

我有两个摄像机指向同一个场景。当它们彼此平行时,我可以从真实位置转换为每个屏幕坐标,从两个屏幕坐标转换为真实位置。

在此处输入图像描述

从真实位置到每个屏幕坐标(焦距 f 已知):

从两个屏幕坐标到真实位置:

相机现在有两个独立的三轴旋转(α,β,ζ)和(α',β',ζ')。这真的是他们的偏航、俯仰和滚动。相机首先沿 y 轴旋转 α,然后沿新的 x 轴旋转 β,最后沿新的 z 轴旋转 ζ。

我仍然可以通过旋转实际位置并应用与上述情况相同的公式,将实际位置转换为每个屏幕坐标:

我已经测试过,计算出的坐标与屏幕匹配。

我现在的问题是从 2 个屏幕坐标计算实际位置。我正在做:

不幸的是,这不起作用。

我的想法是获取屏幕坐标,将 z 值分配给焦点,以负角逆序应用旋转矩阵(此时,屏幕已“向后”旋转到平行于连接两个摄像机的线的平面)并应用与第一种情况相同的公式。

我究竟做错了什么?以 (xl, yl, f) 开头有错吗?

编辑1:

基于aledalgrande anwer,这里是一些opencv代码:

0 投票
3 回答
1115 浏览

unity3d - 使用立体视图 (VR) 制作我的 Unity 游戏

我在 NVidia Dev 上构建了一个基于 Unity3D + Google Tango 的游戏。设备。一切似乎都很好,但现在我想在立体视图中玩这个游戏(对于潜水镜)。我查看了 ExperimentalVirtualReality 示例(https://github.com/googlesamples/tango-examples-unity/tree/master/UnityExamples/Assets/TangoExamples/ExperimentalVirtualReality)并成功地将所有预制件移植到我的游戏中,但是对于某些原因体验不令人满意。

当我透过 Dive 护目镜观看时,我的游戏的立体视图往往会相互重叠。体验很差。

我注意到 Unity 项目中的 TangoVR 播放器对象上有一些公共参数,用于“MM 中的 IPD”、“MM 中的屏幕宽度”、“MM 中的眼睛偏移”等。我是否必须使用这些参数。这些值甚至代表什么?

任何帮助或指示都会非常有帮助和赞赏。

0 投票
4 回答
2079 浏览

unity3d - Google Cardboard + Vuforia - 相机尺寸小

我正在尝试将 Google Cardboard SDK 集成到 Vuforia Unity 项目。此处描述了实现此目的的方法。我的问题是相机尺寸太小。我正在上传图片以更好地解释它:

这是我取得的成就。

这是我取得的成就

这是我所期望的: 这是我所期望的

我对 Vuforia 和 Unity 还很陌生,事情还不是很清楚。你能告诉我为什么相机尺寸这么小吗?有没有办法让它足够大?我正在使用 Nexus 5。提前谢谢你!

0 投票
0 回答
3394 浏览

python - 使用 matplotlib 创建立体 3d 图

我希望能够在 matplotlib 中制作可以以立体 3d 显示的 3d 图,如下所示:

在此处输入图像描述

左侧图像的相机相对于右侧略微平移。如果你练习一下,你可以欺骗你的大脑让你的左眼看左图,右眼看右图,然后在任何屏幕上看到 3D!

无论如何,我希望能够让任何 matplotlib 3d 绘图显示两次,只需稍微平移一台相机。只需通过翻译数据,我就可以将绘图本身变成立体声:

在此处输入图像描述

这给出了预期的效果,但我希望能够在立体 3d 中显示轴本身。我只能找到如何设置相机的仰角和方位角,使用view_initAxes 对象的方法。似乎没有一种“好”的方式来翻译相机。

有谁知道该怎么做?

0 投票
0 回答
212 浏览

google-cardboard - 将 Cardboard 扭曲应用于立体图像

我想写一个在蔡司 VR 上显示立体图像的应用程序。目前我只是并排显示图像,但它们似乎有点失真。有没有办法将纸板应用程序中使用的桶形失真应用于视图?

0 投票
0 回答
532 浏览

c++ - OpenCV 立体校准矩阵错误

我正在尝试使用 OpenCV 2.4.9 校准立体相机,但在调用stereoCalibrate.

下面是我正在使用的图像。(由 MS Paint 提供了一些奇怪的着色故障)。顶部的三个图像来自左侧摄像头,底部的三个图像来自右侧摄像头。请注意,我使用了更多图像对,并且图像实际上并没有这么小,它们是 640x480;但是,我缩小了它们并省略了一些,因此这篇文章的长度不是 935837 英里。

示例输入图像: 示例校准图像.png

OpenCV 可以很好地找到棋盘角。我使用 显示它们drawChessboardCorners,它们看起来正确。所以这不是问题。

然后我使用calibrateCamera. 我使用 显示通过undistort使用矩阵传递的图像,calibrateCamera结果似乎过度校正了镜头失真。

基于 的输出未失真calibrateCamera基于 calibrateCamera 的输出未失真

如果我省略该calibrateCamera步骤并stereoCalibrate相应地调整标志(将CV_CALIB_FIX_INTRINSIC标志替换为CV_CALIB_SAME_FOCAL_LENGTH | CV_CALIB_ZERO_TANGENT_DIST) ,则会发生相同的错误

接下来我打电话stereoCalibrate,我得到这个错误:

在过去的几个小时里,我一直在寻找解决这个问题的方法,以及关于这个错误的信息,以及更改我的代码的一小部分。不幸的是,一切都无济于事。关于这个错误的信息似乎很少,或者可能只是这种情况。

这个错误是什么意思?我怎样才能摆脱它?考虑到相机的 640x480 分辨率,我想到棋盘可能太远了。这可能是问题吗?

如果有人希望看到我的部分或全部代码,我会很乐意为它创建一个 pastebin,但我不愿把它丢在这里,因为它又长又丑。