3D線掃相機標定
運算元功能
對相機進行兩兩標定,輸出標定矩陣和標定檔案。使用線掃相機對指定的標定塊進行取圖後,在參考影像和目標影像上分別進行選點,根據選點結果,計算相機之間的標定矩陣。
引數介紹
輸入引數

| 引數 | 範圍 | 預設值 | 說明 | 圖示 |
|---|---|---|---|---|
| 輸入參考影像 | 0-8 | 0 | 參考影像輸入的IM編號 | |
| 輸入目標影像 | 0-8 | 1 | 目標影像輸入的IM編號 |
計算引數

| 引數 | 範圍 | 預設值 | 說明 | 圖示 |
|---|---|---|---|---|
| 選點模式 | 手動/自動 | 手動 | 手動模式下需要手動選點,並且選點位置需要和標定塊上的預設選點位置向匹配。需要至少選擇5對不共面的點,選點範圍為四稜臺的頂點以及底座上表面的4個頂點;自動模式下需要輸入僅含標定塊的影像,並且標定塊影像是完整的。此時演算法會自動計算四稜臺的8個頂點。 | |
| 選點列表 | 僅在手動模式下顯示。點A-點L對應標定塊上的頂點位置見圖示中。 | ![]() | ||
| 輸出標定檔案路徑 | 空 | 標定檔案的儲存路徑 | ||
| 標定塊型別 | 四稜錐標定塊/圓孔標定塊/手動選點 | 圓孔標定塊 | 選擇當前使用的標定塊型別或手動選點 | |
| 對應點對數量 | 3-6 | 3 | 設定相機上的影像點與標定塊上的理論點構成的點對數量 | |
| 相機A/B對應點對1-6 | 數量由对应点对数量引數控制 | |||
| 相機A/B檢測區域 | 設定點雲圖像上,需要進行圓孔檢測的區域。僅在圆孔标定块型別下有效。 | |||
| 標定塊點 | 當前標定塊上,與設定的相機A/B檢測區域相對應的圓心理論座標(需要自己設定標定塊原點) | |||
| 影像點 | 設定相機拍攝的點雲圖像上,用於計算標定矩陣的特徵點座標。僅在手动选点型別下有效 | |||
| 輸出影像 | 0-8 | 0 | 影像輸出的IM編號。其中顯示的影像為變換後的目標影像以及參考影像 |
輸出引數

