兴趣是最好的老师 2011-01-05 08:51:23

兴趣是最好的老师

沈程杳

项目临近结束,回首我们这一年多的项目实践经历,从报名参加项目,选择项目方向,查阅资料,学习数字图像处理基础知识,学习OpenCV库,研究手势识别方法,研究双目立体视觉的算法。可以说,这次项目把我带入了一个以前从未涉足过却一直很感兴趣的计算机领域,同时,也激发起了我对于科研的热情。

记得那是在大三上的下半学期,那时候,我们的专业课已经逐渐步入正轨,随着自己专业知识的积累以及之前一个暑假对于单片机的接触打下的基础,我们一直想做些什么可以将自己所学的知识投入到实际运用中去。而第二届国家大学生创新项目正在那个时候给我们提供了一个很好的契机,让我们得以将我们的想法加以实现。

三维空间中虚拟按键的实现,我想那是一个非常异想天开的东西。虽然说从原理上说得通,但是在三维显示技术尚未大规模普及的今天,的确是很难想象这种装置究竟是否有用。而项目答辩的通过,在这方面给了我们莫大的鼓励

随后,我们就开始了我们的计算机视觉探索之旅。一开始的过程总是很艰辛的,没有任何基础,什么都得从头搭起。文件读写,图像指针相比于从前的程序,图像的处理需要用到更多的存储空间,也需要更严密的结构来防止内存越界等低级错误。项目开始的初期,我们在这方面花费了大量时间。

但是,后来的过程证明,在这里我们走了一步弯路。自己定义的结构不仅不完备,而且在算法扩展上极为不变,很多东西都要推倒重来,程序的稳定性也很难得到保证。

一次偶然的机会,我与我们的嵌入式系统设计任课老师赵峰老师进行了交流。他向我推荐了OpenCV计算机视觉库。当时我记得我是如获至宝,因为长久以来,我一直在寻找这么一个东西,把所有的图像基本处理平台都搭建好了,而开发者只需要将自己的精力完全投入的算法的研发中就可以来了。

OpenCV的起步不是那么简单。因为这是一个完全独立的库,其中有许多自定义的结构,自定义的命名方法,即便知道了一个函数,也经常会因为参数的格式错误而出现一些莫名的错误。所幸,OpenCV在国内有一个很好的论坛,有很多做视觉方面的同仁都会到那上面进行互相交流。那段时间,我一个一个例程地跑,不懂就上网查阅资料,看别人实现的代码。慢慢慢慢地,我开始逐渐入门了。

为了实现三维空间中的虚拟按键,我们首先需要获得的是手指的位置。于是,肤色分割和轮廓跟踪便成了我第一步要实现的目标。肤色分割的方法品类繁多,但总体而言效果都不是特别理想。在比对了多篇文献之后,我最终选择了比较容易实现的椭圆模型法进行了我的第一次尝试。通过参数的调试以及后续的一些图像形态学处理,我的肤色检测终于可以成功调试了。随后,我势如破竹,利用轮廓跟踪的方法成功进行了物体的矩形框标志。

    可是,之后难题就来了,关于手指点的检测,基本没有什么可以借鉴的范例。论文上写的曲率最大的点,在实际操作中,也效果也并非那么理想。当时我又尝试了挺多种办法,骨架提取,角点检测,到最后总算试出了一种方法,就是在低分辨率的情况下寻找手指点,如果一个点周围的几个像素点只有一到两个联通的邻点的话,那么那个点就可以被当做指点。代码写完,实验下来,效果不错。当时陈宇洋那里也调完了FPGA视频输入输出,开始着手摄像头定标。于是,我们就把这几项成果作为了我们的中期检查成果上报。

暑假里我们小组一起参加了全国大学生电子设计大赛,充实的一个暑假让我们对电路设计、软硬件协同设计等都有了进一步的认识,我们的动手能力也在这两个月中有了大大的提升。同时,我还参与了赵峰老师的PRP项目嵌入式人脸检测系统的实现。对于OpenCV中常用于人脸检测的Adaboost算法也有了深入的认识。

    中期检查之后,我投入了紧张而忙碌的申请工作中。当时,新加坡国立大学的申请要求写一份Research Proposal,于是,我趁这个机会把手势识别领域的重要文献都浏览了一遍。这次Proposal的机会让我得以重新认识我现在正在做的事情,原来我们所要开发的模型就是人机互动模型。对于计算机视觉和人工智能浓厚的兴趣促使我将这个方向选为了我的申请方向。

忙碌的申请结束之后。我开始了重新设计手指点检测的算法的工作。这个时候的我,经过了Adaboost算法和摄像头标定的锻炼,对于OpenCV的理解有了新一层的深入,开始能够自己改OpenCV的库函数,也对这些函数的内部结构有了更深入的理解。我的新方案采用了凸包检测的方法来检测手指。我利用手部轮廓凸包的特性来识别手势,让后又利用凸包的起点、中点和深度来判断该点是不是手指点。实践下来,这一方法取得了不错的效果,但我总有一种感觉,现行的很多模式识别算法与我们人脑的工作模式相差,效率低而运用范围又不够广。

完成了手指点检测的工作之后,我接手了陈宇洋的双目摄像头的工作(由于他要上法语班比较忙)。并一点点完成了摄像头定标、立体校准和立体匹配的一系列算法。事实上,双目视觉的算法在理论上已经比较成熟,但是在实践的过程中,会出现很多细节上的问题,如果不自己推究的话,就无法解决。双目摄像头的工作陆续做了三个多月。在此过程中我收获颇丰,不仅最终实现了在三维空间中手指检测的模型,也通过自己技术博客与他人的分享交到了几个志趣相投的朋友。

    一路走来,我始终觉得这一路上,兴趣,是支撑我孜孜不倦钻研的最大动力。在没有太多前人经验的情况下自己探索这条路,虽然艰辛,过程中却也收获颇丰。今年三月份我收到了新加坡国立大学的全额奖学金,毕业之后,我也将前往那里的机器人实验室,继续我在计算机视觉和人工智能领域的探索。

 

沈程杳,上海交通大学微电子学院2006级微电子学专业,第二期“国家大学生创新实验计划”——“三维空间中目标的定位与跟踪”项目负责人;指导老师:杨莉讲师,上海交通大学微电子学院

 
 
 
@2008 上海交通大学教务处     网络信息中心技术支持