MATLAB工具包——curvelet变换的理解(转)
curvelet下载的curvelet工具包,有以下三个文件:fdct_usfft_matlab、fdct_wrapping_matlab、mecv三个文件夹添加到matlab路径中即可。
curvelet matlab示例代码理解:
1. fdct_wrapping
function C = fdct_wrapping(x, is_real, finest, nbscales, nbangles_coarse)
% fdct_wrapping.m - Fast Discrete Curvelet Transform via wedge wrapping - Version 1.0
%
% Inputs
% x M-by-N matrix 输入为MxN的矩阵
%
% Optional Inputs
% is_real Type of the transform 转化的类型
% 0: complex-valued curvelets 复数值的曲波变化
% 1: real-valued curvelets 实数值的曲波变化
% [default set to 0] 默认设置为0
% finest Chooses one of two possibilities for the coefficients at the
% finest level: 选择一种表示方式计算最优级的系数
% 1: curvelets 曲波变化
% 2: wavelets 小波变化
% [default set to 2] 默认设置为2
% nbscales number of scales including the coarsest wavelet level
% 包含最粗小波级在内的伸缩数
% [default set to ceil(log2(min(M,N)) - 3)]
% nbangles_coarse
% number of angles at the 2nd coarsest level, minimum 8,
% 第二粗糙级的角度数,最小为8
% must be a multiple of 4. [default set to 16]
% 必须为4的倍数,默认为16
% Outputs
% C Cell array of curvelet coefficients.
% C{j}{l}(k1,k2) is the coefficient at
% - scale j: integer, from finest to coarsest scale,
% 从最佳尺度到最粗尺度
% - angle l: integer, starts at the top-left corner and
% increases clockwise,
% 从左上角开始顺时针增长
% - position k1,k2: both integers, size varies with j
% and l.
% If is_real is 1, there are two types of curvelets,
% 'cosine' and 'sine'. For a given scale j, the 'cosine'
% coefficients are stored in the first two quadrants (low
% values of l), the 'sine' coefficients in the last two
% quadrants (high values of l).
%
% See also ifdct_wrapping.m, fdct_wrapping_param.m
%
% By Laurent Demanet, 2004
2. DCT基本示例代码理解
% fdct_wrapping_demo_basic.m -- Displays a curvelet both in the spatial and frequency domains. m = 1024;
n = 1024; X = zeros(m,n); %forward curvelet transform
disp('Take curvelet transform: fdct_wrapping');
tic; C = fdct_wrapping(X,0,2,8,64); toc; %tic toc配合使用测量程序运行时间 %specify one curvelet
s = 7; %从1开始增大,空间域变细,频率域变粗
w = 10;%从1(左上角)开始增大,空间域顺时针旋转,与笛卡尔corona相对应
[A,B] = size(C{s}{w});%尺度为s,方向为w,的矩阵大小
a = ceil((A+1)/2);
b = ceil((B+1)/5);
C{s}{w}(a,b) = 1; %该尺度、方向中心位置元素设置为1 %adjoint curvelet transform
disp('Take adjoint curvelet transform: ifdct_wrapping');
tic; Y = ifdct_wrapping(C,0); toc;%进行反曲波变化,得到空间域图像 %display the curvelet
F = ifftshift(fft2(fftshift(Y)));
subplot(1,2,1); colormap gray; imagesc(real(Y)); axis('image'); ...
title('a curvelet: spatial viewpoint');
subplot(1,2,2); colormap gray; imagesc(abs(F)); axis('image'); ...
title('a curvelet: frequency viewpoint'); %get parameters
[SX,SY,FX,FY,NX,NY] = fdct_wrapping_param(C);
示例代码流程:
* 首先创建了一副空图像,对其进行DCT变化,得到其系数C(可以理解为一个四维矩阵,由于每个二维矩阵维度不同,故使用cell数据结构),当然C中的元素全为0。
* 之后将其尺度s、角度为w的二维矩阵C{s}{w}中心元素设置为1,对C进行IDCT变换,得到其空间域的图像Y。
* 之后对Y做傅里叶变换,得到其频率域图像F。绘制Y与F的图像。
2.1 变化后系数矩阵维度的理解
下表显示了对图像做C = fdct_wrapping(X,0,2,6,16);变换后,得到系数C的详细信息,其中原始图片大小为512*512。最内层即Coarse是由低频系数组成的一个矩阵,最外层Fine是高频系数组成的矩阵。
| 层次 | 尺度系数 | 方向参量的个数 | 矩阵的形式 |
|---|---|---|---|
| Coarse | C{1} | 1 | 21*21 |
| Detail | C{2} | 16 | 18*22 16*22 22*18 22*16 |
| C{3} | 32 | 34*22 32*22 22*32 22*34 | |
| C{4} | 32 | 67*44 64*43 64*44 44*64 43*64 44*67 | |
| C{5} | 64 | 131*44 128*43 128*44 44*128 43*128 44*131 | |
| Fine | C{6} | 1 | 512*512 |
2.2 尺度数s的影响
下图显示了对图像做C = fdct_wrapping(X,0,2,6,16);变换后,s=1:6,w=1下的空间域与频域的图像。可以看出:
1. 随着s增大,即尺度由最佳尺度变为最粗尺度时,空间域的“针”图形组件变细,而频率域的“针”图像逐渐变粗。这个可以由空间域和频率域具有一定的对称性得知,空间域越“胖”,频率域越“瘦”。
2. 尺度s值越大,代表的的越是高频信息。

