图像压缩技术研究。
一、 离散余弦变换编码压缩图像。
实验源程序:
i=imread('e:\matlab大作业\**\')
i=im2double(i转换图像矩阵为双精度型。
t=dctmtx(8);%产生二维dct变换矩阵。
计算二维dct,矩阵t及其转置是dct函数p1*x*p2的参数。
a1=[16 11 10 16 24 40 51 61;
for i=1:8:200
for j=1:8:200
p=i(i:i+7,j:j+7);
k=t*p*t';
i2(i:i+7,j:j+7)=k;
k=k./a1;%量化。
k(abs(k)<0.03)=0;
i3(i:i+7,j:j+7)=k;
endend
figure;
imshow(i2);
title('dct变换后的频域图像');显示dct变换后的频域图像。
for i=1:8:200
for j=1:8:200
p=i3(i:i+7,j:j+7).*a1;%反量化。
k=t'*p*t;
i4(i:i+7,j:j+7)=k;
endend
figure;
imshow(i4);
title('复原图像');
imwrite(i4,'复原图像');
b=blkproc(i,[8,8],'p1*x*p2',t,t');二值掩模,用来压缩dct系数,只留下dct系数中左上角的10个。
mask=[1 1 1 1 0 0 0 0
b2=blkproc(b,[8 8],'p1.*x',mask只保留dct变换的10个系数。
i2=blkproc(b2,[8 8],'p1*x*p2',t',t重构图像。
figure
imshow(i);
title('原始图像');
figure
imshow(i2);
title('压缩图像');
figure
imshow(dct2(i));
figure
mesh(dct2(i));
colorbar('horiz')
实验结果截图:
通过矩阵a1只对图像左上角的一部分进行了dct变换后的频域处理。
对上图量化得到的复原图像,因此复原图像只有一部分。
只保留dct变换的10个系数,运用逆dct变换,对图像进行重构,从而得到源图像的压缩图像。
直接运用函数dct2对原图像进行二维离散余弦图像变换。
途中最下面一行表示子啊水平方向用不同的颜色表示曲面高度,很据上图显示的二维离散余弦变换图像的左上角曲面高度有所不同,因此在图像左上角部分的立体网状图。
在 jpeg 图像压缩算法中,一种是以离散余弦变换dct,discrete cosinetransform为基础的有损压缩算法,另一种是以**技术为基础的无损压缩算法。1.1.
1 离散余弦变换 dct 变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。
dct 编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵时域信号变换到系数空间频域信号上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。
我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经 dct 变换以后,dct 系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,dct 变换在图像压缩中非常有用,是有损图像压缩国际标准 jpeg 的核心。
从原理上讲可以对整幅图像进行 dct 变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。
为此,发送者首先将输入图像分解为 88 或 1616 块,然后再对每个图像块进行二维dct 变换,接着再对 dct 系数进行量化、编码和传输;接收者通过对量化的 dct 系数进行解码,并对每个图像块进行的二维 dct 反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。
2、离散余弦变换(dct)
dct编码属于正交变换编码方式.用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空问上具有强相。
关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经dct变换以后,dct系数之间的相关性已经很小。
而且大部分能量集中在少数的系数上,因此,dct变换在图像压缩中非常有用,是有损图像压缩国际标准jpeg的核心。从原理上讲可以对整幅图像进行dct变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8x8或16x16的块,然后再对每个图像块进行二维dct变换,接着再对dct系数进行量化、编码和传输;接收者通过对量化的dct系数进行解码,并对每个图像块进行的二维dct反变换.最后将操作完成后所有的块拼接起来构成一幅单一的图像。
对于一般的图像而言,大多数dct系数值都接近于0,町以去掉这些系数而不会对重建图像的质量产生霞大影响。此,利用dct进行圈像压缩确实可以节约大量的存储空间在宴验中,先将输入的原始lena图像分为8x8的块,然。
后再对每个块进行二维dct变换。matlab图像处理上具箱中提供的二维dct变换及dct反变换函数如下。
dcl2dct2实现罔像的二维离散余弦变换.其语法格式为:
1)b=dct2(a)
返回图像a的二维离散余弦变换值,其大小与a相同且各元素为离散余弦变换的系数b(k1,k2)。
2)b=dct2(a,in,n)或b=dct2(a,[m,n])
如果m和n比图像a大,在对图像进行二维离散余弦变换之前,先将图像a补零至mxn如果m和n比图像a小。则进行变换之前,将图像a剪切。
2.2.2 idct2
idct2可以实现图像的二维离散余弦反变换,其语法格式为:
b=idct2(a);b=idct2(a,m,n)或b=idct2(a,[m,n])。
2 dct变换举例。
源程序:i=imread(''
j=dct2(i);
imshow(log(abs(j)),
title('经dct变换的图像');
colormap(jet(256));
m=j;j(abs(j)<50)=0;
k=idct2(j);
figure;
subplot(1,2,1);imshow(i,[0,255]);title('原图像');
subplot(1,2,2);imshow(k,[0,255]);title('压缩图像');
实验结果截图:
二、 小波变换编码压缩图像。
实验源程序:
a0=imread('e:\200908205126杨亮matlab大作业\**\')
a1=rgb2gray(a0);
a=double(a1);
subplot(2,2,1);imshow(a1);
axis square;
title('原图像');
disp('1');whos('a')
c,s]=w**edec2(a,2,'bior3.7');
ca1=appcoef2(c,s,'bior3.7',1);
ch1=detcoef2('h',c,s,1);
cv1=detcoef2('v',c,s,1);
cd1=detcoef2('d',c,s,1);
a1=wrcoef2('a',c,s,'bior3.7',1);
h1=wrcoef2('h',c,s,'bior3.7',1);
v1=wrcoef2('v',c,s,'bior3.7',1);
d1=wrcoef2('d',c,s,'bior3.7',1);
c1=[a1,h1;v1,d1];
subplot(2,2,2);imshow(c1);
axis square;
title('分解后低频和高频信息');
ca1=0.5*ca1
subplot(2,2,3);imshow(ca1);
axis square;
title('第一次压缩图像');
disp('2');whos('ca1');
ca2=appcoef2(c,s,'bior3.7',2);
ca2=0.25*ca2
subplot(2,2,4);imshow(ca2);
axis square;
title('第二次压缩图像');
disp('3');whos('ca2');
程序中,函数w**edc2();实现了ade二次分解。
实验结果截图:
小波变换是空间(时间)和频率的局部变换,因而能有效地从信号中提取信息。通过伸缩和平移等运算功能可对函数或信号进行多尺度的细化分析,解决了fourier变换不能解决的许多困难问题。小波变换联系了应用数学、物理学、计算机科学、信号与信息处理、图像处理、**勘探等多个学科。
数学家认为,小波分析是一个新的数学分支,它是泛函分析、fourier分析、样调分析、数值分析的完美结晶;信号和信息处理专家认为,小波分析是时间—尺度分析和多分辨分析的一种新技术,它在信号分析、语音合成、图像识别、计算机视觉、数据压缩、**勘探、大气与海洋波分析等方面的研究都取得了有科学意义和应用价值的成果。 信号分析的主要目的是寻找一种简单有效的信号变换方法,使信号所包含的重要信息能显现出来。小波分析属于信号时频分析的一种,在小波分析出现之前,傅立叶变换是信号处理领域应用最广泛、效果最好的一种分析手段傅立叶变换是时域到频域互相转化的工具,从物理意义上讲,傅立叶变换的实质是把这个波形分解成不同频率的正弦波的叠加和。
正是傅立叶变换的这种重要的物理意义,决定了傅立叶变换在信号分析和信号处理中的独特地位。傅立叶变换用在两个方向上都无限伸展的正弦曲线波作为正交基函数,把周期函数展成傅立叶级数,把非周期函数展成傅立叶积分,利用傅立叶变换对函数作频谱分析,反映了整个信号的时间频谱特性,较好地揭示了平稳信号的特征。
matlab大作业
matlab语言及应用。周一晚作业廖育州07010559 第一组程序。绘制选用潍柴发动机wd615.50时汽车行驶性能曲线图,ft ua图clear,clc 清除内存变量,清屏 n为发动机的转速。n 1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,...
MATLAB大作业
实验七图像的形态 算。一 实验目的。1.掌握图像的奇异值分解与合成。2.能够利用模板操作实现图像的腐蚀运算3.能够利用模板操作实现图像的膨胀运算4.掌握图像的开 闭运算。二 实验内容。1.读下面的程序,分析该程序要完成什么样的功能。a 1 2 1 2 3 2 1 2 1 u d v svd a nx...
MATLAB大作业
1.设计一个程序,要求用户用键盘输入10次,输入内容可以是数字 英文 汉字 或者其他文字或者符号。如果输入的是数字,则把存入一个数字数组当中 如果输入的是英文的字符,则存入一个英文字符数组当中 如果是其他字符,则存入一个字符串数组中。当10次内容都输入完毕后,先输出英文数组中的内容,然后输出字符串数...