首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建脚的压力热图

创建脚的压力热图
EN

Stack Overflow用户
提问于 2016-01-20 06:10:46
回答 2查看 1.7K关注 0票数 0

作为一个小背景,我是一个项目的一部分,在这个项目中,我们正在创建一张脚部碰撞的压力图。将制作传感器的8x4布局。每个横截面将是一个传感器,这将导致32个独特的压力点。

我更熟悉从传感器数据中解析数据,但我并不确切地知道绘制脚部压力/热图的最佳方法。从本质上讲,它看起来像是this。我的想法是使用某种绘图工具来创建脚部形状轮廓,并尝试找到每个感应点的像素点或位置。

例如,每个“传感器”可以由一个5x5像素的块组成,以使着色更好地类似于压力图。这是my very first crude design of 8x3 sensors。每个模块都类似于一个“传感器”(我忘记了第四列)。为了更好地表示压力图,我正在考虑将每个传感器制作成5x5或10x10像素的块,以便更好地分散颜色。我创建最终视觉(链接的第一张图像)的最后一个想法是以某种方式将脚部形状遮盖在矩形形状上,这将使脚部外部仅为空白/白色,并将压力贴图颜色保留在脚部轮廓内。我怎么才能遮住脚的形状呢?

如果有更好的工具,我愿意接受建议,或者只是推动我可以使用的资源。感谢大家的帮助!

EN

回答 2

Stack Overflow用户

发布于 2016-01-20 06:21:25

要创建像第一张图像一样的热图,您需要更多的传感器--以获得更高的分辨率。要获得轮廓,您可以设置一个阈值,低于该阈值,框将显示为白色,最后,您需要将阈值以上的数据从蓝色(最少)映射到红色(大多数),比方说,32个分区。

因此,您需要获取一个范围:

代码语言:javascript
复制
r = float(highest-lowest)
r_resolution = r/32

并将所述范围内的每个分割设置为沿您的色标的一个增量。

至于将传感器细分为像素--你在谈论插值,尽管你想要插值的程度可能太高了。

票数 0
EN

Stack Overflow用户

发布于 2016-01-21 01:17:52

若要创建脚部形状,可以创建一个面片并将其添加到绘图中,以遮罩背景(请参见Fill OUTSIDE of polygon | Mask array where indicies are beyond a circular boundary?)。

我用三次贝塞尔曲线(CURVE4)做了一个粗略的脚形。我是用CorelDRAW做的(因为我有),但是有很多免费的工具可以用三次贝塞尔曲线绘图,或者你可以在你的代码中手动调整这些点。有一个用于处理路径的教程here

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.path import Path

# Create a heat map with some fake data
ax = plt.subplot(111)
plt.pcolor(np.random.random((10,10)))

# Define a path that is a foot shape
foot_verts = [(3.2, 7.5),                         #Start point
             (2.9, 5.6), (4.1, 4.4), (4, 3.5),    #Cubic Bezier controls and end point
             (4.1,2.5), (3.9, 1.3), (4.4, 0.6),
             (5, 0), (6.3, 0.2), (6.8, 0.5),
             (7.3, 1.7), (6.7, 2.6), (6.5, 3.8),
             (6.4, 5.1), (7.6, 5.7), (7.2, 8.3),
             (6.7, 10.8), (3.5, 9.4), (3.2, 7.5)]

foot_codes = [Path.MOVETO,
              Path.CURVE4, Path.CURVE4, Path.CURVE4,
              Path.CURVE4, Path.CURVE4, Path.CURVE4,
              Path.CURVE4, Path.CURVE4, Path.CURVE4,
              Path.CURVE4, Path.CURVE4, Path.CURVE4,
              Path.CURVE4, Path.CURVE4, Path.CURVE4,
              Path.CURVE4, Path.CURVE4, Path.CURVE4]

# Define a path that is the same size as the plot area
xlim = ax.get_xlim()
ylim = ax.get_ylim()

ax_verts = [(xlim[0],ylim[0]),
            (xlim[0],ylim[1]),
            (xlim[1],ylim[1]),
            (xlim[1],ylim[0]),
            (xlim[0],ylim[0])]

ax_codes = [Path.MOVETO,
            Path.LINETO,
            Path.LINETO,
            Path.LINETO,
            Path.LINETO
            ]

#Create a patch that is the plot area minus the foot shape and add to the plot
path = Path(ax_verts + foot_verts, ax_codes + foot_codes)
patch = patches.PathPatch(path, facecolor='white', edgecolor='none')
ax.add_patch(patch)

plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34887917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档