锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

自动驾驶—自动泊车之AVM环视系统算法框架

时间:2023-02-20 02:00:00 cd22激光传感器f37h影像传感器systems多相管路传感器ab型传感器

作者中投靓仔@知乎

来源丨https://zhuanlan.zhihu.com/p/534553717

编辑丨3D视觉工坊

AVM(Around View Monitor),中文:全景环视系统。在自动驾驶领域,AVM属于自动停车系统的一部分,是一种高度实用的功能,可以大大提高用户体验和驾驶安全性。AVM已经是比较成熟的技术了,中高端车型都有部署,但是详细说明AVM系统算法的技术博文不多。作者在工作中建立了一套AVM算法框架,有些效果很好demo。写这篇文章主要是为了写AVM算法框架中的每一个算子都讲得很清楚,并与大家一起进步。本博文的风格是理论与实践的结合,包含一些代码,适合有一些计算机视觉基础的学生。

关键词:相机联合校准、去畸变、投影变换、鸟瞰图、图像融合、光流、真实感3D模型,纹理映射。

AVM系统概述

AVM如图所示,汽车环视图像系统由四个外部鱼眼相机组成,安装在前保险杠、后备箱和后视镜上。该系统中包含的算子按顺序:去畸变、四路鱼眼相机联合校准、投影变换、鸟瞰微调、拼接融合、3D模型纹理映射等。四路鱼眼捕捉到的图像信息通过上述算子,生成一个2D、3D的全景图。AVM算法分为离线阶段和在线阶段。在线阶段简化了离线阶段,更适合工程实现。让我们一一讲述。

917aeceecaf29a0fc5af9b80c1a41366.jpeg

avm系统示意图

离线阶段算法pipeline

先粗略浏览一下AVM算法Pipeline包括那些算子:

  • 2D AVM

2D AVM Pipeline

  • 3D AVM

3D AVM Pipeline

1.基于畸变表的鱼眼相机去畸变

1.1鱼眼相机畸变模型

我们知道普通相机和广角相机的投影方法一般是透视投影,即基于理想的透视投影模型(无畸变),通过三角形相似原理将相机坐标系下三维世界中的物体投影到平面上。但实际情况是,我们得到的最终图像与理想的透视投影模型不同,即径向畸变(桶形、枕形)和切向畸变。因此,畸变将在相机校准中得到纠正。

鱼眼相机的投影方法有很多,如等距投影、等立体角投影、正交投影、体视投影和线性投影。但真正的鱼眼相机镜头并不完全遵循上述模型假设。Kannala-Brandt提出了一种估计一般形式,适用于不同类型的鱼眼相机:

鱼眼相机模型

张正友先生的棋盘格校准方法通常用于去除相机畸变。首先,通过矩阵推导得到更好的初始解决方案,然后通过非线性优化得到最佳解决方案,包括相机的内参、外参和畸变系数,然后对鱼眼图像进行畸变处理。内参即:

相机内参矩阵

然而,张正友的标定法并不适用于我们的场景。

1.2基于厂家畸变表的鱼眼图像去畸变

由于张正友先生的棋盘格定法是拟合图像的全局,获得全局的最佳解决方案,因此有必要确保标定板的棋盘格可以多次拍摄覆盖整个图像区域。我们假设的场景是要求车辆上的装配线进行校准,即相机已经安装在车辆上。显然,由于车身堵塞,很难保证上述条件。此外,棋盘格适用于批量生产。因此,我们选择了基于厂家提供的畸变表去除鱼眼相机图像的畸变。相机制造商有专业的光学工程师,大型工厂提供的畸变表通常更准确。当然,也有一些基于畸变表的优化方法,如[2]最小重投影计算最佳相机的主要位置,然后使用畸变表进行畸变处理。在其他场景中,一些学生首先校准相机的内部参考,然后将内部参与畸变表联合使用。以下是基于畸变表的去畸变方法:

制造商提供的畸变表

fisheye::initUndistortRectifyMap(m_intrinsic_matrix, m_distortion_coeffs, R, NewCoeff, image_size*2, CV_32FC1, mapx, mapy);cv::remap(disImg, undisImg, mapx, mapy, INTER_LINEAR);

一般来说,鱼眼相机去畸变的过程实际上是通过我们想要的无畸变图上的坐标点,通过mapx,mapy两个查找表,找到该坐标点在畸变图上的像素位置。通常这个像素的位置是浮点型,需要双线插值。否则,纹理边缘会出现锯齿状问题,这是作者实现的结论opencv remap对函数验证感兴趣的学生可以自己实现mapping过程(搜索 插值)。来看图:

鱼眼图 去畸变

右图显示了基于畸变表去畸变的结果以看出去畸变的效果一般符合要求,如柱边、标定布边、车道线等。但仍有部分地区去畸效果不好,直线不够直。这个问题在鸟瞰图中会更加突出,也是覆盖面积拼接不均匀的重要原因。。可能有几个原因:(1)相机光轴与成像平面的交点(主点)与图像平面的中心不一致,即内参矩阵Cx、Cy。(2)厂家给出的焦距f不允许(3)厂家给出的畸变表有误差。

理论上讲,相机的标定是一个计算全局最优解的过程,可以理解为:我的内参可以不那么准,我拿到的畸变表也可以不那么准,但是只要我的优化目标重投影误差很小,或者畸变去的比较干净,那么这个全局最优解就是可以接受的。因此,在引用2中使用最小化重投影误差的方法来获得内参Cx、Cy,然后使用畸变表;在某些情况下,一些学生用棋盘格标记相机的内参,然后使用畸变表。作者将陆续优化这些内容。

2.四路鱼眼联合标定

鱼眼相机联合校准的目的是获得四个鱼眼相机之间的目的位姿关系,然后将拍摄到的图像搞到同一个坐标系下得到一幅全景环视图。

相机联合标定示意图

如图所示,全景鸟瞰图的视野范围是人为给定的参数,可根据用户喜好进行调整。已知的先验信息是标定布上的棋盘格尺寸、黑格子尺寸、汽车与标定布之间的间距。在现实世界中,上述先验信息与全景图的尺度关系为1:1,即1个像素代表1cm(当然,这个尺度也可以调整,让像素代表n厘米没问题)。联合标定意义在于:我们可以知道前、后、左、右鱼眼相机畸变后图像中棋盘格的上角,以及前、后、左、右鸟瞰图中棋盘格角对应的坐标关系。这样,我们就可以根据投影变换将整个图像投影到相应的鸟瞰图上。因为在联合校准中,四个鸟瞰图刚刚拼接在一起,所以用上述方法将四张图片全部投影到鸟瞰图上,应该拼接在一起,而不考虑理想的误差。以上,就是联合标定思路

3.投影变换

3.1投影变换原理

对投影变换的流行理解是,假设同一个相机分别存在A、B两个不同的位置以不同的位置拍摄相同的位置平面(重点是拍摄平面,如桌面、墙壁、地平面),生成两个图像,这两个图像之间的关系称为投影变换。张正友先生的相机校准方法使用校准板平面到图像平面投影模型之间。

投影变换模型

图中相机从两个不同的角度拍摄相同的X平面,两个相机拍摄的图像之间的投影变换矩阵H(单应矩阵)为:

K是相机内参矩阵,R、T两个相机之间的外参。网上有很多公式是如何推导的。我们只需要知道,这个单应矩阵H实际上包含了两个相机之间的位置关系即可。这就解释了为什么有些AVM pipeline方法是校准相机的外参,然后通过通过制造商提供的相机安装参数将所有四个鱼眼统一到车身坐标系下,我们不需要这个过程,只需要使用校准布进行联合校准。事实上,这两种方法都是相互关联的,都不能绕过计算相机的外部参数

3.2 投影变换产生鸟瞰图

