張正友相機标定論文筆記
精讀張正友論文之後把主要步驟概括為:
Print a pattern 并把它attach 到一個平面上,通常這個pattern是個棋盤圖
從不同角度對平面拍照,可以變換棋盤的位置,也可以變換棋盤的位置。
檢測Image中的特征點
求解利用三維坐标和四組圖像坐标,求解單應性矩陣,并根據矩陣分解理論求解外部參數與内部參數。
求解distort的系數
利用系數修正疊代模型,不斷修改初始求出的内部參數和外部參數。
求單應性矩陣
目前正在實作求解單應性矩陣。因為求特征點是後邊考慮的内容,是以簡化模型,特征點是自己選取的角點,之後深入學習了特征提取方面的知識後,回來修改這裡的程式。
張的模型是對拍攝的平面做恢複,修改上一節提出的坐标變換公式
pm=(KRT|−KRTC)(M1)
把上式寫成更緊湊的格式
pm=K[R|t]M
寫成具體的坐标形式為
p⎛⎝⎜uv1⎞⎠⎟=K[r1,r2,r3,t]⎛⎝⎜⎜⎜XYZ1⎞⎠⎟⎟⎟
對平面标定時,可以假定平面位于世界坐标系中的Z=0,進而問題簡化為
p⎛⎝⎜uv1⎞⎠⎟=K[r1,r2,t]⎛⎝⎜XY1⎞⎠⎟
記 H=K[r1,r2,t] ,上式化簡為
p⎛⎝⎜uv1⎞⎠⎟=H⎛⎝⎜XY1⎞⎠⎟
利用四個對應點可以求出H,已經通過程式設計實作求單應性矩陣(12月4日修改)。
解決相機标定問題
相機标定問題是為了求解相機的内外參數我們設内參數矩陣為 A ,令 B=A−TA
其中
由于B是hermitian的,是以需要求解B中上(下)對角的六個元素。利用H矩陣的定義:
把求B的六個元素化簡成等價的線性方程組
其中:
找出圖像與三維平面之間任意三個以上的對應點就可以求解出B的六個參數,如果隻有兩個對應點則需要假設内參矩陣A中的c為0。求解出H與A之後,利用以下公式可以找出外部參數中的旋轉矩陣與平移向量:
再利用以下公式可以求出内部參數:
求解出的相機參數(外部+内部)隻是初始值,仍有很大的誤差,我們需要把distort考慮進去,然後使用求最優化的方法反複疊代求解出誤差最小的參數。具體步驟如下:
考慮radial distortion為多項式模型,即與半徑r有關,令 (u,v) 為像素在理想情況(沒有誤差)下的圖像坐标,令 (u˘,v˘) 為實際的圖像坐标,同樣的 (x,y) 和 (x˘,y˘) 為标準化的坐标:利用兩個坐标的變換公式
得到distortion模型
為了估計多項式中的兩個參數
需要求解以上線性方程組,上式中的系數矩陣都是已知的,很容易得到兩個參數
注意考慮到distortion之後要直接把原來坐标經過distortion變換即
最後就是求解一個非線性最優化模型
其中 是空間中的點M投影到圖像上,同時考慮扭曲(也就是 DK[R|t]M )使用LM算法可以求出最優解。
Zhang Z. Flexible camera calibration by viewing a plane from unknown orientations[C]// IEEE International Conference on Computer Vision. IEEE, 1999:666.