第七章 算術編碼.

Slides:



Advertisements
Similar presentations
工職數學 第四冊 第一章 導 數 1 - 1 函數的極限與連續 1 - 2 導數及其基本性質 1 - 3 微分公式 1 - 4 高階導函數.
Advertisements

不定積分 不定積分的概念 不定積分的定義 16 不定積分的概念 16.1 不定積分的概念 以下是一些常用的積分公式。
大綱 1. 三角函數的導函數. 2. 反三角函數的導函數. 3. 對數函數的導函數. 4. 指數函數的導函數.
第一單元 建立java 程式.
第二框 生命科技与生命伦理.
第二节 留 数 一、留数的引入 二、利用留数求积分 三、在无穷远点的留数 四、典型例题 五、小结与思考.
遞迴關係-爬樓梯.
第三单元 单元写作学案 确立自信 学习反驳.
闲言碎语.
二十 石钟山记.
第一章 语言文字运用 专题五  挖掘隐含信息,准确实现图文转换.
5.1 自然對數函數:微分 5.2 自然對數函數:積分 5.3 反函數 5.4 指數函數:微分與積分 5.5 一般底數的指數函數和應用 5.6 反三角函數:微分 5.7 反三角函數:積分 5.8 雙曲函數.
Project 2 JMVC code tracing
2-3 基本數位邏輯處理※.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
SQL Stored Procedure SQL 預存程序.
Pull-down assay (His-Tag or GST-Tag)
第八章 空間資料結構設計.
Chapter 9 高度平衡二元搜尋樹 AVL Binary Search Tree
第一章 顏色、色彩轉換與浮水印.
第一章 直角坐標系 1-1 數系的發展.
Ch 3 Dynamic Programming (動態規劃).
第一單元 建立java 程式.
Chap4 Tree.
第一节 大数定律 一、问题的引入 二、基本定理 三、典型例题 四、小结.
第九章 空間資料結構設計與應用.
數學 近似值 有效數值.
Definition of Trace Function
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
我 會 數 數.
挑戰C++程式語言 ──第8章 進一步談字元與字串
Ogive plot example 說明者:吳東陽 2003/10/10.
C qsort.
第十一章 空間域上的壓縮與應用.
MicroSim pspice.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
二項分配-Binomial 伯努利試驗(Bernoulli Trial) 每一次試驗皆僅有兩種可能結果,不是成功(S),就是失敗(F)。
第九章 布林代數與邏輯設計.
Scratch: 動畫或遊戲編程 任務10:尋找小鬼.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
12797: Letters ★★★☆☆ 題組:Problem Set Archive with Online Judge
第七章 資料轉換和 個案選擇 7.1 前言 7.2 〝Recode〞功能 7.3 〝Compute〞功能 7.4 〝Count〞功能
第四章 門檻值決定與區域分割.
切換時區.
11058: Encoding ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
1-1 二元一次式運算.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
百分數認識.
1757: Secret Chamber at Mount Rushmore
13194: DPA Number II ★★☆☆☆ 題組:Problem Set Archive with Online Judge
第十二章 離散小波轉換之相關浮水印技術.
Parasitics Extraction (PEX) 與 postsimulation(posim)
資料表示方法 資料儲存單位.
Quiz1 繳交期限: 9/28(四).
第一章 直角坐標系 1-3 函數及其圖形.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
第五章 預測編碼和半調子 影像的回復.
第十三章 彩色影像處理.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
17.1 相關係數 判定係數:迴歸平方和除以總平方和 相關係數 判定係數:迴歸平方和除以總平方和.
7. 三角學的應用 正弦公式 餘弦公式 a2 = b2 + c2 - 2bc cos A b2 = a2 + c2 - 2ac cos B
快取映射 之直接對映 計算整理.
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

第七章 算術編碼

7.1 前言 7.2 算術編碼原理 7.3 二元集式算術碼 7.4 JBIG中的改良式算術碼 7.5 動態式算術碼 7.7 作業 7.1 前言 7.2 算術編碼原理 7.3 二元集式算術碼 7.4 JBIG中的改良式算術碼 7.5 動態式算術碼 7.7 作業 7.4.1 BACIC 7.4.2 條件熵式

7.2 算術編碼原理 舉例說明算術編碼原理 假設一字母集 , 字母集發生機率 、 、 、 和 。 圖7.1 字母的機率區間分佈

