单应矩阵公式推导及计算
溫馨提示:如遇公式錯誤,可在文末留言,歡迎指正。本文未經允許禁止轉載。
? 單應矩陣描述的是空間中同一平面上的三維點在兩張圖像中的對應關系。這里需要強調的是同一平面。
? 單應矩陣可以應用在圖像矯正、圖像配準拼接、視角轉換以及計算兩張圖像的相機運動(旋轉和平移)上。
下面我們推導一下單應矩陣,本文講述了兩種推導方式。首先回憶一下相機模型矩陣:
? ?其中:
[R T]?是一個3x4的矩陣,Xw是一個4x1的矩陣,K是一個3x3的矩陣。
?
?
圖1 空間中同一點投影到兩圖像上
?
為了討論更為一般的情況,我們假設兩張圖片來自于兩個相機A、B(對應著左右圖),這樣兩個相機的內參矩陣是不同的,分別為Ka、Kb。世界坐標系中的三維點到相機坐標系轉換,對應的旋轉、平移矩陣分別為:
這樣一來,我們就可以得到兩個相機模型矩陣。
?
將世界坐標系中的點用非齊次形式(頭頂一飄~)表達為:
?
?
1. 推導一:
在相機坐標系下,空間中的平面模型為
是在相機坐標系下的非齊次坐標。
?
圖2?相機看空間中的一個平面
?
接下來推導從左圖(相機A)到右圖(相機B)的映射矩陣,需要用到的式子先擺上(下標中帶字母“ca”和“a”,對應相機A)。
? ? ? ?是平面在相機A坐標系下的法向量,d表示該平面到相機A的垂直距離,是相機A坐標系下平面上的一點。
?
開啟推導模式:
? ? ? ? ?
??需要說明一下:
是上述平面在世界坐標系中的法向量。
?
(旋轉矩陣R是正交矩陣,所以R的轉置就等于R的逆)
?
? ?至此,經過上述推導,兩張圖像中點的對應關系我們就得到了。
如果把世界坐標系和相機A坐標系重合,那么
上式化簡為:
?
單應矩陣
H是一個3x3的矩陣,可以看出單應矩陣與兩個相機之間的相對運動以及所拍攝平面特性有關系。
?
2. 推導二:
??為了方便計算,假設所拍攝平面在世界坐標系中位于Z=0上。
這樣Xw大小就由原來的4x1變成了3x1,旋轉矩陣R中第三列就可以消去,[R T]變成了3x3的矩陣。
3. 如何計算H:
?
為兩張圖像中匹配的點對(可以利用sift、surf等描述子匹配獲得),每一對匹配點,可以得到兩個方程。H矩陣中h9是尺度,所以一共有8個未知數,則至少需要4對點就可以解出矩陣H。解H矩陣常用的一個方法是SVD分解,以后我們會講一下SVD分解。
?
這里給出MATLAB中求解H的代碼:
[U,S,V] =svd(A); H=V(:,end); H=reshape(H,3,3);至此,單應矩陣的推導以及計算就講解完了。這里仍然需要強調的是:使用單應矩陣,需要確保三維點在一個平面上。(當然并不是必須在一個平面上,因為如果三維點距離相機比較遠,三維點之間的距離和其距離相機的距離相比就很小,那就可以認為在一個平面上了。)
本文同步更新微信公眾號:
總結
以上是生活随笔為你收集整理的单应矩阵公式推导及计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java activiti jbpm_a
- 下一篇: java中想要保留2位小数_java使d