我正在帮助一家兽医诊所测量狗爪子下的压力。我使用Python进行数据分析,现在我被困在试图将爪子划分为(解剖学)子区域。
我为每个爪子做了一个2D数组,它由爪子随时间加载的每个传感器的最大值组成。这是一个爪子的例子,我使用Excel绘制了我想要“检测”的区域。这些是传感器周围的2×2框,带有局部最大值,它们加起来有最大的总和。
所以我尝试了一些实验,并决定简单地寻找每一列和每一行的最大值(由于爪子的形状,不能朝一个方向看)。这似乎可以很好地“检测”单独脚趾的位置,但它也会标记相邻的传感器。
那么,告诉Python哪些最大值是我想要的最好方法是什么呢?
注意:2x2的正方形不能重叠,因为它们必须是单独的脚趾!
另外,为了方便起见,我选择了2x2,欢迎任何更先进的解决方案,但我只是一个人类运动科学家,所以我既不是真正的程序员也不是数学家,所以请保持“简单”。
这是一个可以加载#0的版本
所以我尝试了@jexte的解决方案(见下面的结果)。正如你所看到的,它在前爪上非常有效,但在后腿上效果不佳。
更具体地说,它无法识别第四个脚趾的小峰。这显然是固有的事实,即循环自上而下地看向最低值,而不考虑它在哪里。
有没有人知道如何调整@jextee的算法,以便它也能找到第四个脚趾?
由于我还没有处理任何其他试验,我不能提供任何其他样本。但是我之前给出的数据是每个爪子的平均值。这个文件是一个数组,最大数据为9只爪子,按照它们与盘子接触的顺序。
这张照片显示了它们是如何在空间上分布在盘子上的。
我已经为任何感兴趣的人建立了一个博客和我已设置一个包含所有原始测量值的OneDrive。所以对任何要求更多数据的人:给你更多的权力!
因此,在我得到关于爪检测和爪分选的问题的帮助后,我终于能够检查每个爪子的脚趾检测!事实证明,除了像我自己的例子中那样大小的爪子之外,它在任何地方都不起作用。事后看来,如此武断地选择2x2是我自己的错。
这里有一个很好的例子,说明它出了什么问题:指甲被识别为脚趾,而“脚后跟”太宽了,它被识别了两次!
爪子太大了,所以采取2x2大小没有重叠,导致一些脚趾被检测到两次。另一方面,在小型犬中,它经常找不到第五个脚趾,我怀疑这是由于2x2区域太大造成的。
在在我所有的测量中尝试当前的解决方案之后,我得出了一个惊人的结论,几乎所有我的小狗都没有找到第五个脚趾,而在超过50%的大型狗的影响中,它会找到更多!
所以很明显我需要改变它。我自己的猜测是将neighborhood
的大小更改为小型狗的小尺寸和大型狗的大尺寸。但是generate_binary_structure
不让我改变数组的大小。
因此,我希望其他人有更好的建议来定位脚趾,也许有脚趾面积与爪子大小的比例?