3

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

  1. 地板的黑白 .png 图像
  2. 存储在 Matlab 中的三列数组。-- 前两列表示平面图像的 X 和 Y 坐标 -- 第三个坐标表示该特定坐标的“温度”

我想生成地板的热图,以显示这些坐标中的“温度”强度。但是,我想在平面图顶部显示热图,以便观众可以看到哪些房间导致了哪些“温度”。

有什么软件可以做这个工作吗?我可以使用 Matlab 或 Python 来执行此操作吗?

谢谢,

纳兹穆尔

4

2 回答 2

2

一种方法是:

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

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

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

4) 绘制热图

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

听起来您知道如何单独执行每个步骤,因此您需要做的就是查找一些有关如何将绘图叠加到同一轴上的内容,这在 Matlab 和 matplotlib 中都非常容易。

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

唯一的症结在于,如果您的 (x,y) 温度数据与图像中的 (x,y) 像素位置不一致。在这种情况下,您将不得不使用一些 x 比例因子和 y 比例因子来首先将热图的坐标转换为像素坐标,然后绘制热图,然后叠加应该可以工作。

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

于 2012-08-04T15:10:52.783 回答
-1

我会看看将 Python 与一个名为Polygon的模块一起使用

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

最终,我认为多边形会让你在创建房间形状时变得更容易,尤其是当它们不是很好的矩形时 =)

不过,最后一点。确保通读 Jorg 与他的项目有关的所有文档。我还没有在 Python 3.x 环境中使用它,但是在 2.7 中让它运行起来有点费力。

只要我的两分钱,享受吧!

于 2012-08-04T15:03:21.247 回答