Halcon根据特征值选择区域select_shape

Halcon根据特征值选择区域

关于提取图像的特征,比较常用的一个算子是select_shape算子,它能高效地根据特征提取出符合条件的区域。该算子的原型如下:

select_shape (Regions : SelectedRegions : Features, Operation, Min, Max :)

参数1和参数2分别表示输入和输出的区域,值得关注的是参数3Features。这里提供了一个包括多种特征参数的列表,基本包括了区域的常用特征,使用者只需要选择需要的特征,并设置筛选条件,就能得到需要的区域。
(1)area:输入区域的面积。
(2)row:输入区域中心点的行坐标。
(3)column:输入区域中心点的列坐标。
(4)width:输入区域的宽度。
(5)height:输入区域的高度。
(6)circularity:输入区域的圆度。
(7)compactness:输入区域的紧密度。
(8)convexity:输入区域的凸包性。
(9)rectangularity:输入区域的矩形度。
(10)outer_radius:输入区域的最小外接圆的半径。
(11)inner_radius:输入区域的最大内接圆的半径。
(12)inner_width:输入区域的与坐标轴平行的最大内接矩形的宽度。
(13)inner_height:输入区域的与坐标轴平行的最大内接矩形的宽度。
(14)connect_num:输入区域中非连通区域的数量。
(15)holes_num:输入区域包含的孔洞数量。
(16)max_diameter:输入区域的最大直径。
在检测中,常常使用某个特征值作为分割的依据,这时使用select_shape算子就非常高效,仅用简洁的代码就能将这些区域提取出来。例如,我们常利用面积特征来筛选出较大的前景目标,移除杂点和小区域。使用select_shape算子进行面积筛选,无须单独计算每个区域的具体面积,代码也非常简洁。
下面是一个使用select_shape算子进行特征筛选的例子,如图所示。图(a)为输入的彩色图像,图中有若干个孔洞。为了将最大的孔洞从图中提取出来,可以先使用阈值处理,从感兴趣区域中提取出较亮的区域;然后使用select_shape 算子根据面积arca筛选,将大部分杂点排除掉,得到图(b)所示的形状;接着再用一次select_shape 算子,使用区域宽度width作为判断条件,选择出大的孔。图(c)为使用select_shape算子进行特征提取的图像,经过第二次筛选,将包含较大孔洞的区域提取出来。
在这里插入图片描述
上述过程的代码如下:

*清空显示窗口
dev_close_window ()
*读取待检测的图像
read_image (Image, 'data/crossShape')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
*设置绘制的颜色
dev_set_color ('white')
*将彩色图像转化为灰度图像,这是为了后面的图像二值化
rgbl_to_gray (Image, GrayImage)
*创建矩形选区,选择感兴趣区域
gen_rectanglel (Rectangle, 100, 127, 325, 490)
reduce_domain (GrayImage, Rectangle, ROI)
gen_image_proto (ROI, Imagecleared, 0)
*进行阈值处理,提取出图中较暗的包含孔洞的区域
threshold (ROI, Regions, 50, 255)
*将不连通的部分独立分割出来,成为一组区域
connection (Regions, ConnectedRegions)
*设置绘制的颜色,为了标记选择的区域
dev_set_color ('yellow')
*方法一
*将阈值处理的结果区域作为select_shape算子的输入,根据区域的宽度选择出目标
select_shape (ConnectedRegions, SelectedRegionsl, 'area','and', 1000, 99999)
*方法二
*先计算面积,再选择出面积最大的目标
area_center (ConnectedRegions, Area, Row, Column)
select_shape (ConnectedRegions, SelectedRegions2,'area','and', max(Area), 99999)
*方法三
*选择面积最大的形状区域作为目标
select_shape_std (SelectedRegionsl, SelectedRegion3, 'max_area', 70)
dev_clear_window ()
dev_display (SelectedRegion3)

该段代码中列举了3种选择最大目标的方法。方法一是直接根据面积的值设置选择标准;方法二分为两步操作,先计算面积,再选择出面积最大的形状;方法三是通过在select shape_std算子中设置max_area,直接提取出面积最大的形状。3种方法得到的结果相同。这样即可将符合条件的区域提取出来。注意,可以根据检测需要组合使用多种选择条件,多次使用selec_shape算子,以筛选出合适的区域。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 面向对象之继承和组合

Python 面向对象之继承和组合 【一】继承 【1】概念 继承是面向对象的三大特征之一继承允许一个类继承另一个类的属性和方法继承可以使代码重用,解决类与类之间代码重复的问题 【2】代码解释 不使用继承,创建豌豆射手类和豌豆的双发射手类 # 豌豆射…

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic 原因 golang 服务出现了 panic,根据 panic 打印出的堆栈找到了问题代码,看上去原因是:json 序列化时,遇到了无法序列化的内容 [panic]: json: unsupported …

项目优化的方法

持续更新中… 目录 性能防抖、节流防抖(debounce)节流(throttle)防抖节流的区别: 图片/视频/音频压缩减少请求发送次数减少重绘与回流经常要切换消失与出现状态的节点用v-show而不用v-if按需引入路由懒加载懒加载图片懒加载列表懒加载 精灵/雪碧图Webpack优化前端性…

使用Go语言编写高效的HTTP服务器

随着互联网的快速发展,HTTP服务器在Web开发中扮演着越来越重要的角色。而Go语言作为一种高效、并发性强的编程语言,为编写高性能的HTTP服务器提供了强大的支持。本文将探讨如何使用Go语言编写高效的HTTP服务器。 首先,我们需要了解Go语言的H…

