本文為該系列文章的第一篇,先從DSP開始,說明ISP此名詞的意義,我並且將自行定義Special-Purpose ISP與General-Purpose ISP,最後並將說明General-Purpose ISP常見的三種開發方式。
從DSP到ISP
DSP(Digital Signal Processing)嵌入式系統是一個大題目,難以講清楚,因此我將縮小其意義與範圍來論述之。本文中我將說明嵌入式系統上的DSP概念,近年來已經逐漸朝向ISP(Image and Signal Processing)發展。
1D/2D/3D訊號處理
DSP的歷史太久了,其意義又太廣泛。單純的DSP是泛指各種訊號處而的方法、演算法、軟體與硬體。DSP的名詞與觀念,應該從有數位系統以來,就開始有數位訊號處理的領域出現了,最早是先從語音訊號的處理開始,後來廣泛應用於通訊、影像處理、生醫訊號處理,現在則有更廣泛的應用與意義,如地震等訊號的數位處理。
訊號可分為1D與2D、與3D幾種。1D訊號可以語音、通訊、生醫、地震為例。2D則為影像(Image),從可見光影像、高頻電磁波影像(X光等)、低頻電磁波影像(紅外線、超音波)等都可稱之,其訊號處理運算量大,但應用範圍比1D來的更廣泛。3D則可以視訊(Video)做為代表,也就是連續的影像,因此又時又稱為Image Sequence,其運算量比單張影像更巨量,理論難度也更高。
嵌入式系統原來的運算資源非常侷限,CPU較慢、記憶體少量、周邊少,因此傳統的嵌入式系統都是以1D訊號為主,在電子電機則應用在控制與通訊的訊號處理。
ISP: Image and Signal Processing
由於現在的訊號處理幾乎都是在數位系統上進行,因此DSP的Digital一詞已經沒有意義。此外,DSP在傳統上幾乎是泛指各種1D訊號的處理。因此近年來出現一個新名詞:ISP,以與DSP做區分。
ISP的發展,有其歷史軌跡。近10年來,由於VLSI與SOC的進步,數位系統的晶片有大幅進步卻同時縮小化的進展,使得現在的嵌入式系統可以在低價位的情形下,提供高速CPU、大量記憶體、更多的周邊控制,甚至可以有多核心的Processor。在此進步下,嵌入式系統已經開始朝多媒體邁進,增加影像與視訊等2D/3D訊號的運算,以擴大應用範圍。手機從Feature Phone進展到Smart Phone就是一個明顯的例子:體積約略不變,但現在已經可以提供500萬以上畫素的相機,並進行壓縮、處理與視訊傳輸。
因此Smart Phone的CPU,就可稱為ISP的晶片,因為其DSP的運算速度已經可以到2D的處理能力,當然也可以進行1D訊號處理,因此稱之為Image and Signal Processing的晶片並不為過。
另外,近年來有許多的IC Design House也自行設計ISP專用的晶片,亦稱為ISP但全名為Image and Signal Processor。此類ISP,多用來指擴加的影像處理功能的CMOS晶片。
ISP的兩種型態:Special Purpose v.s. General Purpose
ISP的名稱還沒有被廣泛使用,因此這個專有名詞尚未得到廣泛的使用。此外,目前也尚未有人將ISP進行分類。
此處我根據個人經驗,我自己將ISP區分為兩種型態:General-Purpose ISP與Special-Purpose ISP。
Special-Purpose ISP是指晶片上已有固定影像處理功能的晶片,由於功能固定,因此多使用在已經成熟的大量市場,如手機Camera、數位相機、USB Camera、Notebook/Netbook Camera等。這些攝影機的功能大約都相似,如2A(AE/AWB,自動曝光/自動白平衡)等,以提供使用者簡易使用的功能,並且不需要再使用軟體來調整影像品質,例如Omnivision的CMOS晶片(如OV9655)即是如此。此外,有些甚至開始加入3A(2A加上AF自動對焦)等原本數位向機才有的Image Processing Pipeline[1-3],甚至加入WDR/HDR(High Dynamic Range/Wide Dynamic Range)、人臉偵測等。另外學界也有許多論文在探討各種ISP硬體的實做方式[4-5]。
但是Special-Purpose ISP不能再自行改進ISP演算法,其為ASIC,ISP的功能都是固定的,因此不適合學界進行論文研究,僅適用於已經成熟大量但需要低價的產品來使用。
若學界要在嵌入式平台上進行ISP的演算法研究,則需要General-Purpose ISP。例如採用High-end ARM、Extreme DSP或FPGA的平台來作為ISP演算法的研究。
General-Purpose ISP的三種開發方法
High-end ARM是指高階適合用於多媒體的ARM晶片,以ARMv7的最新架構為例,其具有兩個協同運算器(Co-processor)以加速訊號處理:1. NEON media coprocessor,可有多路SIMD加速平行運算,以及2. VFP浮點運算器,因此適合於ISP演算法的發展。以ARMv7-A 架構為例,目前有Cortex-A系列的A8與四核心的A9、A15。Apple iPad, iPhone 4, iPhone 3GS, Motorola的Droid X, Nokia N900等都是使用Cortex A8。這些Smart Phone/Portable Device具有足夠的CPU處理速度(600MHz~1GHz),以執行ISP的運算。但這些現成的可攜式裝置內已經安裝有許多軟體佔用掉CPU資源,因此實際可用的CPU處理速度應不到400MHz。若要使用全部的ARM Cortex A8運算量,可使用開發平台,如TI OMAP 3xxx, Beagleboard, Gumstix等。
Extreme DSP此名詞意指高階DSP並且有特別的Video IO周邊介面設計之晶片與平台,例如TI DaVinci或OMAP。這些DSP除了時脈至少為400MHz以上外,其晶片已經內含Composite Video IO、USB控制器,可接S-video、DVI/HDMI數位影像輸出裝置,並且可以外接高容量儲存裝置如硬碟、SD等。這些Extreme DSP已經有許多的開發平台。
FPGA則這幾年開始朝向多媒體發展,因此逐漸有許多FPGA開發平台外加Video IO,並提供影像與視訊處理的IP Core。以Altera為例,其DE2系列之開發平台就已經包含非常豐富之視訊輸出入介面與儲存裝置介面,並提供VIP(Video and Image Processing) Megafunction,可進行色彩模型轉換、濾波器等基本影像處理功能,最近也有一個IP Camera的reference design。Xilinx也有Video Starter Kit(Vertex-4或Spartan 3A),其功能與DE2類似。另外Xilinx也提供更多的視訊與影像處理IP,甚至有Video Analytics的IP。
CPU、DSP與FPGA三個ISP的嵌入式發展方向,其難易度並不相同[6]。Embedded CPU開發方式與PC相似,也可以用C語言,因此最簡單。DSP開發方式可用C語言,但需瞭解DSP訊號平行運算的程式指令,方能得到高速處理效果,因此需瞭解DSP硬體觀念才能寫出好的ISP程式,難度次之。FPGA則需要以Verilog或VHDL來開發,C語言(System C或SA-C等)的開發方式仍有其困境,目前成熟度尚待改進;因此FPGA的開發需要很清楚的硬體架構設計觀念,難度最高。
我現在三個方向都有在嘗試[6],並期待逐漸建立一些研究成果。目前嵌入式視覺的研究概況,則可以參考[7]。
下篇文章將延伸說明ISP的觀念,繼續說明在嵌入式系統上進行影像辨識開發的觀念:Embedded Vision。
[1] Color Image Processing Pipeline, by Ramanath, R.; Snyder, W.E.; Yoo, Y.; Drew, M.S.; IEEE Signal Processing Magazine, vol. 22, no. 1, pp. 34-43.
[2] An Introduction to the Digital Still Camera Technology, A tutorial by M. Mancuso and S. Battiato.
[3] Design Considerations for Color Image Processing Pipeline for Digital Cameras, by Wen-Chung Kao; Sheng-Hong Wang; Lien-Yang Chen; Sheng-Yuan Lin; IEEE Transactions on Consumer Electronics, vol. 52, no. 4, pp. 1144-1152.
[4] Coarse-grain reconfigurable image signal processor for digital still camera, Chen, J.C.; Chun-Fu Shen; Shao-Yi Chien, IEEE Int. Symp. Circuits and Systems, 2006. Online [Available]: http://ntur.lib.ntu.edu.tw/bitstream/246246/200704191001112/1/01693599.pdf
[5] Search IEEE Explorer, http://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=.QT.image+signal+processor.QT.&x=0&y=0
[6] 邁向嵌入式電腦視覺,王元凱,2010年10月3日。
[7] Embedded Computer Vision研究現況,王元凱,2010年10月3日。
沒有留言:
張貼留言