平面图图像的热图生成器

时间:2012-08-04 04:49:57

标签: matlab python-3.x heatmap color-mapping

我想要生成地板的热图图像。我有以下几点:

  1. 黑色&地板的白色.png图像
  2. 存储在Matlab中的三列数组。 - 前两列表示X&地板图像的Y坐标 - 第三个坐标表示该特定坐标的“温度”
  3. 我想生成一个地板的热图,它会显示那些坐标中的“温度”强度。 但是,我想在平面图上方显示热图,以便观众可以看到哪些房间会导致“温度”。

    是否有任何软件可以完成这项工作?我可以使用Matlab或Python来做到这一点吗?

    谢谢,

    纳兹穆尔

2 个答案:

答案 0 :(得分:2)

这样做的一种方法是:

1)使用Matlab或NumPy / matplotlib加载平面图图像。

2)使用一些内置边缘检测来定位平面图中的边缘像素。

3)形成一个大的(x,y)位置列表,其中在平面图中找到边缘。

4)绘制你的热图

5)将平面图的点作为叠加图进行散点图。

听起来你知道如何单独完成这些步骤,所以你需要做的就是查看如何将图表叠加到同一轴上的一些东西,这在Matlab和matplotlib中都非常简单。

如果你不熟悉,那么正确的命令就是meshgridsurf,可能是contour以及它们的Python等价物。我认为Matlab内置了Canny边缘检测功能。我相信这在Python中更难,但是如果你使用PIL库,Mahotas库,scikits.image库以及其他一些为图像处理量身定制的库,那也不算太糟糕。 SciPy现在可能实际上有一个边缘过滤器,所以先检查一下。

唯一的问题是,温度的(x,y)数据是否与图像中的(x,y)像素位置不一致。在这种情况下,您将不得不使用一些x比例因子和y比例因子来首先将热图的坐标转换为像素坐标,然后绘制热图,然后叠加层应该有效。

这是一种相当低技术的方法;我假设你只需要一个快速而肮脏的情节来说明某些东西是如何工作的。此方法的优势在于,您可以轻松更改平面布置点的样式,使其更大,更厚,更薄,不同颜色或透明,具体取决于您希望它与热图交互的方式。但是,为了实现这一点,请使用GIMP,Inkscape或Photoshop,并在事后将热图叠加到图像上。

答案 1 :(得分:-1)

我会看一下使用Python和一个名为Polygon

的模块

Polygon将允许您使用几何形状绘制房间,我相信您可以将房间的边框作为黑白图像的叠加层。虽然此时我还没有完全习惯,但我确实知道你只需要一个(x,y)坐标对就可以针对给定的形状进行“测试”,然后使用那个“命中测试”知道你想要改变的颜色的形状。

最终我认为多边形可以让你在创建房间形状方面变得更容易,特别是当它们不是很好的矩形时=)

最后一点小说。请务必阅读Jorg与其项目的所有文档。我还没有在Python 3.x环境中使用它,但是在2.7中运行起来有点辛苦。

只是我的两分钱,享受!