Ⅰ matlab實現圖像壓縮是的壓縮率怎麼求
Examples
info = imfinfo('ngc6543a.jpg')
info =
Filename:
FileModDate: '01-Oct-1996 17:19:44'備滾
FileSize: 27387
Format: 'jpg'
FormatVersion: ''
Width: 600
Height: 650
BitDepth: 24
ColorType: 'truecolor'仿謹余
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: '晌世Huffman'
CodingProcess: 'Sequential'
Comment: {}
Ⅱ 如何用MATLAB進行圖像壓縮
1、首先在電腦中雙擊matlab軟體,使用語句:x=0:0.2:7*pi:創建一個一維數組,表示三維離散序列圖的在x軸上的分布范圍。
Ⅲ 怎麼用matlab把壓縮成tiff
1.用matlab實現圖像壓縮時,如何將圖片模擬
圖像壓縮是當今信息時代迫切需求的一門圖像處理技術,它極大的減少了圖像的數據量,為圖像的存儲,傳輸提供了方便。
小波變換,是一種廣泛用於圖像壓縮的方法。它能讓圖像按不同的解析度分析。
根據Mallat演算法的思想,圖像能分解成一個輪廓信號(低頻子圖)和水平,垂直,對角線三個方向上的細節信號(高頻子圖)。而輪廓信號又可以進一步分解。
而圖像的主要能量部分是低頻部分,而且人眼視覺系統對低頻部分更為敏感,所以可以對低頻部分採用較低壓縮比;對高頻部分採用較大壓縮比來進行壓縮。 本文提出的是一種結合小波變換,DCT變換和矢量量化的壓縮方法。
根據人眼的視覺特性,首先對圖像進行小波分解,然後,對低頻分量進行壓縮比不大的DCT變換;對不同方向不同解析度的高頻分量進行不同碼字大小的矢量量化編碼,然後對反變換和解碼後的系數進行小波重構。矢量量化過程中的碼書設計採用的是LBG演算法。
這樣,根據對圖像質量的不同要求,我們可以改變小波分解的層數,來得到不同壓縮比的圖像。本篇論文只對小波分解一層和兩層後壓縮進行了模擬和分析,表明該方案結合了各種壓縮方法的優點,在滿足圖像質量的同時能得到較大的壓縮比。
目前,在包裝裝潢設計中常用的圖形處理軟體有Pho-toshop,CorelDraw,AutoCAD等。但是這些軟體中很少涉及到對圖像進行壓縮處理,以滿足圖像進行傳輸和儲存的需要。
基於這一點考慮,在此嘗試著用MATLAB編程來處理包裝裝潢圖像的壓縮,實現包裝與計算機的緊密結合。 1 MATLAB MATLAB是MathWorks公司推出的一套高性能的數值計算和可視化軟體,它集數值分析、矩陣運算、信號處理和圖像顯示於一體,它附帶的小波分析工具箱功能強大,可以完成小波分析的絕大部分工作。
MATLAB工具箱的出現避免了程序設計中的重復性勞動,縮短了開發周期,降低了成本,因而受到工科院校師生和研究人員的青睞。 在介紹利用MATLAB小波工具壓縮圖像的文獻中,總是尺蔽叢將真彩色RGB圖像轉換為灰度級索引圖像進行處理.經過這種處理以後,圖像的存儲數據能得到一定的壓縮,但由壓縮後的數據難以恢復成理想的彩色圖像。
文中用MATLAB中有關函數處理圖像壓縮,而且由壓縮後的數據可以還原出圖像.實驗結果表明,還原出的圖像效果是理想的。文中主要以lena圖像的處理為例,對它進行二進小波多層分解後,將低頻和高頻近似的系數矩陣作相應的處理,來研究陵櫻用MATLAB中的小波工具箱壓縮圖並慶像的方法。
2 圖像壓縮方法 在實際應用中,首先需要從圖像文件中讀取圖像數據.MATLAB使用imreed()函數完這一任務.例如,在電腦D盤中有一彩色圖像文件picl.jps,則可由下述語句讀取: X=imread(′D:\picl.′); MATLAB圖像處理工具箱支持4種基本圖像類型:索引圖像、灰度圖像、二進制圖像和RGB圖像.MATLAB直接從圖像文件中讀取的圖像為RGB圖像.它存儲在三維數組中。這個三維數組有3個面,依次對應子紅(Red)、綠(Green)、藍(Blue)3種顏色,而面中的數據則分別是這3種顏色的強度值,面中的元素對應於圖像中的像素點。
索引圖像數據包括圖像矩陣X與顏色圖數組map,其中顏色圖map是按圖像中顏色值進行排序後的數組。對於每個像素,圖像矩陣X包含一個值,這個值就是顏色圖數組map中的索引。
顏色圖map為m*3雙精度矩陣,各行分別指定紅、綠、藍(R、G、B)單色值,map=〔RGB〕,R、C、B為值域為〔0,1〕的實數值,m為索引圖像包含的像素個數.然後可根據情況採用不同的小波函數,進行索引圖像的分解壓縮。這里對上面產生的索引圖像X用dbl小波進行2層分解。
〔c,l〕=wavedec2(X,2,′dbl′)。 在這里,一個索引圖像作小波分解後,可得到一系列不同解析度的子圖像,不同解析度的子圖像對應的頻率是不相同的.高解析度(即高頻細節)子圖像上大部分點的數值接近於0,越是高頻這種現象越明顯.對一個圖像來說,表現一個圖像最主要的部分是低頻(即近似)部分。
多層小波分解的所有成分系數均保存在向量c中,低頻近似與高頻細節的系數需從向量C中提取。MATLAB分別使用appcoet2()和detcoef2()函數來完成這一工作。
這種方法是對低頻和高頻部分進行處理,因而提取低頻和高頻近似系數。 cAl=appcoef2(c,1,′dbl,′1);cH1=detcoef2(′h′,c,1,1); cDl=detcoef2(′d′,c,l,1);cVl=detcoef2(′v′,c,l,1)。
matlab實現離散餘弦變換壓縮(JPEG壓縮原理) JPEG圖像壓縮演算法: 輸入圖像被分成8*8或16*16的小塊,然後對每一小塊進行二維DCT(離散餘弦變換)變換,變換後的系數量化、編碼並傳輸; JPEG文件解碼量化了的DCT系數,對每一塊計算二維逆DCT變換,最後把結果塊拼接成一個完整的圖像。在DCT變換後舍棄那些不嚴重影響圖像重構的接近0的系數。
DCT變換的特點是變換後圖像大部分能量集中在左上角,因為左上放映原圖像低頻部分數據,右下反映原圖像高頻部分數據。而圖像的能量通常集中在低頻部分。
實常式序: function Jpeg I=imread('D:\MATLAB7\toolbox\images\imdemos\cameraman.tif'); %該圖片在安裝matlab的目錄中找,原圖為灰度圖象 。
2.使用MATLAB圖像壓縮怎麼做
I = imread('cameraman.tif'); % 輸入圖像
I = im2double(I); % 數據類型轉換
T = dctmtx(8); % 計算二維離散DCT矩陣
dct = @(x)T * x * T'; % 設置函數句柄
B = blkproc(I,[8 8],dct); % 圖像塊處理
mask = [1 1 1 1 0 0 0 0 % 掩膜
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2 = blkproc(B,[8 8],@(x)mask.* x); % 圖像塊處理
invdct = @(x)T' * x * T; % 設置函數句柄
I2 = blkproc(B2,[8 8],invdct); % 圖像塊處理
imshow(I), figure, imshow(I2) % 顯示原始圖像和壓縮重構圖像
3.用matlab把11張tif圖片做成一個連續動畫
使用如下代碼方式可以達到你想要的效果。
clear;
clc;
for i=2:50
c=strcat('a',num2str(i));%這里可以根據自己圖片名字兒作相應的修改
c=strcat(c,'.bmp');
I=imread(c);
% I=rgb2gray(I)
figure(1);
imshow(I);
end
圖片的保存方式如:a21.bmp,這樣可以實現你的汽車動畫。如果想要使用你的汽車圖片做的話,請把汽車圖片發給我,我幫你看看。
Ⅳ matlab中如何求圖像的壓縮比 (代碼)
I為壓縮前的圖像數據,I1為壓縮後的圖像數據。
[m1 n1]=size(I1);
[m n]=size(I);
t=m1*n1/(m*n);
那把你要求的壓縮比公式寫一下吧
Ⅳ matlab如何求出圖片的大小,以確定壓縮前後圖片大小的變化,得出壓縮比。
D = dir('sample.jpg');
D.bytes是以位元組表示的圖片大小
Ⅵ matlab blkproc 怎樣實現壓縮80%
我的理解:書上的例子是B=blkproc(A,[8 8],'P1*x*P2',T,T');其中[8 8]是將腔答圖像分割成8*8塊,然後分別對每個塊應用fun函數(fun=inline('P1*x*P2')),fun函數是將8*8矩陣x變換為向量或是標量矩陣伍春慧y(y=fun(x))。後面兩個矩陣是fun的附森悄加參數,即是對應P1和P2。僅一家之言,如有誤,請高手指點。
Ⅶ matlab中如何求圖像的壓縮比 (代碼)
I為壓縮前的圖像數據,I1為壓縮後的圖像數據。
[m1
n1]=size(I1);
[m
n]=size(I);
t=m1*n1/(m*n);
那把你要求的壓縮比公式寫一下吧
Ⅷ matlab實驗:圖像H1.BMP 以JPEG 格式進壓縮,質量因子為90,結果保存為JPG 圖像J1,計算J1對於H1的壓縮率
改完之後是這樣的,你試試:
clear
img=imread('H1.bmp');
imwrite(img,'J1.jpg','jpg','quality',90);
cr=imratio('H1.bmp','J1.jpg')