打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
学习Curvelet

Curvelet变换是最近图像处理较新的一种多尺度几何变换算法。其发展历程在短短十年间:

1999年,Candès和Donoho在Ridgelet变换的基础上提出了连续曲波(Curvelet)变换——第一代Curvelet变换中的Curvelet99。

2002年,Strack、Candès和Donoho提出了第一代Curvelet变换中的Curvelet02。

2002年,Candès等人提出了第二代Curvelet变换。

2005年,Candès提出了两种基于第二代Curvelet变换理论的快速离散实现方法:

1)非均匀空间抽样的二维FFT算法(Unequally-Spaced Fast Fourier Transform,USFFT);

2)Wrap算法(Wrapping-Based Transform)

与小波变换类似,Curvelet变换同样有其对应公式。Curvelet系数可由下式得到,即信号与小波函数内积:

 
这里j表示尺度,l表示方向,k表示位移。变换的推导以及原理是个十分复杂的过程,这需要有相当强的数学功底。
下面是对Curvelet变换的理解:

在时间域:Curvelet变换可以看做是一个椭圆以内积形式依次覆盖整个矩阵(指要变换的矩阵),这个图在很多地方都出现过。就我个人的理解详细解释下。

这里的椭圆就是Curvelet变换的窗口,相当于小波变换的基函数。其长轴与短轴关系为平方关系,其窗口大小视尺度j而定。与二维小波变换最大的优势在于Curvelet变换具有方向性。就是在尺度j下,椭圆做完整个矩阵的内积后(即依次覆盖完整个矩阵),可得到一组系数。然后将椭圆进行旋转适当的角度a再与矩阵做内积得到a角度的Curvelet系数。这样将椭圆进行多次旋转,每旋转一个角度就能得到尺度j一个方向的系数矩阵。在尺度j下做L次旋转,那么尺度j下就产生L个角度的系数矩阵。做完尺度j了接下来做尺度j+1下所有角度,方法同上。

如一幅图像上有一段弧,椭圆长轴沿着弧方向做覆盖内积得到的系数就大。这样就适合做图像边缘检测。

对于Curvelet变换的Matlab程序包curvlab可在网上下载。Curvlab包里有Curvelet的快速离散算法的Matlab程序和C++程序。

将其添加在Matlab里面:File -> set path

Add Folder 添加好curvlab里相关*. M文件的路径。

这时在Matlab里面使用Curvelet的快速变换及反变换函数:

fdct_usfft()

ifdct_usfft()

fdct_wrapping()

ifdct_wrapping()

在Matlab中Curvelet变换后返回的是一个cell矩阵。这个矩阵装着各个尺度、各个方向的系数值。

C= fdct_usfft(***);

C{j}表示一个cell矩阵,装着尺度j上所有方向的系数。

C{j}{l}就表示是一个二维矩阵,表示尺度j,方向l上的所有系数,

一般尺度越高,其对应的都是高频系数。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
时频分析与小波变换的发展历程
技术贴│R语言13种相关矩阵图
仿射变换 T
不误学习,好好学习,由椭圆焦点求相关系数。
全面掌握面向智能制造领域的逆向工程应用
压缩感知(compressed sensing)的通俗解释
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服