Halcon 感兴趣区域

news2024/9/19 10:40:05

一 感兴趣区域

机器视觉中感兴趣区域是必不可少的,尤其是Halcon。其目的是将集中处理图像中的特定部分。此方法将区域信息与图像矩阵相结合,只与图像中的某些区域保持关联,减少图像处理的像素。使用ROI的优势:第一,减少图像像素的处理。第二,侧重于处理,通常计算灰度值。

1 基本概念

ROI的使用分为两个步骤:①创建区域;②与图像相结合。

1)创建区域

Halcon提供多种创建区域的方法,可以将其创建ROI。传统的方法是生成标准形状、如圆形、椭圆、矩形或多边形。此外,还可以通过从其他数据类型(如XLD)转换为区域分割图像或通过用户交互来派生区域。

2)创建ROI

通过区域与图像相结合,该区域承担起ROI的角色,即它定义必须处理图像的某一个部分。在Halcon中,ROI也被称为图像域。这个源自数学,其中图像可以被视为将坐标映射到灰度图的函数。ROI将该函数的域从完整图像缩小到相关部分。对此,将区域和图像结合的运算称为reduce_domain。这个简单的操作符几乎可以在所有应用程序中完成所需的任务。

3)示例

从文件中读取图像。在图像内部,需要处理中心圆周围的图像区域。可采用gen_circle生成一个圆形区域。使用reduce_domain将该区域与图像组合。这样做的效果是,在调用时,只需要处理ROI像素。例如:如果对该图像应用算子edges_sub_pix,则仅在圆内提取亚像素精度轮廓。

read_image(Image,'D:/Halcon_Study/01.bmp')

gen_circle(ROI,533.27, 860.284, 162.201)

reduce_domain(Image,ROI,ImageReduced)

edges_sub_pix(ImageReduced,Edges,'lanser2',0.5,20,40)

dev_display(Image)

dev_display(ROI)

dev_display(Edges)

在这里插入图片描述
在这里插入图片描述

二 提前轮廓

如果需要研究ROI时则需要编写额外的程序。

1) 图像分割

Halcon常见的创建ROI分割方法。没有预定义的ROI,而是使用图像算法从图像中提取并进一步的处理。可以高效的提取并进行处理,ROI区域分割与blob分析方法类似。

2) 绘制区域

指定ROI的标准是使用鼠标交互式的绘制形状。Halcon提供标准形状和自由形状提供操作。此类算子前缀draw_开头。绘图通过使用鼠标左键(绘制、拾取、拖动)执行,并通过单击鼠标右键完成。并返回参数形成区域。

3)创建区域

常用方法是根据用户交互返回空间域生成区域,可使用gen_circle,gen_rectangle2或gen_region_polygon_fill等。更深层次通过图像预处理获取特殊形状。比如由线、点获取棋盘组成的网格。根据这些形状,可以系统提取图像,并检测指定对象。如想分割图像可使用blob进行操作。

4)处理区域

有时,给定ROI形状,无论是由程序生成的还是用于定义的,都不满足需求。Halcon给需要用户提供修改形状以适应不同需求。可使用算子fill_up填充区域的孔洞,shape_trans应用一般变换,如凸包或最小矩形,或形态学如erosion_circle使区域变小伙closing_circle填充空隙。

5)图像ROI对齐

有时,ROI的坐标取决于图像中另一个对象的位置。如果对象移动,则ROI必须相对移动(对齐)。可以采用模板匹配定位来实现。根据确定的位置和方向,ROI进行相应的变换。

6)创建ROI

这是将区域和图像融合,利用区域作为图像的域。可使用reduce_domain.它的优点是安全且简单。rectangle1_domain是生成矩形ROI的快捷方式(而不是依次调用gen_rectangle1和reduce_domain)。对于高级算法,change_domain可以用作比reduce_domain稍快的版本。

7)可视化结果

可能希望显示ROI或简化图像。使用算子get_domain可以访问任何其他区域的图像。例如,使用disp_image显示像素。图像域以外的图像像素不会被修改。

