2013-05-20 126 views
6

我正在開發一個使用android相機的機器人項目。如果在路徑中找到任何物體,機器人可以移動並清潔表面。我被困在路徑中的物體檢測中,我沒有使用任何傳感器來查找相機和物體之間的距離。我只使用相機來查找路徑中的對象。我不想查找路徑中物體的形狀,類型和顏色。在路徑的小物件可以例如沙子,草等不應該有路徑中的任何大對象(下圖中的標記部分)使用相機檢測真實物體。使用相機尋找真實物體的可能性

enter image description here

被忽略當使用相機畫探測對象,陰影,被檢測爲對象。從上圖中可以看出音樂符號是一個物體。是否有任何付費或開放源代碼庫來查找使用攝像頭進行真實對象檢測(如果它在Java或C++中可用,它會更有幫助)。我已經嘗試過opencv,javacv,jhlabs,jjil,aviary sdk,jiu,imagemagic等等,但是沒有我可以找到我的需求的確切解決方案。如果有人使用這個圖像處理,請建議我在使用android相機進行實物檢測時可以做些什麼。如果這是不可能的,請給我一個解釋爲什麼這是不可能的。

可能性我曾嘗試:

  1. 人臉識別算法(特徵檢測): - 人臉檢測算法基於匹配的圖案。這在這種情況下不適用。即,這裏的對象可以是任何形狀或任何形狀。沒有匹配的模式。

  2. 物體識別:物體識別也是這樣做的,這與匹配的模式相同。我不想識別這個對象,只是想找出它們是圖像中標記部分的一個對象,它是一個真實的對象(即,不是任何地板繪畫,陰影等)。

  3. 邊緣檢測:我嘗試了不同的邊緣檢測算法,但這對我來說也不準確。即繪畫和陰影有邊緣,所以我們不能假設我們找到的邊緣是真實的物體。

+1

你解決了嗎?你是否試圖從扭曲的圖像中找到常見的圖像。實現高斯模糊很容易,因爲它只是將周圍像素的平均值直接放入窗口矩陣中?其他扭曲也不是太困難。至於實時性,當發現某些東西並處理你發現的東西然後繼續時,你可能會減慢機器人的速度。嘗試http://www.amazon.com/dp/013168728X/?tag=stackoverfl08-20。對不起,我用Java完成了我的工作。 –

+0

謝謝安德魯。我會檢查這個,我會在這裏分享結果。我現在有一些項目 - 比如現在,當我變得自由時,我會檢查這個。 – Sujith

回答

4

如果有人用該圖像處理工作請建議我什麼,我可以實時目標檢測採用了android相機呢。如果這是不可能的,請給我一個解釋爲什麼這是不可能的。

實時,在飛行中物體檢測是一個熱門研究領域。

現在,我們現有的算法只能進行模式匹配,並且在相機框架內尋找預先定義的圖像。

真實世界檢測的問題是真實世界太...真實。您有任何種類的對象或項目的變體,並且單個庫不可能爲它們提供檢測。真正的世界檢測只有通過機器學習進行大量數據生成和培訓纔是合理的,這需要比大多數移動設備提供更多的處理和電池供電。

+0

感謝拉格哈夫蘇德,請讓我知道,如果你發現任何可能性有關.. – Sujith

1

在視頻監控中做了很多圖像分析。首先,您需要定義您需要的成功率。如果你在一張圖片上嘗試所有這些,你可能會意識到這不會起作用:)。在視頻分析中,您可以搜索一些用於運動檢測的優秀算法,這些算法將在某些背景下爲您提供所有移動對象。你有一個更困難的情況,你正在移動。你以某種方式需要建模該背景。如果你想讓你的機器人在一些彩色背景上移動,比如繪畫,你怎麼知道什麼是沒有深度感知的物體。也許嘗試陰影但不是。畢竟,這些算法都非常密集,結果越好,所需的CPU功率就越多。 Android並不意味着這一點。你可以做一些簡單的處理,但你想要的方式遠遠超過目前的可能。

底線是你需要調整你的需求/資源多一點。

PS。如果你能像你第一次說的那樣做到這一點,我們會在一些漂亮的模型上看到你的遊艇

希望這可以幫助和享受你的工作。

+0

感謝馬爾科拉齊奇。如果您嘗試過任何圖像處理庫,請告訴我。這是令人心碎的想到,我會錯過遊艇;) – Sujith

0

我認爲你應該使用一個以上的攝像頭.....給人以圖像的二維視圖.....希望這將有助於....

+0

感謝互換。如果你發現任何與此有關的事情,請讓我。 – Sujith

2

您可能要熟悉技術所謂的運動結構。如果您從同一個攝像機拍攝了一系列短時間拍攝的照片,則可以獲取有關照片場景的一些3D信息。不幸的是,我不知道任何圖書館會爲你開箱,但這是一個非常流行的問題,所以一些搜索可能會給你一個現成的解決方案。

+0

感謝morynicz的信息。我從運動搜索結構,真棒概念傢伙。 – Sujith

+2

嗨morynicz,我只是從nadroid的運動中找出一些structre樣本。請查看此演示:https://play.google.com/store/apps/details?id=org.boofcv.android。來源:https://github.com/FedeCamposeco/Android-SfM-client,https://github.com/lessthanoptimal/BoofAndroidDemo。 – Sujith

1

如果攝像機與地面平行且地面通常平坦,則可以根據視頻幀上的位置估計物體的距離。將物體的距離越高,越靠近圖像的頂部。事實上,你可以估算出一些有噪音的米值,就像我們人類一樣。

我認爲你的識別「真實物體」的問題可以轉化爲:「查找不平坦(到地面)的視覺元素,換句話說,找到具有某種高度的物體」。

您是否考慮過立體視覺方法?使用兩臺相機可以更好地處理三維問題。

+1

感謝馬文爲您的答案..找到距離是一個解決方案..但問題是我們無法估計從物體到相機在android ..的距離..有沒有傳感器來找到在android的距離.. – Sujith