我发现这个 scipy 函数scipy.signal.peak_prominences可以在一维序列中找到指定局部最大值的地形突出。
但我的应用程序需要在二维数组中定位重要的峰。我知道一些峰值查找方法,例如进行最大过滤,scipy 和 skimage 都有它们的实现。skimage 还h_maxima()
允许过滤具有最小相对高度的局部峰。但是这些只给出了山峰的坐标,而不是它们的突出度。
那么如何计算二维数组上的峰值突出?任何帮助,将不胜感激。
我发现这个 scipy 函数scipy.signal.peak_prominences可以在一维序列中找到指定局部最大值的地形突出。
但我的应用程序需要在二维数组中定位重要的峰。我知道一些峰值查找方法,例如进行最大过滤,scipy 和 skimage 都有它们的实现。skimage 还h_maxima()
允许过滤具有最小相对高度的局部峰。但是这些只给出了山峰的坐标,而不是它们的突出度。
那么如何计算二维数组上的峰值突出?任何帮助,将不胜感激。
我按照wiki的定义,使用封闭轮廓方法制作了一个python模块:
山峰的突出度是山峰顶峰在环绕它的最低等高线之上的高度,但其中不包含更高的山峰。
可选地,可以过滤掉具有小横截面积或低突出值的局部峰。
我已将代码放在这里:https ://github.com/Xunius/python_peak_promience2d ,如果有人发现任何问题或可能的改进,请提出问题或 PR。