当前位置: 首页 > news >正文

Halcon例程代码解读:安全环检测(附源码|图像下载链接)

安全环检测核心思路与代码详解

项目目标

本项目的目标是检测图像中的安全环位置和方向。通过形状匹配技术,从一张模型图像中提取安全环的特征,并在后续图像中识别多个实例,完成检测和方向标定。


实现思路

安全环检测分为以下核心步骤:

  1. 模型图像加载与处理: 读取包含安全环的模型图像,并定义感兴趣区域 (ROI),以减少背景干扰。
  2. 形状模型创建: 基于感兴趣区域提取特征,训练通用形状模型(Generic Shape Model)。
  3. 目标匹配检测: 在待检测图像中搜索安全环,输出位置、方向和检测结果。
  4. 结果可视化: 通过绘制轮廓和方向箭头,直观展示安全环的位置和方向信息。

代码讲解

以下是完整代码的逐步解析,重点放在每个步骤的核心功能和逻辑。


1. 初始化

* 关闭窗口更新以优化性能
dev_update_window ('off')* 加载模型图像
read_image (ModelImage, 'image/rings_01')* 获取图像尺寸
get_image_size (ModelImage, Width, Height)* 打开窗口并设置显示区域
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'white', WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)* 显示模型图像
dev_display (ModelImage)
  • 核心功能:
    • 关闭窗口更新 (dev_update_window ('off')) 以提高运行性能。
    • 读取模型图像并获取图像尺寸,为后续显示做准备。
    • 打开一个适配图像尺寸的显示窗口。

2. 定义感兴趣区域 (ROI)

* 设置安全环的ROI
Row := 251
Column := 196
Radius := 103* 创建圆形区域作为ROI
gen_circle (ModelROI, Row, Column, Radius)* 显示ROI
dev_display (ModelROI)
  • 核心功能:
    • 使用 gen_circle 函数定义圆形区域,圈定包含安全环的区域。
    • 通过 ROI 减少背景干扰,确保模型训练的准确性。

3. 检查并创建形状模型

检查模型区域
* 裁剪图像,仅保留ROI部分
reduce_domain (ModelImage, ModelROI, ImageROI)* 检查ROI的形状特征
inspect_shape_model (ImageROI, ShapeModelImage, ShapeModelRegion, 1, 30)* 显示检查结果
dev_clear_window ()
dev_display (ShapeModelRegion)
  • 核心功能:
    • 使用 reduce_domain 裁剪图像,只保留 ROI。
    • 调用 inspect_shape_model 检查模型区域的形状特征,确保模型质量。
创建形状模型

在这里插入图片描述

* 创建并训练通用形状模型
create_generic_shape_model (ModelID)
set_generic_shape_model_param (ModelID, 'metric', 'ignore_global_polarity')
train_generic_shape_model (ImageROI, ModelID)* 提取模型轮廓
get_generic_shape_model_object (ShapeModel, ModelID, 'contours')

在这里插入图片描述

  • 核心功能:
    • 调用 create_generic_shape_model 创建模型,随后通过 train_generic_shape_model 基于 ROI 图像训练模型。
    • 设置模型参数 ignore_global_polarity,忽略极性变化,增强鲁棒性。

4. 目标匹配与检测

