基于JPG標準的圖像壓縮課件_第1頁
基于JPG標準的圖像壓縮課件_第2頁
基于JPG標準的圖像壓縮課件_第3頁
基于JPG標準的圖像壓縮課件_第4頁
基于JPG標準的圖像壓縮課件_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于JPG標準的圖像壓縮

基于JPG標準的圖像壓縮1一、文獻綜述與選題背景信息時代,人們對使用計算機獲取信息、處理信息的依賴性越來越高。計算機系統(tǒng)面臨的是數(shù)值、文字、語言、音樂、圖形、動畫、靜圖像、電視視頻圖像等多種媒體。數(shù)字化的視頻和音頻信號的數(shù)量之大是驚人的,對于電視畫面的分辨率640×480的彩色圖像,30幀/s,則一秒鐘的數(shù)據(jù)量為:640×480×24×30=221.12M,所以播放時,需要221Mbps的通信回路。存儲時,1張CD可存640M,則僅可以存放2.89s的數(shù)據(jù)。大數(shù)據(jù)量的圖像信息會給存儲器的存儲容量,通信干線信道的帶寬,以及計算機的處理速度增加極大的壓力。單純靠增加存儲器容量,提高信道帶寬以及計算機的處理速度等方法來解決這個問題是不現(xiàn)實的,這時就要考慮壓縮。一、文獻綜述與選題背景信息時代,人們對使用計算機獲取信息、處2隨著多媒體技術的快速發(fā)展,靜止圖像的應用越來越廣泛。它的應用主要集中在圖像的存儲和圖像的傳輸兩方面,從具體應用中我們可以發(fā)現(xiàn)靜止圖像占用了越來越多的資源。在這樣的背景條件下,靜止圖像的壓縮成為了一個研究的熱點。目前靜止圖像的壓縮算法以JPEG(Joint

Photographic

Experts

Group)和JPEG2000為主。JPEG是第一個被廣泛接受的單色和彩色靜止圖像壓縮標準,它的名字源于“JointPhotographicExpertsGroup(聯(lián)合圖像專家組)”,它是由ISO/和CCITT協(xié)同工作的機構,這個機構的工作成果是ISO的國際標準ISO/IEC10918-1(連續(xù)色調靜止圖像的數(shù)字壓縮和編碼,digitalcompressionandcodingofcontinuoustonestillimages)和ITU-T的建議T.81。JPEG標準草案于1991年公布,1992年正式批準為國際標準,以后這個工作組的進一步增強和擴展形成了ISO10918-3和ITU-T建議T.81。隨著多媒體技術的快速發(fā)展,靜止圖像的應用越來越廣泛。它的應用3JPEG是一種采用預測編碼(DPCM)、離散余弦變換(DCT)以及熵編碼,以去除冗余的圖像和彩色數(shù)據(jù)的有損壓縮格式,能夠將圖像壓縮在很小的儲存空間,圖像中重復或不重要的資料會被丟失,因此容易造成圖像數(shù)據(jù)的損傷。尤其是使用過高的壓縮比例,將使最終解壓縮后恢復的圖像質量明顯降低,如果追求高品質圖像,不宜采用過高壓縮比例。但是JPEG壓縮技術十分先進,它用有損壓縮方式去除冗余的圖像數(shù)據(jù),在獲得極高的壓縮率的同時能展現(xiàn)十分豐富生動的圖像,也即可以用最少的磁盤空間得到較好的圖像品質。而且JPEG是一種很靈活的格式,具有調節(jié)圖像質量的功能,允許用不同的壓縮比例對文件進行壓縮,支持多種壓縮級別,壓縮比率通常在10:1到40:1之間,壓縮比越大,品質就越低;相反地,壓縮比越小,品質就越好。JPEG是一種采用預測編碼(DPCM)、離散余弦變換(DCT4比如可以把1.37Mb的BMP位圖文件壓縮至20.3KB。當然也可以在圖像質量和文件尺寸之間找到平衡點。JPEG格式壓縮的主要是高頻信息,對色彩的信息保留較好,適合應用于互聯(lián)網(wǎng),可減少圖像的傳輸時間,可以支持24bit真彩色,也普遍應用于需要連續(xù)色調的圖像。比如可以把1.37Mb的BMP位圖文件壓縮至20.3KB。當5JPEG的核心算法是DCT變換編碼,其壓縮性能基本反映了20世紀80年代末圖像壓縮的技術水平。但自從JPEG制定后的近10年,許多更有效的圖像壓縮技術已經(jīng)得到發(fā)展,如小波變換方法、分形方法、區(qū)域劃分方法等。其中,發(fā)展最成熟和性能及通用性最好的靜止圖像壓縮方法是小波變換方法。正因如此,制定了第二代靜止圖像壓縮標準,即JPEG2000,它的核心技術正是小波變換編碼。其核心編解碼器采用小波變換、算術編碼及嵌入式分層組織,較以往的靜止圖像壓縮標準復雜,它在同一個碼流中實現(xiàn)了無損和有損壓縮、分辨率和信噪比的累進性以及隨機訪問等優(yōu)良特性。JPEG的核心算法是DCT變換編碼,其壓縮性能基本反映了206JPEG2000作為JPEG的升級版,其壓縮率比JPEG高約30%左右,同時支持有損和無損壓縮。JPEG2000格式有一個極其重要的特征在于它能實現(xiàn)漸進傳輸,即先傳輸圖像的輪廓,然后逐步傳輸數(shù)據(jù),不斷提高圖像質量,讓圖像由朦朧到清晰顯示。此外,JPEG2000還支持所謂的"感興趣區(qū)域"特性,可以任意指定影像上感興趣區(qū)域的壓縮質量,還可以選擇指定的部分先解壓縮。JPEG2000作為JPEG的升級版,其壓縮率比JPEG高約7JPEG2000和JPEG相比優(yōu)勢明顯,且向下兼容,因此可取代傳統(tǒng)的JPEG格式因而可以被更廣泛的應用于互聯(lián)網(wǎng)、彩色拷貝、打印、掃描、數(shù)字攝影、遙感、醫(yī)學圖像、數(shù)字圖書館、數(shù)字存檔以及移動圖像通信等領域。雖然jpeg有很多優(yōu)點,但是其他的數(shù)據(jù)格式也有他們各自的優(yōu)點。比如說如果要打印圖像,特別是打印高質量的圖像,TIFF格式是更為合適的選擇。JPEG2000和JPEG相比優(yōu)勢明顯,且向下兼容,因此可取8JPEG壓縮技術可以說是所有圖像壓縮技術的基礎。如MJPEG(MotionJPEG)就是在JPEG基礎發(fā)展起來的動態(tài)圖像壓縮技術,它只單獨的對某一幀進行壓縮,而基本不考慮視頻流中不同幀之間的變化。使得可獲取清晰度很高的視頻圖像,而且可靈活設置每路的視頻清晰度和壓縮幀數(shù)。其壓縮后的畫面還可任意剪接。但它的缺陷也非常明顯,其一,丟幀現(xiàn)象嚴重、實時性差,在保證每路都必須是高清晰的前提下,很難完成實時壓縮;其二,壓縮效率低,存儲占用空間較大。后來又出現(xiàn)了多層式JPEG(ML-JPEG)壓縮技術,它采取漸層式技術,先傳輸?shù)徒馕龅膱D檔,然后再補送更細節(jié)的壓縮資料,使畫面品質改善。這種方式所需的時間雖然與原先的方式一樣。但由于可以先看到畫面,所以使用者會覺得這種方式較好。JPEG壓縮技術可以說是所有圖像壓縮技術的基礎。如MJPEG9而在靜止圖像壓縮中,還有其他不少的標準正在發(fā)展。如微軟今年3月份透露,該公司不久將向國際標準組織提交一個新的圖片格式,并表示其新格式可以提供更高的圖像質量和更好的壓縮能力,即HDPhoto格式。微軟希望能用它的格式來取代現(xiàn)在通用的JPEG格式。微軟稱,HDPhoto簡潔的運算法則可以減少圖像在壓縮過程中受到的損失,即便圖片大小僅有JPEG的一半,也將具有更高的質量。這種格式此外還能夠同時支持“無損”和“有損”兩種圖片數(shù)據(jù)壓縮方法,這兩種方法可以對圖像質量的產(chǎn)生不同的效果。微軟稱,HDPhoto可以對色平衡和曝光設置進行調節(jié),且不會像發(fā)生其它位圖格式經(jīng)常遇到的數(shù)據(jù)丟失或減少現(xiàn)象。無論HD是否可以取代JPEG,而JPEG在數(shù)字圖像壓縮發(fā)展中所做出的貢獻是舉足重輕的。而在靜止圖像壓縮中,還有其他不少的標準正在發(fā)展。如微軟今年310二、研究內容I、主要設計研究內容及關鍵技術JPEG壓縮格式是目前圖像處理領域里面用得最廣泛的一種圖像壓縮方式,本畢業(yè)設計將進行就JPEG標準對圖像進行編、解碼的研究。主要內容包括:1.從BMP格式圖像的文件中(未壓縮)讀出圖像,并能顯示。2.將BMP圖像數(shù)據(jù)以JPEG標準壓縮,保存為*.JPG文件。3.要求能讀出jpg文件,并顯示在界面上其中,JPEG的壓縮實現(xiàn)主要分成四個步驟:1.顏色模式轉換及采樣;2.DCT變換(離散余弦變換);3.量化;4.編碼(有算術編碼和哈夫曼編碼兩種,這里采用哈夫曼編碼)。二、研究內容I、主要設計研究內容及關鍵技術11(一)、顏色轉換及采樣

