Computer vision 如何计算校正图像视差图的真实深度?

Computer vision 如何计算校正图像视差图的真实深度?,computer-vision,triangulation,depth,3d-reconstruction,disparity-mapping,Computer Vision,Triangulation,Depth,3d Reconstruction,Disparity Mapping,我已经为给定的校正立体对计算了一个视差图!我可以用这个公式计算我的深度 z = (baseline * focal) / (disparity * p) 假设基线、焦距和像素常数p是已知的,我对两幅图像使用了相同的相机。 现在我的视差可能在-32..128[像素]的范围内。当我使用上面的公式时,我将得到无穷大/除以0的值。当我将视差值移动到1..161时,我任意选择了视差值的范围,这是一个问题,因为函数1/视差将在1..161或100..260处给出完全不同的值间距,这甚至不是线性的。所以我甚

我已经为给定的校正立体对计算了一个视差图!我可以用这个公式计算我的深度

z = (baseline * focal) / (disparity * p)
假设基线、焦距和像素常数p是已知的,我对两幅图像使用了相同的相机。 现在我的视差可能在-32..128[像素]的范围内。当我使用上面的公式时,我将得到无穷大/除以0的值。当我将视差值移动到1..161时,我任意选择了视差值的范围,这是一个问题,因为函数1/视差将在1..161或100..260处给出完全不同的值间距,这甚至不是线性的。所以我甚至不会得到线性尺度的重建,因为尺度变化是非线性的

我如何确定我的视差必须位于哪个区域才能用上述公式得到度量重建? 或者,用上述公式和校正后的图像,根本不可能重建出符合韵律的东西?如果是这样,为什么


我知道我可以重新投影到我未校正的图像并进行三角测量,但我想特别了解为什么或者如果用上面的公式不可能。谢谢所有能帮助我的人

问题在于,校正通常会缩放和旋转图像,因此您不能仅从校正后的左摄像头向前投影深度,然后获得韵律重建。相反,您需要撤销对通信的更正。通过计算投影矩阵Q,将视差映射到3D来实现这一点。请参阅OpenCV文档中有关StereoRective和ReprojectionMageto3D的文档

有几点,或者要了解发生了什么,你可以一步一步地进行。以配方形式:

对于校正后的左图像中的每个像素x,y,查找校正后的右图像中对应像素的视差:x',y'=x+d,y 应用于x,y和x',y'校正同形图H和H'的倒数,获得原始图像坐标中的u,v和u',v'。 反向投影这些像素并与光线相交。
我做了更多的研究,我想我现在可以回答我的问题了。我想在评论中我们谈得有点过火了。也许现在我的意思更清楚了

并行设置: 公式z=基线*焦距/视差*p仅在图像由并行相机设置捕获时使用。如果摄像机是真正平行的,就不可能有正负差异。所以你不会得到0的视差值。在这种情况下,0只对应于无穷远处的一个点。如果存在真正的并行设置,则此公式可用于度量重建

聚合设置:
实际上,您的图像大部分是由聚合相机设置捕获的。这意味着在立体对图像中存在一个收敛点,其视差值为0。该点前面和后面的分歧符号将不同。这意味着您的差异包含负、正和在收敛点等于零的值。虽然您的图像已校正,但您不能使用上述公式,因为图像是由聚合立体相机设置捕获的。要正确使用公式,不可能将视差仅转换为正符号值。然而,使用移位值的结果将类似于正确的三维重建,但由于未知变换而奇怪地缩放和扭曲。

您可以查看此图以找到它们的关系:


请参阅

您的装备是否已校准,或者您只是在进行投影重建?谢谢您的回答!在我的特殊场景中,我没有校准矩阵K,但我有像素常数p。但即使我有校准矩阵K,上面的公式也不能确定度量重建,不是吗?我能想象的唯一可能的事情是,如果给定视差只有一个z值,我可以将视差值移动到相应的值范围[注:对于我来说,重要的是知道是否可以用这个公式确定度量深度]您在另一篇文章中写道,使用上述公式从校正后的图像重建是投影的。平行相机公式给出了给定像素处相对于观察校正图像的理想相机的深度。-但我不是刚把我的图像严格地转换成了公制吗?校正后的图像对和理想的立体图像对之间的确切区别是什么?在理想的立体声对设置中,是否有可能出现负差异?这也导致了上述问题?如果您有时间澄清,请提前感谢!我面临着类似的问题。你是如何得到P的值的?谢谢你的澄清。我完全理解你概述的方法。我知道这是真的
也许唯一能得到度量重建的方法。尽管如此,我的一部分问题仍然没有得到回答:你能核实一下我的陈述是否正确吗?校正后的立体声对的图片不能像理想的立体声对那样捕捉场景。虽然相同的世界点具有相同的y像素坐标,给定的图像信息并不真正适合变换后的校正相机设置,因此计算出的三维坐标与公制坐标不同。这意味着,只有当您有一个理想的相机设置时,才可能使用上述公式计算公制深度,您不需要校正,并且相机的放置方式为从左侧图像/相机开始,只有正视差。当你的视差包含负值时,即使是在理想的设置下,你的深度比例也会被错误地计算出来。一个完美平行的立体装置几乎不存在,特别是在现代传感器的分辨率下。为了让自己相信这是事实,对于普通的DSLR传感器和镜头,计算在一行像素内注册两台摄像机或一台摄像机所需的精度,基线为1/2米。在实验室外很难做到。奇怪的缩放和扭曲并不能回答问题。好吧,把这句话读到最后。。通过未知的转换。您不能简单地量化结果的失真,因为它取决于特定的图像。此外,问题没有要求这方面。