【數字圖像處理系列筆記】Ch06:圖像壓縮

一、基礎知識

信源編碼器:減少或消除輸入圖像中的編碼冗余、像素 間冗余以及心理視覺冗余。?

數據的冗余?

一、空間冗余(Spatial Redundancy)

1.?定義

圖像中相鄰像素間的強相關性導致的冗余 —— 同一區域內相鄰像素的像素值(如灰度、色彩)往往相似或相同,重復信息未被壓縮時會占用額外存儲空間。

2.?產生原因
  • 自然圖像中存在大量平滑區域(如藍天、墻壁),相鄰像素值幾乎一致;
  • 物體邊緣的像素值雖有突變,但邊緣兩側的區域內仍存在像素相關性。
3.?壓縮應用
  • 預測編碼(Prediction Coding):利用相鄰像素預測當前像素值,僅存儲預測誤差(如 JPEG 中的 DPCM 預測)。例如,若當前像素值為 100,相鄰像素預測值為 98,則僅存儲差值 “2”。
  • 像素差值編碼:計算相鄰像素的差值(如相鄰行 / 列的差),差值中零值或小值占比高,可通過行程編碼(RLE)壓縮連續相同差值。

二、編碼冗余(Coding Redundancy)

1.?定義

圖像中像素值的概率分布與編碼方式不匹配導致的冗余 —— 當像素值出現概率不均時,使用等長編碼(如 8 位固定編碼)會浪費編碼空間(即實際編碼長度大于信息熵理論最小值)。

2.?數學原理
  • 信息熵公式:,其中p(i)為像素值i出現的概率。
  • 若圖像中某像素值出現概率p(i)很高(如背景色),其理論編碼長度應更短;但等長編碼強制所有值占用相同長度(如 8 位),導致總編碼長度L>H,差值L?H即為編碼冗余。
3.?壓縮應用
  • 變長編碼(Variable - Length Coding):為高頻出現的像素值分配短編碼,低頻值分配長編碼。例如:
    • 霍夫曼編碼(Huffman Coding):根據像素值概率構建編碼表,概率越高編碼越短;
    • 算術編碼(Arithmetic Coding):將整個像素序列映射為 [0,1) 區間的一個小數,用更少位數表示。
  • JPEG 壓縮中,對量化后的 DCT 系數進行霍夫曼編碼,減少編碼冗余。

三、視覺冗余(Visual Redundancy)

1.?定義

基于人類視覺系統(HVS)的感知局限性產生的冗余 —— 圖像中部分信息(如高頻細節、微小色差)超出人眼分辨能力,即使丟失也不影響主觀視覺效果。

2.?生理基礎
  • 人眼對亮度變化色彩變化更敏感(如 YUV 色彩空間中 Y 分量優先保留);
  • 對圖像的高頻細節(如細微紋理、快速變化的邊緣)分辨力低,對低頻輪廓更敏感。
3.?壓縮應用
  • 量化(Quantization):對圖像變換域(如 DCT、小波變換)的高頻系數進行粗量化(甚至置零),丟棄人眼不敏感的信息。例如:
    • JPEG 中使用 DCT 將圖像轉換到頻率域,對高頻系數(對應細節)采用大步長量化,大幅減少數據量;
    • JPEG 2000 利用小波變換,對不同頻率子帶采用不同量化精度,優先保留低頻信息。
  • 色彩空間轉換:將 RGB 轉換為 YUV 后,對 UV 分量(色彩)進行降采樣(如 4:2:0 采樣),利用人眼對色彩分辨率低的特性減少數據量。

四、三種冗余的對比與應用場景

冗余類型核心本質典型壓縮技術應用場景(舉例)
空間冗余像素間空間相關性預測編碼、差值編碼、RLE無損壓縮(如 PNG)、視頻幀內壓縮
編碼冗余概率分布與編碼不匹配霍夫曼編碼、算術編碼各類壓縮的熵編碼階段(如 JPEG)
視覺冗余人眼感知能力局限性量化、頻率域濾波、色彩降采樣有損壓縮(如 JPEG、WebP)

總結