1.顏色轉換:對BMP圖像中的顏色數(shù)據(jù)進行由RGB一YCbCr的轉換,Y表示亮度,CbCr分別表示藍色度和紅色度。轉換公式:Y=0.2990R+0.5870G+0.1140BCb=-0.1687R-0.3313G+0.5000BCr=0.5000R-0.4187G-0.0813B這樣轉換以后就得到三個新的基色值,對這三個基色值來講,都可以當作一個獨立的圖像平面來進行壓縮編碼。2.采樣:顏色轉換后,保留每一點的亮度值Y,而色度值CbCr則是每兩點保留一點,在圖像的行和列方向上都可執(zhí)行顏色采樣。如果采用的是1:1:1的采樣比例,不用抽樣。若采用的采樣比是行列方向都是2:1:1,在行方向,每兩點保留一點,列方向也是每兩點保留一點,這樣如果假設原來的CbCr矩陣大小為M*S,則經(jīng)過2:1:1抽樣之后成了M/2*s/2=1/4M*S,只有原來的1/4了,圖像大大縮小,如果想減小圖像的失真度,則可行方向不抽樣或列方向不抽樣。(一)、顏色轉換及采樣

1.顏色轉換:對BMP圖像中的顏色數(shù)12(二)、二維DCT變換二維DCT變換公式為:F(u,v)=其中x,y代表圖像數(shù)據(jù)矩陣中的某個數(shù)據(jù)值的坐標位置

f(x,y)指圖像數(shù)據(jù)矩陣中該點的資料值

u,v指經(jīng)過DCT變換后矩陣中的某數(shù)值點的坐標位置,在這里u=x,v=yF(u,v)指經(jīng)過DCT變換后該坐標點的資料值。當u=0,v=0時,C(u)C(v)=1.414/2

