对本书、视频等任何MATLAB问题,作者做到有问必答! 你买的不仅仅是书,更是一种“有问必答”的服务!
视频目录 视频版权归作者所有,请勿翻录 投稿请联系:627173439@qq.com
“有问必答”三部曲 第一步:购买该书(当当、亚马逊等均有销售) 第二步:拿到书籍以后,封面上有卡,如下图所示: 根据封面提示,验证密码,即可享受作者“有问必答”服务! 有问必答网址: www.iLoveMATLAB.cn/forum-224-1.html 刮开即可看到密码
第8章 图像变换技术 图像变换是将图像从空间域变换到变换域。图像变换的目的是根据图像在变换域的某些性质对其进行处理。通常,这些性质在空间域内很难获取。在变换域内处理结束后,将处理结果进行反变换到空间域。本章将详细介绍图像变换技术,主要包括Radon变换和反变换,傅立叶变换和反变换,离散余弦变换和反变换等。图像变换是图像研究领域的重要方法,可以应用于图像滤波、图像压缩和图像识别等很多领域。
8.1 图像变换技术介绍 人类视觉所看到的图像是在空域上的,其信息具有很强的相关性,所以经常将图像信号通过某种数学方法变换到其它正交矢量空间上。一般称原始图像为空间域图像,称变换后的图像为变换域图像,变换域图像可反变换为空间域图像。
8.2 图像Radon变换 在进行二维或三维投影数据重建时,图像重建方法虽然很多,但是通常采用Radon变换和Radon反变换作为基础。下面对Radon变换以及MATLAB编程实现进行详细的介绍。
8.2.1 Radon变换介绍 在X-CT成像系统中,需要对人体内器官或组织的体层平面进行数据采集,X线束围绕着体层平面的中心点进行平移和旋转,检测器可获得不同方向下的X线束穿过体层平面后的衰减数据,此数据即为X线束经过人体断层的投影,根据这些投影数据利用图像重建算法可重建人体断层图像,实现人体断层信息的无损检测。这个从检测器获取投影数据的过程,就是图像中Radon变换。例如,对于人体内器官或组织的断层平面,它在给定坐标系XOY中,沿着某一个投影方向,对每一条投影线计算断层平面的线积分,就得到该射线上的投影值,其数学表达式如下:
8.2.2 Radon正变换 在 MATLAB软件中,采用函数radon( )进行图像的Radon变换,该函数的调用格式为: R=radon(I, theta):该函数对图像I进行Radon变换,theta为角度,函数的返回值R为图像I在theta方向上的变换值。 [R, xp]=radon(…):该函数的返回值xp为对应的坐标值。
8.2.3 Radon反变换 在MATLAB软件中,采用函数iradon( )计算Radon反变换,该函数的调用格式为: I=iradon(R, theta):该函数进行Radon反变换,R为Radon变换矩阵,theta为角度,函数的返回值I为反变换后得到的图像。
8.3 图像傅立叶变换 傅立叶变换是一种常用的正交变换,它的理论完善,应用范围非常广泛。在数字图像处理领域,傅立叶变换起着非常重要的作用,可以进行图像分析、图像增强和图像压缩等。本节详细介绍图像的傅立叶变换和反变换。
8.3.1 傅立叶变换的物理意义 从纯粹的数学意义上看,傅立叶变换是将一个图像函数转换为一系列周期函数来处理的;从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数。实际上对图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,傅立叶频谱图上看到的明暗不一的亮点,实际上图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小。如果频谱图中暗的点数更多,那么实际图像是比较柔和的;反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。
8.3.2 傅立叶变换的定义及性质 傅立叶变换是在以时间为自变量的“信号”与频率为自变量的“频谱”函数之间的某种变换关系。通过傅立叶变换,可在一个全新的频率空间上来认识信号:一方面可能使得在时域研究中较复杂的问题在频域中变得简单起来,从而简化其分析过程;另一方面使得信号与系统的物理本质在频域中能更好地被揭示出来。当自变量“时间”或“频率”为连续形式和离散形式的不同组合,就可以形成各种不同的傅立叶变换对,即“信号”与“频谱”的对应关系。傅立叶变换包含连续傅立叶变换、离散傅立叶变换、快速傅立叶变换、短时傅立叶变换等,在数字图像处理中使用的是二维离散傅立叶变换。
8.3.3 傅立叶变换的MATLAB实现 在MATLAB软件中,通过函数fft( )进行一维离散傅立叶变换,通过函数ifft( )进行一维离散傅立叶反变换。函数fft( )和ifft( )的详细使用情况,读者可以查询MATLAB的帮助系统。在MATLAB中,采用函数fft2( )进行二维离散傅立叶变换,函数fft( )和fft2( )的关系为fft2(X)=fft(fft(X).’).’。函数fft2( )的详细调用情况如下所示: Y=fft2(X):该函数采用快速FFT算法,计算矩阵X的二维离散傅立叶变换,结果返回给Y,Y的大小与X相同。 Y=fft2(X, m, n):该函数采用快速FFT算法,计算矩阵大小为的二维离散傅立叶变换,返
8.3.4 傅立叶变换的应用 通过傅立叶变换将图像从时域转换到频域,然后进行相应的处理,例如滤波和增强等,然后再通过傅立叶反变换将图像从频域转换到时域。下面通过两个实例来介绍傅立叶变换在图像处理中的应用。
8.4 图像离散余弦变换 离散余弦变换是以一组不同频率和幅值的余弦函数和来近似一幅图像,实际上是傅立叶变换的实数部分。离散余弦变换(Discrete Cosine Transform,DCT)有一个重要的性质,即对于一幅图像,其大部分可视化信息都集中在少数的变换系数上。因此,离散余弦变换经常用于图像压缩,例如国际压缩标准的JPEG格式中就采用了离散余弦变换。本节详细介绍离散余弦变换及其在图像处理中的应用。
8.4.1 离散余弦变换的定义 在傅立叶变换过程中,如果被展开的函数是实偶函数,那么其傅立叶变换中只包含余弦项,基于傅立叶变换的这一特点,人们提出了离散余弦变换。DCT变换先将图像函数变换成偶函数形式,再对其进行二维离散傅立叶变换,因此DCT变换可以看成是一种简化的傅立叶变换。
8.4.2 离散余弦变换的MATLAB实现 在MATLAB软件中,采用函数dct( )进行一维离散余弦变换,采用函数idct( )进行一维离散余弦反变换,这两个函数的详细使用情况,读者可以查询MATLAB的帮助系统。通过函数dct2( )进行二维离散余弦变换,该函数的详细使用情况如下所示: B=dct2(A):该函数计算图像矩阵A的二维离散余弦变换,返回值为B,A和B的大小相同。 B=dct2(A, m, n)或B=dct2(A, [m, n]):该函数计算图像矩阵A的二维离散余弦变换,返回值为B,通过对A补0或剪裁,使得B的大小为m行n列。
8.4.3 离散余弦变换的应用 在介绍离散余弦变换进行图像数据压缩之前,首先介绍图像的块操作函数blkproc( )。在MATLAB软件中,采用函数blkproc( )进行图像的块操作,该函数的详细使用情况如下: B=blkproc(A, [m n], fun):该函数对矩阵A进行块操作,块的大小为,对块的操作函数为fun。返回值B为进行块操作后得到的矩阵,A和B的大小相同。 B=blkproc(A, [m n], [mborder nborder], fun):该函数对矩阵A进行块操作,块的大小为,在移动块是具有mborder×nborder的重叠。
8.5 其他图像变换 除了前面介绍的图像变换之外,还有很多其他的图像变换技术,例如图像的Hadamard变换、Hough变换以及图像的小波变换等。
8.5.1 Hadamard变换 的一维离散Hadamard变换公式为: 其中 。 一维离散Hadamard变换的反变换公式为: 其中 。 其中 。 一维离散Hadamard变换的反变换公式为: 其中 。 将一维Hadamard变换扩展到二维,二维Hadamard变换公式为: 二维Hadamard变换的你变换公式为:
8.5.2 Hough变换 Hough变换是图像处理中从图像中识别几何形状的基本方法之一。由Paul Hough于1962年提出,最初只用于二值图像直线检测,后来扩展到任意形状的检测。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。 Hough变换根据如下公式:
8.5 本章小结 本章详细的介绍了通过MATLAB进行图像的变换,主要包括图像的Radon变换、傅立叶变换和离散余弦变换。傅立叶变换经常用于图像处理和分析,例如图像的增强和滤波等。离散余弦变换经常用于图像的压缩。最后简单介绍了图像的Hadamard变换和Hough变换。
习题 8.1 任意选择一幅灰度图像,编程实现对该图像的离散余弦变换和反变换。 8.1 任意选择一幅灰度图像,编程实现对该图像的离散余弦变换和反变换。 8.2 图像矩阵为,通过编程对该图像进行二维Hadamard变换? 8.3 任意选择一幅灰度图像,然后采用LoG算子得到该图像的二值边缘图像,最后进行Hough变换,通过编程实现,并对结果进行分析。