多媒體數(shù)據(jù)壓縮試驗報告_第1頁
多媒體數(shù)據(jù)壓縮試驗報告_第2頁
多媒體數(shù)據(jù)壓縮試驗報告_第3頁
多媒體數(shù)據(jù)壓縮試驗報告_第4頁
多媒體數(shù)據(jù)壓縮試驗報告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.多媒體數(shù)據(jù)壓縮實驗報告篇一:多媒體實驗報告_文件壓縮課程設(shè)計報告實驗題目:文件壓縮程序姓名:指導(dǎo)教師:學(xué)院:計算機學(xué)院專業(yè):計算機科學(xué)與技術(shù)學(xué)號:提交報告時間:20年月日四川大學(xué)一,需求分析:有兩種形式的重復(fù)存在于計算機數(shù)據(jù)中,文件壓縮程序就是對這兩種重復(fù)進(jìn)行了壓縮。一種是短語形式的重復(fù),即三個字節(jié)以上的重復(fù),對于這種重復(fù),壓縮程序用兩個數(shù)字:1.重復(fù)位置距當(dāng)前壓縮位置的距離;2.重復(fù)的長度,來表示這個重復(fù),假設(shè)這兩個數(shù)字各占一個字節(jié),于是數(shù)據(jù)便得到了壓縮。第二種重復(fù)為單字節(jié)的重復(fù),一個字節(jié)只有256種可能的取值,所以這種重復(fù)是必然的。給256種字節(jié)取值重新編碼,使出現(xiàn)較多的字節(jié)使用較短的編碼,出現(xiàn)較少的字節(jié)使用較長的編碼,這樣一來,變短的字節(jié)相對于變長的字節(jié)更多,文件的總長度就會減少,并且,字節(jié)使用比例越不均文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.勻,壓縮比例就越大。編碼式壓縮必須在短語式壓縮之后進(jìn)行,因為編碼式壓縮后,原先八位二進(jìn)制值的字節(jié)就被破壞了,這樣文件中短語式重復(fù)的傾向也會被破壞(除非先進(jìn)行解碼)。另外,短語式壓縮后的結(jié)果:那些剩下的未被匹配的單、雙字節(jié)和得到匹配的距離、長度值仍然具有取值分布不均勻性,因此,兩種壓縮方式的順序不能變。本程序設(shè)計只做了編碼式壓縮,采用Huffman編碼進(jìn)行壓縮和解壓縮。Huffman編碼是一種可變長編碼方式,是二叉樹的一種特殊轉(zhuǎn)化形式。編碼的原理是:將使用次數(shù)多的代碼轉(zhuǎn)換成長度較短的代碼,而使用次數(shù)少的可以使用較長的編碼,并且保持編碼的唯一可解性。根據(jù)ascii碼文件中各ascii字符出現(xiàn)的頻率情況創(chuàng)建Huffman樹,再將各字符對應(yīng)的哈夫曼編碼寫入文件中。同時,亦可根據(jù)對應(yīng)的哈夫曼樹,將哈夫曼編碼文件解壓成字符文件.一、概要設(shè)計:壓縮過程的實現(xiàn):壓縮過程的流程是清晰而簡單的:1.創(chuàng)建Huffman樹2.打開需壓縮文件3.將需壓縮文件中的每個ascii碼對應(yīng)的huffman編碼按bit單位輸出生成壓縮文件壓縮結(jié)束。文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.其中,步驟1和步驟3是壓縮過程的關(guān)鍵。?步驟1:這里所要做工作是得到Huffman數(shù)中各葉子結(jié)點字符出現(xiàn)的頻率并進(jìn)行創(chuàng)建.統(tǒng)計字符出現(xiàn)的頻率可以有很多方法:如每次創(chuàng)建前掃描被創(chuàng)建的文件,“實時”的生成各字符的出現(xiàn)頻率;或者是創(chuàng)建前即做好統(tǒng)計.這里采用的是前一種方法。?步驟3:將需壓縮文件中的每個ascii碼對應(yīng)的huffman編碼按bit單位輸出.這是本壓縮程序中最關(guān)鍵的部分:這里涉及“轉(zhuǎn)換”和“輸出”兩個關(guān)鍵步驟:“轉(zhuǎn)換”部分大可不必去通過遍歷Huffman樹來找到每個字符對應(yīng)的哈夫曼編碼,可以將每個Huffman碼值及其對應(yīng)的ascii碼存放于如下所示的結(jié)構(gòu)體中:解壓縮過程的實現(xiàn):如果說,壓縮的過程可以通過查找codeList來加速實現(xiàn)的話,而解壓縮則必須通過查找huffman樹才能加以實現(xiàn).查找的過程是簡單的,可以根據(jù)huffman樹的性質(zhì)來做,當(dāng)haffCode的當(dāng)前bit位為0時,則向左枝展開搜索;當(dāng)前bit位為1時,則向右枝展開搜索,當(dāng)遇到葉子結(jié)點時,則輸出 haffCode對應(yīng)的asciiCode。二、詳細(xì)設(shè)計:文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.核心算法源程序:Huffman樹建立源程序:// //huffmantree.h//霍夫曼樹#ifndefHUFFMANTREE#defineHUFFMANTREE#defineDefaultsize300#include#include"bintree.h“#include"heap.h"classCode{public:intcode;Code*link;Code(intc=0,Code*l=NULL):code(c),link(l){};1;classCharNameNode{public:unsignedcharcharname;//要這樣才行Code*link;CharNameNode(unsignedcharc=0,Code*l=NULL):charname(c),link(l){};1;templateclassHuffmanTree:publicBinaryTree{public:intkey;