圖像壓縮的核心是通過分析不同類型的數據冗余,結合算法針對性優化:

  • 空間冗余利用像素相關性減少重復存儲;
  • 編碼冗余通過變長編碼匹配概率分布,逼近信息熵下限;
  • 視覺冗余則借助人眼特性 “合理丟棄” 無效信息,在壓縮效率與視覺質量間平衡。
    三種冗余常協同作用(如 JPEG 同時利用空間冗余的 DPCM 預測、編碼冗余的霍夫曼編碼、視覺冗余的 DCT 量化),實現高效壓縮。

圖像壓縮評價標準

一、冗余度(Redundancy)

1.?定義

指圖像數據中可被消除的冗余信息比例,反映壓縮算法對數據冗余的利用效率。冗余度越低,說明壓縮后數據中無效信息越少。

2.?數學表達與計算
  • 信息熵(Entropy,?H):表示圖像中信息的理論最小編碼長度,公式為:
    其中?p(i)?為像素值?i?出現的概率,n?為像素值種類數。
  • 平均編碼長度(L):壓縮后每個像素的平均編碼位數。
  • 冗余度公式
    當?L=H?時,冗余度為 0,此時編碼達到理論最優(無冗余);若?L>H,冗余度越大,說明編碼效率越低。
3.?應用場景
  • 用于評估無損壓縮算法的效率(如霍夫曼編碼、算術編碼),衡量其對編碼冗余的消除能力。
  • 例如:某圖像信息熵?H=5?bit / 像素,壓縮后平均編碼長度?L=6?bit / 像素,則冗余度為?1?5/6≈16.7%,表示存在 16.7% 的編碼冗余可進一步優化。

二、編碼效率(Coding Efficiency)

1.?定義

衡量壓縮算法的編碼結果與理論最優編碼(信息熵)的接近程度,反映編碼過程中對信息的利用效率。

2.?數學表達與計算
  • 編碼效率公式
    其中?H?為信息熵,L?為平均編碼長度。編碼效率越高,說明編碼結果越接近理論最小值。
  • 理想情況下,編碼效率為 100%(L=H),但實際中因算法復雜度等限制,效率通常小于 100%。
3.?應用場景
  • 對比不同編碼方式的有效性:
    • 霍夫曼編碼的編碼效率通常在 80%~95%,而算術編碼可更接近 100%(因無需將每個符號獨立編碼,而是處理整個符號序列)。
  • 例如:JPEG 壓縮中,對量化后的 DCT 系數進行霍夫曼編碼,若信息熵?H=3?bit / 系數,平均編碼長度?L=3.2?bit / 系數,則編碼效率為?3/3.2≈93.75%。

三、保真度(Fidelity)

1.?定義

衡量壓縮后圖像與原始圖像的相似程度,反映壓縮算法對圖像信息的保留能力,分為無損保真度有損保真度

2.?分類及計算方法
(1)無損保真度(適用于無損壓縮)
  • 壓縮前后圖像完全一致,保真度為 100%,常用指標:
    • 壓縮比(Compression Ratio):原始數據量與壓縮后數據量的比值,公式為:
      例如:原始圖像大小為 10MB,壓縮后為 2MB,壓縮比為 5:1。
(2)有損保真度(適用于有損壓縮)
  • 衡量圖像質量損失,常用客觀指標:
    • 均方誤差(MSE, Mean Squared Error):計算原始圖像?f(i,j)?與壓縮圖像?f^?(i,j)?像素值差的平方均值:
    • 峰值信噪比(PSNR, Peak Signal-to-Noise Ratio):基于 MSE 的對數轉換,單位為分貝(dB),公式為:
      其中?k?為像素值位數(如 8 位灰度圖中?k=8,最大值為 255)。PSNR 越高,圖像質量越好(通常 30dB 以上視為可接受)。
  • 主觀指標:
    • 主觀評分(如 MOS, Mean Opinion Score):通過人類觀察者對圖像質量打分(1~5 分),更貼合實際感知,但具有主觀性。
3.?應用場景
  • 有損壓縮算法(如 JPEG、WebP)中,用于平衡壓縮比與圖像質量:
    • 調整量化參數可改變保真度:量化步長越大,PSNR 越低,壓縮比越高(如 JPEG 的 “質量因子” 從 100 降至 10 時,PSNR 從 40dB 降至 25dB,壓縮比從 1:1 升至 20:1)。

四、指標對比與實際應用

指標核心作用數值特性典型應用場景
冗余度衡量數據冗余消除程度越接近 0 越好無損壓縮算法評估
編碼效率衡量編碼與理論最優的差距越接近 100% 越好比較不同編碼方式的優劣
保真度衡量圖像質量保留能力無損壓縮中為 100%,有損壓縮中 PSNR 越高越好JPEG、視頻壓縮等有損場景的質量評估

總結

  • 冗余度與編碼效率:從信息論角度評估壓縮算法對數據冗余的處理能力,適用于無損壓縮場景,兩者呈互補關系(冗余度 = 1 - 編碼效率)。
  • 保真度:聚焦圖像質量,是有損壓縮的核心指標,需與壓縮比結合權衡(如犧牲部分保真度換取更高壓縮比)。
    實際應用中,需根據需求(如醫學圖像要求高保真度,網頁圖片側重壓縮比)選擇合適的指標組合評估壓縮算法性能。

?

二、基本壓縮方法

根據解壓重建后的圖像和原始圖像之間是否具有誤差,圖像編碼壓縮分為兩大類

無誤差(無失真、無損、信息保持)編碼
有誤差(有失真或有損)編碼

根據編碼作用域劃分,圖像編碼為

空間域編碼
變換域編碼

一、有損壓縮(Lossy Compression)

1.?定義與核心原理
  • 定義:通過舍棄部分次要信息(如人眼 / 人耳不敏感的高頻細節)來減少數據量,壓縮過程不可逆,解壓后無法完全還原原始數據。
  • 核心原理:利用人類感知系統的局限性(如視覺對色彩精度、聽覺對高頻聲音的不敏感),通過量化(Quantization)?等操作丟棄冗余信息,換取高壓縮比。
2.?關鍵技術與算法
(1)變換編碼(Transform Coding)
  • 流程
    1. 將原始數據從空間域 / 時域轉換到頻率域(如傅里葉變換、DCT 離散余弦變換)。
    2. 對高頻系數進行粗量化(舍棄或近似),保留低頻重要信息。
    3. 對量化后的數據進行熵編碼(如霍夫曼編碼)。
  • 典型算法
    • JPEG(圖像):對圖像分塊進行 DCT 變換,量化高頻系數,壓縮比可達 10:1~100:1,但會產生 “塊效應”(如質量因子過低時邊緣模糊)。
    • MP3(音頻):利用人耳 “掩蔽效應”(高頻聲音會掩蓋低頻細節),丟棄感知不到的頻率成分,壓縮比約 10:1~12:1。
(2)矢量量化(Vector Quantization, VQ)
  • 將數據分組為向量,用碼本中的近似向量替代原始向量,適用于圖像像素塊壓縮(如早期圖像壓縮標準),但計算復雜度高。
3.?應用場景
  • 多媒體內容:圖片(JPEG、WebP)、音頻(MP3、AAC)、視頻(H.264、H.265)。
  • 對細節要求不高的場景:網頁圖片、流媒體視頻、手機拍攝的照片(如手機相機默認啟用有損壓縮)。
4.?優缺點
  • 優點:壓縮比高(可達數十至數百倍),適合存儲和傳輸大量多媒體數據。
  • 缺點:信息永久丟失,壓縮比過高時質量明顯下降(如圖片模糊、視頻色塊)。

二、無損壓縮(Lossless Compression)

1.?定義與核心原理
  • 定義:僅消除數據中的冗余信息(如重復字節、統計冗余),壓縮過程可逆,解壓后可完全還原原始數據。
  • 核心原理:利用數據的統計特性或結構冗余,通過編碼算法重新組織數據,減少存儲空間,不丟失任何信息。
2.?關鍵技術與算法
(1)熵編碼(Entropy Coding)
  • 基于信息熵理論,對出現概率高的符號分配短編碼,概率低的符號分配長編碼。
  • 典型算法
    • 哈夫曼編碼(Huffman Coding):根據符號出現頻率構建二叉樹,生成變長編碼,如文本壓縮(.txt 文件)。
    • 算術編碼(Arithmetic Coding):將整個符號序列編碼為 [0,1) 區間的一個小數,編碼效率高于霍夫曼編碼(接近信息熵),常用于 JPEG 2000。