當u>0,v>0時,C(u)C(v)=1,經(jīng)過變換后的資料值F(u,v)稱為頻率系數(shù)(或稱DFT系數(shù))。(二)、二維DCT變換二維DCT變換公式為:13(三)、量化量化過程實質上是把亮度數(shù)據(jù)Y和色度數(shù)據(jù)Cb/Cr由時域轉變成頻域(DCT變換)并濾除高頻分量的過程,由于人眼對高頻分量不敏感,所以可以濾除高頻分量,經(jīng)過量化以后的每一個8*8數(shù)據(jù)塊中,左上角第一個元素數(shù)據(jù)值為直流分量,稱為DC,其余63個資料為交流分量,稱為AC。(三)、量化量化過程實質上是把亮度數(shù)據(jù)Y和色度數(shù)據(jù)Cb/Cr14(四)、游程編碼,ZIGZAG掃描經(jīng)過量化后的DCT系數(shù)矩陣,除DC值一般不為零外,AC系數(shù)大多是在零點附近的浮點數(shù)。經(jīng)過取整以后,每一個8*8塊中,有大量的AC系數(shù)的值為0。為了把盡可能多的其值為0的AC系數(shù)串在一起,以利于AC編碼及提高壓縮比,還必須把YCbCr矩陣中的每一個8*8塊中的64個元素進行“之”字形排序(這樣就可以做到把盡可能多的0串在一起)。

(四)、游程編碼,ZIGZAG掃描經(jīng)過量化后的DCT系數(shù)矩陣15其過程示意圖如下:

圖例:量化后的系數(shù)按Z字型掃描箭頭方向表示“之”字形排序以后原8*8中元素的新的位置順序。其過程示意圖如下:圖例:量化后的系數(shù)按Z字型掃描16(五)、哈夫曼編碼哈夫曼編碼是一種一致性編碼法(又稱"熵編碼法"),用于數(shù)據(jù)的無損耗壓縮。它使用一張?zhí)厥獾木幋a表將源字符(例如某文件中的一個符號)進行編碼。編碼表是根據(jù)每一個源字符出現(xiàn)的估算概率而建立起來的(出現(xiàn)概率高的字符使用較短的編碼,反之出現(xiàn)概率低的則使用較長的編碼,這便使編碼之后的字符串的平均期望長度降低,從而達到無損壓縮數(shù)據(jù)的目的)。(五)、哈夫曼編碼哈夫曼編碼是一種一致性編碼法(又稱"熵編碼17II設計研究方法、技術路線本設計擬采用VC++來實現(xiàn)。程序實現(xiàn)的各個步驟如下:1、讀取BMP圖像信息,獲取圖像行像素和列像素數(shù)值,在BMP圖像中,圖像數(shù)據(jù)是以倒序存放的。亦即實際圖像第一行資料存放在BMP圖像數(shù)據(jù)矩陣的最后一行,依次類推,所以取資料的時候要從BMP圖像數(shù)據(jù)矩陣的最后一行開始讀起,把數(shù)據(jù)存放在新建數(shù)組(或稱矩陣)的第一行,一直取完。BMP圖像行像素和列像素的數(shù)值分別存于文件頭信息的第18和22字節(jié)。從Cimage類中可得到Width(圖像寬度)和hight(圖像高度)的數(shù)值。II設計研究方法、技術路線本設計擬采用VC++來實現(xiàn)。程序實182、得到Pwidth*Phight后便得知BMP圖像的像素點大小,而數(shù)據(jù)矩陣(三基色,RGB矩陣)的大小是Pwidth*Phight*3,因為每一個像素點都含有RGB三個數(shù)據(jù),我們要處理的是數(shù)據(jù)矩陣而不是像素點矩陣。所以,新建數(shù)組的大小是(Pwidth*3)*Phight。3、接下來,把這一個矩陣(包含BGR)拆分成三個獨立的B、G、R矩陣,得到三個新的矩陣(只包含B的矩陣,只包含G的矩陣,只包含R的矩陣),簡稱為B矩陣、G矩陣、R矩陣(大小為Pwidth*Phight),用程序實現(xiàn)拆分,只要依次取原矩陣的第1、4、7、10、13......個資料即得到B矩陣,依次讀取第2、5、8、11......個數(shù)據(jù)即得到G矩陣,依次讀第3、6、9、12......個資料即得到R矩陣。得到B、G、R矩陣后再利用顏色轉換公式很容易就可得到YCbCr矩陣。Y(n)=0.114B(n)+0.587G(n)+0.299R(n)Cb(n)=0.5B(n)-0.3313G(n)-0.1687R(n)Cr(n)=0.0813B(n)-0.14187G(n)+0.5R(n)(Forn=1ToPW*PH),其中PW為Pwidth的簡寫,PH為Phight的簡寫。2、得到Pwidth*Phight后便得知BMP圖像的像素點194、二維DCT變換由于VC中無法實現(xiàn)二維DCT計算公式,所以只有把二維的變換變成先做一維,再做另一維的變換,俗稱快速DCT變換??焖貲CT變換方法如下:設一個大小為8的數(shù)組SL(8),先讀取一個8*8塊的第一行資料值,賦給SL(8),對SL(8)進行一維DCT變換后得到一個新的SL(8)數(shù)組,再把SL(8)數(shù)組覆蓋到原來的8*8塊中相應的地方去。做完第一行后再做第二行,一直做完8行,一個8*8塊的一維DC即告完成,然后再做列方向的第二維DCT變換,變換公式一樣,只是由SL(8)取8*8塊的行資料變成取列數(shù)值。做完后覆蓋回原值,即得到一個8*8塊的DFT系數(shù)塊,再重復這兩個過程做第二個8*8塊......一直到做完全部8*8塊(Y,Cb,Cr)。這樣就得到Y、Cb、Cr的DFT系數(shù)矩陣。4、二維DCT變換由于VC中無法實現(xiàn)二維DCT計算公式,所以205、量化讀取Y矩陣中第一個8*8塊,與量化系數(shù)矩陣中對應的相乘,得到的值覆蓋回原矩陣,然后做第二個8*8塊,一直到做完全部8*8塊,然后做CbCr矩陣的量化,用另外一個系數(shù)矩陣。6、“之”字形掃描7、哈夫曼編碼哈夫曼編碼時必須判斷一個個DC(AC)的值,以及轉換成二進制代碼后的碼長,再去對照霍夫曼編碼表進行編碼,比如對一個DC值編碼,首先得先判斷該DC的值在哪段范圍內,在某一段范圍內的數(shù)值,其二進制代碼長相等。并要讓程序知道該DC的值到底為多少,然后才能進行編碼。5、量化218、壓縮過程完成以后,接下去要做的工作便是碼串存貯,存貯時需要注意的—點是在抽樣過程中得到1個Y塊對應1個Cb塊合一個Cr塊的對應關系,在存貯時也要按這種對應關系存貯,即1個Y塊的碼串后面緊接著存放與其對應的一個Cb塊的碼串及一個Cr塊的碼串,循環(huán)往復,存完所有串。這樣的1個Y8*8塊+1個Cb塊+1個Cr簡稱為MCU,是JPEG格式的最小存貯處理單元。

在對一幅大小為100,672bytes

8位BMP圖像文件進行Huffman編碼過程中,作者按照以下步驟實現(xiàn)了的壓縮和解壓縮算法。

1)掃描位圖文件的全部數(shù)據(jù)(對應用于調色板的編碼),完成數(shù)據(jù)頻度的統(tǒng)計。

