Overview
魚眼鏡頭的成像原理分類:
Dioptric cameras,通過透鏡來實現,主要是折射
Catadioptric cameras,使用一個標準相機加一個面鏡(Shaped mirror)
polydioptric camera,通過多個相機重疊視野
目前的視覺系統都是 central 的,入射光線會相交于同一點,點稱為 single effective viewpoint。
https://github.com/alalagong/CameraModel
Camera models相機模型
Pinhole:針孔
omnidirectional:全向
(【魚眼鏡頭9】論文Omnidirectional Camera,魚眼是全向折射相機,滿足單一有效視點,scaramuzza多項式Taylor模型(適用于魚眼相機),統一投影模型(在魚眼應用受限))中提到了Omni 相機模型,早期的統一投影模型和后來的scaramuzza多項式Taylor模型(適用于魚眼相機)
Distortion models :畸變模型
Equidistant (EQUI)
Radtan
FOV
Equi畸變模型是一種用于描述相機鏡頭引起的徑向畸變(radial distortion)的數學模型。它基于等距投影(equidistant projection)的原理,即圖像上點與物體空間點之間的距離在投影前后保持不變。在【魚眼鏡頭10】等距Equidistant模型的Kannala-Brandt模型中我說明了這個的模型的情況,在opencv 中fisheye有應用
Radtan在【相機標定系列】徑向畸變和切向畸變(radial-tangential distortion) 徑向畸變和切向畸變模型,簡稱為radtan畸變模型。中有說明,是經典的畸變模型
Projection model:投影模型
Full projection model
MEI Camera
Pinhole Camera
atan Camera
Davide Scaramuzza Camera
常用用例
要注意畸變矯正之后的相機內參會變化。
DSO:Pinhole + Equi / Radtan / FOVVINS:Pinhole / Omni + RadtanSVO:Pinhole / atan / ScaramuzzaOpenCV:cv: pinhole + Radtan , cv::fisheye: pinhole + Equi , cv::omnidir: Omni + Radtan
cv::fisheye在 OpenCV 中用于魚眼相機的標定,但它本身并不直接等同于 Kannala-Brandt 模型。不過,cv::fisheye 函數在處理魚眼相機標定時,可能會采用類似 Kannala-Brandt 模型或其他魚眼相機模型的方法來描述和校正魚眼相機的畸變。
cv::fisheye
cv::fisheye
是 OpenCV 庫中用于處理魚眼相機(Fisheye Camera)的模塊。它基于魚眼相機模型來處理魚眼鏡頭引入的嚴重畸變。以下是關于 cv::fisheye
所基于的模型的一些關鍵點:
-
魚眼相機模型簡介:
- 魚眼相機相較于傳統針孔相機,擁有更廣闊的視野,但這也導致了更嚴重的畸變。
- 魚眼相機模型通常包括針孔成像和魚眼畸變兩個主要部分。
-
針孔成像:
- 在魚眼相機模型中,針孔成像描述了從3D世界坐標系到相機坐標系,再到理想圖像坐標系的投影過程。
- 這一過程通過外參數的旋轉和平移轉換來實現。
-
魚眼畸變:
- 魚眼畸變是魚眼相機特有的現象,它導致圖像中的直線在圖像邊緣附近呈現彎曲狀。
- OpenCV 中的
cv::fisheye
模塊使用多項式模型來描述這種畸變,通常包括多個畸變系數(如 k1, k2, k3, k4 等)。 - 畸變校正通常涉及將畸變圖像坐標轉換為校正后的圖像坐標。
-
畸變校正過程:
- 對于世界坐標系中的一點 P,首先通過針孔投影得到理想坐標 [a; b]。
- 接著,應用魚眼畸變模型計算畸變后的坐標 [x’; y’]。
- 最后,將畸變坐標調整到像素坐標系 [u; v]。
-
多項式畸變模型:
- OpenCV 的
cv::fisheye
模塊使用的畸變模型通常是一個多項式,如 θ d = θ ( 1 + k 1 θ 2 + k 2 θ 4 + k 3 θ 6 + k 4 θ 8 θd = θ (1 + k1θ^2 + k2θ^4 + k3θ^6 + k4θ^8 θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)。 - 其中,θ 是理想坐標的極角,θd 是畸變后的極角,k1, k2, k3, k4 是畸變系數。
- OpenCV 的
-
模型應用:
cv::fisheye
模塊提供了多種函數和工具,用于魚眼相機的標定、畸變校正、投影和反投影等操作。- 通過這些工具,用戶可以準確地校正魚眼相機拍攝的圖像,獲得更準確的視覺信息。
總結來說,cv::fisheye
是基于魚眼相機模型來處理魚眼鏡頭引入的畸變的。它利用針孔成像原理和多項式畸變模型來模擬和校正魚眼相機的成像過程,從而為用戶提供高質量的視覺信息。
參考
https://blog.csdn.net/OKasy/article/details/90665534