Skip to content

3D转2D模板匹配

工程背景

测量背景

为了确保电池的质量和安全性,并优化其性能,制造商需要严格控制生产过程中的每一个环节,包括电池的尺寸精度。电池的高度宽度3D检测旨在通过2D结合3D检测工具,实现对电池物理尺寸的精确测量。

相机选型

海伯森LCF

测量项

电池长宽及高度

解决方案

AI-Vision首先将点云图转为深度图,对深度图进行模板创建与模板匹配确认样品位置,接着用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点云图进行测量。

AI-Vision,让3D测量更简单