【halcon】halcon轮廓总结之select_contours_xld

前言

select_contours_xld 我认为是一个非常常用且实用的算子,用于对轮廓进行筛选。

简介

这段文档描述了一个名为"SelectContoursXld"的操作,用于根据不同特征选择XLD(XLD是一种图像数据表示形式,表示轮廓线)轮廓。以下是关于该操作的重要信息:

名称

  • SelectContoursXld

参数

![在这里插入图片描述](https://img-blog.csdnimg.cn/825ff460e4ec4d5cbda863787b83f885.png
在这里插入图片描述
第一个参数,是输入的轮廓。第二个是输出的轮廓。
重点是控制参数部分。

控制参数描述

  • SelectContoursXld根据参数feature中的不同特征选择输入的轮廓(contours)。可用的特征包括:
    1. “contour_length”:选择长度小于min1或大于max1的轮廓。
    2. “maximum_extent”:选择最大范围小于min1或大于max1的轮廓。
    3. “direction”:选择回归线方向在min1和max1之间的轮廓。
    4. “curvature”:选择平均距离从回归线的轮廓,以及距离的标准差在min1和max1之间的轮廓。
    5. “closed”:选择起点到终点距离小于等于max1像素的封闭轮廓。
    6. “open”:选择起点到终点距离大于min1像素的开放轮廓。

contour_length: 很简单,筛选轮廓的长度。
maximum_extent: 目前还不理解,后续理解了再补充
direction:选择轮廓的方向。这里具体讲一下。

direction

在这里插入图片描述
这里有几个不同方向的轮廓此时我们进行筛选。
select_contours_xld (Contours, SelectedContours, ‘direction’, rad(0), rad(45), -0.5, 0.5)
得到的结果是:
在这里插入图片描述
首先 feature 设置为 ‘direction’ 表示对 角度的筛选,rad(0), rad(45), 表示选择 0 到 45 度之前的
轮廓。(ps:当选择 ‘direction’ 时,最后两个参数 是无作用的不参与控制)
如果,我将角度调整为:rad(180), rad(180 + 45)
select_contours_xld (Contours, SelectedContours, ‘direction’, rad(180), rad(180 + 45), -0.5, 0.5)
得到相同的结果。如上图所示。
结论:
1 方向的范围是 0~180° 不是0 ~ 360, 说明针对的是轮廓对应的直线的方向,而非线段。
2 度数的计算是逆时针方向

curvature

“Curvature”(曲率)指的是轮廓的曲率,它表示轮廓的弯曲程度。在"SelectContoursXld"操作中,"curvature"特征用于选择符合特定曲率范围的轮廓。

具体来说,"curvature"特征根据以下两个参数来选择轮廓:

  1. min1:定义了曲率的下限阈值。只有那些平均距离从回归线(曲线的近似线)不小于min1的轮廓会被选择。
  2. max1:定义了曲率的上限阈值。只有那些平均距离从回归线不大于max1的轮廓会被选择。

此外,还有另外两个参数:

  1. min2:用于定义标准差的下限阈值。只有那些距离的标准差不小于min2的轮廓会被选择。
  2. max2:用于定义标准差的上限阈值。只有那些距离的标准差不大于max2的轮廓会被选择。

小结: 用一条直线去拟合这条轮廓,min1 max1 限制的是和直线相差的平均距离,min1 max1 限制的是直线相差的标准差。
我理解大概就是这个意思:
在这里插入图片描述
如果在曲率(“curvature”)选择特征中,你将min1和max1都设置为0,或者将min2和max2都设置为0,那么这个特定特征将不会影响轮廓的选择。

换句话说,如果你将这些参数都设置为0,那么曲率特征将不再起作用,不会对轮廓的选择产生限制,所有轮廓都将被保留。这在某些情况下可能是有用的,特别是当你希望不考虑曲率特征时。

举个栗子:
在这里插入图片描述
select_contours_xld (Contours, SelectedContours1, ‘curvature’, 0, 0, 0, 10)
这里我通过标准差进行筛选,筛选后的结果为:
在这里插入图片描述
可以看到曲率较大的就被筛选掉了。

open 和 closed

“closed”:选择起点到终点距离小于等于max1像素的封闭轮廓。
“open”:选择起点到终点距离大于min1像素的开放轮廓。
很好理解,就是轮廓的闭合程度,或者是开放程度!

注意事项

文档中有个注意事项,这里逐句翻译解释一下:
这段文档包含了一些重要的注意事项,特别涉及到使用"SelectContoursXld"操作来筛选轮廓,特别是在根据"direction"或"curvature"特征进行筛选时。以下是解释:

  1. Before contour can be filtered by SelectContoursXld according to “direction” or “curvature”(在使用"direction"或"curvature"特征进行选择之前):在你尝试使用"SelectContoursXld"操作基于"direction"(方向)或"curvature"(曲率)特征来筛选轮廓之前,有一个重要的前提条件。

  2. the parameters of the regression lines to the contours must be calculated with RegressContoursXld(必须先使用RegressContoursXld计算轮廓的回归线参数):在进行"direction"或"curvature"筛选之前,你需要首先使用"RegressContoursXld"操作来计算轮廓的回归线参数。这是因为"direction"和"curvature"特征需要回归线的信息来进行计算和筛选。

  3. If this has not been done, SelectContoursXld calls RegressContoursXld internally with the parameters mode = “no” and iterations = 1(如果没有进行回归线参数计算,SelectContoursXld将内部使用RegressContoursXld,参数mode="no"和iterations=1):如果你没有手动执行"RegressContoursXld"来计算回归线参数,“SelectContoursXld"会自动在内部调用"RegressContoursXld”,使用默认参数mode="no"和iterations=1来计算回归线参数。

  4. If a different mode should be used, RegressContoursXld must be called explicitly(如果需要使用不同的模式,必须显式调用RegressContoursXld):如果你需要使用"RegressContoursXld"操作的不同参数模式来计算回归线参数,你需要显式地调用该操作并提供所需的参数。

总之,这段文档提醒你在使用"SelectContoursXld"来根据"direction"或"curvature"特征筛选轮廓之前,确保先进行回归线参数的计算,否则系统会自动进行默认计算。如果需要不同的计算方式,你需要手动调用"RegressContoursXld"并提供自定义参数。

总之,引出了一个 regress_contours_xld 这个算子,那这个算子具体怎么用?点赞过2,更新下一篇。

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

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

相关文章

竞赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 inception_v3网络5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 *…

Golang学习:基础知识篇(二)—— 数组及切片

Golang学习:基础知识篇(二)—— 数组及切片 前言什么是Golang?Go语言的基础语法数组声明数组初始化数组访问数组知识点补充 切片定义切片切片初始化len() 和 cap() 函数空(nil)切片切片截取append() 和 copy() 函数知识点补充 前言…

ubuntu20.04安装FTP服务

安装 sudo apt-get install vsftpd# 设置开机启动并启动ftp服务 systemctl enable vsftpd systemctl start vsftpd#查看其运行状态 systemctl status vsftpd #重启服务 systemctl restart vsftpdftp用户 sudo useradd -d /home/ftp/ftptest -m ftptest sudo passwd ftptest…

使用 Python 和蒙特卡罗计算未来股价走势以及历史波动率和隐含波动率

一、简介 预测金融市场是定量精度和全球经济细微差别的复杂融合。在这一探索中,蒙特卡罗模拟脱颖而出,成为首要的统计工具,指导我们对未来股票价格的理解。 这种方法以摩纳哥著名的蒙特卡洛赌场命名,并不依靠运气,而是植根于严格的概率模型。想象一下在受控环境中精心策划…

vue3后台管理框架之技术栈

vue3全家桶技术 基础构建: vue3vite4TypeScript 代码格式 : eslintprettystylelint git生命周期钩子: husky css预处理器: sass ui库: element-plus 模拟数据: mock 网络请求: axios 路由: vue…

SAP MM学习笔记37 - 请求书照合中的 追加请求/追加Credit 等概念/ 请求书的取消

有关请求书照合,之前学习了一部分,现在再来学其中的一些概念。 其实这些概念也许并不常用,但是你又不能不知道,因为客户会问。 有关请求书,贴一些以前学习的文章,以方便阅读。 SAP MM学习笔记33 - 请求书…

38.迪杰斯特拉(Dijkstra)算法

概述 我们在上一篇中面对修路的问题讲述了普利姆算法的实现方式,本篇我们参照迪杰斯特拉算法来对修路问题做进一步拆解。 我们回顾一下之前的问题: “要想富,先修路”,郝乡长最近为了德胜乡修路的事情愁白了头。 得胜乡有A、B、C…

《3D 数学基础》几何检测-最近点

目录 1. 直线上的最近点 2. 射线上的最近点 3. 点到平面的距离 4. 圆或球上的最近点 5. AABB上的最近点 1. 直线上的最近点 q是距离q的最近点,也就是q在直线上的投影。 其中p是直线上的点(向量表示),n是直线的法向量&#x…

selenium教程 —— css定位

说明:本篇博客基于selenium 4.1.0 selenium-css定位 element_css driver.find_element(By.CSS_SELECTOR, css表达式) 复制代码 css定位说明 selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法 css定位优点…

史上最短的“牛熊转换”:BTC价格昨夜起飞,但却来自一条假新闻!

昨夜,加密市场经历了史上最短的一次“牛熊转换”。 在短短10分钟内,BTC快速走出多根阳线,价格直接起飞,连续突破28000美元、29000美元、30000美元的整数关口,最高触及30535.8美元,涨幅近10%(数据…

接口自动化测试之HttpRunner测试框架

引言 接口自动化测试的实现方案有很多,没有编程基础的可以使用 PostmanNewman 或 JmeterAnt 来实现,有编程基础的则可以结合自动化测试框架来实现。基于Python的测试框架有:Unittest、HttpRunner、Robot Framework、Pytest等,本文…

python接口自动化测试(六)-unittest-单个用例管理

前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送。但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测试框架 unittest,用它…

OpenCV模板匹配实现银行卡数字识别

目录 1,项目流程 2,代码流程解读 2.1 导入工具包 2.2 设置参数 2.3 指定信用卡类型 2.4 展示图像 ​编辑 2.5 读取一个模板图像 2.6 转化为灰度图--------->再转化为二值图像 2.7 计算轮廓 ​编辑 2.8 导入我们要识别的图像&…

【力扣每日一题】2023.10.13 避免洪水泛滥

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 给我们一个一维数组,元素为0表示对应日期不下雨,非0则表示对应日期对应号的湖泊下雨,下雨之后会导致该…

Spacedrive:开源跨平台文件管理 | 开源日报 No.57

denoland/deno Stars: 91.2k License: MIT Deno 是一个简单、现代和安全的 JavaScript 和 TypeScript 运行时,使用 V8 引擎并用 Rust 构建。其主要功能包括: 默认情况下具有高度安全性,除非显式启用,否则无法访问文件、网络或环…

哪种烧录单片机的方法合适?

哪种烧录单片机的方法合适? 首先,让我们来探讨一下单片机烧录的方式。虽然单片机烧录程序的具体方法会因为单片机型号、然后很多小伙伴私我想要嵌入式资料,通宵总结整理后,我十年的经验和入门到高级的学习资料,只需一…

Android versionCode会变成指定数值加001、002、003等后缀

“活久见”—今天遇到个奇怪的问题,指定的versionCode最终在打包出来的apk中,versionCode变成(指定数值 00X的形式) 如下所示: 注:当前build.gradle中的versionCode为26 后来搜索代码,发现原来是这个配置导…

Vue检测数据的原理

Vue能够对用户的数据进行响应式,也就是你在data中写了什么,你在模板中用到data的部分就会渲染成什么,那么Vue是怎么知道用户修改了data中的数据变化并对模板重新进行解析的呢? 在Vue将数据存储为自身的_data之前,Vue会…

Unity Ugui 顶点颜色赋值

一、效果图 如下图:图片和文字的颜色都可以渐变,透明度也可以渐变。 原理分析: 不管是图片Image或是文本Text,它们都是网络Mesh来渲染网格是由很多三角形组成,那么我们根据坐标修改三角形的颜色即可实现。 工程源码…

安达发|AI人工智能APS系统:工业4.0的智能引擎

在工业4.0的背景下,人工智能(AI)和APS智能排程软件已经成为智能工厂的标准配置。它们通过集成先进的信息技术、通信技术和物联网技术,实现了生产过程的智能化、自动化和数据化,从而提高了生产效率、降低了生产成本、提…