假设我们有两张经过调整的照片,其中有来自立体相机的已知像素位置,我们想要绘制视差图
如果右侧照片中的像素向两个方向移动,那么最近的像素是多少?我知道最远点是具有最小值的点,如果我们做 qx -px (p是左图中的像素)那么这个最大值是最接近的吗?
谢谢
答案 0 :(得分:2)
视差图通常用有符号值写入,这些有符号值表示像素在立体对中从一个图像移动到另一个图像的方向。例如,如果左视图中的像素位于< 100,250>处。并且在右视图中,相应的像素位于< 115,250>处。那么位置< 100,250>处左视图的视差图。将具有值为15.位置处的右视图的视差图< 115,250>的值为-15。
视差图可以是多通道图像,通常在第一通道中具有x移位而在第二通道中具有y移位。如果您正在查看具有大量视差的高分辨率立体声对,则可能无法将所有可能的视差值拟合到8位图像中。在电影工业中,大多数视差图被存储为16或32位浮点图像。
没有标准的缩放差异的方法,并且通常不赞成,因为差异意味着描述物理/具体/不可变/等等#34;属性。但是,有时候是必要的。例如,如果要在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。这提供了更宽范围的值,但可能值的总数将根据输入差异范围在帧与帧之间变化。
缩放方法的问题在于它们可能是有损的,并且每个保存的图像都将具有需要反转的缩放因子/方法。如果每个图像都有一个单独的缩放因子,那么该因子必须与图像一起存储。如果每个图像具有相同的缩放因子,则由于可能值的减少,将会有更大的数据劣化。这就是为什么通常优良的做法是将视差图存储在更高的比特深度以确保数据的完整性。