Halcon图像处理实战:3种几何图形生成算子(gen_circle/rectangle1/rectangle2)详解与避坑指南

halcon处理简单小例子和C# 找出图片有几个点,合适大小的点read_image (SsSingle10, 'C:/ss_single_10.tiff')gen_rectangle1 (ROI_1, 137.948, 99.8922, 1300.91, 1568.13)//画区域reduce_domain (SsSingle10, ROI_1, ImageReduced)//删除不必要的区域threshold(ImageRed... 阅读详情

Halcon几何图形生成算子实战:从基础到工业级ROI构建的深度解析

在机器视觉的工业应用里,区域(Region)是进行图像分析、特征提取和目标检测的基石。而定义这些区域,尤其是感兴趣区域(ROI),往往是项目落地的第一步。对于Halcon使用者而言,gen_circle、gen_rectangle1和gen_rectangle2这三个算子,就像是视觉工程师手中的“画笔”,看似简单,却直接决定了后续图像处理流程的效率和精度。很多初学者在初次接触时,常因参数理解偏差或边界条件考虑不周,导致生成的区域超出图像范围、角度计算混乱,进而引发一连串的算子报错,让项目在起步阶段就陷入调试泥潭。

本文将从真实的工业视觉场景出发,抛开手册式的简单罗列,深入探讨这三个核心图形生成算子的“实战心法”。我们将重点剖析参数设置背后的几何意义,分享那些在调试中容易踩坑的细节,并最终通过一个模拟的PCB板元件检测案例,演示如何灵活组合这些基础算子,构建出适应复杂场景的ROI。无论你是刚刚踏入Halcon世界的初学者,还是希望优化现有流程的工程师,这里的内容都将为你提供直接可用的经验和思路。

1. 深入理解:三个算子的几何本质与参数陷阱

在Halcon中,图像坐标系的原点(0,0)位于左上角,X轴(Column)向右递增,Y轴(Row)向下递增。理解这一点是正确使用所有图形生成算子的前提。三个算子生成的都不是简单的“画线”,而是具有明确像素归属的区域对象(Region),可以直接用于reduce_domain、union2、difference等区域操作。

1.1 gen_circle:圆的精确与边界之困

gen_circle的语法非常直观:gen_circle(Circle : Row, Column, Radius :)。它根据圆心坐标(Row, Column)和半径Radius生成一个圆形区域。

核心要点与常见坑点:

  • 半径的“像素”本质:半径值必须是非负整数。它定义了从圆心到圆周的像素距离。这里有一个关键细节:Halcon生成的圆区域,其边界像素的取舍遵循特定的算法(通常是某种圆光栅化算法),这意味着理论上完美圆形在像素网格上的近似。当半径很小时(例如Radius=1),生成的区域可能只是一个3x3的像素块,而非你想象中的“小圆”。

  • 边界溢出——最常见的错误:如果(Row ± Radius)或(Column ± Radius)超出了当前图像或窗口的边界,算子并不会报错,但生成的区域会被自动裁剪到有效范围内。这看似“智能”,实则隐患巨大。例如,你期望一个完整的圆来做模板匹配,但因为圆心太靠边,实际得到的是一个缺了一角的扇形区域,这会导致后续的特征计算完全错误。

    * 示例:圆心在(50,50),半径为60,但图像尺寸只有100x100。
    * 生成的圆区域在图像边缘会被裁剪。
    gen_circle (Circle, 50, 50, 60)
    * 在显示或使用前,最好用`get_region_points`检查一下区域范围。
    
  • 浮点数输入的陷阱:虽然参数类型接受浮点数,但Halcon内部会将其转换为最接近的整数。gen_circle(Circle, 100.3, 200.7, 33.8) 实际等价于 gen_circle(Circle, 100, 201, 34)。在需要亚像素级精度的定位后生成ROI时,必须注意这个取整操作可能带来的累积误差。

提示:在动态确定圆心和半径(例如来自模板匹配结果)时,务必添加边界检查逻辑。可以使用get_image_size获取图像尺寸,然后判断Row-Radius是否大于0,Row+Radius是否小于图像高度减1,对Column同理。

1.2 gen_rectangle1:轴对齐矩形的快速定义

gen_rectangle1(Rectangle : Row1, Column1, Row2, Column2 :)用于生成其边平行于图像坐标轴的矩形。参数(Row1, Column1)和

Halcon 第四章『图像特征与提取』◆第1节:基于区域形状特征 第一节:区域形状特征及相关算子 定义是描述图像中局部区域的几何属性,如面积、中心等。 区域的面积和中心点 计算区域的面积和中心点坐标 area_center(Regions : : : Area, Row, Column) Regions:输入的区域。 Area:输出元组,为每个独立区域的面积。 Row:输出元组,为每个独立区域中心点的行Y坐标。 Column:输出元组,为每个独立区域中心点的列X坐标。 ... 阅读详情

相关推荐

Halcon 中rectangle1 和 rectangle2 区别

