視頻編碼中熵編碼之基于上下文的變長編碼(Huffman霍夫曼編碼和指數哥倫布)

視頻編碼中熵編碼之基于上下文的變長編碼(Huffman霍夫曼編碼和指數哥倫布)

視頻編碼中熵編碼之基于上下文的變長編碼Huffman霍夫曼編碼和指數哥倫布)

  • 視頻編碼中熵編碼之基于上下文的變長編碼(Huffman霍夫曼編碼和指數哥倫布)
  • 前言
    • 一、霍夫曼(Huffman)算法簡介
    • 二、霍夫曼(Huffman)編碼步驟(分為兩類 賦值與反推)
    • 三、霍夫曼(Huffman)編碼特點
      • 1、霍夫曼編碼是瞬時唯一的可解塊編碼
      • 2、霍夫曼編碼是唯一可譯碼。短的碼不會成為更長碼的起始部分
      • 3、霍夫曼編碼的平均碼長接近于熵
      • 4、與計算機的數據結構不匹配
      • 5、需要多次排序, 耗費時間
    • 四、Huffman編碼特點
    • 五、Huffman編碼舉例
      • 1、簡單編碼流程
      • 2、Huffman編碼(樹結構分析法)
  • 總結


視頻編碼流程圖

1、霍夫曼(Huffman)算法簡介

2、霍夫曼(Huffman)編碼步驟

3、霍夫曼(Huffman)編碼特點

4、霍夫曼(Huffman)編碼舉例

①、視頻編碼中熵編碼之熵及熵編碼基本原理

②、視頻編碼中熵編碼之"Z"字掃描原理(變換DCT系數和小波變換系統分布特性和統計特性)

③、視頻編碼中熵編碼之基于上下文的變長編碼(Buffman霍夫曼編碼和指數哥倫布)

④、視頻編碼中熵編碼之基于上下文的算術編碼

⑤、視頻編碼中熵編碼之位平面編碼

⑥、視頻編碼中熵編碼之零數編碼

⑦、視頻編碼中熵編碼之游程編碼

5、 環路濾波

前言

視頻編碼中熵編碼的目標是去除信源符號在信息表達上的表示冗余,也稱為信息熵冗余或者編碼冗余。 熵編碼技術是視頻編碼系統中的基礎性關鍵技術之一。

一、霍夫曼(Huffman)算法簡介

  • Huffman編碼是1952年為壓縮文本文件所設計的編碼方法,也是目前消除視頻信息冗余最常使用的方法之一
  • 對出現概率最大的符號賦以最短的碼字, 概率越小表示的碼字越長, 從而表示每個符號的平均比特數最小

二、霍夫曼(Huffman)編碼步驟(分為兩類 賦值與反推)

  1. 把信源符號按照概率大小順序排列(概率排序)
  2. 在分配碼字長度時,首先將兩個出現概率最小的兩個符號的概率相加,合成一個概率;(合并)
  3. 把這個合成概率看作是一個新組合符號的概率, 重復上述做法,直到最后只城下兩個符號的概率為之(置換)
  4. 完成上述步驟后,在返回向前進行編碼,每一層有兩個分支,分別賦予0和1(大的賦0或者小的賦1 但是必須一致)

三、霍夫曼(Huffman)編碼特點

1、霍夫曼編碼是瞬時唯一的可解塊編碼

  • ① 瞬時:符號串中每個碼字無需參考后繼符號就可解碼
  • ② 唯一可解碼:任何符號串只能以一種方式解碼
  • ③ 塊編碼:每個信源符號都映射到一個編碼符號的固定序列中

2、霍夫曼編碼是唯一可譯碼。短的碼不會成為更長碼的起始部分

3、霍夫曼編碼的平均碼長接近于熵

4、與計算機的數據結構不匹配

5、需要多次排序, 耗費時間

注意: 1、霍夫曼編碼的算法是確定的, 但是編出的碼并非是唯一的
2、由于霍夫曼編碼的依據是信源符號的概率分布, 故其編碼效率取決于信源的統計特性

