ROS已经加入对视觉信息处理的支持,尤其是改进OpenCV在ROS中的易用性。
OpenCV 是盖里·布拉德斯基(Gary Bradski)在Intel 工作期间开发的一个开源计算机视觉库。OpenCV(Open SourceComputer Vision Library:http://opencv.org)是由一系列C 函数/C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。很多人都在享受OpenCV带来的便利。
盖里·布拉德斯基(Gary Bradski)和OpenCV的Logo。
跟所有的开源项目一样,OpenCV致力于软件算法的共享,“不重复造轮子”。早期的主要目标是:
· 提供一套开源的标准算法,加速机器视觉的研究;
· 建立一套基本算法库,研究者和开发工程师能够快速进行视觉软件开发;
· 利用开源或免费的软件许可与授权,促进商业视觉应用的开发,通过共享,共同促进知识的传播。
我们不妨看看OpenCV的发展历程:
· 从1999年1月,CVL项目在Intel内部启动。
· 2000年6月,第一个开源版本OpenCV alpha 3发布。
· 2000年12月,针对linux平台的OpenCV beta 1发布。
· 2006年,支持Mac OS的OpenCV 1.0发布。
· 2009年9月,OpenCV 1.2(beta2.0)发布。
· 2009年10月1日,Version 2.0发布。
· 2010年12月6日,OpenCV 2.2发布。
· 2011年8月,OpenCV 2.3发布。
· 2012年4月2日,发布OpenCV 2.4。
· 2014年8月21日,发布OpenCv 3.0 alpha。
· 2014年11月11日,发布OpenCV 3.0 beta。
· 2015年6月4日,发布OpenCV 3.0。
· 2016年12月,发布OpenCV 3.2版
· 2017年8月3日,发布OpenCV 3.3版
鉴于利用视觉获取环境信息非常便捷,因此OpenCV已经大量应用于各个热门领域:
· 人机交互、增强现实、手势识别、环境三维重建
· 物体检测与识别、人脸检测与识别、动作识别与运动跟踪
· 机器人SLAM、工业领域的机器视觉、抓取
· 材料结构分析
· 自动驾驶
OpenCV提供的各种算法
盖里·布拉德斯基本科毕业于加州大学伯克利分校,在波士顿大学获人工智能方向博士学位。在Intel研究院工作期间,跟大多数研究机构一样,Intel看重论文的发表,这也是盖里·布拉德斯基的主要工作内容:为Intel设计新算法,并以论文的形式发表。
盖里·布拉德斯基并不满足这样的模式,他深刻体会到,无论是学生、工程人员为了写一些视觉代码,就不得不自己编写处理图像/视频的底层数据结构、甚至要搭建一整套软件架构。而且几乎每个人都免不了这一套流程。盖里·布拉德斯基的想法也非常简单:是否可以做一些工作,避免大家“重复造轮子”。
当然后来OpenCV受到的关注程度是盖里·布拉德斯基万万没有想到的。现在OpenCV已经有上百万行代码,上千万的下载量。几乎任何一位与视觉相关的人都不可能不知道OpenCV。为了推动OpenCV的发展,盖里·布拉德斯基还写了不少相关图书,如《Learning OpenCV》,在业界影响巨大。
盖里·布拉德斯基(Gary Bradski)在车库初期就加入车库的管理团队。后来与前面提到的文森特·莱保德一起,在车库的支持下,将OpenCV公司化,创建了OpenCV 基金会。后来又与车库的同事一起创建了另一家公司Industrial Perception,Inc.(IPI),希望能构建一个能够支持3D识别和导航技术的软件系统,并期待将这样的技术应用到自动化领域。该公司于2013年被Google收购。
随后盖里·布拉德斯基帮助Magic Leap(一家增强现实眼镜公司)在硅谷建立研发中心,帮助Magic Leap取得巨大成功,可是后来与公司发生冲突。据称盖里·布拉德斯非法向第三方公司泄漏了 Magic Leap 的商业机密,2015-2016年增强现实正处于风口, Open CV 的创始人与自己的就职的公司Magic Leap展开法律大战,这场战争直到2017年以双方签署协议而结束,具体细节没有对外公布。
OpenCV创始人盖里·布拉德斯基加入的增强现实公司Magic Leap。
(左)增强现实眼镜Magic Leap One;
(右)Magic Leap办公室
最近有消息称,盖里·布拉德斯基加盟中国一家物流机器人解决方案创业公司蓝胖子机器人(Dorabot),担任机器人视觉顾问(蓝胖子对外宣传是首席科学家)。他的任务是牵头计算机视觉前沿研究和技术创新,参与相关产品研发,并帮助招募机器人研发相关领域顶尖人才经。盖里·布拉德斯基历过智能机器人研发,尤其是视觉系统的研发。也许蓝胖子机器人看重的是正是这一点。
让我们回到ROS。为了在ROS中使用OpenCV,可以通过名为vision_opencv的软件包与ROS对接。vision_opencv包含两个重要的软件包:cv_bridge和image_geometry。
cv_bridge负责将OpenCV下的图像类型转换为ROS图像消息。该软件包是OpenCV和ROS之间的桥梁,可以先用OpenCV的API做图像/视频处理,然后将其转换成ROS图像类型。
image_geometry软件包可用来校正图像,该软件包用ROS消息来接收校准参数,然后将其传送给OpenCV的图像校正函数进行处理。
这些软件包由帕特里克(Patrick Mihelich)和詹姆斯(James Bowman)共同开发,Patrick Mihelich随着车库孵化的公司被Google收购,加入了Google团队。James Bowman则离开车库为一些极客实验室提供咨询服务。詹姆斯是一位非常资深的程序员,先后在微软,SGI,3DFX(上世界90年代最风光的显卡公司,后来因决策错误被NVidia收购),NVidia,以及后来的柳树车库。
ROS软件包vision_opencv的开发者:帕特里克(Patrick Mihelich)和詹姆斯(James Bowman)
OpenCV 未来将为更多的嵌入式设备提供高效的算法,随着增强现实的广泛应用,OpenCV也在将更多的算法应用到光场(Light Field)上。作为几个非盈利的机构OpenCV也在努力探索一条持续发展的道路,也不排除未来变成一个盈利机构,也许就像OSRF的转变那样。这些变化也都会对ROS的未来产生重要影响。