1. 程式人生 > >相機標定概念性問題

相機標定概念性問題

轉載自:https://blog.csdn.net/cookie_234/article/details/70230339

相機標定概念性問題

概述

  • 什麼是相機標定?在影象測量過程以及機器視覺應用中,為確定空間物體表面某點的三維幾何位置與其在影象中對應點之間的相互關係,必須建立相機成像的幾何模型,這些幾何模型引數就是相機引數。在大多數條件下這些引數必須通過實驗與計算才能得到,這個求解引數的過程就稱之為相機標定(或攝像機標定)。通俗的講,單目相機標定是為了獲得相機的內參和外參,內參表徵了相機的內部結構引數,外參是相機相對於外界物體的旋轉和平移。而(固定位置的)雙目或多目標定,是在單目的基礎上,獲得相機之間的相對位置關係(也就是每個相機座標系之間的平移和旋轉)。
  • 為什麼要標定?通俗的講,我們通過相機得到的影象和實際物體不在一個座標系中,我們要知道對應點的位置需要進行座標轉換,而這個座標系的轉換需要經過好幾層,在轉換的過程中就需要用到標定得到的內參外參。
  • 相機的內參數和外引數的作用? 
    • 內參數:針孔相機的模型實際上就是由內參數矩陣描述的:相機座標系->影象座標系。比如給定在相機座標系中的一個3D點,我們如何知道在它在2D影象中的位置,內參數矩陣就可以解決這個問題。
    • 外引數:外引數用於描述兩個座標系之間的位置關係:某個相機座標系/世界座標系->另一個相機座標系。對於單個運動的相機,外引數矩陣描述了不同時刻相機的相對位置關係,或者描述了相機與世界座標系的關係。對於雙目或者多目相機,外引數描述了相機座標系之間的位置關係。就比如說,我們已知在某個相機或者世界座標系下的一個3D點的座標,如何得到該點在另一個相機座標系下的座標呢,通過外引數求得兩個座標系之間的位置關係,就可以得到。
    • 畸變引數:一般的針孔模型的相機有徑向畸變和切向畸變,有了畸變引數我們就可以知道當沒有畸變的情況下一個點在影象中原來的位置是在哪。也就是求得了真正消除畸變的座標,我們就可以使用不考慮畸變的針孔相機模型了。

重要的概念

  • 內參數:(1/dx,1/dy,u0,v0,f)其中,dx和dy是相機單個感光單元晶片的長度和寬度,是一個物理尺寸,有時候會有dx=dy,這時候感光單元是一個正方形。u0和v0分別代表相機感光晶片的中心點在x和y方向上可能存在的偏移,因為晶片在安裝到相機模組上的時候,由於製造精度和組裝工藝的影響,很難做到中心完全重合。f代表相機的焦距。
  • 外引數:(R;T)是相機的旋轉矩陣R和平移向量T
  • 座標系: 
    • 世界座標系(Xw,Yw,Zw) 
      • 世界座標系是由使用者定義的世界三維座標系,用於描述三維空間中的物體,相機的座標位置,滿足右手法則。
    • 相機座標系(Xc,Yc,Zc) 
      • 相機座標系是以相機的光心作為原點,Zc軸與光軸重合,垂直於成像平面,且取投影方向為正方向,Xc、Yc軸與影象物理座標系的x、y軸平行,且OcO為攝像機的焦距f。
    • 影象座標系 
      • 影象座標系分為 影象畫素座標系(u,v)和影象物理座標系(x,y)。由於相機的工作原理,相機的影象座標系是一個以畫素為單位的座標系,它的原點在左上方,並沒有以物理單位為基礎來表示每個畫素點在影象中的位置。為了解決這個問題,需要建立以物理單位(如毫米)為基礎表示的影象座標系(如xoy)。
      • 影象物理座標系(x,y):影象物理座標系以光軸與像平面的交點為原點,以毫米為單位的直角座標系,其x軸和y軸分別與影象畫素座標系的u軸和v軸平行。
      • 影象畫素座標系(u,v):影象畫素座標系以影象左上角為原點,以畫素為座標單位的直角座標系,u、v分別表示畫素在數字影象中的列數和行數。

