微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在数组中查找扭结/角落

如何解决在数组中查找扭结/角落

我正在尝试以编程方式分析如下所示的可视化数据:

Image of data

检测任何“角落”(绘图上绘制的绿色方块)的算法/方法/过滤器是我所追求的。

黑色虚线(特别是找到它们的斜率)是我感兴趣的数据,对于这个例子,我当前的方法在应用高斯滤波器平滑数据并找到后使用 scipy.signal find_peaks 工作正常黑色虚线的“开始”和“停止”点。

g_filt_voltage = gaussian_filter1d(voltage,100)

maxes,_ = find_peaks(g_filt_voltage,prominence=10)
mins,prominence=10)
corner_times = time[np.sort(np.concatenate((maxes,mins)))]

一旦我有corner_times,我就可以轻松地处理数据以获得我需要的东西,但 find_peaks 方法已被证明是不够的 - 有时数据开始高,有时开始低(当它开始时低,没有检测到拐角,因为没有峰值变化)。我知道一定有另一种方式。

是否有更好的数学概念或替代 Python 函数可以应用于此,以便更轻松、更准确地找到这些“角”点?

编辑:我尝试过使用@AKX 建议的渐变(在原始数据和高斯滤波数据上),但这还不够,它只给 一些角落:

Gradient Full

Gradient Zoomed

编辑 2: 我也尝试了二阶导数,但有一个有问题的拐点使这个选项不起作用:

2nd Diff

对不起,颜色变化,晚上工作

编辑 3: 将画布光栅化为 png,然后使用 opencv harris 角点检测给出了非常好的结果,但不完全是我需要的。它标记了内角和外角,获得这些数据后我不知道如何在光栅化后将其取回并获取数据。仍在寻找数学来做到这一点。

Harris Corner Detection

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。