深度估计的准确性 - 立体视觉

2024-05-21

我正在研究立体视觉,我对这个问题的深度估计的准确性感兴趣。这取决于几个因素,例如:

  • 适当的立体校准(旋转、平移和失真提取),
  • 图像分辨率,
  • 相机和镜头质量(失真越小,色彩捕捉正确),
  • 两个图像之间的匹配特征。

假设我们没有低成本的相机和镜头(没有廉价的网络摄像头等)。

我的问题是,我们在这个领域可以达到的深度估计的精度是多少? 有人知道一个真正的、具有一定精度的立体视觉系统吗? 我们能达到1毫米的深度估计精度吗?

我的问题也针对在 opencv 中实现的系统。您能达到什么准确度?


问:有人知道一个真正的、具有一定精度的立体视觉系统吗?我们能达到1毫米的深度估计精度吗?

是的,您绝对可以使用立体装备实现 1 毫米(甚至更好)的深度估计精度(哎呀,您可以使用一对显微镜进行立体侦察)。精度在 0.1 毫米范围内的基于立体的工业检测系统已被日常使用,至少从 1990 年代初就开始使用。需要明确的是,“基于立体”是指使用 2 个或更多几何上分离的传感器的 3D 重建系统,其中通过对传感器中 3D 点的匹配图像进行三角测量来推断点的 3D 位置。这样的系统可以使用结构光投影仪来帮助图像匹配,然而,与适当的“基于结构光的3D重建系统”不同,它不依赖于光投影仪本身的校准几何结构。

然而,大多数(可能是所有)此类专为高精度而设计的立体系统要么使用某种形式的结构照明,要么使用一些有关重建形状的几何形状的先验信息(或两者的组合),以便tightly约束要三角剖分的点的匹配。原因是,一般来说,三角测量的精度比匹配的精度高,因此匹配精度是重建精度的限制因素。

了解为什么会出现这种情况的一种直观方法是查看立体重建方程的简单形式:z = f b / d。这里“f”(焦距)和“b”(基线)总结了装备的属性,它们是通过校准估计的,而“d”(视差)表示同一 3D 点的两个图像的匹配。

现在,至关重要的是,校准参数是“全局”参数,并且它们是根据在感兴趣的视野和深度范围内进行的许多测量来估计的。因此,假设校准过程是无偏的并且系统近似时不变,则每个测量中的误差在参数估计中被平均。因此,通过进行大量测量,并严格控制钻机光学、几何形状和环境(包括振动、温度和湿度变化等),可以非常准确地估计校准参数,即影响无偏估计值传感器分辨率阶数的不确定性或更好,使得在设备运行的已知空间体积内可以忽略其残余误差的影响。

然而,差异是逐点估计:有人指出,这一点p左图中(也许)匹配点q右图中,以及视差中的任何错误d = (q - p)出现在z缩放比例f b。这是一锤定音的事情。更糟糕的是,在所有重要的情况下,视差的估计受到被分析对象的(先验未知)几何形状和表面属性以及它们与照明的相互作用的影响。这些因素——通过人们使用的任何匹配算法——共同降低了人们可以实现的重建的实际精度。结构照明在这里很有帮助,因为它减少了这种匹配的不确定性:基本思想是将清晰、聚焦良好的边缘投射到可以在图像中找到和匹配(通常具有亚像素精度)的对象上。结构光方法有很多,所以这里不再赘述。但我注意到这是一个使用颜色并仔细选择光学器件的领域投影机的可以帮助a lot.

因此,像往常一样,您在实践中能实现的目标取决于您愿意花多少钱(更好的光学器件、更低噪声的传感器、刚性材料和钻机机械设计、受控照明)以及您的理解程度并且可以限制您的特定重建问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度估计的准确性 - 立体视觉 的相关文章

  • 自适应阈值二值化的不良影响

    I implemented some adaptive binarization methods they use a small window and at each pixel the threshold value is calcul
  • OpenCV 中“IplImage”和“CvMat”的全称是什么?

    有一个IplImage and CvMat在 OpenCV 中 他们的全名是什么 IPL in IplImage代表英特尔处理库 这是Intel维护OpenCV时的残余 CV in cvMat代表计算机视觉矩阵 这是图形中常用的数据结构 I
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • 如何计算立体视觉的基本矩阵

    我正在尝试编写一些代码来计算基本矩阵以确定立体图像之间的关系 我从大多数人推荐的 Hartley 和 Zisserman 书开始 但它没有任何实际示例 并且示例代码是在 MATLAB 中 而我没有 然后我切换到这个比较实用 里面有实际例子
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • OpenCV:使用 StereoCamera 系统对颜色标记进行 3D 姿态估计

    我有一个立体摄像系统并使用两者正确校准它 cv calibrateCamera and cv stereoCalibrate My reprojection error似乎没问题 凸轮0 0 401427 凸轮1 0 388200 立体声
  • Opencv - 找不到头文件

    我正在尝试使用 opencv 开始开发 问题是 到目前为止我几乎无法设置 opencv 因为我找不到它的头文件 我对此主题进行了一些研究 但没有一个真正有帮助 下面是一些链接 opencv2 包含文件在哪里 https stackoverf
  • OpenCV Android - 无法解析相应的JNI函数

    我正在尝试按照此处概述的本教程使用 Opencv 设置 Android Studio https www youtube com watch v OTw GIQNbD8 https www youtube com watch v OTw G
  • OpenCV,捕获的视频比原始相机视频运行得更快!

    我正在使用 openCV 从相机捕获视频并将其存储到 avi 文件 问题是当我完成捕获并运行 avi 文件时 视频流看起来速度很快 这是代码 void main CvCapture capture cvCaptureFromCAM 0 in
  • 使用 cv2 在 python 中创建多通道零垫

    我想用 cv2 opencv 包装器在 python 中创建一个多通道 mat 对象 我在网上找到了一些例子 其中 c Mat zeros 被 numpy zeros 替换 这看起来不错 但似乎没有多通道类型适合 看代码 import cv
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • VideoCapture 未检测到 uEye 摄像头

    我的 uEye 相机遇到了一个问题 使用我的笔记本电脑摄像头 id 0 或 USB 上的网络摄像头 id 1 此行完美运行 TheVideoCapturer open 1 TheVideoCapturer 属于 VideoCapture 类
  • GrabCut - bgdModel 和 fgdModel 为空 - 断言错误

    我正在尝试使用 OpenCV2 1 C 中的 GrabCut 算法进行图像分割 这是我的代码 Mat rgbWorkImage imread argv 1 Mat mask mask Scalar 0 Mat bgdModel fgdMod
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • OpenCV 2.4 Jpeg 到 PNG(带 alpha 通道)

    我有一个 JPEG 和一个蒙版 我想创建一个具有三个 JPEG 通道的 PNG 并且 Alpha 通道应该是蒙版 如何使用 OpenCV 实现这一目标 Regards std vector
  • 寻找两个框架之间的变换

    我有来自视频源的两个连续帧 并且我使用 FAST 算法检测这两个帧的关键点 我使用平方差之和法 SSD 来匹配关键点 所以基本上我已经匹配了两个框架之间的关键点 现在我想根据匹配的关键点集计算两个帧之间的仿射变换 缩放 旋转 平移 我知道如
  • 如何使用 Android 处理在 Google Cardboard 设备中显示立体图像?

    处理的目的是使使用 Java 绘图变得更加容易 Android 的处理功能具有桌面版的强大功能以及来自传感器的信息 将这些东西放在一起 显示立体图像并像 Oculus Rift 或 Google Cardboard 一样在其周围移动不是很容

随机推荐