引言
随着人们对生活质量要求的提高和全球反恐的大势所需,以及数字化技术本身的不断进步,依托指纹识别、虹膜识别、人脸识别等技术的生物识别方案和视频监控方案等正逐步成为提高个人、家庭、企业和社会安全性的重要手段。生物识别方案主要包括四个步骤:图像采集、图像预处理,特征取样,匹配分析;而视频监控方案则主要包括图像采集、图像预处理、图像处理与传输、图像显示及图像管理等。不难看出,无论是生物识别还是视频监控,图像预处理都是必需的。事实上,图像预处理算法的灵活度、复杂度、对图像处理芯片资源的占用度,以及处理时间的长度将直接对整个系统运行产生举足轻重的影响。因此,图像预处理对于整个安防方案来说都是一项艰巨而又关键的任务,直接决定了后续图像处理与分析的准确性和便捷性。
图像预处理分析
根据目的的不同,图像预处理可分为对采集图像进行清晰化处理,对图像进行识别前的预处理,以及对图像进行压缩前的预处理等。其中,对采集图像进行清晰化处理主要包括对CMOS或CCD图像传感器感光单元的不一致进行后续纠正,对实际环境与传感器采集的图像进行差异补偿(如背光),以及对采集到的原始图像进行去噪处理等。虽然这种预处理算法本身的难度不大,但随着实时性需求的普及,尤其是在像素较大时,这种算法还是对DSP的处理能力提出了很高的要求。
而对图像进行识别前的预处理则目的性很强,可能需要破坏原来的像素和分布,以便后续进行特征提取。这种预处理算法的难度视识别场合的不同而不同。要综合后面的识别算法部分,选择适当的DSP。图像压缩前的预处理主要是指将YUV422变为YUV420、将RGB变为YUV等。这类处理往往有实时性要求,如果采用软件实现,会对处理性能有较高的要求;如果采用硬件实现,则虽然在处理性能上有保证,但硬件成本会有所上升。
同时,根据应用不同,图像预处理又可分为生物识别应用中的图像预处理和视频监控应用中的图像预处理。对于生物识别应用,以指纹识别为例,其预处理主要包括指纹图像增强、指纹图像二值化、指纹图像细化、指纹图像细化后处理。而视频监控应用中的图像预处理主要是指对图像传感器输出的连续图像进行分析,获取足够的信息,并通过自动白平衡、伽马(Gamma)校正、自动聚焦、自动曝光、背光补偿等来提高图像的实际效果。
图像预处理的挑战
无论是生物识别还是视频监控,其图像预处理正面临以下挑战:其一,用户对图像质量的要求越来越高,图像预处理的算法越来越复杂,从而对图像预处理主芯片处理能力及存储空间提出了更加苛刻的要求;其二,用户对图像的实时性处理和传输要求越来越高,一方面要求图像预处理算法尽量优化、精简,另一方面也对图像预处理主芯片的内核处理能力、内部总线架构、数据传输能力、外围接口,以及硬件整体架构和指令集对预处理算法的支持提出了更高要求;其三,不同于图像和视频编解码算法具有业界统一的算法标准和清晰的演进路线图,图像预处理算法不仅没有统一的标准和清晰的发展方向,甚至在很大程度上,方案提供商正是通过这些“秘密”的个性化算法来作为市场竞争的法宝。此外,随着应用领域的不同、需求的提高和技术本身的演进,原有算法会不断升级,新的算法会不断涌现,这些都要求图像预处理芯片具有更高的灵活性和适应能力。其四,对于方案提供商来说,不仅其体现竞争力的核心算法需要防止被非法读取或拷贝,而且无论是生物识别还是视频监控,其图像数据往往都会涉及隐私,因此也需要提供可以信任的安全保证。以上两方面,都要求图像处理芯片必须提供一个可靠、完全的处理平台。
基于以上多方面的挑战,在图像预处理主芯片的选择上,以控制能力见长的传统MCU并不适合庞大、复杂的算法处理;ASIC虽然在运算速度和功耗方面具有一定的优势,但其成本高、灵活性差,且不利于升级和修改,因此无法满足预处理算法个性化的灵活性需求;FPGA并行处理的架构虽然具备了强大的数据处理能力,但价格、功耗,以及开发难度方面的缺点使其很难成为图像预处理的主流选择;而DSP则以强大的数据处理能力和软件可编程能力成为图像预处理主芯片的主流选择。
除了以上挑战,从系统设计的角度来讲,还面临以下几方面的需求:其一,虽然图像预处理和图像处理工作巨大,但是工程师并不希望采用多个芯片来处理这件事情。因为信号处理和控制系统分别运行于不同处理器的传统DSP架构已经让工程师非常头疼,如果再把图像预处理和图像处理分开,则更加大了工程师进行系统开发、系统联调、系统维护的难度。因此,对于系统设计中的主芯片DSP来说,还面临集成度的要求——有没有可能在单芯片上实现图像预处理、图像处理,甚至包括系统控制等功能。
其二,随着包括预处理在内的整个图像处理算法复杂性的不断增加,作为主处理器的DSP,除了需要提供足够的硬件处理能力之外,还应该在软件上提供针对该处理器专门优化的指令集,从而帮助工程师降低对处理器物理架构的熟悉难度,最大限度的驾驭、发挥处理器的特性,尽快开发出精简、优化的图像处理算法。
其三,除了上面提到的专门优化的指令集以外,面对日益复杂的图像处理和产品上市时间的压力,工程师还期望处理器供应商能够分担一些他们的工作——比如,提供专门针对该处理器优化、仅占极少量时钟周期的底层图像处理软件模块,以帮助他们缩短图像处理算法开发流程,并加速软件移植。
另外,功能强大、界面友好、简单易学的开发工具也是系统开发中工程师要求的重点,而且随着系统复杂度和模块复用性需求的增加,对开发工具的兼容性也提出了更高的要求。
理想的DSP处理器
基于以上分析,针对图像处理应用的理想DSP处理器必须具备以下几方面的特点:内核处理能力强;专门针对图像处理的指令集;易于大量数据传输的低功耗硬件架构;高集成度;丰富的软件模块库;功能强大的开发工具。以下是对该类DSP处理器的代表系列——Blackfin汇聚处理器架构的具体分析。
硬件特性
Blackfin DSP处理器基于由ADI 和Intel公司联合开发的微信号架构(MSA),通过将传统DSP和微控制器的优点融为一体,兼顾了事件控制以及纯算法运算处理功能。其汇聚的单一内核可提供高达756MHz的处理能力,不仅为处理复杂的预处理算法提供了强大性能保证,而且为整个系统的图像处理和事件控制提供了强有力的硬件支持,从而允许工程师在单芯片上实现图像预处理、图像处理、系统控制,大大提高了系统的集成度。
Blackfin系列处理器的硬件架构专门针对图像处理进行优化,多个DMA通道和可灵活配置的Cache能很好地解决大运算量、高数据吞吐率的图像处理应用要求。在图像处理应用中,虽然对图像数据进行的传输也可由软件实现,但是这样会消耗掉大量的CPU时钟周期,从而使DSP的高速数据处理能力难以发挥。如果由DMA独立负责数据传输,那么在系统内核对DMA进行初始设置并启动后,DMA控制器就可在无需内核参与的情况下直接把图像数据从PPI接口传输至SDRAM存储器进行存储,比如在进行MPEG或JPEG处理的计算密集型算法中,一个灵活的DMA控制器能省去额外的数据通路。此外,通过二维DMA还能简化宏块进出外部存储器的传送,从而允许数据控制成为数据实际传送的一部分,这对色彩空间元素的交叉和解交叉来说非常方便也非常重要。因此,Blackfin处理器的这种特性在有效地解决了大批量图像数据传输这一速度瓶颈的同时,又能让DSP处理器抽出更多的资源从事算法处理工作,大幅提高了系统的处理能力。
而且,针对图像处理应用,Blackfin系列DSP还在不断强化硬件功能模块的支持,比如,ADSP-BF54x系列Blackfin处理器的最新版本中增加了一个用于处理叠加图像(Pixel Compositor)的硬件加速器和一个扩展视频接口(EPPI),它使得色彩空间变换、缩放和图像叠加等任务可以在无需处理器参与计算的情况下完成,从而减轻了内核的处理压力,为进行更高性能、更高速度的图像处理提供了更多空间。
软件特性
在指令集方面,Blackfin系列DSP针对图像处理提供了丰富的向量指令和视频指令。其中向量指令可以实现对16位数的操作(大多指令可以并行完成两个16位数的操作)。由于图像处理运算中大多是针对16位数的操作,因此,通过合理使用这些向量指令来优化图像运算非常重要。不仅Blackfin指令集中的大多数算术指令和移位指令都有对应的向量指令,而且,向量指令中还有根据符号相加、32位数转16位数等特殊指令。在对图像预处理的汇编优化中合理的应用这些向量指令,可以提高算法的并行度,并大大加快运算速度。
视频像素指令主要包括BYTEOP16P (完成两个8位数加法操作)、BYTEOP3P (完成16位和8位数的加法操作)、BYTEOPIP(完成两个8位数求平均操作)、BYTEOPZP(完成四个8位数求平均操作)、BYTEOP16M(完成两个8位数减法操作)、SAA (完成求SAD操作)、BYTEAPCK (完成16位数转8位数操作),以及BYTEUNAPCK(完成8位数转16位数操作)等。一条视频像素操作指令可以在一个周期内完成4对视频数据分量的加、减、加减混合、取平均值,或者相减并求绝对值等11种视频像素运算。由于视频像素值一般都是按照8位存放的,所以使用视频像素指令可以大大提高包括求SAD、像素插值、8位数和16位数直接转换等在内的各种视频图像运算的速度。
安全特性
在安全性方面,ADI公司的Blackfin Lockbox Secure Technology通过提供一次可编程(OTP)存储器与安全处理模式(Blackfin安全模式),将软件与硬件保护相结合,为开发人员提供实现以上安全措施的手段,其中,在OTP存储器的公共、非安全、用户可编程区域开发人员可以用来存储公共密钥,这样可以通过可控制与可配置的方式来鉴别系统。而在OTP存储器的私有、安全、用户可编程区域,开发人员则可以设置私人密钥等私有器件资产(deviceassets),并保持这些器件资产的机密性与完整性。此外,在Blackfin处理器上使用安全模式后,处理器只能在安全处理环境内执行授权的信任编码。包括保护秘密(如原始设备制造商知识产权)、为保护电子商务与社会网络而验证器件和用户身份、以及数字版权(DRM)内容保护。从而为图像预处理方案的各个环节提供了量身定做的安全保护功能。
软件模块库支持
除了以上Blackfin DSP在硬件架构和指令集方面对图像处理的支持外,ADI公司还提供多种针对图像处理的软件模块,包括H.264 Baseline Profile Decoder模块、能够按比例缩放具有不同输入及输出尺寸图像的增强视频后处理(eVPP)模块、JPEG编码器模块MPEG-2 Decoder Simple & Main Profile Decoder库、MPEG-4 Simple Profile & Advanced Simple Profile Decoder库,以及MPEG-4 Simple Profile & Advanced Simple Profile Video Encoder模块等,它们都专门针对Blackfin处理器而优化,并经过业界严格验证。这些软件模块能够大幅降低系统工程师的开发难度,并显着提高系统效率。
此外,ADI公司还专门针对图像处理应用推出了“Image Tool Box”软件包,该软件包由一系列专用模块组成,并针对图像处理算法的一些常用和基本函数进行了专门优化,可以进行图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。这款软件包有利于降低工程师的开发难度,加速上层算法的实现和优化。
开发环境的支持
用于Blackfin系列DSP处理器开发应用和工程管理的VisualDSP++开发环境主要包括集成了ViusalDSP++内核的集成编译和调试环境(DIDE);带实时运行库的CC/++优化编译器;汇编器和链接器,以及仿真软件和程序例程等。其中,编译器允许程序开发人员用C或C++语言编写信号处理和控制代码,从而方便了系统的开发和维护。图形化的友好用户信息交换界面使工程师能够在窗口中进行工程管理、编辑、编译和调试程序,并在其间快速轻松地切换。此外,VisualDSP++开发工具还与Green Hills软件公司的MULTI环境、NI公司的LabVIEW软件,以及MathWorks公司的MATLAB和Simulink软件相兼容,为系统开发和模块复用提供了一个更加便捷、宽松的环境。