浅谈基于ARM/DSP的图像采集与视频应用 - 第八基地

软件开发的家园,编程爱好者的天地.

现在是:北京时间 2016/4/14 上午11:50:51 星期四

设为首页  |  加入收藏  |  网站地图

浅谈基于ARM/DSP的图像采集与视频应用
发布于:第八基地 来源:互联网 作者:天堂路上 时间:2011-10-10 点击:232

  最近基于arm/DSP的图像采集得到越来越广泛的应用。除了传统的视频编解码外,一些新兴应用如条码识别、文字识别、生物识别(虹膜、面相)等也得到了空前的关注。这些应用都要求获得稳定、快速、低噪声的图像质量,所以作为应用基础的图像采集与处理技术应该得到更多的关注。

  我们主要从事基于arm和DSP的图像采集、视频编解码技术的开发工作,做过不是这方面的项目,而且最近经常看到一些网友提问一些基础*的问题,所以今天对图像采集与视频编码方面的基础知识简单总结一下,希望对大家有用,也希望抛砖引玉,欢迎大家讨论和指正。

  组成一套图像与视频应用系统包括两部分:图像成像单元和后端处理单元。首先讨论图像成像单元,除了一些特殊应用外,市场上常见的图像成像部件基本可分为CCD和CMOS两种。

  CCD即电荷耦合器件,使用一种高感光度的半导体材料制成,包括线*和矩阵两种。CCD的特点是灵敏度高,噪声小,色彩饱和度好,但是价格较高。CCD传感器正在得到CMOS传感器的挑战,CMOS(Comple-mentaryMetal-Oxicle-Semiconductor,互补金属氧化物半导体集成电路影像传感器)主要是利用硅和锗这两种元素所做成的半导体,其优点是功耗小,宜于批量生产,价格比CCD低很多。但是CMOS传感器对照度要求比较高,当光线较暗时噪声明显加大,成像质量比CCD差。目前手持应用市场的火爆带动了CMOS的需求大大增加,图像质量逐步提供,相信CMOS会得到越来越多的市场空间。

  CCD传感器基本被日本厂家垄断,CMOS生产厂家则有很多,比较知名的有Micron、OmniVision、Hynix、Sharp、Toshiba等。我们使用过多家的产品,感觉不同厂家的CMOS传感器大同小异,结构上一般包括感光阵列、模拟处理、A/D转换、时序电路、寄存器控制电路、图像质量控制等部分。早期的传感器不包括DSP电路,即“sensoronly”。现在的传感器都可以说是SOC了,包括DSP电路,可以实现自动增益、自动曝光、自动白平衡等控制。

  CMOS传感器接口信号包括主时钟信号、象素时钟、水平同步/参考、垂直同步和象素数据信号,如下所示:

  MCLK―― 后端DSP/arm提供给传感器的时钟,也可以由晶阵提供

  PIXELCLK――传感器输出的象素时钟,所有数据与该时钟同步

  HSYNC/HREF――水平参考信号,表示一行数据(包括有效数据和Blank)

  VSYNC――垂直同步信号,表示一帧数据(包括有效数据和Blank)

  Data[7:0]――8位象素数据,有的传感器是输出10位或者更高精度

  CMOS传感器的输出信号格式一般有几种:RawRGB(Bayer)、RGB565、YUV422、ITU656。RawRGB输出原始的RGB数据,通常是每个象素仅输出一个数据,偶数行RGRGRG…,奇数GBGBGB…,需要进行插值才可以得到每个象素点的RGB数据。RGB565是每个象素点输出两个字节,共16bits,由R(5bits)、G(6bits)和B(5bits)组成。因为人眼对绿色更敏感,所以G分量由6bits代表。YUV422也是每个象素点输出两个字节,每行由序列UYVYUYVY…组成,其输出顺序一般可以控制。同样由于人眼对亮度更敏感,所以每个象素输出一个Y值,而色差则是各一个象素输出一个。RGB565和YUV422都是需要时序信号配合的,而ITU565格式本身包含帧头和帧尾,因而可以不需要HSYNC和VSYNC信号的配合。

  前面讨论了前端传感器部分,下面讨论一下后端处理单元。随着ARM的普及,越来越多的工程师开始使用ARM作为后端处理单元。常见的ARM如2410、9200、44b0等,没有视频输入接口,需要增加CPLD/FPGA电路控制时序和读入传感器输出的图像数据。另外一类ARM由于具有视频输入接口从而大多简化了电路,直接可以输入CMOS传感器的输出。这一类的arm处理器包括Freescalemxl/mx21/mx27/mx31、Samsung2440、IntelPXA270等。我们在为自己的应用选型时,除了考虑处理器的功耗、价格、主频、外频外,还应该考虑处理器的内部处理能力,比如DMA能力、是否有硬件加速能力等因素。通常图像采集后都会用到颜色空间变换、放大缩小等功能,所以如果处理器具有硬件加速能力则可以大大提高运算效率。在这方面FreescaleMX21应该是不错的,其预处理和后处理模块通过硬件实现颜色变换和插值变换,大大提高运算速度。如果使用DSP作为后端处理器,那就比较简单了。无论是TI系列还是ADIBlackfin系列,都具备视频输入接口,可以直接输入传感器的输出信号。

  另外一类重要的应用是视频编解码,主要用于安防领域。当前流行的编解码算法是MPEG-4,而H.264也正在迅速的占领市场,传统的M-JPEG则在交通监控领域继续发挥作用。经常看到网友在论坛上讨论基于ARM实现视频编解码算法,结果可能大多是让您失望。我们曾经试图做这个工作,最后是在FreescaleMXL处理器上实现QCIF分辨率的准实时MPEG-4编码,而且使用MXL的硬件DCT加速、汇编优化和半象素搜索优化算法。很明显基于传统ARM处理器实现视频编码算法是很有难度的和不太现实的。不过您也别太失望,有一类arm处理器内部集成编解码CODEC,算法基本不占用CPU时间,所以还是可以用的。这一类主要有FreescaleMX21/MX27/MX31、海思Hi3510,好像还有上海杰得。Mx21内嵌Hantro的CODEC,可以做到[email protected]/**/,MX27可以做到[email protected]/**/,海思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既可以运行操作系统,又可以高效的运行算法,从而可以实现单芯片视频应用系统。我们知道单芯片系统一般成本会比双处理器系统低,这在对成本控制越来越严格的今天的确比较有诱惑力。

对我有帮助
(0)
0%
对我没帮助
(0)
0%
返回顶部
在线反馈
在线反馈