2017-05-25 335 views
1

假设我们有两个整流照片与立体摄像机已知的像素位置,我们要画视差映射如何解释差异值

这将是最接近的像素,如果在右边的照片的像素都被感动方向?我知道,如果我们做的最远点是具有最小值的点q.x -p.x(p是左图中的像素),那么距离它的最大值是否最接近?

谢谢

回答

1

视差图通常被写有其指示符号值的方向从一个图像中的立体像对的像素移动到另一个。例如,如果在位置< 100,250>的左侧视图中有一个像素,并且在右侧视图中对应的像素位于位置< 115,250>那么在位置< 100,250>处的左侧视图的视差图将具有值15。在位置< 115,250>处的右视图的视差图将具有-15的值。

视差图可以是多通道图像,通常是第一个通道中的x偏移和第二个通道中的y偏移。如果您正在查看具有许多不一致性的高分辨率立体声对,则可能无法将所有可能的差异值放入8位图像中。在电影业中,大多数视差图都以16或32位浮点图像的形式存储。

没有标准差异的标准方法,并且由于差异意味着描述“物理/具体/不可变/等”属性,所以通常不被称赞。但是,有时候这是必要的。例如,如果要在8位图像中记录大型立体声对的差异,则必须将这些值缩放以适合8位容器。你可以用许多不同的方式来做到这一点。

缩放视差图的一种方法是取最大的绝对视差值,并将所有值除以一个因子,将该值减少到您签名的8位世界(128)中的最大值。这种方法很容易通过一个简单的乘法器缩放回原始的视差范围,但显然由于分割创建的降低步骤会导致细节的减少。例如,如果我有一个视差范围为50到-200的图像,这意味着我有250个可能的视差值。我可以将所有值除以200/128 = 1.5625。这给了我32到-128或160个可能差异值的范围。当我使用乘法将这些值进行缩放时,我再次得到50到-200,但现在在该范围内只有160个可能的差异值。

使用上述视差范围的另一种方法是简单地移动范围。总的范围是250,我们的带符号的8位容器可以容纳256个值,所以我们从所有值中减去250-128 = 72,这给我们提供了从122到-128的新范围。这使得我们可以保留所有的差异步骤,并通过将我们的移位因子添加回图像中而获得确切的输入图像。

相反,如果您有一个范围为-5到10的视差图,则可能需要扩大该范围以包含子像素视差值。因此,您可以将10缩放到128,将-5缩小到-64。这给出了更广泛的值,但可能值的总数将根据输入视差范围而逐帧改变。

缩放方法的问题是它们可能是有损的,每个保存的图像都会有一个需要反转的缩放因子/方法。如果每个图像都有单独的比例因子,那么该因子必须与图像一起存储。如果每幅图像具有相同的比例因子,那么由于可能值的减少,将会有更大的数据退化。这就是为什么在较高比特深度存储视差图以确保数据完整性的普遍良好做法。

+0

谢谢你的明确答案,但在这种情况下,例如左视差图的值为15(让我们假设这是最大可能值),因此15代表相机最远的标签? – Raziel

+0

视差贴图通常不处理最小和最大视差值。他们只报告每个像素的差异。缩放视差图以填充一些数值没有标准。我会在缩放到我的答案上添加细节。 – BHawk