2012-08-04 92 views
3

我想要生成地板的熱圖圖像。我有以下幾點:平面圖圖像的熱圖生成器

  1. 地板
  2. 存儲在Matlab的三列排列的黑色&白色的PNG圖片。 - 前兩列表示底盤上圖像 的X & XY座標 - 該第三座標表示該特定的「溫度」座標

我想要生成的底板的熱圖,將在這些座標中顯示「溫度」強度。 但是,我想在平面圖頂部顯示熱圖,以便觀察者可以看到哪些房間導致哪些「溫度」。

有沒有什麼軟件可以完成這項工作?我可以使用Matlab或Python來做到這一點嗎?

感謝,

納茲穆爾

回答

-1

我會看看使用Python了一個名爲模塊Polygon

多邊形將允許您使用的幾何形狀繪製出房間,我相信你可以做一個房間的邊界作爲你的黑白圖像的覆蓋。雖然在這一點上我還沒有習慣很多,但我確實知道,只需要一個(x,y)座標對就可以對給定形狀進行「碰撞測試」,然後使用該「碰撞測試」瞭解你想要改變顏色的形狀。

最後,我想多邊形會使您喜歡的容易得多赫克,當談到創建房間的形狀,尤其是當他們不好聽的矩形=)

最後一個小紙條,雖然。請務必閱讀Jorg在他的項目中的所有文檔。我還沒有在Python 3.x環境中使用它,但在2.7版本中運行它有點困難。

只是我的兩美分,享受!要做到這一點

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,並在事件發生後將熱圖貼到圖像上。

+0

感謝您的回覆。我打算使用tKinter - > canvas.create_oval並在我的圖像中顯示不同顏色的點。 1.使用tKinter加載圖像。 2.對於我數據的每個座標(x,y),我想使用類似於:canvas.create_oval(x,y,x + 1,y + 1,fill =「red」)。現在,我不想使用像「紅色」這樣的固定顏色,而是使用基於熱圖的顏色來表示該點的「溫度」。可能嗎? – Nazmul 2012-08-13 02:13:08

+0

我相信這是可能的,但這是一種矯枉過正的方式。 Matplotlib和NumPy已經具有可以計算點的網格的內置函數,以及可以覆蓋熱量數據的曲面和網格函數。唯一棘手的部分是覆蓋平面圖的邊界。我想你應該在顯示熱圖之後重疊平面圖,通過在平面圖上使用某種邊緣檢測來獲得平面圖邊界的像素。這也與Python的PIL和SciPy等庫一樣內置。一路走向圖形用戶界面(GUI)編程是過度的。 – ely 2012-08-13 02:49:43