gpt4 book ai didi

Opencv垫: find all peaks and valleys

转载 作者:太空宇宙 更新时间:2023-11-03 22:59:50 25 4
gpt4 key购买 nike

我想知道在 2D 灰度垫中找到所有峰和谷的最佳方法是什么?

我发现只有 opencv 函数可以在 Mat 中找到局部极值,但不能找到所有的峰和谷。

所以我尝试找出我自己的算法,但我希望有一种方法(已经存在或改进这个)让它更快

我的想法是:

为了找到所有的峰:

  • 找到所有值为 255 的像素,将它们标记为 Peak 和 Discovered
  • 找到所有值为 254 的像素,如果没有邻居标记为 Discovered(并将这个标记为 Discovered),则将它们标记为 Peak
  • 做同样的事情直到 0。

然后从 0 到 255 对谷重做同样的事情。

那么,你怎么看呢?

我想有更快的方法吗?

谢谢

PS:我这样做是为了尝试检测图像中的干细胞集落:sample

因为我认为干细胞集落(中间的大东西)内部会有更多的波峰和波谷。但我担心这不是一个很好的方法,因为我似乎在细胞集落内的峰数与在外部的峰数一样多......

最佳答案

  1. 如果你想找到所有的局部峰 - 这是非常有效的算法:对于每个像素,检查它是否 >= 其 8 个相邻像素中的每一个。如果是,则将其标记为局部最大值,否则不是。您将通过图像一次获得解决方案。
  2. 如果您不需要所有的峰而是说 5 个最高峰而不是另一个解决方案:找到最高峰并用黑色覆盖它,及其 7x7 邻域。现在重复这些步骤(找到全局最大值并抑制它)。重复此过程 5 次,您将获得 5 个最高峰,它们之间的距离至少为 7 个像素。该算法不是很准确,但它简单、快速并且在许多情况下都能胜任。
  3. 如果上述方法不够好,您可能需要一把重枪。你熟悉“形态重建”吗?如果不是,请谷歌搜索术语“flood fill”算法并阅读它。它充满了本地的山谷和山峰。之后阅读形态学重建。它绝对可以解决你的问题,但如果你不使用 GPU,运行时间可能会很慢。

关于Opencv垫: find all peaks and valleys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com