(2)字典編碼(Dictionary Coding)
  • 查找數據中的重復模式,用索引(字典條目)替代重復內容。
  • 典型算法
    • LZ77/LZ78:記錄重復數據的位置和長度,如 ZIP 壓縮格式的基礎。
    • DEFLATE:結合 LZ77 和霍夫曼編碼,用于 PNG 圖像、ZIP 文件壓縮,壓縮比約 2:1~5:1。
(3)預測編碼(Prediction Coding)
  • 根據相鄰像素的相關性預測當前值,僅存儲預測誤差(如差分脈沖編碼 DPCM),適用于無損圖像壓縮(如 BMP 轉 PNG)。
3.?應用場景
  • 需要完全還原的數據
    • 文本文件(.txt、.pdf)、程序代碼、壓縮包(.zip、.rar)、醫學影像(如 DR、CT 的無損格式)、原始傳感器數據(如衛星圖像原始采樣)。
  • 圖像格式:PNG(無損位圖)、GIF(有限色彩無損)、TIFF(可選無損壓縮)。
4.?優缺點
  • 優點:100% 還原原始數據,適合對準確性要求極高的場景。
  • 缺點:壓縮比有限(通常 2:1~10:1),無法處理大量冗余度低的數據(如已壓縮的圖片再無損壓縮效果差)。

三、混合編碼(Hybrid Coding)

1.?定義與核心思想
  • 定義:結合有損壓縮與無損壓縮的優勢,對數據中不同部分采用不同壓縮策略,平衡壓縮比與保真度。
  • 核心思想:對次要信息用有損壓縮提高效率,對關鍵信息用無損壓縮保留細節,適用于既需高壓縮比又需部分細節保真的場景。
2.?典型技術與應用
(1)JPEG 2000(圖像混合編碼)
  • 策略
    • 對圖像進行小波變換(Wavelet Transform),將數據分為低頻(輪廓)和高頻(細節)部分。
    • 對低頻部分采用無損壓縮(如算術編碼),對高頻部分采用有損量化壓縮。
  • 優勢:支持 “感興趣區域(ROI)” 編碼 —— 對 ROI 用無損壓縮,其他區域用有損壓縮,兼顧壓縮比和關鍵細節(如醫學圖像中的病灶區域)。
(2)視頻編碼標準(如 H.264/AVC、H.265/HEVC)
  • 混合策略
    • 幀內壓縮(Intra Coding):對單幀圖像采用類似 JPEG 的有損變換編碼(DCT + 量化),減少空間冗余。
    • 幀間壓縮(Inter Coding):利用相鄰幀的時間冗余,僅存儲運動矢量和殘差(預測誤差),殘差部分可選擇有損或無損編碼(如 H.264 的無損模式)。
  • 應用:藍光視頻、網絡流媒體(如 YouTube、Netflix),壓縮比可達 100:1 以上,同時通過參數調整(如 QP 值)控制保真度。
(3)醫學圖像壓縮(如 JPEG-LS、JPEG 2000 無損 + 有損模式)
  • 對診斷關鍵區域(如腫瘤邊緣)用無損壓縮,背景區域用有損壓縮,確保醫療診斷的準確性。
3.?技術優勢
  • 靈活性:可根據需求調整有損與無損的比例,例如:
    • 衛星遙感圖像:對地表輪廓用有損壓縮,對坐標等元數據用無損壓縮。
    • 手機相機 RAW 格式:部分廠商采用混合編碼,保留色彩信息的同時壓縮亮度數據。
  • 高性價比:在相同文件大小下,混合編碼的圖像 / 視頻質量通常高于純有損壓縮(如 H.265 比 H.264 在相同碼率下質量提升約 50%)。

四、三種壓縮方式對比表

