日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用Matlab进行图像的编码与压缩(仿照jpeg)

發(fā)布時間:2024/1/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Matlab进行图像的编码与压缩(仿照jpeg) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文章包含以下內(nèi)容:

1.選擇matlab自帶圖像cameraman.tif和westconcordorthophoto.png為編碼壓縮的測試圖像。

2.根據(jù)設(shè)計要求選擇圖像編碼和壓縮方法;

3、設(shè)計編碼與壓縮的算法;

4、顯示原始圖像和壓縮重構(gòu)圖像;

5、計算壓縮的性能指標:壓縮率和保真度;

6、畫出壓縮率和保真度的關(guān)系曲線。

本文章中有:

? ? ? ? 圖像讀取,余弦變換,亮度量化,Z字形重排,游程編碼,參數(shù)文件保存,

????????參數(shù)文件讀取,逆游程編碼,逆Z字形重排,逆量化壓縮,生成壓縮比,保真度。

仿照JPEG壓縮代碼如下:

(可以放到同一個文件里,R2009b以上可以用,不然的話要改函數(shù))

如果覺著數(shù)據(jù)不好,可以更改Q_New函數(shù)中的值。

因為用到了blockproc函數(shù),在R2009b版本以上可以直接用,否則需要改函數(shù)。

因為為了畫曲線,進行了100+次圖像壓縮,運行時間較長,想要時間短點,可以更改36行的for循環(huán)。

用到了行程編碼,所以如果圖像復(fù)雜,可能會越壓越大。

PadPartialBlocks作用是裁剪時,如果不足8*8,則填充成8*8的矩陣

