【问题标题】:How to take stereo images using single camera?如何使用单相机拍摄立体图像?
【发布时间】:2014-04-04 09:16:45
【问题描述】:
我想找到立体图像的深度图。目前我正在研究互联网图像,我想拍摄立体图像,以便我可以自己处理。如何在没有太多噪音的情况下拍摄最好的立体图像.我只有一个摄像头。需要整改吗?摄像头之间必须保持多少距离?
【问题讨论】:
标签:
image-processing
computer-vision
stereo-3d
stereoscopy
disparity-mapping
【解决方案1】:
不确定我是否正确理解了您的问题 - 无论如何都会尝试
我猜你目前正在处理来自middlebury 或类似的图像。如果您想使用类似的算法,您必须纠正您的图像,因为它们是基于相应像素在所有图像中位于同一行的假设。如果您确实想要深度图像(!= 视差图像),您还需要获取相机外部参数。
您的设置应该有两个摄像头,并且您必须确保它们不会在那里改变相对位置/方向 - 否则您的校正将会崩溃。在第一步中,您必须校准您的系统以获得内部和外部相机参数。为此,您可以使用某些工具或使用(例如)OpenCV (calib-module) 自行开发。打印出校准板来校准您的系统。之后,您可以拍摄图像并使用校准来校正图像。
关于色噪:
您可以使光圈非常小并使用高曝光时间。在我自己看来,这是没有用的,因为现实世界的情况无论如何都必须处理这些事情。
【解决方案2】:
简而言之,互联网上有很多立体图像已经被纠正。如果您想拍摄自己的立体图像,您必须遵循以下三个步骤:
- 到对象的距离 z (mm) 与像素 D 的视差之间的关系是相反的:z=fb/D,其中 f 是以像素为单位的焦距,b 是以 mm 为单位的相机间距。选择 b 以使您至少有几个像素的视差;
- 如果您知道相机固有矩阵并补偿了径向畸变,您仍然需要校正图像以确保匹配位于同一行中。为此,您需要找到一个基本矩阵、恢复基本矩阵、应用校正单应性并更新您的内在相机参数......或使用来自互联网的立体对。
- 明亮的场景、大光圈、大像素尺寸等有助于降低相机图像中的噪点;但是,根据您的设置,您仍然可能会得到一张非常嘈杂的视差图。减少这种噪声的方法是权衡准确性并使用更大的相关窗口。清理视差图的另一种方法是使用各种验证技术,例如
- 错误验证;
- 唯一性验证或反向强制验证
- 斑点噪声抑制等
【解决方案3】:
根据我的经验:
-我做了校正,所以我必须获得基本矩阵,这对于某些图像对可能不正确。
- 更好的相机分辨率更适合匹配,我使用 OpenCV,它有一个 BRISK 描述符的实现,这对我很有用。
- 尽量覆盖同一区域,尽量不要做不必要的旋转。
- 一旦你理解了这个理论,OpenCV 就是一个好朋友。这是一些结果,但我仍在努力:
深度图:
校正图像: