python中关于gabor过滤器的代码

python中关于gabor过滤器的代码,python,gabor-filter,Python,Gabor Filter,在许多节目中,例如 以这种方式设计gabor滤波器: def build_过滤器(): {kern/=1.5*kern.sum()}做什么? 谢谢你的回答,我会尽力回答,因为我也在处理这个问题 首先,我认为这是一个有点相关的问题: 执行此操作会导致一种平均操作(类似于仅使用平均掩码来卷积图像),因此在某种程度上它提供了一些平滑。它还用于规范化内核,如我在上面的链接中所述(防止在卷积完成时某些像素的响应远远超过其他像素)。如果不这样做,那么内核的最大值可能比最小值大几个数量级 在使用openCV

在许多节目中,例如

以这种方式设计gabor滤波器:

def build_过滤器():

{kern/=1.5*kern.sum()}做什么?
谢谢你的回答,我会尽力回答,因为我也在处理这个问题

首先,我认为这是一个有点相关的问题:

执行此操作会导致一种平均操作(类似于仅使用平均掩码来卷积图像),因此在某种程度上它提供了一些平滑。它还用于规范化内核,如我在上面的链接中所述(防止在卷积完成时某些像素的响应远远超过其他像素)。如果不这样做,那么内核的最大值可能比最小值大几个数量级

在使用openCV的filter2D函数后,我在输入图像上测试了这一点,不管有没有这一行代码,就像在你发布的github链接中一样(输出图像被缩放到0到255之间),结果是,没有这一行代码,许多像素的亮度刚好达到255,这是预期的,因为每个像素刚刚被分配了内核的最大值

我希望这能有所帮助…如果其他人对此有更多的理由或信息,我真的很想知道

filters = []
ksize = 31
for theta in np.arange(0, np.pi, np.pi / 32):
    params = {'ksize':(ksize, ksize), 'sigma':1.0, 'theta':theta, 'lambd':15.0,
              'gamma':0.02, 'psi':0, 'ktype':cv2.CV_32F}
    kern = cv2.getGaborKernel(**params)
    kern /= 1.5*kern.sum() #why? why? why?
    filters.append((kern,params))
return filters