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 句柄:句柄则可以用来描述窗体、文件等等,句柄不能是常量。
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读总结
以上是生活随笔为你收集整理的Halcon基础知识:常规数据、对象数据、对象元组的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 关于雅可比迭代的Python实现
- 下一篇: Halcon初学者知识:用set_pai