基于3D边界特征的视觉定位技术

news/2024/7/7 20:21:36

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自:计算机视觉life

3D空间中的边界特征线是机器视觉感知中的一种重要的特征,在形状分析、视觉定位、网格简化、栅格创建、非照片级的渲染和表面平滑等方面具有广泛的应用。根据特征线是否与视点相关联,可以将特征线分为两类:与视点相关的特征线和与视点无关的特征线。一般情况下,与视图无关的特征线的计算与3D模型的拓扑结构有关。3D模型可以是连续的(例如参数化曲面),也可以是离散的(例如网格和点云)。与视点无关的特征线仅反映了3D对象的几何属性,而与视点有关的特征线则描述了表面几何形状和位置的属性,即我们通常所理解的“轮廓”。

图1 典型的3D模型的轮廓特征线

简单介绍完视觉上的边界特征线,接下来我以一个具体问题为例,介绍一个3D边缘特征在视觉定位问题上的应用。

应用的背景

近年来,重工业领域已经开始研究如何使用自动化的移动设备来解决生产力和人员安全问题,尤其是工作在室外环境下的大型作业车辆,因此迫切需要一种基于视觉的车辆定位方法。车辆在动态且非均匀的室外照明条件下运行时,周围环境恶劣,尽管这个问题可以通过使用场景先验知识调整相机曝光并改善图像信息的质量来解决,但完全基于2D图像的感知有时候可能还是不太靠谱(PS:这里可以吐槽一下特斯拉)。随着3D技术的普及,机器人车辆在户外工业环境中运行需要定位,而定位器可以使用环境中的3D边界图来估计车辆的姿态。

在上述应用背景的前提下,一种解决策略是将利用摄像机采集的输入边缘与环境中预定义3D边界映射进行比较,从而完成定位,因此三维空间中的几何特征轮廓就派上了用场,为了不偏离本文的核心,只阐述涉及3D边界的核心流程(PS:关于其他环节的实现,感兴趣的同学可以自行学习)。

A.鱼眼相机的标定

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。相机标定实际上就是计算相机外参和内参的过程,完成标定后,我们便可以从2D图像中恢复3D图像。

·外参

·内参

完成上述标定过程后,采集到的实际结果如图1所示。紧接着利用图像处理提取出相应目标区域内的2D边界,如图2所示。

图1 鱼眼相机视野

图2 图像边界的提取

B.遮挡问题的处理

动态场景中的高效遮挡剔除可以加速渲染进程,这项技术本来是游戏和实时图形处理领域的一个方向。如果建筑物的可见部分比被遮挡的部分多,则粒子滤波器对由未知物体引起的遮挡问题更具有鲁棒性。(这一结论可以参考J.Hasselgren的论文)

因此针对可能遇到的自遮挡问题,可以采用欠采样深度缓冲区技术处理,该技术是一种的实时技术。通过这种方法可以将建筑物的表面渲染到深度缓冲区,然后只有位于前面的边缘会通过滤波器。但这种方法也有局限性,比如深度缓冲器的分辨率会受到限制,导致表面与其自身边缘无法区分的问题。为避免此问题,可以将表面和边缘之间的偏移距离设置为大于该深度处缓冲区的分辨率。

C.3D线的提取

在完成上述两个基础问题后,为了更好的提取出建筑物的边界,在这个环节我们采用3D Hough变换与三维点云邻域信息分析相结合的方法。Hough变换是一种众所周知的有效方法,用于找到匹配一组2D点的线。每条线由两个参数ρ和θ表示,这两个参数表示从法线的起点到该线的长度和角度。而3D数据中边界点本身就是一种局部信息的表达,因此二者结合可以产生一定的效果。具体结果如图3所示。(PS:关于这一部分的边界提取,实际上涉及很多分割的知识,比如在这个环节实际上需要预分割出平面,只有具有足够数量的点的平面簇类才会被考虑用于线提取)

图3 3D边界在场景中的映射

D.似然估计

这一环节我们需要用到粒子滤波器(particle filter)。粒子滤波器是一种使用蒙特卡罗方法(Monte Carlo method)的递归滤波器,透过一组具有权重的随机样本(称为粒子)来表示随机事件的后验概率,从含有噪声或不完整的观测序列,估计出动力系统的状态,粒子滤波器可以运用在任何状态空间的模型上。

通过与边缘图像和3D边界图进行比较来生成每个粒子的似然度度量。根据每个粒子的姿势将3D边界投影到图像平面上,因此可以进行直接比较。

其中,Px是对齐边缘像素数a与可见边缘像素总数v之间的比率,k是一个加权似然度量常数。

图2 图像边界与3D映射边界的匹配

走完上述流程,基本就完成了视图定位的很大一部分。以上就是3D边缘的一个应用实例,为了更加贴合这次分享的主题,所以只给出了简化流程,实际上每个环节都值得探究,包括后续的评价环节,感兴趣的小伙伴可以探索一下。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


http://lihuaxi.xjx100.cn/news/275931.html

相关文章

十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...

C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!11.90 积分最后运行结果:代码:#include #include typedef struct Node{…

burpsuite 设置https_新手教程:如何使用Burpsuite抓取手机APP的HTTPS数据

* 本文原创作者:smartdone,本文属FreeBuf原创奖励计划,未经许可禁止转载1.所需条件 手机已经获取root权限 手机已经成功安装xposed框架 电脑一台2.详细步骤2.1 在手机上面安装xposed JustTrustMeJustTrustMe是一个去掉https证书校验的xposed …

.net基础问题

string sqlstr "select BranchCode,BranchName from t_sys_Branch where Jglx_DataDm{0} and IsVisible1"; sqlstr string.Format(sqlstr, departType); 上述代码运行之后 sqlstr"select BranchCode,BranchName from t_sys_Branch where Jglx_DataDmdepartTyp…

TIOBE 9 月编程语言排行榜发布,C++ 增速最快,C++20 的功劳?

转自 | 机器之心编辑 | 小舟、魔王C20 能让 C 复兴吗?TIOBE 公布 2020 年 9 月的编程语言排行榜,C 位列第四,仅次于 C、Java 和 Python。而且 C 相比去年同期增长 1.48%,成为增长最快的编程语言。TIOBE 编程社区指数是衡量编程语言…

2w字长文,让你瞬间拥有「调用链」开发经验

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试资料很多同学表示,对于微服务中常用的调用链功能的原理,感觉很模糊。本文将真正的从零开始,介绍调用链客户端开发的一些要点。让你瞬间拥有APM开发经验。文章很长…

华为腾讯百度众安微众360大咖齐聚,2019中国区块链开发者大会首批议程曝光!...

作者 | Aholiab出品 | 区块链大本营(blockchain_camp)随着区块链被定义为国家战略,区块链技术得到升温。据有关国际研究机构预测,三年后全球区块链市场规模将达到139.6亿美元(约合986.23亿元人民币)&#x…

c 语言set用法,使用

写在前面的话:在java项目中,路径的配置是一项最基础也是最必不可少的工作,最初我们配置路径是根据这个java代码块进行配置的,很繁琐又不方便,每一个引入文件都要重新写一遍,而且如果对路径的分工需要细化的…

自动驾驶中的多传感器融合

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文转自:计算机视觉life多传感器融合面临的主要挑战是如何将收集来的大量数据集中在一起,并做出正确决策。多传感器融合多传感器信息融合&#xf…