* 定位标记图像中的靶点
*
dev_update_window('off')
*

* step1:获取图像

read_image(Image,'D:/Halcon_Study/2037551.jpg')
get_image_size(Image,Width, Height)
dev_close_window()
dev_open_window(0,0,Width,Height, 'black', WindowHandle)
dev_set_part(0,0,Height-1,Width-1)
dev_set_line_width(3)
dev_set_color('blue')
dev_set_draw('margin')
dev_display(Image)
set_display_font(WindowHandle,20,'mono', 'true', 'false')

* step2:绘制区域

disp_message(WindowHandle,'用鼠标绘制感兴趣的区域','window',12,12,'blue','false')
dev_set_color('white')
draw_region(Region,WindowHandle)
dev_display(Region)
disp_continue_message(WindowHandle,'black', 'true')
stop()

* step3:创建ROI

reduce_domain(Image,Region,ImageReduced)
disp_continue_message(WindowHandle,'black', 'true')
stop()

* step4:处理ROI图像

critical_points_sub_pix(ImageReduced,'facet',1.5,8,RowMin,ColumnMin,RowMax,ColumnMax,RowSaddle, ColSaddle)
dev_clear_window()
dev_display(ImageReduced)
dev_set_color('yellow')
for i:= 0 to |RowSaddle|-1 by 1
    gen_cross_contour_xld(Cross,RowSaddle[i],ColSaddle[i],25,0.785398)
    dev_display(Cross)
endfor
stop()
dev_update_window('on')

在这里插入图片描述
在这里插入图片描述
琐碎时间阅读基础知识,详情关注微信公众号“知识代码AI”。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis学习[1] ——基本概念和数据类型

Redis学习[1] ——基本概念和数据类型 一、Redis基础概念 1.1 Redis是什么,有什么特点? Redis是一个基于**内存的数据库,因此读写速度非常快**,常用作缓存、消息队列、分布式锁和键值存储数据库。支持多种数据结构:…

网络协议二 : 使用Cisco Packet Traceer工具模拟网络环境,集线器,网桥,交换机,路由器,IP,同一网段

1. 安装 Cisco Packet Tracer baidu 网盘地址,感谢大神分享 安装,破解,中文化,都有说明,建议使用7.x的那个版本,感觉比8.x的翻译要完整一点 https://pan.baidu.com/s/18iWBOfhJJRhqgQqdNQcfMQ?pwddcch#…

【C++】实验七

题目: 1、自己找规律利用数组完成下列数据的输出: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 思路:数据是斐波那契数列的前20项。该数列特点是除第一第二项以…

公交车客流统计产品介绍

在当今智能科技与交通运输融合的背景下,一款新型公交车客流统计产品应运而生。该系统采用先进的双目客流统计算法,实现多通道视频的客流数据统计,以其高实时性和98%的准确性在复杂环境下准确统计人数。 产品特点 双目客流统计算法 该公交车客…

Vscode报错:line too long (84 > 79 characters)

原因:不允许一行超过79个字母,但是该行代码超出该范围。 参考博客:解决Vs CodeFlake8 报错line too long (108 > 79 characters)Flake8(E501)_flake8 line too long-CSDN博客

Git安装以及配置Gitee秘钥

一、Windows环境GIt安装 1、官网下载git,地址:Git - Downloads 2、安装成功后,点击鼠标右键会有Git GUI Here(图形界面)和Git Bash Here(命令窗口) 3、点击Git Bash Here,分别输入以下命令&…

数据库练习4

建库使用库 修改student 表中年龄(sage)字段属性,数据类型由int 改变为smallint 为Course表中Cno 课程号字段设置索引,并查看索引 为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 创建一视图 stu info,查询全体学生的姓名&am…

Lingo求解器百度云下载 ling 8.0/lingo 18安装包资源分享

如大家所熟悉的,Lingo是Linear Interaction and General Optimizer的缩写,中文名称为“交互式线性和通用优化求解器”,是一套专门用于求解最优化问题的软件包。 在大部分人认知里,Lingo可用于求解线性规划、二次规划、整数规划、…