若今送方打算送出的訊息為 圖7.2 處理完 的機率範圍 圖7.3 處理完 的機率範圍 圖7.4 處理完    的機率範圍 如果用0.175的二進位表示式來代表 這個訊息。現在,收方看到0.175,很容易知道訊息中的第一字母為 ,因為 0.175屬於區間 [0, 0.5]之中,依此類推, 收方很容易就可以解出原訊息為 。

7.3 二元集式算術碼 舉例說明二元集式算術碼 假設一字母集 S = {A, B, C, D, E, ESC, EOF}, 7.3 二元集式算術碼 舉例說明二元集式算術碼 假設一字母集 S = {A, B, C, D, E, ESC, EOF}, 一開始,令字母集中各個字母的出現次數為1。 P A B C D E ESC F 1 S EOF F 1 圖7.5  起始狀態 P 代表主要集(Primary Set) S 代表次要集(Secondary set) F 代表出現次數

首先,我們讀入字母B ,接著讀入第二個字母A 假設給一輸入字串如下所示 輸入字串 = BAAEEAD… 首先,我們讀入字母B ,接著讀入第二個字母A (a) B的機率範圍 (a) 新的機率範圍 P A B C D E ESC F 1 2 P A B C D E ESC F 2 1 (b) 修正後的主要集 (b) 修正後的主要集 圖7.6 讀入字母B後的變動 圖7.7 讀入字母A後的變動

第三個讀入的字母仍為A,A仍屬於主要集,我們很容易得出圖7.8的相關機率範圍和主要集。 第四個讀入的字母為E,同理得出圖7.9的相關機率範圍和主要集。 (a) 新的機率範圍 (a) 新的機率範圍 P A B C D E ESC F 3 2 1 P A B C D E ESC F 3 2 1 (b) 修正後的主要集 (b) 修正後的主要集 圖7.8 讀入第三個字母後的變動 圖7.9 處理完第四個字母後的變動

接著,第五個讀入的字母為E,各字母出現的新變動如圖7.10所示。 P A B C D E ESC 在實作時,為避免主要集中字母出現的總和過大,我們暫令總和的上限為10,若總和超過10,則進行重新縮小的動作,這裡,我們是將各字母的出現數除以2後,將商再進行四捨五入。 接著,第五個讀入的字母為E,各字母出現的新變動如圖7.10所示。 P A B C D E ESC F 3 2 1 (a) 新的機率範圍 (b) 修正後的主要集 圖7.10 處理完第五個字母後的變動 由圖7.10可知目前主要集中的字母出現總數已超過10,經除以2再取四捨五入後,得到圖7.11的異動。 P A B C D E ESC F 2 1 圖7.11 重新縮小後的結果

在圖7.11中,我們將字母出現次數為2次以上的留在主要集中,ESC也仍留在主要集中。其餘的字母移到次要集中,我們因此得到圖7.12。 P A F 2 1 S B C D EOF F 1 (a) 縮小後的主要集 (b) 新產生的次要集 圖7.12 新產生的主要集和次要集 第六個讀入的字母為A。 P A E ESC F 3 2 1 S B C D EOF F 1 (a) 機率範圍 (b) 主要集 (c) 次要集 圖7.13 處理完第六個字母後的狀態

再來模擬一次下個字母D。因為字母D不在主要集內,故先輸出ESC,然後在次要集內將字母D移進主要集中。如此一來,我們得到圖7.14的狀態。 P A D E ESC F 3 1 2 S B C EOF F 1 圖7.14 新的主要集和次要集 在處理第七個符號D時,由於在主要集中找不到D,我們輸出ESC,ESC的機率範圍介於 到 之間。又已知D在次要集中的機率範圍介於 到 之間。所以處理完七個符號後的機率範圍介於 到 之間。

7.4 JBIG中的改良式算術碼 7.4.1 BACIC BACIC的全名為Block Arithmetic Coding for Image Compression,BACIC主要是針對黑白影像的壓縮而設計的,其效能並不輸JBIG (Joint Bilevel Image Experts Group)。 當我們在對目前符號編碼時,會參考到前面處理過的部分符號 。 (a) 三列式 (b) 五列式 圖7.15 二種常用的模組(Template)

