2012-01-11 97 views
0

我想爲女巫的android應用程序製作一個AR應用程序,用戶將攝像頭指向方形標記,並且3D模型應該顯示在標記頂部。OpenCV resolvePnP沒有攝像頭和失真矩陣

我使用的OpenCV來獲取標記的旋轉和平移,但..

要得到這些2點矩陣我用resolvePnP女巫我必須提供一個攝像頭矩陣和 失真矩陣女巫(從我理解)對於每種相機類型都是特定的。 不幸的是,這對我來說是一個巨大的缺陷,因爲應用程序應該受到大多數android設備的支持,我也不能要求用戶運行相機校準程序(由openCV提供的功能)。

所以問題:有沒有辦法消除相機矩陣和失真矩陣?或者,還有另一種方式來計算相對於設備的標記3D位置?

我嘗試QCAR和Unity AR,但(因爲3D模型從服務器下載並不斷變化)我被迫去OpenCV。

任何幫助將非常感激。

謝謝。

回答

1

壞消息給你。答案是一個明確的,不可撤銷的,大NO NO。

如果您不瞭解相機的任何信息,您實在無法知曉任何有關您圖片的內容。相機由兩個矩陣描述:相機墊和變形墊。

但是,伴隨着壞消息,還有一些好消息。也許,你可以做點什麼。

失真矩陣在許多AR應用中可以忽略。你只是不在乎小的扭曲。

和相機矩陣可以,如果你知道的視攝像頭的視野可輕鬆構造: 攝像頭矩陣:

w/(2*tan(camera.fovX())), 0, w/2, 0, 
0, h/(2*tan(camera.fovY())), h/2, 0, 
0, 0, 1, 0 

現在,你會說,你變好壞:你需要相機FOV和爲此你需要校準。好消息是,在android上你可以得到Horizo​​ntalAperture()和getVerticalAperture()等等。光圈== fov。

最後,真是個壞消息:在很多手機上,返回的值不僅僅是正確的。因爲製造商不關心它。它返回假角度:10度,180度等。

祝你好運!