Skip to content

3D線掃相機標定

運算元功能

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

引數介紹

輸入引數

引數範圍預設值說明圖示
輸入參考影像0-80參考影像輸入的IM編號
輸入目標影像0-81目標影像輸入的IM編號

計算引數

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

輸出引數

名稱型別範圍說明
Resultbooltrue/falsetrue為成功
false為失敗
Warningbooltrue/falsetrue表示有警告
false表示沒有
Messagestring輸出成功或錯誤或警告資訊,如果沒有錯誤或警告為空
Timefloat運算元執行時間,單位: ms
matrix_tgt2refmatrix目標相機座標系到參考相機座標系的標定矩陣。
rms_obj2refmatrix標定塊上的對應點經過變換後,與參考影像上的對應點之間,計算出的均方根誤差。
rms_obj2tgtmatrix標定塊上的對應點經過變換後,與目標影像上的對應點之間,計算出的均方根誤差。
rms_tgt2refmatrix目標影像上的對應點經過變換後,與參考影像上的對應點之間,計算出的均方根誤差。

異常排查

序號異常資訊對應引數解決方法
1輸入影像為空檢查輸入影像是否為空
2標定檔案路徑引數為空選擇正確的檔案路徑
3至少需要3個點進行矩陣計算至少設定3個點
4點對數量不匹配在參考圖上設定的點數需要和在目標影像上設定的點數相同

示例介紹

本示例中,分別通過手動選點模式、自動選點模式,計算出目標相機座標系到參考相機座標系的標定矩陣。

工程設計

手動選點模式

  1. 選擇3個加载3D点云算子
  2. 選擇Lua脚本運算元。
  3. 選擇2個3D线扫相机标定運算元。

自動選點模式

  1. 選擇3個加载3D点云運算元。
  2. 選擇2個3D线扫相机标定運算元,

工具使用

手動選點模式

  1. 選擇3個加载3D点云運算元。分別按順序將3個相機拍攝的標定塊影像輸入到IM0,IM1,IM2。

  2. 選擇Lua脚本運算元,在指令碼中輸入相機1、相機2、相機3影像中的對應點座標,如下:

    lua
    println('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)
  3. 选择一个3D线扫相机标定算子,进行相机1和相机2之间的标定。参考图像选点和目标图像选点都设置为手动模式。在参考图像选点列表和目标图像选点列表中分别绑定1_C至1_J、2_C至2_J。输出标定文件路径设置为./calib_21.json。輸出影像編號設定為3。

  4. 选择一个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。

自動選點模式

  1. 選擇3個加载3D点云運算元。分別按順序將3個相機拍攝的標定塊影像輸入到IM0,IM1,IM2。
  2. 选择一个3D线扫相机标定算子,进行相机1和相机2之间的标定。参考图像选点和目标图像选点都设置为自动模式。输出标定文件路径设置为./calib_21.json。輸出影像編號設定為3。
  3. 选择一个3D线扫相机标定算子,进行相机2和相机3之间的标定。参考图像选点和目标图像选点都设置为手动模式。输出标定文件路径设置为./calib_32.json。輸出影像編號設定為4。

本地圖片

Vision Studio