在一个二维数组中进行峰值检测。

1001
我正在帮助一家兽医诊所测量狗爪下的压力。我使用Python进行数据分析,但现在我遇到了一个问题,即如何将爪子划分为(解剖学上的)子区域。
我创建了一个二维数组,其中包含每个爪子的最大值,这些最大值是由爪子随时间加载的传感器产生的。以下是一个示例,我使用Excel绘制了我想要“检测”的区域。这些区域是围绕具有局部极大值的传感器的2x2方框,它们的总和最大。

alt text

所以我尝试了一些实验,并决定简单地寻找每列和每行的最大值(由于爪子的形状,不能只朝一个方向查看)。这似乎很好地“检测”出了各个脚趾的位置,但也标记了相邻的传感器。

alt text

这其中哪一个最大值是我想要的,告诉Python最好的方式是什么?
注意:2x2的方块不能重叠,因为它们必须是分开的。
我把2x2当作一种便利方法,欢迎任何更高级的解决方案,但我只是一个人类运动科学家,既不是真正的程序员也不是数学家,所以请保持“简单”。
这是一个可以使用`np.loadtxt`加载的版本

结果

所以我尝试了 @jextee 的解决方案(请参见下面的结果)。正如您所看到的,它在前脚上运作得非常好,但对于后腿来说效果不太好。

更具体地说,它无法识别作为第四趾的小峰。这显然是由于该循环从上向下看最低值,并未考虑其位置造成的固有问题。

是否有人知道如何调整 @jextee 的算法,使其能够找到第四趾?

alt text

因为我还没有处理其他试验,所以无法提供其他样本。但之前给出的数据是每只爪子的平均值。这个文件是一个数组,按照它们与板子接触的顺序列出了9只爪子的最大数据。

这张图显示了它们在板子上如何空间分布。

alt text

更新:

我为所有感兴趣的人建立了一个博客,并且我已经设置了一个包含所有原始测量数据的OneDrive。因此,对于任何请求更多数据的人:祝你好运!


新的更新:

在我关于 爪子检测爪子分类 的问题得到帮助后,我终于能够检测每只爪子的脚趾!结果发现,除了与我自己示例中的爪子尺寸相似的爪子外,它在其他情况下的效果并不好。事后想想,选择2x2的尺寸是我的任性。

以下是一个错误的例子:一根指甲被识别为脚趾,而“脚跟”太宽,被识别了两次!

alt text

爪子太大了,所以采用2x2的尺寸且不重叠,会导致有些脚趾被检测到两次。反过来,在小狗身上通常无法找到第五个脚趾,我怀疑是因为2x2区域太大的原因。

对所有我的测量值尝试当前解决方案后,令人惊讶的结论是几乎所有的小狗都没有找到第五个脚趾,而在大狗的超过50%的情况下会找到更多!

所以显然我需要进行改变。我自己的猜测是将neighborhood的大小对于小狗设定得更小,对于大狗设定得更大。但是generate_binary_structure不允许我更改数组的大小。

有人对于定位脚趾有更好的建议吗?也许能够使脚趾区域与爪子大小成比例变化?


1
我理解逗号是小数点而不是值分隔符,对吗? - MattH
1
是的,它们是逗号。@Christian,我试图将其放入一个易于阅读的文件中,但即使这样也失败了 :( - Ivo Flipse
5
由于我正在进行可行性研究,因此任何方法都可以。所以我正在寻找尽可能多的定义压力的方法,包括亚区域。此外,我需要能够区分“大脚趾”和“小脚趾”两侧,以估计方向。但由于这之前没有做过,所以我们无法预测会发现什么 :-) - Ivo Flipse
3
@Ron:这项研究的目标之一是看这个系统适用于什么体型/重量的狗,所以是的,虽然这只狗大约有20公斤。我还有一些明显较小(和更大)的狗,并预计我不会能够对真正小的狗做同样的事情。 - Ivo Flipse
3
@frank,爪子的尺寸是随时间测量的,因此有第三个维度。然而,它们不会移动位置(相对而言),所以我更关注爪子在二维空间中的位置。在此基础上,第三个维度是额外得到的。 - Ivo Flipse
显示剩余5条评论
21个回答

2
如果您逐步进行:首先定位全局最大值,如果需要,处理给定值周围的点,然后将找到的区域设置为零,并重复此过程。

嗯,将其设置为零至少可以将其从任何进一步的计算中移除,这将是有用的。 - Ivo Flipse
不要将值设为零,而是可以手动选择参数计算高斯函数,并从原始压力读数中减去找到的值。因此,如果脚趾按压传感器,则通过找到最高的按压点,您可以使用它来减少该脚趾对传感器的影响,从而消除具有高压力值的相邻单元格。http://en.wikipedia.org/wiki/File:Gaussian_2d.png - Daniyar
能否给个例子,基于我的样本数据 @Daniyar?因为我对这种数据处理并不熟悉。 - Ivo Flipse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接