互動(dòng)攝像機(jī)校準(zhǔn)應(yīng)用

2018-10-10 10:30 更新

根據(jù)經(jīng)典校準(zhǔn)技術(shù),用戶必須首先收集所有數(shù)據(jù),并在運(yùn)行cv :: calibrateCamera功能時(shí)獲取攝像機(jī)參數(shù)。如果平均重新投影誤差很大或者如果估計(jì)參數(shù)似乎是錯(cuò)誤的,選擇或收集數(shù)據(jù)的過程以及cv :: calibrateCamera的重新開始。

交互式校準(zhǔn)過程假設(shè)在每個(gè)新的數(shù)據(jù)部分用戶可以看到結(jié)果和錯(cuò)誤估計(jì)之后,他也可以刪除最后的數(shù)據(jù)部分,最后,當(dāng)校準(zhǔn)的數(shù)據(jù)集足夠大時(shí),自動(dòng)數(shù)據(jù)選擇的開始過程。

主要應(yīng)用特點(diǎn)

示例應(yīng)用程序?qū)ⅲ?/p>

  • 確定每個(gè)元素的失真矩陣和置信區(qū)間
  • 確定每個(gè)元素的相機(jī)矩陣和置信區(qū)間
  • 從相機(jī)或視頻文件輸入
  • 從XML文件讀取配置
  • 將結(jié)果保存到XML文件中
  • 計(jì)算重新投影誤差
  • 剔除銳角圖形,防止不適合的雅可比塊出現(xiàn)

  • 自動(dòng)切換校準(zhǔn)標(biāo)志(如果需要,修正高寬比和失真矩陣的元素)
  • 使用多個(gè)標(biāo)準(zhǔn)進(jìn)行校準(zhǔn)時(shí)自動(dòng)檢測
  • 自動(dòng)捕獲靜態(tài)圖案(用戶不需要按任意鍵捕捉框架,只需不要移動(dòng)圖案一秒鐘)

支持的模式:

  • 黑白棋盤
  • 不對稱圓形圖案
  • 雙重不對稱圓形圖案
  • chAruco(帶有Aruco標(biāo)記的棋盤)

參數(shù)說明

應(yīng)用程序有兩組參數(shù):primary(通過命令行傳遞)和advance(通過XML文件傳遞)。

主要參數(shù):

所有這些參數(shù)都通過命令行傳遞給應(yīng)用程序。

- [參數(shù)] = [默認(rèn)值]:說明

  • -v = [filename]:從文件名獲取視頻,默認(rèn)輸入 - id = 0的相機(jī)
  • -ci = [0]:從指定ID的相機(jī)獲取視頻
  • -flip = [false]:輸入框的垂直翻轉(zhuǎn)
  • -t = [圈子]:校準(zhǔn)模式(圓,棋盤,雙圓,chAruco)
  • -sz = [16.3]:校準(zhǔn)板上兩個(gè)最近圓圈或正方形中心之間的距離
  • -dst = [295] daulCircles模式的白色和黑色部分之間的距離
  • -w = [width]:圖案的寬度(角或圓)
  • -h = [height]:圖案的高度(角或圓)
  • -of = [camParams.xml]:輸出文件名
  • -ft = [true]:校準(zhǔn)標(biāo)志的自動(dòng)調(diào)整
  • -vis = [grid]:捕獲的板可視化(網(wǎng)格,窗口)
  • -d = [0.8]:捕獲之間的延遲(以秒為單位)
  • -pf = [defaultConfig.xml]:高級應(yīng)用程序參數(shù)文件

高級參數(shù):

默認(rèn)情況下,高級參數(shù)值存儲在defaultConfig.xml中

<?xml  version = “1.0”?>
< opencv_storage >
< charuco_dict > 0 </ charuco_dict >
< charuco_square_lenght > 200 </ charuco_square_lenght >
< charuco_marker_size > 100 </ charuco_marker_size >
< calibration_step > 1 </ calibration_step >
< max_frames_num > 30 </ max_frames_num >
< min_frames_num > 10 </ min_frames_num >
< solver_eps > 1 e-7 </ solver_eps >
< solver_max_iters > 30 </ solver_max_iters >
< fast_solver > 0 </ fast_solver >
< frame_filter_conv_param > 0.1 </ frame_filter_conv_param >
< camera_resolution > 1280 720 </ camera_resolution >
</ opencv_storage >
  • charuco_dict:特殊字典的名稱,用于生成chAruco模式
  • charuco_square_lenght:chAruco板上的square的大?。ㄒ韵袼貫閱挝唬?/li>
  • charuco_marker_size:chAruco板上的Aruco標(biāo)記大?。ㄒ韵袼貫閱挝唬?/li>
  • calibration_step:啟動(dòng)cv :: calibrateCamera之間的幀間隔
  • max_frames_num:如果校準(zhǔn)幀數(shù)大于此值,則過濾器開始工作。校準(zhǔn)數(shù)據(jù)集的過濾尺寸等于max_frames_num后
  • min_frames_num:如果幀數(shù)大于此值,則該值將打開自動(dòng)標(biāo)志調(diào)整,未失真視圖和質(zhì)量評估
  • solver_eps:在cv :: calibrateCamera中的Levenberg-Marquardt求解器的精度
  • solver_max_iters:求解器的迭代極限
  • fast_solver:如果此值為非零,并且在解算器中使用Lapack,則使用QR分解代替SVD。QR比SVD快,但可能不太精確
  • frame_filter_conv_param:在雙向幀過濾器的線性卷積中使用的參數(shù)
  • camera_resolution:用于校準(zhǔn)的相機(jī)的分辨率

