• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    JPEG 圖像解碼器在STM32上的應(yīng)用研究

    2013-08-27 08:33:26覃松李冰
    關(guān)鍵詞:解碼器解碼乘法

    覃松,李冰

    (廣西師范大學(xué)電子工程學(xué)院,桂林541004)

    引 言

    一幅圖像如果按照原始的數(shù)據(jù)存儲(chǔ)和顯示,必定會(huì)耗費(fèi)很大的設(shè)備內(nèi)存和很長(zhǎng)的時(shí)間。為了減少圖像在電子設(shè)備中所占的容量,需要對(duì)圖像進(jìn)行壓縮。JPEG 標(biāo)準(zhǔn)在保證圖像質(zhì)量的情況下具有高壓縮率、圖像占用容量小、解碼簡(jiǎn)單、代碼量小等特點(diǎn)。目前它主要應(yīng)用在DSP、FPGA、ARM9等高速處理器上,這些處理器成本都比較高。

    本文研究了一種在保證解碼速度和同等圖像質(zhì)量的情況下,采用更低成本的ARM 處理器STM32F103ZET6對(duì)圖像進(jìn)行解碼的方案。為了節(jié)省片內(nèi)存儲(chǔ)資源,利用SD卡存儲(chǔ)圖像,對(duì)圖像進(jìn)行分塊解碼,并且邊解碼邊在2.8寸TFT 屏幕顯示。

    1 總體設(shè)計(jì)方案

    硬件方面,由 4 個(gè)部分構(gòu)成:解碼芯片STM32F103ZET6、SD 卡電路、驅(qū)動(dòng)芯片HX8347控制的2.8寸TFT 顯示屏幕、鍵盤(pán)輸入控制電路。其設(shè)計(jì)框圖如圖1所示。軟件方面,主要由4個(gè)功能模塊構(gòu)成:SD 卡的驅(qū)動(dòng)及FatFS 文件系統(tǒng)程序、JPEG 解碼算法程序、TFT 屏幕的顯示驅(qū)動(dòng)程序、按鍵控制程序。

    系統(tǒng)工作過(guò)程:首先把JPEG 圖像存儲(chǔ)在高速SD 卡中,利用STM32F103ZET6自帶的SD卡接口,通過(guò)SD 卡模式讀取SD卡中的圖像;然后,利用JPEG 解碼算法解碼出格式為RGB565的數(shù)據(jù);最后,顯示在TFT 上。另外,用3個(gè)按鍵作為輸入,功能分別為復(fù)位、向后翻一張圖片和向前翻一張圖片。

    圖1 系統(tǒng)硬件方框圖

    1.1 硬件設(shè)計(jì)

    1.1.1 STM32F103VET6處理器簡(jiǎn)介

    STM32F103VET6是內(nèi)核為32位的Cortex-M3處理器,最高工作頻率為72 MHz,具有512KB的閃存程序存儲(chǔ)器和64 KB 的SRAM。內(nèi)核具有突出的中斷處理能力,其實(shí)時(shí)性高,系統(tǒng)存儲(chǔ)要求低,并且功耗和成本很低,所以具有廣泛的應(yīng)用領(lǐng)域。

    1.1.2 SD卡的硬件電路工作模式選擇

    STM32F103ZET6驅(qū)動(dòng)SD 卡,具有兩種工作模式:SPI模式和SD卡模式。本文采用SD卡模式,它用4根數(shù)據(jù)線,因此比僅用2 根數(shù)據(jù)線的SPI模式讀寫(xiě)速度快了一倍。

    1.1.3 TFT硬件電路設(shè)計(jì)

    本文把TFT 當(dāng)作外部存儲(chǔ)器來(lái)使用,對(duì)驅(qū)動(dòng)芯片HX8347的讀寫(xiě)和控制信號(hào)進(jìn)行編程,只需指定指針就可以實(shí)現(xiàn)對(duì)TFT 的讀寫(xiě)。這樣既簡(jiǎn)化了對(duì)TFT 的編程,而且又提高了訪問(wèn)速度,避免了用I/O 口模擬時(shí)序訪問(wèn)TFT 產(chǎn)生的“拖影”。

    2 JPEG解碼器原理簡(jiǎn)介

    解碼框圖如圖2所示。首先,從SD 卡中讀取圖像的信息頭,它包含圖像識(shí)別碼、Huffman表,量化表,圖像的高、寬,采樣因子等解碼需要的信息。其次,對(duì)圖像數(shù)據(jù)進(jìn)行Huffman解碼、反量化、反離散余弦變換(IDCT)、轉(zhuǎn)換圖像數(shù)據(jù)。最后,進(jìn)行圖像顯示。

    圖2 解碼框圖

    JPEG 圖像是按照很多數(shù)據(jù)塊(MCU)進(jìn)行存儲(chǔ),每一塊分為8×8 像素。數(shù)據(jù)塊和像素點(diǎn)都是按照從左到右、從上到下的順序存儲(chǔ)數(shù)據(jù)。JPEG 利用Huffman亮度表和色度表分別對(duì)圖像亮度和色度進(jìn)行解碼。值得注意的是,解碼出的直流系數(shù)DC是校正值,而不是真正的DC值,需要加上后一個(gè)MCU 解碼出來(lái)的DC值;AC值解碼出來(lái)就是AC值。用亮度和色度量化矩陣對(duì)它們進(jìn)行反量化,公式如下:

    其中,C(x,y)是Huffman解碼出來(lái)的矩陣,Q(x,y)是量化矩陣。

    在量化后8×8的矩陣中,數(shù)據(jù)是按照“之”形進(jìn)行排列,所以,需要進(jìn)行反Zig-zag變換。根據(jù)編碼,對(duì)圖像數(shù)據(jù)正向離散余弦變換。解碼就用IDCT 進(jìn)行反變換,即從頻域向時(shí)域變換。反向離散余弦變換公式為:

    需要注意RGB轉(zhuǎn)換結(jié)果,此TFT 支持RGB值的范圍是(0,255),轉(zhuǎn)換的結(jié)果如果不在這個(gè)范圍內(nèi),小于0就設(shè)置為0,大于255就設(shè)置為255。

    3 簡(jiǎn)化IDCT公式

    IDCT 公式有兩個(gè)0到7累加和計(jì)算,這樣要獲得一個(gè)IDCT 系數(shù),需要做64次乘法和64次加法,而完成整個(gè)8×8像素的IDCT 需要4 096次乘法和4 096次加法,計(jì)算量非常大。對(duì)于STM32F103ZET6處理器來(lái)說(shuō),將產(chǎn)生極大的運(yùn)算量,極大地占用CPU 的資源。為此,可以簡(jiǎn)化為兩個(gè)一維的公式:

    經(jīng)過(guò)公式的簡(jiǎn)化,分別計(jì)算行和列的IDCT 變換。對(duì)于一行來(lái)說(shuō)需要計(jì)算的是64次乘法和64次加法,8行就是512次乘法和512次加法;列同行計(jì)算一樣,結(jié)果總運(yùn)算量為1024次乘法和1024次加法,相對(duì)于二維運(yùn)算量減少了3/4。

    4 STM32F103ZET6解碼流程分析

    利用STM32F103ZET6平臺(tái)解碼一幅JPEG 圖像的流程圖如圖3所示。程序代碼在ST 公司自帶的庫(kù)文件上編寫(xiě)。初始化階段,先配置好STM32F103ZET6內(nèi)部時(shí)鐘、中斷處理和FSMC、按鍵、SD 卡、TFT 等外設(shè)接口,再初始化FatFS文件系統(tǒng)、TFT 屏幕。初始化成功之后,讀取JPEG 圖像文件的信息頭,讀完段標(biāo)記SOS后是圖像數(shù)據(jù),每次讀取一個(gè)MCU(即64個(gè)數(shù)據(jù))塊,對(duì)它進(jìn)行Huffman解碼、反量化、反Zig-zag編碼、IDCT 變換、YUV 到RGB的顏色轉(zhuǎn)換和顯示,直到結(jié)束。

    5 解碼結(jié)果分析

    將像素為320×240,位深度為24 位,大小為40 KB左右的JPEG 圖像進(jìn)行解碼。在Keil4軟件里測(cè)試,公式簡(jiǎn)化后平均每一幅圖像的解碼時(shí)間大約是0.25s,比簡(jiǎn)化前提高了大約1.25s。速度比較快的主要原因是二維IDCT 公式的簡(jiǎn)化,減少了STM32F103ZET6 的計(jì)算量,讀取SD 卡用SD 卡模式而不是SPI 模式,同時(shí)利用FSMC接口電路連接TFT 屏幕。經(jīng)過(guò)研究對(duì)比,在算法和圖像質(zhì)量一樣的前提下,用TMS320DM2375的DSP雙核處理器和ARM7進(jìn)行解碼,速度分別是0.03s和2.4s,STM32F103ZET6比ARM7 處理器快了大約2.15s,比TMS320DM2375慢了0.22s。雖然比TMS320DM-2375慢了0.22s,但是不會(huì)有太大的影響。而ARM7解碼速度太 慢,并 不 利 于 嵌 入 式 的 應(yīng) 用。另 外,STM32F103ZET6還有一個(gè)很大的優(yōu)點(diǎn)就是其官方提供了庫(kù)函數(shù),使其軟件開(kāi)發(fā)周期遠(yuǎn)遠(yuǎn)小于DSP。STM32-F103ZET6解碼前和解碼后的圖像如圖4和圖5所示。

    圖3 解碼流程圖

    圖4 解碼前圖像

    圖5 解碼后圖像

    結(jié) 語(yǔ)

    本文完成了JPEG 標(biāo)準(zhǔn)在STM32F103ZET6上解碼的設(shè)計(jì)方案,實(shí)現(xiàn)了邊讀取SD卡中的圖像數(shù)據(jù)邊在TFT上的顯示,這種方法減少了內(nèi)存容量。解碼器占用的RAM 僅3KB,ROM 為4.5~9.5KB。軟件設(shè)計(jì)時(shí),對(duì)解碼器進(jìn)行封裝,只留一個(gè)接口函數(shù),因此具有很強(qiáng)的移植性;并且進(jìn)行了二維ICDT 公式的簡(jiǎn)化和代碼的優(yōu)化。雖然51、LPC、AVR單片機(jī)成本比STM32F103ZET6稍微低點(diǎn),但是解碼的速度很慢。DSP、ARM9、FPGA 等雖然解碼很快,但在電子廣告、數(shù)碼播放器、電子玩具、車(chē)載導(dǎo)航系統(tǒng)等對(duì)解碼圖像要求不高的嵌入式產(chǎn)品上使用就顯得成本較高。此外,ST 公司已經(jīng)推出了價(jià)格與STM32F103系列相當(dāng)?shù)腟TM32F4 系列,專(zhuān)門(mén)處理視頻圖像的處理器,勢(shì)必大大提高視頻圖像的解碼速度。綜合以上考慮,以STM32F103ZET6作為新一代的解碼設(shè)備具有較高的研究及應(yīng)用價(jià)值。

    [1]陰國(guó)富,李云飛.基于JPEG 標(biāo)準(zhǔn)的靜止圖像壓縮[J].科學(xué)技術(shù)與工程,2008,8(11):3001-3003.

    [2]張強(qiáng),雷躍明,周先發(fā),等.嵌入式系統(tǒng)JPEG 圖像解碼器設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2007(9):1001-9081.

    [3]吳嘉慧.JPEG圖像解碼方案[J].現(xiàn)代計(jì)算機(jī),2007(3):49-53.

    [4]蒙智明,屈百達(dá).基于TMS320DM275 嵌入式系統(tǒng)的JPEG解碼實(shí)現(xiàn)[C]//2007 中國(guó)控制與決策學(xué)術(shù)年會(huì)論文集,無(wú)錫,2007:1115-1118.

    [5]廖小情,陳小平.JPEG 軟件解碼及其在ARM7 上的實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2011,30(9):39-45.

    [6]劉斌,姜弢,熊維波.基于ZEVIO1020 的JPEG 解碼設(shè)計(jì)與實(shí)現(xiàn)[J].應(yīng)用科技,2008,35(11):15-18.

    [7]杜小偉,謝桂泉,周展懷,等.基于ATmega128 的LED 屏圖像數(shù)據(jù)解碼設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009(2):192-194.

    [8]Kun Binlee,Chi Chengju,MediaTek.A Memory-Efficient Progressive JPEG Decoder[C]//VLSI Design,Automation and Test,Taiwan,2007:1-4.

    [9]Yoshihiro Noguchit,Hiroyuki Kobayashi,Hitoshi Kiyatt.A Method of Extracting Embedded Binary Data From JPEG Bitstreams Using Standard JPEG DECODER[C]//Image Processing,Japan,2000:577-580.

    猜你喜歡
    解碼器解碼乘法
    算乘法
    《解碼萬(wàn)噸站》
    科學(xué)解碼器(一)
    我們一起來(lái)學(xué)習(xí)“乘法的初步認(rèn)識(shí)”
    科學(xué)解碼器(二)
    科學(xué)解碼器(三)
    《整式的乘法與因式分解》鞏固練習(xí)
    線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍(lán)蜻蜓解碼器
    解碼eUCP2.0
    把加法變成乘法
    本溪| 于田县| 博湖县| 桦南县| 汤阴县| 治县。| 思茅市| 灵山县| 高陵县| 南投市| 互助| 民乐县| 邢台市| 简阳市| 蓬安县| 驻马店市| 岳阳市| 平远县| 卢氏县| 舞钢市| 耒阳市| 花莲县| 德阳市| 金乡县| 仙游县| 海兴县| 洛南县| 黄梅县| 连云港市| 黔南| 彭泽县| 旅游| 湄潭县| 兰考县| 广德县| 娄底市| 临安市| 石狮市| 高邑县| 高雄县| 临洮县|