opencv深度图精度

标签 opencv 3d computer-vision

我想使用带有 opencv 的 3d 立体照相手机测量到物体的距离。我正在寻找一个公式来衡量距离测量的准确性,具体取决于焦距、两个相机之间的距离、图像分辨率和被测物体的大小。 谷歌搜索了一下,我发现了这个公式:

d = Z^2 * p/(f*b)

Z - 到物体的距离,p - 视差精度,f - 焦距,b - 基线(相机之间的距离)。

我知道基线和焦距,但我不知道视差精度。 这个公式是我需要的吗?如果是这样,我如何找到视差精度?

谢谢。

最佳答案

我意识到这已经晚了一年,但以防万一有人发现它。

公式是这样的:

dD = dd * D^2/fB

哪里:

  • dd = 差异错误
  • dD = 深度错误
  • D = 深度
  • f = 焦距
  • B = 基线

如果 f = 6mm = 0.006mB = 24mm = 0.024mD = 10mdd 是 1 个像素 [我们暂时称它为 P,但通常约为 1.4um]。

将所有数字代入给出:

dD = P * 10^2/(0.006 * 0.024) ~ 694444 P

对于 P=1.4um,dD = 0.97 m(约为 9.7%)。

现在这是假设你的信件给出了单像素错误。您可以进行亚像素搜索,根据图像中的噪声级别和纹理,您可以获得亚像素精确对应。在这种情况下,您的准确性会好一些。

注意这个公式是为了错误。视差与深度的映射如下:

d = fB/D

哪里:

  • d = 差异
  • D = 深度
  • f = 焦距
  • B = 基线

类似地,插入数字给出:

d = (0.006 * 0.024/10) m = 0.0000144 m = 0.0144 mm = 14.4 um

如果您假设您的像素大小约为 1.4um,则 14.4um 约为 10 个像素。这与上面的错误一致——意味着 1 个像素的错误代表大约 10%。

10 米外的汽车在左右传感器之间移动 10 个像素。

希望对您有所帮助。

关于opencv深度图精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7089922/

相关文章:

javascript - 如何使用 Three.js 以等距离的 10 x 10 方式显示立方体?

machine-learning - 使用图像和其他特征进行分类

python - OpenCV 轮廓搜索和边界矩形创建算法

python - python cv中的值错误

c - 流式传输视频 UDP 协议(protocol)

opencv - OpenCV在鱼眼图像中找不到棋盘角

javascript - Three.js setPixelRatio 在 IOS 浏览器上崩溃

python - OpenCV如何从噪声和误报中清除轮廓

javascript - 使用 d3.js 的 3D 饼图

c++ - 在没有清晰边界/边缘的图像中找到矩形空间