生成一个平行于坐标轴的矩形,它可以生成一个或多个矩形Rectangle是输出对象,即生成的矩形区域Row1是输入变量,即左上角点的行表示Column1是输入变量,即左上角点的列表示Row2是输入变量,即右下角点的行表示Column2是输入变量,即右下角点的列表示创建一个任意方向的矩形​ROI:输出的矩形区域;​Row , ​Column:矩形中心坐标点;​Angle:与水平面的夹角;​Length1 , Length2:矩形区域长和髙的一半。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1279

halcon算子翻译——gen_circle算子、gen_rectangle1算子和gen_rectangle2算子

gen_circle算子、gen_rectangle1算子和gen_rectangle2算子

haier123888的博客 4665

《图像处理与计算机视觉》全套课件PDF(武汉工程大学)

获取 《图像处理与计算机视觉》全套课件PDF(武汉工程大学)::https://download.youkuaiyun.com/download/m0_54748666/93260852。《图像处理与计算机视觉》全套课件PDF(武汉工程大学)第二讲-图像及其表达与性质.pdf。第五讲-图像形态学变换.pdf。第四讲-图像数据压缩.pdf。第三讲-图像预处理.pdf。第六讲-图像分割.pdf。第七讲-目标识别.pdf。第一讲-导论.pdf。

m0_54748666的博客 153

halcon编程各种实现ROI的方法,交互ROI图形..rar

halcon编程各种实现ROI的方法,交互ROI图形.

Halcon常用颜色21种及Halcon编程的语句颜色区分

Halcon常用颜色21种及Halcon编程的语句颜色区分。

逆向Shopee签名机制:从参数分析到稳定采集方案

本文深入解析了Shopee签名机制的逆向过程,从参数分析到稳定采集方案的实现。通过抓包定位关键参数`sap-ri`和`x-sap-sec`,还原了签名生成算法,并提供了Python实现代码。文章还分享了反反爬策略、性能优化技巧及长期维护建议,帮助开发者构建稳定的Shopee数据采集方案。

weixin_27722377的博客 678

5G协议栈逆向工程:基于开源模拟器的核心网信令分析实战

本文详细介绍了基于开源模拟器Free5GC和UERANSIM的5G协议栈逆向工程实战,涵盖核心网信令分析、环境搭建、认证协议解析及安全漏洞验证。通过NGAP/NAS信令交互解密和异常流量注入测试,帮助研究人员深入理解5G网络安全机制,并提供实用的安全加固建议。

weixin_29250573的博客 678

Windows下用MSYS2一键搞定Verilator安装(附国内镜像加速)

本文详细介绍了在Windows系统下,如何利用MSYS2工具和国内镜像源,快速、高效地完成Verilator的安装与配置。通过替换清华镜像源加速下载,并配合Pacman包管理器,实现近乎一键式的安装流程,有效解决了传统方法步骤繁琐、网络依赖下载慢的问题,为数字电路仿真提供了便捷的Windows环境解决方案。

weixin_29208327的博客 597

Python APP反爬实战:Frida+Charles抓包,破解签名校验

Charles抓包定位参数 → jadx-gui反编译找函数 → Frida Hook拿密钥/规则 → Python还原签名算法;Frida的核心价值:Hook住APP的加密函数,拿到“输入(密钥/参数)+输出(签名)”,无需懂复杂的逆向底层;严格对齐APP的参数排序、拼接规则、加密算法,差一点都会验证失败。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1539

Transformer从菜鸟到新手(一)

从本文开始回顾一下Transformer的原理与实现细节,包括分词算法BPE的实现。最终利用从零实现的Transformer模型进行英中翻译。

日积月累,天道酬勤 2127

040、未来展望:MLIR与编译技术的演进方向

MLIR不是又一个编译框架,它更像是一套“元框架”——提供构建专用编译工具的能力。未来几年,我们会看到更多垂直领域(自动驾驶、射频信号处理、生物计算)出现基于MLIR的专用编译器,它们可能不会挂“MLIR”的名字,但内核都是这套可扩展的IR基础设施。不要等MLIR“成熟”再用,现在就该把它当成一把瑞士军刀,先挑刀口最锋利的那个功能(比如图优化、循环变换)用起来。编译技术的演进不再是学术界的独角戏,而是越来越贴近实际生产中的异构、动态、领域专用需求。

m0_50546716的博客 175

26届数字IC秋招笔试面试全攻略 - CPU基础架构-数字IC设计专家

本文介绍了CPU基础架构的三大关键技术:流水线、冒险处理和指令集设计。首先解析了经典五级流水线结构(取指、译码、执行、访存、写回)及其性能指标。其次详细阐述了三种流水线冒险(数据、控制、结构)及解决方案,如数据前递、分支预测等。最后对比了RISC与CISC指令集特点,并以RISC-V为例说明指令格式设计原则。全文系统梳理了CPU核心架构知识,为数字IC设计提供重要参考。

2301_79143213的博客 932

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 手把手教你用Python实现状态观测器设计(附Bode图分析)
下一篇: 空调维修师傅不会告诉你的秘密:从热力学角度看制冷剂选择与能效比
java5
博客等级 码龄22年 85粉丝 2103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值