资源简介
matlab开发-灰度图像的jpeg压缩。任何质量因素下的一个简单的jpeg matlab实现
代码片段和文件信息
clc;
clear all;
I = imread(‘cameraman.tif‘);
I1=I;
[row coln]= size(I);
I= double(I);
%---------------------------------------------------------
% Subtracting each image pixel value by 128
%--------------------------------------------------------
I = I - (128*ones(256));
quality = input(‘What quality of compression you require - ‘);
%----------------------------------------------------------
% Quality Matrix Formulation
%----------------------------------------------------------
Q50 = [ 16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
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];
if quality > 50
QX = round(Q50.*(ones(8)*((100-quality)/50)));
QX = uint8(QX);
elseif quality < 50
QX = round(Q50.*(ones(8)*(50/quality)));
QX = uint8(QX);
elseif quality == 50
QX = Q50;
end
%----------------------------------------------------------
% Formulation of forward DCT Matrix and inverse DCT matrix
%----------------------------------------------
DCT_matrix8 = dct(eye(8));
iDCT_matrix8 = DCT_matrix8‘; %inv(DCT_matrix8);
%----------------------------------------------------------
% Jpeg Compression
%----------------------------------------------------------
dct_restored = zeros(rowcoln);
QX = double(QX);
%----------------------------------------------------------
% Jpeg Encoding
%----------------------------------------------------------
%----------------------------------------------------------
% Forward Discret Cosine Transform
%----------------------------------------------------------
for i1=[1:8:row]
for i2=[1:8:coln]
zBLOCK=I(i1:i1+7i2:i2+7);
win1=DCT_matrix8*zBLOCK*iDCT_matrix8;
dct_domain(i1:i1+7i2:i2+7)=win1;
end
end
%-----------------------------------------------------------
% Quantization of the DCT coefficients
%-----------------------------------------------------------
for i1=[1:8:row]
for i2=[1:8:coln]
win1 = dct_domain(i1:i1+7i2:i2+7);
win2=round(win1./QX);
dct_quantized(i1:i1+7i2:i2+7)=win2;
end
end
%-----------------------------------------------------------
% Jpeg Decoding
%-----------------------------------------------------------
% Dequantization of DCT Coefficients
%-----------------------------------------------------------
for i1=[1:8:row]
for i2=[1:8:coln]
win2 = dct_quantized(i1:i1+7i2:i2+7);
win3 = win2.*QX;
dct_dequantized(i1:i1+7i2:i2+7) = win3;
end
end
%-----------------------------------------------------------
% Inverse DISCRETE COSINE TRANSFORM
%-----------------------------------------------------------
for i1=[1:8:row]
for i2=[1:8:coln]
win3 = dct_dequantized(i1:i1+7i2:i2+7);
win4=iDCT_matrix8*win3*DCT_ma
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3538 2012-10-06 06:46 jpegimplementation.m
文件 1321 2014-02-12 14:09 license.txt
评论
共有 条评论