Opencv 立体视觉中视场如何改变深度估计?

Opencv 立体视觉中视场如何改变深度估计?,opencv,computer-vision,stereoscopy,Opencv,Computer Vision,Stereoscopy,我正试图通过一个有两个摄像头的立体系统来估计深度。我使用的简单公式是: Baseline*Focal Depth = ---------------------- Disparity 两个摄像头的视野不会改变允许的最大深度? 它只改变可测量的最小深度 在顶端,可测量的深度受到您使用的相机分辨率的限制,这反映在视差中。随着深度变大,视差趋于零。如果视野更大,则在较低的深度,它实际上将为零。因此,更大的视野会降低可测量的最大深度,但您可以通过使用更高

我正试图通过一个有两个摄像头的立体系统来估计深度。我使用的简单公式是:

           Baseline*Focal
Depth = ----------------------
             Disparity
两个摄像头的视野不会改变允许的最大深度?
它只改变可测量的最小深度

在顶端,可测量的深度受到您使用的相机分辨率的限制,这反映在视差中。随着深度变大,视差趋于零。如果视野更大,则在较低的深度,它实际上将为零。因此,更大的视野会降低可测量的最大深度,但您可以通过使用更高分辨率的相机进行一定程度的补偿

澄清一下:你应该注意(如果你做得正确的话)你测量像素的视差,然后把它转换成米(或者像我下面做的那样转换成毫米)。那么完整的公式是:

          Baseline * Focal length
Depth = ----------------------------
        Pixel disparity * Pixel size
假设您具有以下设置:

Baseline (b) = 8 cm (80 mm)
Focal length (f) = 6.3 mm
Pixel size (p) = 14 um (0.014 mm)
您可以测量的最小视差为1像素。根据已知的数字,这转化为:

Depth = (80*6.3)/(1*0.014) = 36,000 mm = 36 m
所以在这种情况下,这将是你的帽子。请注意,在此范围内,您的测量值非常不准确。下一个可能的视差(2个像素)出现在18米的深度,下一个(3个像素)出现在12米的深度,等等。将基线加倍将使范围加倍到72米。焦距加倍也会使你的射程加倍,但请注意,这两种情况都会在短距离内对你产生负面影响。您还可以通过减小像素大小来增加最大深度

当像素尺寸为0.014mm时,您可能正在谈论一个水平分辨率为1024像素的CCD,对于一个宽约14.3mm的CCD。如果将同一区域的像素数增加一倍,将使最大范围增加一倍,而不会在近端丢失任何东西(因为那里的限制是由基线和焦距决定的,它们保持不变)

是立体视觉中深度测量权衡的一个很好的概述。
维基百科上有一些关于像素大小、ccd大小、焦距和视野之间关系的好信息。

谢谢你的回答,Jilles,但是有一个公式描述了这一点?很好。谢谢你的回答+1.