Halcon常用算子(库函数)整理

news2024/12/26 22:12:44

目录

  • 一. 常规操作类
    • 1.1 tuple_length()
    • 1.2 tuple_find_first()
    • 1.3 tuple_gen_const()
  • 二. 机器视觉操作类
    • 2.1 read_image()
    • 2.2 get_image_size()
    • 2.3 intensity()
    • 2.4 zoom_image_factor()
    • 2.5 median_image()
    • 2.6 Gauss_filter()
    • 2.7 fft_generic()
    • 2.8 convol_fft()
    • 2.9 sub_image()
    • 2.10 binary_threshold()
    • 2.11 area_center()
    • 2.12 select_shape()
    • 2.13 connection()
    • 2.14 closing_circle()
    • 2.15 overpaint_region()
    • 2.16 union1 ()
    • 2.17 threshold()
    • 2.18 crop_part()

新手在刚接触Halocon时往往不明所以,而官方文档上的解释又让初学者云里雾里,本文整理了halocon常用算子(库函数),供开发者快速查阅。

一. 常规操作类

1.1 tuple_length()

tuple_length(Area0,len)

数组里元素的个数

1.2 tuple_find_first()

tuple_find_first(Area0,sMax,i)

找到第一个是sMax的,返回索引

1.3 tuple_gen_const()

创建数组 tuple_gen_const( : : Length, Const : Newtuple)

二. 机器视觉操作类

2.1 read_image()

读取图片

2.2 get_image_size()

获取图片尺寸

2.3 intensity()

Regions (input_object) region(-array) → object
Regions in which the features are calculated.
计算特征的区域。

Image:输入灰度图
Mean:输出区域的平均灰度值
Deviation:输出区域内灰度值的偏差。

2.4 zoom_image_factor()

zoom_image_factor(Image, ImageZoomed, 0.15, 0.125, ‘constant’)

高斯降采样。

2.5 median_image()

median_image (Image, ImageMedian, ‘circle’, 2, ‘mirrored’)
Image:输入图像
ImageMedian:输出图像
参数3:掩码的形状 ‘circle’ 圆; ‘square’ 正方形
参数4: 掩码半径
参数5:边界处理。建议值: ‘mirrored’, ‘cyclic’, ‘continued’, 0, 30, 60, 90, 120, 150, 180, 210, 240, 255

2.6 Gauss_filter()

gauss_filter (Image, ImageGauss, 9)
Image:输入图像
ImageGauss:输出图像
参数3:过滤器大小;建议值: 3, 5, 7, 9, 11

2.7 fft_generic()

空间域和频域之间的转换,主要有如下两个关键算子rft_generic()、fft_generic()。
这两个算子的共同点:
1.这两个算子都是进行快速傅里叶变换的算子
2.这两个算子都可以进行空间域-》频域和频域-》空间域的变换,只需要针对参数Direction分别进行选择,‘to_freq’是进行的是空间域-》频域的变换,‘from_freq’是频域-》空间域的变换。
3.rft_generic算子的输入图像是实值函数,fft_generic的输入图像是复数函数;从输出的结果来看,rft_generic只需要计算和存储了左半边的复数图像信息就可以了,因为右半边是共轭对称的。因此从最终的输出我们可以看到,只有左上和左下有DC成分。而fft_generic如果设定的是原点在左上角,那么就会在四个角上有DC成分。
4.fft_generic算子可以通过参数Mode设置原点的位置:如果设置的是’dc_edge’,那么原点在左上角;如果设置的是’dc_center’,那么就会将原点平移到中心位置。fft_generic算子一般会设置为’dc_center’。对于rft_generic算子,因为没有设置项,所以默认原点位置为左上角。
5.针对同一个图像,进行空间域-》频域、频域-》空间域的转换的时候,如果使用的是rft_generic算子,那么两个转换就都使用该算子;如果使用的是fft_generic算子,那么两个转换也都使用该算子,在对同一个图像进行空间域和频域的相互转换时,不要交叉使用这两个算子。
当然,从空间域到频域的转换,也可以使用算子fft_image,这个算子也是快速傅里叶变换,其实际效果相当于:
fft_generic(Image,ImageFFT,‘to_freq’,-1,‘sqrt’,‘dc_center’,‘complex’)
Image:输入图像
ImageFFT:输出图像
to_freq:转到频域
‘-1’:默认
‘sqrt’:默认
‘dc_center’:默认
‘complex’:默认

2.8 convol_fft()

一个重要的经验结论:低频代表图像整体轮廓,高频代表了图像噪声,中频代表图像边缘、纹理等细节。
1.具有一定纹理特征的图像,纹理可以理解为条纹,如布匹、木板、纸张等材质容易出现。
2.需要提取对比度低或者信噪比低的特征。
3.图像尺寸较大或者需要与大尺寸滤波器进行计算,此时转换至频域计算,具有速度优势。因为空间域滤波为卷积过程(加权求和),频域计算直接相乘。
使用频域进行检测,有两个步骤是比较关键的:
1.一个是生成合适的滤波器;
2.一个是空间域和频域之间的转换。

