1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現在位置:范文先生網>理工論文>電子通信論文>利用TMS320C6201芯片進行圖像壓縮

    利用TMS320C6201芯片進行圖像壓縮

    時間:2023-02-21 00:05:21 電子通信論文 我要投稿
    • 相關推薦

    利用TMS320C6201芯片進行圖像壓縮

    摘要:介紹了利用TMS320C6201 DSP芯片進行實時圖像壓縮的軟件設計。結合該芯片的編程特點介紹了壓縮算法,并給出了部分關鍵程序,具有一定的參考價值。

        關鍵詞:圖像壓縮 C6201 FDCT變換 霍夫曼編碼

    圖像中含有豐富的信息,在現代科技中將圖像作為一種探測手段,正受到越來越廣泛的青睞。有很多探測設備,采用掃描成像儀器作為前端探測器。作為一種很常見的情況,成像儀器采集到的圖像要通過無線信道進行發送。但是,圖像數據通常都是海量數據,無線信道的傳輸帶寬無法滿足要求,必須對圖像進行壓縮處理,才能通過無線信道進行傳輸。
    (范文先生網www.baimashangsha.com收集整理)
        實現圖像實時無線傳輸必須研制專門的圖像壓縮,該壓縮器須滿足如下要求:(1)圖像實時壓縮?鴉(2)能夠較好地保存圖像質量。筆者以TI公司的高速DSP芯片TMS320C6201為核心的數字信號處理板作為圖像壓縮器的硬件平臺,通過自行開發的壓縮程序,實現了圖像的實時壓縮。

    1 數字信號處理板的硬件功能框圖

    數字信號處理板的硬件功能框圖如圖1所示。TMS320C6201是一種高性能的定點數字信號處理器。工作頻率為200MHz時,每個指令周期為5ns,運算速度可達1600MIPS;具有VLIW(甚長指令集)體系結構,每周期8個32bit的指令并行執行;8個獨立的功能單元,有兩個16bit乘法器和6個算術邏輯單元;采用加載存儲體系結構,數據在多處理單元之間的傳輸依靠32個32bit的通用寄存器。C6000的存儲器尋址空間為32bit,片內有1Mbit的SRAM。片內RAM被分為兩塊:一是內部程序/cache存儲器,二是內部數據存儲器。32bit外部存儲器接口(EMIF)可與不同存儲器接口,可方便地配置不同速度、不同容量、不同復雜程度的存儲器。此外,C6000還有兩通道Boot-loading DMA處理器、16bit的主機接口HPI、兩個多通道緩沖串口(McBSP),并且其片內鎖相環(PLL)時鐘發生器,可以對輸入時鐘進行不同的倍頻處理。這種芯片用來處理圖像壓縮這種運算密集型的工作是非常合適的。功能框圖的其它部分不再做介紹。

    圖3 圖像壓縮器的工作過程方框圖

    2 圖像壓縮算法

    圖像壓縮中的圖像有彩色和灰度之分。考慮到彩色圖像和灰度圖像的壓縮類似,且大多數的掃描成象設備掃的是灰度圖像,所以僅以灰度圖像的壓縮為例介紹DSP上的圖像壓縮。圖像壓縮算法原理圖如圖2所示。

    圖中,首先將原始灰度圖像分為8×8的圖塊,然后對每一圖像塊進行FDCT變換,再將變換得到的DCT系數使用量化表進行量化。量化后可得到如下形式的數據:

    (x)是不為零的數據)

    x  x  x  x  0  0  0  0

    x  x  x  0  0  0  0  0

    x  x  0  0  0  0  0  0

    x  0  0  0  0  0  0  0

    0  0  0  0  0  0  0  0

    0  0  0  0  0  0  0  0

    0  0  0  0  0  0  0  0

    0  0  0  0  0  0  0  0

    該數據在存儲器中存放的順序如下:

    z[0]   z[1]   z[2]   z[3]   z[4]   x[5]   z[6]   z[7]

    z[8]   z[9]   z[10]  z[11]  z[12]

      z[13]  z[14]  z[15]

    z[16]  z[17]  z[18]  z[19]  z[10]  z[21]  z[22]  z[23]

    z[24]  z[25]  z[26]  z[27]  z[28]  z[29]  z[30]  z[31]

    z[32]  z[33]  z[34]  z[35]  z[36]  z[37]  z[38]  z[39]

    z[40]  z[41]  z[42]  z[43]  z[44]  z[45]  z[46]  z[47]

    z[48]  z[49]  z[50]  z[51]  z[52]  z[53]  z[54]  z[55]

    z[56]  z[57]  z[58]  z[59]  z[60]  z[61]  z[62]  z[63]

    在存儲器中,非零數據和零數據交替存放,不便于壓縮,所以要對數據進行重排列,數據的重排列形式如下:

    z[0]   z[1]   z[5]   z[6]   z[14]   z[15]   z[27]   z[28]

    z[2]   z[4]   z[7]   z[13]  z[16]   z[26]   z[29]   z[42]

    z[3]   z[8]   z[12]  z[17]  z[25]   z[30]   z[41]   z[43]

    z[9]   z[11]  z[18]  z[24]  z[31]   z[40]   z[44]   z[53]

    z[10]  z[19]  z[23]  z[32]  x[39]   z[45]   z[52]   z[54]

    z[20]  z[22]  z[33]  z[38]  z[46]   z[51]   z[55]   z[60]

    z[21]  z[34]  z[37]  z[47]  z[50]   z[56]   z[59]   z[61]

    z[35]  z[36]  z[48]  z[49]  z[57]   z[58]   z[62]   z[63]

    變換完成后再根據編碼表對DC系數和AC系數分別進行編碼,就完成了圖像的壓縮。

    圖4 量化表

    3 利用DSP芯片進行圖像壓縮

    3.1 圖像壓縮器的工作過程

    圖像壓縮器工作過程方框圖如圖3所示。

    圖像數據通過I/O接口送入數字信號處理板,由DSP芯片中的DMA控制器負責將數據放入輸入緩沖區中,DSP對緩沖的圖像數據進行壓縮后,通過HPI接口將壓縮數據送出。

    3.2 編程介紹

    這里主要介紹壓縮參數初始化和壓縮程序。

    3.2.1 壓縮參數初始化

    由圖2所示的圖像壓縮算法可知,圖像壓縮過程中需要量化表和編碼表,量化表如圖4(a)所示。

        量化操作就是把8×8圖塊進行FDCT變換,將變換后的的DCT系數用量化表元素來除。由于DSP中有硬件乘法器和移位指令,為了充分提高程序的執行

    速度,應該將除法運算轉化為乘法運算和移位運算,對上面的量化表元素逐個求倒數并用16進制表示,如圖4(b)所示。

    編碼表有兩個,一個是直流差值編碼表,另一個是交流系數編碼表,如圖5所示。

    編碼表中的最左端的一列代表中間碼字,具體編碼時要根據8x8圖塊的DCT系數產生中間碼字,再由中間碼字查編碼表,將中間碼字轉換為霍夫曼碼,完成編碼。在DSP程序初始化階段要生成量化表和編碼表,量化表可直接將圖4(b)所示的量化表元素代入來得到,編碼表就要按照霍夫曼碼的編碼方法生成霍夫曼碼來得到。由于在壓縮過程中要頻繁地查找編碼表,因此,編碼表的組織形式對程序的執行效率影響很大。

    3.2.2 壓縮程序

    圖像壓縮包括FDCT變換、標量量化、Zigzag掃描和編碼等幾個步驟,下面分別介紹。

    3.2.2.1FDCT變換

    DCT變換公式如下:

    式中,Cu,Cv=

    具體壓縮的時候要采用DCT變換的快速算法來加快程序的運行速度,將二維的DCT變換分解為兩個一維的DCT變換,可以有效地降低計算量。CCS2.0(Code Composer Studio)中提供了一個成熟的C語言函數庫,里面包含了進行FDCT變換的函數。函數原型如下:

    void fdct_8×8(short *dct_data, unsigned num_fdcts);

    函數中dct_data指針指向待變換的圖像數據,num_fdcts是進行DCT變換的圖像塊的數目。該函數可以對一大塊連續存放的圖像塊進行DCT變換,特別針對TMS320C6201 DSP芯片的特點進行了優化。考慮到存儲器的等待時間和指令的并行等問題,執行效率非常高,具體的程序開銷可以通過如下公式計算:

    時鐘周期數=48+160*num_fdcts;

    要在自己的工程中使用這個函數,必須把img62x.lib函數庫添加到工程中,并且在主程序文件中包含fdct_8×8.h頭文件。

    3.2.2.2 標量量化

    所謂標量量化就是對8×8圖像塊的DCT變換系數使用量化表逐個相除并四舍五入。CCS2.0提供了一個量化函數,其原型如下:

    void quantize

    (

    short *data, /* Data to be quantized. */

    int num_blks, /*Number of 64-element blocks.?*/

    int blk_size, /*Block size (multiple of 8). */

    const short *recip_tbl, /*Quant. values (reciprocals). */

    int q_pt /*Q-point of Quant values.*/

    );

    將圖4(b)所示的量化表元素代入程序,blk_size為64,q_pt為16,data指向量化數據,即可進行快速的量化。該程序同樣經過了優化,具體的程序開銷可按如下公式計算:

    時鐘周期數= 25+(blk_size/16)*4+num_blks*12)

    該函數同樣包含在img62x.lib庫中,

    程序中應包含quantize.h頭文件。

    3.2.2.3 ZigZag掃描

    ZigZag掃描就是對數據進行重排列。該部分功能簡單、運算量也不大,但是對存儲器的訪問非常頻繁,而且影響處理器執行速度的主要是對存儲器的訪問速度。一般情況下,CPU訪問內部存儲器需要4個時鐘周期,訪問外部存儲器的速度要比內部存儲器的速度慢得多,具體情況應根據實際使用的外部存儲器的類型而定。由于TMS3206201 DSP芯片每秒鐘最多可以執行8條指令,如果讓DSP芯片經常處于等待狀態是非常大的浪費。解決該問題的最有效的辦法是充分利用數據總線的寬度并讓軟件進行流水線執行。TMS320C6201的數據總線寬度是32位,一般情況下DCT系數使用一個短整型數,只有16位寬度,如果每次同時從存儲器中讀寫兩個數,則可以減少一半訪問存儲器的次數。由于TMS320C6201有8個功能單元,CPU可以在處理當前數據的同時去存儲器取下一個數據。通過流水線,CPU可以做到每周期訪問一次存儲器,這樣可以使程序的執行效率大大提高。一般情況下軟件的流水線安排是由編譯優化系統完成的,程序員所要做的是讓自己的程序符合流水線執行的要求,并且讓優化后的流水線周期盡量短。流水線的要求主要有以下幾點:

    (1)程序所使用的寄存器數目不能超過32個;

    (2)程序所使用的條件寄存器數目不能超過5個;

    (3)程序中不能含有分支語句,可能的話盡量使用條件指令;

    (4)一個寄存器中的變量值不能存放太長時間,實在不行就換個寄存器存放;

    (5)程序所使用的CPU左右兩邊的資源盡量平衡,一般情況下,平衡的資源使用換來的是比較短的流水線周期;

    (6)程序中包含的指令不能太多。

    對于用線性匯編語言編寫的程序,應該在程序編寫時注意這些問題。對一個用C語言編寫的程序,可以通過觀察編譯系統產生的優化后的匯編語言文件來獲得相關的信息。具體程序略。

    3.2.2.4 編碼

    編碼部分主要是對量化后的DCT系數進行處理,主要利用了相鄰圖像塊之間的相關性、量化后的DCT系數矩陣的連零特性和霍夫曼編碼應進行壓縮編碼。該部分主要涉及了查表、移位運算和存儲器讀寫。DC差值/AC系數等級表如圖6所示。

        DC系數的編碼流程圖如圖7所示。

    AC系數的編碼流程圖如圖8所示。

    其中,ZZ(K)編碼是對不為零的AC DCT系數進行編碼,編碼方法可參考DC差值編碼。

    由于在AC編碼過程當中分支語句比較多,為了程序的流水線執行,同時為了指令的并行性,大量地使用了條件指令。但是應該注意,在TMS320C6201中只有A1、A2、B0、B1、B2五個條件寄存器,不可能滿足所有的需要,因此一定要盡量簡化程序。在實際使用中,使用該壓縮器壓縮一幅512×512的灰度圖像需要的時間不到55ms,配合適當的數據接口可滿足對數據率為32Mbit/s的掃描圖像進行實時壓縮。


    【利用TMS320C6201芯片進行圖像壓縮】相關文章:

    噪聲圖像的分形壓縮編碼研究08-06

    智能大廈視頻圖像數字壓縮系統設計08-06

    PCI總線和DSP芯片的圖像處理平臺的硬件設計08-06

    利用文中插圖,進行導語設計08-08

    利用DVI實現雙屏幕超寬圖像顯示08-06

    利用ISA總線實現對DSP芯片VC5402的軟配置08-06

    利用電教媒體進行發散性教學08-07

    面向運動圖像遠程實時傳輸的H.263壓縮方法的分析與優化08-06

    利用數碼相機SDK開發圖像采集應用程序08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      日本中文字幕乱码在线精品 | 日本区一视频.区二视频 | 一区二区国产盗摄精品 | 中文亚洲免费一区二区三区 | 亚洲狠狠丁香婷婷综合久久久 | 日韩女同一区二区三区 |