2)依據(jù)數(shù)據(jù)出現(xiàn)的頻度建立哈夫曼樹。

3)將哈夫曼樹的信息寫入輸出文件(壓縮后文件),以備解壓縮時使用。

4)進行第二遍掃描,將原文件所有編碼數(shù)據(jù)轉化為哈夫曼編碼,保存到輸出文件。解壓縮則為逆過程,以下是編碼和解碼的實現(xiàn)算法。

8、壓縮過程完成以后,接下去要做的工作便是碼串存貯,存貯時需22a)定義數(shù)據(jù)結構Node如下:

Struct

Node

{long

freq;//該節(jié)點符號的頻率值,初值為0

int

parent;//該節(jié)點父節(jié)點的序號,初值為-1

int

right;//該節(jié)點右子節(jié)點的序號,初值為-1

int

left;//該節(jié)點左子節(jié)點的序號,初值為-1

|Bmp

tree[511]

說明:

之所以有511個節(jié)點,是因為每個字節(jié)可表示的符號個數(shù)為256個(對應于256種顏色)二叉樹有256個葉節(jié)點,根據(jù)二叉樹的性質總節(jié)點數(shù)為2·256-1=511個節(jié)點。這里用0~255個元素來依次對應256種顏色。由第256以后的元素來依次對應形成的各個父節(jié)點的信息,即父節(jié)點的編號從256開始。

a)定義數(shù)據(jù)結構Node如下:

Struct

Node23b)按照前述的壓縮步驟,先對欲壓縮文件的各個符號的使用次數(shù)進行統(tǒng)計,填充于bmp

tree[0~255]·freq項內;在已有的節(jié)點中找出頻率最低的兩個節(jié)點,給出它們的父節(jié)點,將兩個節(jié)點號填充于父節(jié)點的right,left,將父節(jié)點號填充于兩個節(jié)點的Parent內。重復步驟直到根節(jié)點,建樹工作完成。

建樹完成后進行編碼,對每個符號從符號的父節(jié)點開始。若節(jié)點的父節(jié)點值不為-1,則一直進行下去,直到樹根?;厮葸^程中遇左出0,遇右出1輸出編碼。

b)按照前述的壓縮步驟,先對欲壓縮文件的各個符號的使用次數(shù)進24Huffman編碼遞歸過程如下:

Void

Bmp

Huff

Code(int

node,int

child)

if{Bmp

tree[node]Parent!=-1};//父節(jié)點為-1的節(jié)點是樹根

Bmp

Huff

Code(Bmp

tree[node]parent,node);//若不為-1則遞歸

if(child≠-1);//若不為葉節(jié)點

{if(child=bmp

tree[node]right);//右子節(jié)點,輸出“1”

outputbit(1);

else

if(child=bmp

tree[node]left);//左子節(jié)點,輸出“0”

Outputbit(0);

}

Huffman編碼遞歸過程如下:

Void

Bmp

H25c)解碼時從樹根開始,遇1取右節(jié)點,遇0取左節(jié)點,直到找到節(jié)點號小于256的節(jié)點(葉節(jié)點)。

HuHnun解碼過程如下:

Int

Expand

Huffman(Void)

{int

node=Root-node-leaf;//解碼從根節(jié)點開始。

do

{Head

Flag=Getonebit();//從編碼串中讀取一位。

if(Head

Flag=0);//若為“0”,

{node=Huffman-Tree[(node-256)*2];}//取當前節(jié)點的左節(jié)點號;

else

if(Head

Flag=1)若為“1”

{node=Huffman-tree[)node-256)*2+1];}//取當前節(jié)點的右節(jié)點號;

}While(node>=256);//節(jié)點號大于256繼續(xù)循環(huán)

}expanddata-buffer[counter++]=node;//輸出解碼得到一個字節(jié)

壓縮后的文件大小為48,431bytes,壓縮比為48.1%,解壓縮后的數(shù)據(jù)讀出的圖像正常。c)解碼時從樹根開始,遇1取右節(jié)點,遇0取左節(jié)點,直到找到節(jié)26系統(tǒng)簡介主界面(這是一個用vc++創(chuàng)建的一個圖形界面。)系統(tǒng)簡介主界面(這是一個用vc++創(chuàng)建的一個圖形界面。)27文件下拉菜單文件下拉菜單28查看菜單欄查看菜單欄29幫助菜單

幫助菜單30基于JPG標準的圖像壓縮課件31打印打印32打開一個BMP文檔打開一個BMP文檔33基于JPG標準的圖像壓縮課件34另存為另存為35圖像壓縮圖像壓縮36可調節(jié)的圖像壓縮比率可調節(jié)的圖像壓縮比率37將BMP圖像保存為JPG圖像將BMP圖像保存為JPG圖像38打開一個大小為2.25M的BMP圖片打開一個大小為2.25M的BMP圖片39將壓縮率調到100%將壓縮率調到100%40最終得到大小為115K的JPG文檔。

