正文字数:1497  阅读时长:2分钟

这个教程将带你使用自己的手机摄像头和图片实现从零开始到点云。

Posted by Omar Padierna

url : https://becominghuman.ai/stereo-3d-reconstruction-with-opencv-using-an-iphone-camera-part-i-c013907d1ab5

这是一个由3部分组成的系列文章。

我注意到,其他大多数关于三维重建的教程都在某种程度上有点欠缺。别误会,我认为它们是十分优秀的成果,但是在某种程度上它们是支离破碎的,或者它们当中有一部分过于深入地研究理论,或者两者兼而有之。

更糟糕的是,他们使用专门的数据集(如Tsukuba),这就会造成对一些数据集之外的任何东西在使用这种算法时,因为参数调微调会产生一些麻烦。

我相信三维重建(广义的计算机视觉)最酷的事情是重建你周围的世界,而不是别人的世界(比如数据集中的世界)。本教程是一个初步的尝试,旨在帮助您使用OpenCV的强大功能重新创建自己的世界。

简单地说,这个教程将带你使用自己的手机摄像头和图片实现从零开始到点云。所以,废话不多说,让我们开始吧。

注意

为了避免写一篇非常长的文章,本教程分为三个部分。

第1部分(理论和需求):概述了一个非常简单的立体三维重建所需要的步骤。

第2部分(相机校正):包括用代码校正你相机的基础设置/知识。

第3部分(视差图和点云):介绍了重建图片基础知识利用前面用代码标定过的相机。

三维重建所需的步骤

有很多方法可以重建周围的世界,但都可以归结为需要得到一张准确的深度图。

深度图中的每一个像素都表示的是深度信息(而不是颜色信息)。它一般都是用灰度图的形式展现出来。

Tsukuba 数据集的深度图。由OpenCV提供

如前所述,获取一张深度图有很多不同的方法,而这些方法都取决于所使用的传感器。一种传感器可以是一个简单的摄像机(从现在起在我们将称为RGB摄像机),但也可以使用其他传感器,如激光雷达或红外线或两者的组合。

传感器的类型将决定深度图的精准程度。根据精确度从大到小排列依次是激光雷达>红外线>相机。深度图也可以着色以更好的显示深度。

我的Kinect相机自拍图

根据所用传感器的类型,实际获取深度图需要的步骤或多或少。例如,Kinect相机使用结合了RGB相机和红外传感器,因此您可以立即获得一张深度图(因为它是由红外传感器处理的信息)。

但是,如果您除了手机摄像头之外什么都没有,该怎么办?在这种情况下,您需要进行立体重建。立体重建和使用您的大脑和眼睛用来实际理解深度的原理是一样的。

其要点在于从两个不同的角度看同一张图片,并在两张图片中寻找相同的事物,并从位置的差异推断出深度。这称为立体匹配。

为了进行立体匹配,重要的是使两张图片具有完全相同的特征。换一种说法,两张照片都不应该有任何失真。这是一个问题,因为大多数相机的镜头会导致不同程度的畸变。这意味着为了精确地进行立体匹配,需要知道相机的光学中心和焦距。

在大多数情况下,这些信息是未知的(尤其是对于您的手机摄像头),这就是为什么立体3D重建需要以下步骤的主要原因:

1. 相机校正:使用一组图像推断相机的焦距和光学中心

2. 图像畸变:去除重建要用到的图像中的镜头畸变

3. 特征匹配:在两张图片之间寻找相似的特征并构建深度图

4. 重投影点:使用深度映射将像素重投影到三维空间中。

5. 构建点云:生成一个包含三维空间中的点的新文件以进行可视化。

6. 构建网格以获得实际的三维模型(不在本教程的范围内,但很快将在其他教程中提供)

步骤1只需执行一次,除非更换摄像机。而每次你获得一对新照片时,都需要重新执行一遍第2-5步……大概就是这样子。

实际的数学理论(为什么)要复杂得多,但是在本教程之后,它将更容易处理和理解,因为你将在阅读完本文之后获取一个实例,你可以进行各种的实验。

在下一部分中,我们将探讨如何实际校准手机摄像头,以及一些校准的最佳实践操作。

LiveVideoStackCon 2020 北京

2020年10月31日-11月1日

点击【阅读原文】了解更多详细信息