2.2 角度数w的影响
下图显示了对图像做C = fdct_wrapping(X,0,2,6,16);变换后,s=5,w=1:10:60下的空间域与频域的图像。可以看出:
w=1时,“楔形”位于左上角位置,随着w增大,“楔形”顺时针转动。由于空间限制,只贴出部分图片。

2.3 位置a b(其元素值为1)的影响
下图所示为对原始图像进行C = fdct_wrapping(X,0,2,total_s,16);,改变C{5}{1}(a,b)=1;,a b取值变化时所对应空间域与频率域的图像,可以看出:
a b的改变并不会对频率域图像造成影响,而在空间域上“针”状物体会根据a b的值发生相应的位移。

3 curvelet的性质
- 小波变换是一种具有较强时、频局部分析功能的非平稳信号分析方法成功地应用于信号的特征提取领域,曲波变换作为新一代的多尺度几何分析工具取得了较好的识别效果,它考虑了尺度、位置、角度信息使其在表达图像中的曲线时明显优于小波变换。
- Curvelet变换各向异性的特点更适合分析图像中的曲线或直线状边缘特征。
- 符合生理学研究指出的“最优”图像表示方法应该具有的三种特征,多分辨、带通、具有方向性。
MATLAB工具包——curvelet变换的理解(转)的更多相关文章
- Matlab实现Hough变换检測图像中的直线
Hough变换的原理: 将图像从图像空间变换至參数空间.变换公式例如以下: 变换以后,图像空间与參数空间存在下面关系: 图像空间中的一点在參数空间是一条曲线,而图像空间共线的各点相应于參数空间交于一点 ...
- Matlab---傅里叶变换---通俗理解(二)
1.用Matlab进行傅立叶变换 FFT是离散傅里叶变换的高速算法,能够将一个信号变换到频域.有些信号在时域上是非常难看出什么特征的,可是假设变换到频域之后,就非常easy看出特征了.这就是非常多信号 ...
- Matlab实现Hough变换检测图像中的直线 分类: 图像处理 2014-06-14 22:07 641人阅读 评论(0) 收藏
Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...
- Hilbert-Huang Transform: matlab 希尔伯特-黄变换: matlab实现
关于Hilbert-Huang的matlab实现,材料汇总,比较杂...感谢所有网络上的贡献者们:) 核心:以下代码计算HHT边际谱及其对应频率 工具包要求:G-Rilling EMD Toolbox ...
- 遗传算法MATLAB工具包简介
下面介绍的函数都是Sheriffed大学遗传算法工具包内的常用函数 复制矩阵 B=rep(A,RepN) 1 A表示要被复制的矩阵,RepN包含每个方向的复制次数,RepN(1)代表纵向复制次数,Re ...
- MATLAB与三大变换
运行 Simulink 有三种方式: z 在 MATLAB 的命令窗口直接键入“Simulink”并回车: z 单击 MATLAB 工具条上的 Simulink 图标: z 在 MATLAB 菜单上选 ...
- Matlab 中 arburg 函数的理解与实际使用方法
1. 理解 1.1 Matlab 帮助: a = arburg(x,p)返回与输入数组x的p阶模型相对应的归一化自回归(AR)参数. 如果x是一个向量,则输出数组a是一个行向量. 如果x是矩阵,则参数 ...
- OpenGL模型视图变换、投影变换、视口变换的理解
OpenGL中不设置模型,投影,视口,所绘制的几何图形的坐标只能是-1到1(X轴向右,Y轴向上,Z轴垂直屏幕向外). 产生目标场景的过程类似于用照相机进行拍照: (1)把照相机固定在三角架上,并让他对 ...
- matlab中cell array的理解
1. matlab中有一个函数iscell() 用于判断一个数组是不是cell array 参考:MATLAB Function Reference iscell Determine whether ...
随机推荐
- 医生智能提醒小程序数据库设计心得——Legends Never Die
数据库设计心得 根据我们小组数据库设计的整个流程,我们将整个数据库设计划分为两个具体的阶段,在每个阶段需要进行不同的准备,有不同的注意事项,接下来我们将结合在数据库设计过程中遇到的一些问题和困难,提出 ...
- 学习笔记47_关于Session局限性问题,Memcache
三大问题: 1.Session性能问题 2.不能稳定输出.考虑使用进程外Session 3.组成集群,登录数据进行共享 (比如说像百度,百度网盘,百度文库等是使用不同的服务机器的,怎样避免使用的时候不 ...
- Pyinstaller打包scrapy
环境 Windows7 Python3.65 scrapy1.74 PyInstaller3.5 创建打包脚本 在与scrapy.cfg同路径创建start.py # -*- coding: utf- ...
- 使用 Github + Hexo 从 0 搭建一个博客
最近有几位同学在公众号后台留言问我的博客站是怎么建站的,思来想去,还是写一篇从 0 开始吧. 前置准备 我们先聊一下前置准备,可能很多同学一听说要自己搭一个博客系统,直接就望而却步.不得有台服务器么, ...
- [考试反思]1024csp-s模拟测试86:消耗
%%%两个没素质的和一个萌两小时AK 最近貌似总是可以比较快速的拿下T1,然后T2打到考试结束... T1是套路题没什么好说的. T2是一个比较蠢的博弈题,我花了很长时间干各种乱七八糟的事 什么打表啊 ...
- CSPS模拟 69
$C_n^0=1$ $C_n^0=1$ $C_n^0=1$ 我怎么又双叒叕犯这种错误了啊 (咳檀) T1 WA0,大神题,不会做! T2 就是要找一个最长区间,满足左端点是区间最小值,右端点是区间最大 ...
- 爬虫学习--Urllib库基本使用 Day1
一.Urllib库详解 1.什么是Urllib Python内置的HTTP请求库 urllib.request 请求模块(模拟实现传入网址访问) urllib.error ...
- python——int()、hex()、oct()、bin()、float()数值类型转换函数
摘要:在python中,数值类型转换函数常用的有浮点型float().取整int().八进制oct().二进制bin().十六进制hex()这五个函数. 单词float的意思就是浮动的意思: int是 ...
- win7 安装php插件imagick
win7 安装php插件imagick <h2>安装步骤:</h2><h2><a name="t1"></a> ...
- 从 DevOps 到 Serverless:通过“不用做”的方式解决“如何更高效做”的问题
作者 | 徐进茂(罗离) JAVA 开发工程师 导读:近年来,Serverless 一词越来越热,它已经逐渐成为了一种新型的软件设计架构.和 DevOps 概念提倡的是通过一系列工具和自动化的技术来 ...