| 名稱 | 型別 | 範圍 | 說明 |
|---|---|---|---|
| Result | bool | true/false | true為成功 false為失敗 |
| Warning | bool | true/false | true表示有警告 false表示沒有 |
| Message | string | 輸出成功或錯誤或警告資訊,如果沒有錯誤或警告為空 | |
| Time | float | 運算元執行時間,單位: ms | |
| matrix_tgt2ref | matrix | 目標相機座標系到參考相機座標系的標定矩陣。 | |
| rms_obj2ref | matrix | 標定塊上的對應點經過變換後,與參考影像上的對應點之間,計算出的均方根誤差。 | |
| rms_obj2tgt | matrix | 標定塊上的對應點經過變換後,與目標影像上的對應點之間,計算出的均方根誤差。 | |
| rms_tgt2ref | matrix | 目標影像上的對應點經過變換後,與參考影像上的對應點之間,計算出的均方根誤差。 |
異常排查
| 序號 | 異常資訊 | 對應引數 | 解決方法 |
|---|---|---|---|
| 1 | 輸入影像為空 | 檢查輸入影像是否為空 | |
| 2 | 標定檔案路徑引數為空 | 選擇正確的檔案路徑 | |
| 3 | 至少需要3個點進行矩陣計算 | 至少設定3個點 | |
| 4 | 點對數量不匹配 | 在參考圖上設定的點數需要和在目標影像上設定的點數相同 |
示例介紹
本示例中,分別通過手動選點模式、自動選點模式,計算出目標相機座標系到參考相機座標系的標定矩陣。
工程設計
手動選點模式
- 選擇3個
加载3D点云算子。 - 選擇
Lua脚本運算元。 - 選擇2個
3D线扫相机标定運算元。
自動選點模式
- 選擇3個
加载3D点云運算元。 - 選擇2個
3D线扫相机标定運算元,
工具使用
手動選點模式
選擇3個
加载3D点云運算元。分別按順序將3個相機拍攝的標定塊影像輸入到IM0,IM1,IM2。選擇
Lua脚本運算元,在指令碼中輸入相機1、相機2、相機3影像中的對應點座標,如下:luaprintln('Hello AI-Vision!') -- 相机1上的点 SetPoint3D("1_C", 15.5,63.0799980164,-5.95093011856) SetPoint3D("1_D", 45.4799995422,63.3099975586,-5.33064985275) SetPoint3D("1_E", 28.8999996185,48.1399993896,4.03621006012) SetPoint3D("1_F", 38.3799972534,48.1299972534,4.19015979767) SetPoint3D("1_G", 28.7799987793,37.969997406,4.01133012772) SetPoint3D("1_H", 38.6399993896,38.2599983215,4.21365976334) SetPoint3D("1_I", 16.6999988556,3.37999987602,-5.81731987) SetPoint3D("1_J", 46.5799980164,3.42999982834,-5.53338003159) -- 相机2上的点 SetPoint3D("2_C", 6.33999967575,62.3099975586,-6.11768007278) SetPoint3D("2_D", 36.5,62.8599967957,-5.6080198288) SetPoint3D("2_E", 19.9200000763,47.6499977112,3.81477999687) SetPoint3D("2_F", 29.4200000763,47.3999977112,3.99586009979) SetPoint3D("2_G", 19.7799987793,37.6899986267,3.84138989449) SetPoint3D("2_H", 29.5999984741,37.8999977112,3.98522996902) SetPoint3D("2_I", 7.57999992371,2.72000002861,-6.00668001175) SetPoint3D("2_J", 37.3199996948,3.07999992371,-5.76390981674) -- 相机3上的点 SetPoint3D("3_D", 24.98, 62.549999, -5.75619) SetPoint3D("3_E", 8.44, 47.32, 3.68806) SetPoint3D("3_F", 17.9, 47.16, 3.86188) SetPoint3D("3_G", 8.26, 37.309998, 3.6232) SetPoint3D("3_H", 18.119999, 37.649998, 3.8217) SetPoint3D("3_J", 25.959999, 2.84, -5.93972)选择一个
3D线扫相机标定算子,进行相机1和相机2之间的标定。参考图像选点和目标图像选点都设置为手动模式。在参考图像选点列表和目标图像选点列表中分别绑定1_C至1_J、2_C至2_J。输出标定文件路径设置为./calib_21.json。輸出影像編號設定為3。选择一个
3D线扫相机标定算子,进行相机2和相机3之间的标定。参考图像选点和目标图像选点都设置为手动模式。在参考图像选点列表中绑定2_D、2_E、2_F、2_G、2_H、2_J,在在目标图像选点列表中绑定3_D、3_E、3_F、3_G、3_H、3_J。输出标定文件路径设置为./calib_32.json。輸出影像編號設定為4。
自動選點模式
- 選擇3個
加载3D点云運算元。分別按順序將3個相機拍攝的標定塊影像輸入到IM0,IM1,IM2。 - 选择一个
3D线扫相机标定算子,进行相机1和相机2之间的标定。参考图像选点和目标图像选点都设置为自动模式。输出标定文件路径设置为./calib_21.json。輸出影像編號設定為3。 - 选择一个
3D线扫相机标定算子,进行相机2和相机3之间的标定。参考图像选点和目标图像选点都设置为手动模式。输出标定文件路径设置为./calib_32.json。輸出影像編號設定為4。