使用iPhone相机和OpenCV来完成3D重建(第一部分)相关推荐

  1. 教程:使用iPhone相机和openCV来完成3D重建(第二部分)...

    本文为 AI 研习社编译的技术博客,原标题 : Tutorial: Stereo 3D reconstruction with openCV using an iPhone camera. Part ...

  2. opencv三维重建_使用iPhone相机和OpenCV来完成3D重建(第一部分)

    正文字数:1497  阅读时长:2分钟 这个教程将带你使用自己的手机摄像头和图片实现从零开始到点云. Posted by Omar Padiernaurl : https://becominghuma ...

  3. 使用iPhone相机和OpenCV来完成3D重建(第三部分)

    正文字数:4509  阅读时长:2分钟 欢迎来到本教程的第三部分,也是最后一部分关于立体重建的教程. Posted by Omar Padierna url : https://medium.com/ ...

  4. 每日新闻 | 明年新iPhone配备ToF镜头 为构建3D图像

    点击蓝字 关注我们 更多精彩,请点击上方蓝字关注我们! 每日新闻播报 第07-30期 1 趋势洞察 腾讯丁珂:安全问题既是底线,也是制约企业发展天花板 在第五届互联网安全领袖峰会丁珂表示,通过腾讯产业 ...

  5. 标定iphone相机_iPhone X的相机更好吗?

    标定iphone相机 While the iPhone X's design is its biggest talking point, the thing that really caught my ...

  6. 视频|结构光3D相机光机核心技术及3D成像性能分析

    在公众号「3D视觉工坊」后台,回复「光机」,即可获得课件. 课程大纲: 1.光机照明系统 2.光机成像系统 3.光机技术指标及光机选型 4.3D成像性能分析 结构光3D相机光机核心技术及3D成像性能分 ...

  7. 直播回顾|结构光3D相机光机核心技术及3D成像性能分析

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间(bilibili号:3D视觉工坊:htt ...

  8. 张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)

    from:https://blog.csdn.net/dcrmg/article/details/52939318 使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么 ...

  9. 苹果手机相机九宫格怎么设置_瞧不起iPhone相机?苹果手机5个逆天拍照功能,效果惊艳堪比单反...

    经常有人说苹果手机拍照效果差?要么是被美颜相机惯坏了,要么根本就不知道苹果拍照隐藏功能!国外的大神都是用苹果手机拍vlog,为什么别人就能拍出 "大片"既视感?而我只能拍出乡村爱情 ...

最新文章

  1. python两数之和(hash 表)
  2. [转载]为什么使用 SLF4J 而不是Log4J来做Java 日志
  3. 原来fb可以在一个工程里面输出多个swf模块
  4. 母版页可以动态切换吗?
  5. 文档上传到服务器上,将文件上传到服务器上
  6. 蝗虫算法java代码_蝗虫搜索算法 蝗虫算法:蝗虫优化算法是模拟自然界蝗虫种群捕食行为而提出的一 联合开发网 - pudn.com...
  7. PKU 学生反馈 2009 - 4
  8. Java面试之线程池详细
  9. CDN的安全防护功能
  10. 解决python2.7.9以下版本requests访问https的问题
  11. 谁都会做:简单易行的祛斑法 - 生活至上,美容至尚!
  12. 微信小程序斩获世界大奖后,中小企业怎样搭上这辆快速列车?
  13. 互联网+创新创业大赛反思总结
  14. JavaScript 对象
  15. USB HID报告描述符
  16. 测试数据科学家聚类技术的40个问题(附答案和分析)
  17. 如何查看mysql的gtid_mode_配置MHA开启主从同步的时候会提示从库gtid_mode为ON的状态...
  18. 蓝桥 卷“兔”来袭编程竞赛专场-09凯撒加密 题解
  19. Java软件测试工程师之学习进阶路线
  20. 极简风格的演讲型幻灯片设计

热门文章

  1. 以下结点node定义了一个学生的信息。函数find查找并返回学号小于num,且下一节点学号不小于num的结点指针
  2. 使用 husky 和 lint-staged 检查 Node.js 的代码一致性
  3. android单独刷入镜像
  4. redis安装全过程
  5. jquery中Live方法不可用,Jquery中Live方法失效
  6. Python fabric实践操作
  7. windows之tracert与linux之traceroute用法详解
  8. HDU多校7 - 6850 Game(博弈+思维+贪心)
  9. POJ - 1358 Housing Complexes(二分图最大匹配)
  10. httpclient 设置超时时间_面试官:技术选型,HttpClient还是OkHttp?