傅里叶变换图像压缩.docx

上传人:b****2 文档编号:1061972 上传时间:2023-04-30 格式:DOCX 页数:19 大小:329.74KB
下载 相关 举报
傅里叶变换图像压缩.docx_第1页
第1页 / 共19页
傅里叶变换图像压缩.docx_第2页
第2页 / 共19页
傅里叶变换图像压缩.docx_第3页
第3页 / 共19页
傅里叶变换图像压缩.docx_第4页
第4页 / 共19页
傅里叶变换图像压缩.docx_第5页
第5页 / 共19页
傅里叶变换图像压缩.docx_第6页
第6页 / 共19页
傅里叶变换图像压缩.docx_第7页
第7页 / 共19页
傅里叶变换图像压缩.docx_第8页
第8页 / 共19页
傅里叶变换图像压缩.docx_第9页
第9页 / 共19页
傅里叶变换图像压缩.docx_第10页
第10页 / 共19页
傅里叶变换图像压缩.docx_第11页
第11页 / 共19页
傅里叶变换图像压缩.docx_第12页
第12页 / 共19页
傅里叶变换图像压缩.docx_第13页
第13页 / 共19页
傅里叶变换图像压缩.docx_第14页
第14页 / 共19页
傅里叶变换图像压缩.docx_第15页
第15页 / 共19页
傅里叶变换图像压缩.docx_第16页
第16页 / 共19页
傅里叶变换图像压缩.docx_第17页
第17页 / 共19页
傅里叶变换图像压缩.docx_第18页
第18页 / 共19页
傅里叶变换图像压缩.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

傅里叶变换图像压缩.docx

《傅里叶变换图像压缩.docx》由会员分享,可在线阅读,更多相关《傅里叶变换图像压缩.docx(19页珍藏版)》请在冰点文库上搜索。

傅里叶变换图像压缩.docx

傅里叶变换图像压缩

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)、彩色图的压缩,其他变换的了解和实现,对傅里叶变换进行各方面指标的计算和整理。

了解实现原理,优劣性,还有其物理意义。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2