一、说明

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基础知识:常规数据、对象数据、对象元组相关推荐

  1. SAP SD基础知识之信用范围数据维护

    SAP SD基础知识之信用范围数据维护 一,信用代表组 - 内部地划分信用控制范围 我们可以在一个信用控制范围内建立信用代表组,在销售订单中输入一个分配给客户的信用代表组,然后它可用作分析或者释放功能 ...

  2. 大数据基础知识全集,大数据爱好者收藏必备

             目前,市场上的大数据产品太多,但远远低于IAAS的标准化水平,各产品之间的差异还不十分清楚.当许多公司正在制造大数据平台或大数据解决方案时,他们往往不知道选择哪些产品来满足他们的需求 ...

  3. ABAP基础知识 内表汇总数据的方式

    点击蓝字 关注我们 一 前言 新开一个专题: ABAP基础知识. 用于介绍一些ABAP中的基础知识.希望可以帮助到一些新学ABAP的朋友.  本文主要介绍ABAP中使用内表统计的几种方式 二 四种统计 ...

  4. 大数据基础知识总结和大数据方面的核心技术

    一.什么是大数据 一种规模大到在获取.存储 .管理.分析方面大大超出了传统数据库 软件工具能力范围的数据集合,具有海量的数据规模.快速的数据流转.多样的数据类型和价值密度低四大特征. 大数据需要特殊的 ...

  5. SQL数据库基础知识总结(三)---对象

    一:数据库对象有: 关系图,表,视图,存储过程,角色,用户,规则,默认,用户自定义数据类型,和用户自定义函数等. 其中,表是最基本的对象.表是用来存储物理数据的.为了方便快速查询.浏览多张表的数据,因 ...

  6. pytorch基础知识整理(二)数据加载

    pytorch数据加载组件位于torch.utils.data中. from torch.utils.data import DataLoader, Dataset, Sampler 1, torch ...

  7. Cesium基础知识-加载json数据

    viewer = new Cesium.Viewer('cesiumContainer'); //加载json数据生成线 function CreateLineFromJson(params) { / ...

  8. linux的基础知识——模型结构和数据包的封装

    1.OSI参考模型和TCP/IP参考模型 2.TCP/IP模型 TCP/IP网络协议分为四层:应用层,传输层,网络层,链路层 3.数据包的封装 数据要想传输必须经过封装.两台电脑通过TCP/IP协议通 ...

  9. JavaJ基础知识9【类和对象1】

    1,基本概念 属性:对象具有的各种特征 方法:对象执行的操作 2,类是对象的类型,不同于int类型,具有方法. 类是抽象的概念,仅仅是模板,如"人" 对象是一个你能够看到,摸得着的 ...

最新文章

  1. 简单介绍六点nginx优化的方法
  2. 关于链表的简单创建和遍历
  3. python自然场景文字识别_chineseocr
  4. 【Python】Python库之数据可视化
  5. Fastjson反序列化泛型类型时候的一个问题
  6. java day26【数据库的基本概念、MySQL数据库软件、SQL数据库的基本概念】
  7. RSA 数字签名 免密码登录
  8. 今日头条 java笔试题_今日头条笔试第一题
  9. LDN双模键盘常见问题(FAQ)
  10. 关于穿透冰点还原等还原软件的方法
  11. 机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes)...
  12. [20171122]rman filesystemio_options.txt
  13. 二叉树所有节点数、叶子节点数的计算
  14. c语言 do while 素数,c语言题目:用while语句求2000以内所有质数(素数)
  15. Ristretto Hardware-Oriented Approximation of Convolutional Neural Networks
  16. 奥哲网络张华:蛰伏十五年的低代码平台或成未来主流
  17. Unity3D学习笔记(6)—— 飞碟射击游戏
  18. 模仿天猫数据的一些语句分析
  19. Android6.0动态申请SD卡读写的权限
  20. librosa与python_speech_features

热门文章

  1. 用Tableau画瓷砖地图
  2. java 正方形字符串_java编程:怎么画一个正方形?
  3. 新学期的一些安排 | 以及一些小建议
  4. 深度学习,究竟该如何学?
  5. 【Python刷题】_10
  6. Anaconda中快速安装Tensorflow与Keras并在pycharm中完成相应配置(win10cpu版)
  7. 详解Numpy的广播机制
  8. 算法工程师和算法框架开发,谁会代表未来?
  9. Python中的if __name__ == ‘__main__‘
  10. Docker源码分析(五):Docker Server的创建