最近基于ARM" title="ARM">ARM/DSP" title="DSP">DSP的圖像采集" title="圖像采集">圖像采集得到越來越廣泛的應(yīng)用。除了傳統(tǒng)的視頻編解碼外,一些新興應(yīng)用如條碼識別、文字識別、生物識別(虹膜、面相)等也得到了空 前的關(guān)注。這些應(yīng)用都要求獲得穩(wěn)定、快速、低噪聲的圖像質(zhì)量,所以作為應(yīng)用基礎(chǔ)的圖像采集與處理技術(shù)應(yīng)該得到更多的關(guān)注。
我們主要從事基于ARM和DSP的圖像采集、視頻編解碼技術(shù)的開發(fā)工作,做過不是這方面的項目,而且最近經(jīng)常看到一些網(wǎng)友提問一些基礎(chǔ)*的問題,所以今天對圖像采集與視頻編碼方面的基礎(chǔ)知識簡單總結(jié)一下,希望對大家有用,也希望拋磚引玉,歡迎大家討論和指正。
組成一套圖像與視頻應(yīng)用系統(tǒng)包括兩部分:圖像成像單元和后端處理單元。首先討論圖像成像單元,除了一些特殊應(yīng)用外,市場上常見的圖像成像部件基本可分為CCD和CMOS兩種。
CCD 即電荷耦合器件,使用一種高感光度的半導(dǎo)體材料制成,包括線*和矩陣兩種。CCD的特點是靈敏度高,噪聲小,色彩飽和度好,但是價格較高。CCD傳感器" title="CCD傳感器">CCD傳感器正 在得到CMOS傳感器的挑戰(zhàn),CMOS(Comple-mentary Metal-Oxicle-Semiconductor,互補金屬氧化物半導(dǎo)體集成電路影像傳感器)主要是利用硅和鍺這兩種元素所做成的半導(dǎo)體,其優(yōu)點是 功耗小,宜于批量生產(chǎn),價格比CCD低很多。但是CMOS傳感器對照度要求比較高,當(dāng)光線較暗時噪聲明顯加大,成像質(zhì)量比CCD差。目前手持應(yīng)用市場的火 爆帶動了CMOS的需求大大增加,圖像質(zhì)量逐步提供,相信CMOS會得到越來越多的市場空間。
CCD傳感器基本被日本廠家壟 斷,CMOS生產(chǎn)廠家則有很多,比較知名的有Micron、OmniVision、Hynix、Sharp、Toshiba等。我們使用過多家的產(chǎn)品,感 覺不同廠家的CMOS傳感器大同小異,結(jié)構(gòu)上一般包括感光陣列、模擬處理、A/D轉(zhuǎn)換、時序電路、寄存器控制電路、圖像質(zhì)量控制等部分。早期的傳感器不包 括DSP電路,即“sensor only”。現(xiàn)在的傳感器都可以說是SOC了,包括DSP電路,可以實現(xiàn)自動增益、自動曝光、自動白平衡等控制。
CMOS傳感器接口信號包括主時鐘信號、象素時鐘、水平同步/參考、垂直同步和象素數(shù)據(jù)信號,如下所示:
MCLK ―― 后端DSP/arm提供給傳感器的時鐘,也可以由晶陣提供
PIXELCLK ―― 傳感器輸出的象素時鐘,所有數(shù)據(jù)與該時鐘同步
HSYNC/HREF ―― 水平參考信號,表示一行數(shù)據(jù)(包括有效數(shù)據(jù)和Blank)
VSYNC ―― 垂直同步信號,表示一幀數(shù)據(jù)(包括有效數(shù)據(jù)和Blank)
Data[7:0] ―― 8位象素數(shù)據(jù),有的傳感器是輸出10位或者更高精度
CMOS 傳感器的輸出信號格式一般有幾種:Raw RGB(Bayer)、RGB565、YUV422、ITU656。Raw RGB輸出原始的RGB數(shù)據(jù),通常是每個象素僅輸出一個數(shù)據(jù),偶數(shù)行RG RG RG…,奇數(shù)GB GB GB…,需要進(jìn)行插值才可以得到每個象素點的RGB數(shù)據(jù)。RGB565是每個象素點輸出兩個字節(jié),共16bits,由R(5bits)、G(6bits) 和B(5bits)組成。因為人眼對綠色更敏感,所以G分量由6bits代表。YUV422也是每個象素點輸出兩個字節(jié),每行由序列UY VY UY VY…組成,其輸出順序一般可以控制。同樣由于人眼對亮度更敏感,所以每個象素輸出一個Y值,而色差則是各一個象素輸出一個。RGB565和YUV422 都是需要時序信號配合的,而ITU565格式本身包含幀頭和幀尾,因而可以不需要HSYNC和VSYNC信號的配合。
前面討論了 前端傳感器部分,下面討論一下后端處理單元。隨著ARM的普及,越來越多的工程師開始使用ARM作為后端處理單元。常見的ARM如2410、9200、 44b0等,沒有視頻輸入接口,需要增加CPLD/FPGA電路控制時序和讀入傳感器輸出的圖像數(shù)據(jù)。另外一類ARM由于具有視頻輸入接口從而大多簡化了 電路,直接可以輸入CMOS傳感器的輸出。這一類的arm處理器包括Freescale mxl/mx21/mx27/mx31、Samsung 2440、Intel PXA270等。我們在為自己的應(yīng)用選型時,除了考慮處理器的功耗、價格、主頻、外頻外,還應(yīng)該考慮處理器的內(nèi)部處理能力,比如DMA能力、是否有硬件加 速能力等因素。通常圖像采集后都會用到顏色空間變換、放大縮小等功能,所以如果處理器具有硬件加速能力則可以大大提高運算效率。在這方面 Freescale MX21應(yīng)該是不錯的,其預(yù)處理和后處理模塊通過硬件實現(xiàn)顏色變換和插值變換,大大提高運算速度。如果使用DSP作為后端處理器,那就比較簡單了。無論是 TI系列還是ADI Blackfin系列,都具備視頻輸入接口,可以直接輸入傳感器的輸出信號。
另外一類重要的應(yīng)用是視頻編解 碼,主要用于安防領(lǐng)域。當(dāng)前流行的編解碼算法是MPEG-4,而H.264也正在迅速的占領(lǐng)市場,傳統(tǒng)的M-JPEG則在交通監(jiān)控領(lǐng)域繼續(xù)發(fā)揮作用。經(jīng)常 看到網(wǎng)友在論壇上討論基于ARM實現(xiàn)視頻編解碼算法,結(jié)果可能大多是讓您失望。我們曾經(jīng)試圖做這個工作,最后是在Freescale MXL處理器上實現(xiàn)QCIF分辨率的準(zhǔn)實時MPEG-4編碼,而且使用MXL的硬件DCT加速、匯編優(yōu)化和半象素搜索優(yōu)化算法。很明顯基于傳統(tǒng)ARM處理 器實現(xiàn)視頻編碼算法是很有難度的和不太現(xiàn)實的。不過您也別太失望,有一類arm處理器內(nèi)部集成編解碼CODEC,算法基本不占用CPU時間,所以還是可以 用的。這一類主要有Freescale MX21/MX27/MX31、海思Hi3510,好像還有上海杰得。Mx21內(nèi)嵌Hantro的CODEC,可以做到CIF@30fps,MX27可以 做到H.264@D1,海思3510也可以做到H.264的D1編碼。相對使用DSP處理視頻算法,SOC的優(yōu)點是開發(fā)簡單,直接調(diào)用編解碼API就可以 了。隨著市場競爭的加劇,相信會出現(xiàn)越來越多的具備視頻編解碼能力的arm處理器。
相對于arm處理器,目前更多的工程師使用 DSP處理器完成編解碼算法。適合視頻處理的DSP也有很多,比較知名的有TI系列、ADI系列和Philips系列。TI自不必說,大家都很熟悉。 Philips(NXP)的Trimedia系列DSP是老牌的視頻處理芯片,應(yīng)用也非常廣泛。ADI的Blackfin系列視頻處理器則是較新一點的, 相對于傳統(tǒng)DSP,Blackfin的最大優(yōu)勢在于其MSA體系結(jié)構(gòu),是DSP與RISC處理器的結(jié)合體。這一優(yōu)點使得Blackfin既可以運行操作系 統(tǒng),又可以高效的運行算法,從而可以實現(xiàn)單芯片視頻應(yīng)用系統(tǒng)。我們知道單芯片系統(tǒng)一般成本會比雙處理器系統(tǒng)低,這在對成本控制越來越嚴(yán)格的今天的確比較有 誘惑力。