(2.25M->115K)最終得到大小為115K的JPG文檔。

(2.25M->11541將一張BMP圖片采用不同壓縮率,

得到的兩張圖片做對比,發(fā)現(xiàn)沒有什么差別。將一張BMP圖片采用不同壓縮率,

得到的兩張圖片做對比,發(fā)現(xiàn)42到這里本設計已經(jīng)達到設計要求?;贘PG標準的圖像壓縮課件43

致謝

此次畢業(yè)設計是在王麗老師精心指導和其他同學的幫助下完成的。從硬件的設計到軟件的編寫和調試無不浸透著王老師的心血和其他同學的努力。在這幾個月的時間里,老師不僅以他們嚴謹?shù)目茖W態(tài)度、廣博的學識,而且以她寬厚待人、真誠正直的品德對學生言傳身教,這些都將使我受益終身。借此機會,我向老師表示最崇高的敬意和衷心的感謝。論文的完成過程中得到了資管系信息管理教研室其他老師廣大同學無私地幫助,在此對他們表示感謝。最后,衷心感謝各位專家在百忙之中對論文給予評審。由于作者水平和時間的限制,文中難免有不足,疏漏甚至錯誤之處,懇請給予批評指正,以便在今后的學習中進一步修正和完善,謝謝!!

致謝

此次畢業(yè)設計是在王麗老師精心指導和其他同學的幫助下完44(五)、參考文獻張旭東盧國棟馮健,《圖像編碼基礎和小波壓縮技術——原理、算法和標準》,清華大學出版社,北京2004陸宗騏,C/C++圖像處理編程,清華大學出版社,北京2006何斌,VisualC++數(shù)字圖像處理,人民郵電出版社,2001:685同志工作室,《VisualC++6.0開發(fā)技巧與實例教程》,人民郵電出版社,2000年5月第1版王耀南李樹濤毛建旭,計算機圖像處理與識別技術,高等教育出版社,2005:281張遠鵬,計算機圖像處理技術基礎,北京大學出版社,1996:310黃賢武等,數(shù)字圖像處理與壓縮編碼技術,電子科技大學出版社,2000:538KennethR.Castleman,DigitalImageProcessing,PearsonEducation,2003:568MaheshChand,GraphicsProgrammingwithGDI+,Addison-WesleyProfessional,2003//graphics/jpeg/(五)、參考文獻張旭東盧國棟馮健,《圖像編碼基礎和小波壓45基于JPG標準的圖像壓縮

