跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
捷比信电阻高精密 · 大功率无感 · 金属膜电阻

使用您自己的手机摄像头和图片从头到尾实现云计算

本教程将带您使用自己的手机摄像头和图片,从头到尾实现点云。这是由3部分组成的系列文章。我注意到,大多数其他有关3D重建的教程都有些缺乏。不要误会我的意思,我认为它们是非常好的结果,但是在某种程度上它们是零散的,或者其中一些对理论的研究太深,或者两者兼而有之。更糟的是,他们使用专门的数据集(例如Tsukuba),将这种算法用于除某些数据集之外的其他任何数据集都会造成一些麻烦,因为参数调整和微调会带来一些麻烦。我相信3D重建(广义上的计算机视觉)最酷的事情是重建您周围的世界,而不是其他人的世界(例如数据集中的世界)。本教程是初步尝试,可以帮助您使用OpenCV的强大功能来重新创建自己的世界。简而言之,本教程将使用您自己的手机摄像头和图片将您从头开始带到点云。因此,废话少说,让我们开始吧。请注意,为了避免撰写冗长的文章,本教程分为三个部分。第1部分(理论和要求):概述了非常简单的三维重构所需的步骤。第2部分(相机校准):包括基本设置/使用代码校正相机的知识。第3部分(视差图和点云):介绍使用通过代码校准的相机重建图片的基础。 3D重建所需的步骤重建周围世界的方法有很多,但是所有这些方法都可以归因于需要获得准确的深度图。深度图中的每个像素代表深度信息(不是颜色信息)。它通常以灰度图像的形式显示。筑波数据集的深度图。由OpenCV提供如前所述,有很多不同的方法来获取深度图,这些方法都取决于所使用的传感器。传感器可以是简单的相机(从现在开始,我们将其称为RGB相机),但是也可以使用其他传感器,例如激光雷达或红外传感器或两者的组合。传感器的类型将确定深度图的准确性。根据精度,从最大到最小的顺序是激光雷达>红外>照相机。深度图也可以着色以更好地显示深度。我的Kinect相机自拍图取决于所用传感器的类型,获取深度图所需的实际步骤或多或少。例如,Kinect相机结合使用RGB相机和红外传感器,因此您可以立即获取深度图(因为它是由红外传感器处理的信息)。但是,如果您只有手机摄像头,该怎么办?在这种情况下,您需要执行立体声重建。立体声重建与使用大脑和眼睛实际理解深度相同。重点是从两个不同的角度看同一张图片,在两张图片中寻找相同的事物,并从位置差异推断出深度。这称为立体声匹配。为了执行立体匹配,重要的是使两个图片具有完全相同的特性。换句话说,两张照片不应有任何失真。这是一个问题,因为大多数相机镜头会导致不同程度的畸变。这意味着,为了准确地执行立体声匹配,需要知道相机的光学中心和焦距。在大多数情况下,此信息是未知的(尤其是对于您的手机摄像头),这是立体3D重建需要执行以下步骤的主要原因:1.摄像头校正:使用一组图像推断镜头的焦距和光学特性。相机中心2.图像失真:消除用于重建的图像中的镜头失真。3.特征匹配:在两张图片之间找到相似的特征并构建深度图。4.重投影点:使用深度映射将像素重投影到三维空间中。 5.构建点云:生成一个包含三维空间中的点的新文件以进行可视化。 6.构造网格以获取实际的3D模型(不在本教程的范围内,但很快将在其他教程中提供)。步骤1仅需执行一次,除非更换了相机。而且,每当您获得新的照片对时,您都需要再次执行步骤2-5,可能就是这样。实际的数学理论(为什么)要复杂得多,但是在学习完本教程之后,它将更易于处理和理解,因为阅读本文后您将得到一个示例,并且可以执行各种实验。在下一部分中,我们将讨论如何实际校准手机摄像头以及一些最佳校准方法。