Appearance
3D转2D模板匹配
工程背景
测量背景
为了确保电池的质量和安全性,并优化其性能,制造商需要严格控制生产过程中的每一个环节,包括电池的尺寸精度。电池的高度宽度3D检测旨在通过2D结合3D检测工具,实现对电池物理尺寸的精确测量。
相机选型
海伯森LCF
测量项
电池长宽及高度
解决方案
AI-Vision首先将点云图转为深度图,对深度图进行模板创建与模板匹配确认样品位置,接着用3d工具对样品宽高进行测量。
设计思路
执行效果展示
工程结果展示
- 宽度测量结果
- 高度测量结果
项目流程
一、初始化
[00] 使用Lua脚本工具
,全局变量初始化。
lua
SetVariable("count",1)
[01] 使用加载点云工具
,加载需要处理的点云图。
二、获取样品位置角度信息
[02] 使用点云转深度图工具
,将3D点云图转为深度图。
[03] 使用加载图片工具
,加载深度图。
[04] 使用2D模板创建工具
,创建2D模板。
[05] 使用2D图像模板匹配工具
,根据创建的模板对深度图进行模板匹配。
[06] 使用Lua脚本工具
,获取模板匹配结果:所有样品位置角度信息。数据输出到全局变量。
三、位置调整变换
[07] 使用标记工具
,标记循环初始。
[08] 使用Lua脚本工具
,获取当前需要测量的样品位置及角度。
lua
x = GetVariable("positionX")
y = GetVariable("positionY")
a = GetVariable("angles")
counts = GetVariable("counts")
count = GetVariable("count")
-- 获取当前需要测量的样品 XY位置 角度
if count < counts or count == counts then
X = x[count]
Y = y[count]
Angle = a[count]
SetVariable("jiaodu",Angle)
end
if Angle == 0 then
linex = 0
liney = 1
else
linex = math.sin(Angle)
liney = math.cos(Angle)
end
SetVariable("NowX",X)
SetVariable("NowY",Y)
SetVariable("linex",linex)
SetVariable("liney",liney)
[09] 使用3D位置调整工具
,调整定位到当前待测样品XY位置。
[10] 使用3D变换工具
,根据待测样品模板匹配的角度旋转点云。
四、长度宽度测量
[11-14] 使用方形探针工具
,找到样品的四条边。
[15-18] 使用3D几何交点工具
,根据四条边找到四个交点。
[19-20] 使用3D距离工具
,测量样品长宽距离。
五、高度测量
[21-22] 使用3D区域工具
,选择拟合平面的区域。
[23] 使用3D平面工具
,根据上个工具选择的区域,拟合平面并将其设置为零平面。
[24] 使用3D高度工具
,测量样品上层到底面的距离。
[25] 使用3D高度工具
,测量样品上层到样品下层的距离。
[26] 使用Lua脚本工具
,循环标记全局变量值+1。
lua
count = GetVariable("count")
counts = GetVariable("counts")
if count < counts then
Jump("ReStart")
SetVariable("count",count+1)
else
Jump("End")
end
[27] 使用标记工具
,创建循环停止标记位。