2.9 sub_image()

sub_image(ImageMinuend , ImageSubtrahend : ImageSub : Mult , Add 😃
ImageMinuend :输入的被减图像
ImageSubtrahend:减数图像
ImageSub:结果图像
Mult:乘数因子
Add:灰度补充值

2.10 binary_threshold()

binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
Image :要分割的图像
Region :分割后的区域
Method:分割方法,提供了两种方法:‘max_separability’和’smooth_histo’。这两种方法只能用于具有双峰直方图的图像
LightDark :提取暗背景还是亮背景
UsedThreshold:使用阈值
示例:

binary_threshold(Sub0, region, 'max_separability', 'dark', UsedThreshold)

从图像中分割出

2.11 area_center()

area_center (region, A, Row, Column)
计算每个区域的面积 中心坐标

2.12 select_shape()

select_shape(Regions: SelectedRegions: Features, Operation, Min, Max: )
借助形状特征选择区域。
Regions: 输入区域元组
SelectedRegions:输出满足条件的区域元组
Features:输入参数形状特征(‘anisometry’, ‘area’, ‘area_holes’, 'bulkiness’等)
Operation:输入参数关系符(‘and’, ‘or’)如果features只是用一种特性那么此参数没有意义
Min、Max:输入参数下限上限值
示例:

select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 99999)

选择区域面积范围

2.13 connection()

connection(Region, ConnectedRegions)
Region表示需要计算的输入图像区域
ConnectedRegions表示输出图像区域
示例:

connection (regions, ConnectedRegions)

在这里插入图片描述
对区域中的子连通集进行操作。

2.14 closing_circle()

closing_circle(Region: RegionClosing : Radius)
Region:输入区域
RegionClosing:输出结果区域
Radius:输入使用的圆形结构的圆半径 0.5 ≤ Radius ≤ 511.5 (lin)
使用圆形结构元素来闭合一个区域。
示例:

closing_circle (RegionUnion, RegionClosing, 5)

使用圆形结构元素来闭合一个区域,只要是在区域内并且小于输入圆形半径的孔都会被闭合

2.15 overpaint_region()

color := [255,255,0]
*RGB红色+绿色
*黄色
*用指定颜色填充指定区域
*Image:待绘制的图像
*Region:待绘制的区域
*color:颜色
*margin:填充类型

  •  'fill'     填充全部区域
    
  •  'margin'   只填充边界
    

示例:

overpaint_region (Image, Region, color, 'margin')

2.16 union1 ()

union1 (Region, RegionUnion)
将所有区域合并成一个区域。
参数1:要计算并集的区域
参数2:输出区域
示例:

union1 (SelectedRegions, RegionUnion)

2.17 threshold()

threshold(Image : Region : MinGray, MaxGray : )
使用全局阈值分割图像。
Image (input_object) :输入图像
Region (output_object) :阈值分割后Region
MinGray (input_control):设置的最小阈值(灰度值)
MaxGray (input_control) :设置的最大阈值(灰度值)
其中要满足MaxGray >= MinGray
示例:

#全局阈值分割出两个区域
threshold (Image, Region, [0, 107], [106, 255])

2.18 crop_part()

crop_part(Image : ImagePart : Row, Column, Width, Height : )
用来截取感兴趣区域。
Image:原图像
ImagePart:截取的图像
Row、Column:图像截取的起始点坐标
Width、Height:截取图像的宽、高
示例:

crop_part(Image,imgCut,100,100,1200,1200)

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

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

相关文章

大白话给你讲明白数据仓库

数据仓库的本质就是完成从面向业务过程数据的组织管理到面向业务分析数据的组织和管理的转变过程。 数据仓库类比粮食仓库 业务过程数据的组织管理实际上就是由各种业务系统来完成的,比如ERP、CRM、OA等各类业务系统,解决的是基本的业务流程管理。通过…

PS的安装、背景、背景练习、雪碧图、线性渐变、径向渐变、电影卡片练习——06fontbackground

目录 一、PS的安装 二、背景(background-color、background-image、 background-repeat、background-position、background-clip、background-origin、background-size、background-attachment) 三、背景练习(背景重复—导航条的背景颜色是渐变的) 四、背景练习&#xff08…

【数据结构】深度讲解栈、栈的应用举例、栈和递归的实现教你全面认识栈

目录一.栈1.栈的概念及结构2.栈的实现stack.hStack.c二.栈的应用举例1.数制转换2.有效的括号3.迷宫求解三.栈与递归的实现1.栈和递归2.迷宫问题递归实现3.汉诺塔栈实现一.栈 入栈出栈展示: 1.栈的概念及结构 栈:一种特殊的线性表,其只允许…

【Web开发】Python实现Web服务器(Ubuntu下安装Flask)

🍺基于Python的Web服务器系列相关文章编写如下🍺: 🎈【Web开发】Python实现Web服务器(Flask快速入门)🎈🎈【Web开发】Python实现Web服务器(Flask案例测试)&a…

【ESP32+freeRTOS学习笔记-(三)任务】

目录1、任务相关基本概念1.1 任务函数原型1.2 任务句柄TaskHandle_t 及任务控制块TCB_t1.3 任务状态1.4 优先级(Task Priorities)2 创建任务2.1 xTaskCreate2.2 xTaskCreateStatic()3 延迟函数使任务进入阻塞状态vTaskDelay()函数vTaskDelayUntil()函数4…

【C++初阶】vector的模拟实现

文章目录vector的介绍vector的模拟实现成员变量Member functionsconstructor(构造函数)destructor(析构函数)operatorIteratorsbeginendCapacitysizecapacityreserveresizeElement accessoperator[]Modifierspush_backpop_backins…

手办商城系统|Springboot+vue+ElementUI手办商城系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

C语言重点解剖预处理要点速记

1.宏定义字符串的时候一定要带上双引号。 2.程序的翻译,就是把文本代码翻译成二进制代码。分为4个阶段,即预处理,编译,汇编,链接。 3.预处理:头文件展开,去注释,宏替换&#xff0c…

基于Spring cloud + vue 的前后端分离的社团管理系统,数据库采用MYSQL,前端使用 VUE + element

背景 因学校没有成熟的社团管理系统,一为满足学校需求, 其次开源的社团管理项目,多为mvc ssm框架 很少有前后端分离的微服务框架,为了科技的发展, 更好学习解决高并发问题,也为了更好地掌握锤炼新技术&…

Web前端:广州蓝景实训

0基础也能学,5个月的课程时间,从小白到就业课程内容紧贴市场就业要求。广州蓝景前端实训课程,6年时间培养出过千名工程师,成功就业。今天就跟大家分享,蓝景学员的学习体验流程: 一、前端技术学习 1、授课…

3.Kafka

1.定义 1.1传统定义 Kafka是一个分布式的基于发布订阅模式的消息队列,主要应用于大数据的实时处理领域发布订阅:消息发布者不会直接将消息发送给订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息 1.2最新定义 …

计算机网络期末重点考点总复习

第三章数据链路层 CRC检验问题 知识点 例题 要发送的数据为1101011011。采用CRC的生成多项式是 P(X)X^4 X 1试求应添加在数据后面的余数。数据在传输过程中最后一个1变成了0,问接收端能否发现? 若数据在传输过程中最后两个1都变成了0,问接…

MacOS系统安装Qt教程

我以为搜索QT下载,安装好QT Creator就能开开心心HelloWorld,然而还是太年轻了,一个 No suitable kit found 报错告诉我,可能没那么简单。于是,我去查了查,大概原因就是苹果处理器和x86不太一样,…

借助这几个工具,轻松实现在手机压缩视频

我有一个习惯,就是会将生活中发生的趣事,或是沿途好看的风景,用手机录制下来,这样的话,后续再回看这些视频的时候,就能勾起相对应的美好回忆。 但是久而久之,这些视频积累太多的话,就…

Springboot 2.7.5 HikariCP 连接池多数据源配置

一. 引言 当前项目遇到需要连接多个数据库的场景,此时需要引入多数据源了. 还有一些诸如以下的场景: 与第三方对接时,有些合作方并不会为了你的某些需求而给你开发一个功能,他们可以提供给你一个可以访问数据源的只读账号,你需要…

Web漏洞扫描篇-Nessus使用

软件介绍 Nessus是一种漏洞扫描器,个人和组织广泛使用它来识别和修复计算机系统中的漏洞。Nessus可以扫描广泛的漏洞,包括缺少补丁、弱密码和配置错误的系统,它可以扫描单个系统或整个网络上的漏洞。Nessus可以在各种平台上运行,…

【云原生进阶之容器】第一章Docker核心技术1.10节——Docker网络模型设计

1 容器网络背景概述 1.1 Linux的namespace+cgroup 先来简要回顾一下前面的内容,namespace和cgroup是Linux 内核的两大特性,namespace的诞生据说就是为了支持容器技术,那么这俩特性到底干了啥呢? - namespace:linux支持多种类型的namespace,包括Network,IPC,PID, Mount…

基于HOG、LBP完成特征工程,基于SVM/RF/XGBOOST/GBDT/CNN/DNN完成人脸识别+表情识别

在我之前的文章中写过很多关于人脸识别和表情识别的文章,今天有一个项目的需求就是需要做两种或者是多种任务,我在开发完对应的模型之后就突然想到了之前做过的人脸识别和表情识别的项目,就想着是否可以基于机器学习/深度学习等方式来同时实现…

算法训练第五十七天 | LeetCode 647、516动态规划结尾

LeetCode 647回文子串 题目简析: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 思路分析: 本题的难点 主要…

【Aptos与Sui智能合约】(Move长话短说) #03 - 智能合约编写与发布

前言:本篇学习如何在Aptos上发布两个自定义的智能合约 0x1 前置条件 安装好Aptos工具,MacOS、Ubuntu、Windows系统的预编译的安装包下载地址 https://github.com/aptos-labs/aptos-core/releases?q=cli&expanded=true 想自己从源码开始编译,你就下载Source Code 安装…