JPEG實(shí)時編解碼系統(tǒng)的設(shè)計方案,軟硬件實(shí)現(xiàn)
設(shè)計概述
本設(shè)計背景及意圖:
隨著寬帶Internet以及數(shù)字多媒體技術(shù)的飛速發(fā)展,以Internet為傳輸媒介的視頻會議、可視電話、遠(yuǎn)程視頻監(jiān)控、遠(yuǎn)程醫(yī)療系統(tǒng)以及數(shù)字流媒體等新的視頻應(yīng)用層出不窮。這些應(yīng)用都需要對大量的圖像進(jìn)行網(wǎng)絡(luò)傳輸。而由于圖像的信息量巨大,給存儲器的存儲容量、通信干線信道的帶寬,以及計算機(jī)的處理速度增加極大的壓力,單純靠增加存儲器容量,提高信道帶寬以及計算機(jī)的處理速度等方法來解決這個問題都是不現(xiàn)實(shí)的,必須對圖像進(jìn)行壓縮,去掉圖像信息中的冗余,減少網(wǎng)絡(luò)傳輸?shù)男畔⒘俊?/p>
JPEG是國際標(biāo)準(zhǔn)化組織(ISO)和CCITT聯(lián)合制定的靜態(tài)圖像的壓縮編碼標(biāo)準(zhǔn),它是目前靜態(tài)圖像中壓縮比最高的,正是由于JPEG的高壓縮比,使得它在數(shù)據(jù)量極大的多媒體以及帶寬資源寶貴的網(wǎng)絡(luò)程序中有著非常廣泛的應(yīng)用。
當(dāng)JPEG編解碼的速度提高到一定程度,就能夠?qū)討B(tài)圖像進(jìn)行編碼,這種JPEG壓縮編碼稱為M-JPEG(Motion-JPEG)。M-JPEG一個很大的特點(diǎn)就是圖像處理等待時間較少,適合于在例如視頻移動偵測或物體追蹤環(huán)境下進(jìn)行圖像處理。M-JPEG可提供所有實(shí)際使用的圖像分辨率,從用于移動電話的QVGA分辨率,到4CIF的全視頻顯示尺寸,甚至是更高的百萬像素分辨率。系統(tǒng)無論在移動或復(fù)雜環(huán)境情況下都能保證視頻質(zhì)量,并提供高圖像質(zhì)量(低壓縮)和低圖像質(zhì)量(高壓縮)的靈活選擇,同時能真正保證圖像處理的實(shí)時性。
本設(shè)計適用范圍及用戶:
首先,JPEG應(yīng)用的領(lǐng)域包括互聯(lián)網(wǎng)、彩色傳真、打印、掃描、數(shù)字?jǐn)z像、遙感、移動通信、醫(yī)療圖像和電子商務(wù)等等,于此同時,JPEG在數(shù)碼相機(jī)、PDA、手機(jī)等手持設(shè)備和嵌入式設(shè)備中的使用也正方興未艾。
其次,當(dāng)能實(shí)現(xiàn)實(shí)時處理JPEG編解碼時(M-JPEG),又可將其用于以Internet為傳輸媒介的視頻會議、可視電話、遠(yuǎn)程視頻監(jiān)控、遠(yuǎn)程醫(yī)療系統(tǒng)以及數(shù)字流媒體等新的視頻領(lǐng)域。
最后,本設(shè)計實(shí)現(xiàn)的是JPEG實(shí)時編解碼系統(tǒng),因而可用于實(shí)時圖像的傳輸和處理,諸如上面提到的遠(yuǎn)程監(jiān)控、可視電話等,往大點(diǎn)說,可將此系統(tǒng)用于重要場所的監(jiān)控系統(tǒng)中,公司部門之間的視頻會議系統(tǒng)中等需要實(shí)時傳輸圖像的一些系統(tǒng)中。
功能概述
本設(shè)計的功能:
本設(shè)計主要有兩大部分組成:第一部分為圖像編碼服務(wù)器端,第二部分為圖像解碼客戶端。對于圖像編碼服務(wù)器端可分為:圖像采集模塊、JPEG編碼模塊、網(wǎng)絡(luò)(Internet)傳輸數(shù)據(jù)模塊(包括壓縮碼流和控制指令傳輸及接收);對于圖像解碼客戶端可分為:JPEG解碼模塊、VGA顯示模塊。在軟硬件結(jié)合控制下,實(shí)現(xiàn)服務(wù)器端進(jìn)行圖像的采集,通過Internet傳輸碼流,客戶端實(shí)時顯示圖像這一功能(當(dāng)處理速度一定程度時,可以視為實(shí)時、同步)。整個組成部分或單元在Spartan®-6平臺外加一定的外設(shè)上(例如攝像頭,AD轉(zhuǎn)換和DA轉(zhuǎn)換,VGA顯示或者說顯示器等)實(shí)現(xiàn)了JPEG實(shí)時編解碼系統(tǒng)這一設(shè)計理念。
設(shè)計結(jié)構(gòu)
整體設(shè)計構(gòu)思:
如圖1,系統(tǒng)主要分為兩大部分組成:圖像編碼服務(wù)器端和圖像解碼客戶端,并且服務(wù)器端可以規(guī)定連接的客戶端數(shù)目。
圖1 總體硬件圖示
其中,圖像編碼服務(wù)器端又包括圖像的實(shí)時采集、JPEG編碼、網(wǎng)絡(luò)傳輸數(shù)據(jù)(傳送至圖像解碼客戶端);圖像解碼客戶端包括JPEG解碼(當(dāng)然,前提是接收數(shù)據(jù)后)、VGA顯示圖像;當(dāng)然,客戶端可以不只一個,可以再服務(wù)器端配置客戶端的個數(shù),本設(shè)計只用一個客戶端進(jìn)行說明。
則具體硬件設(shè)計圖可如圖2:
圖2 詳細(xì)硬件模塊圖
工作原理
1、圖像編碼服務(wù)器端:
系統(tǒng)上電后,NiosII對它控制下的圖像實(shí)時采集模塊,JPEG編碼模塊以及網(wǎng)絡(luò)傳輸模塊進(jìn)行配置,包括采集來的原始圖像存儲的首地址,圖像處理緩存去首地址和壓縮后圖像存儲首地址等等,然后網(wǎng)絡(luò)模塊檢測有沒有客戶端的請求連接,若有,CPU產(chǎn)生線程,建立與客戶端的連接,并通知圖像采集模塊,當(dāng)圖像采集模塊采集完一幀后,向CPU發(fā)送中斷,通知對原始圖像進(jìn)行編碼,一幀圖像編碼完畢后,JPEG壓縮模塊向CPU發(fā)送中斷,通知網(wǎng)絡(luò)傳傳輸碼流模塊傳送碼流至客戶端。具體流程圖如下:
圖3 圖像編碼服務(wù)器端工作流程
2、圖像解碼客戶端:
客戶端與服務(wù)器端成對稱關(guān)系。當(dāng)CPU完成一系列配置后,向服務(wù)器發(fā)送連接請求,如被接受,客戶端接收服務(wù)器端的壓縮碼流,一幀數(shù)據(jù)接收完畢后,發(fā)送中斷;解碼模塊接收到CPU發(fā)送的信號,開始解碼,解碼一幀完畢后,向CPU發(fā)送中斷,顯示模塊接收到一幀恢復(fù)后的數(shù)據(jù)后開始顯示,顯示完一幀,檢測解碼模塊是否有新的圖像,如有,則顯示下一幀圖像,反之,繼續(xù)顯示當(dāng)前圖像(不進(jìn)行更新)。具體流程如下:
圖3 圖像解碼客戶端工作流程
3、JPEG編碼控制軟件流程
編碼控制軟件流程圖
4、JPEG解碼控制軟件流程
解碼控制軟件流程圖
設(shè)計方法
一:圖像采集模塊
利用攝像頭和Analog Device公司的ADV7181模數(shù)轉(zhuǎn)換芯片實(shí)現(xiàn)采集模塊(當(dāng)然,也可以從DVD等類似設(shè)備獲得圖像),經(jīng)過AD轉(zhuǎn)換實(shí)現(xiàn)RGB轉(zhuǎn)YCbCr(此時要考慮采樣率),完成模擬信號到數(shù)字信號轉(zhuǎn)換。當(dāng)然,此模塊實(shí)現(xiàn)起來可能并非像說的那么簡單。大致流程如下:
圖5 圖像采集模塊流程
二:JPEG編碼部分
流程如下:
圖6 JPEG編碼流程圖
1、將圖像分成8*8數(shù)據(jù)塊(其實(shí)是數(shù)字信號數(shù)組,即YCbCr(由RGB按照兩者之間關(guān)系轉(zhuǎn)換過來)組成的數(shù)組,其中YCbCr比例不同),DCT變換采用8*8變換公式;
2、進(jìn)行DCT變換(此步驟是設(shè)計中最耗硬件資源的,故而也最影響速度),DCT變換算法已經(jīng)比較成熟,可以有很多文獻(xiàn)供參考,若本人有幸可以參賽,本設(shè)計將打算采用兩次的一維DCT變換來實(shí)現(xiàn)二維的DCT變換(要實(shí)現(xiàn)實(shí)時編碼,此部分可能還需改進(jìn)),具體如下:
公式 1 DCT變換公式
公式1也可以寫成矩陣運(yùn)算形式F = CfCT其中,C為帶余弦基本函數(shù)的變換系數(shù)矩陣,CT為C 的轉(zhuǎn)置,則DCT變換公式可以分解成串聯(lián)的兩次一維變換,如下:
公式2
公式3
即寫成矩陣形式為:F=CY,Y=fCT,這里,Y為中間乘積矩陣(Y的列等于f行的一維DCT 輸出) 。因此,在做二維DCT變換時,可以應(yīng)用一維DCT 變換來計算,即先沿f的行進(jìn)行一維DCT 計算獲得Y,再沿著Y的轉(zhuǎn)置的行進(jìn)行一維DCT運(yùn)算。這其中就包含一個轉(zhuǎn)置存儲器。這樣的算法結(jié)構(gòu)如圖
圖 7 2D-DCT算法結(jié)構(gòu)
3、進(jìn)行量化,量化有對應(yīng)的量化表(色度和亮度的量化表不同),將DCT變換的結(jié)果與對應(yīng)量化表中的數(shù)相除(可以采用乘法代替除法的方式,這樣節(jié)省硬件資源);
4、之字形輸出,即將量化后的數(shù)據(jù)按之字形輸出即可(直流分量在最前,之后是交流分量),經(jīng)過此步驟后,低頻分量數(shù)據(jù)靠前排列,高頻分量數(shù)據(jù)靠后排列;
5、Huffman編碼,此部分有對應(yīng)的色度和亮度編碼表。此部分也可以根據(jù)數(shù)值出現(xiàn)的可能性大小來提高編碼速度。
此部分采用Xilinx公司FPGA芯片實(shí)現(xiàn),即開發(fā)板主芯片。
三:JPEG解碼部分
即為JPEG編碼的逆過程,有對應(yīng)的逆DCT變換公式,若編碼部分能夠很好的實(shí)現(xiàn),此部分將不是什么難題,在此就不做介紹。
此部分采用Xilinx公司FPGA芯片實(shí)現(xiàn),即開發(fā)板主芯片。
四:VGA顯示模塊
將JPEG解碼后的數(shù)據(jù)進(jìn)行DA轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)傳送至VGA顯示,大致流程如下:
圖 8 VGA顯示模塊示意
五:網(wǎng)絡(luò)傳輸數(shù)據(jù)模塊
采用DAVICOM的DM9000進(jìn)行網(wǎng)絡(luò)通信,根據(jù)DM9000硬件結(jié)構(gòu),編寫好驅(qū)動程序,并且轉(zhuǎn)換成用戶自定義模塊。
設(shè)計特點(diǎn)
本設(shè)計的特點(diǎn)在于提出一種基于Spartan®-6平臺實(shí)現(xiàn)JPEG實(shí)時編解碼系統(tǒng)的方案,該方案利用FPGA并行處理的特點(diǎn),同時結(jié)合JPEG編解碼算法本身的特點(diǎn),再加上Xilinx公司Spartan®-6平臺和自備一些外設(shè)這些資源,最后在FPGA上應(yīng)用Xilinx公司的開發(fā)板實(shí)現(xiàn)整個系統(tǒng)。本設(shè)計完成了圖像采集、JPEG編碼、網(wǎng)絡(luò)數(shù)據(jù)傳輸、JPEG解碼和VGA顯示的功能,達(dá)到了實(shí)現(xiàn)JPEG實(shí)時編解碼的功能。當(dāng)然,條件和時間允許的話還可以對該系統(tǒng)做進(jìn)一步的開發(fā),做成嵌入式無線數(shù)據(jù)傳輸系統(tǒng);也可以進(jìn)一步研究JPEG編解碼算法,此外,可以將Linux等嵌入式系統(tǒng)移植到本硬件平臺上來,為更高級的應(yīng)用提供有效的支持。因此,它具有靈活性、實(shí)用性和可擴(kuò)展性等特點(diǎn),具有一定的市場前景。
總而言之,本設(shè)計比較充分的利用了Spartan®-6平臺的資源,完成了JPEG實(shí)時編解碼系統(tǒng)目的,可以應(yīng)用在視頻監(jiān)控、可視電話、視頻會議等一些需要傳輸圖像的系統(tǒng)中。因?yàn)閭鬏數(shù)氖荍PEG圖像數(shù)據(jù),較之其它格式的圖像數(shù)據(jù),在數(shù)據(jù)量上要少很多,因而可以通過網(wǎng)絡(luò)的形式快速傳輸,達(dá)到實(shí)時的目的。
評論