生成鸟瞰图的过程可以理解为将鱼眼相机拍摄的图像投影到汽车上方平行地面拍摄的相机的平面上。单应矩阵H的具体数量取决于去畸变图中检测到的棋盘格角坐标和全景图中联合标定的棋盘格角坐标。如图所示,以后置相机为例,已知图(2)中框棋盘格坐标联合标定,图(1)中棋盘格坐标可通过opencv检测单应矩阵H的求解模型。

(1)去畸图中棋盘格的位置 (2)全景图中棋盘格位置联合标定 (3)瞰图

3.谈一些经验

3.3.尽量选择更多的角度计算单应矩阵

单应矩阵的求解是拟合过程,如果选用过少的点,容易陷入局部最优解。造成的结果是就是鸟瞰图上只有你选择的那些点可以正确的投影,其他像素的投影可能不正确。这一点有点类似于深度学习中训练样本太少,导致过拟合的问题。

单应矩阵三种形式(1)(2)(3)

上面公式可以看出,一对匹配点可以提供两组方程,理论上4对匹配点就可以求解出单应矩阵。Opencv求解单应矩阵提供了两个函数,findHomography和getPerspectiveTransform。

getPerspectiveTransform的输入是4对点,对(2)中矩阵求逆。理想情况下这种方法是可行的,但由于存在噪声,我们在图像上检测到的角点的误差、标定布棋盘格的误差,这种方法极其不准确。

findHomography求单应矩阵的方法输入点对很多,解一个超定方程(3)。经过一顿推导,单应矩阵为(3)中矩阵的奇异值分解中最小奇异值对应的特征向量。这种方法用于做拟合的样本更多,最终的效果更好。而且Opencv还有很多优化算法,例如基于ransac思想的单应矩阵求解方法。当然,为了提高效果,可以对标定布进行DIY,某宝上很多这种DIY标定布,你想搞多少格子就搞多少。

如1.2所述,由于畸变去除的不彻底,导致有些直线仍然是弯曲的。这一现象在投影到鸟瞰图上之后尤为明显,通过大量的棋盘格点进行投影变换,可以从一定程度上强制矫正这个问题。至少可以让车身附近的全景图效果更佳,而我们的avm系统最在意的恰好就是车身周围这部分,距离车身远的部分也不会呈现出来。如图所示为某厂DIY的标定布示意图。

DIY标定布

3.3.2尽量让棋盘格处于相机拍摄图像的中心

鱼眼相机在中心部分畸变小,边缘位置畸变大。去畸变的结果通常也是中间的效果好,边缘残留的畸变多。因此,为了使单应矩阵计算的更佳准确,我们要保证标定布摆放的时候棋盘格位于鱼眼相机中央。这也是为什么某宝上标定布使用的示意图通常是图(2)这种,而不是图(1)。很显然,图(2)中棋盘格位于左侧后视镜附近(左鱼眼相机就在左后视镜上),即相机图像的中间位置,而图1中棋盘格则在相机图像边缘上。

左侧鱼眼相机鸟瞰图(1)(2)

4.拼接融合

经过3中的投影变换,我们得到4张包含重叠区域的鸟瞰图如图所示,需要将这些鸟瞰图进行拼接融合。

鸟瞰图

以左、前鱼眼相机俯视图为例,观察下它们的重叠区域重叠区域:

白色为重叠区域、AB为前鸟瞰图边界、CD为右鸟瞰图边界

通常的做法是分别以AB、CD为边界,计算白色区域像素点与AB、CD之间的距离,然后计算一个权重,距离CD越近的位置,前俯视图权重越大;距离AB越近的位置,左俯视图权重越大。但会出现边界效应如图所示:

前俯视图权重图

其原因也很容易理解:如图所示,将AB、CD延长至O点,在EAOCE这个区域内,使用上述方法计算权重图才是一个完整连续的模型,如果在EABFDCE这个区域内计算权重图相当于把一个完整连续的域强行截断,计算得到的权重图必然是有截断痕迹的

完整、连续模型示意图

因此需要使用某种策略,让我们在一个连续的作用域上计算权重,这里提供一个思路[3]:在EAFCE这个连续的作用域中计算权重,得到一个非常漂亮的权重图:

连续模型和权重图

5.基于光流的鸟瞰图微调

