0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文学会,胶位偏移、缺胶、断胶、溢胶检测(含源码)

新机器视觉 来源:CSDN博主「小邢同学」 2024-03-30 14:40 次阅读

检测任务

点胶检查检测以下缺陷:
1.缺少粘合胶的部分(断胶)
2.粘合剂过多或过少的部分(溢胶、缺胶)
3.粘合胶离其预定位置太远(点胶偏移)

halcon对应示例程序:
apply_bead_inspection_model.hdev

效果图示:

2991e3a0-ee50-11ee-a297-92fbcf53809c.png

299cd09e-ee50-11ee-a297-92fbcf53809c.png

29b553c6-ee50-11ee-a297-92fbcf53809c.png


检测思路

示例程序的图像处理思路:

1.使用halcon的可变形模板匹配,将检测物品转正,方便检测
这里我们用的较少,因为我们平时在做点胶检测的时候,用普通的模板匹配,还有普通的2D仿射变换就可以保证图像的一致性。

2.定义粘合胶条的参考路径,以及胶条的宽度,还有误差容忍值
注意,这里halcon的官方例程是给了一个轨迹的点集,我们在实际的检测中,可以使用CAD图纸导入或者手绘路径,完成此步骤。关于CAD图纸导入halcon我会出一期教学博客,写完了把链接贴上来。

3. 利用算子create_bead_inspection_model 创建点胶轨迹模型
创建点胶轨迹的模型,相当于我们使用模板匹配时候用到的穿件模板算子,也不难的。到第三步,我们已经完成了创建模板与点胶轨迹模型的步骤,准备工作都进行完毕,接下来就要进行检测了。

4.校正胎圈的位置,并生成四条平行轮廓,进行显示
显示一下前面准备工作的结果,包括胶轨迹的样子,可容许胶轨迹范围等。

5.读入待检测图像,并进行校正,最后利用算子apply_bead_inspection_model进行点胶轨迹检测
从这一步开始,就使用前面几部的模板,进行点胶轨迹的检测了。首先我们先把图片进行一个仿射变换,转正图片,让我们处理的点胶区域每次都保持一致。这样极大地减小了处理难度。再调用apply_bead_inspection_model进行点胶轨迹检测,就检测完成啦。是不是并不难。

6.根据不同的检测类型在窗口上进行相关显示
最后搞个交互界面显示一下结果就OK了啦。

点胶质量检测代码及解析

在本例中,图片矫正使用平面可变形匹配。

dev_update_off ()


首先使用仿射变换将图片转正,之后创建平面可变形模模板
这一步就是为了让每次处理的图片一致性好。

prepare_alignment (RegionPart, RowT, ColumnT, ModelID)

求取检测区域的最小矩形,这样的好处是只对需要进行图像处理的区域进行处理,使算法速度增加。

smallest_rectangle1 (RegionPart, PartRow1, PartColumn1, PartRow2, PartColumn2)


定义点胶轨迹的参考路径
//这里使用轨迹点集创建点胶轨迹,也可以通过在参考图像上绘制该路径来生成,例如使用算子draw_nurbs.

gen_contour_nurbs_xld (ContourRef, [701.767,626.953,538.867,443.54,390.447,360.28,354.247,363.9,400.1,458.02,509.907,588.34,659.533,696.94], [319.24,336.133,367.507,431.46,489.38,546.093,646.247,722.267,776.567,826.04,869.48,912.92,934.64,929.813], ‘auto’, [15,15,15,15,15,15,15,15,15,15,15,15,15,15], 3, 1, 5)


定义点胶轨迹模板创建变量

TargetWidth := 14
WidthTolerance := 7
PositionTolerance := 30
Polarity := ‘dark’


创建点胶轨迹模板
//参数说明:参考轮廓(ContourRef);胶轨迹标准宽度(TargetWidth);胶轨迹宽度误差大小(WidthTolerance);胶轨迹宽所在的区域范围(PositionTolerance);胶轨迹颜色(Polarity);进行处理的sigma与阈值([], []);创建出的模板(BeadInspectionModel)

create_bead_inspection_model (ContourRef, TargetWidth, WidthTolerance, PositionTolerance, Polarity, [], [], BeadInspectionModel)


读入图片进行显示点胶轨迹、描述信息

read_image (Image, ‘bead/adhesive_bead_01’)


矫正图像,使图像与之前的图像保持较好的一致性

align_bead (Image, ImageAligned, ModelID, RowT, ColumnT) //校正


创建两个平行轮廓,用于显示正确点胶轨迹的宽度,并将两个轮廓合并到一个变量中

gen_parallel_contour_xld (ContourRef, ModelSide1, ‘regression_normal’, TargetWidth * 0.5)
gen_parallel_contour_xld (ContourRef, ModelSide2, ‘regression_normal’, -TargetWidth * 0.5)
concat_obj (ModelSide1, ModelSide2, ModelSides)


创建两个平行轮廓,用于显示正确点胶轨迹容许范围,并将两个轮廓合并到一个变量中

