嵌入式视觉的概念及关键因素
· 彩色传感器 — 需要在每个像素上使用贝尔图形,在一条线上交替变换红色和绿色,下一条线上交替蓝色和绿色(绿色用得多是因为人眼对绿颜色波长更敏感)。这意味着要对接收到的光子进行滤波处理,使每个像素只接收具有所需波长的光子。我们可对图像进行后处理,用不同颜色围绕像素以重构每个像素上的颜色,从而确定像素颜色,而且不会降低图像分辨率。彩色传感器会使重构和输出图像所需的图像处理链变得复杂化。贝尔图形确实会导致分辨率降低,但是没有想象的那么差,通常降幅为 20%。
· 单色 — 由于图像阵列上没有贝尔图形,因此每个像素能接收所有光子。这样可增大图像灵敏度,使图像的读出更简单,因为不存在颜色重建所需的去马赛克效应。
经选择我们决定使用 CIS 器件,而实际上这些属于复杂的专用片上系统。因此,我们还必须考虑以下关于读出模式和积分时间的问题。
· 积分时间 — 这是读出之前像素的曝光时间。在比较简单的 CCD 系统上,需要接近电子装置在器件外执行该时序。然而对于 CIS 器件,积分时间可通过命令接口由寄存器来配置,然后 CIS 器件针对常用的两种读出模式精确地执行积分时间。
· 全局快门模式 — 这种模式下,所有像素同时接受光照,然后读出。此模式下由于所有像素同时读出,因此会增大读出噪声。如果要对快速运动物体拍摄快照,适合使用该模式。
· 滚动快门模式 — 这种模式下,进行逐行曝光和读出。这种模式的读出噪声较小,然而,在捕获快速运动物体方面不如全局快门模式。
系统开发
选择了合适的传感器之后,在进行系统开发的过程中还需要考虑和解决诸多挑战。
除了技术挑战以外,开发系统时还会面对时间压力,确保在既定时限内将产品推向市场。我们要根据时间限制,重点弄清楚开发过程中的哪部分活动能实现附加价值,然后做出正确选择,分清哪部分应该自己开发(增值活动),哪部分可以购买商用现成产品 (COTS) 或者分包出去。重点关注增值活动并利用硬件、软件和 FPGA 层面的 IP 模块,是满足上市时间要求的重要促成因素之一。
除了上市时间要求,嵌入式视觉系统开发过程中还要经常考虑尺寸、重量、功耗和成本 (SWAP-C) 要求。究竟哪种要求占主导,取决于具体应用领域,例如手持设备在功耗方面就要比驾驶员辅助系统更为严格。然而,对于高级驾驶员辅助系统来说,由于要生产几百万台,因此方案成本就成了主导因素。
要在尺寸、重量、功耗和成本方面获得很好的效果,应该在传感器和处理系统中实现更为紧密的系统集成,即使用数量更少但功能更强的集成组件。
每种应用领域都具有不同增值点以及不同的尺寸、重量、功耗和成本考量,因此几乎所有嵌入式视觉系统都需要我们实现所谓的图像处理流水线。这种流水线可与所选的传感器建立接口连接,并且执行所需的操作以生成适合进一步加工或直接在网络上传输的图像。基本的图像处理流水线包含
· 照相机接口 — 接收来自传感器的原始图像
· 颜色滤波阵列 — 重建像素颜色
· 色彩空间转换 — 转换成针对编解码器的正确色彩空间。
· 输出格式化 — 与输出介质进行接口连接
在图像处理流水线中对接收的图像执行和应用算法。所实现应用不同,算法也会不同;不过,有一些常用的图像处理算法可用来提高对比度,检测图像中的特性、目标或运动,或者校正模糊图像。
应该在一个框架中开发这些算法,以便我们以最短时间将产品推向市场,并鼓励重复使用,降低非重复性和重复性工程成本。有几种现成的框架我们可以考虑使用。
· OpenVX — 用于开发图像处理应用的开源应用程序。
· OpenCV[1] — 开源计算机视觉,多个面向实时计算机视觉的库,基于 C/C++
· OpenCL — 基于 C++ 的开源计算机语言,用于开发 GPU、FPGA 等器件中常见的并行处理应用。
· SDSoC — 赛灵思的一款设计环境,借助该环境开发人员可在 Zynq 或 UltraScale+ MPSoC 器件的 ARM 处理系统中最初实现用 C/C++ 编写的算法,分析代码库特性以找出性能瓶颈,然后利用赛灵思高层次综合功能将这些瓶颈转换到硬件支持的 IP 核,并在器件的可编程逻辑 (PL) 部分运行。
采
- CEVA-CV:实现嵌入式视觉应用(01-18)
- 高性能DSP的嵌入式视觉应用:借机器一双慧眼(03-05)
- ADI技术市场经理畅谈嵌入式系统发展(02-26)
- 基于DSP的自动避障小车(04-05)
- 双口RAM在DSP与ICCD通信系统中的应用(02-09)
- 基于单片机的线阵CCD实时检测系统的开发(03-28)