在整个AVM系统中,厂家提供的畸变表、焦距、相机主点位置,联合标定使用的标定布都会引入误差。这些误差会导致生成的鸟瞰图在重叠区域有一些偏移。第4小节中的拼接融合模块是为了让鸟瞰图在覆盖区域过渡平滑,尽量避免伪影现象。但是我们不能将这个压力全部施加给拼接融合模块。因此需要在拼接融合模块之前,对鸟瞰图进行微调,这个微调功能是供客户或者4S店人员进行手动调节的。
在调研中发现,现在很多部署在车上的AVM系统都包含有微调功能。但大部分都存在一个问题:只能保证一边是对齐的,另外一边拼不齐。例如,前面对齐后面对不齐。
作者使用了[4],将前、后微调光流图进行融合,得到一个平缓过渡的光流图,兼顾了前后两侧的微调。以左俯视图为例,算法流程如下:

  • 固定住前、后两个鸟瞰图

  • 手动微调左鸟瞰图,使左鸟瞰图与前鸟瞰图之间的重叠区域贴合。记录微调矩阵M1,并根据矩阵计算光流map1

  • 手动微调左鸟瞰图,使左鸟瞰图与后鸟瞰图之间的重叠区域贴合。记录微调矩阵M2,并根据矩阵计算光流map2

  • 根据像素距离计算map1与map2的权重图w,即距离前鸟瞰图越近,map1的权重越大,反之则越小

  • 使用w对map1和map2进行加权融合

当微调矩阵M1和M2方向正好相反时,这个基于光流的思想可以很好地将两者融合,因为矩阵变换是比较“硬”的一种数学方法,而光流却像水一样的“软”。看下前后对比的融合效果图吧:

左侧为普通的融合效果 右侧为基于光流思想微调后的效果

可以看出这个方法可以兼顾前、后的微调效果。可以理解为将拼接区域的误差均摊给中间的区域,而中间这部分区域不存在拼接融合的问题,而且我们在泊车的过程中更注重的是车与周围物体的相对位置而非周围物体的精确位置,因此实际看上去也没什么问题。

6. 三维模型纹理映射

2D的AVM算法是基于投影变换,将鱼眼图像投影到鸟瞰图上。而单应变换有一个前提:就是平面假设。是把一个平面投影到另外一个平面。存在的问题是:图像中所有的三维物体,例如汽车、柱子、墙,全部被当成平面来处理。这些内容在鸟瞰图上会被拉的很长,如图所示:

2D图像中的三维物体

左侧为墙,右侧为车(没错就是车的前杠被拉的好长)。

安装在车身周围的鱼眼相机是单目相机,单目相机不能获取三维物体的深度。在图形学中有一种真实感增强的方法:制作一个三维模型,把二维的纹理贴图以某种方式映射到三维模型上,3D AVM正是使用了这个纹理映射技术,为驾驶员呈现出一个伪3D的效果。

6.1 AVM 3D模型构建

3D模型是由一个个小面片构成的,可以是三角面片、多边形面片等等。面片又是由多个顶点构成的,例如三角面片对应的就是3个顶点。我们先来直观地看一个三维模型:

3dsMax三维模型

放大看可以看到,3D模型是由很多个小的多边形面片构成。3D模型的文件形式有很多种,但大体上都是包含:模型顶点、面片、纹理坐标、法向量这些三维信息。具体如何使用3dsMax来制作3D模型,就不叙述了,作者不是专业的美工,方法可能不太聪明,领会精即可。

AVM 3D模型是一个碗状的三维模型。模拟驾驶员视角,即汽车周围附近是路面,这部分直接映射到碗底平面上;而距离汽车较远的位置可能是楼房、树木、墙等三维物体,这部分内容将使用某种方式映射到三维点上。下面展示的就是我们的3d模型中的必要信息,包含顶点坐标、纹理坐标、法向量、三角面片索引。

6.2 三维模型纹理映射

这一小节讲述的是:

(1)纹理映射是从哪里映射到哪里

(2)采用哪种策略进行映射

