2010-05-03 36 views
5

我想創建一個房間的簡單的2D地圖,通過獲取所有方向(360° - 例如電影幀)的圖片(天花板),通過邊緣檢測識別牆壁,刪除其他不需要的物體,在正確的位置(參考牆壁,全景圖),最後創建出近似的2D地圖(從上面看)。獲得規模將是另一個參數,這可能是有用的。如何通過幾個圖像/電影幀創建房間的2D地圖?

我有一些自己的想法,通過使用例如, Sobel算法,但是如果有人知道某個項目或軟件(GPL,免費軟件首選),那麼它會很有趣,因爲我仍然在尋找一些可能對我有幫助的例子。

謝謝。

+0

我想你正在試圖用推土機建造一座沙堡。這:http://www.youtube.com/watch?v=4lVqIYzoeRA或旋轉的聲納可能就足夠了。 – 2010-05-03 16:11:35

+1

嗯,問題是我想用我的手機(Nexus One),它只有一個攝像頭,沒有激光:) 我仍然不確定如果表現夠了,但我會在最不喜歡嘗試它,因爲這是一個大學項目。這款手機還有一個3軸加速器。傳感器。我不確定它是否有用。 ...我只需要得到一些(未知)房間的2D地圖。 – Nils 2010-05-03 16:21:40

+0

事情是,你真正需要的是在每個方向上與牆壁的距離。用圖像做這件事可能非常困難。谷歌地圖/街景不完美,他們有幾個該死的好相機。 http://www.robotshop.ca/sensors.html – 2010-05-03 17:02:08

回答

1

有兩種方法我可以看到這個(有點)工作:

1)找出壁和照片的拍攝點之間的距離。簡單而一致的方法是使用激光或類似的外部測量設備。如果您只依靠設備來完成此操作,則需要考慮拍攝照片的人員的身高,照相機的角度以及設備本身的鏡頭特性(即焦距失真)。

2)創建一個真實世界的控制對象,該設備可以用作「基線」。製作一個令人討厭的明亮的紅色立方體,它被稱爲10x10x10cm;把它放在房間的角落裏;從牆角拍攝牆壁的照片/視頻,使用圖像檢測來查找立方體的牆邊界和物體識別;弄清楚牆壁尺寸是從那以後簡單的數學。取決於鏡頭,這種方法可能對焦距失真等不那麼敏感,但對於準確的讀數,我本以爲你仍然需要考慮鏡頭的特性。

祝你好運,這是不小的任務。只有牆壁的圖像檢測將是一個挑戰。 :)

+0

非常好的answer.One更多的查詢是否有可能在opencv中使用顏色斑點檢測在android?我掙扎了過去幾周,但越來越任何想法。從哪裏開始。我從事opencv的示例。如果您有任何想法。請回復。在此先感謝.. – jagdish 2014-06-26 10:18:17

1

我有一個「一些什麼」類似的實習項目,最終實習從未完成,因爲我們都用完了時間(3個月,沒有任何金錢)。

但是無論如何,最終我們要做的是取一張大網格紙,然後將相機對準它,然後我們可以繪製出鏡頭的特徵,並用它來調整出來的照片相機。

其次,我們將在每個牆上放置一個「衆所周知/理解的」對象,並使用它來插入每個牆的尺寸(長度/高度)。

現在這種方法將需要更多的「時間」來設置,因爲您需要將對象放置在每個牆上,然後用一些重疊的方式拍攝每個牆的圖片,以便後者可以將它們一起打開。然後用戶會告訴程序每個「角落/邊緣」的位置,以便程序知道房間的「一般形狀」,然後使用放置在牆上的物體來插入每個牆的長度/高度。

現在請記住,這將是一個相對手動的過程,但有一個設計良好的軟件/過程可能相對較快。我的意思是,最慢的手動步驟是將物體放在牆上,然後拍攝房間的「全景圖」。一旦圖片被上傳到電腦中,它可以處理預處理,將它們一起咬合,然後用一些「線條工具」彈出一張圖片,在該圖片中您可以使用該線條工具來告訴程序角落/等等。那麼它會做計算/調整/大小/等...

0

我想你想要的是從運動的結構,它的技術擺脫2D運動圖像(視頻)的三維點雲,我可以給你推薦這些頁面:

您需要先校準攝像頭,在獲得點雲後,您需要需要找到牆的相應平面,然後選擇將其網格化可以測量你的牆壁。

對於Nexus One,它會很慢,但也許用較新的手機可以使用他們的GPU並優化一些代碼以使其運行速度更快。如果是我,我寧願拍一個視頻並做一個桌面應用程序,然後將它移植到Android上,但我對Android開發知之甚少。

+0

非常感謝您的回覆。請仔細閱讀本文。 – jagdish 2014-06-29 06:03:24

相關問題