python中gabor滤波器的代码

2024-05-13 21:55:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在许多程序中,如https://gist.github.com/kkomakkoma/4fb21b853ce774fe5c6d47e9626e6570

用这种方法设计gabor滤波器:

def build_filters():

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

{kern/=1.5是什么*核数和()}做什么? 谢谢你的帮助


Tags: https程序githubcomnppiparamscv2
1条回答
网友
1楼 · 发布于 2024-05-13 21:55:08

我会尽力回答这个问题,因为我也在处理这个问题。在

首先,我认为这是一个相关的问题: gabor edge detection with OpenCV

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

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

Without this line of code

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

相关问题 更多 >