文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.HuffmanTree(){};HuffmanTree(HuffmanTree&ht1,HuffmanTree&ht2){Typetemp=0;//可能有變key=ht1.key+ht2.key;root= newBinTreeNode(0,Copy(ht1.root),Copy(ht2.root));}voidBuild(int*fr,Type*value,intn,HuffmanTree&newtree);voidPath(BinTreeNode*start,Code*first,Code*last,CharNameNode*Node,int&i);//一個數(shù)組};templatevoidHuffmanTree::Build(int*fr,Type*value,intn,HuffmanTree&newtree){//fr為value(值)對應(yīng)的權(quán)inti;HuffmanTreefirst,second;HuffmanTreeNode[Defaultsize];MinHeap>hp;assert(n>=0&&n Node[i].root=newBinTreeNode(value[i],NULL,NULL);Node[i].key=fr[i];}hp=MinHeap>(Node,n);for(i=0;ihp=MinHeap>(Node,n);for(i=0;i文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.hp.RemoveMin(first);hp.RemoveMin(second);HuffmanTree* temp=newHuffmanTree(first,second);hp.Insert(*temp);}hp.RemoveMin(newtree);}templatevoidHuffmanTree::Path(BinTreeNode*start,Code*first,Code*last,CharNameNode*Node,int&i)//一個數(shù)組{if(start==NULL)return;//if(start->GetData()!=0)//是葉結(jié)點嚴(yán)重錯誤,可能葉結(jié)點也是0 ! !if(start->GetLeft()==NULL&&start->GetRight()==NULL){Node[i].charname=start->GetData();Node[i].link=NULL;if(first==NULL)return;Node[i].link=newCode(first->code);Code*p=first->link,*q=Node[i].link;while(p!=NULL){q->link=newCode(p->code);q=q->link;p=p->link;}q->link=NULL;i++;return;}Code*temp=newCode;//進(jìn)入左子樹assert(temp);文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.if(first==NULL)first=last=temp;else{last->link=temp;last=last->link;}Path(start->GetLeft(),first,last,Node,i);last->code=1;Path(start->GetRight(),first,last,Node,i);temp=first;if(first==last){deletelast;first=last=NULL;return;}while(temp->link!=last)temp=temp->link;temp->link=NULL;deletelast;last=temp;}#endif實現(xiàn)二叉樹的算法源程序:// //bintree.h//用指針實現(xiàn)的二叉樹//Type類型必須有重載>及=運算#ifndefBINTREE#defineBINTREE#include#include文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.intMax(inta,intb){returna>b?a:b;}templateclassBinaryTree;templatee>classBinTreeNode{friendclassBinaryTree;public:BinTreeNode():leftchild(NULL),rightchild(NULL){};BinTreeNode(Typeitem,BinTreeNode*left=NULL,BinTreeNode*right=NULL):data(item),leftchild(left),rightchild(right){};TypeGetData()const{returndata;}BinTreeNode*GetLeft()const{returnleftchild;}BinTreeNode*GetRight()const{returnrightchild;}voidSetData(constType&item){data=item;}voidSetLeft(BinTreeNode*L){leftchild=L;}voidSetRight(BinTreeNode*R){rightchild=R;}private:BinTreeNode*leftchild,*rightchild;Typedata;篇二:多媒體實驗報告二圖片的壓縮處理計算機科學(xué)與技術(shù)學(xué)院文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.XX-XX學(xué)年第1學(xué)期《多媒體技術(shù)》實驗二:圖像壓縮算法實現(xiàn)專業(yè):學(xué)號:姓名:教師:完成日期:多媒體技術(shù)實驗二實驗報告(一)實驗?zāi)康?理解有損壓縮和無損壓縮的概念;.理解圖像壓縮的主要原則和目的;.了解幾種常用的圖像壓縮編碼方式;.利用MATLAB程序進(jìn)行圖像壓縮;(二)實驗環(huán)境.高檔微機:MPC.課前準(zhǔn)備:標(biāo)準(zhǔn)實驗紙張若干張.操作系統(tǒng):WindowsXX或WindowsXP中文版.編程工具:Matlab7.0(三)實驗過程及結(jié)果實驗原理:文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持..圖像壓縮原理圖像壓縮主要目的是為了節(jié)省存儲空間,增加傳輸速度。圖像壓縮的理想標(biāo)準(zhǔn)是信息丟失最少,壓縮比例最大。不損失圖像質(zhì)量的壓縮稱為無損壓縮,無損壓縮不可能達(dá)到很高的壓縮比;損失圖像質(zhì)量的壓縮稱為有損壓縮,高的壓縮比是以犧牲圖像質(zhì)量為代價的。壓縮的實現(xiàn)方法是對圖像重新進(jìn)行編碼,希望用更少的數(shù)據(jù)表示圖像。信息的冗余量有許多種,如空間冗余,時間冗余,結(jié)構(gòu)冗余,知識冗余,視覺冗余等,數(shù)據(jù)壓縮實質(zhì)上是減少這些冗余量。高效編碼的主要方法是盡可能去除圖像中的冗余成分,從而以最小的碼元包含最大的圖像信息。編碼壓縮方法有許多種,從不同的角度出發(fā)有不同的分類方法,從信息論角度出發(fā)可分為兩大類。.冗余度壓縮方法,也稱無損壓縮、信息保持編碼或嫡編碼。具體說就是解碼圖像和壓縮編碼前的圖像嚴(yán)格相同,沒有失真,從數(shù)學(xué)上講是一種可逆運算。(2)信息量壓縮方法,也稱有損壓縮、失真度編碼或煙壓縮編碼。也就是說解碼圖像和原始圖像是有差別的,允許有一定的失真。應(yīng)用在多媒體中的圖像壓縮編碼方法,從壓縮編碼算法原理上可以分為以下3類:(1)無損壓縮編碼種類文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.哈夫曼(Huffman)編碼,算術(shù)編碼,行程(RLE)編碼,Lempelzev編碼。(2)有損壓縮編碼種類預(yù)測編碼,DPCM,運動補償;頻率域方法:正交變換編碼(如DCT),子帶編碼;空間域方法:統(tǒng)計分塊編碼;模型方法:分形編碼,模型基編碼;基于重要性:濾波,子采樣,比特分配,向量量化;(3)混合編碼。有JBIG,H261,JPEG,MPEG等技術(shù)標(biāo)準(zhǔn)。本實驗主要利用MATLAB程序進(jìn)行離散余弦變換(DCT)壓縮和行程編碼(RunLengthEncoding,RLE)。.圖像壓縮的方法:1.有損壓縮:(離散余弦變換(DCT)圖像壓縮原理)壓縮原理介紹:離散余弦變換DCT在圖像壓縮中具有廣泛的應(yīng)用。和相同圖像質(zhì)量的其他常用文件格式(如GIF(可交換的圖像文件格式),TIFF(標(biāo)簽圖像文件格式),PCX(圖形文件格式))相比,JPEG是目前靜態(tài)圖像中壓縮比最高的。JPEG比其他幾種壓縮比要高得多,而圖像質(zhì)量都差不多(JPEG處理的圖像只有真彩圖和灰度圖)。正是由于其高壓縮比,使文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.得JPEG被廣泛地應(yīng)用于多媒體和網(wǎng)絡(luò)程序中。JPEG有幾種模式,其中最常用的是基于DCT變換的順序型模式,又稱為基本系統(tǒng)(Baseline)。用DCT壓縮圖像的過程為:(1)首先將輸入圖像分解為8X8或16X16的塊,然后對每個子塊進(jìn)行二維DCT變換。(2)將變換后得到的量化的DCT系數(shù)進(jìn)行編碼和傳送,形成壓縮后的圖像格式。用DCT解壓的過程為:(1)對每個8X8或16X16塊進(jìn)行二維DCT反變換。(2)將反變換的矩陣的塊合成一個單一的圖像。余弦變換具有把高度相關(guān)數(shù)據(jù)能量集中的趨勢,DCT變換后矩陣的能量集中在矩陣的左上角,右下的大多數(shù)的DCT系數(shù)值非常接近于0。對于通常的圖像來說,舍棄這些接近于0的DCT的系數(shù)值,并不會對重構(gòu)圖像的畫面質(zhì)量帶來顯著的下降。所以,利用DCT變換進(jìn)行圖像壓縮可以節(jié)約大量的存儲空間。壓縮應(yīng)該在最合理地近似原圖像的情況下使用最少的系數(shù)。使用系數(shù)的多少也決定了壓縮比的大小。在壓縮過程的第2步中,可以合理地舍棄一些系數(shù),從而得到壓縮的目的。在壓縮過程的第2步,還可以采用RLE和Huffman文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.編碼來進(jìn)一步壓縮。離散余弦(DCT)壓縮代碼:1)利用DCT變換進(jìn)行圖像壓縮的MATLAB程序:RGB=imread('1.JPG');I=rgb2gray(RGB);J=dct2(I);imshow(log(abs(J),口),colormap(jet(64)),colorbarJ(abs(J)K=idct2(J);figure,imshow(I);figure,imshow(K,[0,2551);2)利用離散余弦變換進(jìn)行JPEG圖像壓縮:RGB=imread('1.JPG');I=rgb2gray(RGB);J=dct2(I);imshow(log(abs(J),口),colormap(jet(64)),colorbarJ(abs(J)K=idct2(J);figure,imshow(I);figure,imshow(K,[0,2551);2)文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.I=imread('1.JPG');I=rgb2gray(I);I=im2double(I);T=dctmtx(8);B=blkproc(I,[88],'P1*x*P2',T,T');mask=[11110000TOC\o"1-5"\h\z11 1 0 0 0 0 011 0 0 0 0 0 00 0 0 0 0 0 000 0 0 0 0 0 000 0 0 0 0 0 000 0 0 0 0 0 000 0 0 0 0 0 0];B2=blkproc(B,[88],'P1.*x',mask);I2=blkproc(B2,[88],'P1*x*P2',T',T);Subplot(1,2,1);Imshow(I);title('原圖像');Subplot(1,2,2);Imshow(I2);title('壓縮圖像');截圖:原圖像與壓縮圖像.無損壓縮:(利用行程編碼(RLE)進(jìn)行圖像壓縮原文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.理)壓縮原理介紹:RLE(Run-LengthEncoding行程長度編碼)算法是Wind

溫馨提示

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

最新文檔

評論

0/150

提交評論