计算机视觉的应用
计算机视觉(Computer Vision, CV)是一门研究如何让计算机达到人类那样“看”的学科。更准确点说,它是利用摄像机和电脑代替人眼使得计算机拥有类似于人类的那种对目标进行分割、分类、识别、跟踪、判别决策的功能。作为一个新兴学科,计算机视觉是通过对相关的理论和技术进行研究,从而试图建立从图像或多维数据中获取“信息”的人工智能系统。
它是一门综合性的科学技术,主要包括计算机科学与工程、信号处理、物理学、应用数学与统计、神经生理学和认知科学等。
目前,计算机视觉技术已经应用在制造业、工业检验、文档分析、医疗诊断、军事目标跟踪、自主导航等系统当中。
下面,让我们举例来更直观的了解计算机视觉所包含的范围;
(1)判断当前图片中车辆的个数、颜色、类型、外观;
(2)根据图片判断当前的零件是否有缺陷;
(3)对图片中的数字和字符进行提取和分类判别;
(4)判断当前图片中是否有人脸;
(5)对当前图片中的人脸与黑名单中的人脸进行比对验证;
(6)跟踪当前视频序列中的车辆;
(7)判断图片中人脸的表情;
(8)根据病人的CT图片判断该病人的病情;
(9)根据摄像机成像跟踪导弹当前的运动轨迹;
(10)根据车辆前方的摄像头成像来判断前方车辆与当前车辆的距离,从而决定是否需要提速或检测;
(11)判断当前图片是电脑还是DVD;
。。。
上面的例子对于人类了来说是非常简单的,不过,对于计算机来讲,却异常复杂。原因在于人类经过几年甚至十多几十年的学习、认识和了解,已经对现实世界中存在的各种事物有了一个准确完善的分类归纳能力。而计算机则因为没有经过一个长久的、完整的学习和理解过程而显得比人类笨拙许多。试想一下,一个刚出生的婴儿,除了具备吃奶这样一个哺乳动物天生就有的能力外,他能够分清不同的人么?他能够分清不同的颜色、不同的形状、不同的外观、不同的表情么?很显然,不能!而一个三岁的小孩,应该可以基本分清常见的一些亲人了,但是,他却很难分清哪个是电脑哪个是DVD那个是Xbox360;另外,对于一个不具备医学知识的成年人来说,即使给他一张CT图片,他也很难判断这个CT图片的来判断是患病还是健康。究其原因,跟刚才提到的三岁小孩一样,都没有经过一个完整的、系统的、长久的、专业的学习训练过程。同样的道理,让计算机来达到人类所具备的这些能力,也需要一个完善的学习过程。如果完全不对计算机进行训练,那么它就跟刚出生的婴儿没什么区别,什么也不会。如果对他进行一些不完善的学习,那么它的某些视觉判断能力估计也就跟三岁小孩差不多。显然,如果想要让计算机对所“看见”的事物具有同正常成年人相接近的理解能力,就需要大量的样本来对计算机进行完善的、系统的学习和训练。
比如,让计算机来判断当前物体的颜色。那么,就需要有一种手段使得计算机能够对各种颜色进行区分。而为了达到这样一个目的,计算机需要依次完成以下步骤:
(1)获取到相机捕获的图片;
(2)对需要进行颜色判别的物体进行分割;
(3)对物体进行特征提取;例如,RGB的均值是多少,方差值是多少,HSV的均值是多少,方差是多少,等等。。。
(4)对所提取的特征进行选择;比如,在理想条件下对苹果的颜色进行分类判别,可以用RGB均值;而在实际应用对人脸的肤色进行判断可能要用到HSV颜色空间等。
(5)针对大量的训练样本进行分类器设计与训练;
(6)针对实际的测试图片,在提取特征之后,将特征输入到分类器当中进行分类判别;
不难发现,其实计算机处理事物的逻辑顺序和人脸处理事物的逻辑顺序是一样的。只不过,由于人类已经经过了长年累月的学习,所以可以做到“不假思索”的对所看到的事物作出准确的理解和判断。而计算机在处理的过程当中,由于传感器灵敏度不高、成像质量不好、对图片不能有效的去处噪声、不能准确的提取事物的特征、不能准确的对事物作出分类归纳,所以往往造成了计算机的视觉能力比人类低下等情况的发生。值得提醒的是,由于计算机拥有人类所无法比拟的一些特点,例如,没有疲惫感、没有情绪、处理速度快等,所以,人们还是希望在很多场合能够代替人类来参与一些诸如监控火灾、统计车流量、识别车牌等繁琐重复性的社会活动。
而如今,随着计算机视觉技术的不断发展,越来越多的新产品,越来越多的全新的用户体验方式正在强烈的冲击着人们传统的生活方式。下面,就让我们举几个典型的例子来说明其中用到计算机视觉技术的一些产品:
(1)最近微软公司特别火爆的应用于Xbox360上的kinect,这其中包括了人脸检测、人脸识别与跟踪、动作跟踪、表情判断、动作识别与分类等计算机视觉领域的前沿技术;
(2)Google公司专门为android开发的免费软件goggles,它的功能简单点说,就是利用手机拍照得到的图片进行检索,专业术语叫做基于内容的图片检索(Content Based Image Retrieval, CBIR)如今仍然是计算机视觉领域的一个热门分支;
(3)Facebook公司的人脸识别分类软件;目前人脸识别在计算机视觉领域已经从事了近半个世纪的理论研究;
(4)2006年美国热播剧集《prison break》中男主角Micro Scofield 被FBI特工用市区监控摄像头进行实时跟踪的画面,这里用到的视频跟踪技术并不是科幻,而是计算机视觉领域真实存在的一个热门研究领域;
(5)Google的无人驾驶汽车技术;该技术运用了各种摄像头、激光设备、雷达传感器等,并根据摄像头捕获到图片及雷达和激光设备相互配合来感知车辆当前的速度,前方的交通标识、车道识别、判断周围行人与车辆的距离等信息,并以此来做出加速、减速、停车、左转、右转等判断,从而控制汽车实现真正的“自驾游”。需要提醒的是,除了google,大众和intel也在从事无人汽车驾驶技术的研究工作。
(6)腾讯QQ实验室最近发布的QQ手势达人for PPT,利用摄像头捕获手势的图片,并对简单的手势进行分类判别,从而实现翻PPT的目的;
(7)Google street view(google街景)和微软的street slide,都是一种用来观看城市街道景色的软件,尤其是street slide,利用普通相机拍摄的二维图片进行拼接,从而生成了全景图,使得用户可以在街道当中漫游。相信研究计算机视觉的人应该不会对图像拼接太陌生;