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