最近基于arm/DSP的图像采集得到越来越广泛的应用。除了传统的视频编解码外,一些新兴应用如条码识别、文字识别、生物识别(虹膜、面相)等也得到了空 前的关注。这些应用都要求获得稳定、快速、低噪声的图像质量,所以作为应用基础的图像采集与处理技术应该得到更多的关注。
我们主要从事基于arm和DSP的图像采集、视频编解码技术的开发工作,做过不是这方面的项目,而且最近经常看到一些网友提问一些基础*的问题,所以今天对图像采集与视频编码方面的基础知识简单总结一下,希望对大家有用,也希望抛砖引玉,欢迎大家讨论和指正。
组成一套图像与视频应用系统包括两部分:图像成像单元和后端处理单元。首先讨论图像成像单元,除了一些特殊应用外,市场上常见的图像成像部件基本可分为CCD和CMOS两种。
CCD 即电荷耦合器件,使用一种高感光度的开云棋牌官网在线客服材料制成,包括线*和矩阵两种。CCD的特点是灵敏度高,噪声小,色彩饱和度好,但是价格较高。CCD传感器正 在得到CMOS传感器的挑战,CMOS(Comple-mentary Metal-Oxicle-Semiconductor,互补金属氧化物开云棋牌官网在线客服集成电路影像传感器)主要是利用硅和锗这两种元素所做成的开云棋牌官网在线客服,其优点是 功耗小,宜于批量生产,价格比CCD低很多。但是CMOS传感器对照度要求比较高,当光线较暗时噪声明显加大,成像质量比CCD差。目前手持应用市场的火 爆带动了CMOS的需求大大增加,图像质量逐步提供,相信CMOS会得到越来越多的市场空间。
CCD传感器基本被日本厂家垄 断,CMOS生产厂家则有很多,比较知名的有Micron、OmniVision、Hynix、Sharp、Toshiba等。我们使用过多家的产品,感 觉不同厂家的CMOS传感器大同小异,结构上一般包括感光阵列、模拟处理、A/D转换、时序电路、寄存器控制电路、图像质量控制等部分。早期的传感器不包 括DSP电路,即“sensor only”。现在的传感器都可以说是SOC了,包括DSP电路,可以实现自动增益、自动曝光、自动白平衡等控制。
CMOS传感器接口信号包括主时钟信号、象素时钟、水平同步/参考、垂直同步和象素数据信号,如下所示:
MCLK ―― 后端DSP/arm提供给传感器的时钟,也可以由晶阵提供
PIXELCLK ―― 传感器输出的象素时钟,所有数据与该时钟同步
HSYNC/HREF ―― 水平参考信号,表示一行数据(包括有效数据和Blank)
VSYNC ―― 垂直同步信号,表示一帧数据(包括有效数据和Blank)
Data[7:0] ―― 8位象素数据,有的传感器是输出10位或者更高精度
CMOS 传感器的输出信号格式一般有几种:Raw RGB(Bayer)、RGB565、YUV422、ITU656。Raw RGB输出原始的RGB数据,通常是每个象素仅输出一个数据,偶数行RG RG RG…,奇数GB GB GB…,需要进行插值才可以得到每个象素点的RGB数据。RGB565是每个象素点输出两个字节,共16bits,由R(5bits)、G(6bits) 和B(5bits)组成。因为人眼对绿色更敏感,所以G分量由6bits代表。YUV422也是每个象素点输出两个字节,每行由序列UY VY UY VY…组成,其输出顺序一般可以控制。同样由于人眼对亮度更敏感,所以每个象素输出一个Y值,而色差则是各一个象素输出一个。RGB565和YUV422 都是需要时序信号配合的,而ITU565格式本身包含帧头和帧尾,因而可以不需要HSYNC和VSYNC信号的配合。
前面讨论了 前端传感器部分,下面讨论一下后端处理单元。随着ARM的普及,越来越多的工程师开始使用ARM作为后端处理单元。常见的ARM如2410、9200、 44b0等,没有视频输入接口,需要增加CPLD/FPGA电路控制时序和读入传感器输出的图像数据。另外一类ARM由于具有视频输入接口从而大多简化了 电路,直接可以输入CMOS传感器的输出。这一类的arm处理器包括Freescale mxl/mx21/mx27/mx31、Samsung 2440、Intel PXA270等。我们在为自己的应用选型时,除了考虑处理器的功耗、价格、主频、外频外,还应该考虑处理器的内部处理能力,比如DMA能力、是否有硬件加 速能力等因素。通常图像采集后都会用到颜色空间变换、放大缩小等功能,所以如果处理器具有硬件加速能力则可以大大提高运算效率。在这方面 Freescale MX21应该是不错的,其预处理和后处理模块通过硬件实现颜色变换和插值变换,大大提高运算速度。如果使用DSP作为后端处理器,那就比较简单了。无论是 TI系列还是ADI Blackfin系列,都具备视频输入接口,可以直接输入传感器的输出信号。
另外一类重要的应用是视频编解 码,主要用于安防领域。当前流行的编解码算法是MPEG-4,而H.264也正在迅速的占领市场,传统的M-JPEG则在交通监控领域继续发挥作用。经常 看到网友在论坛上讨论基于ARM实现视频编解码算法,结果可能大多是让您失望。我们曾经试图做这个工作,最后是在Freescale MXL处理器上实现QCIF分辨率的准实时MPEG-4编码,而且使用MXL的硬件DCT加速、汇编优化和半象素搜索优化算法。很明显基于传统ARM处理 器实现视频编码算法是很有难度的和不太现实的。不过您也别太失望,有一类arm处理器内部集成编解码CODEC,算法基本不占用CPU时间,所以还是可以 用的。这一类主要有Freescale MX21/MX27/MX31、海思Hi3510,好像还有上海杰得。Mx21内嵌Hantro的CODEC,可以做到CIF@30fps,MX27可以 做到H.264@D1,海思3510也可以做到H.264的D1编码。相对使用DSP处理视频算法,SOC的优点是开发简单,直接调用编解码API就可以 了。随着市场竞争的加剧,相信会出现越来越多的具备视频编解码能力的arm处理器。
相对于arm处理器,目前更多的工程师使用 DSP处理器完成编解码算法。适合视频处理的DSP也有很多,比较知名的有TI系列、ADI系列和Philips系列。TI自不必说,大家都很熟悉。 Philips(NXP)的Trimedia系列DSP是老牌的视频处理芯片,应用也非常广泛。ADI的Blackfin系列视频处理器则是较新一点的, 相对于传统DSP,Blackfin的最大优势在于其MSA体系结构,是DSP与RISC处理器的结合体。这一优点使得Blackfin既可以运行操作系 统,又可以高效的运行算法,从而可以实现单芯片视频应用系统。我们知道单芯片系统一般成本会比双处理器系统低,这在对成本控制越来越严格的今天的确比较有 诱惑力。