如何旋转三维阵列?

2024-09-27 07:29:31 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,如果我想比较狗的每只爪子下的压力,我只比较每个脚趾下面的压力。但我想试着比较一下整个爪子下面的压力。在

但要做到这一点,我必须旋转它们,使脚趾重叠(更好)。因为大多数时候左右爪都会轻微地向外旋转,所以如果你不能简单地把一只放在另一只上面的话。因此,我要旋转爪子,使它们都以相同的方式对齐。在

alt text

现在,我计算旋转角度,通过查找中间的两个脚趾和后面的脚趾using the toe detection,然后计算黄色线(脚趾绿色和红色之间的轴)和绿色线(中性轴)之间的角度。在

现在我要旋转阵列,它将绕着后脚趾旋转,这样黄绿线就对齐了。但我该怎么做呢?

请注意,虽然这张图片只是二维的(只有每个传感器的最大值),但我想在一个三维阵列上计算这个值(平均为10x10x50)。另外,我的角度计算的一个缺点是它对脚趾检测非常敏感,所以如果有人有一个更数学上正确的建议来计算这个,我会洗耳恭听。在

I have seen one study with pressure measurements on humans,他们使用局部几何惯性轴方法,这至少是非常可靠的。但这仍然不能帮助我解释如何旋转数组!在

alt text

如果有人觉得有必要进行实验,这里有一个带有all the sliced arrays that contain the pressure data of each paw的文件。对于clarfiy:walk_sliced_data是一个字典,它包含['ser_3'、'ser'2'、'sel'u 1'、'sel'u 1'、'sel'u 2'、'ser'u 1'、'sel_3'],这些都是度量的名称。每个测量包含另一个字典,[0,1,2,3,4,5,6,7,8,9,10](示例来自“sel_1”),它们代表了提取的影响。在


Tags: thedata字典方式ser角度toeusing
2条回答

使用Python Imaging Library,可以旋转数组,例如:

array(Image.fromarray(<data>).rotate(<angle>, resample=Image.BICUBIC))

从那里,你可以在你的3D数组的不同层上创建一个for循环。在

如果将第一个维度作为层,则array[<layer>]将返回一个二维层,因此:

^{pr2}$

@IvoFlipse的结果,其中a conversation表明:

  • 将数组放在一个更大的数组中以修复较暗的背景。在
  • 考虑重新采样,也许先缩放阵列。在
  • 将后脚趾向中间移动,你可以绕着它旋转。在
  • 一个较小的图像可以通过找到边界并再次定位在15x15中来确定。在

alt text

alt text

你为什么要那样做?为什么不简单地整合整个地区并进行比较呢?在这种情况下,你会得到一个力的大小,你可以简单地比较标量,这会更容易。在

如果您需要以某种方式比较区域(因此您需要对齐它们),那么可以尝试特征提取和对齐。但如果压力分布图不相似(比如说有人对一只脚没有太多等待),这似乎就失败了。在

我想你可以变得非常复杂,但听起来简单地计算力就是你想要的?在

顺便说一句,如果图像相似,你可以使用一个简单的相关测试来找到最佳的角度和平移。在

要做到这一点,您只需计算不同平移和旋转的两个不同图像之间的相关性。在

相关问题 更多 >

    热门问题