主頁 >  其他 > 讀資料壓縮入門筆記04_統計編碼

讀資料壓縮入門筆記04_統計編碼

2023-06-07 08:08:47 其他

1. 統計編碼(statistical encoders)的演算法

1.1. 每種編碼方法都對每個符號的概率分布做了不同的假定

1.2. 需要處理的資料集中符號的概率分布與現有的VLC方法都不能完全匹配

1.3. 統計編碼演算法通過資料集中符號出現的概率來進行編碼使結果盡可能與熵接近

1.4. 給定任何輸入資料,我們都能為其構造出一套自定義的碼字集,而無須去匹配現有的VLC方法

1.5. 該演算法以資料流中符號的頻率為依據,為該資料流中的各個符號分配長度可變的碼字,從而使最終的輸出壓縮得更小

2. 國際電信聯盟H.82建議書(ITU-T,1993)將熵編碼定義為“任意無損的壓碩訓解壓資料的方法”

3. 熵編碼的技術用途

3.1. 也可以稱為“香農–范諾編碼”或“哈夫曼編碼”

3.2. 給定二進制位率時增加信噪比

3.3. 給定信噪比時減少二進制位率

4. 香農–范諾編碼

4.1. 由香農于1948年提出,隨后他將它告訴了羅伯特?范諾(Robert Fano),范諾后來將它作為技術報告正式發表了

4.2. 最早通過符號及其出現概率來生成VLC的方法之一

4.3. 它沒有達到最短的碼字長度預期,但它已經很接近了

4.4. PKZIP/IMPLODE格式使用了兩到三棵香農–范諾樹(Shannon-Fano tree)

5. 哈夫曼編碼

5.1. 計算機科學和資料通信領域內人員一直都在使用的基本思想之一

5.2. 對于給定的資料集,為了產生小的、自定義的VLC,你需要一個輸入是概率串列、輸出是碼字的演算法

5.3. 哈夫曼編碼可能是生成自定義VLC最直接、最有名的方法

5.3.1. 給定一組符號及其出現頻率,該方法能生成一組符號平均長度最短的VLC

5.3.2. 如果使用二叉樹,就能利用符號表中的概率與二叉樹的分支來創建優化的二進制代碼

5.4. 作業原理

5.4.1. 將資料排序后建立決策樹(decision tree),然后從“樹干”一直往下直到“樹葉”為止,并記錄下所做的是/否選擇

5.4.2. 為了獲得給定符號(葉子節點)的碼字,需要從根節點“沿著樹枝”往下走,并將所得的1和0按從MSB到LSB排列起來,也就是從左排到右

5.5. 由于創建哈夫曼樹(需使用計算資源)要比傳輸符號碼字對應表(會增加資料流大小)困難得多,因此總是應該將碼字對應表加在資料流的前面,而不是在解碼時再重新創建一次

5.6. 簡單、高效,也能為單個的資料符號生成最佳的碼字

5.7. 對于給定的符號集來說,它并非總是生成最有效的碼字

5.8. 能生成理想VLC(即碼字的平均長度等于符號集的熵)的唯一情形是,各個符號的出現概率等于2的負整數次冪(即是1/2、1/4或1/8這樣的值)

6. 算術編碼

6.1. 早在20世紀60年代初,Peter Elias就首先提出了算術壓縮背后的概念(即算術編碼)

6.2. 20世紀70年代,才由IBM公司的Jorma Rissane針對其實作發表了第一個有效的研究,隨之而來的還有相應的專利

6.3. 會將整個輸入流轉換為一個長度很長的數值,而它的lb表示則與整個輸入流真正的熵值很接近

6.4. 它將轉換應用到整個源資料上以生成一個輸出值,而表示這個輸出值所需要的二進制位數比源資料本身少

6.5. 現代主流的檔案、音頻和視頻的壓縮格式(如LZMA和BZIP這樣的檔案格式,JPEG、WebP、WebM和H.264這樣的音視頻格式),在統計編碼步驟上都會使用算術編碼壓縮方法

6.6. 作業原理

6.6.1. 將字串轉換為一個數,與字串相比,表示這個數需要的二進制位數要少一些

6.7. 目前的主流演算法

6.7.1. 應用在大多數的多媒體編碼器中,甚至有了有效的硬體實作

7. 區間編碼

7.1. Range Coding

7.2. 1979年

7.3. 所做的事情與算術編碼基本相同,卻不受算術編碼相關專利的約束

8. ANS

8.1. 2007年

8.1.1. 在資料壓縮領域里出現的時間還不長

8.1.2. 已開始取代過去20多年里占據主流地位的哈夫曼編碼和算術編碼

8.1.2.1. ZHuff、LZTurbo、LZA、Oodle和LZNA這些壓縮工具已開始使用ANS

8.2. 2013年

8.2.1. 又出現了一個被稱為有限狀態熵(Finite State Entropy,FSE)的更注重性能的版本

8.2.1.1. 它只使用加法、掩碼和移位運算,使ANS對開發人員更具吸引力

8.3. 2015年

8.3.1. 推出了一款名為LZFSE的GZIP變種,作為蘋果下一代iOS版本的核心API

8.4. Jarek Duda引入了一種新的與資料壓縮有直接關聯的資訊論概念:非對稱數字系統(asymmetric numeral systems,ANS)

8.5. 一種新的精確熵編碼方法,所得到的結果可以和最優熵任意接近,它的壓縮率與算術編碼接近,而性能則與哈夫曼編碼相當

8.6. 作業原理

8.6.1. 根據符號的出現頻率對數值區間進行細分

8.6.2. 創建一張表,將子區間與離散的整數值關聯起來

8.6.3. 每個符號都是通過讀取和回應表中的數值來處理的

8.6.4. 向輸出流中寫入可變的二進制位位數

