涂胶检测,点胶检测。halcon微积分原理生成卡尺,异形产品宽度测量

文章介绍了一种利用Halcon的图像处理功能,通过自定义算法来应对异形产品测量的挑战。通过读取图像、形态学操作、骨架提取等步骤,动态生成测量卡尺,运用微积分原理进行实时测量,解决了预定义测量位置不适用的问题。

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

1.普通测量项目中,我们可以利用halcon的测量模型,例如add_metrology_object_line_measure。很方便的测量直线,圆,椭圆,矩形等。这些工具都有一个缺点是,需要提前绘制测量位置,然后利用仿射变换跟随,或者在项目中动态的生成测量位置。但是对于异形产品测量时,这些办法就不适应了,如下图形状,就需要根据微积分原理,实时的生成卡尺进行测量。
在这里插入图片描述

2.实现代码

dev_close_window ()
dev_open_window (0, 0, 512, 512, ‘black’, WindowHandle)
read_image (Image, ‘glue.bmp’)
decompose3 (Image, R, G, B)
mean_image (R, ImageMean, 255, 255)
dyn_threshold (R, ImageMean, RegionDynThresh, 25, ‘light’)
opening_circle (RegionDynThresh, RegionOpening, 15)
connection (RegionOpening, ConnectedRegions)
select_shape_std (ConnectedRegions, SelectedRegions, ‘max_area’, 70)
skeleton (SelectedRegions, Skeleton)
get_region_points (Skeleton, Rows, Columns)
gen_cross_contour_xld (Cross, Rows, Columns, 6, 0.785398)
tuple_sort_index (Columns, Indices)
dev_display ®
dev_display (Cross)
get_image_size (ImageMean, Width, Height)
gen_empty_obj (Edge_MeasureOut)
gen_empty_obj (Rectangle_MeasureOut)
*测量距离数组
DisRet:=[]
*积分间距
RecDis:=50
for Index := 0 to |Rows|-RecDis-1 by RecDis
*生成测量卡尺,隔50个像素,计算一小段区域角度
angle_lx (Rows[Indices[Index]], Columns[Indices[Index]], Rows[Indices[Index+RecDis]], Columns[Indices[Index+RecDis]], Angle)
*把每一个卡尺轮廓画出来
gen_rectangle2_contour_xld (Rectangle, (Rows[Indices[Index]]+Rows[Indices[Index+RecDis]])/2, (Columns[Indices[Index]]+Columns[Indices[Index+RecDis]])/2, Angle-rad(90), 150, RecDis/2)
concat_obj (Rectangle_MeasureOut, Rectangle, Rectangle_MeasureOut)
*生成垂直待测区域卡尺
gen_measure_rectangle2 ((Rows[Indices[Index]]+Rows[Indices[Index+RecDis]])/2, (Columns[Indices[Index]]+Columns[Indices[Index+RecDis]])/2, Angle-rad(90), 150, RecDis/2, Width, Height, ‘nearest_neighbor’, MeasureHandle)
* 设置测量参数,并测量
Sigma := 1.1
Threshold := 20
Transition := ‘all’
Select := ‘first’
measure_pairs (R, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
DisRet:=[DisRet,IntraDistance]
*获取测量上边缘
Get_MeasureEdge (Edge_MeasureOut, Marker, Edge_MeasureOut, RowEdgeFirst, ColumnEdgeFirst, RecDis/2, Angle-rad(90))
*获取测量下边缘
Get_MeasureEdge (Edge_MeasureOut, Marker, Edge_MeasureOut, RowEdgeSecond, ColumnEdgeSecond, RecDis/2, Angle-rad(90))

endfor
dev_display ®
dev_set_color (‘green’)
dev_display (Rectangle_MeasureOut)
dev_set_color (‘red’)
dev_display (Edge_MeasureOut)
在这里插入图片描述

### 使用 Halcon 实现检测 #### 检测概述 在工业自动化领域,确保过程的质量至关重要。通过图像处理技术可以有效监控并评估水路径的准确性、连续性和均匀度。Halcon 提供了一系列强大的工具来支持这类应用。 #### 测量模型的选择与构建 对于常规几何形状的产品,可以直接采用预设好的测量对象如 `add_metrology_object_line_measure` 来完成基本轮廓尺寸的获取[^2]。然而,在面对复杂结构或是不规则外形的情况下,则需借助更灵活的方式来进行精确分析: - **基于微积分原理生成卡尺**:针对异型产品的特殊需求,可以通过编程手段自动生成适应特定曲线特征的虚拟卡尺,从而实现实时在线监测功能。 ```cpp // 创建一个新的metrology ID用于存储创建的对象 gen_empty_obj(MetrologyHandle) // 添加线性测量条目至该ID下 add_metrology_object_line_measure (MetrologyHandle, RowBegin, ColumnBegin, RowEnd, ColumnEnd, Width, Height, Sigma, MinContrast, MaxAngle, MeasureHandle) ``` #### 图像采集与预处理 为了提高后续算法执行效率以及结果可靠性,通常还需要对原始输入数据做适当调整优化: - 对文件夹内所有符合条件的图片资源进行遍历读取操作; - 进行必要的灰度化转换、滤波降噪等前处理步骤以增强目标区域对比度[^3]。 ```cpp dev_set_draw ('margin') dev_set_line_width (3) dev_set_color ('green') set_system('filename_encoding', 'utf8') // 支持中文路径名解析 list_files ('./images/', ['files','follow_links'], ImageFiles) // 获取指定目录下的所有合法格式图像列表 tuple_regexp_select(ImageFiles,['\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ValidImages) read_image (Image, ValidImages[0]) // 加载首张测试样本作为模板参考 reduce_domain (Image, Region, ReducedImage) ``` #### 缺陷识别逻辑设计 当涉及到具体缺陷类型的判断时(比如是否存在断现象),可依据实际应用场景制定相应的判定准则: - 计算感兴趣区域内像素强度分布统计特性; - 利用形态学运算去除噪声干扰成分; - 结合先验知识设定合理的阈值范围区分正常状态与异常情况; 一旦发现不符合标准的情形即触发报警机制通知相关人员及时介入处理[^1]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值