【问题标题】:code about gabor filters in pythonpython中关于gabor过滤器的代码
【发布时间】:2017-07-11 21:51:04
【问题描述】:

在许多程序中,例如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*kern.sum()} 是做什么的? 谢谢你的回答

【问题讨论】:

    标签: python gabor-filter


    【解决方案1】:

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

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

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

    在使用 openCV 的 filter2D 函数后,我在输入图像上进行了测试,无论是否使用这行代码,就像在您发布的 github 链接中一样(输出图像被缩放到 0 到 255 之间),结果是如果没有这行代码,许多像素的强度刚好达到 255,这是意料之中的,因为每个像素都刚刚被分配了内核的最大值。

    Without this line of code

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

    【讨论】:

      猜你喜欢
      • 2012-02-14
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2019-12-02
      • 2013-11-22
      • 2014-05-29
      • 2017-12-31
      相关资源
      最近更新 更多