相機校正
相機校正(camera calibration)是量測你這台特定相機如何把三維光線轉成二維像素的過程。三維視覺中每個幾何演算法——三角測量、立體視覺、運動回復結構——都假設有一個精確的投影模型。校正估計這個模型的參數,讓你能在「一個像素」與「它所來自的射線」之間自由轉換。沒有校正,你擁有的是照片;有了校正,你擁有的是量測儀器。
參數分成兩組。內參(intrinsics)描述相機內部光學,與它在哪裡無關:焦距(以像素計,鏡頭放大的強度)、主點(光軸打在感測器上的那個像素,通常接近但不正好在影像中心),有時還有一個歪斜項。這些合起來構成 3×3 的內參矩陣 K。另外,鏡頭畸變(distortion)刻畫真實鏡頭如何彎曲直線——徑向畸變使影像外凸(桶形)或內縮(枕形),切向畸變則源於鏡頭與感測器不完全平行。畸變以少數幾個多項式係數建模,必須在套用任何直線幾何之前先校正。
標準程序是 Zhang 的方法:從多個角度拍攝一個有精確已知圖案的平面標靶——棋盤格或圓點陣列。因為你知道角點在現實世界中的真實間距,又能在每張影像中以次像素精度偵測它們,你便得到豐富的三維對二維對應集合。演算法先解一個線性系統得到內參與每塊標板位姿的初始猜測,再以重投影誤差的非線性最小化精煉一切(與光束法平差同一個構想)。輸出是 K 加上畸變係數;各影像的標板位姿(外參)是有用的副產物。
校正讓幾何成為度量且乾淨的。知道 K 能把未校正的基礎矩陣升級為本質矩陣,從而回復真正的相對位姿。知道畸變能讓你對影像去畸變,使場景中的直邊變成筆直的像素、對極線變得精確。對立體視覺,把兩台相機一起校正(含其相對位姿)能進行校正扭轉——把對應點放到同一掃描線上的那個變換。略過或草率執行校正,下游每個三維結果都會繼承一個系統性、難以診斷的偏差。
校正不是一勞永逸的。鏡頭變焦或重新對焦會改變焦距;溫度漂移、機械撞擊,甚至換上新鏡頭都會使舊參數失效。做度量工作時,光學一改變就重新校正,而且除非鎖定,否則要把任何手機相機的自動對焦當成移動標靶看待。