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