對任一模組而言,共有12個位元被納入考慮。 12個位元共有212 = 4096種組態,例如:000000000000以註標0代表,000000000001以註標1代表,111111111111以註標4095代表 為方便起見用符號 i, ,用來表示註標 。 為了記錄這4096種組態的黑位元之機率,我們用 ri 記錄每個 i其黑點數。 si 記錄每個 i 總點數。 我們在黑白調色的影像中進行算術編碼時,離目前前後文較遠的相關點數給予較小的加權,例如: ,如此一來就較能反應真實的機率分佈。

起始時,si (0) = 2 ri (0) = 1 這裡 ri是記錄編碼黑點的個數,而括弧內的註標代表時間的變數。 ri (n+1) 和 si (n+1) 定義如下 ri (n+1) = pi + 0.95 ri (n) si (n+1) = 1 + 0.95 si (n) 上式中,ri (n) 代表在編碼目前像素前,曾編過的黑像素且其模 組為 i 的總個數,而pi代表目前待編的像素。 pi = 0代表目前的像素為白;pi = 1代表目前的像素為黑。 針對模組為i 的組態,時間參數為n+1時,黑像素的機率可估計為 上式中,β取很小的數,在實作時可依實驗調整得之。分母項放二倍的β,而在分子項放一個β是怕高估了p1 (n+1, i) 。 (7.1) (7.2)

假設BACIC的碼表樹中葉子個數為K = 16, 而掃描五個黑色像素的機率序列為 < 0.5, 0.6, 0.7, 0.4, 0.2 > 以K=16為樹根,由0.5機率可知其左子樹的加權為8     ,而右子樹的加權也為8。圖7.16為處理完機率0.5後的子樹示意圖。 接下來讀入機率0.6,我們可得到圖7.17的編碼樹。 圖7.16 處理完機率0.5後的子樹 圖7.17 處理完機率0.6後的子樹

同理,讀完0.7、0.4和0.2後,其對應的編碼樹圖如7.18所示。 假若我們掃描到的二元字串為11110,則在圖7.18中所對應到的路徑為圖中的粗體線所示。利用定長碼來編葉子點。例如,令圖7.18的葉子數量為16個,則每個葉子只需四個位元來編,如此一來,二元字串11110可編碼成0001。 圖7.18 建置完成的編碼樹

7.4.2 條件熵式 結合JBIG1而設計的另一種算術編碼器。 如何將高灰階影像轉換成黑白影像 : 7.4.2 條件熵式 結合JBIG1而設計的另一種算術編碼器。 如何將高灰階影像轉換成黑白影像 : 1. 給一 高灰階影像,假設其中所有的灰階值皆為25。 2. 若我們選用散亂式的抖動矩陣(Disperse Dither Matrix)來當作門檻矩陣。 3. 則輸入影像經由圖7.20會轉換為圖7.21,經由圖7.22會轉換為 圖7.23 。 4. 在圖7.21,圖7.23中的黑像素代表原輸入影像的灰階值小於抖 動矩陣中同位置的門檻。 如此一來,高灰階影像就可轉換為黑白影像了。

圖7.20 散亂式的抖動矩陣 圖7.22 叢聚式的抖動矩陣 圖7.21 所得的黑白影像 圖7.23 經圖7.22作用後的結果 1 17 5 18 6 22 25 9 29 13 26 10 30 14 7 23 3 19 8 24 4 20 31 15 27 11 16 28 12 14 7 8 15 19 26 25 18 6 1 2 9 27 31 24 5 4 3 10 28 29 30 23 13 12 11 16 20 21 22 17 圖7.20 散亂式的抖動矩陣 圖7.22 叢聚式的抖動矩陣 圖7.21 所得的黑白影像 圖7.23 經圖7.22作用後的結果

雖然以上的輸入影像為 的小例子,但從較巨觀的角度來看,若輸入的影像大小為一般的數百乘以數百的大小時,則經上述程序所得的黑白影像之效果還是不錯的。給一F16高灰階影像如圖7.24所示,經圖7.20的散亂式抖動矩陣作用後,我們得圖7.25的黑白影像。 圖7.24 輸入的F16高灰階影像 圖7.25 經圖7.20作用後的結果

