在python中查找3d数组(图像数组)中的局部最大值

时间:2015-11-07 21:04:05

标签: python opencv image-processing computer-vision

我正在尝试实现基于LOG的blob检测器,步骤如下:

  1. 创建n级LOG过滤器数组
  2. 使用输入图像上的每个滤镜创建一个h*w*n的3d数组,其中h = height,w = width,n =级别数。
  3. 找到一个局部最大值并在原始图像中圈出斑点。
  4. 我已经创建了过滤器和3d数组(这是一个2d图像数组)。 我使用填充来确保边界周围没有任何问题(包括为每个图像创建一个恒定边框并创建2个额外的空图像)。

    现在我想弄清楚如何在数组中找到局部最大值。 我需要将每个像素与其26个邻居进行比较(相同图片中的8个像素和两个相邻尺度中的每个像素中的9个像素)

    直接检查像素值的强力方式看起来很丑陋而且效率不高。 什么是使用openCV在python中找到局部最大点的最佳方法?

1 个答案:

答案 0 :(得分:0)

我利用了扩展在OpenCV中有效实现的事实。如果一个点是3d中的局部最大值,那么它也在任何2d切片中,因此:

  1. 使用3x3内核扩充阵列中的每个图像,将强度保持不变的点保留为候选最大值。
  2. 对上下切片的候选人进行暴力测试。