十八.halcon基础之Blob Analysis(二)

本文介绍了一种基于图像处理技术的焊点检测方法。通过阈值分割、形态学操作及特征选择等步骤,实现了对电路板上焊点的有效检测与质量评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.相关算子:

1.threshold(Image : Region : MinGray, MaxGray : )

分割图像,输出灰度值在设定的最小最大灰度之间的区域。

2.shape_trans(Region : RegionTrans : Type : )

Type转化区域形状为RegionTrans

'convex':加凸壳。

'ellipse':和输入区域具有相同的长短测度的椭圆。

Ellipse with the same moments and area as the input region.

'outer_circle':包含区域的最小圆形。

'inner_circle':被区域包含的最大圆。

'rectangle1':最小包含矩形,平行于坐标轴。

'rectangle2':包含区域的最小矩形。

'inner_rectangle1': 适合区域大小的和区域最大长度方向一致的内矩形。

'inner_center':抽取内部骨架点,到区域中心距离最小。

3.fill_up_shape(Region : RegionFillUp : Feature, Min, Max : )

填充具有某种形状特征的区域,并输出填充区域。形状特征包括:'area', 'compactness', 'convexity', 'anisometry', 'phi', 'ra', 'rb', 'inner_circle', 'outer_circle'

4.select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )

依据形状特点,及该特点的最大最小值选择区域。详见Help文件。

List of values: 'area', 'row', 'column', 'width', 'height', 'row1', 'column1', 'row2', 'column2', 'circularity', 'compactness', 'contlength', 'convexity', 'rectangularity', 'ra', 'rb', 'phi', 'anisometry', 'bulkiness', 'struct_factor', 'outer_radius', 'inner_radius', 'inner_width', 'inner_height', 'max_diameter', 'dist_mean', 'dist_deviation', 'roundness', 'num_sides', 'orientation', 'connect_num', 'holes_num', 'area_holes', 'euler_number', 'rect2_phi', 'rect2_len1', 'rect2_len2', 'moments_m11', 'moments_m20', 'moments_m02', 'moments_ia', 'moments_ib', 'moments_m11_invar', 'moments_m20_invar', 'moments_m02_invar', 'moments_phi1', 'moments_phi2', 'moments_m21', 'moments_m12', 'moments_m03', 'moments_m30', 'moments_m21_invar', 'moments_m12_invar', 'moments_m03_invar', 'moments_m30_invar', 'moments_i1', 'moments_i2', 'moments_i3', 'moments_i4', 'moments_psi1', 'moments_psi2', 'moments_psi3', 'moments_psi4'

5.sort_region(Regions : SortedRegions : SortMode, Order, RowOrCol : )

依据相对位置关系储存区域。

6.dev_set_colored( : : NumColors : )

显示多种输出颜色。

7.smallest_circle(Regions : : : Row, Column, Radius)

包含区域的最小圆。算法:该圆以区域中心为圆心,0.5步长递进。

 

* ball.hdev: Inspection of Ball Bonding

//检测电路板上的焊点//

dev_update_window ('off')

dev_close_window ()

dev_open_window (0, 0, 728, 512, 'black', WindowID)

read_image (Bond, 'die/die_03')

dev_display (Bond)

set_display_font (WindowID, 14, 'mono', 'true', 'false')

disp_continue_message (WindowID, 'black', 'true')

stop ()

threshold (Bond, Bright, 100, 255)//输出灰度值在100255之间的区域//

shape_trans (Bright, Die, 'rectangle2') //输出Die区域,恰包含所有BRIGHT区域//

dev_set_color ('green')

dev_set_line_width (3)

dev_set_draw ('margin')

dev_display (Die)

disp_continue_message (WindowID, 'black', 'true')

stop ()

reduce_domain (Bond, Die, DieGrey) //图像定义域减小成DieGrey//

threshold (DieGrey, Wires, 0, 50)

fill_up_shape (Wires, WiresFilled, 'area', 1, 100) //填充并显示满足要求的区域,这个很重要,是下一步形态学运算的基础//

dev_display (Bond)

dev_set_draw ('fill')

dev_set_color ('red')

dev_display (WiresFilled)

disp_continue_message (WindowID, 'black', 'true')

stop ()

opening_circle (WiresFilled, Balls, 15.5) //对区域进行开运算//

dev_set_color ('green')

dev_display (Balls)

disp_continue_message (WindowID, 'black', 'true')

stop ()

connection (Balls, SingleBalls)

select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0) //选择出焊点//

sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column') //依列优先储存区域//

dev_display (Bond)

dev_set_colored (12)

dev_display (FinalBalls)

disp_continue_message (WindowID, 'black', 'true')

stop ()

smallest_circle (FinalBalls, Row, Column, Radius) //求这些焊点的外包最小圆//

NumBalls := |Radius|

Diameter := 2*Radius

meanDiameter := sum(Diameter)/NumBalls

mimDiameter := min(Diameter)

dev_display (Bond)                      

disp_circle (WindowID, Row, Column, Radius) //画出这些最小圆形//

dev_set_color ('white')

for i := 1 to NumBalls by 1          //控制显示焊点的直径值的位置//

    if (fmod(i,2)=1)              //判断条件为余数是否为1// 

        disp_message (WindowID, 'D: '+Diameter[i-1], 'image', Row[i-1]-2.7*Radius[i-1], max([Column[i-1]-60,0]), 'white', 'false')

    else

        disp_message (WindowID, 'D: '+Diameter[i-1], 'image', Row[i-1]+1.2*Radius[i-1], max([Column[i-1]-60,0]), 'white', 'false')

    endif

endfor

* dump_window (WindowID, 'tiff_rgb', './ball')

dev_set_color ('green')

dev_update_window ('on')

disp_continue_message (WindowID, 'black', 'true')

stop ()

dev_close_window ()

结果:十八.halcon基础之Blob <wbr>Analysis(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值