gen_parallel_contour_xld (ContourRef, PositionToleranceSide1, ‘regression_normal’, PositionTolerance)
gen_parallel_contour_xld (ContourRef, PositionToleranceSide2, ‘regression_normal’, -PositionTolerance)
concat_obj (PositionToleranceSide1, PositionToleranceSide2, PositionToleranceSides)


halcon显示操作相关操作

dev_close_window ()
dev_open_window_fit_size (0, 0, PartColumn2 - PartColumn1 + 1, PartRow2 - PartRow1 + 41, -1, -1, WindowHandle)
set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)
dev_set_part (PartRow1 - 20, PartColumn1, PartRow2 + 20, PartColumn2)
dev_display (ImageAligned)
dev_set_line_width (2)
dev_set_color (‘green’)
dev_display (ContourRef) //粘合胶条的参考路径
dev_set_line_width (1)
dev_display (ModelSides) //胶条的宽度
dev_set_color (‘yellow’)
dev_display (PositionToleranceSides) //容许点胶范围


显示描述文本

Message := ‘Correct adhesive bead and the reference contour. The’
Message[1] := ‘yellow contours indicate the range of position tolerance.’
disp_message (WindowHandle, Message, ‘window’, 12, 12, ‘black’, ‘true’)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
*

开始读入图片进行检测

TextOffset := 20 //偏移值
NumImages := 7
for Index := 1 to NumImages by 1
read_image (Image, ‘bead/adhesive_bead_’ + Index$‘02’)


矫正图片

align_bead (Image, ImageAligned, ModelID, RowT, ColumnT)


使用之前生成的点胶轨迹模板,进行点胶轨迹检测
//参数说明:进行检测的图像(ImageAligned);胶轨迹左轮廓(LeftContour);胶轨迹右轮廓(RightContour);胶轨迹宽缺陷所在位置(ErrorSegment);使用的模板(BeadInspectionModel);缺陷种类(ErrorType)

apply_bead_inspection_model (ImageAligned, LeftContour, RightContour, ErrorSegment, BeadInspectionModel, ErrorType)

显示点胶轨迹,检测结果等相关信息

dev_display (ImageAligned)
dev_set_line_width (1)
dev_set_color (‘white’)
dev_display (ContourRef)
dev_display (ModelSides)
dev_display (PositionToleranceSides)
dev_set_line_width (2)
dev_set_color (‘green’)
dev_display (LeftContour) //检测出的内部XLD
dev_display (RightContour) //检测出的外部XLD
dev_set_color (‘red’)
dev_display (ErrorSegment) //错误部分区域