指標有損壓縮無損壓縮混合編碼
信息保留舍棄部分次要信息完全保留原始信息關鍵信息無損,次要信息有損
壓縮比高(10:1~100:1+)中低(2:1~10:1)中高(結合兩者優勢)
可逆性不可逆完全可逆部分可逆(關鍵信息可逆)
典型算法JPEG、MP3、H.264霍夫曼、ZIP、PNGJPEG 2000、H.265、JPEG-LS
應用場景照片、視頻、音樂文檔、代碼、醫學影像遙感圖像、醫療影像、4K 視頻
質量風險高壓縮比時質量下降無質量損失可控制質量損失范圍

五、實際應用中的選擇策略

  • 優先有損壓縮:對質量要求不高、存儲空間有限的場景(如社交平臺圖片、在線視頻)。
  • 優先無損壓縮:對數據準確性要求極高的場景(如財務報表、程序安裝包)。
  • 選擇混合編碼
    • 需平衡壓縮比與關鍵細節的場景(如醫學影像、專業攝影 RAW 文件)。
    • 視頻編碼中,通過幀內 / 幀間混合策略在有限碼率下實現高清畫質(如 8K 視頻傳輸)。

習題【具體過程想學私信我】

?

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

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

相關文章

windows線程基礎

Windows線程機制詳解 線程的基本概念 在Windows操作系統中,線程是程序執行的最小單位。每個進程至少包含一個線程(主線程),但可以創建多個線程來并行執行任務。線程與進程的主要區別在于: 資源分配:進程擁有…

Numpy科學計算與數據分析:Numpy隨機數生成入門

Numpy隨機數生成實戰 學習目標 通過本課程,學員將掌握如何使用Numpy庫生成不同類型的隨機數,包括隨機整數、隨機浮點數以及從特定分布中抽樣的方法。本課程將通過理論講解與實踐操作相結合的方式,幫助學員深入理解Numpy在隨機數生成方面的強…

使用 C# 通過 .NET 框架開發應用程序的安裝與環境配置

文章目錄1. .NET介紹2. IDE2.1 Rider 安裝2.2 Visual Studio 安裝3. SDK安裝與環境配置3.1 單獨下載安裝 .NET SDK3.2 Visual Studio 工作負荷安裝SDK4. 相關問題4.1 我以前使用 Unity 寫 C# 腳本不需要額外的編譯器,為什么現在需要?1. .NET介紹 .NET 是…

Scikit-learn - 機器學習庫初步了解

目錄1. 主要算法分類1.1 監督學習 (Supervised Learning)1.2 非監督學習 (Unsupervised Learning)1.3 半監督學習 (Semi-Supervised Learning)1.4 強化學習 (Reinforcement Learning)1.5 遺傳算法 (Genetic Algorithm)2. 選擇合適的機器學習模型2.1 分類 (Classification)2.2 回…

關于 idea 里 properties 文件的中文亂碼問題

背景 你會發現 properties 文件里的中文可能會出現亂碼。 這個因為 properties 規范是使用 iso-8859-1 存儲的,不支持中文(也不支持西歐里法語、德語里奇怪的字母) properties 的標準制定于很早,所以沒考慮這么多,prop…

BVH文件 解析 解讀的python第三方類庫 推薦

我們面臨多個第三方庫選項用于解析BVH文件,根據您的列表,我將分析幾個關鍵庫的特點,并推薦最適合當前任務的庫。我們將基于以下標準進行選擇: ??功能性??:是否能準確解析關節角度數據,支持關鍵幀操作 ?…

uni-app X能成為下一個Flutter嗎?

哈嘍,我是老劉 老劉使用Flutter作為客戶端主要技術棧的這六七年的時間里,關于跨平臺開發的爭議和新技術始終沒有停過。 “一套代碼,多端運行”——這個讓無數開發者心動的承諾,究竟是技術革命還是美麗的謊言? 想象一…

Spring Cloud Gateway全棧實踐:動態路由能力與WebFlux深度整合

一、為什么需要下一代網關? 傳統網關的三大瓶頸: #mermaid-svg-Kdei9Io6KntYGQc4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Kdei9Io6KntYGQc4 .error-icon{fill:#552222;}#mermaid-svg-…

MongoDB數據存儲界的瑞士軍刀:cpolar內網穿透實驗室第513號挑戰

