亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

基于4個共面點的單應矩陣計算相機姿態

基于4個共面點的單應矩陣計算相機姿態

慕村9548890 2019-10-25 15:11:51
我在視頻(或圖像)中有4個共面點,代表一個四邊形(不一定是正方形或矩形),我希望能夠在它們的上方顯示一個虛擬立方體,立方體的角恰好位于這些角上視頻四分之一。由于這些點是共面的,因此我可以計算單位正方形的角(即[0,0] [0,1] [1,0] [1,1])與四邊形的視頻坐標之間的單應性。通過這種單應性,我應該能夠計算出正確的攝像機姿勢,即[R | t],其中R是3x3旋轉矩陣,t是3x1平移矢量,以便虛擬立方體位于視頻四邊形上。我已經閱讀了許多解決方案(其中一些在SO上)并嘗試實現它們,但是它們似乎僅在某些“簡單”情況下才有效(例如,當視頻四邊形為正方形時),但在大多數情況下不起作用。這是我嘗試過的方法(大多數方法基于相同的原理,僅翻譯的計算略有不同)。令K為相機的本征矩陣,H為單應性。我們計算:A = K-1 * H假設a1,a2,a3是A的列向量,r1,r2,r3是旋轉矩陣R的列向量。r1 = a1 / ||a1||r2 = a2 / ||a2||r3 = r1 x r2t = a3 / sqrt(||a1||*||a2||)問題是這在大多數情況下不起作用。為了檢查我的結果,我將R和t與通過OpenCV的solvePnP方法獲得的結果進行了比較(使用以下3D點[0,0,0] [0,1,0] [1,0,0] [1,1 ,0])。由于我以相同的方式顯示多維數據集,因此我注意到在每種情況下,solvePnP均提供正確的結果,而從單應性圖中獲得的姿勢大多是錯誤的。從理論上講,由于我的點是共面的,因此可以從單應性計算姿勢,但是我找不到從H計算姿勢的正確方法。關于我在做什么錯的任何見解?嘗試@Jav_Rock的方法后進行編輯您好Jav_Rock,非常感謝您的回答,我嘗試了您的方法(以及許多其他方法),這似乎或多或少都可以。但是,在基于4個共面點計算姿勢時,我仍然碰巧遇到一些問題。為了檢查結果,我將其與solvePnP的結果進行比較(由于采用了迭代重投影誤差最小化方法,因此效果會更好)。這是一個例子:黃色立方體:解決PNP黑色立方體:Jav_Rock的技術青色(和紫色)多維數據集:其他一些技術得出的結果完全相同如您所見,盡管矢量看起來是正交的,但黑色立方體或多或少是可以的,但似乎比例不高。EDIT2:我對v3進行了歸一化(為了增強正交性),它似乎也解決了一些問題。
查看完整描述

3 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

萬一有人需要@Jav_Rock編寫的函數的python移植:


def cameraPoseFromHomography(H):

    H1 = H[:, 0]

    H2 = H[:, 1]

    H3 = np.cross(H1, H2)


    norm1 = np.linalg.norm(H1)

    norm2 = np.linalg.norm(H2)

    tnorm = (norm1 + norm2) / 2.0;


    T = H[:, 2] / tnorm

    return np.mat([H1, H2, H3, T])

在我的任務中工作正常。


查看完整回答
反對 回復 2019-10-25
  • 3 回答
  • 0 關注
  • 1840 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號