4

我想計算相機和識別的「物體」之間的距離。 例如,識別的「對象」是白板上的黑色矩形貼紙。我知道矩形(x,y)的值。相機與識別的「物體」之間的距離

有沒有一種方法可以用來計算與我原始矩形的值的距離,以及我用相機拍攝的矩形圖片的值?

我在論壇搜索了answeres,但沒有指定用這些屬性計算距離。

我正在從Aldebaran機器人工作一個名爲Nao的機器人,我打算使用OpenCV識別黑色矩形。

+0

矩形面向相機,或者它可能處於一個角度?無論哪種方式,我建議你從一個圓圈開始。 – Beta

+0

它可能是一個角度,它不一定需要是一個矩形......關鍵是:如何根據2D形狀屬性的知識來測量2D對象與圖片之間的距離。 但我會保證你的建議!謝謝! – Silex

回答

2

如果您可以計算目標圖像佔用的角度,那麼到目標的距離應該與該角度的cot(即1/tan)成比例。你會發現圖像中像素的數量大致對應於角度,但我懷疑它完全是線性的,尤其是近距離。

您的相機鏡頭的行爲可能會影響此測量,所以它將取決於您的確切設置。

爲什麼不測量多個距離處的目標尺寸,並繪製散點圖?然後,您可以對數據擬合曲線以獲得特定系統的尺寸 - >距離函數。如果您的相機接近「理想」相機,那麼您應該發現此圖看起來像cot,並且您應該能夠找到您的值ab以匹配dist = a * cot (b * width)

如果您嘗試這個實驗,爲什麼不在這裏發佈答案,讓其他人從中受益?

[編輯:關於「理想」攝像機紙條]

對於相機圖像看「現實」對我們來說,圖像應接近投射盈眼舉行了平面(因爲攝像機圖像查看由我們通過在我們眼前展示平面圖像)。想象一下,將一張描圖紙放在眼前,並在紙上勾畫出物體輪廓。關於this page的第二張圖顯示了我的意思。你可能會描述一個攝像頭,將其作爲「理想」攝像頭。

當然,在現實生活中,相機不能通過描圖紙工作,而是使用鏡頭。非常複雜的鏡頭。看看this page上的鏡頭圖。由於各種原因,你可以花一輩子學習,創建一個完全像追跡紙例子在所有條件下工作的鏡頭是非常棘手的。從this wiki page開始並閱讀,如果你想知道更多。

所以你不可能計算像素長度和距離之間的確切關係:你應該測量它並擬合曲線。

+0

非常感謝您的回覆!我真的很喜歡你的想法,我應該考慮一下...... 一個問題:爲什麼我的圖像看起來像一個嬰兒牀?我把它想象成一個線性圖(因爲我正在移動這個矩形,它變得線性(?)變大)。 (對不起,如果我的問題聽起來很蠢!:/) – Silex

+0

P.S .:這個「理想」的相機對我來說是新的,你能建議我一個鏈接,我可以在哪裏讀到它? – Silex

+0

爲什麼它不是線性的:想象你正在看一棵樹,同時從它移開*。如果樹的角高度線性下降,那麼它會在有限的時間內下降到零。相反,它變得越來越小,但越來越慢,無論你走多遠,它都永遠不會消失。 – Beta

1

這是一個很大的話題。如果您想從單張圖像開始,請參閱A. Criminisi的this old paper。爲了深入瞭解,請閱讀他的博士論文。論文。然後在「投影幾何」部分開始玩OpenCV例程。

+0

您提供的鏈接上沒有任何文檔。 是的,我會這樣做的。 – Silex

+1

這是http://www.cs.illinois.edu/~dhoiem/courses/vision_spring10/sources/criminisi00.pdf –

-2

我一直在研究圖像/對象識別。我剛剛發佈了一個可以識別對象,人物,汽車,書籍,標識,樹木,花朵的Python編程的Android應用程序(移植到Android)。任何東西:)它也顯示它的思維過程,因爲它「認爲」:) 我已經把它作爲一個在谷歌玩99美分的測試。 這裏是鏈接,如果你有興趣,還有一個在行動中的視頻: https://play.google.com/store/apps/details?id=com.davecote.androideyes

享受! :)

+0

未找到鏈接.. – jagdish