基于JPG標準的圖像壓縮46一、文獻綜述與選題背景信息時代,人們對使用計算機獲取信息、處理信息的依賴性越來越高。計算機系統(tǒng)面臨的是數(shù)值、文字、語言、音樂、圖形、動畫、靜圖像、電視視頻圖像等多種媒體。數(shù)字化的視頻和音頻信號的數(shù)量之大是驚人的,對于電視畫面的分辨率640×480的彩色圖像,30幀/s,則一秒鐘的數(shù)據(jù)量為:640×480×24×30=221.12M,所以播放時,需要221Mbps的通信回路。存儲時,1張CD可存640M,則僅可以存放2.89s的數(shù)據(jù)。大數(shù)據(jù)量的圖像信息會給存儲器的存儲容量,通信干線信道的帶寬,以及計算機的處理速度增加極大的壓力。單純靠增加存儲器容量,提高信道帶寬以及計算機的處理速度等方法來解決這個問題是不現(xiàn)實的,這時就要考慮壓縮。一、文獻綜述與選題背景信息時代,人們對使用計算機獲取信息、處47隨著多媒體技術的快速發(fā)展,靜止圖像的應用越來越廣泛。它的應用主要集中在圖像的存儲和圖像的傳輸兩方面,從具體應用中我們可以發(fā)現(xiàn)靜止圖像占用了越來越多的資源。在這樣的背景條件下,靜止圖像的壓縮成為了一個研究的熱點。目前靜止圖像的壓縮算法以JPEG(Joint

Photographic

Experts

Group)和JPEG2000為主。JPEG是第一個被廣泛接受的單色和彩色靜止圖像壓縮標準,它的名字源于“JointPhotographicExpertsGroup(聯(lián)合圖像專家組)”,它是由ISO/和CCITT協(xié)同工作的機構,這個機構的工作成果是ISO的國際標準ISO/IEC10918-1(連續(xù)色調靜止圖像的數(shù)字壓縮和編碼,digitalcompressionandcodingofcontinuoustonestillimages)和ITU-T的建議T.81。JPEG標準草案于1991年公布,1992年正式批準為國際標準,以后這個工作組的進一步增強和擴展形成了ISO10918-3和ITU-T建議T.81。隨著多媒體技術的快速發(fā)展,靜止圖像的應用越來越廣泛。它的應用48JPEG是一種采用預測編碼(DPCM)、離散余弦變換(DCT)以及熵編碼,以去除冗余的圖像和彩色數(shù)據(jù)的有損壓縮格式,能夠將圖像壓縮在很小的儲存空間,圖像中重復或不重要的資料會被丟失,因此容易造成圖像數(shù)據(jù)的損傷。尤其是使用過高的壓縮比例,將使最終解壓縮后恢復的圖像質量明顯降低,如果追求高品質圖像,不宜采用過高壓縮比例。但是JPEG壓縮技術十分先進,它用有損壓縮方式去除冗余的圖像數(shù)據(jù),在獲得極高的壓縮率的同時能展現(xiàn)十分豐富生動的圖像,也即可以用最少的磁盤空間得到較好的圖像品質。而且JPEG是一種很靈活的格式,具有調節(jié)圖像質量的功能,允許用不同的壓縮比例對文件進行壓縮,支持多種壓縮級別,壓縮比率通常在10:1到40:1之間,壓縮比越大,品質就越低;相反地,壓縮比越小,品質就越好。JPEG是一種采用預測編碼(DPCM)、離散余弦變換(DCT49比如可以把1.37Mb的BMP位圖文件壓縮至20.3KB。當然也可以在圖像質量和文件尺寸之間找到平衡點。JPEG格式壓縮的主要是高頻信息,對色彩的信息保留較好,適合應用于互聯(lián)網(wǎng),可減少圖像的傳輸時間,可以支持24bit真彩色,也普遍應用于需要連續(xù)色調的圖像。比如可以把1.37Mb的BMP位圖文件壓縮至20.3KB。當50JPEG的核心算法是DCT變換編碼,其壓縮性能基本反映了20世紀80年代末圖像壓縮的技術水平。但自從JPEG制定后的近10年,許多更有效的圖像壓縮技術已經(jīng)得到發(fā)展,如小波變換方法、分形方法、區(qū)域劃分方法等。其中,發(fā)展最成熟和性能及通用性最好的靜止圖像壓縮方法是小波變換方法。正因如此,制定了第二代靜止圖像壓縮標準,即JPEG2000,它的核心技術正是小波變換編碼。其核心編解碼器采用小波變換、算術編碼及嵌入式分層組織,較以往的靜止圖像壓縮標準復雜,它在同一個碼流中實現(xiàn)了無損和有損壓縮、分辨率和信噪比的累進性以及隨機訪問等優(yōu)良特性。JPEG的核心算法是DCT變換編碼,其壓縮性能基本反映了2051JPEG2000作為JPEG的升級版,其壓縮率比JPEG高約30%左右,同時支持有損和無損壓縮。JPEG2000格式有一個極其重要的特征在于它能實現(xiàn)漸進傳輸,即先傳輸圖像的輪廓,然后逐步傳輸數(shù)據(jù),不斷提高圖像質量,讓圖像由朦朧到清晰顯示。此外,JPEG2000還支持所謂的"感興趣區(qū)域"特性,可以任意指定影像上感興趣區(qū)域的壓縮質量,還可以選擇指定的部分先解壓縮。JPEG2000作為JPEG的升級版,其壓縮率比JPEG高約52JPEG2000和JPEG相比優(yōu)勢明顯,且向下兼容,因此可取代傳統(tǒng)的JPEG格式因而可以被更廣泛的應用于互聯(lián)網(wǎng)、彩色拷貝、打印、掃描、數(shù)字攝影、遙感、醫(yī)學圖像、數(shù)字圖書館、數(shù)字存檔以及移動圖像通信等領域。雖然jpeg有很多優(yōu)點,但是其他的數(shù)據(jù)格式也有他們各自的優(yōu)點。比如說如果要打印圖像,特別是打印高質量的圖像,TIFF格式是更為合適的選擇。JPEG2000和JPEG相比優(yōu)勢明顯,且向下兼容,因此可取53JPEG壓縮技術可以說是所有圖像壓縮技術的基礎。如MJPEG(MotionJPEG)就是在JPEG基礎發(fā)展起來的動態(tài)圖像壓縮技術,它只單獨的對某一幀進行壓縮,而基本不考慮視頻流中不同幀之間的變化。使得可獲取清晰度很高的視頻圖像,而且可靈活設置每路的視頻清晰度和壓縮幀數(shù)。其壓縮后的畫面還可任意剪接。但它的缺陷也非常明顯,其一,丟幀現(xiàn)象嚴重、實時性差,在保證每路都必須是高清晰的前提下,很難完成實時壓縮;其二,壓縮效率低,存儲占用空間較大。后來又出現(xiàn)了多層式JPEG(ML-JPEG)壓縮技術,它采取漸層式技術,先傳輸?shù)徒馕龅膱D檔,然后再補送更細節(jié)的壓縮資料,使畫面品質改善。這種方式所需的時間雖然與原先的方式一樣。但由于可以先看到畫面,所以使用者會覺得這種方式較好。JPEG壓縮技術可以說是所有圖像壓縮技術的基礎。如MJPEG54而在靜止圖像壓縮中,還有其他不少的標準正在發(fā)展。如微軟今年3月份透露,該公司不久將向國際標準組織提交一個新的圖片格式,并表示其新格式可以提供更高的圖像質量和更好的壓縮能力,即HDPhoto格式。微軟希望能用它的格式來取代現(xiàn)在通用的JPEG格式。微軟稱,HDPhoto簡潔的運算法則可以減少圖像在壓縮過程中受到的損失,即便圖片大小僅有JPEG的一半,也將具有更高的質量。這種格式此外還能夠同時支持“無損”和“有損”兩種圖片數(shù)據(jù)壓縮方法,這兩種方法可以對圖像質量的產(chǎn)生不同的效果。微軟稱,HDPhoto可以對色平衡和曝光設置進行調節(jié),且不會像發(fā)生其它位圖格式經(jīng)常遇到的數(shù)據(jù)丟失或減少現(xiàn)象。無論HD是否可以取代JPEG,而JPEG在數(shù)字圖像壓縮發(fā)展中所做出的貢獻是舉足重輕的。而在靜止圖像壓縮中,還有其他不少的標準正在發(fā)展。如微軟今年355二、研究內容I、主要設計研究內容及關鍵技術JPEG壓縮格式是目前圖像處理領域里面用得最廣泛的一種圖像壓縮方式,本畢業(yè)設計將進行就JPEG標準對圖像進行編、解碼的研究。主要內容包括:1.從BMP格式圖像的文件中(未壓縮)讀出圖像,并能顯示。2.將BMP圖像數(shù)據(jù)以JPEG標準壓縮,保存為*.JPG文件。3.要求能讀出jpg文件,并顯示在界面上其中,JPEG的壓縮實現(xiàn)主要分成四個步驟:1.顏色模式轉換及采樣;2.DCT變換(離散余弦變換);3.量化;4.編碼(有算術編碼和哈夫曼編碼兩種,這里采用哈夫曼編碼)。二、研究內容I、主要設計研究內容及關鍵技術56(一)、顏色轉換及采樣

