傅里叶变换图像压缩.docx
- 文档编号:6618742
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:18
- 大小:330.23KB
傅里叶变换图像压缩.docx
《傅里叶变换图像压缩.docx》由会员分享,可在线阅读,更多相关《傅里叶变换图像压缩.docx(18页珍藏版)》请在冰豆网上搜索。
傅里叶变换图像压缩
DSP实验进度汇报
组员:
汪张扬、任艳波、陈雪松、谢聪、沈旭
任务分配:
汪张扬由于考G,上周没有任务,沈旭负责自制二值图像的处理,陈雪松和谢聪负责其他图片的处理,任艳波负责搜集图像压缩评价的相关材料
以下为简要概括:
读入图像进行傅里叶变换和压缩
原始程序:
a=imread('d:
\1.jpg');b=figure;imshow(a);title('原始图像');
F=fft2(a);
F_mm=abs(F);figure;imshow(F);title('原始幅度谱');
Fshift=fftshift(F);
F_m=abs(Fshift);figure;imshow(F_m);title('幅度谱');
F_p=angle(Fshift);figure;imshow(F_p);title('相位谱');
T=@fft2;
B1=blkproc(a,[88],T);%将图像分块为8
8矩阵进行处理
figure;
imshow(a);
title('原始图像');
mask=[10000000
01000000
00100000
00010000
00000000
00000100
00000010
00000001];%与该矩阵相乘去掉中间行,即高频部分
B2=blkproc(B1,[88],'P1*x',mask);
fun=@ifft2;
F3=blkproc(B2,[88],fun);
F=mat2gray(F3);
figure;
imshow(F);
title('压缩87.5%的图像');
刚开始的原始图像:
傅里叶变换后的原始幅度谱:
取高频点后的图像:
取对数后的频谱图:
图像进行取整后的
i=imread('d:
\1.jpg');
figure
(1);
imshow(i);
colorbar;
j=fft2(i);
k=fftshift(j);
h=floor(k);
n=ifft2(h)/255;figure(3);m=imresize(n,2);imshow(m,[]);colorbar
取小幅值为零:
i=imread('d:
\1.jpg');
figure
(1);
imshow(i);
colorbar;
j=fft2(i);
k=fftshift(j);k(abs(k)<1)=0;
g=ifft2(k)/255;figure
(2);h=imresize(g,2);imshow(h);colorbar
结论:
二维黑白图像的压缩主要有三种方式:
取整,让小幅值为零,或者利用矩阵的变换只取某些变换后的值进行重建,如矩阵的左上角为低频部分,取它即可。
取整重建将黑色部分变白了,小幅值变换将白色部分变黑了。
二、实验前后的结构比较
(一)、自然景观
(1)、原图:
(2)、更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数figure2
更改后时域与原时域的误差为0
(3)、更改小幅值的DFT系数为0,做IDFT变化观察图像的变化
更改小幅度频谱系数为0figure3
更改后时域与原时域的误差为1471.6806242515
此处取频谱虚实部中最大值的0.0005作为取零的阈值。
(二)、人物照片
(1)、原图
(2)、更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数figure2
更改后时域与原时域的误差为0
(3)、更改小幅值的DFT系数为0,做IDFT变化观察图像的变化
更改小幅度频谱系数为0figure3
更改后时域与原时域的误差为1349.14370621138
此处取频谱虚实部中最大值的0.0005作为取零的阈值。
(三)、卡通图片
(1)、原图
(2)更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数:
figure2
更改后时域与原时域的误差为0
(3)、更改小幅值的DFT系数为0,做IDFT变化观察图像的变化
更改小幅度频谱系数为0figure3
更改后时域与原时域的误差为.0753*******
此处取频谱虚实部中最大值的0.0005作为取零的阈值。
三、实验分析与说明
(1)、实验中图片频谱中的小幅度部分需要探讨,此处取的是最大值的0.0005倍。
(2)、实验中原图取自jpg格式的rgb彩色图。
(3)、实验的结果图也已jpg格式存储
(4)、jpg格式本身就是采用了频谱取整取零技术。
四、实验结论
(1)、实验中小幅度的阈值不能取得太大,否则图片会失真。
本次试验去的是0.0005倍,出现较明显的失真;实验中发现取为0.0001,就几乎看不出失真。
(2)、关于频谱取整,我想应该是要将4字节的double变成2字节的int,可以节省约50%的存储空间。
而且从本次实验可以看出频谱取整几乎不失真。
(3)、关于频谱小幅度取零,这个阈值需要根据具体图片来确定,或者寻找自适应的阈值;
以为它对图片的失真度和压缩率也起主要作用。
阈值太小,越不容易失真,但要压缩率也越小;阈值太大,越容易失真,但压缩率也越大。
(4)、自然景观、人物照片、卡通图片这三类对同意阈值的敏感度不同;
下附实验代码:
下面是对对片的处理的全部代码,图片名K1.jpg为待处理的图片;
%2)更改DFT系数为整数,做IDFT观察图像的变化;
%3)更改小幅值的DFT系数为0,做IDFT变化观察图像的变化。
%4)选取不同类型(自然景观、人物照片、卡通图片)的实际图片重复上述处理并分析结果;
closeall;
formatlongg
A3=imread('K1.jpg');%原图
gA3=rgb2gray(A3);%原灰度图
disp('原图figure1')
figure;imshow(gA3);
%更改DFT系数为整数
f_gA3=fft2(gA3);%频谱
int_f_gA3=int32(f_gA3);%频谱取整
int_gA3=uint8(ifft2(int_f_gA3));%反变换
figure;imshow(int_gA3);
thltaA3=double(int_gA3-gA3);
nzero=numel(find(thltaA3));
disp('更改DFT系数为整数figure2')
disp('更改后时域与原时域的误差为')
ifnzero>1
disp(norm(thltaA3));
else
disp('0');
end
%更改小幅值的DFT系数为0
maxA3real=max(max(real(f_gA3)));
maxA3imag=max(max(imag(f_gA3)));
maxA3=maxA3real;
ifmaxA3 maxA3=maxA3imag; end z_f_gA3=f_gA3; form=1: size(f_gA3,1) forn=1: size(f_gA3,2) ifabs(f_gA3(m,n)) z_f_gA3(m,n)=0; end end end z_gA3=uint8(ifft2(z_f_gA3)); figure;imshow(z_gA3);%更改小幅度频谱系数为0后的图像 thltaA3_z=double(z_gA3-gA3); nzero_z=numel(find(thltaA3_z)); disp('更改小幅度频谱系数为0figure3') disp('更改后时域与原时域的误差为') ifnzero_z>1 disp(norm(thltaA3_z)); else disp('0'); end formatshort 搜集有关评价压缩图像的标准的资料及评价的算法实现;学习Matlab中与图像处理有关的常用函数的使用 图像压缩的主要指标 1、编码效率: 包括图象压缩比(CR)、每象素所用的比特数(bpp)、每秒所需的传输比特数(bps)等; 其中,CR=原始图像大小/压缩后图像大小。 设: n1和n2是在两个表达相同信息(图片)的数据集中,所携带的单位信息量。 压缩率(压缩比): CR=n1/n2 其中,n1是压缩前的数据量,n2是压缩后的数据量 相对数据冗余: RD=1–1/CR 2.重建图象质量,包括客观度量和主观度量。 (1)客观度量: 即图象的逼真度,可考虑为原图象与重建图象的差值。 如果把压缩后图像表示为原图像和噪声的叠加,即用f(x,y)表示原图像,g(x,y)表示压缩后图像,e(x,y)表示噪声,则可有f(x,y)-g(x,y)=e(x,y)。 其中x取值为0--M-1之间的整数,y取值为0--N-1之间的整数。 均方误差: MSE= = MSE值越小,保真度越好。 峰值信噪比PSNR= 信噪比 = = 均方根信噪比越大,保真度越好。 (2)主观度量: 即通过人们的主观测试来评价系统的质量,包括二元判决(即“接受”和“不可接受”)、主观PSNR、平均判分、等偏爱度曲线、多维计分(MDS)等。 MATLAB中求均值、方差的函数实现: 1、Matlab中使用mean2(H)来求矩阵H中所有元素的均值。 如在命令行输入: A-average=mean2(A-gray)即可得灰度图各像素点均值。 2、Matlab中提供标准差计算函数std()和std2(),两个函数的使用方法如下: S=std(X)S=std2(X)S=std(X,flag,dim) 我们可以通过std2()函数来计算二维图像中各点像素的标准差。 如在命令行输入std2(A-gray)即可求得灰度图各像素点的标准差。 3、Matlab中提供了方差计算函数var(),可以方便地计算矩阵的方差,函数的使用方法如下: 在命令行中输入var(double(A_gray(: ))) 即可求得灰度图各像素点的方差。 4、信噪比SNR p1=mean2(f*f) p2=mean2(e*e) SNR=p1/p2 我们的下一步计划: (1)、探究取整,即变为1的倍数,变为向k的倍数取整; (2)、探究小幅度的阈值的规律; (3)、探究不同类图片的差别,和同一类图片的共性; (4)、可已考虑从计算机原理上来要压缩数据,如系数矩阵的压缩存储等; (5)、其他频谱处理技术; (6)、其他压缩技术,不仅是频域压缩,而且可以了解一下时域压缩; (7)、滤波器对特殊图片的处理; (8)、自然景观背景不能模糊,所以可能阈值不能取太高;人物照片关注脸部特征,所以背景可以适当模糊,阈值可以取得相对较大一点。 (9)、彩色图的压缩,其他变换的了解和实现,对傅里叶变换进行各方面指标的计算和整理。 了解实现原理,优劣性,还有其物理意义。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 傅里叶变换 图像 压缩