工控编程吧
标题:
5.3 halcon实现电路板海棉板等检测
[打印本页]
作者:
qq263946146
时间:
2019-3-27 15:23
标题:
5.3 halcon实现电路板海棉板等检测
帖子实现在电路析上如何打到垫板的方法。
以及稳定精准的确定垫板的位置,旋转角度及尺寸。
跟前边帖子一样也是通过几何拟合的相关函数。
fit_rectangle2_contour_xld实现精准提取几何参数。
具体代码与注释如下
(, 下载次数: 0)
上传
点击文件名下载附件
dev_update_pc ('off')
dev_update_window ('off')
dev_update_var ('off')
read_image (Image, 'die_pads')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width * 2, Height * 2, 'black', WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)
*通过blob分析快速找到图片中的垫板
fast_threshold (Image, Region, 180, 255, 20)
connection (Region, ConnectedRegions)
*此函数的几何特征选择算子。ConnectedRegions, SelectedRegions分别为输入及结果输出变量。
*['area','anisometry']表示选择面积与椭圆参数特征。anisometry表示长轴与短轴比值。and表示抉择全部满足条件区域。
*[200,1], [1200,2]一一对应前面特征的低高范围。
select_shape (ConnectedRegions, SelectedRegions, ['area','anisometry'], 'and', [200,1], [1200,2])
* Construct a ROI for subpixel-accurate edge detection.
*构造一个亚像素的ROI
*将区域内的孔洞填充。
fill_up (SelectedRegions, RegionFillUp)
*将区域RegionFillUp,进行凸性转换输出RegionTrans
shape_trans (RegionFillUp, RegionTrans, 'convex')
*使用形态学提取图像中边界,'inner'表示提取的是内边界
boundary (RegionTrans, RegionBorder, 'inner')
dilation_circle (RegionBorder, RegionDilation, 2.5)
union1 (RegionDilation, RegionUnion)
*执行亚像素精度的边缘检测
reduce_domain (Image, RegionUnion, ImageReduced)
edges_sub_pix (ImageReduced, Edges, 'sobel_fast', 0.5, 20, 40)
*选择属于垫板的边缘段
select_shape_xld (Edges, SelectedContours, 'contlength', 'and', 10, 200)
* Merge adjacent edge fragments to obtain one contour per pad.
*合并邻近轮廓的亚像素,将端点很近的轮廓连接起来。SelectedContours, UnionContours分别为输入与输出轮廓。
*2表示两轮廓的绝对距离, 1两轮廓相对距离比值阈值, 'attr_keep'表示表示各轮廓 属性值 是否被忽略。
*其实就是临近两个轮廓的端点距离即没有超过2,也没有超过两较长轮廓的长度乘以1,则此两个邻近轮廓相连。
union_adjacent_contours_xld (SelectedContours, UnionContours, 2, 1, 'attr_keep')
*根据垫板边缘进行矩形拟合
*UnionContours为输入轮廓,'tukey'为拟合算法名称。-1表示拟合 采用的最多轮廓点,-1表示所有点都参与拟合。
*0被认为是封闭轮廓首尾点的最大距离。
*0表示轮廓开始结束点参与拟合的个数。3表示迭代次数,2表示离群剪切因子,越小离群值越多。随后的为输出参数。
fit_rectangle2_contour_xld (UnionContours, 'tukey', -1, 0, 0, 3, 2, Row, Column, Phi, Length1, Length2, PointOrder)
*根据拟合的矩形参数生成一个矩形用于显示。
gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2)
dev_display (Image)
dev_set_colored (12)
dev_display (Rectangle)
复制代码
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4