某大型电商APP sign头部签名逆向分析

APP版本 唯品会 7.45Java层抓包分析 打开抓包工具 charles进行分析,可以发现对于API采集需要突破当前这个参数,否则不返回信息 jadx静态分析 jadx静态分析,打开app搜索关键词api_sign,可以发现有参数位置 跟进去上边str赋值方…

三剑客前端教程

前端教程 结构层(html)表现层(css)行为层(javascript) HTML 超文本标记语言) HTML(超文本标记语言——HyperText Markup Language)是构成 Web 世界的一砖一瓦。它定义…

LLM(九)| 使用LlamaIndex本地运行Mixtral 8x7大模型

欧洲人工智能巨头Mistral AI最近开源Mixtral 8x7b大模型,是一个“专家混合”模型,由八个70亿参数的模型组成。Mistral AI在一篇博客文章(https://mistral.ai/news/mixtral-of-experts/)介绍了Mixtral 8x7b,在许多基准上…

一致性算法Paxos

Paxos Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致…

如何实现任意文档的离线翻译且源文档格式不变?支持离线全自动翻译,无需改动页面、无语言配置文件、无API Key、对SEO友好!(附源码)

如何实现任意文档的离线翻译且源文档格式不变?支持离线全自动翻译,无需改动页面、无语言配置文件、无API Key、对SEO友好!(免费使用附所有源码) 在工作和生活中,是否遇到过这样的场景: 1)有些文档很长且不是自己擅长的语言,阅读起来很费力,需要把文档进行翻译之后再…

效果图渲染角度哪什么小技巧?

在创建效果图渲染时,正确设置相机角度对于表现设计的视觉效果至关重要。好的效果图通常能够增强设计图张力,通过效果图也能更好的看到真实物体的成果,以下是一些效果图渲染角度技巧,可以帮助你提高渲染的质量和表现力,…

软件测试|一篇文章带你深入理解SQL约束

深入理解SQL约束:保障数据完整性和一致性的重要工具 SQL约束是在关系型数据库中用于保障数据完整性和一致性的重要工具。本文将深入探讨SQL约束的概念、类型以及应用,以帮助读者更好地理解和使用SQL约束来确保数据库中的数据质量。 SQL约束 约束&…

Maven之依赖的传递

问题导入 1. 依赖传递 A依赖B,B依赖C,A是否依赖于C呢?–A依赖于C 依赖具有传递性 路径优先:当依赖中出现相同的的资源时,层级越深,优先级越低,层级越浅,优先级越高 声明优先&…

鸿蒙会不会像10几年前安卓一样,红极一时

如今,鸿蒙与安卓彻底切割时间似乎越来越近,一批嗅觉灵敏的互联网厂商已经完成或开始启动开发鸿蒙原生App。随着头部App厂商启动鸿蒙(HarmonyOS)原生应用开发,鸿蒙开发人才变得紧缺。专家预测,鸿蒙开发的人才…

通过聚道云软件连接器实现金蝶软件与客如云软件的无缝对接

客户介绍 某知名冷饮连锁品牌是国内一家拥有数千家门店的知名品牌,作为一家专注于冷饮和甜品的企业,我们致力于提供高品质、健康美味的食品,为消费者带来冰凉的甜蜜与畅快的口感。 我们始终坚持选用优质原料,严格把控生产流程&a…

数据库基础知识1

关系模型的程序员不需熟悉数据库的存取路径 在3层模式结构中,___I___是数据库的核心和关键,___Ⅱ___通常是模式的子集,数据库模式的描述提供给用户,____Ⅲ__的描述存储在硬盘上。Ⅰ.模式Ⅱ. 外模式Ⅲ. 内模式 数据库中,数据的物理独立性是指用户的应用程序与存储在磁盘上数据库…

数据库——SQL注入攻击

【实验内容及要求】 一、内容:掌握SQL注入攻击的原理,掌握基本SQL注入攻击的方法,掌握防SQL注入攻击的基本措施。 二、要求: 1. DVWA环境配置 DVWA(Damn Vulnerable Web Application)是一个用来进行安全…

使用ffmpeg+flv.js + websokect播放rtsp格式视频流

对于rtsp的视频流网上有很多种的解决方案,但是大的趋势还是利用ffmpeg的工具进行rtsp的视频解析进行一个推流,我最终选择bilibili开源的flv.js,代码十分的简单全部都在底层封装好了。实现的方式也比较容易理解,ffmpeg进行rtsp的视…

springboot、spring-kafka、kafka-client的版本对应关系

在使用springboot集成kafka的时候需要注意springboot版本、引用的依赖spring-kafka版本和kafka中间件版本的对应关系,否则可能会因为版本不兼容导致出现错误。 1、含义说明(摘自官网) Spring Boot:是springboot的版本。Spring fo…

【MLOps】使用Ray缩放AI

Ray正在人工智能工程领域崭露头角,对扩展LLM和RL至关重要 Spark在数据工程中几乎是必不可少的。Ray正在人工智能工程领域崭露头角。 雷是伦敦大学学院Spark的继任者。Spark和Ray有很多相似之处,例如用于计算的统一引擎。但Spark主要专注于大规模数据分析…

SSMBUG汇总

20240103 通用,驼峰命名法,mybatis。 mybatis入门程序中, // 获取对象的顺序为:SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSessionSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();I…