我们的最终目标是:找到3d模型上每个顶点对应在鱼眼2d图像上的纹理坐标。
作者采用的是一种基于虚拟相机思想的3d纹理映射方法[5],如图所示:

基于虚拟相机思想的3d纹理映射模型

假设2D AVM的全景鸟瞰图是由汽车正上方某个虚拟相机拍摄到的图,将其当作2D纹理,以透视投影的方法映射到3d模型上面。图中Lw-Rw为全景俯视图,虚拟相机与顶点A的直线在鸟瞰图上的交点为A',从而得到A顶点对应的2D纹理映射坐标A'。然后通过逆投影变换H_inverse、畸变mapx、mapy查找到3d模型的顶点A在鱼眼相机上的纹理坐标。遍历3d模型上的每一个点,即可得到三维模型与鱼眼相机纹理坐标之间的映射关系:

  • 根据透视投影原理,计算顶点A对应的鸟瞰图纹理A'

  • 使用矩阵变换和单应变换逆推A'在去畸变图上的坐标A1

  • 通过去畸变的查找表map查找A1在鱼眼相机畸变图上的坐标

  • 遍历上述过程,即可得到3D模型上所有顶点对应鱼眼图上的纹理坐标

具体流程如图所示:

3d模型纹理映射流程

看下效果:这个模型的法向量是反的,所以渲染的结果光线有问题,非常的暗。不过可以看到伪3D的真实感增强效果,领会精神即可。

右侧模型映射

6.3 三维融合

实际上作者使用的是前、后、左、右4个曲面模型,这4个曲面模型与4路鱼眼图像一一对应,这样做是为了增加OpenGl渲染的并行,避免在做拼接融合时用到if、else这些判断语句。上图中的3d模型就是左侧鱼眼相机对应的曲面模型。

我们先来回顾2D AVM的做法:生成鸟瞰图,然后做融合。我们当时生成的鸟瞰图大小为1080*1080,这个分辨率等同于现实世界中的1080cm*1080cm,足以显示车身周围。但是,这个范围最多只能映射到3d碗模型的底部附近区域,如下图:忽略边上的锯齿,那是渲染时插值的bug,先不去管他。从这图可以看出:如果鸟瞰图选的很小,会导致只映射到碗的底部。

小鸟瞰图映射到模型上

我们把鸟瞰图的尺寸放大,可以看到:

大鸟瞰图映射到模型上

图1为左侧鱼眼相机去畸变后的图像,图2是由图1做投影变换得到的鸟瞰图,图3为映射到左侧模型后的结果

这里要注意:在算法实现上不可以像2D AVM那样,去真正地生成一个鸟瞰图。从鸟瞰图我们不难看出,在远离棋盘格的部分被严重拉长,而图1中接近消失点、消失线的那些像素在鸟瞰图上将会被拉到无穷远。可以这样理解,图一中的消失点、消失线表示:在当前的相机位姿,某一个平面上(例如地面)的点全部在这条消失线以下。而鸟瞰图相当于我们把相机平行于地面进行拍摄,那么地平面无穷远处(即1中的消失点、消失线)成像在鸟瞰图中必然会被拉长到无穷远处,就像图2一样。有兴趣的同学可以看看消失点的解释。

消失点

如果想要将整个碗状模型填满纹理,需要生成一个特别大的鸟瞰图。即需要计算一个特别大的map,这个计算量是巨大的。因此在算法实现上,要选用遍历模型上的每个顶点,进行逆向纹理映射的方法计算纹理坐标(不再依赖于生成一个鸟瞰图),顶点之间的空缺将由渲染引擎通过插值的方法进行填充,这个是种成熟的技术。

讲了这么多终于说到三维的融合。2D的融合是对鸟瞰图的覆盖区域做形态学操作,得到下图,然后计算权重。而3D的算法强调的是离散点的思维,不会再生成一个超级大的鸟瞰图。换句话说,算法不会再计算一个像下图一样覆盖区域的图像。因此,要寻找其他的方式来解决3D融合的问题。

左上角重叠区域

