傅里叶变换图像压缩Word下载.docx
《傅里叶变换图像压缩Word下载.docx》由会员分享,可在线阅读,更多相关《傅里叶变换图像压缩Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
原始幅度谱'
Fshift=fftshift(F);
F_m=abs(Fshift);
imshow(F_m);
幅度谱'
F_p=angle(Fshift);
imshow(F_p);
相位谱'
T=@fft2;
B1=blkproc(a,[88],T);
%将图像分块为8
8矩阵进行处理
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);
压缩87.5%的图像'
刚开始的原始图像:
傅里叶变换后的原始幅度谱:
取高频点后的图像:
取对数后的频谱图:
图像进行取整后的
i=imread('
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
取小幅值为零:
k(abs(k)<
1)=0;
g=ifft2(k)/255;
figure
(2);
h=imresize(g,2);
imshow(h);
结论:
二维黑白图像的压缩主要有三种方式:
取整,让小幅值为零,或者利用矩阵的变换只取某些变换后的值进行重建,如矩阵的左上角为低频部分,取它即可。
取整重建将黑色部分变白了,小幅值变换将白色部分变黑了。
二、实验前后的结构比较
(一)、自然景观
(1)、原图:
(2)、更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数figure2
更改后时域与原时域的误差为0
(3)、更改小幅值的DFT系数为0,做IDFT变化观察图像的变化
更改小幅度频谱系数为0figure3
更改后时域与原时域的误差为1471.6806242515
此处取频谱虚实部中最大值的0.0005作为取零的阈值。
(二)、人物照片
(1)、原图
更改后时域与原时域的误差为1349.14370621138
(三)、卡通图片
(2)更改DFT系数为整数,做IDFT观察图像的变化
更改DFT系数为整数:
figure2
更改后时域与原时域的误差为.0753*******
三、实验分析与说明
(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'
)
imshow(gA3);
%更改DFT系数为整数
f_gA3=fft2(gA3);
%频谱
int_f_gA3=int32(f_gA3);
%频谱取整
int_gA3=uint8(ifft2(int_f_gA3));
%反变换
imshow(int_gA3);
thltaA3=double(int_gA3-gA3);
nzero=numel(find(thltaA3));
更改DFT系数为整数figure2'
更改后时域与原时域的误差为'
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<
maxA3imag
maxA3=maxA3imag;
z_f_gA3=f_gA3;
form=1:
size(f_gA3,1)
forn=1:
size(f_gA3,2)
ifabs(f_gA3(m,n))<
maxA3*0.0005
z_f_gA3(m,n)=0;
end
z_gA3=uint8(ifft2(z_f_gA3));
imshow(z_gA3);
%更改小幅度频谱系数为0后的图像
thltaA3_z=double(z_gA3-gA3);
nzero_z=numel(find(thltaA3_z));
更改小幅度频谱系数为0figure3'
ifnzero_z>
disp(norm(thltaA3_z));
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)、彩色图的压缩,其他变换的了解和实现,对傅里叶变换进行各方面指标的计算和整理。
了解实现原理,优劣性,还有其物理意义。