軟件名稱:MongoDB 操作系統支持:Linux、Windows、macOS(Docker版全平臺通用!) 軟件介紹: MongoDB是一個基于分布式架構的NoSQL數據庫,擅長處理復雜數據類型(如嵌套對象、數組&…

SPI TFT全彩屏幕驅動開發及調試

簡介SPI(Serial Peripheral Interface)是一種廣泛使用的串行通信協議,常用于微控制器(MCU)與外圍設備(如傳感器、顯示屏、存儲器等)之間的通信。SPI具有全雙工傳輸、主從結構和較高的傳輸速率&a…

Linux學習—數據結構(鏈表2)

1.單向鏈表6.鏈表的查找在鏈表中找到指定的第一個元素沿用遍歷思想,每次訪問一個節點元素判斷是否為要找的節點符合條件返回該節點地址到最后沒有找到符號條件的節NULLlinknode *find_linklist(linknode *phead, datatype tmpdata) {linknode *ptmpnode NULL;ptmpn…

MySQL 備份利器 Xtrabackup 全解析:從部署到恢復的實戰指南

數據庫備份恢復是 DBA 的 “保命” 技能,生產業務不僅要保證有合適的備份策略,也要定期驗證備份的有效性和恢復演練流程,因為數據恢復和驗證可能會涉及多方合作,演練可以讓災難真正發生時,多方配合有條不紊的將數據恢復…

EAGLE-2:通過動態草稿樹加速語言模型推理

溫馨提示: 本篇文章已同步至"AI專題精講" EAGLE-2:通過動態草稿樹加速語言模型推理 摘要 現代 Large Language Models(LLMs)的推理過程既昂貴又耗時,而 speculative sampling 已被證明是一種有效的解決方案…

防水防塵防摔性能很好的智能三防手機,還有22000mAh大電池

在電力巡檢的崇山峻嶺間,在野外地質勘探的風沙深處,在應急救援的急風驟雨里,傳統智能設備因其固有的脆弱性與續航短板往往力不從心,甚至成為保障工作連續性的掣肘。而真正的智能三防手機應是一堵移動的堡壘,集堅不可摧…

Charles中文版抓包工具使用指南 提高API調試和網絡優化效率

在現代開發過程中,調試API、捕獲HTTP/HTTPS流量和優化應用的網絡性能已經成為開發者的常見任務。尤其是在調試復雜的API接口和分析網絡請求時,開發者需要一款高效且功能強大的工具。Charles抓包工具憑借其強大的網絡調試功能和易用的操作界面&#xff0c…

【C#補全計劃:類和對象(九)】接口

一、接口的概念1. 概念:接口是行為的抽象規范,也是一種自定義類型2. 接口聲明規范:(1)不包含成員變量(2)只包含屬性、方法、索引器、事件(3)成員不能被實現(4…

SRS簡介及簡單demo

SRS介紹 SRS(Simple Realtimes Server)是一款開源的實時流媒體服務器,專注于解決直播、實時互動等場景的流媒體傳輸問題。SRS 的設計目標是 “簡單、穩定、高效”,專門針對實時流媒體協議(如 RTMP、HLS、HTTP-FLV、WebRTC 等)進行優化,專注于解決 “低延遲、高并發” 的…

python基礎:數據解析BeatuifulSoup,不需要考慮前端形式的一種獲取元素的方法

1.beatuifulSoup 基本用法 beautifulSoup(簡稱bs4)是python的一個第三方庫,用于解析html和xml文檔中提取數據的python庫。它能夠將復雜的文檔轉化為樹形結構,方便快速定位和提取所需數據以及查找和修改,常常與爬蟲框架…

Ubuntu共享文件夾權限設置

在Ubuntu中設置共享文件夾的權限(只讀、讀寫、無權限),主要通過兩種方式實現:?文件系統權限?和?Samba共享配置?。以下是詳細步驟:?一、文件系統權限設置(基礎權限)?1. ?修改文件夾所有權…

小程序點擊菜單欄實現樣式動態切換

小程序點擊菜單欄背景樣式動態切換 前言:今天做一個小程序項目,要做一個菜單欄動態切換的功能,因為這種需求很常見,這次干脆記錄一下,幫助別人的同時,自己下次也可以直接照搬使用。 效果截圖如下&#xff1…