座標系間關係

其實說白了就是座標系之間的轉換,目的就是最終建立世界座標系的物理三維點到二維影象畫素座標系中畫素點的空間對應關係。有了上面四個座標系後,我們可以很形象的來看相機光學成像的原理,產生畸變的原因,以及進行畸變校正的重要性和原理,如下圖我們可以將相機成像理解為如下的座標變換過程。 


座標系轉換 


先來看理想情況下的各座標系轉換: 
影象物理座標系與影象畫素座標系的轉換:理想的影象座標系原點O1和真實的O0有一定的偏差,由此我們建立了等式(1)和(2),可以用矩陣形式(3)表示。

 

影象物理座標系與影象畫素座標系的轉換

相機座標系與影象物理座標系的轉換:通過相機與影象的投影關係,可以得到相機座標系如何轉換為影象物理座標系。我們得到了等式(4)和等式(5),可以用矩陣形式(6)表示。 
相機座標系與影象物理座標系的轉換

世界座標系與相機座標系的轉換:

相機座標系與影象物理座標系的轉換

由等式(3),等式(6)和等式(7)我們可以推匯出影象座標系和世界座標系的關係,設為公式(8):

影象座標系和世界座標系的關係

總的轉換關係說明:

總的轉換關係

考慮畸變的情況: 
畸變的形象示意圖如下: 
畸變示意圖 
畸變校正公式為: 
畸變校正公式 
(xu,yu)為影象物理點座標的理想值,(x,y)為影象物理點座標的實際值,δδx,δδy為非線性畸變值,它與影象點在影象中的位置有關: 
1.徑向畸變(忽略了高階項的徑向畸變模型函式) 
徑向畸變 
2.切向畸變(忽略了高階項的切向畸變模型函式) 
切向畸變 
3.薄稜鏡畸變(忽略了高階項的薄稜鏡畸變模型函式) 
切向畸變 
最後得到畸變矯正函式模型如下,有k1,k2,p1,p2,s1,s2共6個非線性畸變係數: 
切向畸變

應用問題

  1. M1,M2矩陣都是有其具體含義的,我們在求得其結果時如何大致估計求得的資料基本正確? 
    • M1中,fx、fy為焦距,一般情況下,二者相等,u0、v0可以由resolution估算,一般為其一半;M2中R為旋轉矩陣、T為平移矩陣可以由旋轉平移的特點檢查;
  2. 比如有這樣一個問題,雙目相機已標定,現在我們有左相機照片中的關鍵點以及對應的世界座標系中的3D點如何得到右相機中對應的關鍵點位置? 
    • 由於2D向3D缺失一個維度,我們不能僅僅通過求左相機內參矩陣的逆直接進行兩個相機座標系之間的相互轉換。首先按照公式(8)我們需要利用對應的世界座標系中的3D點求此時的左相機的(R;T),這裡涉及一個2D座標向3D座標轉換的問題,可以用opencv函式solvePnP解,然後得到左相機座標系中座標值->通過兩相機位置關係得到右相機座標系座標值->通過右相機內參矩陣得到右相機影象座標系中對應的關鍵點座標。
  3. 所有解析度下的畸變(k1,k2,p1,p2)相同,但內參不同(fx,fy,u0,v0),不同解析度下需要重新標定相機內參;

參考

概念: 
https://www.zhihu.com/question/29448299 
http://blog.csdn.net/li_007/article/details/5976261 
http://blog.csdn.net/yangdashi888/article/details/51356385 
http://blog.csdn.net/liulina603/article/details/52953414 
座標系轉換公式: 
http://blog.csdn.net/aptx704610875/article/details/48914043 
http://www.cnblogs.com/haoxing990/p/4588566.html 
應用問題: 
http://blog.csdn.net/chenyusiyuan/article/details/5961769 
雙目標定: 
http://blog.csdn.net/dcrmg/article/details/52986522 
http://blog.csdn.net/zc850463390zc/article/details/48975263 
用opencv函式進行標定的傻瓜教程: http://blog.csdn.net/dcrmg/article/details/52929669