注意: charuco_dict,charuco_square_lenght和charuco_marker_size用于chAruco模式生成(有關(guān)詳細(xì)信息,請參閱Aruco模塊描述:Aruco教程

默認(rèn)chAruco模式:

opencv攝像機(jī)校準(zhǔn)應(yīng)用

雙圈圖案

為了使這個(gè)模式,你需要標(biāo)準(zhǔn)的OpenCV圓形圖案和二進(jìn)制反轉(zhuǎn)。當(dāng)一個(gè)圖案中的所有水平線的線條在另一個(gè)圖案中是相似線條的連續(xù)時(shí),按順序?qū)蓚€(gè)圖案放置在一個(gè)平面上。測量圖形之間的距離如下圖所示,將其作為dst命令行參數(shù)傳遞。還測量最近圓的中心之間的距離,并將該值作為sz命令行參數(shù)傳遞。

opencv攝像機(jī)校準(zhǔn)應(yīng)用

這種模式對生產(chǎn)和測量的質(zhì)量非常敏感。

數(shù)據(jù)過濾

當(dāng)校準(zhǔn)數(shù)據(jù)集大小時(shí),max_frames_num將開始工作數(shù)據(jù)過濾。它嘗試從數(shù)據(jù)集中刪除“壞”幀。過濾器將刪除最大值loss_function 的幀

opencv攝像機(jī)校準(zhǔn)應(yīng)用

RMS是針對幀i計(jì)算的平均重新投影誤差,reduceGridQuality是無幀i的場景覆蓋質(zhì)量評估,等于frame_filter_conv_param。

校準(zhǔn)過程

開始校準(zhǔn)只需運(yùn)行應(yīng)用程序。將圖案放置在相機(jī)前方,并以某種姿勢固定圖案。之后等待捕獲(將顯示消息,如“Frame #i capture”)。主屏幕將顯示當(dāng)前焦距和重投影誤差。將模式移動(dòng)到下一個(gè)位置并重復(fù)過程。嘗試均勻地覆蓋圖像平面,并且不會在圖像平面的銳角上顯示圖案。

opencv攝像機(jī)校準(zhǔn)應(yīng)用

如果校準(zhǔn)似乎成功(置信區(qū)間和平均重新投影誤差小,幀覆蓋質(zhì)量和模式視圖數(shù)量足夠大)應(yīng)用程序?qū)@示如下屏幕上的消息。

opencv攝像機(jī)校準(zhǔn)應(yīng)用

熱鍵:

  • 退出應(yīng)用程序
  • s - 將當(dāng)前數(shù)據(jù)保存到XML文件
  • r - 刪除最后一幀
  • d - 刪除所有幀
  • u - 啟用/禁用應(yīng)用無失真
  • v - 切換可視化模式

結(jié)果

因此,您將獲得相機(jī)參數(shù)和置信區(qū)間。

輸出XML文件示例:

<?xml  version = “1.0”?>
< opencv_storage >
< calibrationDate > “Thu 07 Apr 2016 04:23:03 PM MSK” </ calibrationDate >
< framesCount > 21 </ framesCount >
< cameraResolution >
  1280 720 </ cameraResolution >
< cameraMatrix  type_id = “opencv-matrix” >
  < rows > 3 </ rows >
  < cols > 3 </ cols >
  < dt > d </ dt >
  < data >
    1.2519588293098975 e +03 0. 6.6684948780852471 e +02 0。
    1.2519588293098975 e +03 3.6298123112613683 e +02 0. 0. 1。</ data > </ cameraMatrix >
< cameraMatrix_std_dev  type_id = “opencv-matrix” >
  < rows > 4 </ rows >
  < cols > 1 </ cols >
  < dt > d </ dt >
  < data >
    0. 1.2887048808572649 e +01 2.8536856683866230 e +00
    2.8341737483430314 e +00 </ data > </ cameraMatrix_std_dev >
< dist_coeffs  type_id = “opencv-matrix” >
  < rows > 1 </ rows >
  < cols > 5 </ cols >
  < dt > d </ dt >
  < data >
    1.3569117181595716 e-01 -8.2513063822554633 e-01 0. 0。
    1.6412101575010554 e +00 </ data > </ dist_coeffs >
< dist_coeffs_std_dev  type_id = “opencv-matrix” >
  < rows > 5 </ rows >
  < cols > 1 </ cols >
  < dt > d </ dt >
  < data >
    1.5570675523402111 e-02 8.7229075437543435 e-02 0. 0。
    1.8382427901856876 e-01 </ data > </ dist_coeffs_std_dev >
< avg_reprojection_error > 4.2691743074130178 e-01 </ avg_reprojection_error >
</ opencv_storage >
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號