8.7. tANS是ANS的一種變體,它是圍繞著一張表格作業的

8.7.1. 創建備查表

8.7.1.1. 它使得從符號轉換為數值再從數值轉換為符號成為可能

8.7.1.2. 表中的每個值都是唯一的(即不存在重復)

8.7.1.3. 每列都按照值從小到大排序

8.7.1.4. 每行的值都要比該行的行號大

8.7.2. 想要tANS變成真正的熵編碼器

8.7.2.1. 在確定每一列值的個數時,需滿足該值乘以maxVal后,等于該列符號的出現概率

8.7.2.2. 在確定每一行的值時,需確保該行列選擇的值與該列符號的出現概率一致,這樣當用該值除以行號,所得商就會(近似)等于該列符號的出現概率

8.7.3. 壓縮來自于逐位輸出(bit-wise output)

8.7.3.1. 出現可能性越小的符號其列高越低,有效的行號值離最可能出現的符號也就越遠(二進制位距離意義上的遠)

8.7.3.2. 為了得到更小的行號,就需要進行更多次的右移操作,這也意味著每次回圈會有更多的二進制位輸出到資料流

8.7.3.3. 出現可能性越小的符號,就會輸出更多的二進制位到最終的資料流中

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554500.html

標籤:其他

上一篇:k8s實戰案例之部署redis單機和redis cluster

下一篇:返回列表

標籤雲
其他(160501) Python(38206) JavaScript(25478) Java(18205) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7234) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4585) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1983) 功能(1967) HtmlCss(1952) Web開發(1951) C++(1932) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1879) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 讀資料壓縮入門筆記04_統計編碼

    一種新的精確熵編碼方法,所得到的結果可以和最優熵任意接近,它的壓縮率與算術編碼接近,而性能則與哈夫曼編碼相當 ......

    uj5u.com 2023-06-07 08:08:47 more
  • k8s實戰案例之部署redis單機和redis cluster

    redis是一款基于BSD協議,開源的非關系型資料庫(nosql資料庫),作者是意大利開發者Salvatore Sanfilippo在2009年發布,使用C語言撰寫;redis是基于記憶體存盤,而且是目前比較流行的鍵值資料庫(key-value database),它提供將記憶體通過網路遠程共享的一種服... ......

    uj5u.com 2023-06-07 08:07:54 more
  • 1.3. 資料型別與變數

    ## 資料型別 在Java中,資料型別決定著一個資料的取值范圍和操作。Java中的資料型別主要分為兩類:基本資料型別和參考資料型別。 ### 基本資料型別 Java中的基本資料型別包括整型、浮點型、字符型和布爾型。 - 整型:byte、short、int、long。對應的取值范圍依次是-128~12 ......

    uj5u.com 2023-06-07 08:02:11 more
  • opennmmlab實戰營二期-mmpretrain代碼課課(五)

    # opennmmlab實戰營二期-mmpretrain代碼課課(五) [點我:視頻課程](https://www.bilibili.com/video/BV1Ju4y1Z7ZE/?share_source=copy_web&vd_source=ffcf9b861e082755b1f5504b717 ......

    uj5u.com 2023-06-07 07:56:43 more
  • ChatGPT玩法(二):AI玩轉Excel表格處理

    在線免費體驗ChatGpt:https://www.topgpt.one;你是否還在為記不住Excel的繁瑣函式和公式而苦惱?如果是這樣,那么不妨試試ChatExcel。即使你對函式一竅不通,也能輕松處理表格。只要你能清楚地描述你的需求,它就可以幫你搞定。此外,ChatExcel 的作者還制作了一張... ......

    uj5u.com 2023-06-07 07:56:30 more
  • 手把手教你用Stable Diffusion寫好提示詞

    Stable Diffusion 技術把 AI 影像生成提高到了一個全新高度,文生圖 Text to image 生成質量很大程度上取決于你的提示詞 Prompt 好不好。本文從“如何寫好提示詞”出發,從提示詞構成、調整規則和 chatGPT 輔助工具等角度,對文生圖的提示詞輸入進行歸納總結。 ......

    uj5u.com 2023-06-07 07:55:18 more
  • opennmmlab實戰營二期-mmpretrain代碼課課(五)

    # opennmmlab實戰營二期-mmpretrain代碼課課(五) [點我:視頻課程](https://www.bilibili.com/video/BV1Ju4y1Z7ZE/?share_source=copy_web&vd_source=ffcf9b861e082755b1f5504b717 ......

    uj5u.com 2023-06-07 07:54:46 more
  • 讀資料壓縮入門筆記04_統計編碼

    一種新的精確熵編碼方法,所得到的結果可以和最優熵任意接近,它的壓縮率與算術編碼接近,而性能則與哈夫曼編碼相當 ......

    uj5u.com 2023-06-07 07:54:13 more
  • ChatGPT玩法(二):AI玩轉Excel表格處理

    在線免費體驗ChatGpt:https://www.topgpt.one;你是否還在為記不住Excel的繁瑣函式和公式而苦惱?如果是這樣,那么不妨試試ChatExcel。即使你對函式一竅不通,也能輕松處理表格。只要你能清楚地描述你的需求,它就可以幫你搞定。此外,ChatExcel 的作者還制作了一張... ......

    uj5u.com 2023-06-07 07:47:36 more
  • 1.3. 資料型別與變數

    ## 資料型別 在Java中,資料型別決定著一個資料的取值范圍和操作。Java中的資料型別主要分為兩類:基本資料型別和參考資料型別。 ### 基本資料型別 Java中的基本資料型別包括整型、浮點型、字符型和布爾型。 - 整型:byte、short、int、long。對應的取值范圍依次是-128~12 ......

    uj5u.com 2023-06-07 07:43:30 more