Halcon基础知识:常规数据、对象数据、对象元组
一、说明
halcon到底有多少数据类型,这是一个相当重要的知识;初学者如果看了几十个程序案例,自然对此感兴趣。本文将介绍两种数据:常规数据,对象数据;以及出现的机会,1)程序一般处理过程,2)调用函数的参数传递;
二、常规数据
2.1 常规数据的类型
byte, --- 8位无符号数,标准灰度图像的标准编码,基本用于显示,不用于计算。
uint2, --- 16位无符号;标准的灰度图像会用这种类型
int1, ---- 8位有符号;两帧图像的差异会用这种类型
int2 , ---- 16位有符号;两帧图像的差异会用这种类型
int4 , ----- 32位有符号数,两幅灰度图的频谱会用到这种类型;
direction ----8位无符号;图片边缘的梯度方向;边缘梯度会用这种类型;
real -----32位浮点类型,边缘提取及特定灰度值的轮廓会用到这种类型;
complex ----实数对,每个像素用2个real值;用频率表示图像用这种类型;图片频率分布
cyclic -----8位无符号;给每个颜色分配灰度值
vector_field ----双通道的实数图像,描述X或者Y方向的运动;连续图形的光学流分布。
2.2 常规数据特点
是数据的最小单元,一般不可分(vector_field 除外)。1 对象数据内包含常规数据 2 函数参数传递时有常规数据 3 元组内包含常规数据
三、对象数据
3.1 图像对象Image
在Halcon中,Image = Channel + Domain(定义域) , 像素点存放在Channel矩阵中,根据ROI来描述Image。
Image相关操作:
输入:从文件、从设备
生成:外部图像数据、空内存区域;
显示:disp_image()图像首通道灰度图;disp_color() 彩色图;disp_channel()某特定通道;disp_obj() 自动判别类别;(用dev_display也行)
缩放:set_part() 设置显示区域;set_part_style() 设置显示参数;
要点说明:
- 多通道图像,可以是灰度图像或RGB图像 --Multiple channels //
- ROI区域图像,Arbitrary region of interest //
- 像素是多数据类型的,这一点很重要,比如傅里叶变换后的复数图像;(int1/2/4,real, complex, direction, cyclic, vector_field)
另外,多种图片类型间使用convert_image_type算子进行转换:
- convert_image_type(Image:ImageConverted:NewType:)
作用:转换图像数据类型,默认读取的图像时byte类型,此算子能转换成real(实数)图像数据类型。数据类型支持很多NewType:'int1''int2''unit2''unit4''int8''byte''real''direction''cyclic''complex'
3.2 区域对象Regions
以行列坐标形式储存,有广泛的应用,特点是高效,可利用同态算子。比如用阈值对图像分割的结果,其他系统中称为BOLB,AREA等。
3.3 轮廓线对象 (XLD) Extended Line Description
图像均用像素点保存,而像素点是整型的,不连续的,Halcon做了拓展,定义了亚像素(subpixel)的描述几何轮廓的对象:xld,主要用在亚像素测量的背景下,可用于如提取边缘、构建轮廓等等,xld在模板匹配、图形校准等多方面有重要的用途。
说明:
- 亚像素精度的线和边缘检测(Subpixel accurate line and edge detection)
- 依据数据结构产生点的表(Generic point list based data structure)
- 对轮廓,多边形,线等进行操作(Handling of contours, polygons, lines, parallels, etc.)
四、 参数传递
4.1 halcon的函数数据类型两大类
1、图形对象参数(有叫图标变量)Iconic ( image, region, XLD)
2、与控制参数Control (string, integer, real, handle),
在Halcon算子的参数中,参数次序有约定。依次为:输入图形参数、输出图形参数、输入控制参数、输出控制参数;并且其输入参数不会被算子改变。官方手册对系统内算子的参数,要有明确说明,对参数表“x:y:x:y”要有解释。同样,自定义算子也需要约定好参数的顺序。
4.2 控制参数Control
1 String类型变量由单引号’括起来;此外还有一些特殊字符;
2 Boolean型变量包括 true ( = 1 )、 false ( = 0 ) ;不为零的整数将被认为true;但绝大多数的Halcon函数接受字符串型的表达:’true’‘false’,而非逻辑型表达;
3 图像元组:指用图像obj构成的参量,图形元组的下标从1开始
4 控制变量元组:是如下这个样子的
set_paint( WindowHandle, ['contourline',60,1] ) 控制变量元组下标从0开始;
5 句柄:句柄则可以用来描述窗体、文件等等,句柄不能是常量。
Halcon基础知识:常规数据、对象数据、对象元组相关推荐
- SAP SD基础知识之信用范围数据维护
SAP SD基础知识之信用范围数据维护 一,信用代表组 - 内部地划分信用控制范围 我们可以在一个信用控制范围内建立信用代表组,在销售订单中输入一个分配给客户的信用代表组,然后它可用作分析或者释放功能 ...
- 大数据基础知识全集,大数据爱好者收藏必备
目前,市场上的大数据产品太多,但远远低于IAAS的标准化水平,各产品之间的差异还不十分清楚.当许多公司正在制造大数据平台或大数据解决方案时,他们往往不知道选择哪些产品来满足他们的需求 ...
- ABAP基础知识 内表汇总数据的方式
点击蓝字 关注我们 一 前言 新开一个专题: ABAP基础知识. 用于介绍一些ABAP中的基础知识.希望可以帮助到一些新学ABAP的朋友. 本文主要介绍ABAP中使用内表统计的几种方式 二 四种统计 ...
- 大数据基础知识总结和大数据方面的核心技术
一.什么是大数据 一种规模大到在获取.存储 .管理.分析方面大大超出了传统数据库 软件工具能力范围的数据集合,具有海量的数据规模.快速的数据流转.多样的数据类型和价值密度低四大特征. 大数据需要特殊的 ...
- SQL数据库基础知识总结(三)---对象
一:数据库对象有: 关系图,表,视图,存储过程,角色,用户,规则,默认,用户自定义数据类型,和用户自定义函数等. 其中,表是最基本的对象.表是用来存储物理数据的.为了方便快速查询.浏览多张表的数据,因 ...
- pytorch基础知识整理(二)数据加载
pytorch数据加载组件位于torch.utils.data中. from torch.utils.data import DataLoader, Dataset, Sampler 1, torch ...
- Cesium基础知识-加载json数据
viewer = new Cesium.Viewer('cesiumContainer'); //加载json数据生成线 function CreateLineFromJson(params) { / ...
- linux的基础知识——模型结构和数据包的封装
1.OSI参考模型和TCP/IP参考模型 2.TCP/IP模型 TCP/IP网络协议分为四层:应用层,传输层,网络层,链路层 3.数据包的封装 数据要想传输必须经过封装.两台电脑通过TCP/IP协议通 ...
- JavaJ基础知识9【类和对象1】
1,基本概念 属性:对象具有的各种特征 方法:对象执行的操作 2,类是对象的类型,不同于int类型,具有方法. 类是抽象的概念,仅仅是模板,如"人" 对象是一个你能够看到,摸得着的 ...
最新文章
- 简单介绍六点nginx优化的方法
- 关于链表的简单创建和遍历
- python自然场景文字识别_chineseocr
- 【Python】Python库之数据可视化
- Fastjson反序列化泛型类型时候的一个问题
- java day26【数据库的基本概念、MySQL数据库软件、SQL数据库的基本概念】
- RSA 数字签名 免密码登录
- 今日头条 java笔试题_今日头条笔试第一题
- LDN双模键盘常见问题(FAQ)
- 关于穿透冰点还原等还原软件的方法
- 机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes)...
- [20171122]rman filesystemio_options.txt
- 二叉树所有节点数、叶子节点数的计算
- c语言 do while 素数,c语言题目:用while语句求2000以内所有质数(素数)
- Ristretto Hardware-Oriented Approximation of Convolutional Neural Networks
- 奥哲网络张华:蛰伏十五年的低代码平台或成未来主流
- Unity3D学习笔记(6)—— 飞碟射击游戏
- 模仿天猫数据的一些语句分析
- Android6.0动态申请SD卡读写的权限
- librosa与python_speech_features
热门文章
- 用Tableau画瓷砖地图
- java 正方形字符串_java编程:怎么画一个正方形?
- 新学期的一些安排 | 以及一些小建议
- 深度学习,究竟该如何学?
- 【Python刷题】_10
- Anaconda中快速安装Tensorflow与Keras并在pycharm中完成相应配置(win10cpu版)
- 详解Numpy的广播机制
- 算法工程师和算法框架开发,谁会代表未来?
- Python中的if __name__ == ‘__main__‘
- Docker源码分析(五):Docker Server的创建