HALCON软件——基本架构,算子参数

一、知识框架

共分为四个模块:走进 HALCON、HDevelop 组件介绍、图像采集、数据结构。本文讲解前两个模块,包含软件认知、开发界面、算子规则、入门实操流程与调试工具。


二、第一部分 走进 HALCON

1.HALCON 基本定位

HALCON 是德国 MVTec 公司开发的工业级机器视觉算法库,是全球机器视觉领域的标准软件之一,采用开放式架构,支持开发者快速搭建图像处理与机器视觉应用。

HDevelop 是 HALCON 自带的交互式集成开发环境,是新手入门、算法原型开发的核心工具:

  • 拥有交互式图形界面,可实时编译、测试视觉算法,直观查看每一步处理结果
  • 支持将调试完成的算法导出为多语言代码
  • 适用于算法开发、技术研究、教学演示等场景

2.主要应用领域

HALCON 广泛应用于各类工业与行业场景:

  • 农业与食品:果品分拣、缺陷检测
  • 汽车与机器人:工件定位、机器人引导
  • 物流与包装:条码识别、包裹分拣
  • 电子与半导体:芯片检测、引脚测量

3.HALCON 软件架构(分层结构)

从上到下分为四层,逻辑清晰、扩展性强:

  1. 应用层:基于 HALCON 开发的各类视觉应用程序

  2. 开发接口层:支持多种开发语言调用

    • HDevelop(自带开发环境)、Python、C、C++、C#、VB.NET
    • 对应不同的语言绑定引擎,如 HDevEngine、HALCON/.NET 等
  3. 核心算法层:HALCON 图像处理核心库,包含所有视觉算子,支持扩展包拓展功能

  4. 硬件接口层:对接底层硬件

    • 图像采集接口:支持 GigE Vision、USB3 Vision、GenICam TL 等主流相机协议
    • I/O 接口:支持 OPC UA 等工业通信协议
  5. 硬件层:相机、3D 相机、采集卡、I/O 设备等实体硬件

4.最佳学习方法:官方例程

HALCON 内置了覆盖全功能的官方例程库,是学习算子用法、项目流程最权威的资料:

  • 入口:软件启动页「浏览例程」,或菜单栏中打开

  • 例程分类方式:

    • 按应用范围:表面检测、定位识别、机器人视觉、3D 视觉、OCR 等
    • 按工业领域:半导体、汽车制造、食品医药、物流等
    • 按算法类型:Blob 分析、边缘提取、滤波、形态学、模板匹配等
  • 每个例程均为可直接运行的完整代码,附带效果演示,适合边跑边学。


三、第二部分 HDevelop 组件介绍

1.HDevelop 核心能力

HDevelop 定位是快速原型化工具,核心擅长完成以下工作:

  • 直接连接采集卡和工业相机,实时采集图像
  • 从相机、本地文件中加载图像,检查图像数据
  • 验证视觉方案的可行性,开发完整的视觉检测流程
  • 快速测试不同算子、不同参数的处理效果
  • 保存工程文件,支持导出 C++、C#、C、VB.NET等语言的算法代码

2.HDevelop 界面组成

界面由五大核心区域组成,各司其职:

窗口名称 核心功能
图像窗口 显示原图、处理后的区域、轮廓等所有可视化结果
程序窗口 编写、编辑、调试代码,支持单步执行、断点调试
变量查看窗口 分为图像变量、控制变量两栏,查看所有中间变量的结果与数值
算子窗口 可视化编辑算子参数,无需手动拼写代码,降低入门门槛
菜单栏 / 工具栏 提供文件操作、程序执行、可视化设置、帮助文档等功能入口

3.算子(Operator)核心规则

算子是 HALCON 的基础功能单元,有严格统一的语法规则,是入门必须掌握的核心逻辑。

(1)核心原则
  • 输入、输出参数严格分离
  • 算子不会修改原始输入数据,所有处理结果都会输出到新的变量中,原始数据始终保留
(2)两类参数
参数类型 英文名称 包含内容
图标参数 Iconic 图像(image)、区域(region)、轮廓(XLD),是视觉处理的对象
控制参数 Control 整数、实数、字符串、句柄,是算法的配置参数
(3)固定参数顺序

所有算子都遵循统一的参数顺序,通用语法格式:

复制代码
算子名(输入图标 : 输出图标 : 输入控制 : 输出控制)

顺序永远为:输入图标 → 输出图标 → 输入控制 → 输出控制

示例:threshold(Image : Region : MinGray, MaxGray : )

  • 输入图标:Image(待处理的原图)
  • 输出图标:Region(分割得到的区域)
  • 输入控制:MinGray, MaxGray(灰度上下限)
  • 无输出控制参数

4.入门核心算子(完整处理流程)

以下算子构成了最基础的 Blob 分析流程,是视觉入门的必学内容:

(1)read_image ------ 读取图像
  • 功能:加载多种格式的图像文件

  • 语法:read_image( : Image : FileName : )

  • 路径规则:只写文件名(如'claudia')时,代表图片与程序在同一文件夹;也可填写绝对路径。

  • 补充:HALCON 安装目录的examples/images文件夹中自带大量官方示例图片,可直接调用。

(2)rgb1_to_gray ------ 彩色转灰度
  • 功能:将 RGB 彩色图像转换为灰度图像,是绝大多数灰度处理的前置步骤
  • 语法:rgb1_to_gray(RGBImage : GrayImage : : )
(3)threshold ------ 全局阈值分割
  • 功能:按照灰度区间提取像素,生成区域,是最基础的图像分割方法
  • 语法:threshold(Image : Region : MinGray, MaxGray : )
  • 效果:提取灰度值在[MinGray, MaxGray]范围内的所有像素,组成一个区域对象
(4)connection ------ 连通域分析
  • 功能:将一个整体区域,拆分成多个互相独立、互不连通的子区域
  • 语法:connection(Region : ConnectedRegions : : )
  • 作用:阈值分割得到的所有符合条件的像素默认是一个整体;经过连通域拆分后,每个独立目标会成为单独的区域,方便后续计数、筛选、测量。
(5)select_shape ------ 按形状特征筛选区域
  • 功能:根据区域的形状特征,筛选出符合条件的区域
  • 语法:select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
  • 常用特征:area(面积)、circularity(圆形度)、width/height(宽高)等
  • Operationand表示同时满足多个特征条件,or表示满足其一即可

5.可视化调试工具

HDevelop 提供了直方图工具,可直观调试参数,自动生成代码,大幅提升入门效率。

(1)灰度直方图
  • 作用:直观展示图像的灰度值分布,辅助确定阈值分割的最优参数
  • 使用流程:
    1. 选中灰度图像后打开灰度直方图
    2. 拖动左右两条竖线,分别对应MinGrayMaxGray,图像窗口同步预览分割效果
    3. 点击「插入代码」,自动生成带对应参数的threshold算子,无需手动填写数值
  • 附加功能:支持平滑直方图、调整量子化、查看像素占比统计信息
(2)特征直方图
  • 作用:展示所有连通区域的特征分布(如面积分布),辅助确定形状筛选的范围

  • 使用流程:

    1. 选中连通区域后打开特征直方图,选择目标特征(如面积area
    2. 拖动边界线筛选特征区间,图像同步高亮符合条件的区域
    3. 点击「插入代码」,自动生成带对应参数的select_shape算子
  • 支持几十种形状特征,是快速调参、筛选目标的核心工具。

  • 如何查看图像的特征:

    第一步:

    第二步:

6.HDevelop 编程的优缺点

维度 说明
优点 完整支持所有 HALCON 算子;数据可视化直观,调试便捷;参数编辑方便;便于技术交流(直接发送 hdev 文件即可复现);适合无编程经验的新手入门
缺点 无法直接生成带交互界面的商用应用程序,不能独立完成完整软件交付

7.工业界推荐开发流程

标准工业视觉项目采用「原型开发 + 集成部署」的模式,兼顾开发效率与落地能力:

  1. 算法开发:在 HDevelop 中完成视觉检测算法的编写、调试、参数优化,验证方案可行性

  2. 界面集成:将调试好的算法导出为 C++/C# 代码,导入 Visual Studio 等开发环境,开发用户界面与业务逻辑

  3. 编译部署:编译生成可执行程序,部署到现场设备运行,底层调用 HALCON 算法库


附:入门完整流程示例代码

复制代码
* 1. 读取彩色图像
read_image (Image, 'claudia')

* 2. 彩色转灰度
rgb1_to_gray (Image, GrayImage)

* 3. 阈值分割,提取暗部区域
threshold (GrayImage, Regions1, 0, 70)

* 4. 连通域拆分,得到独立区域
connection (Regions1, Connection)

* 5. 按面积筛选,保留指定大小的区域
select_shape (Connection, SelectedRegions1, 'area', 'and', 45656.6, 46614.2)
相关推荐
爱吃苹果的日记本3 小时前
数据结构第三课(时间复杂度)
数据结构·学习
泡泡鱼(敲代码中)6 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
fanged7 小时前
Agent的Skills(TODO)
学习
是隼人7 小时前
buuctf-pwn picoctf_2018_shellcode(ret2shellcode)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
m4Rk_7 小时前
【论文阅读】Agent 记忆机制(69):STITCH——用上下文意图解决“语义相关但情境错误”的记忆检索
论文阅读·人工智能·学习·开源·github
2601_949950637 小时前
个人在线刷题的工具
学习·考研·小程序·刷题·小程序推荐
一尘之中8 小时前
深入解析面向服务的架构(SOA):从特性到实施
学习·架构·ai写作
差不多的周周8 小时前
《HuMoCon:人类运动理解的概念发现》论文核心部分详解
人工智能·深度学习·计算机视觉·自然语言处理
秦哈哈9 小时前
【Hello Agents】学习笔记(二)
笔记·学习·microsoft