问题标签 [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.
c++ - 为什么 StereoSGBM 给出负数及以上 numberOfDisparities 数
我正在 OpenCV 中编写一个函数来计算 v 和 u 视差,所以我首先需要视差图像。我设置 sgbm.minDisparity = 0 和 numberOfDisparities = 160。
视差图像是 CV_16SC1,我需要无符号值来继续编程我的函数。
我打印了整个Mat,有负值和160以上的值。如果我对文档理解得很好,视差图像代表视差值*16。这是否意味着在我的情况下最大值为 16*160?如果没有,可能有什么问题?无论如何,当 minDisparity 设置为 0 时,为什么会有小于零的值?这是代码:
opencv - u-disparity 显示预期 cols 的一半
检查代码一千次后,我看不出我做错了什么。该算法非常简单:我有一个 CV_16U 图像,其视差值称为 disp,我正在尝试构建 u 和 v 视差以检测障碍物。
问题是当我在转换为 8bit Unsigned 后使用 imshow 打印两个差异时。u-disparity 是错误的,因为它具有应有的形状,但它是水平尺寸的一半,即正确的黑色像素。
c++ - 使用块匹配算法获取纹理点云
我想用两个图像的原始图像颜色对生成的点云进行纹理处理。为此,我使用块匹配计算了视差图并进行了重建。为 .ply 文件编写导出函数也没什么大不了的。我的问题是:如何从块匹配算法中获取颜色?它确实在校正后的图像上寻找相似的像素,但没有变量可以保存找到的匹配的位置,参考 API。之后无法恢复颜色。
(我正在使用 OpenCV 2.4.8)
python - 视差图不会显示/不确定是否正确校准
我使用我在网上找到的其他代码编写了此代码。我没有收到任何错误,但是我无法使用 imshow 显示视差图。我保存了图像,它只是黑色的,所以我没有正确地做某事。有人可以看看我的代码,看看有什么问题吗?我可能没有正确地进行立体校准,但我不确定。谢谢!
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++。
c++ - 用于对应搜索和视差 C++ 的 OpenCV 权重方法
我有一个 OpenCV 应用程序,我必须使用两个图像对之间的不同支持权重来实现对应搜索。这项工作与Kuk-Jin Yoon和In So Kweon的“ Adaptive Support-Weight Approach for Correspondence Search ”非常相似。支撑重量在给定的支撑窗口中。我使用两个图像中的支持权重计算像素之间的差异。当参考图像中的像素p和q具有视差值d 时,Pd和
Qd是目标图像中的像素;
Np和Npd是支撑重量。
在此之后,每个像素的视差由WTA(Winner-Takes-All)方法选择为:
我想知道的是如何从图1的公式开始(我写的函数计算相异性和权重),即要考虑哪个像素?从哪儿开始?用什么像素?有什么建议吗?工作的最终结果应该类似于:
有什么好的方法可以做到这一点?
UPDATE1
我应该开始创建一个新图像,然后考虑像素(0,0)和所有其他像素之间的成本,找到最小值并将该值设置为新图像中像素(0,0)处的值? 其他像素等等?
camera - 两幅图像同一中心的视差
我将 Raspberry Pi 与 python2 一起使用。
我正在尝试计算左右相机拍摄的两张图像的差异。
但我不知道我应该使用什么代码。
我想要做的就是使用两个图像的目标中心(视差)来制作python,以便计算两个相机和目标之间的距离。
左摄像头:
右侧摄像头:
我想计算两个中心(twp green cicle)并将它们的差异变为距离。
opencv - OpenCV中DisparityWLSFilter的原始论文?
我正在对视差图进行后期处理。我的视差图像即使经过 WLS 过滤,也有太多“漏洞”。
这就是我现在得到的。纠正,但以鱼眼的方式。无论如何肯定会纠正,但有很多漏洞。视差匹配算法是SGBM。WLS 滤波器 sigma 为 2.1,lambda 为 30000。黑色区域是孔。
我指的是官方的 opencv 站点,它说Disparity map post-filtering并且它广泛使用DisparityWLSFilter。但我想知道它是如何在内部工作的,并想阅读有关此实现的理论论文。我想知道 Sigma 和 Lambda 做了什么,以及它将如何过滤我的图像。
而且,还有其他我可以使用的好的视差过滤器吗?WLS 过滤器无法有效地填补“漏洞”。或者,任何易于使用或易于实现的算法,或者不是 GPL 的库?
python - OpenCV - 来自未校准立体系统的深度图
我正在尝试使用未校准的方法获取深度图。我可以通过用 SIFT 找到对应点然后使用cv2.findFundamentalMat
. 然后我cv2.stereoRectifyUncalibrated
用来获取每个图像的单应矩阵。最后我用它cv2.warpPerspective
来校正和计算视差,但这并不能创建一个好的深度图。这些值非常高,所以我想知道是否必须使用warpPerspective
,或者是否必须从我得到的单应矩阵计算旋转矩阵stereoRectifyUncalibrated
。
我不确定通过校正获得的单应矩阵情况下的投影矩阵stereoRectifyUncalibrated
。
部分代码:
以下是未校准方法(和warpPerspective
)的校正图片:
以下是使用校准方法校正的图片:
我不知道这两种图片之间的差异为何如此重要。对于校准的方法,它似乎没有对齐。
使用未校准方法的视差图:
深度计算如下:C1[0,0]*T[0]/(disp)
使用 T 来自stereoCalibrate
。价值非常高。
------------ 稍后编辑 ------------
我尝试用“stereoRectifyUncalibrated”获得的单应矩阵“挂载”重建矩阵([Devernay97],[Garcia01]),但结果仍然不好。我这样做正确吗?