1.顏色轉換:對BMP圖像中的顏色數(shù)據(jù)進行由RGB一YCbCr的轉換,Y表示亮度,CbCr分別表示藍色度和紅色度。轉換公式:Y=0.2990R+0.5870G+0.1140BCb=-0.1687R-0.3313G+0.5000BCr=0.5000R-0.4187G-0.0813B這樣轉換以后就得到三個新的基色值,對這三個基色值來講,都可以當作一個獨立的圖像平面來進行壓縮編碼。2.采樣:顏色轉換后,保留每一點的亮度值Y,而色度值CbCr則是每兩點保留一點,在圖像的行和列方向上都可執(zhí)行顏色采樣。如果采用的是1:1:1的采樣比例,不用抽樣。若采用的采樣比是行列方向都是2:1:1,在行方向,每兩點保留一點,列方向也是每兩點保留一點,這樣如果假設原來的CbCr矩陣大小為M*S,則經(jīng)過2:1:1抽樣之后成了M/2*s/2=1/4M*S,只有原來的1/4了,圖像大大縮小,如果想減小圖像的失真度,則可行方向不抽樣或列方向不抽樣。(一)、顏色轉換及采樣

1.顏色轉換:對BMP圖像中的顏色數(shù)57(二)、二維DCT變換二維DCT變換公式為:F(u,v)=其中x,y代表圖像數(shù)據(jù)矩陣中的某個數(shù)據(jù)值的坐標位置

f(x,y)指圖像數(shù)據(jù)矩陣中該點的資料值

u,v指經(jīng)過DCT變換后矩陣中的某數(shù)值點的坐標位置,在這里u=x,v=yF(u,v)指經(jīng)過DCT變換后該坐標點的資料值。當u=0,v=0時,C(u)C(v)=1.414/2

當u>0,v>0時,C(u)C(v)=1,經(jīng)過變換后的資料值F(u,v)稱為頻率系數(shù)(或稱DFT系數(shù))。(二)、二維DCT變換二維DCT變換公式為:58(三)、量化量化過程實質上是把亮度數(shù)據(jù)Y和色度數(shù)據(jù)Cb/Cr由時域轉變成頻域(DCT變換)并濾除高頻分量的過程,由于人眼對高頻分量不敏感,所以可以濾除高頻分量,經(jīng)過量化以后的每一個8*8數(shù)據(jù)塊中,左上角第一個元素數(shù)據(jù)值為直流分量,稱為DC,其余63個資料為交流分量,稱為AC。(三)、量化量化過程實質上是把亮度數(shù)據(jù)Y和色度數(shù)據(jù)Cb/Cr59(四)、游程編碼,ZIGZAG掃描經(jīng)過量化后的DCT系數(shù)矩陣,除DC值一般不為零外,AC系數(shù)大多是在零點附近的浮點數(shù)。經(jīng)過取整以后,每一個8*8塊中,有大量的AC系數(shù)的值為0。為了把盡可能多的其值為0的AC系數(shù)串在一起,以利于AC編碼及提高壓縮比,還必須把YCbCr矩陣中的每一個8*8塊中的64個元素進行“之”字形排序(這樣就可以做到把盡可能多的0串在一起)。

(四)、游程編碼,ZIGZAG掃描經(jīng)過量化后的DCT系數(shù)矩陣60其過程示意圖如下:

