圖像壓縮編碼程序設(shè)計(jì)_第1頁
圖像壓縮編碼程序設(shè)計(jì)_第2頁
圖像壓縮編碼程序設(shè)計(jì)_第3頁
圖像壓縮編碼程序設(shè)計(jì)_第4頁
圖像壓縮編碼程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

*******************實(shí)踐教學(xué)*******************蘭州理工大學(xué)計(jì)算機(jī)與通信學(xué)院2023年秋季學(xué)期圖像處理綜合訓(xùn)練題目:圖像壓縮編碼專業(yè)班級:姓名:學(xué)號:指導(dǎo)教師:成績:目錄TOC\o"1-2"\u摘要1一、前言2二、算法分析與描述3三、詳細(xì)設(shè)計(jì)過程5四、調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決方法7五、程序運(yùn)行截圖及其說明8六、簡單操作手冊11設(shè)計(jì)總結(jié)14參考資料15致謝16附錄17摘要本實(shí)驗(yàn)是在根據(jù)圖像壓縮根本原理的根底上,獨(dú)立設(shè)計(jì)圖像的有損壓縮編碼算法,并在MATLAB編程環(huán)境中編程實(shí)現(xiàn)。其目的是理解有損壓縮的概念,特別是通過K-L變換或DCT變換,掌握壓縮編碼的根本原理、算法,并通過編程給予實(shí)現(xiàn),對原始圖像數(shù)據(jù)和解壓后的圖像數(shù)據(jù)進(jìn)行失真估計(jì),了解壓縮性能及其重建效果的影響、作用,給出適當(dāng)?shù)睦碚摲治?。關(guān)鍵詞:Matlab;圖像壓縮;解碼;行程編碼。一、前言人類正在實(shí)踐的21世紀(jì)是一個(gè)信息時(shí)代。今天的社會,信息技術(shù)已經(jīng)全面效勞于社會生產(chǎn)和生活的方方面面,人們所做工作的相當(dāng)一局部就是對信息的處理和傳輸,其中圖像是人類獲取信息、表達(dá)信息和傳遞信息的重要手段,是人類感知和認(rèn)識世界的根底。有關(guān)研究說明,日常生活中人們所接受的各種信息中圖像信息占總信息量的80%左右,從這一角度看,“百聞不如一見〞正是圖像處理重要性的形象表達(dá)和經(jīng)驗(yàn)總結(jié)。因此,數(shù)字圖像處理技術(shù)無論是對于21世紀(jì)的科學(xué)理論研究,還是工程應(yīng)用都將具有重要的影響。國內(nèi)外許多有識之士指出,從某種意義上講,數(shù)字圖像處理是實(shí)現(xiàn)智能計(jì)算機(jī)、智能機(jī)器人或多媒體信系統(tǒng)的根底,未來計(jì)算機(jī)及智能機(jī)器人的開展與進(jìn)步將在一定程度上依賴于機(jī)器視覺信息處理理論和技術(shù)的突破。雖然相對于經(jīng)典學(xué)科,數(shù)字圖像處理還很年輕,但日趨成熟的數(shù)字圖像處理技術(shù)已經(jīng)在很多方面得到深入而廣泛的應(yīng)用,一定程度上改變了人類的生活,給人們的日常生活、學(xué)習(xí)、工作帶來極大的方便。例如,Internet上的視頻播送、現(xiàn)代衛(wèi)星或遙感照片的合成和處理、工業(yè)產(chǎn)品的自動檢測、各種醫(yī)學(xué)影像和圖像的處理、遠(yuǎn)程醫(yī)療診斷及手術(shù)以及視頻會議、視頻等都采用了圖像處理技術(shù)實(shí)現(xiàn)實(shí)時(shí)信息交互。如果說1964年美國噴氣推進(jìn)實(shí)驗(yàn)室首次處理了由太空船“徘徊者七號〞發(fā)回的月球照片,拉開了數(shù)字圖像處理技術(shù)進(jìn)入普遍應(yīng)用的序幕,那么CT的創(chuàng)造、應(yīng)用及諾貝爾獎的獲得,那么使得數(shù)字圖像處理技術(shù)大放異彩,并迅速進(jìn)入了廣泛應(yīng)用階段。目前,數(shù)字圖像處理技術(shù)已在工程科學(xué)、計(jì)算機(jī)科學(xué)、信息科學(xué)、遙感、遙測、采礦、地質(zhì)勘探、工業(yè)探傷、自動控制、機(jī)器人、軍事、公安、生物學(xué)、醫(yī)學(xué)、視頻、多媒體、統(tǒng)計(jì)學(xué)甚至社會科學(xué)等領(lǐng)域得到了廣泛應(yīng)用,并顯示出了更加誘人的前景,成為了包括計(jì)算機(jī)科學(xué)與技術(shù)、信息科學(xué)、航空航天和生物醫(yī)學(xué)工程等在內(nèi)的多學(xué)科的研究重點(diǎn)和熱點(diǎn)。這些學(xué)科的研究成果又促使了圖像處理技術(shù)向更高水平開展,數(shù)字圖像處理技術(shù)正是在這種應(yīng)用的迫切需要和自身的不斷開展之中逐步完善的新興學(xué)科。未來,圖像處理技術(shù)的開展及應(yīng)用與經(jīng)濟(jì)建設(shè)聯(lián)系之緊密、影響之深遠(yuǎn)是不可估量的。算法分析與描述編碼是方法建立在圖像統(tǒng)計(jì)特性的根底上的。例如,在通信中的文件大多是二值圖像,即每個(gè)像素的灰度值只有0和1兩種取值。將一行中顏色值相同的相鄰象素用一個(gè)計(jì)數(shù)值和該顏色值來代替。例如aaabccccccddeee可以表示為3a1b6c2d3e,,即有3個(gè)a,1個(gè)b,6個(gè)c,2個(gè)d,3個(gè)e。如果一幅圖象是由很多塊顏色相同的大面積區(qū)域組成,那么采用行程編碼的壓縮效率是驚人的。然而,該算法也導(dǎo)致了一個(gè)致命弱點(diǎn),如果圖象中每兩個(gè)相鄰點(diǎn)的顏色都不同,用這種算法不但不能壓縮,反而數(shù)據(jù)量增加一倍。因此對有大面積色塊的圖像用行程編碼效果比擬好。行程編碼的可行性討論:行程編碼的壓縮方法對于自然圖片來說是不太可行的,因?yàn)樽匀粓D片像素點(diǎn)錯(cuò)綜復(fù)雜,同色像素連續(xù)性差,如果硬要用行程編碼方法來編碼就適得其反,圖像體積不但沒減少,反而加倍。鑒于計(jì)算機(jī)桌面圖,圖像的色塊大,同色像素點(diǎn)連續(xù)較多,所以行程編碼對于計(jì)算機(jī)桌面圖像來說是一種較好的編碼方法。2.1圖像的調(diào)入:functionyc%行程編碼算法%例如aaabccccccddeee才可以表示為3a1b6c2d3e%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%讀圖I=imread('Lena.bmp');[mnl]=size(I);fid=fopen('yc.txt','w');%yc.txt是行程編碼算法的灰度級及其相應(yīng)的編碼表%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2.2行程編碼算法:sum=0;fork=1:lfori=1:mnum=0;J=[];value=I(i,1,k);forj=2:nifI(i,j,k)==valuenum=num+1;%統(tǒng)計(jì)相鄰像素灰度級相等的個(gè)數(shù)ifj==nJ=[J,num,value];endelseJ=[J,num,value];%J的形式是先是灰度的個(gè)數(shù)及該灰度的值value=I(i,j,k);num=1;endendcol(i,k)=size(J,2);%記錄Y中每行行程行程編碼數(shù)sum=sum+col(i,k);Y(i,1:col(i,k),k)=J;%將I中每一行的行程編碼J存入Y的相應(yīng)行中endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%輸出相關(guān)數(shù)據(jù)[m1,n1,l1]=size(Y);disp('?-í???′óD?:')whos('I');disp('?1??í???′óD?:')whos('Y');disp('í???μ??1??±è:');disp(m*n*l/sum);2.3圖像顯示和保存:subplot(1,2,1),imshow(I),title('原圖像')subplot(1,2,2),imshow(Y),title('行程編碼解碼后的圖像')save('Y')%存儲,以便解碼用save('col')fclose(fid);三、詳細(xì)設(shè)計(jì)過程3.1算法流程圖讀入圖像讀入圖像將行程編碼寫入yc.txt中行程算法計(jì)算壓縮比3.2由I=imread('Lena.bmp')把圖像調(diào)入等待處理,再由行程編碼算法進(jìn)行計(jì)算和壓縮。實(shí)現(xiàn)具體的壓縮功能。最后輸出原圖像和壓縮后的像和輸出壓縮比例。3.2行程編碼算法sum=0;fork=1:lfori=1:mnum=0;J=[];value=I(i,1,k);forj=2:nifI(i,j,k)==valuenum=num+1;%統(tǒng)計(jì)相鄰像素灰度級相等的個(gè)數(shù)ifj==nJ=[J,num,value];endelseJ=[J,num,value];%J的形式是先是灰度的個(gè)數(shù)及該灰度的值value=I(i,j,k);num=1;endendcol(i,k)=size(J,2);%記錄Y中每行行程行程編碼數(shù)sum=sum+col(i,k);Y(i,1:col(i,k),k)=J;%將I中每一行的行程編碼J存入Y的相應(yīng)行中endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%輸出相關(guān)數(shù)據(jù)[m1,n1,l1]=size(Y);disp('原圖像大小:')whos('I');disp('壓縮圖像大小:')whos('Y');disp('圖像的壓縮比:');disp(m*n*l/sum);四、調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決方法首先,我們的代碼不完全是自己寫出來的,所以剛開始調(diào)式時(shí)出現(xiàn)很多錯(cuò)誤。比方;代碼中的函數(shù)matlab軟件不認(rèn)識,不能實(shí)現(xiàn)函數(shù)的功能。還有函數(shù)變量定義不符合,但更多的是調(diào)入圖像顯示不出結(jié)果。經(jīng)過研究和修改,功夫不負(fù)有心人,大局部錯(cuò)誤都改正了??墒呛芗m結(jié)的是只輸出圖像壓縮的數(shù)據(jù)和壓縮比例,沒有輸出原圖像和壓縮后的圖像。最后經(jīng)過同學(xué)的幫助和自己的努力,發(fā)現(xiàn)代碼缺少輸出圖像語句。最終順利完成了本次的課程設(shè)計(jì)。五、程序運(yùn)行截圖及其說明圖5.1圖像的大小和壓縮比例圖5.2圖像原圖和壓縮后圖像圖5.3行程編碼表六、簡單操作手冊首先我們完成代碼局部。經(jīng)過查找資料和網(wǎng)上查詢,完整的把代碼的功能能在matlab軟件上是先出來。文檔局部比擬繁瑣,需要結(jié)合代碼的功能一步一步經(jīng)過說明實(shí)現(xiàn)圖像的行程壓縮編碼。在經(jīng)過matlab軟件運(yùn)行輸出圖像,把圖像截圖放在文檔局部加以說明。界面制作;圖6.1畫出兩個(gè)axes1、axes2圖像顯示框圖6.2把對應(yīng)的程序添加到界面圖6.3顯示出原圖像設(shè)計(jì)總結(jié)涉及到圖像壓縮的算法很多,我所用的是行程編碼算法。這種算法是無損壓縮,利用統(tǒng)計(jì)的方法,最終建立了數(shù)據(jù)與編碼的關(guān)系,即利用了編碼冗余實(shí)現(xiàn)壓縮。在這兩周的圖像處理的綜合訓(xùn)練中,通過對圖象處理的設(shè)計(jì)過程,我加深了對圖像壓縮的理解,對DCT變換和行程編碼和哈夫曼有所掌握,對課本中所學(xué)的各種圖像知識的進(jìn)一步理解和掌握,學(xué)會了如何把學(xué)到的知識用于解決實(shí)際問題,鍛煉了自己動手的能力。在這次的綜合訓(xùn)練中我認(rèn)識到了自己的缺乏。在以后的學(xué)習(xí)中我會更加注意各個(gè)方面的能力的協(xié)調(diào)開展。在課程設(shè)計(jì)時(shí)遇到了很多的問題,在老師的幫助,和對各種資料的查閱中,將問題解決,培養(yǎng)了我自主動手,獨(dú)立研究的能力,為今后在學(xué)習(xí)工作中能更好的開展打下了堅(jiān)實(shí)的根底。通過對此次圖象處理綜合訓(xùn)練的實(shí)際操作及分析,加深對圖像的理解及增強(qiáng)實(shí)際動手能力,鍛煉了我們分析與編寫軟件代碼的能力及團(tuán)結(jié)協(xié)作的能力。兩周的課程設(shè)計(jì)很短暫,但其間的內(nèi)容是很充實(shí)的,在其中我學(xué)習(xí)到了很多平時(shí)書本中無法學(xué)到的東西,積累了經(jīng)驗(yàn),鍛煉了自己分析問題,解決問題的能力,并學(xué)會了如何將所學(xué)的各科知識融會,組織,來配合學(xué)習(xí),為以后的開展打下堅(jiān)實(shí)的根底。參考文獻(xiàn)張志涌,楊祖櫻.MATLAB教程.北京:北京航空航天大學(xué)出版社,2006,9-201.劉衛(wèi)國.MATLAB程序設(shè)計(jì)教程[M].北京:中國水利水電出版社,2005,101-150章毓晉.圖像工程〔上冊〕——圖像分析.第二版.北京:清華大學(xué)出版社,2005,7-30章毓晉.圖像工程〔中冊〕——圖像分析.第二版.北京:清華大學(xué)出版社,2005,30-87黃愛民,安向京,駱力.數(shù)字圖像處理與分析根底.北京:中國水利水電出版社,2005,7-50致謝本課程設(shè)計(jì)的選題、材料來源、程序設(shè)計(jì)和制作和內(nèi)容的安排、總體篇章的寫作等都得到了指導(dǎo)老師徐志剛的真誠指導(dǎo)和關(guān)注,以至于我的課程設(shè)計(jì)能夠按時(shí)順利的完成。因此,特別感謝指導(dǎo)老師徐志剛,他以熱心和耐心成全了我的課程設(shè)計(jì),為我制作的全過程提出了許多珍貴的意見,特別是在編程方面給我很大程度的指導(dǎo),輔助我嘗試了各種函數(shù)的應(yīng)用,使我掌握了許多珍貴的知識。所以真的很感謝徐志剛老師的指導(dǎo)!另外,我也很感謝班里的很多同學(xué)給我提出的意見和想法,對我的課程設(shè)計(jì)提供了很多的幫助!最后,我希望同學(xué)們能獲得更多的收獲!附錄functionyc%%行程編碼算法%例如aaabccccccddeee才可以表示為3a1b6c2d3e%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%讀圖I=imread('Lena.bmp');[mnl]=size(I);fid=fopen('yc.txt','w');%yc.txt是行程編碼算法的灰度級及其相應(yīng)的編碼表%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%行程編碼算法sum=0;fork=1:lfori=1:mnum=0;J=[];value=I(i,1,k);forj=2:nifI(i,j,k)==valuenum=num+1;%統(tǒng)計(jì)相鄰像素灰度級相等的個(gè)數(shù)ifj==nJ=[J,num,value];endelseJ=[J,num,value];%J的形式是先是灰度的個(gè)數(shù)及該灰度的值value=I(i,j,k);num=1;endendcol(i,k)=size(J,2);%記錄Y中每行行程行程編碼數(shù)sum=sum+col(i,k);Y(i,1:col(i,k),k)=J;%將I中每一行的行程編碼J存入Y的相應(yīng)行中endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%輸出相關(guān)數(shù)據(jù)[m1,n1,l1]=size(Y);disp('?-í???′óD?:')whos('I');disp('?1??í???′óD?:')whos('Y');disp('í???μ??1??±è:');disp(m*n*l/sum);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%將編碼寫入yc.txt中fork=1:l1fori=1:m1forj=1:col(i,k)fprintf(fid,'%d',Y(i,j,k));fwrite(fid,'');endendfwrite(fid,'');endsubplot(1,2,1),imshow(I),title('原圖像)%?á3??-í?subplot(1,2,2),imshow(Y),title('行程編碼解碼后的圖像')save('Y')%存儲,以便解碼用save('col')fclose(fid);functionvarargout=yc(varargin)%YCMATLABcodeforyc.fig%YC,byitself,createsanewYCorraisestheexisting%singleton*.%%H=YCreturnsthehandletoanewYCorthehandleto%theexistingsingleton*.%%YC('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinYC.Mwiththegiveninputarguments.%%YC('Property','Value',...)createsanewYCorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforeyc_OpeningFcngetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtoyc_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpyc%LastModifiedbyGUIDEv2.511-Jan-202311:24:40%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@yc_OpeningFcn,...'gui_OutputFcn',@yc_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%Executesjustbeforeycismadevisible.functionyc_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstoyc(seeVARARGIN)%Choosedefaultcommandlineoutputforychandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesycwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure_yc);%Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=yc_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%functionm_file_Callback(hObject,eventdata,handles)%hObjecthandletom_file(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%functionm_file_open_Callback(hObject,eventdata,handles)%hObjecthandletom_file_open(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[filename,pathname]=uigetfile(...{'*.bmp;*.jpg;*.png;*.jpeg','ImageFiles(*.bmp,*.jpg,*.png,*.jpeg)';...'*.*','AllFiles(*.*)'},...'Pickanimage');axes(handles.axes1);%用axes命令設(shè)定當(dāng)前操作的坐標(biāo)軸是axes_srcfpath=[pathnamefilename];%將文件名和目錄名組合成一個(gè)完整的路徑img_src=imread(fpath);imshow(img_src);%用imread讀入圖片,并用imshow在axes_src上顯示setappdata(handles.figure_yc,'img_src',img_src);title('原圖');%functionm_file_save_Callback(hObject,eventdata,handles)%hObjecthandletom_file_save(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[filename,pathname]

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論