DCT变换在图像去噪中的应用.docx
《DCT变换在图像去噪中的应用.docx》由会员分享,可在线阅读,更多相关《DCT变换在图像去噪中的应用.docx(9页珍藏版)》请在冰豆网上搜索。
![DCT变换在图像去噪中的应用.docx](https://file1.bdocx.com/fileroot1/2022-10/28/520d2fae-db8a-409a-8757-ace81549ef49/520d2fae-db8a-409a-8757-ace81549ef491.gif)
DCT变换在图像去噪中的应用
摘要
离散余弦变换(DiscreteCosineTransform,简称DCT变换)是一种与傅立叶变换紧密相关的数学运算。
在傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。
本文主要介绍了基于DCT变换的图像去噪的基本原理及其实现步骤,并使用MATLAB对一副原始图像用不同的低通滤波器进行去噪,给出了实验仿真结果。
关键词:
DCT;图像去噪;MATLAB
1.离散余弦变换简介
离散余弦变换(DCT)是N.Ahmed等人在1974年提出的正交变换方法。
它常被认为是对语音和图像信号进行变换的最佳方法。
为了工程上实现的需要,国内外许多学者花费了很大精力去寻找或改进离散余弦变换的快速算法。
由于近年来数字信号处理芯片(DSP)的发展,加上专用集成电路设计上的优势,这就牢固地确立离散余弦变换(DCT)在目前图像编码中的重要地位,成为H.261、JPEG、MPEG等国际上公用的编码标准的重要环节。
在视频压缩中,最常用的变换方法是DCT,DCT被认为是性能接近K-L变换的准最佳变换,变换编码的主要特点有:
(1)在变换域里视频图像要比空间域里简单。
(2)视频图像的相关性明显下降,信号的能量主要集中在少数几个变换系数上,采用量化和熵编码可有效地压缩其数据。
(3)具有较强的抗干扰能力,传输过程中的误码对图像质量的影响远小于预测编码。
通常,对高质量的图像,DMCP要求信道误码率,而变换编码仅要求信道误码率。
DCT等变换有快速算法,能实现实时视频压缩。
针对目前采用的帧内编码加运动补偿的视频压缩方法的不足,我们在Westwater等人提出三维视频编码的基础上,将三维变换的结构应用于视频图像压缩,进一步实现了新的视频图像序列的编码方法。
2.离散余弦变换的定义及应用
离散余弦变换的变换核为实数的余弦函数,因而DCT的计算速度要比变换核为指数的DFT快得多,已广泛应用到图像压缩编码、语音信号处理等众多领域。
2.1一维离散余弦变换
(2.1)
其中:
2.2二维离散余弦变换
(2.2)
其中u,v=0,1,...,N—l,x,y=0,1,...,N—l。
可以看出,DCT和IDCT的变换是可分离的,即二维变换可以分解成串联的两次一维变换。
2.3离散余弦变换的应用
离散余弦变换在图像处理中占有重要的地位,尤其是在图像的变换编码中有着非常成功的应用。
近年来十分流行的静止图像压缩标准JPEG就采
用了离散余弦变换。
离散余弦变换实际上是傅里叶变换的文数部分,但是它比傅里叶变换有更强的信息集中能力。
对于大多数自然图像,离散余弦变换能将主要的信息放到较少的系数上去,因此就更能提高编码的效率。
3.离散余弦变换的Matlab实现
在Matlab中,dct2函数和idct2函数分别用于进行二维DCT变换和二维DCT反变换。
1.dct2数
功能:
二维DCT变换
格式:
B=dct2(A)
B=dct2(A,m,n,)
B=dct2(A,[mn])
说明:
B=dct2(A)计算A的DCT变换B,A与B的大小相同;B=dct2(A,m,n,)和B=dct2(A,[mn])通过对A补0或剪裁,使B的大小为。
2.idct2数
功能:
DCT反变换
格式:
B=idct2(A)
B=idct2(A,m,n,)
B=idct2(A,[mn])
说明:
B=idct2(A)计算A的DCT反变换B,A与B的大小相同;B=idct2(A,m,n,)和B=idct2(A,[mn])通过对A补0或剪裁,使B的大小为。
3.dctmtx函数
功能:
计算DCT变换矩阵。
格式:
D=dctmtx(n)
说明:
D=dctmtx(n)返回一个nn的DCT变换矩阵,输出矩阵D为double类型。
4.图像去噪的实现
4.1MATLAB简介
MATLAB是矩阵实验室(MatrixLaboratory)的简称,在数学类科技应用应用广泛。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等。
MATLAB的优点:
(1)友好的工作平台和编程环境;
(2)简单易用的程序语言;
(3)强大的科学计算机数据处理能力;
(4)出色的图形处理功能;
(5)应用广泛的模块集合工具箱;
(6)实用的程序接口和发布平台。
4.2图像去噪的Matlab实现
1.理想低通滤波器程序
I=imread('xpy.jpg');
f=double(I);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
d0=100;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
if(d<=d0)
h=1;
elseh=0;
end
result(i,j)=h*g(i,j);
end
end
>>result=ifftshift(result);
>>J1=ifft2(result);
>>J2=uint8(real(J1));
>>imshow(J2)
2.巴特沃斯低通滤波器程序
I=imread('xpy.jpg');
f=double(I);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=2;
d0=30;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);
J2=uint8(real(J1));
imshow(J2)
3.高斯低通滤波器程序
I=imread('xpy.jpg');
f=double(I);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
d0=100;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=exp(-(d.^2)./(2*(d0^2)));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);
J2=uint8(real(J1));
imshow(J2)
4.3去噪后图像的质量分析
下面是理想低通滤波器、巴特沃斯低通滤波器、高斯低通滤波器的滤波效果分析与讨论。
1.理想低通滤波器
原图像d0=15
d0=30d0=100
图4.1理想低通滤波器滤波效果(d0=15,30,100)
当截止频率d0=15时,滤波后的图像模糊,难以分辨,振铃现象明显。
当d0=30时,滤波后的图像模糊减弱,能分辨出衣服上条纹与图形轮廓,但由于理想低通滤波器在频率域的锐截止特性,滤波后的图像仍有较明显的振铃现象。
当d0=100时,滤波后的图像比较清晰,但高频分量损失后,图像边沿与条纹变的有些模糊,在图像的边框附近仍有轻微振铃现象。
2.巴特沃斯低通滤波器
原图像d0=15
d0=30d0=100
图4.2巴特沃斯低通滤波器滤波效果(d0=15,30,100)
图2显示了三种二阶巴特沃斯低通滤波器的滤波效果,从图中可以看出其显示了轻微的振铃和较小的负值,但远不如理想滤波器明显。
3.高斯低通滤波器
原图像d0=15
d0=30d0=100
图4.3高斯低通滤波器滤波效果(d0=15,30,100)
图3显示了三种高斯低通滤波器的滤波效果。
从图中可以看出低通滤波器无法达到有相同截止频率的二阶巴特沃斯低通滤波器的平滑效果,但此时结果图像中无振铃现象产生。
总结
本文详细介绍了DCT变换的定义、应用及基于DCT变换的图像压缩原理,并使用MATLAB实现了图像的去噪。
分析了用不同低通滤波器去噪后的效果。
通过本次设计让我了解到了关于图像去噪和DCT变换的很多知识,主要了解了DCT变换的原理以及应用。
在软件仿真程序的编写过程中,我遇到了很多困难也犯了很多错误,但在老师的指导下我都一一解决了它们,在此向老师表示由衷的感谢。
这次设计不仅给我补充了大量的知识而且也让我认识到了自己的不足,我会努力来弥补不足,让自己在应对以后的工作更加有信心,最后完成了本次课程设计。
参考文献
[1]曹雪虹,张宗橙.信息论与编码.北京:
清华大学出版社,2007.
[2]王慧琴.数字图像处理.北京:
北京邮电大学出版社,2007.
[3]程佩青.数字信号处理.北京:
清华大学出版社,2006.
[4]高成.MATLAB图像处理与应用.北京:
国防工业出版社,2007.
[5]郭天祥.数字信号处理技术的应用.北京:
电子工业出版社,2008.