利用散亂式抖動矩陣所得的黑白影像之黑白像素分佈,我們可知黑白像素呈現交錯分佈的樣式。基於這個特性,我們可將參考模組設計如圖7.27所示。 JBIG1用的是十點式的參考模組。 利用散亂式抖動矩陣所得的黑白影像之黑白像素分佈,我們可知黑白像素呈現交錯分佈的樣式。基於這個特性,我們可將參考模組設計如圖7.27所示。 圖7.26 JBIG1的十點式模組 圖7.27 新的參考模組

7.5 動態式算術碼 假設字母集 S = {A, B, C, D, E}且目前字母出現的總次數為40。 在這隱式二元樹上,有一些性質值得我們注意: 出現次數最高的字母為C且將其放置在樹根。 出現次數次高的字母為B且依廣先搜尋(Breadth First Search)的次序將其放置在C的左孩子處。 1到5的註標也是依廣先搜尋放置的。 圖7.28 目前的隱式二元樹

COUNT [i]:記錄註標i之下符號為POS_TO_SYM [i]的出現次數。 陣列式的資料結構 COUNT [i]:記錄註標i之下符號為POS_TO_SYM [i]的出現次數。 TREE_CN [i]:記錄符號為POS_TO_SYM [i]為樹根的左子樹之 符號總出現次數。 SYM_TO_POS [i]:得到符號SYM的位置。 POS_TO_SYM [i]:得到註標為何符號SYM。 符 號 A B C D E 註 標 i 1 2 3 4 5 COUNT [i] 13 12 10 TREE_CN [i] 16 SYM_TO_POS [i] POS_TO_SYM [i] 圖7.29 圖7.28 的陣列表示

假設接下來讀到的字母串為DAAA 首先讀入字母D, 記錄字母出現總數的變數加1得到 T = 41( =40 + 1)。因為字母D的次數加1了,自然也影響了字母B和字母C的TREE_CN [ ]的值,字母B和字母C的 TREE_CN [ ]的值得加1。 符 號 A B C D E 註 標 i 1 2 3 4 5 COUNT [i] 13 12 10 TREE_CN [i] 17 SYM_TO_POS [i] POS_TO_SYM [i] 圖7.30 處理完字母D後的陣列表示

處理完二個A後,A的總數增為12。圖7.31為處理完AA後的陣列表示。因為字母A所在的節點為右子樹且無祖母節點,故不調整TREE_CN [ ] 。 符 號 A B C D E 註 標 i 1 2 3 4 5 COUNT [i] 13 12 TREE_CN [i] 17 SYM_TO_POS [i] POS_TO_SYM [i] 圖7.31 處理完AA後的陣列表示

處理最後一個字母A,處理完A後,A的總數變為13,這會破壞在隱式二元樹進行廣先搜尋所得的數列之遞減性的。這時,我們將字母A和字母B做適當的對調。圖7.32為對調後的結果。除了符號A的左子樹個數要改外,存字母出現總和的變數也得改為44。 符 號 A B C D E 註 標 i 1 2 3 4 5 COUNT [i] 13 12 TREE_CN [i] 18 SYM_TO_POS [i] POS_TO_SYM [i] 圖7.32 處理完最後一個A後的陣列表示

定理7.1 假設字母集中有 n 個字母。且第 i 個位置, ,所 紀錄的 ,滿足     令   ,則 而言,下式成立 證明:(反證法)假設對某個 j 而言, , 則 故和 矛盾。證明完畢。

定理7.2 利用本節介紹的方法,算術碼的編碼工作可在 的時間內完成。這裡n代表字母集的大小;m代表待編訊 息的符號數;d代表輸出的位元數。 證明:假設我們已編完 個符號,第i個待編的符號為Si, 令 ,則Si的目前機率可表示為 ,這裡 。 令di為編Si所需的位元數,則    。 利用定理7.1,可得到 對編所有的符號而言,所花時間的上限為 證明完畢。

7.7 作業 習題一: 假設字母集 ,而各字母的機率為 、 和 。假設送方打算送出的訊息為 ,試利用算術碼的技巧予以編碼後再解碼。 習題二:   假設字母集      ,而各字母的機率為    、        和     。假設送方打算送出的訊息為     ,試利用算術碼的技巧予以編碼後再解碼。 習題二: 假若最後一段的二元字串為1111,請問利用什麼方法仍可在 圖7.18上將1111編碼。