首页 百科知识 变换编码压缩

变换编码压缩

时间:2024-10-09 百科知识 版权反馈
【摘要】:变换编码,这是最常用的方法。变换编码是指将给定的图像变换到另一个数据域(如频域)上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的。这些编码方法,首先使用如离散余弦变换或者小波变换这样的傅里叶相关变换,然后进行量化和用熵编码法压缩。MATLAB图像处理工具箱中提供实现图像块操作函数blkproc(),以及离散余弦变换函数dctmtx()。图4-4是一幅原始图像,图4-5是经DCT编码压缩过的图像。

4.5.2 变换编码压缩

变换编码,这是最常用的方法。变换编码是指将给定的图像变换到另一个数据域(如频域)上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的。变换编码有很多,如离散傅里叶变换(Discrete Fourier Transform,简称DFT)、离散余弦变换(Discrete Cosine Transform,简称DCT)、离散哈达玛变换(Discrete Hadamard Transform,简称DHT)。这些编码方法,首先使用如离散余弦变换(DCT)或者小波变换这样的傅里叶相关变换,然后进行量化和用熵编码法压缩。

MATLAB图像处理工具箱中提供实现图像块操作函数blkproc(),以及离散余弦变换函数dctmtx()。图4-4是一幅原始图像,图4-5是经DCT编码压缩过的图像。程序代码如下:

f=imread('teapot.jpg');

f=double(f)/255;

imshow(f),colormap(gray);

g=im2double(f);

t=dctmtx(8);

b=blkproc(g,[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);

f2=blkproc(b2,[8 8],'P1*x*P2',t',t);

figure,imshow(f2)。

img97

图4-4

img98

图4-5

图4-6是一幅原始图像,图4-7是经离散哈达玛变换编码压缩过的图像。程序代码如下:

f=imread('camera.jpg');

imshow(f),colormap(gray);

mask=[1 1 1 1

    1-1 1-1

    1 1-1-1

    1-1-1 1];

g1=double(f);

g2=conv2(g1,mask);

g3=uint8(g2);

figure,imshow(g3)。

img99

图4-6

img100

图4-7

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