圖例:量化后的系數(shù)按Z字型掃描箭頭方向表示“之”字形排序以后原8*8中元素的新的位置順序。其過程示意圖如下:圖例:量化后的系數(shù)按Z字型掃描61(五)、哈夫曼編碼哈夫曼編碼是一種一致性編碼法(又稱"熵編碼法"),用于數(shù)據(jù)的無損耗壓縮。它使用一張?zhí)厥獾木幋a表將源字符(例如某文件中的一個符號)進行編碼。編碼表是根據(jù)每一個源字符出現(xiàn)的估算概率而建立起來的(出現(xiàn)概率高的字符使用較短的編碼,反之出現(xiàn)概率低的則使用較長的編碼,這便使編碼之后的字符串的平均期望長度降低,從而達到無損壓縮數(shù)據(jù)的目的)。(五)、哈夫曼編碼哈夫曼編碼是一種一致性編碼法(又稱"熵編碼62II設計研究方法、技術路線本設計擬采用VC++來實現(xiàn)。程序實現(xiàn)的各個步驟如下:1、讀取BMP圖像信息,獲取圖像行像素和列像素數(shù)值,在BMP圖像中,圖像數(shù)據(jù)是以倒序存放的。亦即實際圖像第一行資料存放在BMP圖像數(shù)據(jù)矩陣的最后一行,依次類推,所以取資料的時候要從BMP圖像數(shù)據(jù)矩陣的最后一行開始讀起,把數(shù)據(jù)存放在新建數(shù)組(或稱矩陣)的第一行,一直取完。BMP圖像行像素和列像素的數(shù)值分別存于文件頭信息的第18和22字節(jié)。從Cimage類中可得到Width(圖像寬度)和hight(圖像高度)的數(shù)值。II設計研究方法、技術路線本設計擬采用VC++來實現(xiàn)。程序實632、得到Pwidth*Phight后便得知BMP圖像的像素點大小,而數(shù)據(jù)矩陣(三基色,RGB矩陣)的大小是Pwidth*Phight*3,因為每一個像素點都含有RGB三個數(shù)據(jù),我們要處理的是數(shù)據(jù)矩陣而不是像素點矩陣。所以,新建數(shù)組的大小是(Pwidth*3)*Phight。3、接下來,把這一個矩陣(包含BGR)拆分成三個獨立的B、G、R矩陣,得到三個新的矩陣(只包含B的矩陣,只包含G的矩陣,只包含R的矩陣),簡稱為B矩陣、G矩陣、R矩陣(大小為Pwidth*Phight),用程序實現(xiàn)拆分,只要依次取原矩陣的第1、4、7、10、13......個資料即得到B矩陣,依次讀取第2、5、8、11......個數(shù)據(jù)即得到G矩陣,依次讀第3、6、9、12......個資料即得到R矩陣。得到B、G、R矩陣后再利用顏色轉換公式很容易就可得到YCbCr矩陣。Y(n)=0.114B(n)+0.587G(n)+0.299R(n)Cb(n)=0.5B(n)-0.3313G(n)-0.1687R(n)Cr(n)=0.0813B(n)-0.14187G(n)+0.5R(n)(Forn=1ToPW*PH),其中PW為Pwidth的簡寫,PH為Phight的簡寫。2、得到Pwidth*Phight后便得知BMP圖像的像素點644、二維DCT變換由于VC中無法實現(xiàn)二維DCT計算公式,所以只有把二維的變換變成先做一維,再做另一維的變換,俗稱快速DCT變換??焖貲CT變換方法如下:設一個大小為8的數(shù)組SL(8),先讀取一個8*8塊的第一行資料值,賦給SL(8),對SL(8)進行一維DCT變換后得到一個新的SL(8)數(shù)組,再把SL(8)數(shù)組覆蓋到原來的8*8塊中相應的地方去。做完第一行后再做第二行,一直做完8行,一個8*8塊的一維DC即告完成,然后再做列方向的第二維DCT變換,變換公式一樣,只是由SL(8)取8*8塊的行資料變成取列數(shù)值。做完后覆蓋回原值,即得到一個8*8塊的DFT系數(shù)塊,再重復這兩個過程做第二個8*8塊......一直到做完全部8*8塊(Y,Cb,Cr)。這樣就得到Y、Cb、Cr的DFT系數(shù)矩陣。4、二維DCT變換由于VC中無法實現(xiàn)二維DCT計算公式,所以655、量化讀取Y矩陣中第一個8*8塊,與量化系數(shù)矩陣中對應的相乘,得到的值覆蓋回原矩陣,然后做第二個8*8塊,一直到做完全部8*8塊,然后做CbCr矩陣的量化,用另外一個系數(shù)矩陣。6、“之”字形掃描7、哈夫曼編碼哈夫曼編碼時必須判斷一個個DC(AC)的值,以及轉換成二進制代碼后的碼長,再去對照霍夫曼編碼表進行編碼,比如對一個DC值編碼,首先得先判斷該DC的值在哪段范圍內,在某一段范圍內的數(shù)值,其二進制代碼長相等。并要讓程序知道該DC的值到底為多少,然后才能進行編碼。5、量化668、壓縮過程完成以后,接下去要做的工作便是碼串存貯,存貯時需要注意的—點是在抽樣過程中得到1個Y塊對應1個Cb塊合一個Cr塊的對應關系,在存貯時也要按這種對應關系存貯,即1個Y塊的碼串后面緊接著存放與其對應的一個Cb塊的碼串及一個Cr塊的碼串,循環(huán)往復,存完所有串。這樣的1個Y8*8塊+1個Cb塊+1個Cr簡稱為MCU,是JPEG格式的最小存貯處理單元。

在對一幅大小為100,672bytes

8位BMP圖像文件進行Huffman編碼過程中,作者按照以下步驟實現(xiàn)了的壓縮和解壓縮算法。

1)掃描位圖文件的全部數(shù)據(jù)(對應用于調色板的編碼),完成數(shù)據(jù)頻度的統(tǒng)計。

2)依據(jù)數(shù)據(jù)出現(xiàn)的頻度建立哈夫曼樹。

3)將哈夫曼樹的信息寫入輸出文件(壓縮后文件),以備解壓縮時使用。

4)進行第二遍掃描,將原文件所有編碼數(shù)據(jù)轉化為哈夫曼編碼,保存到輸出文件。解壓縮則為逆過程,以下是編碼和解碼的實現(xiàn)算法。

8、壓縮過程完成以后,接下去要做的工作便是碼串存貯,存貯時需67a)定義數(shù)據(jù)結構Node如下:

Struct

Node

{long

freq;//該節(jié)點符號的頻率值,初值為0

int

parent;//該節(jié)點父節(jié)點的序號,初值為-1

int

right;//該節(jié)點右子節(jié)點的序號,初值為-1

int

left;//該節(jié)點左子節(jié)點的序號,初值為-1

|Bmp

tree[511]

說明:

之所以有511個節(jié)點,是因為每個字節(jié)可表示的符號個數(shù)為256個(對應于256種顏色)二叉樹有256個葉節(jié)點,根據(jù)二叉樹的性質總節(jié)點數(shù)為2·256-1=511個節(jié)點。這里用0~255個元素來依次對應256種顏色。由第256以后的元素來依次對應形成的各個父節(jié)點的信息,即父節(jié)點的編號從256開始。

a)定義數(shù)據(jù)結構Node如下:

Struct

Node68b)按照前述的壓縮步驟,先對欲壓縮文件的各個符號的使用次數(shù)進行統(tǒng)計,填充于bmp

tree[0~255]·freq項內;在已有的節(jié)點中找出頻率最低的兩個節(jié)點,給出它們的父節(jié)點,將兩個節(jié)點號填充于父節(jié)點的right,left,將父節(jié)點號填充于兩個節(jié)點的Parent內。重復步驟直到根節(jié)點,建樹工作完成。

建樹完成后進行編碼,對每個符號從符號的父節(jié)點開始。若節(jié)點的父節(jié)點值不為-1,則一直進行下去,直到樹根?;厮葸^程中遇左出0,遇右出1輸出編碼。

b)按照前述的壓縮步驟,先對欲壓縮文件的各個符號的使用次數(shù)進69Huffman編碼遞歸過程如下:

Void

Bmp

Huff

Code(int

node,int

child)

if{Bmp

tree[node]Parent!=-1};//父節(jié)點為-1的節(jié)點是樹根

Bmp

Huff

Code(Bmp

tree[node]parent,node);//若不為-1則遞歸

if(child≠-1);//若不為葉節(jié)點

{if(child=bmp

tree[node]right);//右子節(jié)點,輸出“1”

outputbit(1);

else

if(child=bmp

tre

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論