python - scipy 信号 find_peaks_cwt 没有准确找到峰值?

标签 python scipy signal-processing image-segmentation

我有一个一维信号,我试图在其中找到峰值。我希望能完美地找到它们。

我目前正在做:

import scipy.signal as signal
peaks = signal.find_peaks_cwt(data, np.arange(100,200))

下面是带有红色点的图表,显示了 find_peaks_cwt() 找到的峰的位置。

Signal + Peaks

如您所见,计算的峰值不够准确。真正重要的是右边的三个。

我的问题:如何使这个更准确?

更新:数据在这里:http://pastebin.com/KSBTRUmW

对于某些背景,我想做的是在图像中找到手指之间的空间。绘制的是手周围轮廓的 x 坐标。青色 Blob = 峰。如果有更可靠/更强大的方法,请发表评论。

enter image description here

最佳答案

已解决,解决方案:

先过滤数据:

  window = signal.general_gaussian(51, p=0.5, sig=20)
  filtered = signal.fftconvolve(window, data)
  filtered = (np.average(data) / np.average(filtered)) * filtered
  filtered = np.roll(filtered, -25)

然后按照rapelpy的回答使用angrelextrema。

结果:

enter image description here

关于python - scipy 信号 find_peaks_cwt 没有准确找到峰值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571260/

相关文章:

matlab - 使用 sinc 函数重建数字信号

python - "from package import *"和 "import package"之间的性能

javascript - 如何从符合特定条件的 HTML 中找到 CSS 选择器?

python - format() int 为 float

python - 在 32 位 Windows 7 机器上的 Python 3.5 中安装 scipy

python - 使用 scipy.stats 根据双曲线分布拟合经验分布

signal-processing - Linux机器上最快的MFCC提取方法

python - 如何添加数组(张量)列表

python - Scipy 优化曲线拟合无法正常工作

audio - 将音频样本从时域转换为频域