📄 dct_compr.m
字号:
function [CR]= DCT_compr(filename, s_b, Mask)
Mask1=preg_mask(Mask, s_b);
%citesc imaginea
H=imread(filename);
figure(1)
subplot(211);imshow(H);title('Imagine initiala ')
H=f_addzero(H,s_b);
subplot(212);imshow(H);title('Imaginea pentru compresie')
%aplic DCT2 pt fiecare bloc
fun = @dct2;
J = blkproc(H,[s_b s_b],fun);
J = blkproc(J,[s_b s_b],'P1.*x', Mask);
%divid imaginea
[m,n]=size(H);
m=m/s_b;
n=n/s_b;
R=[];
C=[];
for i=1:m, R=[R s_b]; end;
for i=1:n, C=[C s_b]; end;
I = mat2cell(J, R, C);
h=1;
for j=1:n
for i=1:m
G{i,j}=int8(I{i,j});
Z(h,:)=zigzag(G{i,j});
h=h+1;
end
end
Z=Z';
V=Z(:);
V=V';
xC=cell(1,1);
xC{1}=V;
length(V)
y=Huff06(xC);
y=y';
[m, n] =size(H);
y=[s_b m/s_b n/s_b Mask1 y];
y=y';
length(y)
fid=fopen('project2.bin','wb');
fwrite(fid,y);
fclose(fid);
[m,n]=size(H);
CR=m*n/length(y);
CR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -