宋雪群,劉 洵,王 洪
(1.中國(guó)科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,吉林長(zhǎng)春 130033; 2.中國(guó)科學(xué)院研究生院,北京 100039)
航空偵察、遙感遙測(cè)、氣象探測(cè)等技術(shù)的日益發(fā)展,對(duì)成像技術(shù)提出了越來(lái)越高的要求;與此同時(shí),航空相機(jī)的分辨率不斷提高,偵察覆蓋范圍不斷擴(kuò)大也導(dǎo)致圖像的數(shù)據(jù)量成倍增加。然而,航空相機(jī)的存儲(chǔ)空間和傳輸帶寬有限,如何高倍率地壓縮圖像以減少圖像數(shù)據(jù)量,并在此基礎(chǔ)上提高圖像的傳輸速度成為航空相機(jī)圖像高速傳輸?shù)年P(guān)鍵所在。
圖像數(shù)據(jù)傳輸技術(shù)分為并行傳輸和串行傳輸兩種。并行傳輸技術(shù)速度快,但是數(shù)據(jù)總線引線多、成本高、易受干擾、可維護(hù)性差,只適用于短距離傳輸[1]。如IEEE1394是一種高速串行總線,具有熱插拔、即插即用的優(yōu)點(diǎn),可以克服并行傳輸引線多、成本高等缺陷,現(xiàn)行確定的最大速度已達(dá)400 Mb/s,以后還有望提高到800 Mb/s、1.6 Gb/s、3.2 Gb/s,但 IEEE1394的應(yīng)用不普遍,目前只應(yīng)用于一些使用高帶寬的設(shè)備中,而且其占用資源比較多[2]。而 USB作為連接計(jì)算機(jī)和外部設(shè)備的一種通信接口,已廣泛應(yīng)用于各種設(shè)備的數(shù)據(jù)傳輸中。它以安裝簡(jiǎn)單、支持熱插拔、傳輸速率高等優(yōu)點(diǎn)成為移動(dòng)設(shè)備數(shù)據(jù)交換的首選[3]。目前,常用的 USB2.0最大數(shù)據(jù)傳輸速度達(dá)60 MB/s。
本文針對(duì)基于 USB總線接口的 PTP協(xié)議提出了一種高速圖像傳輸方式,利用 JPEG標(biāo)準(zhǔn)圖像壓縮算法,減少了圖像數(shù)據(jù)傳輸量,通過(guò)對(duì)文件流多線程的控制,達(dá)到了圖像高速串行傳輸?shù)哪康摹?/p>
PTP[4]是一個(gè)與數(shù)碼攝影設(shè)備通信的獨(dú)立傳輸協(xié)議,通過(guò) W IA(W indows Image Acquisition)支持靜態(tài)圖像設(shè)備,使用 WDM(W indows Driver Model)驅(qū)動(dòng)結(jié)構(gòu),實(shí)現(xiàn)航空相機(jī)與其它外圍設(shè)備的通信和數(shù)據(jù)交換。PTP協(xié)議內(nèi)容包括對(duì)設(shè)備進(jìn)行發(fā)送和接收?qǐng)D像操作、預(yù)覽縮略圖、傳送圖像數(shù)據(jù) (包括圖像信息、設(shè)備信息等),以及對(duì)設(shè)備進(jìn)行遠(yuǎn)程控制操作等。PTP可以在多種接口上進(jìn)行通信 ,如:lr-DA、USB、IEEE1394、RF/Bluetooth等。
與通常意義上的主從連接方式或同等作用連接方式相比,PTP協(xié)議只定義了初始化器 (Initiator)和響應(yīng)器 (Responder)。初始化器是向響應(yīng)器發(fā)送初始化操作請(qǐng)求的設(shè)備;而響應(yīng)器是響應(yīng)操作請(qǐng)求的設(shè)備。某種設(shè)備可以是初始化器,也可以是響應(yīng)器,或者兩者皆是。本文中 PC(或應(yīng)用層)為初始化器,而航空相機(jī)為響應(yīng)器。
PTP使用專門(mén)指定的傳輸模式。事件由請(qǐng)求操作組成,用于圖像數(shù)據(jù)傳輸和響應(yīng)。PTP經(jīng)由USB傳輸時(shí)擁有 3個(gè)線程:控制線程、數(shù)據(jù)線程和中斷線程[5]。
圖1 PTP的軟件結(jié)構(gòu)Fig.1 Sof tware architecture of PTP
PTP層與應(yīng)用層通信時(shí)包含有以下原始操作,具體可參見(jiàn)圖1。
(1)控制線程主要實(shí)現(xiàn) PTP協(xié)議的操作請(qǐng)求與響應(yīng)。
(2)數(shù)據(jù)線程分?jǐn)?shù)據(jù)輸入端和數(shù)據(jù)輸出端,數(shù)據(jù)輸入端用來(lái)傳輸圖像數(shù)據(jù),地址為 0x01~0x0F。數(shù)據(jù)輸出端用于接收?qǐng)D像數(shù)據(jù),地址為0x81~0x8F。
(3)當(dāng)設(shè)備的一個(gè)異步事件發(fā)生,如低電量指示或刪除記憶卡,異步事件通過(guò)中斷線程來(lái)通知。
(4)PTP事件根據(jù)響應(yīng)器的狀態(tài)變化發(fā)出通知并初始化響應(yīng)器。
(5)設(shè)備連接 /斷開(kāi)連接依賴于事件類型的平臺(tái),事件不會(huì)在初始化器和響應(yīng)器之間直接通信,只有當(dāng)檢測(cè)到設(shè)備已經(jīng)連接 /斷開(kāi)時(shí),PTP層才開(kāi)始產(chǎn)生通信。
航空相機(jī)與存儲(chǔ)設(shè)備交換圖像數(shù)據(jù)信息之前,需先建立 PTP會(huì)話。會(huì)話是 PTP設(shè)備之間的邏輯聯(lián)系,包括對(duì)象標(biāo)識(shí)符、EventHandler、存儲(chǔ)媒介標(biāo)識(shí)符 (Storage IDs)等。在航空相機(jī)返回一個(gè)有效的響應(yīng)后會(huì)話開(kāi)始執(zhí)行 OpenSession操作。CloseSession操作完成或關(guān)閉傳輸信道后結(jié)束會(huì)話。打開(kāi)一個(gè)會(huì)話意味著應(yīng)用層開(kāi)始與航空相機(jī)連接,用戶可以從應(yīng)用層控制航空相機(jī),獲取相關(guān)的屬性和對(duì)象,實(shí)現(xiàn)拍攝和圖像傳輸?shù)裙δ?如圖2所示。
圖2 PTP的會(huì)話Fig.2 PTP session
本系統(tǒng)主要功能是完成航空相機(jī)的圖像數(shù)據(jù)壓縮、存儲(chǔ)、傳輸以及對(duì)相機(jī)的控制,整個(gè)系統(tǒng)框架如圖3所示。
本方案的地面測(cè)試系統(tǒng),通過(guò)地面控制,地面指揮可以與航空相機(jī)進(jìn)行實(shí)時(shí)通信。從設(shè)備主要由航空相機(jī)、相機(jī)控制器、橫滾控制器、反射控制器等幾部分組成。從設(shè)備工作如下:
(1)通過(guò)給系統(tǒng)各個(gè)設(shè)備上電后,從設(shè)備與主機(jī)開(kāi)始進(jìn)行通信,檢查相機(jī)狀態(tài)并初始化航空相機(jī)。
圖3 圖像傳輸系統(tǒng)總體設(shè)計(jì)Fig.3 Overall design of image trans mission system
(2)相機(jī)控制器通過(guò)外設(shè)接口接收無(wú)人機(jī)發(fā)來(lái)的飛行參數(shù),如飛行高度、飛行速度、俯仰角速度、偏航角速度、橫滾角速度等。相機(jī)控制器根據(jù)參數(shù)進(jìn)行計(jì)算,將計(jì)算結(jié)果分別送給橫滾控制器和反射鏡控制器。同時(shí),橫滾控制器和反射鏡控制器也將各自的運(yùn)行狀態(tài)反饋給相機(jī)控制器。
(3)PTP響應(yīng)器是響應(yīng)主機(jī)發(fā)送的各種操作指令,使航空相機(jī)執(zhí)行圖像屬性的獲取、拍攝、傳輸、存儲(chǔ)等功能。
(4)航空相機(jī)將獲取的圖像發(fā)送至圖像處理器,對(duì)圖像進(jìn)行預(yù)處理和圖像壓縮之后,再將壓縮的圖像數(shù)據(jù)通過(guò) USB2.0傳輸?shù)街鳈C(jī)。
主設(shè)備的具體應(yīng)用如下:
(1)主機(jī) (應(yīng)用層界面)通過(guò) USB傳輸總線對(duì)航空相機(jī)、相機(jī)控制器、圖像處理單元進(jìn)行地面控制。
(2)USB接口的主從結(jié)構(gòu)特性決定了 PTP在USB上通信需采用主從式結(jié)構(gòu)。USB驅(qū)動(dòng)程序完成對(duì) USB設(shè)備的檢測(cè)、枚舉等初始化工作,向USB總線驅(qū)動(dòng)設(shè)備遞交 URB(USB Request Block)請(qǐng)求,并向 PTP應(yīng)用程序提供接口。
(3)PTP應(yīng)用程序是 PTP協(xié)議的實(shí)現(xiàn)模式,調(diào)用API函數(shù)實(shí)現(xiàn)設(shè)備的連接機(jī)制和執(zhí)行傳輸功能。
(4)圖像傳輸?shù)街鳈C(jī)后,可以直接進(jìn)行圖像存儲(chǔ)或?qū)D像進(jìn)行后續(xù)的圖像處理,存儲(chǔ)并顯示圖像。
(5)為了確保整個(gè)系統(tǒng)正常工作,讀取完一幀圖像之后,主機(jī)發(fā)送下一幀讀取指令,持續(xù)發(fā)送圖像。
圖像壓縮[6,7]是航空?qǐng)D像高速傳輸系統(tǒng)的一個(gè)重要組成部分,主要完成圖像的壓縮編碼。航空?qǐng)D像壓縮過(guò)程分為 DCT、變換系數(shù)量化 (Quantizing)、重排序和游程編碼 (Zigzag Recording&RLC)、可變長(zhǎng)編碼 (VLC)4個(gè)環(huán)節(jié),如圖4所示。
圖4 JPEG圖像處理過(guò)程Fig.4 JPEG image processing
首先,對(duì)每一個(gè) 8 pixel×8 pixel大小的子塊進(jìn)行二維前向離散余弦變換 (簡(jiǎn)稱 FDCT),子塊由 8×8的矩陣表示。經(jīng)過(guò)變換后,包含圖像主要信息的低頻分量都集中在左上角,包含圖像細(xì)節(jié)的高頻分量分布在右下角。對(duì) DCT系數(shù)進(jìn)行量化,減小了非 0系數(shù)的幅度,增加了 0值系數(shù)的數(shù)目,降低了比特率,以達(dá)到壓縮的目的。將 DCT系數(shù)量化后,再按照“Z”字型方式將塊中的系數(shù)排序,然后對(duì)得到的序列進(jìn)行基于 Huffman碼的游程編碼 (RLE)和可變長(zhǎng)編碼,最后將碼流按照J(rèn)PEG標(biāo)準(zhǔn)格式寫(xiě)文件,用于傳輸和存儲(chǔ)。
圖像壓縮完之后,為實(shí)現(xiàn)圖像壓縮和圖像傳輸?shù)耐瑫r(shí)進(jìn)行,本文選用 Visual C++6.0作為開(kāi)發(fā)工具,充分利用圖像采集卡具有的功能 (必須在設(shè)備選型時(shí)慎重考慮,減少系統(tǒng)開(kāi)發(fā)周期和難度),設(shè)計(jì)了一種雙緩沖區(qū)、多線程結(jié)構(gòu),如圖5所示。雙緩沖區(qū)是包括編碼緩沖區(qū)和文件流緩沖區(qū)。整個(gè)傳輸過(guò)程有 4個(gè)線程:壓縮編碼線程負(fù)責(zé)對(duì)圖像進(jìn)行壓縮編碼,并將壓縮圖像數(shù)據(jù)寫(xiě)入編碼緩沖區(qū);內(nèi)存切換線程負(fù)責(zé)將編碼緩沖區(qū)的內(nèi)容轉(zhuǎn)發(fā)到文件流緩沖區(qū);圖像發(fā)送線程將文件流緩沖區(qū)里的圖像數(shù)據(jù)下載到存儲(chǔ)介質(zhì);主線程協(xié)調(diào)上述 3個(gè)線程同時(shí)運(yùn)行和接受存儲(chǔ)介質(zhì)的確認(rèn)信息。
圖5 多線程傳輸流程圖Fig.5 Flowchart ofmultithread transmission
當(dāng)主機(jī)發(fā)送確認(rèn)信息,編碼緩沖區(qū)為空時(shí),激活編碼線程,進(jìn)行圖像編碼,編碼結(jié)束后,判斷文件流緩沖區(qū)是否為空,為空則激活內(nèi)存切換線程,轉(zhuǎn)存圖像數(shù)據(jù)。當(dāng)文件流緩沖區(qū)不為空時(shí),激活圖像發(fā)送線程,下載圖像數(shù)據(jù)到存儲(chǔ)介質(zhì)。當(dāng)存儲(chǔ)介質(zhì)寫(xiě)入一幀圖像之后,主機(jī)發(fā)送下一幀讀寫(xiě)指令,保持圖像持續(xù)傳輸,如圖6所示。壓縮編碼線程、內(nèi)存切換線程和圖像發(fā)送線程既存在一種先后的順序關(guān)系,同時(shí)也存在一種并行的關(guān)系。主線程控制著其他線程穩(wěn)步有序地進(jìn)行。這樣,使得圖像的采集、壓縮、傳輸、存儲(chǔ)能同時(shí)進(jìn)行。
圖6 多線程傳輸?shù)牧鞒虉DFig.6 Flowchart ofmultithread transmission
為了測(cè)試這種方案的可行性,對(duì)其所能達(dá)到的壓縮質(zhì)量、傳輸速率、以及誤碼率進(jìn)行了地面測(cè)試實(shí)驗(yàn)和性能分析。
圖7 原圖像Fig.7 Origional image
圖8 壓縮后的圖像Fig.8 Compressed image
為了減少圖像傳輸?shù)臄?shù)據(jù)量,提高傳輸?shù)乃俣?本文結(jié)合圖像的品質(zhì)與壓縮比,采用 JPEG進(jìn)行圖像壓縮 (壓縮比為 32∶1),數(shù)據(jù)壓縮前后的圖像效果如圖7和圖8所示。
經(jīng)過(guò)長(zhǎng)時(shí)間的測(cè)試結(jié)果表明,本系統(tǒng)的平均傳輸速率為 53.641 Mb/s,存儲(chǔ)的數(shù)據(jù)能達(dá)到100%的正確率,圖像數(shù)據(jù)的傳輸和存儲(chǔ)都無(wú)誤碼。同時(shí),圖像像素越大,傳輸速率越快,圖像像素越小,傳輸速率越慢,如表1所示。
表1 不同像素圖像的傳輸速度Table 1 Transm ission ratio of different image sizes
除了前面分析的總線傳輸技術(shù)、存儲(chǔ)設(shè)備技術(shù)決定系統(tǒng)的數(shù)據(jù)傳輸能力外,硬盤(pán)寫(xiě)入速度和硬盤(pán)上是否有碎片對(duì)數(shù)據(jù)存儲(chǔ)速度也都會(huì)有相當(dāng)?shù)挠绊憽?/p>
提出了基于 PTP協(xié)議的航空相機(jī)和遠(yuǎn)程設(shè)備之間的圖像傳輸。采用圖像壓縮方法和多線程傳輸使得圖像能夠較快地傳輸,充分滿足系統(tǒng)工程要求,有較好的工程實(shí)際應(yīng)用價(jià)值。在要求高速、實(shí)時(shí)和連續(xù)采集與存儲(chǔ)的情況下,一方面要求系統(tǒng)不間斷進(jìn)行圖像數(shù)據(jù)采集,同時(shí)還要求進(jìn)行圖像數(shù)據(jù)實(shí)時(shí)地傳輸、存儲(chǔ),否則將會(huì)丟失數(shù)據(jù),造成數(shù)據(jù)不完整。本文所采用多線程傳輸模式,較好地解決了這個(gè)問(wèn)題,既保證了數(shù)據(jù)的實(shí)時(shí)性、完整性和連續(xù)性,避免了數(shù)據(jù)丟包,也保證了圖像傳輸?shù)乃俣取?/p>
[1] 吳成柯,戴善榮,陸心如.圖像通信[M].西安:西安電子科技大學(xué)出版社,1992.WU CH K,DA ISH R,LU X R.Im age Comm unication[M].Xi′an:Xi′anUniversityof Electronic Science and Technology Press,1992.(in Chinese)
[2] LGARASH I T.Home ne twork file system for home network based on IEEE1394 Technology[J].IEEE TCE,1999,3(45):150-151.
[3] USB Implementer′s Forum.Universal serial bus still image capture device definition revision 1.0[ER/OL].(2000-07-01)[2010-01-14]http://www.usb.org.
[4] Camera& Imaging ProductsAssociation(CIPA),PTP-IP picture transfer protocol over IP version 1.0[EB/OL].(2005-04-01)[2010-01-14]http://www.cipa.jp/hyoujunka/kikaku/pdf/DC-X005.pdf.
[5] ISO 15740,Picture transfer protocol(PTP)for digital still photography devices,Photography-Electronic still picture imaging[EB/OL].(2007-07-06)[2010-01-14]http://download.csdn.net/source/205789.
[6] 李仕,張葆,孫輝.航空多重模糊圖像的恢復(fù)[J].光學(xué)精密工程,2009,17(5):1161-1170.L I SH,ZHANGB,SUN H.Restoration of aerial multiple blurred images[J].Opt.Precision Eng.,2009,17(5):1161-1170.(in Chinese)
[7] 李仕,張葆,孫輝.航空視頻圖像實(shí)時(shí)壓縮算法的優(yōu)化設(shè)計(jì)[J].光學(xué)精密工程,2009,17(2)426-432.L I SH,ZHANGB,SUN H.Optimized design of real-time encode for aerial-video image[J].Opt.Precision Eng.,2009,17(2):426-432.(in Chinese)