新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 基于ATmegal28的LED屏圖像數據解碼設計

        基于ATmegal28的LED屏圖像數據解碼設計

        作者: 時間:2009-04-29 來源:網絡 收藏

        2.1 Huffman的實現
        Huffman過程中重要的一環。傳統的哈夫曼解碼需要逐位查找哈夫曼表,進行比較判斷,由于查找過程需要大量的移位及循環。這樣的解碼效率非常低。針對這種情況,充分考慮到的存儲容量的限制,在讀文件頭時,軟件事先構造出不同碼長下的哈夫曼碼字的最小值表和最大值表如表1所示,最小值在哈夫曼表中的索引以及哈夫曼樹各葉子結點對應的編碼表。

        在解碼的時候,讀取1串二進制,分別與各碼長下的最大值和最小值進行比較,如果在哈夫曼表中沒有該碼長的碼字,說明該比特不是完整的Huff_man編碼,接著讀取下一個比特加在前面的比特數據組成的新的碼字,然后再在最小值表和最大值表中進行查找,直至找到確切的碼字。最后把該碼字減去同一碼長下最小值,加上此最小值在哈夫曼表中的索引即可得到該碼字在編碼表中的位置。
        2.2 IDCT變換的實現
        將8×8塊中的顏色分量單元的64個值逐一乘以對應的量化表內位置相同的系數,然后再將64個數據進行Z字型的重新排列,進行IDCT變換。IDCT的運算量很大,其中要進行大量的浮點乘法和加法運算,因而在解碼過程中IDCT所占時間最多。采用行列分解法先將二維IDCT分解成一維8點的IDCT,對于一維8點IDCT采用Loeffler的快速算法。圖2為Loef―fler算法的流程圖,Loeffler算法運算因子的解釋如圖3 所示。

        直接對旋轉因子進行計算需要4次乘法和2次加法,這樣1次8個點的一維IDCT變換總共需要14次乘法和26次加法。可以對旋轉因子進行變形如式(1)所示:


        從而1次旋轉因子計算只需要3次乘和3次加。進而進行1次一維IDCT只需11次乘和29次加。因為乘法運算的代價高于加法運算,所以這種變形是有益的。完成一次二維的IDCT運算總共要進行16次的8點一維IDCT運算。由于在速度方面的限制,在IDCT運算過程中把浮點操作改進為整形運算,并且把的值擴大211倍存儲起來,為IDCT運算做準備。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 和林格尔县| 和田县| 呼玛县| 怀化市| 闸北区| 威远县| 金乡县| 北票市| 新安县| 班玛县| 海城市| 上饶县| 新乡县| 遂川县| 三门峡市| 屏山县| 托里县| 出国| 阿克陶县| 绥江县| 宝鸡市| 云浮市| 黑山县| 云龙县| 蚌埠市| 本溪| 武冈市| 台安县| 灵山县| 曲周县| 邹城市| 西畴县| 武邑县| 瑞昌市| 曲松县| 泾源县| 陇西县| 微博| 新营市| 临城县| 道真|