if (|ErrorType| == 0)
没有错误信息,显示OK
Message := ‘Adhesive bead is OK’
disp_message (WindowHandle, Message, ‘window’, 12, 12, ‘white’, ‘forest green’)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
else
有错误信息,显示not OK,并且显示缺陷种类,标识缺陷位置
Message[0] := ‘Adhesive bead is not OK:’
ErrorClasses := [‘no bead’,‘too thin’,‘too thick’,‘incorrect position’]
for ClassIndex := 0 to |ErrorClasses| - 1 by 1
Class := ErrorClasses[ClassIndex]
ErrorIndices := find(ErrorType,Class)
if (ErrorIndices != -1)
select_obj (ErrorSegment, SelectedSegments, ErrorIndices + 1)
dev_set_color (‘red’)
dev_set_line_width (3)
if (Class != ‘no bead’)
gen_display_segments (SelectedSegments, LeftContour, RightContour, ErrorParts)
dev_display (ErrorParts)
else
dev_display (SelectedSegments)
endif
area_center_points_xld (SelectedSegments, Area, Row, Column)
for E := 0 to |ErrorIndices| - 1 by 1
disp_message (WindowHandle, ErrorIndices[E] + 1, ‘image’, Row[E], Column[E] - TextOffset, ‘white’, ‘red’)
TextOffset := 20 - TextOffset
endfor
endif
endfor
disp_message (WindowHandle, Message, ‘window’, 12, 12, ‘white’, ‘red’)
disp_message (WindowHandle, [1:|ErrorType|] + ': ’ + ErrorType, ‘image’, 500, 500, ‘red’, ‘false’)
if (Index < NumImages)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
endif
endfor

释放所有模板句柄

clear_bead_inspection_model (BeadInspectionModel)
clear_deformable_model (ModelID)


图示处理思路

1、使用符合要求图像,创建模板

29c849e0-ee50-11ee-a297-92fbcf53809c.png

2、读入新图像,矫正图像(图像仿射变换)

矫正前图像:

29e4ebcc-ee50-11ee-a297-92fbcf53809c.png

矫正后图像:

2a99655c-ee50-11ee-a297-92fbcf53809c.png

3、使用创建的模板检测点胶轨迹,得到结果

2ac4a0a0-ee50-11ee-a297-92fbcf53809c.png


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    27

    文章

    1280

    浏览量

    56627
  • CAD
    CAD
    +关注

    关注

    17

    文章

    1077

    浏览量

    72342
  • 模板
    +关注

    关注

    0

    文章

    108

    浏览量

    20554

原文标题:一文学会,胶位偏移、缺胶、断胶、溢胶检测(含源码)

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求点胶机对手机指纹模块位置的量,偏移检测方法

    求NI vison检测方法 。点胶机对手机指纹模块位置的量,偏移检测方法求点胶机对手机指
    发表于 05-03 22:58

    如何解决瞬间加工时点胶机阀漏问题?

    内空气或改用不容易气泡的或先将离心脱泡后再使用。2、瞬间加工时出大小不
    发表于 09-04 09:20

    四元数数控:深圳UV过程中的现象是什么?

    UV胶水点过程中,有时候会出现的问题,对此应该如何处理呢?那么深圳UV过程中的
    发表于 12-27 14:28

    FPC压合工艺过程中的现象的产生原因

    气泡和是柔性电路板压合工艺流程中种比较普遍的品质异常现象。指的是在压合流程中,温度升高而使得COVERLAY中
    的头像 发表于 06-10 14:55 7814次阅读

    如何改进光纤涂覆机注管堵塞和和固化时间长等问题的建议说明

    部分进口设备常见三大问题:注管容易堵塞;注浪费,严重;固化时间长。直接后果就是维修困难及较长的维修时间,影响使用效率。
    发表于 08-15 08:00 2次下载
    如何改进光纤涂覆机注<b class='flag-5'>胶</b>管堵塞和<b class='flag-5'>溢</b><b class='flag-5'>胶</b>和固化时间长等问题的建议说明

    FPC柔性线路板应该怎样去解决

    FPC柔性线路板厂家应该严格物料来料检验,如果在来料抽检中,超标,则联系供应商退换货,否则在生产制程中很难控制。
    的头像 发表于 03-01 19:48 2524次阅读

    如何解决瞬间加工时点胶机阀漏的问题

    如今瞬间加工应用还是很广泛的,瞬间加工大多都是采用自动点胶机进行点,在设备使用过程中,如果使用不当就会出现各种各样的问题,那么
    发表于 07-07 10:43 4461次阅读

    关于快干加工工艺的详细介绍

    设备也叫作瞬干点胶机,而在点行业内的叫法是蠕动式点胶机,快干加工工艺属于电子产品特殊点
    发表于 07-08 15:30 3700次阅读

    我们该如何提高点代工时点的效果

    代工的点效果是与很多因素有关,例如出针头的直径大小,针头与覆产品之间的距离,还有点量的大小以及胶水的性质,点
    发表于 10-15 16:29 666次阅读

    AVENTK教你如何处理UV胶水点问题

    在UV胶水使用中,点是非常重要的操作过程之。但是最近有些朋友向AVENTK反映,表示在UV胶水点过程中,经常会出现的情况,试了几个
    的头像 发表于 03-27 11:44 1175次阅读

    芯片点GD414硅橡胶对电阻的影响讨论

    问: 各位老师请教下,板子完成三防涂覆后 部分芯片点GD414硅橡胶,般点芯片周围会有很多元件(电容电阻)般会有
    的头像 发表于 11-27 16:16 1810次阅读

    速度影响光刻的哪些性质?

    是光刻中比较重要的步,而旋涂速度是匀中至关重要的参数,那么我们在匀时,是如何确定匀速度呢?它影响光刻
    的头像 发表于 12-15 09:35 1818次阅读
    匀<b class='flag-5'>胶</b>速度影响光刻<b class='flag-5'>胶</b>的哪些性质?

    芯片加工的效果和质量的检测方法有哪些?

    芯片加工的效果和质量的检测方法有哪些?芯片在电子封装领域用的是比较多的,特别是高度精密集成芯片器件。那么如何判断点后的效果和质量的
    的头像 发表于 04-26 16:27 511次阅读
    芯片<b class='flag-5'>胶</b>点<b class='flag-5'>胶</b>加工的效果和质量的<b class='flag-5'>检测</b>方法有哪些?

    机器视觉运动控制体机在点检测上的应用

    想提升点检测精度和效率吗?【点击了解更多内容】
    的头像 发表于 05-15 10:18 409次阅读
    机器视觉运动控制<b class='flag-5'>一</b>体机在点<b class='flag-5'>胶</b><b class='flag-5'>胶</b>路<b class='flag-5'>检测</b>上的应用

    FPC电路软板点胶质量——宽测量视觉检测方案

    根据目前样品实验效果及处理结果来看,是可以对的轮廓提取及处理的,但两边的线路会有少许干扰,特别是在量少的情况下影响更大。如果有其他颜色电路软板背景,或者量更加少(薄)需要相应的
    的头像 发表于 06-10 18:28 895次阅读
    FPC电路软板点胶质量——<b class='flag-5'>缺</b><b class='flag-5'>胶</b>、<b class='flag-5'>胶</b>宽测量视觉<b class='flag-5'>检测</b>方案