420 likes | 578 Views
第六章. 資料壓縮與編碼. 6.0 導論. 資料壓縮的原理,就是將 所有以數位( 0 或 1 )形式來表示的資訊,比如數字、文字、聲音、影像、影片中多餘的元素予以處理 有三種方式來進行資料壓縮: 簡單的編碼機制 基於符號內文的機制 基於符號出現或是相關次數的機制. 6.1 簡單的編碼機制. 簡單的編碼機制,就是 傳送和接收的兩端必同意和堅守一種共通的編碼。例如要傳送城市的名稱,比如 Mumbai 或是 New York 時 可以用 01 來表示 Mumbai 、 02 來表示 New York 等等
E N D
第六章 資料壓縮與編碼
6.0 導論 • 資料壓縮的原理,就是將所有以數位(0 或1)形式來表示的資訊,比如數字、文字、聲音、影像、影片中多餘的元素予以處理 • 有三種方式來進行資料壓縮: • 簡單的編碼機制 • 基於符號內文的機制 • 基於符號出現或是相關次數的機制
6.1 簡單的編碼機制 • 簡單的編碼機制,就是傳送和接收的兩端必同意和堅守一種共通的編碼。例如要傳送城市的名稱,比如 Mumbai 或是 New York 時可以用 01 來表示 Mumbai、02 來表示New York 等等 • 這種方式在實作上,特別是在有許多端點的情況下較難做到
6.2 基於符號內文的機制 我們將考慮在這種分類下的兩種方法: • 空白抑制 (Null suppression) • 變動長度編碼法 (Run Length Encoding, RLE)
6.2.1 空白抑制 • 空白抑制是一種編碼的機制,會被用來指定到底需要送出多少的空白
6.2.2 變動長度編碼法 • 變動長度編碼法 (Run Length Encoding, RLE) 是空白抑制的綜合機制,我們不只找尋重複的空白,而且會找出任何重複的字元來壓縮
6.2.2 變動長度編碼法 • 變動長度編碼法 (RLE)
6.3 統計式的壓縮 • 統計的壓縮是基於符號出現的相對次數。這種方法會依據符號出現了多少次。也就是說,較短的編碼會被用在壓縮經常出現的符號,較長的編碼會被用在不常出現的符號上 • 有三種方法使用這種技術: • 摩斯編碼 • 霍夫曼編碼 (Huffman code) • Lempel-Ziv 編碼
6.3.1 摩斯編碼 • 摩斯編碼使用不同長度橫線 (dash) (-) 和點 (dot) (.) 的組合符號來表示各式各樣的字元
6.3.2 Huffman 編碼(1) • 霍夫曼編碼 (Huffman code) 使用由 0 和 1 所組成的變動長度碼來編定字元以及其他的符號
6.3.2 Huffman 編碼(2) 1. 將整組的字元組織成一個單行,並且依它們的權值來排序 2. 現在,計算兩個相鄰節點的總和,並找出這些總和中的最小值
6.3.2 Huffman 編碼(3) 3. 我們繼續在其他的階層上進行這個程序,每一次都要在該層中找出兩個相鄰節點總和的最小值 4. 我們重複這個步驟,即使是最低層的節點,也仍然是這個總和計算中的候選者
6.3.2 Huffman 編碼(4) 5. 我們繼續這個程序直到所有階層的節點都被組合成一棵單獨的樹 6. 下一個步驟就是為每個字元指定編碼
6.3.2 Huffman 編碼(5) • 由上述原則所得到的編碼指定表
6.3.2 Huffman 編碼(6) • 解碼的步驟: 1. 讀取訊息中的前三個位元,並且看看它們是否符合列表中的編碼,如果有符合,就將這三個位元替換成適當的字元,並且丟棄這三個位元。繼續找出下三個位元來重複以上的程序 2. 如果在步驟1沒有符合,獨取下一個位元並且加入現存的位元中,讓它成為四個位元的字串,在此列表中找出對應的四個位元樣式 3. 如果在步驟1和2都沒有找到符合的,讀取下一個位元並且加入現存的位元中,讓它成為五個位元的字串 4. 如果仍舊沒有找到符合的,這就表示訊息中有些未被識別的位元,因此會有些錯誤,就要丟棄此訊息
6.3.3 Lempel-Ziv編碼 • Lempel-Ziv 編碼會找出重複的字串或字組,然後將它們儲存在變數中。接著它會將實際重複的字組或字串用指標替換成對應的變數
6.4 多媒體儲存的格式 • 導論 • 常見的圖檔格式 • 常見的聲音檔格式
6.4.1 導論(1) • 多媒體的資料壓縮
6.4.1 導論(2) • 壓縮具有以下的兩種類型: (a) 在非破壞性的壓縮 (loss-less compression) 方法中,不會損失任何的資訊。所有的(就是所有以數位形式來表示影像的數字)會被壓縮,而不會丟棄任何資訊 (b) 在破壞性的壓縮 (lossy compression) 方法中,冗餘的資訊會被丟棄。在某些情況下這可能是我們不願見到的,因為在壓縮中被丟棄的,可能是很重要的資料
6.4.2 常見的圖檔格式 1. Graphics Interchange Format (GIF),它是 Internet 上第一種的圖檔類型,GIF 使用LZW (Lempel-Zev-Welch) 壓縮,它以描述每個顏色所需的8 個位元來儲存影像。GIF 檔有兩種主要的類型: • GIF87a是最原始的格式 • GIF89a格式使用幻燈片與動畫的功能。也就是說部分的影像可以被做成透明的 2. Joint Photographic Experts Group (JPEG) ,JPEG使用24 bit的顏色, 與GIF 不同的是JPEG使用破壞性的壓縮技術,而且可以建立 10 : 1 到 20 : 1 的壓縮比 3. Portable Network Graphics (PNG) ,PNG格式支援類似GIF的8 bit 顏色,而且甚至可以到48-bit 的顏色。它使用一種非破壞性以及 較佳的壓縮格式
6.4.3 常見的聲音檔格式 • 聲音檔可以是以下的兩種類型: • 非資料串流語音檔 (Nonstreaming audio):這些檔在播放前必須先被完整地下載到使用者的硬碟中 • 資料串流語音檔 (Streaming audio):這些檔不需要被下載,並且幾乎可以立即播放 • 常見的聲音檔格式: 1. Waveform audio file format (WAVE) 2. Audio Interchange File Format (AIFF) 3. Moving Picture Expert Group (MPEG) 4. Musical Instrument Digital Interface (MIDI)
6.5 資料加密 • 任何通訊中你我所說的語言—就是人類所說的語言—它被稱為明文 • 想透過電腦網路進行商業交易,就不能一直使用明文,因為一些有特殊企圖的人會抓住這些訊息然後會對它們做一些動作
6.6 隱含的風險(1) 根據所洩漏的內容,透過 Internet 傳輸明文時,會有三種主要類型 的危險: • 私密性 (Confidentiality):除了真實收件者之外的其他人想要存取你的訊息 • 身份驗證 (Authenticity):身份驗證的問題就是我們要確定訊息真的是由發送端送出 • 完整性 (Integrity):
6.6 隱含的風險(2) • 私密性: • 身份驗證: • 完整性:
6.7 基本的概念 • 明文和密文 • 取代密碼 • 調換密碼 • 密碼學的類型
6.7.1 明文和密文 • 密碼學 (cryptography) 就是一種編碼(就是加密)和解碼(就是解密)訊息的技術 • 原始的文件稱為明文,將訊息編碼的過程稱為加密,當它被加密後,就被稱為密文,將訊息解碼,擷取出它正確的意義。這個過程就被稱作解密
6.7.2 取代密碼 • 取代密碼 (substitution) 的技術中,明文訊息中的字元會被另外一個字元、數字或符號所取代 • 凱撒密碼 (Caesar Cipher) 是種特殊情況的取代技術,其中訊息裡的每個字母都會被置換成往下算的第三個字母
6.7.3 調換密碼 調換密碼(Transposition cipher) 技術並非簡單地以一個字母代換另一 個,它們在明文字母上執行一些排列,例如: • 鐵路柵欄技術 (Rail Fence Technique) • 簡易分欄調換技術 (Simple Columnar Transposition Technique)
鐵路柵欄技術 • 鐵路柵欄技術 • 範例:
簡易分欄調換技術 • 簡易分欄調換技術 • 範例:原始的明文訊息:come home tomorrow,獲得的密碼應該是eowoocmroerhm
6.7.4 密碼學的類型 • 密碼學可以被分成兩種類型: (a) 密鑰加密 :也被稱為私密金鑰對稱加密,相同的鑰匙會被同時用在加密與解密訊息。IBM 的 Data Encryption Standard (DES) 就是使用這種方法 (b) 公鑰加密 :也被稱為非對稱的加密法,在這種類型的加密法,會用到兩把不同的鑰匙(稱為鑰匙對)。一把鑰匙被用在加密,而另一把唯一的鑰匙則被用在解密
6.8 數位簽章 • 當發送端以數位的方式傳送訊息,數位簽章建立了無法否認 (non-repudiation) 的概念 • 數位簽章指出了某個人已經以數位的方式簽署了訊息,而它可以被證明是使用數位的簽章