Skip to content

3D轉2D模板匹配

工程背景

測量背景

為了確保電池的質量和安全性,並最佳化其效能,製造商需要嚴格控制生產過程中的每一個環節,包括電池的尺寸精度。電池的高度寬度3D檢測旨在通過2D結合3D檢測工具,實現對電池物理尺寸的精確測量。

相機選型

海伯森LCF

測量項

電池長寬及高度

解決方案

Vision-Studio首先將點雲圖轉為深度圖,對深度圖進行模板建立與模板匹配確認樣品位置,接著用3d工具對樣品寬高進行測量。

設計思路

本地圖片

執行效果展示

  • 工程結果展示

    • 寬度測量結果

    本地圖片

    • 高度測量結果

    本地圖片

專案流程

一、初始化

  1. 使用Lua脚本工具,將全域性變數初始化

  2. 使用加载点云工具,載入需要處理的點雲圖。

lua
-- 初始化全局变量用于循环判断
SetIntVariable("count",1)

本地圖片

二、獲取樣品位置角度資訊

本地圖片

  1. 使用点云转深度图工具,將3D點雲圖轉為深度圖,用於2d模板匹配

  2. 使用加载图片工具,載入儲存的深度圖

  3. 使用2D模板创建工具,建立2D模板

  4. 使用2D模板匹配工具,根據建立的模板對深度圖進行模板匹配

  5. 使用Lua脚本工具,獲取所有樣品位置及角度資訊。資料輸出到全域性變數。

  • 繫結變數:模板匹配結果;解析度,原點位置(點雲轉深度圖輸出變數)

  • 編輯指令碼獲取所有樣品匹配角度插入到陣列中;獲取模板匹配結果中的位置資訊,根據2d匹配位置*分辨率+原点位置將2D匹配XY位置轉為3DXY座標

  • 輸出資料到全域性變數

lua
-- 获取匹配角度
angles = {}

for i = 1,5,1 do
   table.insert(angles,Result[i].Angle)
end

-- 获取实际点云图位置 2d匹配位置*分辨率+原点位置
positionX = {}
positionY = {}

for i = 1,5,1 do
    table.insert(positionX,Result[i].Center.X*resolutionx + offsetx)
    table.insert(positionY,Result[i].Center.Y*resolutiony + offsety)
end

for i = 1,5,1 do
   DrawPoint2D(0, "blue", positionX[i], positionY[i])
end

SetFloatArrayVariable("angles",angles)
SetFloatArrayVariable("positionX",positionX)
SetFloatArrayVariable("positionY",positionY)
SetIntVariable("counts",5)

本地圖片

三、迴圈進行寬度高度測量

通過獲取模板匹配角度及位置資訊來對點雲進行方位調整使需要測量塊左右邊與y軸平行,上下邊與x軸平行,之後推送box對塊的寬度高度進行測量。

本地圖片

  1. 使用标记工具,標記迴圈初始。

  2. 通過指令碼獲取模板匹配當前位置及角度:指令碼根據count計數獲取當前位置及角度並輸出到全域性變數。

  3. 使用3D位置调整工具,調整定位到當前待測樣品XY位置。

    本地圖片

  4. 使用3D变换工具,根據待測樣品模板匹配的角度旋轉點雲。

    本地圖片

  5. 將點雲複製到IM4用於寬度高度測量

  6. 使用四個方形探针工具,找到樣品的四條邊

  7. 使用四個3D几何交点工具,繫結上一步找到的兩條邊作為輸入幾何,分別找到四條邊的交點

  8. 使用四個3D距离工具,分別繫結四個交點中的兩個作為輸入點,測量樣品長寬距離。

  9. 使用兩個3D区域工具,設定基準區域

  10. 使用3D平面工具,繫結上一步設定的區域作為區域,擬合基準面

  11. 使用3D高度工具,分別測量樣品上層到底面的距離以及樣品上層到樣品下層的距離。

本地圖片

本地圖片

本地圖片

  1. 使用Lua脚本工具,迴圈標記全域性變數值+1。
  • 綁定當前迴圈值count及樣品總數量counts

  • 編輯指令碼判斷迴圈是否結束

lua
if count < counts then
    Jump("ReStart")
    SetIntVariable("count",count+1)
else
    Jump("End")
end
  1. 標記迴圈結束:使用标记工具,建立迴圈停止標記位。

經驗提煉

核心步驟:

  1. 3D點雲圖轉為深度圖進行2D模板匹配得到樣品相對模板角度及在2D圖中XY位置。

  2. 將2D獲取的角度位置及資訊轉為3D資訊。

  3. 根據獲取資訊在3D點雲圖進行測量。

Vision Studio