MATLAB数字图像处理实验四
程序员文章站
2022-04-01 10:44:36
...
MATLAB数字图像处理实验四
实验一:选择一种有损压缩编码算法(K-L变换或DCT变换)对l图像进行压缩编码,计算出压缩率,并显示编码前图像
%%
%实验一(计算压缩率,显示编码前图片)
%%利用DCT变换进行图像压缩
K=imread('hei.png');
I1=rgb2gray(K);
I=im2double(I1);
T=dctmtx(8);
B=blkproc(I,[8 8],'P1*x*P2',T,T');
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);
subplot(211),imshow(K),title('原图');
subplot(212),imshow(I2),title('DCT变换');
[m n]=size(B2);
J=[m n];
for i=1:m
value=B2(i,1);
num=1;
for j=2:n
if B2(i,j)==value
num=num+1;
else
J=[J num value];
num=1;
value=B2(i,j);
end
end
J=[J num value ];
end
disp('原图像大小')
whos('B2');
disp('压缩图像大小:')
whos('J');
disp('图像的压缩比:')
%disp(m*n/length(J))%解压缩
u1=m*n;
u2=length(J);
c=vpa((u2/u1)*100,4);
disp([char(c),'%'])
t1=J(1);
t2=J(2);
K(1:t1,1:t2)=0;
i1=1;
j1=1;
for i=3:2:length(J)
c1=J(i);
c2=J(i+1);
for j=1:c1
K(i1,j1)=c2;
j1=j1+1;
if j1>t2
i1=i1+1;
j1=1;
end
end
end
推荐阅读
-
数字图像处理实验之伽马变换
-
数字图像处理实验之梯度增强边缘
-
数字图像处理实验之中值滤波器
-
【学习图像处理】之实验四——图像编码之LZW编码
-
【数字图像处理实验】RGB与HSI互转、灰度直方图绘制、直方图均衡化、直方图规定化的MATLAB实现与Python实现
-
数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波器-用高斯低通滤波器对彩色图像进行滤波操作
-
数字图像处理(作业四)——边缘表达
-
数字图像处理|Matlab-空域增强实验-彩色图像的去噪
-
数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波器-自行选择一种频域的高通滤波器对彩色图像进行滤波操作
-
数字图像处理|Matlab-空域增强实验-彩色图像的直方图均衡化