新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ATmegal28的LED顯示屏圖像數據解碼設計

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

        作者: 時間:2013-01-18 來源:網絡 收藏

        軟件事先構造出不同碼長下的哈夫曼碼字的最小值表和最大值表

          在解碼的時候,讀取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 所示。

        Loef

        Loeffler算法運算因子的解釋

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

        公式

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广安市| 嘉义县| 青海省| 阿拉尔市| 新干县| 农安县| 白玉县| 新闻| 磴口县| 将乐县| 比如县| 仙游县| 贵阳市| 临澧县| 孙吴县| 邢台市| 手机| 冕宁县| 海宁市| 澳门| 象山县| 平潭县| 盐山县| 赤峰市| 平塘县| 紫金县| 宁晋县| 开鲁县| 曲水县| 公主岭市| 昌吉市| 铜鼓县| 怀来县| 宁远县| 卢湾区| 泗阳县| 鹤壁市| 长沙市| 恩施市| 盐源县| 武宣县|