* 设置形状匹配参数
set_generic_shape_model_param (ModelID, 'max_overlap', 0.55)
set_generic_shape_model_param (ModelID, 'min_score', 0.4)* 遍历待检测图像
for i := 1 to 7 by 1read_image (SearchImage, 'image/rings_' + (i + 1)$'02')dev_display (SearchImage)* 进行形状匹配find_generic_shape_model (SearchImage, ModelID, MatchResultID, NumMatchResult)* 如果检测到物体if (NumMatchResult > 0)set_tposition (WindowHandle, 20, 24)write_string (WindowHandle, '检测到目标数量:'+NumMatchResult)* 遍历所有检测结果for j := 0 to NumMatchResult - 1 by 1* 获取目标轮廓get_generic_shape_model_result_object (Objects, MatchResultID, j, 'contours')dev_set_color ('cyan')dev_display (Objects)* 获取位置和方向信息get_generic_shape_model_result (MatchResultID, j, 'row', Row)get_generic_shape_model_result (MatchResultID, j, 'column', Column)get_generic_shape_model_result (MatchResultID, j, 'hom_mat_2d', HomMat2D)* 计算方向箭头终点affine_trans_pixel (HomMat2D, -120, 0, RowArrowHead, ColumnArrowHead)dev_set_color ('blue')disp_arrow (WindowHandle, Row, Column, RowArrowHead, ColumnArrowHead, 2)endforelse* 未检测到目标set_tposition (WindowHandle, 20, 20)write_string (WindowHandle, '未检测到物体!')endif
endfor
  • 核心功能:
    1. 目标匹配:
      • 使用 find_generic_shape_model 在每张图像中搜索目标。
      • 匹配结果包括目标数量、位置(行、列坐标)和方向(仿射矩阵)。
    2. 显示检测结果:
      • 高亮显示目标轮廓,并绘制箭头标注方向。
      • 若检测不到目标,则显示“未检测到物体”的提示。
        -在这里插入图片描述
        在这里插入图片描述

在这里插入图片描述


5. 清理资源与结束程序

* 恢复窗口更新
dev_update_window ('on')* 清理形状模型
clear_shape_model (ModelID)
  • 核心功能:
    • 恢复窗口更新。
    • 释放形状模型资源,避免内存占用。

项目核心思路总结

  1. 模型训练:
    使用感兴趣区域提取安全环的形状特征,生成通用形状模型。

  2. 多图像匹配:
    遍历多张待检测图像,利用形状模型进行目标匹配,输出目标位置和方向信息。

  3. 结果可视化:
    通过高亮轮廓和绘制箭头,直观展示安全环的位置与方向。


适用场景

该项目适用于以下应用场景:

  • 工业生产中的零件检测: 如汽车轮毂、机械零件中的环状目标检测。
  • 视觉质量控制: 检测物体位置和方向是否符合预期。

代码与资源

通过网盘分享的文件:安全环
链接: https://pan.baidu.com/s/1gAHHtwL53Sow00jUHD_Z2g?pwd=jkcf 提取码: jkcf
http://www.lryc.cn/news/508745.html

相关文章:

  • Selenium 全面指南
  • #error: WinSock.h has already been included解决方案
  • 2.Couchbase 的增量查询优化
  • 汽车IVI中控开发入门及进阶(46):FFmpeg
  • Spring Boot 中的 @Scheduled 定时任务以及开关控制
  • 服务器证书原理
  • 重温设计模式--代理、中介者、适配器模式的异同
  • 2024第十六届蓝桥杯模拟赛(第二期)-Python
  • 分布式系统中的防抖策略一致性与性能优化
  • 项目代码第6讲:UpdownController.cs;理解 工艺/工序 流程、机台信息;前端的“历史 警报/工艺 记录”
  • 【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解
  • 大模型应用技术系列(一):大模型应用整体技术栈浅析
  • 绿色环保木塑复合材料自动化生产线设计书
  • Sourcegraph 概述
  • c 保存 csv格式的文件
  • C语言扫雷游戏教学(有图形界面)(提供源码+实验报告)(计时+排行榜+难度选择+登录注册+背景音乐)(涉及easyX库)
  • 第五节:GLM-4v-9b模型model加载源码解读(模型相关参数方法解读)
  • 面试经验分享 | 北京渗透测试岗位
  • unity Toggle制作滑动开关
  • 全面解析 Kubernetes 流量负载均衡:iptables 与 IPVS 模式
  • 【unity】【游戏开发】Unity项目一运行就蓝屏报Watch Dog Timeout
  • 【macos java反编译工具Java Decompiler】
  • 宠物用品电子商务系统|Java|SSM|VUE| 前后端分离
  • 脑肿瘤检测数据集,对9900张原始图片进行YOLO,COCO,VOC格式的标注
  • Adversarial Machine Learning(对抗机器学习)
  • 每日十题八股-2024年12月23日
  • Android Studio新建项目在源码中编译
  • ubuntu使用ffmpeg+ZLMediaKit搭建rtsp推流环境
  • vue中的css深度选择器v-deep 配合!important
  • Python读写JSON文件