論文基礎-5幾何知識
阿新 • • 發佈:2021-06-24
尤拉公式證明:
SVD求得兩個對應點集合的旋轉矩陣R和轉移矩陣t的數學推導
參考:
https://blog.csdn.net/u012836279/article/details/80351462
數值方法解出的近似旋轉矩陣,SVD轉化為正交的標準旋轉矩陣 旋轉矩陣標準化 正交矩陣
參考連結:https://zhuanlan.zhihu.com/p/104735380
參考視訊課:https://www.bilibili.com/video/BV1ax411R7Hd?p=20
在譚平老師(SFU)在浙江大學的計算機視覺的公開課(強烈推薦講的很好,連結如上)中聽到了這個問題,在這裡記錄一下:
在求解涉及旋轉的優化問題過程中,通過解線性方程組或者採用優化方法得到的旋轉矩陣的數值解,往往沒有考慮到正交約束,會得到一個存在誤差的近似旋轉矩陣,也就是說這個矩陣並不是一個嚴格正交的標準正交矩陣,不滿足。因此,需要將矩陣近似為最接近的正交矩陣。
處理方法:採用SVD分解近似旋轉矩陣,然後將奇異值矩陣用單位陣替代即可,得到
Matlab簡單的示例如下
% Standard Rotation Matrix R = [0.0115185, 0.999321, 0.0351458; -0.998647, 0.00971046, 0.051195; 0.0508185, -0.0356881, 0.998074]; % S is identity matrix [U, S, V] = svd(R); % Rotation Matrix Solved without Constraint (Error) R1 = [0.01, 0.99, 0.03; -0.99, 0.01, 0.05; 0.05, -0.03, 0.99]; % S1 is not identity matrix [U1, S1, V1] = svd(R1); % Approximate Matrix R2 = U1 * V1'; % S2 is identity matrix [U2, S2, V2]= svd(R2);
這裡還要注意一個問題,之前也遇到過。處理完以後得到的 R 不一定就是旋轉矩陣,因為旋轉矩陣是行列式值為1的正交矩陣,而正交矩陣的行列式值為。因此還要檢驗 R 的行列式是否為1,如果是-1,則得到了一個Reflection,需要將奇異值矩陣(單位陣)的最後一列的1置為-1,這樣得到的 R 就是旋轉矩陣了,這個處理方式參考了https://zhuanlan.zhihu.com/p/104735380,以及Arun 的經典文章 Least-Squares Fitting of Two 3-D Point Sets,這種情況在求解兩組三維點相對位姿時有時會出現。