無人機(jī)系統(tǒng)的下位機(jī)要求實(shí)時(shí)傳輸視頻數(shù)據(jù)到上位機(jī),由于視頻數(shù)據(jù)量較大且網(wǎng)絡(luò)帶寬非常寶貴,對(duì)視頻數(shù)據(jù)選用一種高壓縮比的文件格式顯得十分重要。 JPEG是聯(lián)合圖像專家組(Joint Picture Expert Group)的英文縮寫,是國(guó)際標(biāo)準(zhǔn)化組織(ISO)和CCITT聯(lián)合制定的靜態(tài)圖像的壓縮編碼標(biāo)準(zhǔn)。和相同圖像質(zhì)量的其他常用文件格式(如 GIF,TIFF,PCX)相比,JPEG是目前靜態(tài)圖像中壓縮比最高的,而圖像質(zhì)量卻差不多。正是由于JPEG的高壓縮比,使得他廣泛地應(yīng)用于多媒體和網(wǎng)絡(luò)編程中。
JPEG-專家組開發(fā)了兩種基本的壓縮算法,一種是采用以離散余弦變換(Discrete Cosine Transform,DCT)為基礎(chǔ)的有損壓縮算法,另一種是采用以預(yù)測(cè)技術(shù)為基礎(chǔ)的無損壓縮算法。使用有損壓縮算法時(shí),在壓縮比為25:1的情況下,壓縮后還原得到的圖像與原始圖像相比較,非圖像專家難于找出他們之間的區(qū)別,因此得到了廣泛的應(yīng)用。JPEG壓縮是有損壓縮,他利用了人的視角系統(tǒng)的特性,使用量化和無損壓縮編碼相結(jié)合來去掉視角的冗余信息和數(shù)據(jù)本身的冗余信息。JPEG算法框圖如圖2所示。
壓縮編碼大致分成3個(gè)步驟:
(1) 通過DCT去除數(shù)據(jù)冗余。DCT是影像壓縮的重要步驟,他通過正交變換將圖像由空間域轉(zhuǎn)換為頻率域。對(duì)于N×N維的數(shù)據(jù),經(jīng)變換以后仍然得到N×N的數(shù)據(jù),雖然DCT變換本身并不對(duì)影像進(jìn)行壓縮,但變換消除了N×N維數(shù)據(jù)之間的冗余性。DCT變換是壓縮過程中量化和編碼的基礎(chǔ)。
(2) 使用量化表對(duì)DCT系數(shù)進(jìn)行量化。量化表是一個(gè)量化系數(shù)矩陣,通過量化可以降低整數(shù)的精度,減少整數(shù)存儲(chǔ)所需的位數(shù)。量化過程除掉了一些高頻分量,損失了高頻分量上的細(xì)節(jié)。由于人類視覺系統(tǒng)對(duì)高空間頻率遠(yuǎn)沒有低頻敏感,經(jīng)過量化處理的圖像從視覺效果來看損失很小。由于低空間頻率中包含大量的影像信息,經(jīng)過量化處理后,在高空間頻率段,出現(xiàn)大量連續(xù)的零,這有利于以后通過編碼減小數(shù)據(jù)量。
(3) 對(duì)量化后的DCT系數(shù)進(jìn)行編碼使其熵達(dá)到最小。遙感圖像數(shù)據(jù)經(jīng)過DCT和量化之后,在高頻率段會(huì)出現(xiàn)大量連續(xù)的零,采用Huffman可變字長(zhǎng)編碼,可使冗余量達(dá)到最小。
譯碼或者叫做解壓縮的過程與壓縮編碼過程正好相反。根據(jù)上述JPEG數(shù)據(jù)壓縮解壓原理,在C編譯器和集成開發(fā)環(huán)境(Code Composer Studio,CCS)中開發(fā)實(shí)現(xiàn)了圖像壓縮解壓程序,便可應(yīng)用于無人機(jī)視頻數(shù)據(jù)的處理中。視頻數(shù)據(jù)壓縮處理程序的接口如下:
4、網(wǎng)絡(luò)傳輸協(xié)議及socket編程
根據(jù)OSI網(wǎng)絡(luò)標(biāo)準(zhǔn)定義,網(wǎng)絡(luò)由物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層7層組成。而在實(shí)際應(yīng)用中,網(wǎng)絡(luò)結(jié)構(gòu)可采用鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層4層模型。