急!求助!用Gabor卷积能量行纹理分析的问题
我毕设有一项内容是用Gabor卷积能量行纹理分析。
现在有两个问题:
1、在构造Gabor滤波器时,我不知道参数应该怎么设置
我的Gabor滤波器的公式是这样的:
G(x, y|λ,θ,φ,X, Y) = exp(-((x-X)2+(y-Y)2)/2σ2) * sin (2π/λ(x cosθ - y sinθ) +φ)
我想知道波长λ怎么设置?它在图像处理中的意义是什么?
标准偏差σ又如何设定?
2、在进行卷积时,用滤波器模板和图像卷积,图像块的大小应该是和模板的窗口大小一样,但我不知道图像块应该怎么划分,即下面代码中的step变量怎么设置?
for (DWORD x=firstR; x<endR; x+=step)
{
for (DWORD y=firstC; y<endC; y+=step)
{
tmp = ConvolveImage(imagePtr, gaborPiOn2, x, y);
S2 += tmp * tmp;
tmp = ConvolveImage(imagePtr, gabor0, x, y);
S2 += tmp * tmp;
} /* for y */
} /* for x */
请高手们指教!谢谢!
问题点数:50、回复次数:22Top
1 楼youwill(youwill)回复于 2006-06-02 12:46:42 得分 10
λ应该是Gabor波的波动的间隔大小,应该至少比你的纹理小一倍(我想的,未必对)
σ应该只影响你变换的系数,线性的,可以归一话就好吧
step 应该受速度要求的影像,用1实验一下Top
2 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-02 22:35:04 得分 0
谢谢楼上的好心人!
step在老师给我的程序中取值为 λ/2 或是 Gabor滤波器窗口大小的四分之一
我想知道是什么意思?
还有对于Gabor filter 和 卷积运算 我不是很了解,可不可以给我讲讲?
谢谢大家了Top
3 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-03 08:06:23 得分 0
啊,上面讲错了
step在老师给我的程序中取值为 λ / 2Top
4 楼dylanwolf()回复于 2006-06-06 18:42:39 得分 35
λ是频率的倒数,比如说,你的GAbor中心频率是0.2 cycles/pixel, 你的波长就是5 pixels.
一般来说,你需要设计几个不同中心频率和角度(比如:频率0.25,0.125, 0.0625, 角度:0, 45, 90, 135)的Gabor来抽取特征,除非你事先知道你的纹理的频率和角度。
卷积的时候滤波器应该是一个pixel一个pixel的移的,所以我觉得你的函数里头的step不是卷积的step, 而是抽取能量时设计的窗口大小。比如说,用这个图像窗口的平均能量来分析该窗口内的纹理。
另外,你的Gabor函数好象只用了sin, 全的Gabor函数应该是complex, something like cos() + jsin()Top
5 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-07 08:25:34 得分 0
谢谢楼上的好心人!
你所说的GAbor中心频率是什么?我不太明白。
不过,在我的实验中我选取了λ=2,4,8;角度:0, 45, 90, 135来抽取特征。
我认为卷积的时候滤波器的确应该是一个pixel一个pixel的移的,但程序中step = λ/2 我就不理解了。从程序中看它的step确实是卷积的step。你所说的抽取能量时设计的窗口大小指的什么意思呢?能不能再讲详细点?
谢谢!
我毕业论文就要交稿了,真是着急啊!Top
6 楼ant_VS_elephant(蚂蚁撼大象)回复于 2006-06-07 17:30:17 得分 5
晤,你好哦,我也有同样的疑惑,请大侠们指导。我发现有些书和期刊的对于Gabor滤波器的描述都不是很一致,我想请大家帮忙看看。在1996年IEEE上的“Texture Features for bwowsing and Retreval of Image Data”里面,g(x,y)=(1/2*PI*Ox*Oy)*exp{-1/2(x*x/Ox*Ox+y*y/Oy*Oy)+2*PI*j*Wx}
而在国内的章毓晋的书里面公式和上面的就不同了:h(x,y)=g(x,y)*exp{2*PI*j(Ux+Vy)}
其中,g(x,y)=1/2*PI*O*O*exp(-(x*x+y*y)/2)
我很希望能有大侠告诉一下,这两个公式是不是统一的,毕竟上面的是国外IEEE的文章,而且那个人在网上还放了Matlab的源代码,虽然我还没有看懂。http://vision.ece.ucsb.edu/texture/software/,这里面有代码,同志们。然而,下面的书里面的公式,个人认为比较简单,似乎好实现一下,但是目前也还不明白。请大侠能不能路过告诉一声,谢谢!!Top
7 楼ant_VS_elephant(蚂蚁撼大象)回复于 2006-06-07 17:45:48 得分 0
刚刚发了回复,就发现一个网址,介绍的比较详细:http://zhenyulu.cnblogs.com/articles/325718.html
http://zhenyulu.cnblogs.com/articles/325968.html
讲的还是很清楚的:),高兴坏了Top
8 楼dylanwolf()回复于 2006-06-07 17:46:54 得分 0
GAbor其实是个带通滤波器,每个GAbor函数都有自己的中心频率和给出最大响应的角度。就和小波函数一样,但是小波函数的角度分辨率没有GAbor高。
你程序中的step不能称之为卷积德step, 它只是抽取特征的一种方法。应该也可以用这种方法来抽取特征,step设为λ的函数也是reasonable, 具体我估计你得看提出这种方法的论文了。
ant_VS_elephant(蚂蚁撼大象) , 这两个函数是一致的,我可以回答你的问题,不过你另开一贴吧,也让我赚点分,赫赫。
另外,章毓晋的是什么书呢?他是做Gabor研究的吗?Top
9 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-07 18:37:00 得分 0
我没有学过数字信号处理和小波哎,所以毕设做这个比较费劲。
我需要提取的特征是Gabor卷积能量,文中的公式为:
S^2(X,Y|λ,θ)=Σ[G(x,y|λ,θ,0,X,Y)I(x, y)]^2+Σ[G(x,y|λ,θ,π/2,X,Y)I(x, y)^2
(下面是x,y)
论文中没有提及step = λ/2
老师给了我一点代码,代码是这样做的
看代码的意思,它算了一个点的卷积值,平方累加后,x,y方向都跳过λ/2后,在计算下一个点。
可是这样,图像就不是每个点都算到了。难道这就是它抽取特征的方法?
Top
10 楼ant_VS_elephant(蚂蚁撼大象)回复于 2006-06-07 19:17:17 得分 0
dylanwolf:你不如直接在这里说说嘛,大家都是为了讨论和学习啊,干嘛要另外开一贴,章毓晋的书《图像分割》,有关于纹理分割的。Top
11 楼dylanwolf()回复于 2006-06-08 02:59:08 得分 0
这应该就是抽取特征的方法,由于不是每点都计算卷积,相对简单一些。
你把你要实现的目的大致说一下吧。
ant_VS_elephant(蚂蚁撼大象), 因为是不同的话题,重开一贴更容易阅读,否则都放在这贴,比较乱。Top
12 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-08 07:45:29 得分 0
我毕设该部分做的是:对不同的图像按上面的方法计算他们的Gabor卷积能量,然后通过对比它们的能量值,区分出他们纹理上的差异。Top
13 楼dylanwolf()回复于 2006-06-09 04:32:58 得分 0
ok, 明白了。
每个Gabor得到一个能量值S2, 12个Gabor就可以得到12个能量值。如果每个纹理用一个12维的向量来表示,两种纹理的不同就可以通过这两个向量的距离来表示。
你可以试一下不同的step, 看哪个效果更好。
区分纹理也有很多方法,你做的也是一种。Top
14 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-09 20:44:32 得分 0
在老师给的代码中
G(x, y|λ,θ,φ,X, Y) = exp(-((x-X)2+(y-Y)2)/2σ^2) * sin (2π/λ(x cosθ - y sinθ) +φ)
有两种Gabor滤波器,一种称为Texton模式,一种称为傅立叶模式
他们的区别是
Texton模式:σ = λ/2
傅立叶模式: σ = 窗口大小/4
这两种模式是什么意思呢?
极度不解中……
Top
15 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-10 09:48:18 得分 0
自己再顶一下
希望高手们继续帮忙!Top
16 楼dylanwolf()回复于 2006-06-11 17:06:43 得分 0
Gabor是一个高斯函数和正弦函数的乘积。σ决定了高斯函数的带宽,正弦函数决定中心频率,或者波长λ
一般来说,σ的大小往往是和中心频率相关的,频率越高,σ越小,因为;频率高的信号变化快。这就是你说的Texton模式了。
Texton模式应该是最常用的,我很少见傅立叶模式。该模式中σ = 窗口大小/4,该公式窗口大小应该是你设计的Gabor滤波器的窗口大小,这样可以保证Gabor函数的有效系数都能被包括。否则窗口太小,有效系数不能被包括,会影响效果。Top
17 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-11 20:54:44 得分 0
嗯,在我的程序中,傅立叶模式时,窗口大小就是Gabor滤波器的窗口大小
经过你的讲解之后,对于Gabor我懂一点了,真是非常感谢你!
但从心里讲懂得不透彻,因为我没有学过《数字信号处理》等课。
今天找了篇论文来看:《基于虹膜识别的身份鉴别》
里面在用Gabor滤波器提取纹理特征时,中心频率取的是:2、4、8、16、32、64,这样一来,它的波长就是1/2、1/4、1/8、1/16、1/32、1/64,真是小啊!怎么会这么小呢?Top
18 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-11 20:57:30 得分 0
我还有一个问题:
在Gabor滤波器中常提到尺度、方位角,其中我知道方位角的概念,但尺度指的是什么?是Gabor滤波器的波长(中心频率的倒数)吗?Top
19 楼dylanwolf()回复于 2006-06-12 16:34:56 得分 0
你做的是本科设计,还是研究生论文。你做的时间这么短,不可能理解很深的,赫赫。
你对那篇论文的理解不对,频率不可能是2,4,6,8。。。的,我估计是这样的:论文涉及了一个最高频率Fmax, 其他频率是Fmax/2, Fmax/4, Fmax/8, Fmax/16, Fmax/32, Fmax/64.
不知道国内的尺度是什么概念,国外是指scale and orientation, scale equals frequency. 不过高斯函数中的σ有时候也叫 scale..Top
20 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-12 19:50:05 得分 0
我做的是本科的毕业设计
原来:scale and orientation, scale equals frequency 。很好,我记住了!谢谢你!
我毕设参照的那篇论文中,使用了三种scale、四种orientation来构造Gabor滤波器。但是论文中没有给出这个scale取的是哪些值,只是简单的说是scale 1、scale 2、sclae 3。
我在程序中是设了λ = 2、4、8来做,但不知道是不是对应了scale 1、scale 2、sclae 3(老师给我的代码中也没有提及λ设置,他只是有一个缺省设置λ = 2、4、8)
但是《基于虹膜识别的身份鉴别》中,它是这样说的:
“滤波器的中心频率越小,提取的纹理特征的尺度越大。通常,中心频率选择为2 的幂次方。在虹膜识别算法中,我们选择中心频率为2,4,8,16,32 和64。”
难道国内的概念和国外的不一样?
这篇文章的地址是:http://nlpr-web.ia.ac.cn/English/irds/papers/yhwang/Biometrics%20Personal%20Identification%20Based%20on%20Iris%20Pattern.pdf
Top
21 楼dylanwolf()回复于 2006-06-14 16:38:34 得分 0
他们的文章写得有问题,这不是概念不同的问题。首先,他们没有给出频率的单位,其次,这篇文档里头我也没有看到他们用的Gabor的公式。
对于二维图像,在FFT后频域能表示的最大频率是0.5 cycles/pixel, 所以我才说,不可能是2, 4 8, 16, 32, 64。Top
22 楼tina_lulu_21(希望明媚的阳光)回复于 2006-06-16 21:52:21 得分 0
答辩过了
唉,被老师说Gabor卷积的理论理解的不透彻Top