原因是: 在編碼步驟過程中賦值 是有區別的(例如: 大賦0, 小賦1)

四、Huffman編碼特點

  1. 霍夫曼編碼的局限性在于,該編碼方法只適用于離散信源,即信源符號個數為有限數
  2. 編碼時需要知道輸入符號集的概率分布
  3. 在進行Huffman編碼壓縮時,計算量大而復雜,尤其是譯碼復雜度較高
  4. 由于碼長不等,還存在一個輸入與輸出的速率匹配問題

五、Huffman編碼舉例

1、簡單編碼流程

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

2、Huffman編碼(樹結構分析法)

在這里插入圖片描述

在這里插入圖片描述

總結

數字視頻編碼技術原理地址:https://chensongpoixs.github.io/cvideo_codec/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88908.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

游戲玩法的專利博弈

首席數據官高鵬律師數字經濟團隊創作 AI輔助一、數字戰場的護城河:游戲玩法的專利價值覺醒在數字經濟的浪潮中,游戲行業正以每年超15%的增速重塑全球娛樂版圖。2024年中國游戲市場規模突破3257億元,用戶規模達6.74億(數據來源&…

小架構step系列11:單元測試引入

1 概述 在還沒有寫什么代碼之前,就引入單元測試,是要強調單元測試的重要性。當一套代碼的生命周期比較長的時候,單元測試更加重要。生命周期長的代碼,不管是產品人員還是開發人員,可能都會換了一批又一批,…

Linux 文件共享之 HGFS 共享配置全解析

一、前言在使用 VMware 虛擬機搭建 Linux(以 Ubuntu 為例)環境時,常常需要實現主機與虛擬機之間的文件共享,HGFS(VMware Host-Guest File System)就是一種常用的文件共享方式。通過它,我們可以方…

模塊化設計賦能:定制組裝鋰電池設備的柔性生產解決方案

在鋰電池行業快速迭代的背景下,定制化需求與規模化生產之間的矛盾日益凸顯。傳統鋰電池組裝設備采用固定式架構,功能模塊高度耦合,導致設備換型周期長、兼容性差,難以適應電芯規格頻繁變化、工藝路線持續升級的市場需求。模塊化設…

Kubernetes 架構原理與集群環境部署

一:為什么需要 Kubernetes在業務開始進行容器化時,前期需要容器化的項目可能并不多,涉及的容器也并不多,此時基于 Docker 容器直接部署至宿主機也能實現基本的需求。但是隨著項目越來越多,管理的容器也會越來越多&…

JavaScript中關于環境對象的拓展

1.環境對象的定義環境對象指的是函數內的特殊變量this,this指向函數的調用者它代表當前函數的運行環境在平常我們判斷this經常用口訣誰調用它,它就指向誰,以下是幾種常見情況1. 在全局作用域中,this指向window2.在函數中&#xff…

202507中央城市工作會議

國家終于要給城市"升級系統"了!未來城市不再拼命蓋新樓,而是讓現有城區更安全、舒適、智能,且每個城市都要找到自己的特色發展路徑 2025年7月北京“中央城市工作會議”。領導人聚在一起,討論“怎么把中國城市搞得更好”…

springboot如何redis鎖

如何解決超賣問題?超賣問題:就是多個線程并發執行,目前唯一方案是加鎖。如圖:悲觀鎖其實還有數據庫的互斥鎖。悲觀鎖是最常見的樂觀鎖實現的原理:版本號:這種方案就是:扣款庫存的時候首先先查詢版本號&…

minio批量刪除對象不生效

下午在寫minio上批量刪除對象的邏輯,各種改對象名稱,各種核對代碼,發現啥都沒錯,但是刪除就是不生效。 代碼如下: from minio.deleteobjects import DeleteObjectdelete_object_list [DeleteObject("20250626/20…

如何設計實現開發自助重啟工具-01-設計篇

自助重啟系列 如何設計實現開發自助重啟工具-01-設計篇 應用部署作業-02-流程 如何實現自助重啟-03-實現篇 開發自助重啟 說明:有時候研發產線需要重啟,為了保證安全、或者說提升效率,最好有一個統一的研發自助重啟頁面。 這個功能可應…

ChatTongyi × LangChain:開啟多模態AI應用創新之門

阿里云通義實驗室推出的ChatTongyi(基于通義千問大模型)與LangChain框架的深度集成,為開發者打造了一套高效、靈活、全面的AI開發工具鏈。無論是文本對話、復雜任務自動化,還是圖像理解,這一組合都為多場景智能應用的落…

Android Studio C++/JNI/Kotlin 示例 二

MainActivity.ktpackage com.demo.learn1import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivityclass MainActivity : ComponentActivity() {// 加載原生庫init {System.loadLibrary("native_code")}// 聲明原生方法// 數學…

B樹和B+樹

B樹B樹,?稱多路平衡查找樹,B樹中所被允許的孩?個數的最?值稱為B樹的階,通常?m表示。?棵m階B樹或為空樹,或為滿?如下特性的m叉樹: 1)樹中每個結點?多有m棵?樹,即?多含有m-1個關鍵字。 2…

【版本控制】Perforce Helix Core (P4V) 完全入門指南(含虛幻引擎實戰)

目錄引言第一章:認識 Perforce Helix Core1.1 什么是 Perforce?1.2 P4V 是什么?1.3 核心概念速覽1.4 為什么選擇 Perforce?1.5 與 Git 的核心區別本章總結第二章:安裝與配置2.1 安裝原則:先服務端后客戶端2…

LlamaFactory/unsloth Demo

內部叫Tuning-Factory 參數文檔https://llamafactory.readthedocs.io/zh-cn/latest/index.html 高級技巧,如加速:https://llamafactory.readthedocs.io/zh-cn/latest/advanced/acceleration.html 0.環境 conda env list conda remove --name llm --all c…

水務工程中自動化應用:EtherNet/IP轉PROFIBUS DP連接超聲波流量計

在水務工程領域,自動化技術的應用愈發廣泛。隨著工業4.0概念的普及,不同通信協議的設備之間實現高效互聯互通變得尤為關鍵。EtherNet/IP和PROFIBUS DP作為兩種常見的工業通信協議,各有優勢,在實際應用中,常需要將它們進…

網絡協議和基礎通信原理

網絡協議和基礎通信原理是理解互聯網和各種網絡應用的關鍵。讓我用通俗易懂的方式,帶你逐一深入講解這些內容。 一、基礎概念總覽 TCP/IP協議族:互聯網通信的基礎,由一組協議組成,包括TCP、IP、UDP等。HTTP協議:基于T…

T16IZ遙控器教程__遙控器與無人機對頻

文章目錄前言一、準備設備二、對頻步驟總結前言 在使用自組PX4無人機時,有的小伙伴可能會遇到遙控器無法與無人機對頻連接的問題,別擔心,這篇文章會解決它。 一、準備設備 如下圖,無人機信號接收器,與無人機。 遙控器…

pyspark中map算子和flatmap算子

在 PySpark 中,map 和 flatMap 是兩個常用的轉換算子,它們都用于對 RDD(彈性分布式數據集)或 DataFrame 中的元素進行處理,但處理方式和應用場景有所不同。下面詳細講解它們的用法和適用場景。1. map 算子功能對 RDD 或…

jenkins部署前端vue項目使用Docker+Jenkinsfile方式

文章目錄前言一、前提準備二、準備構建文件三、Jenkins中構建項目總結前言 前面通過jenkinsdocker的方式部署了若依前端vue項目,接下來接著學習使用Jenkinsfile的方式部署前端vue項目。 一、前提準備 已經安裝好centos服務器,并且安裝了jenkins和docke…