【正文】
MATLAB的發(fā)展簡史 MATLAB 是 Matrix Laboratory(矩陣實(shí)驗(yàn)室的縮寫),最初由美國 Cleve Moler 博士在70 年代末講授矩陣?yán)碚摵蛿?shù)據(jù)分析等課程時編寫的軟件包 Linpack 與 Eispack 組成,旨在使應(yīng)用人員免去大量經(jīng)常重復(fù)的矩陣運(yùn)算和基本數(shù)學(xué)運(yùn)算等繁瑣的編程工作。1994 年推出了 版本,并得到廣泛的重視和應(yīng)用。工具包又可以分為功能性工具包和學(xué)科工具包。(1) 高質(zhì)量、強(qiáng)大的數(shù)值計(jì)算功能。在科學(xué)計(jì)算和工程應(yīng)用中,經(jīng)常需要分析大量的原始數(shù)據(jù)和數(shù)值計(jì)算結(jié)果,MATLAB 能將這些數(shù)據(jù)以圖形的方式顯示出來,使數(shù)據(jù)間的關(guān)系清晰明了。MATLAB 提供了一個模擬動態(tài)系統(tǒng)的交互式程序 Simulink,允許用戶通過繪制框圖來模擬一個系統(tǒng),并動態(tài)地控制該系統(tǒng)。(6) 文字處理功能。MATLAB 不僅免去了大量的經(jīng)常重復(fù)的基本數(shù)學(xué)運(yùn)算,而且其編譯和執(zhí)行速度都遠(yuǎn)遠(yuǎn)超過了采用 C 和 Fortran 語言設(shè)計(jì)的程序。(3) 圖形功能靈活方便。 總之,MATLAB 語言已經(jīng)成為科學(xué)計(jì)算、系統(tǒng)仿真、信號與圖像處理的主流軟件。(2) 索引圖像。在 MATLAB 中,灰度圖像由一個 uintuint16 或一個雙精度類型的數(shù)組來描述。多幀圖像主要用于需要對時間或場景上相關(guān)圖像集合進(jìn)行操作的場合,例如,磁諧振圖像切片或電影幀等。但在近幾年,這種概念發(fā)生了巨大的變化,出現(xiàn)了多種形式的人機(jī)交互方式,從命令的交互方式轉(zhuǎn)變到以圖形界面為主的交互形式。MATLAB 也提供了在 MATLAB 應(yīng)用程序中加入 GUI 的功能。(4) 就人機(jī)界面中的信息維度而言,經(jīng)歷了一維信息(主要指文本流,如早期電傳式終端) 、二維信息( 主要是二維圖形技術(shù),利用了色彩、形狀、紋理等維度信息)、三維信息(主要是三維圖形技術(shù),但顯示技術(shù)仍利用二維平面為主)和多維信息(多通道的多維信息)空間。XX 大學(xué)學(xué)士學(xué)位論文8第3章 變換編碼變換編碼是目前應(yīng)用最廣泛的圖像壓縮編碼方法,幾乎所有的圖像(除 2 值圖像外)和視頻壓縮標(biāo)準(zhǔn)均以變換編碼為工具。在變換編碼中,用一組代表空間頻率分布的變換系數(shù)表示一組空間幾何位置像素值,通過這種映射能夠巧妙地解除或減弱圖像信號的相關(guān)性(原始圖像的幀與幀、場與場、行與行之間存在很強(qiáng)的相關(guān)性)。正交變換在硬件技術(shù)中較為容易實(shí)現(xiàn),這是由(矩陣)電路對稱性決定的。為減少計(jì)算復(fù)雜度,在實(shí)際應(yīng)用上一般都采用基于一定尺寸塊的變換編碼,即把整幅圖像分成許多不重疊的塊,對每個塊進(jìn)行變換編碼。 基本原理變換編碼的通用模型如圖 所示。映射變換 量化 編碼反量化反映射變換 解碼信道原始數(shù)據(jù)恢復(fù)數(shù)據(jù)圖 變換編碼的通用模型 正交變換的去相關(guān)性映射變換的方法很多,一般是指函數(shù)變換法,而常用的又是正交變換法。當(dāng)變量 t 從∞ 到∞變換是,f(t)的取值有無窮多個,即使按照奈奎斯特采樣定理進(jìn)行采樣,要描述該信號也需要限制采樣間距保證有足夠的采樣點(diǎn)。從一個簡單的圖像實(shí)例來說明正交變換的去相關(guān)性。則圖 (a)中二維坐標(biāo)的 軸表示第一個像素可能取的 81x個灰度級, 軸表示第二個像素可能取的 8 個灰度級?;蛘哒f,絕大1x2多數(shù)圖像子塊落在圖 (a)中的弧度內(nèi)。1y21x2在原來坐標(biāo)系中,圖像子塊的兩個像素具有較大的相關(guān)性,能量的分布比較分散,兩者具有大致相同的方差 ;而在變換后的坐標(biāo)系中,圖像子塊的兩個像素之間的相221x??關(guān)性大大減弱,能量的分布向 軸集中,其 的方差也遠(yuǎn)大于 ,即 。因此用變換后的系數(shù)進(jìn)行編碼,將比直接使用原圖像數(shù)據(jù)編碼獲得更大的數(shù)據(jù)壓縮 [4]。如將新坐標(biāo)系用一組基矢量或變換基函數(shù)來表示,那么正交變換過程便可描述為圖像如何用一組所選定的基矢量進(jìn)行線性組合的過程。I對于變換編碼,除了對輸入信號如何變換以及如何從變換系數(shù)反變換恢復(fù)圖像之外,我們還關(guān)心變換前原始信號和變換后系數(shù)的統(tǒng)計(jì)特性,以便進(jìn)一步明確變換編碼性能。(2) 變換后數(shù)據(jù)的分布性。信息論的研究表明,圖像正交變換不改變信源的熵值,變換前后圖像的信息量并無損失,完全可以通過反變換得到原來的圖像值。(1)均值矢量和協(xié)方差矩陣設(shè)變換前平均值向量為 ,協(xié)方差矩陣為 ,變換后系數(shù)的平均值向量為 ,協(xié)方x?xCy?差矩陣為 ,則有:yC 或者 ()yTTx VYEVXE???}{{} xyV?CyTTxx ??? }))(()({或者 ()TxyC(2)總方差和總能量XX 大學(xué)學(xué)士學(xué)位論文12設(shè)變換前任一樣值 的方差 ,變換后系數(shù) 的方差為ix}){(22ii xixE????iy,于是總方差和總能量存在關(guān)系式:}){(22ii yiyE???? ()???Niyixii1212? ()?ii1212 (3)均方誤差如果只采用變換系數(shù)的前面 m 個值來恢復(fù)原來圖像,其重建值為 ,^][mTYVX?則重建圖像與原來圖像近似誤差為 ,其均方誤差為mkXe^? ()??????NmiyixiiE12122}{??由于變換前后總能量保持不變,按照能量從大到小選擇較大的 m 個系數(shù)重建時,其重建圖像接近原來圖像。(3) 具有較強(qiáng)的抗干擾能力,傳輸過程中的誤碼對圖像質(zhì)量的影響遠(yuǎn)小于預(yù)測編碼 [5]。由于其變換基矢量或者說變換矩陣是根據(jù)輸入圖像的統(tǒng)計(jì)性質(zhì)得出的,也就是說其變換基于 MATLAB 的 JPEG 基本系統(tǒng)編碼13矩陣是針對輸入圖像“ 量身定做 ”的,因此具有最佳的去相關(guān)性。)(xX??容易從 KL 變換的過程和結(jié)果得到 KL 變換具有以下性質(zhì):(1) KL 變換使矢量信號的各個分量互不相關(guān),即變換域信號的協(xié)方差矩陣為對角線型。XX 大學(xué)學(xué)士學(xué)位論文14基于 MATLAB 的 JPEG 基本系統(tǒng)編碼15第4章 JPEG圖像壓縮 JPEG概述 JPEG 是聯(lián)合圖像專家小組的英文縮寫。圖像壓縮的目的在于以較少的數(shù)據(jù)來表示圖像以節(jié)約存儲費(fèi)用,或者傳輸時間和費(fèi)用。JPEG 標(biāo)準(zhǔn)委員會完成了詳盡的技術(shù)評估、測試、選擇、有效化和文檔編制工作,形成了完整的國際標(biāo)準(zhǔn)。(2) 能適用于任何連續(xù)色調(diào)的圖像,長寬比不受限制,同時也不受限于景物內(nèi)容、圖像的復(fù)雜程度和統(tǒng)計(jì)特性等。③ 無失真編碼:該方法保證解碼后完全精確地恢復(fù)采用值。 離散余弦編碼DCT 變換的全稱是離散余弦變換,是指將一組光強(qiáng)數(shù)據(jù)轉(zhuǎn)換成頻率數(shù)據(jù),以便得知強(qiáng)度變化的情形。DCT 變換編碼其變換前后的信號熵和能量不變,在時域(或空域)中的 n 維信號 x 其變換核可分離的正、逆 DCT 變換分別定義如下 ()102)1(cos)(2)(10 ??????? NkNnxkCNXn , ?? ())()()(10 , ???Xnxn其中 ??????1210/)( NkkC, , ?DCT 的各行(列) 基矢量均是歸一正交的(為了保證變換前后熵和范數(shù)相等)。由于變換后系數(shù)矩陣右下角大多數(shù)高頻系數(shù)趨向于零,這樣就為結(jié)合 HVS 特性,采用(有死區(qū))量化、Zigzag 掃描、截斷 DCT 變字長壓縮編碼創(chuàng)造了條件,更重要的是為數(shù)字圖像/視音頻信號的壓縮找到了切實(shí)可行的方法。由于人眼對高頻分量遠(yuǎn)沒有低頻分量敏感,大量的圖像信息(如亮度)主要包含在低頻中,所以編碼時,可以忽略圖像的高頻分量,從而在視覺損失很小的情況下達(dá)到壓縮的目的。應(yīng)用程序可以根據(jù)圖像的性質(zhì)、顯示設(shè)備和觀察條件等因素設(shè)定量化表的值。量化表左上角的值較小,右下角的值較大,這樣就達(dá)到了保持低頻分量、抑制高頻分量的目的。編碼時,每個矩陣數(shù)據(jù)的 DC 值與 63 個 AC 值,將分別使用不同的 Huffman 編碼表,而亮度與色度也需要不同的 Huffman 編碼表,所以一共需要 4 個編碼表,才能順利地完成 JPEG 編碼工作。表 差值 Bits 數(shù)與差值內(nèi)容對照表差值 Bits DC 差值內(nèi)容0 01 1,12 3,2,2,33 7,…4,4,…74 15,…,8,8…,155 31,…,16,16,…,316 61,…,32,32,…637 127,…64,64,…,1278 255,…128,128,…,25518 511,…,256,256,…51110 1023,…,512,512, …,102311 2047,…,1024,1024,…,2047基于 MATLAB 的 JPEG 基本系統(tǒng)編碼19在差值前端另外加入一些差值的 Huffman 碼值,例如亮度差值為 5(101)的位數(shù)為 3,在 Huffman 碼值應(yīng)該是 100,兩者連接在一起即為 100101。從 DCT 變換的公式可以看出,直流(DC)系數(shù)反映了 88 子塊內(nèi)64 個像素均值的度量,它包含了整個圖像總能量的重要部分,因此將 DC 系數(shù)和其余 63XX 大學(xué)學(xué)士學(xué)位論文20個交流(AC) 系數(shù)分別編碼。AC 和 DC 均為二進(jìn)制補(bǔ)碼表示的整數(shù)。例如某一組亮度的中間符為 5/3,AC 值為 4,首先以 5/3 為索引值,從亮度 AC 的 Huffman 編碼表中找到1111111110011110Huffman 碼值,于是加上原來 100(4)即是用來取[5,4]的 Huffman 編碼基于 MATLAB 的 JPEG 基本系統(tǒng)編碼211111111110011110100,[5,4]表示 AC 值為 4 的前面有 5 個零。 JPEG 圖像數(shù)據(jù)壓縮發(fā)展JPEG 是一個適用范圍很廣的靜態(tài)圖像數(shù)據(jù)壓縮標(biāo)準(zhǔn),既可用于灰度圖像又可用于彩色圖像。輸入緩沖D C TZ Z 掃描量化碼流脈沖量化表霍夫曼編碼輸出脈沖編碼表圖 JPEG 系統(tǒng)模塊圖它對彩色圖像采用分量編碼。量化步長矩陣,它們是根據(jù)視覺心理實(shí)驗(yàn)得到的。其次,對 DCT 量化系數(shù)進(jìn)行熵編碼,進(jìn)一步壓縮碼率。在基本系統(tǒng)中共推薦了兩組 Huffman 碼表,一組用于亮度信號 Y,另一組用于色度信號 U,V。如果舍棄這些接近于 0 的DCT 系數(shù)值,在重構(gòu)圖像時并不會帶來畫面質(zhì)量的顯著下降,所以利用 DCT 進(jìn)行圖像壓縮編碼可以節(jié)約大量的存儲空間。圖像預(yù)處理所得到的數(shù)據(jù)是按逐列逐行掃描得到的。 量化部分程序流程圖對圖像進(jìn)行量化時,要選擇碼字的尺寸和碼字的大小。解碼就是按照索引代表的碼字將圖像重建出來?;?MATLAB 的 JPEG 基本系統(tǒng)編碼25開始結(jié)束輸入一幅原始圖像分成 8 8 像素塊 , 分別做 D C T 變換根據(jù)量化表 , 對變換系數(shù)進(jìn)行量化對量化后的變換系數(shù)進(jìn)行 Z i g Z a g 掃描對經(jīng)掃描得到的 D C 系數(shù)和 A C 系數(shù)分別進(jìn)行 H u f f m a n 熵編碼得到整個圖像編碼后的比特序列 , 并計(jì)算壓縮比特率對 D C 系數(shù)和 A C 系數(shù)分別進(jìn)行 H u f f m a n 熵編碼反掃描 、 反量化反 D C T 變換計(jì)算重建圖像的峰值信噪比圖 JPEG 編解碼 Matlab 程序流程圖Y 0 Y 1 Y 2 Y 3YC h 0 C h 1C bC r8 8 系數(shù)塊M C U 0 : Y 0 Y 1 C b 0 C r 0M C U 0M C U 1 M C U 2M C U 1 : Y 2 Y 3 C b 1 C r 1C r 0 C r 1圖 YCbCr 分量數(shù)據(jù)掃描順序XX 大學(xué)學(xué)士學(xué)位論文26開始是否寫滿一個數(shù)據(jù)塊 ?產(chǎn)生順序遞增地址掃描地址表輸出符合Z i g _ Z a g 順序的地址數(shù)據(jù)按掃描順序輸出數(shù)據(jù)數(shù)據(jù)寫入數(shù)據(jù)存儲器計(jì)算矢量距離的子函數(shù)結(jié)束開始N結(jié)束設(shè)置碼字的大小裝入和顯示原始圖像求出圖像像素的行數(shù)和列數(shù)進(jìn)行分塊處理設(shè)置碼數(shù)的大小圖 Zig_Zag 程序流程圖 圖 量化過程的流程圖結(jié)束裝入霍夫曼數(shù)據(jù)將最后兩個出現(xiàn)概率最小的消息合成一個消息將消息添加到隊(duì)列的最后 , 為 n 1 消息重新進(jìn)行排序做準(zhǔn)備碼字初始化為 0遍歷至原始消息 , 即葉子結(jié)點(diǎn) , 輸出該碼字使左分支編碼為 1 ,右分支編碼為 0初始化原始消息數(shù)目排序列表初始化分別遍歷左右分支結(jié)點(diǎn)將 n 個消息進(jìn)行排序獲得霍夫曼碼字開始圖 霍夫曼編碼程序流程圖基于 MATLAB 的 JPEG 基本系統(tǒng)編碼27 圖形用戶界面設(shè)計(jì)具體程序運(yùn)行的結(jié)果如圖 所示。圖 (d) 在(b)的基礎(chǔ)上選擇 lenna 圖像后所得出的結(jié)果基于 MATLAB 的 JPEG 基本系統(tǒng)編碼29(5) 選擇名為 “baboon”的圖像后,可以得到圖 (e)所示的結(jié)果。然而鼻子區(qū)域卻是連續(xù)色調(diào)的。壓縮結(jié)果主要與兩個因素有關(guān),也就是說,分析一個壓縮算法的性能好壞,不僅要研究不同比特率下的壓縮結(jié)果如何,還應(yīng)對圖像本身確定信號對壓縮結(jié)果的影響進(jìn)行分析與探討。“l(fā)enna”圖像是一種平滑圖像。 “baboon”圖像是一種邊緣圖像,從圖 (e) “ba