4

3D相机的数据处理方式

 3 years ago
source link: https://mp.weixin.qq.com/s/kWAf914kj1pK0PpeyTP7Pg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

3D相机的数据处理方式

Pontmercy 3D视觉工坊 6 days ago

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

640?wx_fmt=jpeg

在上一篇中,我们介绍了什么是3D相机。但是对于初次接触3D相机的同学,可能首先面临的问题是如何处理3D相机得到的数据。3D相机的数据分为两种方式:三维点云数据方式,二维数据方式。其中,三维数据保存的格式有csv,txt,ply,stl等。二维数据通常以二维图像的形式存在,其中保存Z方向的二维图像被称为深度图像。本篇主要介绍一下深度图像的生成与处理。1.前言3D相机虽然也被称为相机,也可以得到二维的深度图像,但其实并不是由感光像元产生图像。2D相机和3D相机由于都有一个“相机”的名字,通常让不太了解的人产生困惑。我们用英文可能更容易理解。中文里的3D相机,在英文语境下其实常被称为3D sensor,并没有3D camera的说法,而2D相机,被称为2D camera或者camera。
640?wx_fmt=jpeg
Wenglor 相机示意图如上图所示,一个典型的3D相机通常有一个2D相机和一个光源组成,光源的种类由其设计原理决定。3D相机的获取方式有很多种:单目立体视觉,双目立体视觉,三角测量法,结构光,TOF等等。因此它可能是白光、激光、投影仪,振镜等。3D相机获取3D数据的方式有很多,但不论是哪种方法,3D相机都通过某种算法或者原理来得到一些位置的3D数据。对于一些3D方面的应用,这些3D数据便是所需要处理的数据,例如,对于用于三维重建,点云数据本身便是要处理的对象。但是对于另一些方面的应用,如工业检测里面的平面度,高度等等,点云格式的数据并不是一个很好的方式。因此根据对后续的处理方式不同,3D相机得到的是3D数据保存方向有两种:一种是直接保存3D数据格式,相机可以直接导出三维数据,常见的如:点云通用格式PLY,STL,以及其他格式如CSV,txt等,这种情况下处理方式多为3D算法。支持这种保存方式的相机多用于3D重建, 地图引导等方向。相机采集到3D数据,用户用来处理和最终得到的也是3D数据。但是,有些时候,这些数据方式并不是我们需要的。在工业视觉检测领域,这些数据有时候并不是很友好。这体现以下这些方面:常见的工业检测如高度,缺陷等,并不需要三维数据,只需要高度数据。同时这些3D数据在传输和处理方面无法之前的图像处理系统兼容。因此,另外一种方式是保存成深度图像。工业相机多支持这种方式,它的好处在于:同时可以与之前的2D图像处理相融合,无论是数据传输还是处理,都可以非常方便地利用现有的图像处理算法和图像处理:例如LabVIEW,HALCON ,OpenCV。工业相机的厂商通常提供一种乃至多种传输协议来支持应用广泛的图像处理库来获取它们的深度图像。2.3D相机与深度图像2D相机的图像简单点儿说是像元感光直接成像的,就大多数相机而言,成像过程可以用小孔成像过程来描述。但是,3D相机则大为不一样。3D相机是先有三维的数据,而后生成的图像。深度图像不是由小孔成像和像元感光而产生的。而是通过某种方式计算生成的。前面我们已经介绍过深度图像的生成,现在我们简单回顾下:深度图像的生成公式通常由厂商定义,但是并不是随心所欲。为了保证后续的使用,例如纹理贴图等,深度图像和2D图像通常具有位置一致性,换句话说,深度图像上的像素点和纹理图像中的像素点是一一对应的,这个特点在纹理贴图过程中非常重要。厂商的随心所欲更多地体现在XY图上。如果需要根据XY图来还原出XY方向的数据,则需要提前知道公式或者相机厂商提供的API,而深度图像则像纹理图像一样通过API直接获取。
640?wx_fmt=png
如上图所示,深度图像上的像素点与纹理图上的像素点一一对应,基本上所有厂商都会进行保证这一点。当然,如前面所说,在拥有3D数据之后,相机也可以不生成图像,直接以点云格式保存,常见的有:csv,txt,ply,stl等。2D数据保存方式则为深度图像,主打方向为3D重建,逆向工程的3D相机大多支持这些格式中的一种或者多种。3.深度图像的处理深度图像与其它灰度图像的不同之处,在于深度图像的灰度值代表着Z方向的深度信息,而不是被拍物体的表面纹理信息。深度图像的处理方向实际上也可以分为两种:一种是按照2D图像处理的方式对图像进行,另一种则是将深度图像还原成3D数据,之后再按照3D数据的方式进行处理。这时,深度图像其实只起到了一个存储和传输数据内容的作用。当然这两种方式并不是泾渭分明的。为了完成一个项目,在实际中我们可能两种方式都会用到,例如先对深度图像做一些预处理,提取出我们想要的部分,再对这一部分单独生成点云,减小后续的工作量。这里为了介绍上的方便,我们依旧按照这两个方向进行介绍:3.1 2D处理方式
以kinect的深度图像进行孔洞补全来进行介绍。实际上孔洞补全这种操作只在民用级别的深度相机上出现。Kinect相机以及类似的相机,容易受到太阳光甚至是日光灯的干扰,这时候它们的深度数据会在测量区域内出现大量的孔洞,而在工业相机里,除非材料反光、太阳光干扰以及表面形状导致的局部过曝等情况,否则很少出现大面积数据缺少的情况。
640?wx_fmt=png
      修复前                                       修复后如上图所示,左图是Kinect采集得到的深度图,图像里有较大面积的缺失,这种缺失,这种缺失我们尝试采用2D的图像修复算法进行修复,修复后的效果如右图所示。3.2 3D处理方式工业3D相机采集到的数据在经过图像采集软件得到图像格式存储的数据之后,有时候需要将其还原成点云格式进行处理。厂商通常会提供这样的API或者函数。
640?wx_fmt=png
图一:RGB图像             图二:点云显示(伪彩显示)上图左一为相机通过HALCON导出来的图像,从它可以拆除深度图像,根据厂商提供的公式我们可以还原出XY方向信息,这样,我们就可以得到完整的3D信息,从而生成点云,如右图二。这样我们就可以利用点云处理的算法来处理数据。备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区本文仅做学术分享,如有侵权,请联系删文。下载1在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。下载2在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。下载3在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

640?wx_fmt=png▲长按加微信群或投稿

640?wx_fmt=jpeg

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款640?wx_fmt=jpeg 圈里有高质量教程资料、可答疑解惑、助你高效解决问题觉得有用,麻烦给个赞和在看~640?wx_fmt=gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK