傅里叶变换图像压缩.docx
- 文档编号:1580522
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:13
- 大小:253.41KB
傅里叶变换图像压缩.docx
《傅里叶变换图像压缩.docx》由会员分享,可在线阅读,更多相关《傅里叶变换图像压缩.docx(13页珍藏版)》请在冰豆网上搜索。
傅里叶变换图像压缩
傅里叶变换图像压缩
作者:
日期:
DSP实验进度汇报
组员:
汪张扬、任艳波、陈雪松、谢聪、沈旭
任务分配:
汪张扬由于考G,上周没有任务,沈旭负责自制二值图像的处理,陈雪松和谢聪负责其他图片的处理,任艳波负责搜集图像压缩评价的相关材料以下为简要概括:
读入图像进行傅里叶变换和压缩
原始程序:
a=imread(z1.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);%将图像分块为8X8矩阵进行处理
figure;
imshow(a);
titleC原始图像');
mask=[10000000
01000000
00100000
00010000
00000000
00000100
00000010
00000001];%与该矩阵相乘去掉中间行,即高频部分
B2=blkproc(B1,[88],卩1*x',mask);
fun=@ifft2;
F3=blkproc(B2,[88],fun);
F=mat2gray(F3);
figure;
imshow(F);
tit1e('压缩87.5%的图像');
刚开始的原始图像:
傅里叶变换后的原始幅度谱
取高频点后的图像:
原始图像
原始幅度谱
压缩87.5%的图像
取对数后的频谱图:
图像进行取整后的
i=imreadC1.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
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
取小幅值为零:
i=imread(zd:
\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);co1orbar
结论:
二维黑白图像的压缩主要有三种方式:
取整,让小幅值为零,或者利用矩阵的变换只取某些变换后的值进行重建,如矩阵的左上角为低频部分,取它即可。
取整重建将黑色部分变白了,小幅值变换将白色部分变黑了。
二、实验前后的结构比较
(1)、自然景观
(1)、原图:
*
厅文蜜
(2)、更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数figure2
更改后时域与原时域的误差为0
(3)、更改小幅值的DFT系数为0,做IDFT变化观察图像的变化
更改小幅度频谱系数为0figure3
更改后时域与原时域的误差为1471.6806242515
此处取频谱虚实部中最大值的0.0005作为取零的阈值
(2)、人物照片
(1)、原图
(2)、更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数figure2
更改后时域与原时域的误差为0
(3)、更改小幅值的DFT系数为0,做IDFT变化观察图像的变化
更改小幅度频谱系数为0figure3
更改后时域与原时域的误差为1349.14370621138此处取频谱虚实部中最大值的0.0005作为取零的阈值
(3)、卡通图片
(1)、原图
⑵更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数:
figure2
更改后时域与原时域的误差为0
(3)、更改小幅值的DFT系数为0,做IDFT变化观察图像的变化
更改小幅度频谱系数为0figure3
更改后时域与原时域的误差为2546.
此处取频谱虚实部中最大值的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)选取不同类型(自然景观、人物照片、卡通图片)的实际图片重复上述处理并分析结果;
c1oseal1;
formatIongg
A3=imread('Kl.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(th1taA3));
else
dispC0');
end%更改小幅值的DFT系数为0
maxA3real=max(max(rea1(f_gA3)));maxA3imag=max(max(imag(f_gA3)));maxA3=maxA3real;
ifmaxA3vmaxA3imag
maxA3=maxA3mag;
end
z_f_gA3=f_gA3;
form=1:
size(f_gA3,1)
forn=1:
size(f_gA3,2)
ifabs(f_gA3(m,n)) end endend z_gA3=uint8(ifft2(z_f_gA3)); figure;imshow(z_gA3);%更改小幅度频谱系数为0后的图像 thltaA3—z=double(z_gA3-gA3); nzero_z=numel(find(thltaA3—z)); dispC更改小幅度频谱系数为0figure3') dispC更改后时域与原时域的误差为/) ifnzero_z>1 disp(norm(thltaA3_z)); eIse disp('0'); end formatshort 搜集有关评价压缩图像的标准的资料及评价的算法实现;学习Matlab中与图像 处理有关的常用函数的使用图像压缩的主要指标 1、编码效率: 包括图象压缩比(CR)、每象素所用的比特数(bpp)、每秒所需的传输比特数(bps)等; 其中,CR=原始图像大小/压缩后图像大小。 设: n1和n2是在两个表达相同信息(图片)的数据集中,所携带的单位信息量。 压缩率(压缩比): CR=nl/n2? ? 其中,n1是压缩前的数据量,n2是压缩后的数据量 相对数据冗余: RD=1-1/CR 2.重建图象质量,包括客观度量和主观度量。 (1)客观度量: 即图象的逼真度,可考虑为原图象与重建图象的差值。 如果把 压缩后图像表示为原图像和噪声的叠加,即用f(x,y)表示原图像,g(x,y)表示 压缩后图像,e(x,y)表示噪声,则可有彳(x,y)-g(x,y)=e(x,y)o其中x取值为0-—M—1之间的整数,y取值为0—-N-1之间的整数。 222 均方误差: MSE=ee(x,y)Ef(x,y)g(x,y) MsE值越小,保真度越好 信噪比(SNR) 2(x,y) 2 e(x,y) y f2(x,y) Xy [f(x,y)g(x,y)]2 均方根信噪比越大,保真度越好。 ? (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=st d(X,flag,dim) 我们可以通过std2()函数来计算二维图像中各点像素的标准差。 如在命令行输入std2(A-gray)即可求得灰度图各像素点的标准差。 3、Matlab中提供了方差计算函数var(),可以方便地计算矩阵的方差,函数的使用方法如下: 在命令行中输入var(doub1e(A_gray(: ))) 即可求得灰度图各像素点的方差。 4、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 傅里叶变换 图像 压缩
![提示](https://static.bdocx.com/images/bang_tan.gif)