新聞中心

        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次加法。可以對旋轉因子進行變形如式(1)所示:

        公式

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 中宁县| 易门县| 新泰市| 顺昌县| 石楼县| 磐安县| 湖口县| 繁昌县| 泰和县| 阿拉善右旗| 南乐县| 靖宇县| 辽阳县| 巩留县| 沈丘县| 肥东县| 庆阳市| 肇东市| 大英县| 台北县| 来凤县| 汉沽区| 佳木斯市| 郑州市| 丹凤县| 调兵山市| 桑植县| 黔江区| 亚东县| 凤庆县| 宁蒗| 阜康市| 福海县| 博湖县| 湟中县| 西宁市| 叙永县| 兖州市| 泰和县| 视频| 兴宁市|