VC快速实现一维离散Gabor变换软件的研究

合集下载

基于Gabor滤波与灰度积分的人眼快速定位方法

基于Gabor滤波与灰度积分的人眼快速定位方法
基于 Gabor 滤波与灰度积分的人眼快速定位方法 熊海涵 (成都理工大学 信息科学技术学院,四川 成都 610059)
摘 要:本文提出了一种基于 gabor 小波滤波器和灰度积分投影技术的眼睛定位方法。 首先通 过图像预处理技术中的 gabor 小波进行预处理去除图像噪声,消除人脸图像因为曝光条件不 同而造成的模糊,得到灰度分配较为均匀的图像,然后分别利用水平和垂直灰度积分投影曲 线结合人脸的结构特征找到眼睛的位置坐标,实现了准确的眼睛定位,从而为进一步提取其 它特征点打好了基础。 该方法能提高人眼定位的计算速度, 适合实时性要求高的场合。 仿真 实验验证了该方法的稳定性和有效性。 关键词:gabor 小波;眼睛定位;灰度积分投影 中图分类号:TP391 文献标识码:A 文章编号:1003-5168(2012)24-0001-01 1 gabor 小波进行输入图像的预处理 目前 Gabor 展开和变换被认为是信号与图像表示的最好方法之一。 在给定综合窗下如何 求解分析窗和 Gabor 变换系数是 Gabor 变换中要解决的最基本问题。 但是为了使 Gabor 变换 的计算更加简单,人们提出了另一种实数形式的离散 Gabor 变换方法(简称 RDGT),此方法 并可运用快速离散 Hartley 变换算法去计算 Gabor 变换系数,因为实数形式的离散 Gabor 变换系数和复数形式的离散 Gabor 变换系数,它们的实部和虚部有着十分简单的加减关系, 前者的计算与后者的计算是完全可以替代的, 这样就使得 Gabor 复变换系数的计算量得到了 大大的简化;复数形式的离散 Gabor 逆变换比实数形式离散 Gabor 逆变换慢得很多,而且, 实值 Gabor 变换在实际应用中更加方便于软件与硬件的实现。 2 基于灰度积分投影的人眼定位 人脸图像中, 眼睛部位的灰度值与周围环境的灰度值有明显的差异, 眼睛区域周围其灰 度值是最小的, 我们可以利用此特征并使用积分投影的方法来定位眼睛。 积分投影函数是我 们最为常见的投影函数之一。假设 R(x,y)对应表示点(x,y)处像素灰度值,垂直积分投影函 数与水平积分投影函数在区间[x1,x2]和[y1,y2]内的分别表示为 Sv(x)和 Sh(y), 那么 Sh(y) 和 Mh(y)的值也会体现图像中某一行像素的灰度值的变化,因此,图像中的特征就通过对积 分投影函数值的分析得到了提取。 2.1 水平灰度投影 人脸图像中眼睛区域的灰度特征与其它部位有明显的不同, 积分投影能让我们很容易得 到眼睛部位所在的大致位置。假设被处理图像为 R(x, y),图像的大小为 M×N,则该图像的 水平灰度投影函数可以用如下的公式表示:

小波学习之一(单层一维离散小波变换DWT的Mallat算法C++和MATLAB实现)

小波学习之一(单层一维离散小波变换DWT的Mallat算法C++和MATLAB实现)

⼩波学习之⼀(单层⼀维离散⼩波变换DWT的Mallat算法C++和MATLAB实现)1 Mallat算法离散序列的Mallat算法分解公式如下:其中,H(n)、G(n)分别表⽰所选取的⼩波函数对应的低通和⾼通滤波器的抽头系数序列。

从Mallat算法的分解原理可知,分解后的序列就是原序列与滤波器序列的卷积再进⾏隔点抽取⽽来。

离散序列的Mallat算法重构公式如下:其中,h(n)、g(n)分别表⽰所选取的⼩波函数对应的低通和⾼通滤波器的抽头系数序列。

2 ⼩波变换实现过程(C/C++)2.1 ⼩波变换结果序列长度⼩波的Mallat算法分解后的序列长度由原序列长SoureLen和滤波器长FilterLen决定。

从Mallat算法的分解原理可知,分解后的序列就是原序列与滤波器序列的卷积再进⾏隔点抽取⽽来。

