一、HALCON数据结构简介
1、HALCON中有两类参数:图形参数和控制参数。
2、HALCON算子参数中,图形输入参数、图形输出参数、控制输入参数和控制输出参数。
3、图形参数有:图像(image)、区域(region)和轮廓(XLD)
4、控制参数有:整型(integer)、实型(real)、布尔类型(boolean)、字符串类型(string)、数组(tuple)、向量(vector)和句柄(handle)
二、图形参数
1、图像(image)
图像由像素、通道和域三个部分组成。
1.1像素类型
灰度图像:byte(8位无符号)和uint2(16位无符号)
差异图像(两帧图像之间):int1(8位有符号)和int2(16位有符号)
边缘提取(图像求导):real(32位浮点数)
2D直方图(灰度频谱):int4(32位有符号数)
边缘梯度方向:direction(8位无符号数)
频域(傅里叶变换):complex(每个像素用2个real值)
色相:cyclic(8位无符号) 当增加一个像素值超过255时,它被移到光谱的另一端
描述X方向或Y方向的运动:vector_field(由x和y方向的两个real类型的图像组成)
1.2通道
单通道图像(灰度值图像):对于灰度图像,每个像素上只存储一个值。比如,灰度值代表着传感器上的一个局部光强值。
三通道图像(RGB图像等):对于彩色图像,像素值通常存储在三个通道中。每个通道表示各自像素(RGB图像)的红色、绿色或蓝色光的强度。
1.3域
为了将重点放在感兴趣的区域(ROI)或着加快操作速度,可以将域缩小到图像的相应部分。
2、区域(region)
区域被定义为一组像素。它可以表示一幅图像中任意的像素子集。
可以应用blob分析或定义感兴趣的区域(ROI)进行亚像素精度的操作。
3、轮廓(XLD)
XLD是eXtended Line Description的缩写,包括轮廓和多边形。
亚像素精度轮廓可以通过亚像素阈值分割或者亚像素边缘提取来获得。
轮廓是用浮点数数组来表示的(包括横坐标数组和纵坐标数组)。
可以使用亚像素精度的轮廓来进行一些测量。
三、控制参数
1、整型(integer)
i1 := -10 //十进制数
i2 := 017 //八进制数
i3 := 0x1f //十六进制数
2、实型(real)
r1 := 0.38
r2 := -0.38e2
3、布尔类型(boolean)
b1 :=true //真:1
b2 :=false //假:0
4、字符串类型(string)
c := 'hello world!'
5、数组(tuple)
tuple1 := [1,2,3,4,5] //整型数组
tuple2 := [0.13,0.35,0.57] //实型数组
tuple3 := ['aaa','bbb','ccc'] //字符串数组
tuple4 := [10,0.1,'abc'] //混合数组
6、向量(vector)
Vtuple :={} //创建向量
Vtuple.at(0) := tuple1 //往向量中添加第一个元素
Vtuple.at(1) := tuple2 //往向量中添加第一个元素
Vtuple_Length := Vtuple.length() //向量的大小
7、句柄(handle)
create_dict (DictHandle) //创建字典句柄
set_dict_tuple (DictHandle, 'a', 1) //向字典中添加一个键值对