作者介绍了如何将 OpenCV 和类似工具用于数字视频分析和方法,以便使用集群和分布式系统设计来扩展此类分析。前几期文章中讨论了专为视频分析和新的 OpenVX 硬件加速而设计的协处理器,可将它应用到本文中提供的计算机视觉 (CV) 示例中。这种新的以数据为中心的 CV 和视频分析技术需要系统设计人员反思应用软件和系统设计,以满足严苛的需求,比如对大型、公共设施和基础架构,以及一个更加娱乐化、交互式和更安全的世界的实时监视和安全保护。
使用标准(比如来自 Motion Picture Experts Group 的标准,简称 MPEG 标准)来编码视频,以进行压缩、传输、解压和显示的数字视频,已引发了计算行业的巨大变革,从社交网络媒体和业余数字影院到改善的培训和教育的变革。解码和使用数字视频的工具每天都在被广泛使用,但视频分析需要编码和分析未压缩视频帧的工具,比如 Open Computer Vision (OpenCV)。一个容易获取且功能强大的数字视频编解码工具是 FFmpeg;对于静态图像,GNU Image Processing (GIMP) 非常有用。使用这 3 个基本工具,开源开发人员完全能够开始探索计算机视觉 (CV) 和视频分析。但是,在分析这些工具和开发方法之前,让我们首先为这些词汇提供一个更好的定义,并想想它们有哪些应用。
在本系列的第一篇文章 云扩展,第 1 部分:构建您自己的云并使用按需 HPC 进行扩展 中,提供了一个使用 OpenCV 的简单示例,该示例在来自 Linux® Web 摄像头的连续实时视频上实现了 Canny 边缘转换。这是一个 CV 应用示例,您可将它用作分割图像的第一步。一般而言,CV 应用涉及到采集、像素(表示照度点的图片元素)的数字图像格式、图像和图像序列(影片)、处理和转换、分割、识别以及最终的场景描述。理解 CV 的用途的最佳方式是查看示例。图 1 显示了一个面部和使用 OpenCV 的面部特征检测分析。请注意,在这个简单的示例中,使用了 Haar Cascade 方法(一种机器学习算法)来执行检测分析,该算法能够最准确地检测未被挡住(例如我的小儿子的脸转到了一侧)或已被阴影遮住时的面部和眼睛,以及在主体未斜视时的面部和眼睛。以下或许是对 CV 做出的最重要的评论:它不是一个简单的问题。这一领域的研究人员通常已经注意到,尽管它自 50 多年前诞生以来获得了长足的发展,但大部分应用仍然无法赶上一个 2 岁小孩的场景区分和识别能力,考虑到在广泛的条件(照明、大小变化、方向和环境)下归纳和执行识别的能力时,尤其如此。
图 1. 使用 OpenCV 执行面部识别
为了帮助您理解 CV 中使用的分析方法,我创建了阿拉斯加州安克雷奇地区图像的一个较小的测试集合,这些图像可以通过 下载获得。这些图像已使用 GIMP 和 OpenCV 进行处理。我开发了 C/C++ 代码来将 OpenCV 应用编程接口用于 Linux Web 摄像头、预先采集的图像或 MPEG 影片。使用 CV 来理解视频内容(图像序列,无论是实时内容还是来自预先采集的图像序列数据库)通常被称为视频分析。
定义视频分析
视频分析被广义地定义为对来自照相机(通常为可见光,但也可能来自光谱的其他部分,比如红外线)或存储的图像序列的数字视频内容的分析。视频分析涉及到多个学科,至少包含:
图像采集和编码。以一系列的图像或压缩图像组的形式采集和编码图像。视频分析的这个阶段可能很复杂,包括光度计(照相机)技术、模拟编码、帧和序列中的光线抽样(像素)数组的数字格式,以及压缩和解压此数据的方法。 CV。图像渲染的逆过程,其中已采集的场景被转换为描述,与一个描述被渲染为场景的情况相反。CV 假设:在人类可查看的任何地方,都应执行这个使用计算机进行 “查看” 的过程,这种查看与机器视觉通常是区分开来的。像人一样查看常常意味着 CV 解决方案采用了机器学习。 机器视觉。同样是渲染的逆过程,但最常在受到严格控制的环境中用于流程控制用途,例如,检查印刷电路板或成品零件,确保它们在几何学角度上在容错范围内。 图像处理。可以对来自光度计和辐射计(测量电磁辐射的探测器)广泛应用数字信号处理方法,以便理解观测目标的属性。 机器学习。通过培训数据对一种算法进行改良来开发一些新算法,让该算法在使用新数据进行测试时能够提高性能并进行推广普及。 实时和交互式系统。这些系统需要在最后期限内响应一个服务请求,或者至少达到符合与服务客户或用户之间签订的 SLA 的服务质量。 存储、网络、数据库和计算。这些都是在处理视频分析中使用的数字数据所需要的,但一个细微而又重要的区别是,这是一个内在的、以数据为中心的计算问题,如本系列的 第 2 部分 中所述。
因此,视频分析在范围上比 CV 更广,是一个系统设计问题,可能包含智能电话等移动元素(Google Goggles),以及针对总体系统的 CV 方面的基于云的服务。例如,IBM 开发了一个称为 VCAS(video correlation and analysis suite,视频关联和分析套件)的视频分析系统,IBM 旅游和运输解决方案简报 Smarter Safety and Security Solution for Rail [PDF] 中专门介绍了它;它是一种系统设计概念的不错例子。对一个视频分析解决方案中涉及的每个系统设计学科的详细介绍不属于本文的范围,不过 参考资料 中提供了适合系统设计人员的更多信息的线索。本文剩余部分将重点介绍 CV 处理示例和应用程序。