圖像的jpeg壓縮matlab
Ⅰ 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.jpg′);
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的目錄中找,原圖為灰度圖象
I=im2double(I);%圖像存儲類型轉換
T=dctmtx(8);%離散餘弦變換矩陣
B=blkproc(I,[8 8],'P1*x*P2',T,T');
%對原圖像進行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],'P1.*x',mask);
%數據壓縮,丟棄右下角高頻數據
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
%進行DCT反變換,得到壓縮後的圖像
imshow(I)
title('原始圖像')
figure;
imshow(I2)
title('壓縮後的圖像')
參考資料:http://..com/question/42730132.html
Ⅱ matlab JPEG圖像處理 怎麼搞
imwrite(uint8(Image),'F:\Image.jpg','jpeg','Quality',100);把Image保存成jpg格式 壓縮因子是100(matlab默認75,100是最佳情況),對於要存儲成jpg格式 ,Image數據必須是uint8的 ,所以用了強制類型轉換
Ⅲ matlabimwrite壓縮圖片-matlab中如何使用imwrite實現jepg壓縮
matlab中的imwrite函數怎麼用imwrite函數用於保存圖像,具體如下:
1、保存到當前文件夾下:imwrite(I,'');
2、保存到當前文件夾下的一個子文件result下:imwrite(I,'./result/');
3、保存到當前文件夾上一層的一個文件夾result下:imwrite(I,'../result/');
其中I為要保存圖像,為文件名,保存為png格式也可以是其他格式(jpeg,bmp,tif...)。
保存在matlab路徑下的子文件夾中,需要提前要提前建立一個文件夾result才可以。
因此可以這么寫:imwrite(I,'','quality',80);
(3)圖像的jpeg壓縮matlab擴展閱讀:
關於imwrite函數
功能:該函數是把程序中的Mat類型的矩陣保存為圖像到指定位置。
函數形式:boolimwrite(conststring&filename,InputArrayimg,constvector<int>_ms=vector<int>())
參數列表:
filename:所需保存圖像的文件目錄和文件名,這里的文件名需要帶有圖像格式後綴。
img:img參數為圖像數據來源,其類型為Mat.
params:用來設置對應圖片格式的參數,因為一般情況下這些圖片格式都是經過了壓縮的,這里就是設置這些壓縮參數來控制圖片的質量。該參數是一個vector<int>類型,分別存paramid_1,paramValue_1,paramid_2,paramValue_2,
也就是說存入一對屬性值。若不設置該參數,則程序會自動根據所保存的圖像格式採用一個默認的參數。
matlab怎麼將壓縮後的圖像存入文件中再導出又轉換成圖像使用imwrite函數。matlab將壓縮後的圖像存入文件中再導出又轉換成圖像,需要使用imwrite函數,MATLAB是美國MathWorks公司出品的商業數學軟體,用於演算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和互動式環境。
matlab中如何使用imwrite實現jepg壓縮imwrite(A,filename,fmt)
fmt寫成'jpg'就可以了
Ⅳ matlab實驗:圖像H1.BMP 以JPEG 格式進行壓縮,質量因子設為90,結果保存為JPG 圖像J1,怎麼實現
img=imread('H1.bmp');
imwirte(img, 'J1.jpg','jpg','quality',90)