【中项】系统集成项目管理工程师-第7章 软硬件系统集成-7.3软件集成

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

交通数据处理-计算途径某些路段的车辆数

根据车辆的运行轨迹,计算先经过某些路段,再经过某些路段的车辆数。 欢迎关注本人公众号--交通数据探索师 如下表, 其中:vehicle: 车辆编号;route: 车辆轨迹。 以第一行为例,车辆car1按顺序经过了路段123…

从0开始搭建vue + flask 旅游景点数据分析系统(三):开发header部分

这一期开始开发header部分&#xff0c;预期实现两个目标&#xff1a; 右侧显示用户名、退出按钮和头像左侧显示系统的访问的路径 1 修改Layout.vue 先修改el-header部分, <el-header class"header"> <!-- <div class"logo">My Ad…

【leetcode 详解】生成特殊数字的最少操作【中等】(C++思路精析)

题目见下&#xff1a; 测试数据: 解题思路笔记&#xff1a; 最初拿到这道题是很蒙的&#xff0c;联想不到什么数据结构的模型&#xff08;肯定是笔者积累太少了&#xff09;&#xff0c;甚至惯性地想怎么实现“删除数字”的操作&#xff1a;在原字符串中抽出一个字符然后将剩…

趋动科技与天数智芯携手构筑全场景高效算力底座

近日&#xff0c;趋动科技与天数智芯正式推出联合解决方案&#xff0c;该方案基于趋动科技OrionX AI算力资源池化软件以及天数智芯通用GPU产品构建AI算力资源池&#xff0c;实现异构算力资源的统一纳管。 经测试&#xff0c;OrionX AI算力资源池化软件与天数智芯通用GPU产品相…

数据结构·红黑树

1. 红黑树的概念 红黑树&#xff0c;是一种搜索二叉树&#xff0c;但在每个节点上增加一个存储位表示节点的颜色&#xff0c;可以是Red或Black。通过对任意一条从根到叶子的路径上各个节点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出两倍&#xff0c;因…

【C++11】C++11新纪元:深入探索右值引用与移动语义

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;位图与布隆过滤器 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀C11 &#x1f4d2;1. C11简介…

sentinel的使用以及springcloud整合sentinel

一、为什么要用到sentinel 首先我们要知道的是一个微服务项目如果一个服务挂载掉了&#xff0c;会出现什么情况&#xff0c;是不是回出现一个服务挂载而另一个服务还需要一直调用此服务就很容易导致和它有关联的服务不能被访问到&#xff0c;这也就是我们常常在生活中说到的雪崩…

关于 NASA 航空公司 cmapss 数据集剩余寿命(Rul)预测数据预处理的疑问。

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

微服务--熟练掌握网关(包括权限认证)

目录 一、网关的路由 二、网关登录的校验 2.1.鉴权思路分析 2.2.网关过滤器 2.3 自定义过滤器 2.3.1 自定义GatewayFilter 2.3.2 自定义GlobalFilter 2.4 登陆校验 具体的实现步骤&#xff1a; 一、在微服务中&#xff0c;我们在微服务的网关模块&#xff0c;就要进行…

K210视觉识别模块学习笔记8:Mx_yolo3本地模型训练环境搭建_部署模型到亚博canmv(失败)

今日开始学习K210视觉识别模块: 本地模型训练环境搭建 亚博智能 K210视觉识别模块...... 固件库: canmv_yahboom_v2.1.1.bin 本地训练 Mx_yolo3 这里就简单地提示一下下载安装哪些软件&#xff0c;然后主要是使用Mx_yolo3 进行本地训练模型的...... 本文不…

子网划分+汇总

子网划分的意义&#xff1a;为了使得ip地址充分得到使用&#xff0c;减少浪费 我们知道IP地址分为ABCDE五类&#xff08;这里不讨论DE类&#xff09; IP地址总共有32个字节&#xff0c;分成四个八个字节的二进制数 例如128.64.1.1 10000000.01000000.00000001.00000001 0…