資源描述:
《基于fpga的mjpeg圖像壓縮算法的設(shè)計與實(shí)現(xiàn)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、基于FPGA的MJPEG圖像壓縮算法的設(shè)計與實(shí)現(xiàn):在視頻傳輸系統(tǒng)中,最大障礙是視頻數(shù)據(jù)的大數(shù)據(jù)量。故壓縮就顯得尤為必要。MJPEG是以25幀每秒傳輸?shù)腏PEG圖像。本文根據(jù)JPEG基本壓縮模式,通過前端圖像采集芯片輸出標(biāo)準(zhǔn)的4:2:2格式的圖像流,在XILINX公司的SPARTANIIE芯片下壓縮,獲得良好效果,壓縮比達(dá)到10:1?! £P(guān)鍵字:圖像壓縮;視頻傳輸;JPEG 1緒論 MJPEG是指MotionJPEG,即動態(tài)JPEG,按照25幀/秒速度使用JPEG算法壓縮視頻信號,完成動態(tài)視頻
2、的壓縮。其圖像格式是對每一幀進(jìn)行壓縮,通??蛇_(dá)到6:1的壓縮率。MJPEG圖像流的單元就是一幀一幀的JPEG畫片,因?yàn)槊繋伎瑟?dú)立地任意存取,所以MJPEG常被用于視頻編輯系統(tǒng)和視頻監(jiān)控系統(tǒng)?! ”疚难芯炕赬ILINX的FPGA芯片XC2S300E,結(jié)合前端解碼芯片SAA7111和存儲器HY57V641620完成對攝像頭采來的圖像進(jìn)行動態(tài)JPEG壓縮編碼,在開發(fā)平臺ISE6.2中完成系統(tǒng)的控制,軟核的綜合,布局布線,芯片影射及仿真?! ?系統(tǒng)的硬件總體結(jié)構(gòu) 2.1系統(tǒng)總體功能說明 本系統(tǒng)硬件由
3、攝像頭,SAA7111視頻輸入處理器,F(xiàn)PGA,單片機(jī)及SDRAM構(gòu)成。系統(tǒng)上電后,單片機(jī)通過IIC總線配置解碼芯片SAA7111,使解碼芯片輸出CCIR601標(biāo)準(zhǔn)的圖像流,該標(biāo)準(zhǔn)的每幅圖像具有有效像素720*625,即每行有720個有效像素,共625有效行,分奇數(shù)行和偶數(shù)行進(jìn)行傳輸。FPGA(XC2S300E)先將圖像存儲在SDRAM中,SDRAM采用HY57V641620,該芯片分四塊,每塊具有1M單元*16bit的容量?! ?.2硬件平臺的控制 2.2.1對SAA7111的初始配置 SAA
4、7111是Philips半導(dǎo)體公司生產(chǎn)的一種視頻輸入處理器(VIP),在視頻采集系統(tǒng)中,通常需要諸如SAA7111之類的視頻解碼器作為模擬視頻前端,而視頻解碼器的初始化主要通過IIC總線接口來完成。本文提出了用虛擬總線技術(shù)來模擬實(shí)現(xiàn)IIC總線功能,利用單片機(jī)的普通I/O口模擬IIC總線接口設(shè)計,從而實(shí)現(xiàn)單片機(jī)對SAA7111的初始化與控制的新方法?! ?.2.2控制SDRAM的讀寫 在基于FPGA的圖象采集顯示系統(tǒng)中,常常需要用到大容量、高速度的存儲器。本設(shè)計采用HY57V641620,分為控制,
5、地址,數(shù)據(jù)三類信號??刂菩盘栔饕校篊S(片選信號),CKE(時鐘使能信號),DQM(輸入、輸出使能信號),CAS、RAS、控制。 3MJPEG圖像壓縮的各模塊設(shè)計 3.1DCT變換的描述 二維DCT變換是先經(jīng)過一維列DCT變換后經(jīng)過一維行DCT變換,在進(jìn)行了一維列DCT變換后,再進(jìn)行一維行變換,就涉及到了數(shù)據(jù)的重新抽樣,如一維列變換后,再進(jìn)行一組DCT行變換的數(shù)據(jù)順序是1,9,17,25,33,41,49,57;這樣就涉及到了多過去或是對未來數(shù)據(jù)的直接調(diào)用,為了避免這個在流水線上很難解決的問
6、題,采用乒乓操作,采用兩塊由FPGA芯片自帶的嵌入的BRAM,當(dāng)一塊進(jìn)行存儲的時候,另一塊就進(jìn)行讀取,進(jìn)行行DCT變換。當(dāng)存儲完或讀取完(二者所需時間一致)后再交換總線,即就將8*8塊中所有的像素值進(jìn)行一維DCT列變換后存儲起來,等所有數(shù)據(jù)都存儲完成后再進(jìn)行抽樣,進(jìn)行一維DCT行變換,為了便于流水線操作,如此就保證了流水線操作?! ?.2量化及Z排序的描述 整個系統(tǒng)功能塊都在DCT變換后準(zhǔn)備好信號Q_rdy_in的使能下進(jìn)行,在Q_rdy_in使能情況下,64計數(shù)器在時鐘的作用下計數(shù),計數(shù)值輸出作
7、為ROM的地址,其中ROM就是上述中提到的存有變換后系數(shù)的BRAM塊,根據(jù)地址,ROM輸出對應(yīng)的系數(shù)值。其中亮色標(biāo)志是用來標(biāo)注是采用亮度量化存儲器還是色度量化存儲器。輸入的像素取其絕對值,同系數(shù)進(jìn)行相乘,乘后再除以256,賦上符號,就得出最終的量化輸出結(jié)果?! ?.3游程編碼 整個功能過程采用一個64位計數(shù)器作為基準(zhǔn)進(jìn)行控制。當(dāng)64計數(shù)器為0時,輸出直流DC,因?yàn)镈C差分過程在前一模塊已經(jīng)完成,所以這里只需直接輸出即可。當(dāng)64計數(shù)器為63的時候,就對輸入的AC系數(shù)進(jìn)行判斷,若AC為0,則直接輸出0
8、,用來表示EOB,即塊結(jié)束標(biāo)志。當(dāng)64計數(shù)器不為0的時候,若AC系數(shù)為0,則零游程計數(shù)器加1,不輸出。若AC系數(shù)不為0,則輸出零游程計數(shù)器中的值,并輸出AC系數(shù)。同時使零游程計數(shù)器清零?! ?.4huffman編碼 對于DC系數(shù),查表得出表示尾碼位數(shù)的huffman碼字后,再將其與表示DC的二進(jìn)制碼相連,即得出差分DC的huffman編碼,同時將DC的huffman碼字的碼長進(jìn)行記錄AC的huffman編碼較復(fù)雜一些,取出AC的用于表示AC尾碼的有效位數(shù)SSSS后,