2015-03-31 72 views
1

我有一個平面圖,牆上是黑色的,門是橙色的,目標是紅色的。我想要的是製作一個應用程序,在給定圖像上的特定點的情況下,計算並顯示目標路線。我已經有了一個路由方法,但它在matlab中,並且每個位置和對象都在代碼中定義,並且它不使用圖像。我想知道的是如何掃描圖像,以便通過顏色識別牆壁,門和目標,以便應用路由方法,然後在地圖圖像上顯示路線(我想我應該使用drawable那)。在平面圖上顯示路線

回答

0

我會使用一些佔用網格/地圖,其中每個網格單元格=一個像素(或可能是像2x2 3x3等像素的小集合)而只是在圖像上做k-means聚類。還有對於k

幾個選擇

K = 2

你的牆壁是

一切被認爲是打開空間(假定門可打開)一組(黑線)。

您需要知道那裏的紅點所在,但它好好嘗試需要在你的地圖上都可見。這只是您地圖上的另一個開放空間。你的程序內部知道的是端點。

K = 4

的基團的一切黑色=壁(佔用),橙色=門(可以是或不是像,這取決於它們是否可以被打開佔用細胞),紅色=目標(未佔用),白色=開放空間(未佔用)。

在這兩種情況下,您可以爲您的集羣標籤和使用那些在地圖中。我不確定你的路徑尋找算法到底是什麼,但通常目標是最小化一些成本函數,因此你爲牆分配一個非常高的成本(所以它們永遠不會被交叉),可能會分配一箇中等成本門(如果它們不能打開)。只是一些想法,好運氣

+0

感謝您的有用答案!我應該使用位圖方法進行圖像分析還是其他?另外,如何在顯示器上顯示計算出的路線? – user1944013 2015-04-01 12:29:13

+0

圖像類型並不重要。在matlab中,您只需執行'im = imread(your_im_file)',其中'your_im_file'可以是任何支持的文件類型,一旦讀入,就可以使用http://www.mathworks.com/help/matlab/ref/imread.html?refresh=true matlab它不關心什麼原始格式。您可以像操縱任何矩陣一樣操縱圖像。爲了繪製你的路徑,看到這個SO問題http://stackoverflow.com/questions/3533843/how-to-draw-a-line-on-an-image-in-matlab – andrew 2015-04-01 16:25:30

+0

但我想在java中做到這一點一個android應用程序,而不是matlab。我碰巧在matlab中的方法,我想轉換它,以使其在那裏工作。 – user1944013 2015-04-01 16:28:21

3

這是一些步驟來實現從圖像的尋路algorithmm。

  • 上傳圖像
  • 應用顏色檢測HSV(在現實生活中是最容易控制這個格式, 光線的變化)算法來獲得對象 分開。
  • 製作一個新的二元矩陣,其中1爲您的地板,0爲 障礙物。
  • 適用於二進制矩陣佔用網格算法(這減少 你的矩陣,因爲在尋路算法需要 處理)。
  • 我建議使用diijistrak或A星算法,在此2案件 你需要構建一個鄰接矩陣。

圖論將幫助你瞭解better.Good LUCK !!

您可以在IDE中處理快速原型並將所有處理IDE核心遷移到eclipse,您需要在eclipse項目中實現PApplet類,並且可以將您的應用程序編譯爲Android。