Matlab数字图像处理尝试之:[9]编码和解码
1、
简述原理,打印出原始图像和解压后图像,计算信噪比,估算压缩比。
2、
1)、采用门限编码法来处理变换系数:
clear all;
I=imread('C:\Users\zjy\Desktop\test1.png');
I=im2double(I);
D=dctmtx(8);
B=blkproc(I,[8,8],'P1*x*P2',D,D');
mask=[1 1 1 1 1 1 1 1;1 1 1 1 0 0 0 0;...
1 1 0 0 0 0 1 1;1 0 0 0 1 1 1 0;...
1 0 0 1 1 0 0 1;1 0 1 1 0 0 1 0;...
1 0 1 0 0 1 0 1;1 0 1 0 1 0 1 0];
B2=blkproc(B,[8,8],'P1.*x',mask);
I2=blkproc(B2,[8,8],'P1*x*P2',D',D);
figure(1),imshow(I);
title('a)原始图像');
figure(2),imshow(I2);
title('b)压缩后图像');
![Matlab数字图像处理尝试之:[9]编码和解码](https://exp-picture.cdn.bcebos.com/cca2552c56ee7b7fc040f3c16ef4fcf5ef0d41e6.jpg)
![Matlab数字图像处理尝试之:[9]编码和解码](https://exp-picture.cdn.bcebos.com/fdb4f00d3aceaad73f258356eee7340f6578b8e6.jpg)
3、
以上是通过离散余弦变换编码对原始图像进行编码压缩,并采用门限编码法来处理变换系数,压缩比为9:16;从效果来看,得到的图像质量好;
4、
2)、采用区域编码法来处理变换系数:
clear all;
I=imread('C:\Users\zjy\Desktop\test1.png');
I=im2double(I);
D=dctmtx(8);
B=blkproc(I,[8,8],'P1*x*P2',D,D');
mask=[1 1 1 1 1 0 0 0;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];
B2=blkproc(B,[8,8],'P1.*x',mask);
I2=blkproc(B2,[8,8],'P1*x*P2',D',D);
figure(1),imshow(I);
title('a)原始图像');
figure(2),imshow(I2);
title('b)压缩后图像');
![Matlab数字图像处理尝试之:[9]编码和解码](https://exp-picture.cdn.bcebos.com/354e7a781423beb92270ae7630d6e1d06ce8b3e6.jpg)
5、
以上是通过离散余弦变换编码对原始图像进行编码压缩,并采用区域编码法来处理变换系数,压缩比为15:64;从效果来看,得到的图像质量较门限编码的质量稍差;