LOG滤波器,Gabor滤波器

  LOG滤波器,Gabor滤波器

  解读Gabor滤波傅里叶变换是信号处理的有力工具,可以将图像从空间域变换到频率域,提取空间域难以提取的特征。但是傅立叶变换缺少时间和位置的局部信息。

  Gabor变换是一种短时加窗傅里叶变换(简单理解为特定时间窗内的傅里叶变换),是短时傅里叶变换中窗函数为fzdqc函数时的特例。因此,Gabor滤波器可以在频域中提取不同尺度和方向的相关特征。此外,Gabor函数与人眼的功能相似,因此常被用于纹理识别,并取得了较好的效果。

  在二维空间中,用一个三角函数(a)(比如正弦函数)和一个fzdqc函数(b)叠加,我们得到一个Gabor滤波器。如下图所示:

  Gabor函数对二维Gabor函数的数学表达式解释如下:复数表示:实数部分虚数部分:x’、y’ 计算公式波长()

  介绍一下公式中各参数的含义:方向():Gabor核函数中余弦函数的波长参数。其值以像素为单位设置,通常大于或等于2,但不大于1/5。输入图像大小的相位偏移():表示Gabor滤波器核中平行条纹的方向。有效值是从0到360的实数。长宽比():表示Gabor核函数中余弦函数的相位参数。它的取值范围是-180到180。其中0和180对应的方程关于原点对称,-90和90对应的方程关于原点中心对称。带宽(b):空间纵横比,决定了Gabor函数形状的椭圆度。当=1时,形状为圆形;当1时,形状沿平行条纹方向拉长。一般取值为0 . 5 .010-59000:Gabor滤波器的半响应空间频率带宽b与/的比值有关,其中代表Gabor函数的fzdqc因子的标准差。这三者具有以下关系:

  的值不能直接设置,它只随带宽B而变化.的带宽值必须是正实数,通常为1。在这种情况下,标准差与波长的关系为=0.56。带宽越小,标准差越大,Gabor形状越大,平行条纹越明显。

  大蟒实现伽柏滤波器# Gabor滤波器实现# K_size:Gabor核大小K_size x K_size#适马:#:#:# Psi:#角度:def Gabor _ filter(K_size=111,适马=10,=1.2,=10,Psi=0,角度=0):# get half size=K_size//2 #准备内核Gabor=NP。零((K _ size,K _ size),dtype=np.float32)#范围内y的每个值(K _ size):范围内x(K* NP。pi # get内核x _ x=NP。cos()* px NP。sin(theta)* py # get内核y=-NP。sin()* px NP。cos(theta)* py # fill内核Gabor[y,x]=np.exp(-(_x**2伽马**2 * _y**2)/(2 *适马* * 2))* NP。cos(2 * NP。pi * _ x/Psi)#内核归一化gabor /=np做出不同角度伽柏滤波器的图像将cv2导入数字作为npimport matplotlib.pyplot作为plt# Gabor导入滤波器实现# K_size:Gabor核大小K_size x K_size#适马:#:#:# Psi:#角度:def Gabor_filter(K_size=111,适马=10,=1.2,=10,Psi=0角度=0):# get half size=K_size//2 #准备内核Gabor=NP。零((K_size,K _ size),dtype=np.float32)#范围内y的每个值(K _ size):范围内x的每个值(K_size):#距中心的距离px=x-dpy=y-d #度-辐射热a=角度/180 .* NP。pi # get内核x _ x=NP。cos()* px NP。sin(theta)* py # get内核y=-NP。sin()* px NP。cos(theta)* py # fill内核Gabor[y,x]=np.exp(-(_x**2伽马**2 * _y**2)/(2 *适马* * 2))* NP。cos(2 * NP。pi * _ x/Psi)#内核归一化gabor /=np 255]out=Gabor-NP。min(Gabor)out/=NP。max(out)out *=255 out=out。as类型(NP。uint 8)工厂。subplot(1,4,i 1) plt.imshow(out,cmap= gray )PLT。轴(“关闭”)PLT。标题(角度字符串(A))PLT。保存fig( out。png )PLT。显示()实验输出伽柏滤波器图像

  opencv(python)中使用伽柏滤波器函数原型:retval=cv.getGaborKernel( ksize,sigma,theta,lambd,gamma[,psi[,ktype]])

  函数使用举例将numpy作为NP导入cv2作为cv # retval=cv。getgaborkernel(Ksize,sigma,theta,lambd,gamma[,psi[,ktype]])# Ksize是一个元组retval=cv。getgaborkernel(ksize=(111,111),sigma=10,theta=60,lambd=10,gamma=1.2)image1=cv.imread(./paojie。jpg )# dst=cv。filter 2d(src,ddepth,kernel[,dst[,anchor[,delta[,border type]]])result=cv。过滤器2d(image1,-1,retval)cv.imshow(result ,result)cv。等待键(0)cv。destroyallwindows()实验结果:

  参考:

  大蟒实现伽柏滤波器

  伽柏滤波器参数详解

  伽柏滤波器原理及中文版中的实现

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: