看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) vs2019 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) Eigen 問題(Question): 各位前輩好 我想詢問關於電腦視覺的問題 如果我有一個旋轉+平移矩陣組合而成的轉換矩陣(Transformation Matrix) 也就是相機外參數矩陣(可以得知世界座標在相機座標的位置,旋轉量) 此時我可以透過這個轉換矩陣,推導出逆轉換矩陣, 而這個逆轉換矩陣,可以得到相機在世界座標的位置,及旋轉量 問題1 : 如果我有一個物體沿世界座標Z軸移動10cm,我想利用上面已知的轉換矩陣與逆 轉換矩陣,推導出屬於這個位置的轉換矩陣,是否有可能呢? 目前我的做法是 先將0,0,20轉換到相機座標(將0,020乘上轉換矩陣中旋轉矩陣的部分) 再將此平移量加到原本的轉換矩陣中平移矩陣的部分 組合而成的轉換矩陣就是0,0,20 與相機的轉換矩陣 如果有錯誤的地方再麻煩各位前輩糾正 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) 補充說明(Supplement): 這是我目前使用到的公式 https://imgur.com/a/x6kgqPJ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.142.197.184 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1600097502.A.1B3.html
s4300026: prob_solve? 09/15 08:26
cia1099: 老實說我看不太懂你的問題,相機外參就是世界座標轉到相 09/15 08:43
cia1099: 機座標,這沒問題,你要直接取逆不是不能,但取逆要旋轉 09/15 08:43
cia1099: 矩陣和平移相量分開作,因為外參矩陣是3x4的,沒有矩陣 09/15 08:43
cia1099: 逆可以算不是方陣的矩陣,除非你用se3求逆才有辦法直接 09/15 08:43
cia1099: 算逆乘法 09/15 08:43
cia1099: 你擴展成4x4還是和外參定義有差,平移運算不能直接這樣 09/15 08:48
cia1099: 求逆,這違反矩陣的rank,平移不能保這4x4是full rank 09/15 08:48
cia1099: 抱歉上面的full rank講錯了,是說你的inv(T)算出來也是 09/15 09:12
cia1099: 畸形,不滿足旋轉矩陣的constrain R^T*R=I,所以別直接 09/15 09:12
cia1099: 對T求逆 09/15 09:12
cart0909: 什麼是那個位置的轉換矩陣?你是想問那個點在相機坐標系 09/15 11:17
cart0909: 下的座標嗎? 因為轉換矩陣是用來描述兩個坐標系的關係( 09/15 11:17
cart0909: SE(3) group) ,還是你物體本身帶有座標系? 09/15 11:17
謝謝前輩的回覆 因為小弟最近才接觸到3D空間轉換等問題,觀念上可能還需加強 我目前認知是4*4的轉換矩陣 ,為齊次座標的轉換 目前我做的操作如下 1.將旋轉矩陣(3x3) 與 平移矩陣(3x1) 組合成[R|t](4x4) 最後(3,0)~(3,3)的值為0,0,0,1 這裡與兩位前輩提到的se3 類似(不過我不確定物理意義是否相同,我需要在消化學習這部分) 2.將此4x4的轉換矩陣做逆矩陣 3.分開來算旋轉矩陣(3x3)與平移矩陣(3x1),新的旋轉矩陣=旋轉矩陣的逆矩陣 新的平移矩陣 = -(新的旋轉矩陣) * 平移矩陣 將新的旋轉矩陣R'與新的平移矩陣T' 組合成[R'|T'](4x4) 最後(3,0)~(3,3)的值為0,0,0,1 此時會發現 3 與 2 求出來的逆轉換矩陣相同 所以我想透過這關係 求出在世界座標往Z軸位移20cm後 與相機的轉換矩陣 小弟如果描述或觀念不清楚的地方再請前輩指正 ※ 編輯: asdfg1597860 (220.142.197.184 臺灣), 09/15/2020 21:42:37
cart0909: 1是這樣寫沒錯 R只要滿足R*R^T=I 且 det(R)=1 就是rotat 09/16 23:31
cart0909: ion matrix( SO(3) group ). 跟translation組成你寫的 09/16 23:31
cart0909: 形式就是SE(3)其中一種表示方式了。 09/16 23:31
cart0909: 2跟3 不多補充。 09/16 23:31
cart0909: 再來你的問題要考慮那個object只是點還是帶走座標系。 09/16 23:34
cart0909: 如果只是三維點x3Dw (描述在world frame)下,因為你有R 09/16 23:34
cart0909: cw, tcw。就直接轉到camera frame就行了 x3Dc=Rcw*x3Dw+ 09/16 23:34
cart0909: tcw 09/16 23:34
cart0909: 如果是有座標系且知道Two轉換矩陣(object to world)。 09/16 23:36
cart0909: 則object to camera的Tco=Tcw*Two 09/16 23:36
asdfg1597860: 謝謝前輩的指導 09/17 23:29
CoNsTaR: cia 怎麼那麼氣 XD 09/18 08:07
CoNsTaR: 幫補 09/18 08:08
purefalse: 邊氣邊教也是很好心! 09/18 08:25