即分解抽取的结果长度为(SoureLen+FilterLen-1)/2。

2.2 获取滤波器组对于⼀些通⽤的⼩波函数,简单起见,可以通过Matlab的wfilters(‘wavename’)获取4个滤波器;特殊的⼩波函数需要⾃⾏构造获得。

下⾯以db1⼩波函数(Haar⼩波)为例,其变换与重构滤波器组的结果如下://matlab输⼊获取命令>> [Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('db1')//获取的结果Lo_D =0.7071 0.7071Hi_D =-0.7071 0.7071Lo_R =0.7071 0.7071Hi_R =0.7071 -0.70712.3 信号边界延拓在Mallat算法中,假定输⼊序列是⽆限长的,⽽实际应⽤中输⼊的信号是有限的采样序列,这就会出现信号边界处理问题。

对于边界信号的延拓⼀般有3种⽅法,即零延拓、对称延拓和周期延拓。

3种延拓⽅法⽐较情况如下:对于正交⼩波变换来说,前两种延拓⽅法实现起来⽐较简单,但重建时会产⽣边界效应,⽽且分解的层数越多,产⽣的边界效应越显著。

基于Gabor滤波器的指纹图像增强研究

基于Gabor滤波器的指纹图像增强研究

基于Gabor滤波器的指纹图像增强研究吴夏平;王福明;赵景媛【摘要】为了能够正确提取指纹图像中的关键特征,除了有效的方向计算和图像分割方法之外,指纹图像的纹路增强也是指纹识别中提高特征提取正确率的一个重要手段.在Gabor滤波器的基础上,使用平均频率的指纹增强方法,并在运算过程中时滤波算法进行优化,有效地减少了运算量.实验证明,该方法对低质量图像具有显著的增强效果.【期刊名称】《现代电子技术》【年(卷),期】2008(031)020【总页数】3页(P145-147)【关键词】Gabor滤波器;指纹增强;指纹识别;低质量图像【作者】吴夏平;王福明;赵景媛【作者单位】中北大学信息与通信工程学院,山西,太原,030051;中北大学现代教育技术与信息中心,山西,太原,030051;中北大学信息与通信工程学院,山西,太原,030051【正文语种】中文【中图分类】TP391.411 引言在自动指纹识别系统中,指纹特征提取对指纹的质量有着很强的依赖。

由于指纹采集设备的不完善性,对于干、湿、脏、老化、磨损的指纹,往往难以采集到清晰的图像。

严重影响了指纹特征值的提取,影响指纹识别系统的正确识别率。

因此指纹图像增强技术便成了指纹识别系统关键技术之一,增强算法的优劣,直接决定着整个系统性能的好坏。

因此对指纹增强算法的研究有着十分重要的意义。

指纹增强的方法有基于纹理滤波的方法、基于傅里叶分析的方法、基于小波分析的方法、基于知识的方法等。

指纹图像增强的主流方法是纹理滤波方法,计算指纹图像每个局部区域的方向和频率特征,用纹理滤波器对指纹图像进行滤波增强。

Hong提出一种基于Gabor滤波器的指纹增强方法,Gabor滤波器可以在空域和频域上获得最佳的分辨率,具有良好的带通性和方向选择性。

但该方法有时存在块效应或方向效应,并且对不同频率的图像有不同的增强程度。

本文在Gabor滤波器的基础上,提出一种改进的Gabor滤波器算法。

一种新的实数离散Gabor变换

一种新的实数离散Gabor变换
的块 , 使得 X=K , = = y—L 二维 实值 G br变换定 义为 下列 实值展 开形式 : Ⅳ, ao

l L一1 M 一 1N -l
I,一 ( x)
其 中
∑日屉f2 )( , —l) ] 7n ] , 7 嘲[ry Ⅳ
[ 摘 要 ] 本 文提 出一种新 的实数 Ga o b r变换 , 实验表 明, 应用于 图像重构 时, 实数 Gao 该 b r变换 和 陶亮等人提 出的实数 Gao b r变换具有相似 的性质和优 点. [ 关键词] 实数 Gao b r变换 ; rl Hat y变换 ; e 图像重构
( u No 6 ) S m . 8
Vo . 0 No 4 12 .

种新 的实数离散 G b r a o 变换
朱海燕 黄 , 平 刘 , 轩 周 跃 , ,韦忠善
(. 1广西职业技术学院 计算机系 , 广西 南宁 50 2;. 3262桂林师范高等专科学校 物理 与信 息技术系 , 广西 桂林 510) 402
维普资讯
20 0 6年 1 2月
De . 0 c 2 06
桂 林师 范高 等专 科学校 学报
J u n l fGul r l l g o r a in No ma l e o i Co e
第2 o卷
第 4期
( 总第 6 期 ) 8
之间互不正交. 近十几年来 , 围绕这一问题, 国内外相继提出了很多解决方法, B s an 、 x r QJ 如 at asWel 和 a i e n等
人为 代表的解 析法 , a g n等人 提 出的神 经 网络方 法 , D u ma 以及 Irhm 等 人提 出的 自适应 学 习算 法等. bai 但不论 上 述哪一 种方法 , 为复数 形式 的 Gao 均 br变换 , 计算 量很 大. 于此 , 基 陶亮 等 人提 出实数离 散 G b r a o 变换 ( 称 简 为 2DRD 一 GT—)该算 法大大 减少 了计算 量 , 而 使 G b r 换得到 广泛应 用. I, 从 ao 变 本文 提 出另一种 新 的实 数 离 散 Gao br变换 ( 称 为 2 GT Ⅱ)并 将其 与 陶 亮等 人提 出 的实 数 离 散 简 D RD 一 ,

基于DCT的实值离散Gabor变换

基于DCT的实值离散Gabor变换

基于 DC 的实值离散 Ga o T b r变换
魏 道 昀 祝 美龙 陶 亮
203) 30 9 ( 大学计算智 能与信号处理教育部重点 实验 室 合肥 安徽

要: 该文提 出了一种基于离散余弦变换( C ) O T 的实值离散 Gao br变换 (DG ) R T ,不仅适用于临界抽样条件而且
适 用于过抽样条件 ,并证 明了变换 的完 备性 条件 。由于这种变换仅 涉及实值 计算 ,并且可利用快速 DC T,I T算 DC 法 来加速运 算,因此 比传统复值离散 Gao 变换在计算和实现方面更为简单 , br 必将有效地提高非平稳信 号与图像 的 分析、处理速度和效率 。 关键词:离散余弦变换( CT ;离散 Gao 变换 ;Gao 变换系数 D ) br br
ppr a e ,whih c n b p l d t o h t e c ii a a c a e a p i o b t h rtc l s mp i g c n ii n a d t e o e — a e l o d to n h v rs mp i g c n ii n n l o d to 、And t e n h
a g r h r a tc mp t to , ti a i ri o p t to d i l o i msf o t o f s u a i n i se se c m u a i n a n n mplme t to y h r wa e o o t r o p r d e n a i n b a d r rs fwa e c m a e
W e oy n iDa — u - Z u M e—o g h iln - Ta in o La g
( e aoaoyo tl ec C m uig n i aP oe ig f h ns yo dct n K y b t I ei ne o p t d g l rcs n e L r r fn l g na Sn s o t Mii r f uai , t E o A h i nvri , fi 309 C i ) n u U i s yHe 03, h a e t e2 n A s atAR a v udDsr e ao rnf m ( D T bsd n Tf nt s une ipo oe i bt c el a e i e b r a s r R G ) ae r : -l ctG T o o DC ri e e ecss r sd n h o fi q p it s

一维小波变换的C++实现

一维小波变换的C++实现

⼀维⼩波变换的C++实现 将⼩波展开系数当成离散信号,尺度函数和⼩波函数的MRA⽅程系数看成数字滤波器组,根据Mallat快速算法的原理,⼩波变换对数据的处理⽅法可简化成对信号逐级采样和滤波的过程。

图1 ⼩波变换的滤波器实现(a)分解算法 (b)重构算法 ⼀层⼩波分解算法流程如图2所⽰,信号将先经过⼩波分解低通滤波器和⾼通滤波器,随后被降采样,实现数据重构。

⽽滤波算法可简化为待处理信号与滤波器数组卷积的过程,为了保证卷积前和卷积后数组的长度相同,结合⼩波变换中数组延拓的思想,在实际编程过程中,可以将超过信号长度的那段数据以前端对齐的⽅式与前⾯⼀段数据相加。

将卷积后的数组每2个点采样⼀次,即可获得⼩波分解后的尺度系数和⼩波系数。

图2 ⼀层⼩波分解算法(X:待分解数组;H,G:⼩波分解滤波器;C,D:⼩波重构后数组) ⼩波重构算法是⼩波分解算法的逆运算,其流程为升采样和滤波,最后数据相加实现重构。

⼩波重构算法中滤波可视为系数与⼩波重构滤波器的卷积,与⼩波正变换类似,在重构算法中,需要将卷积后的数组末位对齐相加,获得与原数组长度相同的卷积结果。

将⼩波系数和尺度系数以2为步长进⾏升采样,将获得的新数组分别经过⼩波重构低通滤波器和⾼通滤波器,再将滤波后的两组数据相加,即实现了⼀层⼩波重构。

1#define LENGTH 5122#define LEVEL 43#define L_core 645static void Covlution(double data[], double core[], double cov[], int LEN)6 {7double temp[LENGTH + L_core - 1] = {0};8int i = 0;9int j = 0;1011for(i = 0; i < LEN; i++)12 {13for(j = 0; j < L_core; j++)14 {15 temp[i + j] += data[i] * core[j];19for(i = 0; i < LEN; i++)20 {21if(i < L_core - 1)22 cov[i] = temp[i] + temp[LEN + i];23else24 cov[i] = temp[i];25 }2627 }2829static void Covlution2(double data[], double core[], double cov[], int LEN)30 {31double temp[LENGTH + L_core - 1] = {0};32int i = 0;33int j = 0;3435for(i = 0; i < LEN; i++)36 {37for(j = 0; j < L_core; j++)38 {39 temp[i + j] += data[i] * core[j];40 }41 }4243for(i = 0; i < LEN; i++)44 {45if(i < L_core - 1)46 cov[i + LEN - L_core + 1] = temp[i] + temp[LEN + i];47else48 cov[i - L_core + 1] = temp[i];49 }5051 }5253static void DWT1D(double input[], double output[], double LF[], double HF[], int l)54 {55int i = 0;56double temp[LENGTH] = {0};57int LEN = LENGTH / pow(2, l - 1);5859 Covlution(input, LF, temp, LEN);60for(i = 1; i < LEN; i += 2)61 {62 output[i/2] = temp[i];63 }6465 Covlution(input, HF, temp, LEN);66for(i = 1; i < LEN; i += 2)67 {68 output[LEN/2 + i/2] = temp[i];69 }70 }7172static void DWT(double input[], double output[], double LF[], double HF[], int len[])73 {74int i;75int j;7677 len[0] = len[1] = LENGTH / pow(2, LEVEL);78for(i = 2; i <= LEVEL; i++) len[i] = len[i - 1] * 2;7980 DWT1D(input, output, LF, HF, 1);81for(i = 2; i <= LEVEL; i++)82 {83for(j = 0; j < len[LEVEL + 2 - i]; j++) input[j] = output[j];84 DWT1D(input, output, LF, HF, i);85 }86 }8788static void IDWT1D(double input[], double output[], double LF[], double HF[], int l, int flag) 89 {90int i = 0;91double temp[LENGTH] = {0};92int LEN = l * 2;9394if(flag) Covlution2(input, HF, temp, LEN);95else Covlution2(input, LF, temp, LEN);9697for(i = 0; i < LEN; i++)98 {99 output[i] = temp[i];103static void IDWT(double input[], double output[], double LF[], double HF[], int len[], int level)104 {105int i;106int j;107for(j = 0; j < len[LEVEL + 1 - level]; j++)108 {109 output[2 * j] = 0;110 output[2 * j + 1] = input[j];111 }112for(j = 0; j < 2 * len[LEVEL + 1 - level]; j++)113 {114 input[j] = output[j];115 }116 IDWT1D(input, output, LF, HF, len[LEVEL + 1 - level], 1);117118for(i = level - 1; i > 0; i--)119 {120for(j = 0; j < len[LEVEL + 1 - i]; j++)121 {122 input[2 * j] = 0;123 input[2 * j + 1] = output[j];124 }125 IDWT1D(input, output, LF, HF, len[LEVEL + 1 - i], 0);126 }127 }⽤C++算法实现的⼩波变换结果与MATLAB实现的⼩波变换结果对⽐(⼼电信号,db5⼩波,5层分解)。

gabor小波变换的python -回复

gabor小波变换的python -回复

gabor小波变换的python -回复Gabor小波变换(Gabor Wavelet Transform)是一种在信号处理和图像处理领域中常用的分析工具。

它结合了傅立叶变换和高斯函数,在时频域同时分析信号,具有优秀的时频局部化特性。

在本文中,我们将一步一步地介绍Gabor小波变换的原理、实现和应用。

一、Gabor小波变换的原理Gabor小波变换是基于Gabor小波的分析方法。

Gabor小波是一种时频局部化的基,具有较好的时域和频域分辨能力。

它在时域上由一个高斯窗口和一个复指数的乘积构成,在频域上是对高斯滤波器的傅立叶变换。

这种结构使得Gabor小波能够在时频域同时分析信号,既能够提取信号的瞬时特征,又能够保留信号的频谱特性。

二、Gabor小波变换的实现在Python中实现Gabor小波变换可以使用scipy库中的信号处理模块。

首先,我们需要定义一个高斯窗口和一个复指数,并将它们乘在一起得到Gabor小波。

然后,将Gabor小波应用于待分析的信号上。

最后,通过调整Gabor小波的参数,可以得到不同频率和尺度的时频表示。

具体实现步骤如下:1. 导入所需的库:例如scipy库中的信号处理模块和numpy库。

2. 定义Gabor小波的参数:包括频率、尺度、高斯窗口的宽度等。

3. 生成高斯窗口函数:使用numpy库中的函数生成高斯窗口。

4. 生成复指数函数:利用numpy库中的函数生成复指数函数。

5. 构造Gabor小波:将高斯窗口函数和复指数函数相乘得到Gabor小波。

6. 对信号进行分析:使用scipy库中的信号处理模块的函数将Gabor小波应用于待分析的信号上。

7. 可视化结果:通过绘制时频图或频谱图等方式,对Gabor小波变换的结果进行可视化。

三、Gabor小波变换的应用Gabor小波变换在图像处理中有广泛的应用,主要包括纹理分析、图像压缩和图像增强等方面。

例如,在纹理分析中,通过对图像进行Gabor 小波变换,可以提取出图像中的纹理特征,在纹理分类和检测任务中发挥重要作用。

多窗实值离散Gabor变换及其快速算法

多窗实值离散Gabor变换及其快速算法
多窗实值离散Gabor变换及其快速算法
Gabor变换是重要的时频分析方法之一,广泛应用于非平稳信号 的检测、分析与处理。然而由于Heisenberg不确定原理的制约, 传统的单窗Gabor变换的时频局域性(或者时频分辨精度)受到很 大限制。
由于分析窗和综合窗函数宽度是固定的,由单窗Gabor变换获得 的时频谱时间分辨精度与频率分辨精度也是固定的,并且不可能 同时都好,二者是矛盾的。采用宽窗将产生高频率分辨率但低时 间分辨率的时频谱;反之,使用窄窗将产生高时间分辨率但低频 率分辨率的时频谱。
每一并行通道计算复杂性只决定于输入离散信号的长度及Gabor 频率抽样点数,不会随M-RDGT过抽样率及窗数增加而增大,因此, 每一并行通道的计算复杂性非常小。最后,本文对包含冲激函数 的正弦函数序列、指数衰减正弦类瞬变序列以及Apnea-ECG数据 库中的心电(ECG)序列进行了M-RDGT和时频谱计算实验,实验结 果表明所提出的M-RDGT提供了一种快速有效的方法分析和展示 包含有多个或时变频率分量信号的动态时频内容。
借助于多抽样率数字滤波器组的分析与综合基本原理和多窗离 散Gabor展开与变换中分析(求变换系数)与综合(展开即信号重 建)原理的相似性,设计了一种并行多抽样率分析与综合卷积器 组来实现多窗实值离散Gabor展开与变换。所设计的分析和综合 卷积组中的每一并行通道具有一致的结构并能够利用快速DHT算 法减小计算量。
提出了超长(或无限长)序列M-RDGT及其快速算法。在有限长系 列(周期)的M-RDGT中,窗函数长度与待分析序列长度必须相同, 对于超长序列的M-RDGT计算,无疑将大幅增加求解窗函数所需的 计算量及存储空间,有时甚至导致求解数值不稳定。
为了使得窗函数长度不随待分析序列长度变化,即用长度较短的 窗函数分析超长甚至无限长待分析序列GT及其快速算法,推导了超长序 列M-RDGT在满足完备性条件下新的窗函数双正交关系式。提出 了多抽样率快速并行实现多窗实值离散Gabor变换方法。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

index);//lit函数片j来确定综合窗 (11)
im void Analysis—window_Gabor(int
帆功=蒸撒m一脚Ⅳ)cas(警)
可利用快速的离散Hartley变换(Discrete DHT)哪!计算式(7)中的a(m,”),即
M,int N,int L.double+&r0,
MATLAB 7.5信号处理工具箱中的Gabor正变换),利用计算
(2) (3) (4)
W=exp(害)
j=r逆变换算法的软件还是空白。冈 此,研究了基于Visual c++快速实现一维离散Gabor变换算法 的软件,该软件通过可视化界面使用户可以更方便、更直观地
index);//lit函数根据综合窗求出相应的分析窗
void RDGT(int
Harthey Transform,
M.int N:int£.double*x。double*r0,double・
&一);//止h函数完成实值离散Gabor变换
void ReconstruetedSignal(int
a(m咖蓑陲Rmc州,]cas(孕)
列,复值离散Gabor展开和变换口1可分别表示为:
医学信号的分析与处理,信号的检测、幽像压缩、图像识别、线
性时变系统建模等方面Ⅲ。Gabor变换中要解决的最基本问题
工(七)=∑∑C(m,功j;…(七) C(m,疗)=∑x(七),…(七)
石…(忌)=履七一mN)W础
、,。.。(掺=,(七一mN)W础
(1)
on
C++.Comput—
Engineering and
Applications,2011。47(3):67-69.
Abstract:Although ming
there have
been few software
programs designed
for the
1・D
Gabor transform using high—level program— found
Computer Engineering andApplications计算机工程与应用
VC++快速实现一维离敞Gabor变换软件的研究
张磊,李锐,陶亮
ZHANG Lei,LI Rui,TAP Liang
安徽大学计算智能与信口.处理教育部重点实验室,合肥230039
MOE Key Laboratory of Intelligence Computing and Signal
col;//定制颜色变量
im卅1=o.m2=0: for(int is=O:is<M'N;捃++)
数相加。同样比文献【3】中复值离散Gabor变换的信号重建要
简单得多。

因此不难看出,一维实值离散Gabor变换的计算复杂性与 一维复值离散Gabor变换相比较小,并且由于RDGT包含DHT
核函数,从而使得RDGT能够利用快速DHT算法加快变换速 度。注意至lJ RDGT与CDGT的关系和DHT与DFT关系非常相
(15) }

CBrush CRect
brash(RGB(col。col,c01));//建立画刷 rect(m1,m2,m1+size,m2+size);//绘制相关矩形
de.FillRect(&rect.&brush);11填充Gabor系数相关颜色 m1=ml+size;//Gabor系数换行,其中size变量值为方形格边长
&c);11此函数实现矩阵间的乘法运算
void MatrixReverse(double*a,int
m,int押,double*&b);//此函数
娴=∑ 、… 2nnk) 娴=薹10) )Ifm-k反nⅣ2(气廊咖笺 ∑口(肌,”)caslⅣ) 3 1(
m2
月=

实现矩阵的转置运算
void brinv(double*a,int void
其中C(m,n)是复值下的Gabor展开系数,履七)和户(七)分别是 综合窗矗(七)、分析窗r(忌)的周期延伸,二者满足双正交关系”,。
进行Gabor变换及其逆变换的操作,具有操作简单、运行快速
等特点。
在L=碱M=府,JⅣ=Ⅳ条件下为临界抽样;而当在L=砌、,= 脚,L<悯砌9<£条件下为过抽样;M和N分别为时频域
此式定义为实值离散Gabor变换(RDGT),因此,实值离散 Gabor展开式为实值离散Gabor变换的逆变换。上式中
磊…(妒反七一mN')cas(可2rcnk)
_耻)=触一m_N)cask(2uⅣnk)
系【2・”。
(9) (10)
这里casX=COSx+sinx为Hartley函数,磊…(后)和,…(七)分别
col=(1-aa[isl)*255;//aa为经过处理Gabor系数矩阵 if(is%M—O)

m2=m2+size; m1=0:
似阱,因此,RDGT也提供了一种快速计算CDGT的方法。
另外,Gabor潜图(或称为语谱图)定义为: &.。={【口(m,甩)】+口(脚,N—n)/2}2+ {【n(聊。功一a(m,Ⅳ一n)】,2)2 m=0,1,…,M一1;n=0。1.…,N/2—1
DHT变换
同时在Gabor变换多次中涉及到矩阵的相关运算,编写了 矩阵运算类CMatrixDemo。在类CMatrixDemo中主要包含了 如下相关函数:
void MatrixMHI(double+口,double*b,int m.int,l,int k.double*
这一方法也可用于信号的重建。将式(7)重写为:
Processing,Anhui University。Hefei 230039,China
E—mail:zlraul@163.corn
for I-D fast Gabor transform based Visual
ZHANG Lei.LI Rui.TAP
er
Liang.Software program design
a(m,疗)=∑x(尼妒…(七)
(8)
系非常紧密的编程工具。它兼有高级和低级语言的双重性,功 能强大、灵活,执行效率高”・。 本文基于Visual c++实现一维离散Gabor展开与变换,主 要涉及到综合窗的选定、分析窗的求解、Gabor系数的求解及 原信号的读入与还原、Gabor系数的修改,同时涉及到Visual c++中图形的显示和坐标的转换与建立等过程的实现。 系统的基本流程如图1所示。 为了实现综合窗的选定、分析窗的求解、Gabor系数的求
,=、f- 0 , \一/
c ‘ ,功=∑I∑ (jⅣo)|casl等) 0 )21
M,int N。int L。double4&S,double+
A,double*h);Illtt函数完成信号的重建即Gabor展开
bool FHT(double*RR,int N,double
RK[】);//II'L函数完成快速

Visual
Visual
C++实现Gabor变换的思路与步骤
c++是一个功能强大的可视化软件开发工具。微
Foundation
x(后)=∑∑咖,肝)五…(七)
展开系数口(m,疗)可从下式获得:
(7)
软基础类库(Microsoft
Classes,MFC)。是Visual
c++软件的一部分。使用MFC类库和Visual C++提供的可视 化程序开发T具.可使应肘程序开发变得更加简单,缩短开发 周期,提高代码的可靠性核口r重用性。Visual c++是与系统联
SO
languages,no such for both the
software
program for the inverse Gabor transform has its inverse 1.D Gabor
been
far.Therefore,a novel Visual C
software form. that
是综合窗^(七)、分析窗,(Ji})的周期延伸,二者满足双正交关
解及原信廿.的还原,系统建立了Csignal类来完成核心内容的
编写,分别编写以下函数:
void GetComprehensiveData(int
所以Gabor系数a(m,疗)可表示为下式:
M。int N,int£,double+&A,int
是:在给定综合窗下如何求解双正交分析窗,如何快速求解信 号的Gabor变换系数以及如何由变换系数快速地重建原信号
(即Gabor逆变换)。近十几年。围绕这些I’uJ题崮内外相继给出 了很多解决方法。提出了复值离散Gabor变换及实值离散Ga- bor变换理论。尽管Gabor变换相关理沦已日趋完善,但利用 计算机高级语言快速实现Gabor变换算法的软件却并不多(如

c++
文章编譬:1002—8331(2011)03—0067—03
文献标识码:A
中图分类哮:TP311.11

引占
Gabor变换是重要的时频分析方法之一…。Gabor变换的

Gabor变换相关理论介绍

2.1复值离散Gabor展歼与变换
没J(后)表示由一个有限长实序列拓展成周期为£的实序
一个重要特性在于Gabor变换系数揭示了一个信廿.或一幅图 像的时域与频域的局部化性,Gabor变换的这一优点已被}正明 在一维和二维非平稳信号分析处理中是非常有用的。如生物
the
as
inverse transforill.The
experiments
show
the SORware program
well
efficient.
Key words:Real.valued Discrete
7I'ranSforills(RDGT);signaj analysis;Visual C4--t-
相关文档
最新文档