霍夫曼 Huffman 編碼簡單了解


霍夫曼編碼(也叫哈夫曼編碼)

即時碼:必須是唯一可譯碼,對一組即時碼來說,其中的任意一個碼字都只能與一種信號存在對應關系,而且任意一個碼字都不能是其他碼字的前綴。

即時碼的產生常采用樹形結構:

是用上邊的即時碼,

假設收到這樣一組信號:100101001

則可以唯一解析出以下 4 個碼字:

1 001 01 001

編碼過程

  1. 設有一個圖像序列,含有 8 個灰度級,$x1, x2, x3,,, x8$,概率分別為:
p1 p2 p3 p4 p5 p6 p7 p8
0.4 0.18 0.1 0.1 0.07 0.06 0.05 0.04
  1. 選取最小兩個概率進行合並,形成一個新的概率集合,重新進行排序。重復此步驟直到最終只剩兩個概率為止,得到霍夫曼樹
  1. 根據霍夫曼樹分配碼字,得到霍夫曼編碼

概率越大,碼長越短;概率越小,碼長越短

計算平均碼長:每一個霍夫曼碼長與它的概率乘積之和

這里的平均碼長為 2.61,小於自然碼長為 3(表示 8 個數至少需要 3 位),說明進行了壓縮

計算熵、編碼效率

計算絕對冗余、相對冗余

總結

霍夫曼編碼是無失真編碼中效率較高的一種編碼方法。

在分配碼字過程中,隨機賦 “0” 和 “1” 的不同,結果會使碼字不同(不唯一),而碼字長和平均碼字長不會改變,他也是唯一可解碼的。

但其缺點是信源縮減過程復雜,運算量大。

解決辦法:(適應性 Huffman 編碼 ⭐⭐)https://blog.csdn.net/qq_28829853/article/details/104111533

  1. 使用多叉樹壓縮編碼長度,提高碼元攜帶的信息
  2. 使用更少的字符來構建編碼表,調高字符的頻次
  3. 減少文件頭部攜帶的信息,提高編碼率

對於 1.

改進后的霍夫曼編碼,不再是二進制的。它可以是多進制,例如26進制。操作方法:
把符號按出現概率排序,合並概率最小的 26 項,為新的節點。然后重復這一過程,剩下的步驟與經典霍夫曼編碼相同。
應用:把漢語單字讀音的416音按26進制進行霍夫曼編碼,結果,像de,shi,yu這些概率高的讀音分配了較短的編碼;dia,den這些不常用的讀音分配較長的編碼。26進制對應鍵盤的26鍵,這樣就誕生了一種新的輸入法
原文鏈接:https://blog.csdn.net/proorck2019/article/details/109445764

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM