資源簡介
對彩色圖像進行JPEG壓縮
代碼片段和文件信息
RGB=imread(‘lena.jpg‘);%讀取圖片
RGB=imresize(RGB[168224]);%因為1.jpg大小為169*220,所以我改為168*224
imwrite(RGB‘start.jpg‘);?%保存壓縮前圖像
%下面是對RGB三個分量進行分離此時他們依然為整數(shù)
R=RGB(::1);
G=RGB(::2);
B=RGB(::3);
%RGB->YUV
Y=0.299*double(R)+0.587*double(G)+0.114*double(B);
U=-0.169*double(R)-0.3316*double(G)+0.5*double(B);
V=0.5*double(R)-0.4186*double(G)-0.0813*double(B);
YUV=cat(3YUV);%YUV圖像
figureimshow(uint8(YUV))title(‘YUV‘)
%T=dctmtx(8);%產(chǎn)生一個8*8的DCT變換舉證
n?=?8;
[ccrr]?=?meshgrid(0:n-1);
T?=?sqrt(2?/?n)?*?cos(pi?*?(2*cc?+?1)?.*?rr?/?(2?*?n));
T(1:)?=?T(1:)?/?sqrt(2);
%進行DCT變換?BY?BU?BV是double類型
BY=blkproc(Y[8?8]‘P1*x*P2‘TT‘);
BU=blkproc(U[8?8]‘P1*x*P2‘TT‘);
BV=blkproc(V[8?8]‘P1*x*P2‘TT‘);
a=[16?11?10?16?24?40?51?61;
??????12?12?14?19?26?58?60?55;
??????14?13?16?24?40?57?69?55;
??????14?17?22?29?51?87?80?62;
??????18?22?37?56?68?109?103?77;
??????24?35?55?64?81?104?113?92;
??????49?64?78?87?103?121?120?101;
??????72?92?95?98?112?100?103?99;];?%量化值
??
??b=[17?18?24?47?99?99?99?99;
??????18?21?26?66?99?99?99?99;
??????24?26?56?99?99?99?99?99;
??????47?66?99?99?99?99?99?99;
??????99?99?99?99?99?99?99?99;
??????99?99?99?99?99?99?99?99;
???????99?99?99?99?99?99?99?99;
???????99?99?99?99?99?99?99?99;];
???
???%BY2?BU2?BV2是double類型
???BY2=blkproc(BY[8?8]‘x./P1‘a(chǎn));
???BU2=blkproc(BU[8?8]‘x./P1‘b);
???BV2=blkproc(BV[8?8]‘x./P1‘b);
- 上一篇:MMC變流器仿真模型
- 下一篇:nc文件的讀取作圖
評論
共有 條評論