问题标签 [disparity-mapping]

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

c++ - 为什么 StereoSGBM 给出负数及以上 numberOfDisparities 数

我正在 OpenCV 中编写一个函数来计算 v 和 u 视差,所以我首先需要视差图像。我设置 sgbm.minDisparity = 0 和 numberOfDisparities = 160。

视差图像是 CV_16SC1,我需要无符号值来继续编程我的函数。

我打印了整个Mat,有负值和160以上的值。如果我对文档理解得很好,视差图像代表视差值*16。这是否意味着在我的情况下最大值为 16*160?如果没有,可能有什么问题?无论如何,当 minDisparity 设置为 0 时,为什么会有小于零的值?这是代码:

0 投票
1 回答
270 浏览

opencv - u-disparity 显示预期 cols 的一半

检查代码一千次后,我看不出我做错了什么。该算法非常简单:我有一个 CV_16U 图像,其视差值称为 disp,我正在尝试构建 u 和 v 视差以检测障碍物。

问题是当我在转换为 8bit Unsigned 后使用 imshow 打印两个差异时。u-disparity 是错误的,因为它具有应有的形状,但它是水平尺寸的一半,即正确的黑色像素。

0 投票
1 回答
440 浏览

c++ - 使用块匹配算法获取纹理点云

我想用两个图像的原始图像颜色对生成的点云进行纹理处理。为此,我使用块匹配计算了视差图并进行了重建。为 .ply 文件编写导出函数也没什么大不了的。我的问题是:如何从块匹配算法中获取颜色?它确实在校正后的图像上寻找相似的像素,但没有变量可以保存找到的匹配的位置,参考 API。之后无法恢复颜色。

(我正在使用 OpenCV 2.4.8)

0 投票
0 回答
131 浏览

python - 视差图不会显示/不确定是否正确校准

我使用我在网上找到的其他代码编写了此代码。我没有收到任何错误,但是我无法使用 imshow 显示视差图。我保存了图像,它只是黑色的,所以我没有正确地做某事。有人可以看看我的代码,看看有什么问题吗?我可能没有正确地进行立体校准,但我不确定。谢谢!

0 投票
1 回答
981 浏览

c++ - 类型 cv::StereoBM 必须实现继承的纯虚方法

我一直在努力使用 StereoBM 类根据两个相机输入源生成视差图。

我可以创建一个指向变量StereoBM *sbm;,但是每当我调用一个函数时,都会出现一个带有 Release 构建的分段错误。由于malloc(): memory corruption.

我不完全确定我在上面做错了什么。创建非指针变量时,我对所有类的方法都有这个警告:

The type 'cv::StereoBM' must implement the inherited pure virtual method 'cv::StereoMatcher::setSpeckleRange'

我已经包含了 header <opencv2/calib3d/calib3d.hpp>,我已经确保库是链接的,并且我正在运行 opencv 3.1.0。

任何人都能够阐明以上所有内容吗?因为我仍在学习 OpenCV 并推动自己学习 C++。

0 投票
2 回答
6876 浏览

opencv - 使用opencv StereoBM的坏视差图

我正在尝试使用 StereoBM 来获取两个图像的视差图。我尝试了一些示例代码和图像。他们工作正常。但是,当我尝试自己的图像时,我得到的地图非常糟糕,非常嘈杂。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我的 StereoBM 参数

我的问题是

  1. 我的图像有任何问题吗?
  2. 是否可以在不校准相机的情况下获得良好的视差图?我需要在 StereoBM 之前校正图像吗

谢谢。

这是我的纠正图像的代码

校正后的图像和视差图在这里

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
229 浏览

c++ - 用于对应搜索和视差 C++ 的 OpenCV 权重方法

我有一个 OpenCV 应用程序,我必须使用两个图像对之间的不同支持权重来实现对应搜索。这项工作与Kuk-Jin YoonIn So Kweon的“ Adaptive Support-Weight Approach for Correspondence Search ”非常相似。支撑重量在给定的支撑窗口中。我使用两个图像中的支持权重计算像素之间的差异。当参考图像中的像素pq具有差值d 时,Pd和 Qd目标图像中的像素Fig.1 - 相异度公式
NpNpd是支撑重量。

在此之后,每个像素的视差由WTAWinner-Takes-All)方法选择为: 图 2 - WTA 方法

我想知道的是如何从图1的公式开始(我写的函数计算相异性和权重),即要考虑哪个像素?从哪儿开始?用什么像素?有什么建议吗?工作的最终结果应该类似于: 有什么好的方法可以做到这一点?图 3 - 筑波

UPDATE1
我应该开始创建一个新图像,然后考虑像素(0,0)和所有其他像素之间的成本,找到最小值并将该值设置为新图像中像素(0,0)处的值? 其他像素等等?

0 投票
0 回答
174 浏览

camera - 两幅图像同一中心的视差

我将 Raspberry Pi 与 python2 一起使用。

我正在尝试计算左右相机拍摄的两张图像的差异。

但我不知道我应该使用什么代码。

我想要做的就是使用两个图像的目标中心(视差)来制作python,以便计算两个相机和目标之间的距离。

左摄像头:

左相机

右侧摄像头:

右相机

我想计算两个中心(twp green cicle)并将它们的差异变为距离。

0 投票
2 回答
3935 浏览

opencv - OpenCV中DisparityWLSFilter的原始论文?

我正在对视差图进行后期处理。我的视差图像即使经过 WLS 过滤,也有太多“漏洞”。

原始差异,未过滤 WLS 过滤 这就是我现在得到的。纠正,但以鱼眼的方式。无论如何肯定会纠正,但有很多漏洞。视差匹配算法是SGBM。WLS 滤波器 sigma 为 2.1,lambda 为 30000。黑色区域是孔。

我指的是官方的 opencv 站点,它说Disparity map post-filtering并且它广泛使用DisparityWLSFilter。但我想知道它是如何在内部工作的,并想阅读有关此实现的理论论文。我想知道 Sigma 和 Lambda 做了什么,以及它将如何过滤我的图像。

而且,还有其他我可以使用的好的视差过滤器吗?WLS 过滤器无法有效地填补“漏洞”。或者,任何易于使用或易于实现的算法,或者不是 GPL 的库?

0 投票
2 回答
9504 浏览

python - OpenCV - 来自未校准立体系统的深度图

我正在尝试使用未校准的方法获取深度图。我可以通过用 SIFT 找到对应点然后使用cv2.findFundamentalMat. 然后我cv2.stereoRectifyUncalibrated用来获取每个图像的单应矩阵。最后我用它cv2.warpPerspective来校正和计算视差,但这并不能创建一个好的深度图。这些值非常高,所以我想知道是否必须使用warpPerspective,或者是否必须从我得到的单应矩阵计算旋转矩阵stereoRectifyUncalibrated

我不确定通过校正获得的单应矩阵情况下的投影矩阵stereoRectifyUncalibrated

部分代码:

以下是未校准方法(和warpPerspective)的校正图片:

在此处输入图像描述

以下是使用校准方法校正的图片:

在此处输入图像描述

我不知道这两种图片之间的差异为何如此重要。对于校准的方法,它似乎没有对齐。

使用未校准方法的视差图:

在此处输入图像描述

深度计算如下:C1[0,0]*T[0]/(disp) 使用 T 来自stereoCalibrate。价值非常高。

------------ 稍后编辑 ------------

我尝试用“stereoRectifyUncalibrated”获得的单应矩阵“挂载”重建矩阵([Devernay97][Garcia01]),但结果仍然不好。我这样做正确吗?