function U()clear;clc;img = imread('cameraman.tif'); % 讀取文件 % img = imread('westconcordorthophoto.png'); % 讀取文件Q = 30; % 品質(zhì)(1~100),100最好Q_ = Q_New(Q);% blkproc對圖像進行分塊處理,分成8*8的子塊,并用dct2()處理DCT_c = blkproc(img,[8,8],'dct2');figure(); % 開一個窗口subplot(2,3,1);imshow(img);title('原圖'); %顯示原圖% 顯示余弦變換結(jié)果subplot(2,3,2);imshow(log(abs(DCT_c)+1),[0,10]);title('余弦變換結(jié)果');T = Y_Table(); % 用亮度量化表,用于量化壓縮DCT_c = blkproc(DCT_c,[8,8],'round(x./(P1*P2))',T,Q_); % 量化壓縮% 顯示量化壓縮結(jié)果subplot(2,3,3);imshow(log(abs(DCT_c)+1),[0,10]);title('量化壓縮結(jié)果');Z = blockproc(DCT_c,[8,8],@Z_open,'PadPartialBlocks',true); % Z字形重排(展開)Z_openS = size(Z); % 記錄展開后大小,方便以后復(fù)原Z = Z(:); % 展開成一維Z = forecast(Z); % 預(yù)測編碼Z = RLC(Z); % 游程編碼 % save('圖像.mat','Q','S','Z'); % 將大小,游程編碼后結(jié)果,保存到文件中 % load('圖像.mat'); % 讀取保存的變量Z = iRLC(Z); % 游程解碼Z = iforecast(Z); % 預(yù)測編碼Z = reshape(Z,S(1),S(2)); % 重組Z = blockproc(Z,[64,1],@Z_merge); % 逆Z字重排(合并)DCT_c = blkproc(Z,[8,8],'x.*P1*P2',T,Q_); % 逆量化壓縮% 顯示逆量化壓縮結(jié)果subplot(2,3,6);imshow(log(abs(DCT_c)+1),[0,10]);title('逆量化壓縮結(jié)果');% 顯示逆變換圖像subplot(2,3,4);imshow(uint8(blkproc(DCT_c,[8,8],'idct2')));title('逆變換圖像');s = size(img); % 得到原圖像的大小,用于計算壓縮率s_ = s(1)*s(2);x_=[];y_=[];for i = 1:1:100[S,Z] = IC(img,i); % 壓縮s_Z = size(Z); % 壓縮后大小x_(length(x_(:))+1) = s_/(s_Z(1)*s_Z(2) + 3); % 壓縮比,+3是要儲存游程編碼大小和Qimg_=iIC(i,S,Z);img_=img_(1:s(1),1:s(2));y_(length(y_(:))+1) = psnr(uint8(img_),img); % 信噪比,客觀保真度% figure,imshow(uint8(img_));end% 繪制壓縮比-保真度subplot(2,3,5);plot(x_,y_);xlabel('壓縮比');ylabel('客觀保真度');title('壓縮比-保真度'); end% 由1~100,映射到實際用的Q上 function Q_ = Q_New(Q) % 品質(zhì)(1~100),100最好if(Q>100) % 大于一百的和小于1的都拉回來Q = 100;endif(Q<1)Q = 1;endQ_ = 3.03-0.03*Q; % 真正用的Q是這個,你可以改 end% 圖像壓縮編碼函數(shù),輸入圖像,品質(zhì)(1~100),100最好得到壓縮后的數(shù)據(jù) function [S,Z] = IC(img,Q)Q_ = Q_New(Q);% blkproc對圖像進行分塊處理,分成8*8的子塊,并用dct2()處理DCT_c = blkproc(img,[8,8],'dct2');T = Y_Table(); % 用亮度量化表壓縮DCT_c = blkproc(DCT_c,[8,8],'round(x./(P1*P2))',T,Q_);Z = blockproc(DCT_c,[8,8],@Z_open,'PadPartialBlocks',true); % Z字形重排(展開)Z_openS = size(Z); % 記錄展開后大小,方便以后復(fù)原Z = Z(:); % 展開成一維 % Z = forecast(Z); % 預(yù)測編碼Z = RLC(Z); % 游程編碼 end% 圖像解壓函數(shù),輸入游程編碼結(jié)果,Z字重排前大小,輸出解碼后圖像 function img = iIC(Q,S,Z)Q_ = Q_New(Q);T = Y_Table(); % 亮度量化表Z = iRLC(Z); % 游程解碼 % Z = iforecast(Z); % 預(yù)測解碼Z = reshape(Z,S(1),S(2)); % 重組Z = blockproc(Z,[64,1],@Z_merge); % 逆Z字重排(合并)Z = blkproc(Z,[8,8],'x.*P1*P2',T,Q_);img = blkproc(Z,[8,8],'idct2'); end% 掏出一個亮度量化表 function T = Y_Table() T =[16 11 10 16 24 40 51 6112 12 14 19 26 58 60 5514 13 16 24 40 57 69 5614 17 22 29 51 87 80 6218 22 37 56 68 109 103 7724 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99]; end% 掏出Z字形重排的地址(8*8) function T = Z_address() T =[ 1 2 6 7 15 16 28 29 3 5 8 14 17 27 30 43 4 9 13 18 26 31 42 44 10 12 19 25 32 41 45 54 11 20 24 33 40 46 53 55 21 23 34 39 47 52 56 61 22 35 38 48 51 57 60 62 36 37 49 50 58 59 63 64 ]; end% Z字展開(矩陣變一維) function Z_out = Z_open(Z_input)Z_out = zeros(64,1);Z_out(Z_address()) = Z_input.data; end% Z字合并(一維變矩陣) function Z_out = Z_merge(Z_input)Z_out = Z_input.data(Z_address()); end% 游程編碼 function Y = RLC(X)% 手動處理第一個Y(1) = X(1);Y(2) = 1;c = 1; % 計數(shù)器,記錄當前信號在Y的位置C = 2; % 當前信號的游程,關(guān)于我為什么不用c+1,這樣好看。s = max(size(X)); % 看看長度,一會有用 for i = (2:s) % 對于每個數(shù)據(jù)if(X(i)~=Y(c)) % 如果和當前的不一樣c = C + 1; % 信號位置改變C = c + 1; % 游程位置改變Y(c) = X(i); % 記錄信號Y(C) = 1; % 計數(shù)1elseY(C) = Y(C) + 1; % 游程加一endend end% 游程解碼 function Y = iRLC(X)c = 1; % 計數(shù)器,記錄Y該到哪里了s = max(size(X)); % 看看長度,一會有用 for i = (1:2:s) % 記錄格式為 信息 游程for j = (1:X(i+1)) % 每個信息加游程個數(shù)個Y(c) = X(i); % 信息錄入c = c + 1; % 計數(shù)+1endend end% 預(yù)測函數(shù) function Y = forecast(X)if(length(X)<3)Y = X;return ends1 = X(1);s2 = X(2);Y(1)=X(1);Y(2)=X(2);for i = (3:length(X)) % 線性預(yù)測Y(i) = X(i)-(s1+s2)/2;s1 = s2;s2 = X(i);end % Y(50:90) end% 預(yù)測解碼 function X = iforecast(Y)if(length(Y)<3)X = Y;return ends1 = Y(1);s2 = Y(2);X(1)=Y(1);X(2)=Y(2);for i = (3:length(Y)) % 線性預(yù)測X(i) = Y(i)+(s1+s2)/2;s1 = s2;s2 = X(i);end end

