提高网络物理安全和增加安全系统的努力已形成一个不断发展的行业,该行业致力于超越这一挑战。闭路电视模拟摄像机正快速被更高清晰度、功能丰富的数字摄像机所取代,以便实现基于图像的安全系统。相比之下,数字摄像机更灵活、更智能,能够与云服务和数据分析更紧密地集成在一起。本文将介绍就地安全监视,它与基于云的数据分析相结合,使得在没有电源或网络基础架构的区域快速部署监视成为了可能。
在不久的将来,我们可能依赖于快速演变的 “机器到机器” 基础架构,它的高级感知能力与人类的能力不相上下(有时甚至超越了人类的能力)。智能运输系统和自主驾驶汽车就是证明。丰田和奥迪已与谷歌联手,在内华达州测试类似的技术。
如今,通过使用高成本的光探测和测距 (LIDAR) 技术,再结合更简单的仪表和软件,就可以实现自主操作。但这种装置的成本在不断下降,可见光谱计算机视觉解决方案也有降低实现成本的潜力。
还有一些更有趣的应用,比如使用车辆发送车队行为来优化交通流,使用车辆与基础架构进行通信,比如交通控制系统(例如红灯)、机场空中交通控制设备,以及建筑、道路、港口、机场和运输系统中的基础架构传感器、自动化或控制系统。
一种已实现的成果是,没有人需要为了收费而停车或减速。此技术称为机器间自动化。
拥堵和游客拥挤的走廊地带(比如加利福尼亚州的 5 号州际公路)都能从货车运输的车队自动化中受益。在不到 10 年的时间内,私家车或许就能够利用此功能(参见 参考资料)。谷歌汽车存在已有超过 8 年的时间,自斯坦福大学的 Sebastian Thrun 团队赢得 2005 年美国国防高级计划研究署挑战赛以来,谷歌汽车就一直在运行。
在不太拥堵的地方,比如阿拉斯加,可借助机器间高级感知来监视北极圈的活动,为港口提供更好的安全保护,执行环境调查和保护资源,以及探索北坡油田的能源(参见 参考资料)。
在一些最偏远、严酷和拥堵的环境中,有可能实现机器间系统最大的优势。在这些地方,自动化带来的节省会迅速超过初始成本。对于基础架构更加受限的远程应用,就地自供电安全监控器能够发挥其最大的价值。
就地传感器网络也已经开发出来一段时间了。或许最为人熟知的就地传感器网络是通常被称为微粒 (mote) 的传感器网络,比如 Berkeley Network Embedded Systems Technology (NEST) 和 Smart Dust 项目。类似地,借助采用了从热成像到 x 射线的全光谱的自动化技术,机器视觉也已经有了数十年的应用历史。在检查制造工艺和改善远程操作的安全上,机器视觉通常优于人类的能力。
本文主要将介绍机器间系统的低成本 3D 和多光谱呈现的就地部署。
就地计算机视觉的价值
许多安全应用可以从市区外围的电力和数据网络基础架构上存在的计算机和机器视觉中获益。
一个简单的示例是野外作业,比如阿拉斯加北坡油田开展的能源生产和勘探,以及针对管道(提议的新的天然气管道)开展的野外作业。另一个示例是灾区,这里的电力和数据基础架构都已损坏。环境合规性、资源管理和调查(由美国的 U.S. Geological Survey 处理;参见 参考资料)涉及到现场数据收集。最终,能源和数据未全面开发的建设项目也可以从就地计算机视觉中获益。
在过去,安全服务依赖于在高成本、低频率之上的无人驾驶飞机、人类徒步旅行和艰巨的地面导航。要提供真正有用的数据,就地计算机视觉平台必须提供与人类相匹敌的、甚至超越人类的观察力,将视觉扩展到红外光谱,采用 3D 成像来生成测距和环境的点云模型(参见参考资料)。
点云(point cloud)基于多个摄像机的观察结果提供了一个场景的 3D 数据模型,通常与双目取景摄像机一起使用,或者通过多个摄像机从多个协调的视角对同一个场景进行观察。任何可就地放置(或许装在三脚架上)或装在树上的摄像机都可以经过调整用在无人操纵的天线系统中。想象一台类似于流行的 GoPro 可穿戴摄像机的多光谱 3D 摄像机(参见 参考资料),但内置了更复杂的探测器和计算能力。
我正在与一些研究赞助商、科罗拉多大学和阿拉斯加大学安克雷奇分校的研究生和大学生一起致力于这种设备的研究。尽管可以使用现成的硬件和软件创建这样一种设备,但我们团队认为我们需要更好的资源。后续几个小节将介绍各个步骤和所需的技术。
如何构建就地 3D 摄像机
构建一个现成的就地 3D 摄像机很简单。但是,要让设备变得实用,则必须让计算机视觉处理的电源需求、大小、上线链路机制、数据存储和智能切实可行。要使用开源软件和现成的硬件构建这个设备,必须集成以下组件:
计算光度计开放硬件可以使用来自 Texas Instruments 的运行 Linux® 的 BeagleBoard xM 平台轻松地构建。实际上,我为此用途预先配置了一个基于 Ubuntu 和 Debian 的预先构建的发行版。我使用这个简单的处方作为大学课程的移动、嵌入式计算机视觉教学和试验工作的平台。xM 平台有一个针对高清摄像机的内置数字摄像机端口。
BeagleBoard xM 的固态存储录制只需要 Linux 文件系统上的文件系统空间或具有正确的编解码器(使用 Texas Instruments Open Multimedia Applications Platform [TI-OMAP] 硬件加速,分别使用 MPEG 和 JPEG 来压缩数字视频和图像的编码和解码软件)的外部 USB 闪存驱动器。
GStreamer 从计算光度计传输无法存储或必须存储在云中的视频。这是参与 Open Computational Photometer 项目的学生研究者打算集成到未来参考 Linux 配置中的一个新特性。
为摄像机接口集成现场可编程门阵列 (FPGA) 或 GPU 协处理,是一个为 Open Computational Photometer 概念的低功耗、高度并行化的像素转换提供支持的关键特性。该项目使用 Altera Development and Education 主板 DE0 和 DE2i。这个集成步骤比较复杂,但很重要,科罗拉多大学和阿拉斯加大学安克雷奇分校的 Open Computational Photometer 项目需要构建自定义硬件,并使用它们作为我们的研究赞助商的开放硬件参考设计来发布。
开放计算光度计的就地部署需要 BeagleBoard xM TI-OMAP 和 FPGA 协处理的电池电源。所幸,许多移动 Linux 用户已经为 BeagleBoard xM 发明了许多电池电源选项。类似地,Altera 拥有 DE0 Nano 的合适的电池供电解决方案。
无线上行链路拥有简单的现成的 USB 设备解决方案,包含 Xbee、ZigBee 和蜂窝调制解调器 GSM(参见 参考资料)。我们面临的挑战在于:支持来自非常远的位置,通过 MPEG 传输带宽(从 1Mbps 到标清视频)实现的无线上行链路。来自 H.265(2013 年发布的标准)和 H.264 的更高压缩率将会提供一些帮助,但上行链路得到的是有损视频。市区部署无疑要容易得多,可能只需使用一个 802.11 USB 适配器和一个市区无线热点。
开放计算光度计的就地部署还需要先进的 Linux 电源管理和感知。需要做的工作比这里介绍的要多得多,但起点仍然是多用途输入/输出 (I/O),能够在不使用时关闭外部设备(参见 参考资料)。使用 Altera DE0 和 DE0 Nano 实现开放计算光度计中的图像处理特性的一个主要原因是,与数字摄像机端口或 USB 摄像机相比,它具有更高效率的帧转换。
自定义双目取景接口板不是一个现成的元素。科罗拉多大学和阿拉斯加大学安克雷奇分销的团队正在努力将这个接口板构建为开放硬件。自定义双目取景接口板尚未公开,但我们打算发布一个参考设计,希望确定一家供应商,让自定义双目取景接口板可通过大学计划购买和供开发人员使用,就像 DE0 一样。公众有望在 2014 年,在我们测试了第一个修订版之后看到它。该团队最终决定构建摄像机接口板,原因如下:
下至信号级别的完全开放的设计(用于教育);
来自两个或多个摄像机的全面协调了时间的图像捕获,实现准确的时间和图像注册;
可靠的帧率和缓冲延迟。
最重要的方面是,摄像机数据路径直接向一个 FPGA 先入先出 (FIFO) 缓冲区提供数据,以便实现并发执行状态机驱动的像素转换,而不是成本高得多的基于 CPU 的转换。这里所采用的理念是,让 FPGA 执行与计算机视觉协处理器一样多的低级逐像素转换,这非常类似于 GPU 卸载光栅图的低级处理方面。我们将 FPGA 视为一个计算机视觉处理单元 (CVPU)。
这绝不是计算光度计技术所需组件的完整列表,您可以在 参考资料 中找到更多的组件。这里的目标是调整您对计算摄影和光度计的看法,降低成本,让计算 3D 和多光谱就地部署的仪器更方便用于教育研究。
计算光度计的设计概念
在许多大学的嵌入式系统和 Capstone 程序中,学生通常基于抓帧器(以及我改编自 Linux 的针对 Bt878 的 VxWorks 驱动程序)来构建立体视觉系统。
Capstone 学生还构建了自定义接口解决方案,但摄像机通常难以(全帧率)集成,难以嵌入用于移动用途,或者难以处理,因为它们是具有糟糕的文档专用硬件。低成本现成网络摄像机和移动摄像机的其他挑战包括:有线的高级光学配置选项(大多数镜头都是内置的,您必须忍受它们)、笨拙的封装,以及让计算机视觉难以实现的帧编码(例如没有原始 RGB 或 YUV 输出的 MJPEG)。
旧的模拟 National Television System Committee (NTSC) 摄像机和 Bt878 等抓帧器仍然是更好的选择之一,它们具有大范围 NTSC 色彩、一致的帧率、针对直接内存存取 (DMA) 和中断的低级驱动程序集成,以及大量的光学和互补金属氧化物半导体 (CMOS)/电荷耦合器件 (CCD) 探测器,这些探测器价格从 10 美元到 1,000 美元不等,但对更高成本的摄像机而言,它们具有明确的光学优势。
网络摄像头是一种糟糕的替代选择 — 专用、固定的光学器件;不一致的帧率和缓冲;有限的文档;以及与使用 Alpha、Red、Green 和 Blue (ARGB) 通道实现色彩像素照度(例如 YCbCr)相比有损的像素色彩格式。此外,在教育研究方面,直接通过 FIFO 传输捕获的像素数据是一个理想选择,它具有高度并发的 FPGA 状态机操作,以及高度准确的立体视觉双通道协调、时间戳和注册。
任何这些选择似乎都无法即取即用,所以我们启动了一个项目,为 Altera FPGA 板的 DE 行构建了一个双通道模拟摄像机捕获板(使用 Texas Instruments TVP 解码器)。此项目的目标是使用可供教育研究机构用于计算光度测定的开放硬件。Camera Link(参见 参考资料)等替代选择可通过子卡用于更高端的 Altera DE4 接口板,但此解决方案的费用很高,不适合学生。该项目的一个目标是使双通道子卡的成本不高于一本教材。
图 1 显示了开放计算光度计的概念设计。要注意的关键特性是,模拟摄像机直接通过双 Texas Instruments 模拟视频解码器向 DE0 或 DE2i I/O 标头和 FPGA FIFO 提供数据。
此配置使得开放计算光度计 FGPA 设计能够转换 FIFO 中的数据,并为 DE2i 上的交叉链接生成有关联的类似元数据的时间戳,通过 PCIe 将它们传输到 Intel Atom 多核微处理器,或者通过双 USB 2.0 链接将它们传输到 TI-OMAP BeagleBoard 处理器(或任何 Linux 笔记本电脑)。
开放计算光度计包含对 USB Video Class (UVC) 驱动程序的更新,以便允许这个自定义的双目取景摄像机轻松地与 Linux 连接。将来可能会发布有关的更多技术信息,参考设计将通过一个与我们的行业供应商合作的大学计划公开。此设计的具体工作原理有待确定,但我们计划在 2014 年春季进行测试和集成,希望在 2014 年某个时刻发布它。
图 1. 包含部分现成组件的开放计算光度计:设计概念
那么为什么仅对计算光度计使用网络摄像头、OpenCV 和 Linux 呢?
OpenCV 是 Intel 开发且开源的 Open Computer Vision 应用编程接口 (API),它的诞生是因为研究计算机视觉和交互式系统的大学发现能够从可重用的图像处理算法中获得巨大好处。基于大量优秀的 OpenCV 参考资料,我创建了一个立体网络摄像头示例(参见 下载)。
这个示例可以运行,但您可能会发现,帧率不是固定的 29.97Hz,比如 NTSC 闭路摄像机所提供的色彩。帧率可能是变化的。其次,所有帧转换都在通过从网络摄像头到 Linux CPU 的直接内存存取 (DMA) 来访问数据后完成。假设它们在时间上大体同步(或许是一种安全的假设,除非它是一种高速运动场景)。
CPU Canny 边缘转换(甚至是模糊化、锐化和像 Hough linear 这样更高级的转换)的真实问题是,CPU 未针对此处理而进行优化。非常类似于 GPU 通过矢量处理和专门构建的多核流处理器,需要从 CPU 卸载呈现数据的光栅化工作,我们还构想了一个 CVPU,Khronos 也是如此 (OpenVX)。
这种卸载 OpenCV 的专门构建的协处理具有很大的优势。OpenCV 拥有使用 GPU 和通用 GPU 的硬件加速特性,但为什么不直接在来自摄像机的路径上应用此处理,而不用执行从摄像机到 CPU,到 GPU,再返回到 CPU 的 I/O。
直接与低成本摄像机连接的协处理器非常有用 — 而且可通过 Camera Link 和 DE4 子卡实现,但成本比教材更高(相当于一个高端网络摄像头)。现在,让我们继续看看 Linux 笔记本电脑上的网络摄像头和 OpenCV(如果还没有网络摄像头,最多花 60 美元),探索更多的选择。我使用了 Logitech C270 网络摄像头(参见 参考资料)。
使用 OpenCV 和网络摄像头获取帧和生成视差图
网络摄像头立体视觉的另一个挑战是计算摄像机的方方面面,这需要基于双目视差来计算与物体的距离。此过程很复杂,需要观察参照场景(OpenCV 棋盘),以便参照物理坐标来校准摄像机像素坐标,计算摄像机光学维度(探测器尺寸和焦距),考虑一个基准面上两个分开的焦平面的任何平面外朝向。
图 2 描绘了立体视觉测距修正计算,以便完美地放平摄像机(探测器位于由一个已知基准线分开的相同平面上,已知的探测器尺寸和焦距是相同的)。摄像机中的非线性和畸变(球面像差 — 鱼眼或沙漏场景畸变),以及平面外探测器及摄像机探测器和焦距差异,都会导致简单三角测定结果的重大错误。
此外,对于网络摄像头,您可能很难找到焦距和探测器尺寸(除了通过摄像机的间接描述)。学习 OpenCV 的第 12 章和大量优秀的 OpenCV 参考资料都非常详细地介绍了此主题(参见 参考资料)。
图 2. 简单的平面立体三角测定法
图 2 显示了如何通过一个中心交点像素,计算距离每个摄像机探测器上已注册的某个物体的距离。(需要执行一些处理才能找到交点。本文未介绍此主题,但您可以在 OpenCV samples/cpp/stereo_match.cpp 中了解有关的更多信息。)该图是概念性的,仅适用于完美对齐的摄像机和焦平面(一种几乎不可能的壮举),但该图展示了得出与双目取景摄像机观察到的物体的距离的基本数学运算概念,比如这里提议的摄像机或两个简单的网络摄像头。
学习 OpenCV 中的第 12 章和 stereo_match.cpp 提供了更好的计算示例;事实上,stereo_match.cpp 可从左侧和右侧图像生成一个点云。除了准确对齐之外,双目取景摄像机的光学原理模型也非常有用。但是,对于更好的光学设计,仍然需要每个相机的特征描述和校准,OpenCV 在这方面提供了很好的支持。
类似于立体测距,两个摄像机(或双眼)看到左侧和右侧图像上相同的对象偏移,该偏移与从摄像机基准线到所观察到的(相同)物体的距离成比例。这是一个主要的距离线索,有助于对距离附近物体的距离进行准确判断,对较远的物体进行不那么准确的判断。如 图 3 中所示,您可以计算一个视差图,根据左侧和右侧图像中的相同点之间的视差为某个灰阶映射图像着色。
该示例有许多由于错误对齐而导致的错误,由于对象(我 3 岁的儿子)的快速移动和缺乏校准,导致右侧图像模糊,但它至少生成一个视差估算结果。通过花费大量精力来了解 OpenCV 中的视差算法中的参数,使用三脚架或光具座来校准和对齐摄像机,我们可得到一个不错的视差图。
图 3. 来自网络摄像头软件的右侧、左侧和视差图
stereo_capture.cpp 下载(参见 下载 中的 example-stereo.zip)的主要作用是支持您试验并学习 OpenCV,还突出了非专用的、包含计算协处理器的高质量的低成本双目取景摄像机的价值。如上所述,网络摄像头的帧率通常不可靠。
图 4. 网络摄像头通常具有的较低并且不一致的帧率
科罗拉多大学博尔德分校和阿拉斯加大学安克雷奇分校开展的计算光度计工作的目的是,创建一种参考设计供其他对计算机视觉、仪器构建和设计感兴趣的研究人员和教育者使用。该项目的重点工作是可视 3D 图像捕获,但我们希望这会开启更多学术性开放硬件工作,以便提供多光谱计算光度计,尤其是红外光度计。举例而言,这可能对阿拉斯加的北极圈冰层观察很有用。请参阅本文的备注部分,获取有关的更新。
结束语
就地高级计算机视觉系统在安全应用中有很高的应用价值。欢迎与我们一起,通过即将公布的大学和开发人员计划为开放硬件和 Open Computational Photometer 项目提供支持。尽管我们的设计不太完美,非常类似开源 Linux,但每个人都可以访问并改进它。
高质量、价格合理的立体计算机视觉将可供所有人使用。当然,它的价值不仅体现在安全方面,还包含签名等应用(例如,利用无人驾驶飞行器评估谷物损害和自动化的喷洒杀虫剂)。对于地球物理调查和监视,创建高质量 3D 图像和模型的能力对航道监视、火山爆发、森林和生态系统都很有价值。对于远程社交互动,这些设备对远距离医学和社交网络应用具有很大的价值。
仍然存在的一个挑战是如何提供和显示 3D 信息。在这方面,Point Cloud Library 提供了丰富的选项以及越来越庞大的消费者显示信息池。我们将进一步探索这些主题,考虑低成本的硬件加速计算光度测定方面的一些建议。
就地计算光度计和数字视频分析处理在云中的应用才刚刚开始。提供一个更安全的世界的前景激动人心。与此同时,许多人担忧不再有隐私。请记住, 全球 70 多亿人都是有机的、双目取景视觉系统,他们每天都在侵犯您的隐私。