opencv - 如何从图片中获取所有局部“峰值”?
问题描述
我想从下图中得到所有的小山峰。我也想避免出现大峰(在右侧),但我可以根据面积排除它。该图像是 Sobel 算子的结果,但这并不重要。它将用作分水岭算法的标记。这不是我必须处理的唯一图片,我不能仅根据它们是“局部最大值”这一事实来传递峰值的值。请注意,轮廓检测将不起作用,因为连接了一些小凸起。图片:
解决方案
您可能会发现我1999 年论文的第 4 章“峰与脊”很有用。它使用分水岭算法的概念,使用文森特的有序像素实现来实现。算法细节在论文中。我已经很多年没有在这个领域工作了,所以还没有做过 opencv 的实现。
@Alessandro Jacopson在另一个 SO 分水岭问题中提供了以下链接:
文森特,卢克;索尔,皮埃尔。数字空间中的分水岭:基于沉浸式模拟的有效算法。IEEE 模式分析和机器智能交易,1991,13.6:583-598。
推荐阅读
- vue.js - 如何强制用户使用最新版本的 PWA?
- python - 如何多次更新散景图?
- git-merge - 不能将 `git mergetool` 与 `git am` 或 `git apply` 或 `patch` 一起使用
- python - map() 函数获取输入
- javascript - 错误:找不到模块“./lib/_stream_readable.js”
- java - 如何将二维数组的所有元素初始化为java中的任何特定值
- c# - EasyModbus:断开网络连接不会改变连接状态
- statistics - 如何在 wso2am 中禁用特定 API 的分析
- java - Java中重写接口方法
- bash - 带有参数的函数中的bash完整路径