【发布时间】:2014-01-16 12:44:42
【问题描述】:
我想知道在 2D 灰度级 Mat 中找到所有峰和谷的最佳方法是什么?
我发现只有 opencv 函数可以找到 Mat 中的局部极值,但不是所有的峰和谷。
所以我试图找出我自己的算法,但我希望有一种方法(已经存在或改进这个)让它更快
我的想法是:
为了找到所有的峰:
- 找到所有值为 255 的像素,将它们标记为 Peak 和 Discovered
- 找到所有值为 254 的像素,如果它们没有邻居标记为已发现,则将它们标记为峰值(并将此标记为已发现)
- 做同样的事情直到 0 点。
然后对从 0 到 255 的山谷重做同样的事情。
那么,你怎么看?
我想有更快的方法吗?
谢谢
PS:我这样做是为了尝试在这样的图像中检测干细胞集落:
因为我认为干细胞集落内部会有更多的峰和谷(中间的大东西)。但恐怕这不是一个很好的方法,因为我的细胞群内的峰似乎比外面的多……
【问题讨论】:
-
理论上一个好主意,为了让它工作,我会在所有标记为“峰值”或“无峰值”的像素周围定义一个“非峰值”属性以避免以下情况:在完美渐变中255 峰值周围的 254 个像素不会被标记为峰值,但所述 254 周围的所有 253 像素都会被标记。
-
这就是我使用 Discovered 标记的确切原因。我认为这会避免这种影响,不是吗?
-
是的,当然,抱歉。由于一个小错误,我误解了您的解释。我现在编辑了你的问题。