2010-08-30 393 views
4

我正在使用OpenCV,一個新手到整個事情。攝像機校準

我有一個場景,我在牆上投影,我正在建造一種機器人,它有一個攝像頭。我想知道如何處理圖像,以便我可以獲得相機跟蹤的斑點座標的實際值?

+0

您使用一臺相機還是兩臺相機?所有的斑點都在牆上嗎?斑點是否具有標準化的顏色和形狀,或者它們是否可變? – rwong 2010-08-30 05:52:02

+0

嗨,我正在使用一臺相機。斑點在牆上,但我得到了我的s/w中斑點的圖像源。斑點總是黑色和圓形。 – user434623 2010-08-30 06:07:25

+0

如果你買得起,買XBox Kinect(145美元)。它會讓你的生活變得更簡單(即如果運動的結構不是你的目標)。 – Jacob 2011-07-16 14:13:55

回答

8

首先,你需要校準相機的內在。使用打印在紙板上的棋盤格圖案來做到這一點,OpenCV有這方面的方法,雖然也有完成的工具。 爲了得到一個想法,我寫了一些python代碼來從實時視頻流中校準,沿相機以不同的角度和距離移動紙板。看看這裏:http://svn.ioctl.eu/pub/opencv/py-camera_intrinsic/

然後你需要校準相機的外在,那就是相機的位置wrt。你的世界座標。您可以在牆上放置一些標記,定義這些標記的3D位置,並讓OpenCV爲此校準外部(cvFindExtrinsicCameraParams2)。 在我的示例代碼中,我計算了外在的wrt。棋盤,所以我可以在相機的正確角度渲染一個茶壺。你必須根據你的需要進行調整。

我假設你只投影到一個平面上。您必須知道幾何才能獲取檢測到的斑點的三維座標。然後,您可以在相機圖像中找到斑點並瞭解內在,外在和幾何,您可以根據內在/外在投影機爲每個斑點投射光線,並計算每條這種光線與已知幾何體的交點。然後交點就是你的3D投影點所在的世界空間的三維點。