結(jié)果示例:

?

總結(jié)

以上是生活随笔為你收集整理的利用Matlab进行图像的编码与压缩(仿照jpeg)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 大胸喷奶水www视频妖精网站 | 中文字幕亚洲第一 | 一区二区三区有限公司 | 日本公妇乱淫免费视频一区三区 | 亚洲欧美日韩动漫 | 伊人激情 | 1区2区视频 | 欧美日韩精选 | 成人依依| 黄视频网站在线看 | 日韩欧美电影一区二区三区 | 国产乱淫av一区二区三区 | 午夜福利一区二区三区 | 久草综合视频 | 亚洲在线看片 | 69国产精品视频 | av综合久久 | 双乳被四个男人吃奶h文 | 欧美r级在线 | 青青草伊人 | 亚洲色偷偷综合亚洲av伊人 | 懂色tv| 国产激情自拍 | 91国产精品一区 | 黄色国产大片 | 国产亚洲在线观看 | 日韩成人免费在线 | 综合中文字幕 | 综合久久一区二区 | 国产一级视频在线 | 久久人人爽人人爽人人 | 久久中文字幕精品 | 一区二区三区在线免费视频 | www.成人在线观看 | 夜间福利视频 | www.好吊色 | 成人性生交大片免费看 | 欧美精品色婷婷五月综合 | 老妇女性较大毛片 | 成人av免费网站 | 欧美久久久一区二区三区 | 日本久久高清视频 | 亚洲色图国产 | 日本a级无毛 | 91人人爽 | 尤物在线免费观看 | 99热免费在线观看 | av大全免费| 飘花影院伦理片 | 免费毛片视频网站 | 人妻熟女aⅴ一区二区三区汇编 | 久久国内免费视频 | 91国产免费视频 | 日本三级日本三级日本三级极 | 中文字幕在线影院 | 亚洲宗人网 | 欧美又粗又大aaa片 老熟妇仑乱视频一区二区 亚洲妇女体内精汇编 | 亚洲精品综合精品自拍 | 日本一二三区视频 | 国产 中文 字幕 日韩 在线 | 老司机在线精品视频 | 国产国产乱老熟女视频网站97 | 另类激情 | 美女网站免费观看视频 | 久99久视频| 91娇羞白丝| 懂色av色吟av夜夜嗨 | 亚洲小视频网站 | 蜜桃传媒一区二区亚洲av | 粗了大了 整进去好爽视频 日本女优中文字幕 | 亚洲一区你懂的 | 黄色大片在线播放 | 亚洲欧美日本在线 | 三级黄色网络 | 名人明星三级videos | 久操视频在线播放 | 在线观看视频免费 | 岛国大片在线观看 | 亚洲一区免费在线 | 亚洲欧美制服丝袜 | 天天干天天操天天爱 | 亚洲精品视频在线观看视频 | 韩国av免费在线观看 | 国产又粗又猛又黄又爽的视频 | 亚洲综合在线中文字幕 | 五月av综合av国产av | 在线看av的网址 | 99re视频在线| 国产免费观看视频 | 日本女人毛茸茸 | 免费成人在线视频观看 | 少妇av片| 狠狠人妻久久久久久综合麻豆 | 日b在线观看 | 精品国产第一页 | 日韩精品卡通动漫网站 | 亚州av免费| 国产成人精品免高潮费视频 | 简单av在线 |