如图所示[6]

右上方重叠区域示意图

大概思路就是计算3D顶点对应鸟瞰图的纹理坐标B。通过AB与m、l的夹角计算权重。

当然,重叠区域不可能这么理想,这个论文中的示意图l和m正好交于A点。实际情况是它上面那个图的样子。需要使用某种专门针对3D AVM融合的策略来实现之[7]。将3D模型顶点对应的权重图映射到二维的示意图:

放大看

总体来讲,3D AVM算法就是先搞一个3维模型,然后通过纹理映射,将3维模型上的每一个顶点与二维的纹理图进行绑定。OpenGl利用上述数据进行渲染。最终的3D效果后续会发上来。

在线阶段工程实现pipeline

前面介绍的是离线阶段的算法流程,离线阶段只有在流水线上或者4s店才会用到,是一个初始化的过程。初始化的内容包括:畸变表、投影变换矩阵、纹理映射关系、拼接融合权重图等。最重要的是要将去畸变、投影变换、纹理映射这些过程写入一个查找表,存入内存,在线处理的时候直接调用即可。附上部分代码,对map做remap这块可能会稍微难理解一些。

 
     
//4个label是鸟瞰图在avm全景上的位置坐标for (int i = label1; i < label2; i++){
    float *map2_x = map2_xR.ptr(i);
    float *map2_y = map2_yR.ptr(i);  
    for (int j = label3; j < label4; j++)
    {
        Mat vec = (Mat_(3, 1) << j, i, 1);//AVM全景图的grid网格坐标        vec = matrix * (vec);//获取鸟瞰图坐标        Mat coor = Homo_inverse * vec;//从鸟瞰图反向投影到去畸变图        map2_x[j] = coor.at(0, 0);
        map2_y[j] = coor.at(1, 0);
    }}//map1(畸变) remap map2(投影+旋转)remap(map1_y, my, map2_xR, map2_yR, INTER_LINEAR);remap(map1_x, mx, map2_xR, map2_yR, INTER_LINEAR);//畸变+投影+旋转+finetuneif (finetune){
    remap(mx, mx, m_finetune_l_blendX, m_finetune_l_blendY, INTER_LINEAR, BORDER_REPLICATE);
    remap(my, my, m_finetune_l_blendX, m_finetune_l_blendY, INTER_LINEAR, BORDER_REPLICATE);}
  • 2D AVM

2D AVM Pipeline

  • 3D AVM

3D AVM Pipeline

其他

另外还有一种做法:通过厂家提供的相机安装参数计算鱼眼相机与同意坐标系(汽车中心)之间的外参,通过外参将3d模型上的顶点坐标转换到相机坐标系下,再通过相机内参转换到图像坐标系上。用此方法同样可以得到2d图像纹理与3d模型顶点之间的一一映射关系。这两种方法的基本思想其实是相通的,殊途同归。只不过这种方法相机安装参数会有一些误差,可能会导致最终的3d拼接效果不佳。

总结

AVM2D、3D全景环视是一个需要算法理论和实践强结合的自动驾驶系统,其中涉及到的领域为计算机视觉、图像增强、三维等。后续作者还会对标定、去畸变等算子进行优化,并加入自标定、车轮视角、广角、透明底盘等内容。

本文的每个章节都是首先讲述基础理论,再结合实验demo来进行呈现,尽量避免繁琐的公式推导,目的在于将AVM系统算法框架搭建的方法讲述清楚。如果有不清楚或者哪里说的不够严谨,欢迎大家一起交流进步。

参考

^A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses

^3D Surround View for Advanced Driver Assistance Systems

^《自动泊车全景影像融合算法》

^《基于光流融合的自动泊车全景影像微调算法》

^《基于虚拟相机的曲面透视投影纹理映射的3DAVM泊车系统》

^3D Surround View for Advanced Driver Assistance Systems

^《3D AVM系统融合算法》

本文仅做学术分享,如有侵权,请联系删文。

3D视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

16.基于Open3D的点云处理入门与实战教程

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

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

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

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

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章