专栏名称: 泡泡机器人SLAM
SLAM的最新资讯,干货内容。
目录
相关文章推荐
FM1007福建交通广播  ·  宇树科技携两款机器人亮相2025GDC ·  2 天前  
FM1007福建交通广播  ·  宇树科技携两款机器人亮相2025GDC ·  2 天前  
51好读  ›  专栏  ›  泡泡机器人SLAM

【泡泡机器人原创专栏】web AR系统-1 架构探索

泡泡机器人SLAM  · 公众号  · 机器人  · 2017-04-06 06:48

正文

本篇文章讨论将BoW图像检索算法系统部署起来的一些技术以及特点。


BoW相似图像检索算法的大致实现如下:

1  首先基于多个图像所提取的海量特征,形成聚类中心,继而创建单词树。

2  其次再把各个待匹配图像的特征,插入单词树,做成树形的数据库。

3  最后当需要检索时候,把摄像头拍到图像的多个特征,分别到数据库中进行“投票”处理,投票分值最高的即为匹配度最高的图像


目前正在闭门造车开发调研的H5相关的图像检索系统,需要基于上面提到的BoW,完成以下功能。


在Web网站前端,打开摄像头(可以基于webRTC)。获取camera video,然后将每一帧的图像进行处理,并将提取后的信息发送给服务端。服务端检索图像,计算图像Pose,并将结果返回给web前端。这样通过浏览器前端处理 + 服务器后端处理,实现增强现实相关的功能。


目前基础架构的原型正在开发中,目前实现的方式分为三个主要层面。

  • 前端:前端通过webRTC持续获取到摄像头video,通过canvas获取到图像。然后将图像进行Grey/Gaussian blur/ReSample等处理,然后将处理后的图像通过ajax post给服务端。

  • 服务端:服务端目前基于docker + NodeJS架构,这样可以方便的进行服务器的添加/缩减/负载均衡。在阿里云多台Linux服务器上,架设了多个docker,每个docker都运行一套NodeJS环境。NodeJS接受Post的参数以后,把参数包装,并传递给C++插件,C++插件提供了NodeJS调用Linux图像处理接口相关的功能。

  • Linux图像处理模块,也部署在每一个docker环境中。这个模块基于OpenCV,提供了多种图像操作接口,其中包括上面提到的BoW图像检索接口。


作为一个原型刚出来的实验性工程来说。虽然整体可以运行。但还有很多问题需要解决。主要包含以下的问题:

1  webRTC目前很多浏览器并不支持。所以基于浏览器的javascript目前还不具备实现增强现实相关技术的实力。Chrome以外的浏览器什么时候可以完全支持到,是一个很难说的问题。前端javascript处理图像的能力比较弱,速度也比较差。要想达到实时处理的效果,需要多种优化。这里面有很多可以优化的点。

2  很多算法,比如复杂计算,以及BoW等图像检索,前端JS无法独自处理,需要依赖服务端,这个涉及到ajax的数据量,需要尽可能在前端压缩需要发送的数据量,仅传递必要的信息。

3  服务端实时处理前端请求,压力还是很大的。即使多Docker并发也无法保证量稍大的情况。这一点还需要继续调研,把ajax替换为socket是否能进一步缩短通信时间也是一个可以尝试的点。

4  服务端未来需要仅保持必备功能,把大部分图像处理的操作放到前端JS,进一步缩短服务端的压力。


未来应该会基于这一个话题,在这个过程中写一些新的发现以及心得。也会探索目前这几个步骤的细节以及问题的解决。


【版权声明】 泡泡机器人SLAM的所有文章全部由泡泡机器人的成员花费大量心血制作而成的原创内容,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!







请到「今天看啥」查看全文