圓柱面缺陷檢測
工程背景
測量背景
對於圓柱形物體,如電池、軸承、管材等,表面質量直接影響其效能和使用壽命。為了確保這些產品的高品質,必須對圓柱面進行嚴格的質量控制,特別是對外觀缺陷(如劃痕、凹陷、裂縫、氣泡等)的檢測。本專案旨在開發一種基於非接觸式的圓柱面缺陷檢測系統,通過旋轉掃描技術將整個圓柱表面展開成一個平面圖像,並將其劃分為八個區域(片)進行詳細檢測。
相機選型
深視SR700
測量項
圓柱面表面缺陷
解決方案
Vision-Studio首先對點雲圖進行預處理,接著分別將八片需要檢測位置裁切出來進行表面檢測。
設計思路

執行效果展示
工程結果展示
- 表面缺陷檢測結果

專案流程
一、初始化
- 使用
lua语言脚本,設定用於迴圈計數的全域性變數
lua
SetIntVariable("Count", 0)- 使用
加载点云工具,載入需要處理的點雲圖。
二、預處理
使用
3D区域工具,選擇擬合平面的區域。
使用
3D平面工具,繫結3D区域工具設定的區域,擬合平面並將其設定為零平面。

三、分別對不同片進行表面檢測
選擇
标记工具,設定迴圈起點。使用
lua脚本工具,計算需要裁切的圓柱片區域並推送box
lua
x = 23.5
sx = (x + count * 10) - 5
sy = 0
sz = -5
ex = (x + count * 10) + 3.6
ey = 26
ez = 5
SetBox("box", sx,sy,sz,ex,ey,ez)使用
3D裁切工具,繫結上一步lua脚本工具輸出變數box作為輸入區域,裁切出要檢測的圓柱片。
使用
3D表面缺陷工具,執行得到當前圓柱片凹陷或凸起缺陷的資訊。
使用
Lua脚本工具
繫結上一步
3D表面缺陷工具輸出變數缺陷資訊編輯lua指令碼將資訊格式轉換並顯示到對應IM視窗。
判斷迴圈是否結束
經驗
string.format 用於格式化字串 %.nf表示將浮點數格式化為保留 n 位小數。
pi = 3.14159 str = string.format("Pi is approximately %.3f", pi) print(str) -- 輸出: Pi is approximately 3.141
lua
--缺陷数量
defectcount = #defect_area
--循环显示缺陷高度
for i=1, defectcount, 1 do
--获取缺陷中心位置
x = defect_centroid_x[i]
y = defect_centroid_y[i]
--当前缺陷信息,并保留3位小数
height = string.format("%.3f", defect_height[i])
area = string.format("%.3f", defect_area[i])
max_width = string.format("%.3f", defect_bbox_max_width[i])
--绘制在IM1上
DrawText3D(1, "green", x, y, 0, 15, "凹陷" .. i )
DrawText3D(1, "green", x, y - 1.5, 0, 15, "高度:" .. height)
DrawText3D(1, "green", x, y - 3, 0, 15, "面积:" .. area)
DrawText3D(1, "green", x, y - 4.5, 0, 15, "最大宽度:" .. max_width)
end
if count == 7 then
Jump("End")
else
SetIntVariable("Count", count + 1)
Jump("Start")
end
- 其餘片處理邏輯和第一片相同
