MATLAB 图像压缩
生活随笔
收集整理的這篇文章主要介紹了
MATLAB 图像压缩
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
f=[119 123 168 119;123 119 168 168];
f=[f;119 119 107 119;107 107 119 119]; %f有8個不同的值
p=hist(f(:),8); %求得p中每個元素出現的次數
p=p/sum(p); %求得p中每個值出現的概率
h=entropy(f); %求得f的熵f2=uint8([2 3 4 2; 3 2 4 4; 2 2 1 2; 1 1 2 2]); %f2是4x4數組
whos('f2') ; %打印f2的相關信息
%先統計f2中的數據出現的概率,然后進行Huffman編碼
c=huffman(hist(double(f2(:)),4)); %c是碼表,共4個元素
hlf2=c(f2(:))' %利用碼表c對原矩陣f2進行編碼,顯示編碼后的數據
whos('hlf2') %由于采用double類型編碼,編碼后長度加大
h3f2=mat2huff(f2);%利用mat2huff函數對f2進行Huffman編碼,輸出為二進制流的形式
whos('h3f2') %輸出h3f2為一個結構體,存儲有碼表信息和編碼信息
hcode=h3f2.code; %hcode 是編碼后的碼流%以二進制的方式顯示編碼流
dec2bin(double(hcode))
f=imread('你的圖');
c=mat2huff(f); %對f進行Huffman編碼
cr1=imratio(f,c) %計算圖像壓縮比率
f1=imread('你的圖');
imshow(f1);
c1=mat2huff(f1); %對f2進行Huffman編碼
entropy(f1) %打印f1的熵
imratio(f1,c1) %打印圖像壓縮比率f2=imread('你的圖')
figure,imshow(f2);
c2=mat2huff(f2); %對f2進行Huffman編碼
entropy(f2) %打印f2的熵
imratio(f2,c2) %打印圖像壓縮比率
%**************************無損預測編碼************************
f=imread('你的圖');
e=mat2lpc(f); %對f進行線性預測編碼,e是預測誤差圖像
imshow(mat2gray(e)); %將預測誤差圖像縮放到[0,1]之間,然后顯示出來
entropy(e) %打印預測誤差圖像的熵
c=mat2huff(e); %對預測誤差圖像進行Huffman編碼
f=imread('你的圖');
imshow(f); %對f進行IGS量化,q是量化系數
q=quantize(f,4,'igs'); %quantize 是量化函數
qs=double(q)/16; %對q的值進行縮小
e=mat2lpc(qs); %對量化系數進行線性預測編碼
c=mat2huff(e); %對預測誤差進行Huffman編碼
imratio(f,c) %計算并打印圖像壓縮比率
%**************************解碼過程***********************************
ne=huff2mat(c); %ne是Huffman解碼后的矩陣
nqs=lpc2mat(ne);
nq=16*nqs; %反量化
compare(q,nq); %比較q和nq之間的差值
rmse=compare(f,nq); %圖像壓縮后的均方根誤差,由量化引起
f=imread('你的圖');
imshow(f);
% 調用im2jpeg函數對圖像進行JPEG壓縮,采用默認量化參數。
c1 = im2jpeg(f);
f1=jpeg2im(c1); % JPEG圖像解壓
imratio(f, c1) % 計算并打印圖像壓縮比率
compare(f, f1, 3) % 計算圖像壓縮后的誤差
c4 = im2jpeg(f, 4); % 圖像壓縮,采用4倍的量化參數
f4 = jpeg2im(c4); % JPEG圖像解壓
imratio(f, c4); % 計算并打印圖像的壓縮比
compare(f, f4, 3); % 計算并打印圖像壓縮后的誤差
總結
以上是生活随笔為你收集整理的MATLAB 图像压缩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一次简单的计网实践——浅谈校园网认证原理
- 下一篇: 什么叫虚拟光驱?有什么用?