(3)-Halcon 数据结构介绍

图片

Halcon有两类基本数据:图形变量Iconic(image、region、XLD)与控制变量Control(string、integer、real、Handle)。所有算子的参数都是以相同的方式排列:输入图像,输出图像,输入控制变量,输出控制变量。当然并非所有的算子都有四类参数,不过参数排列的顺序都是相同的。

HALCON算子参数排列顺序

图片

图片

输入图像:输出图像:输入控制:输出控制

并非所有的算子都有四类参数,不过参数排列的顺序依次相同

图形变量参数:image

图片

 根据每个像素信息不同,通常将图形分为:二值图像、灰度图像、rgb图像

image 是由一个或多个通道组成,灰度图是一个通道像素点存放在一个矩阵;

彩色图是三通道像素点存放在通道矩阵中。

Image Type:

Byte complex cyclic direction int1 int2 int4 int8 uint2 real等

常用的有:

Byte 2的8次方 最大时255

Real  2的32或64次方 3D中常用

图形变量参数:region

图片

一堆像素的集合,但他们的范围不受图像(image)大小的限制,可以大于图形尺寸的范围。且region中的像素不一定要相连,也就是说任意形状的像元集合都可以成为一个region。

图形变量参数:XLD

图片

 图形变量Image和区域region这些数据结构是像素精度,在实际工业应用中需要比图像像素分辨率更高的精度这时就需要提取亚像素精度数据。

 XLD可以理解为一连串的坐标串列,相邻的两个点之间以直线连接。由于图形均使用像素点存,而像素点是整型数据。HALCON做了拓展,定义了亚像素(subPixel)描述几何轮廓的对象:XLD,主要用于亚像素测量的背景下,可用于提取边缘,构建轮廓等等,XLD在模板匹配、图形校准等多方面又重要的用途。

XLD有两种

Contours轮廓是一系列的点连接,点之间的距离大约是一个像素

Polygons多边形,点之间的距离较大,是用最少的线来描述这个轮廓

下图来直观的看一下region和xld,在图像上表现的不同:

这个是region,它是用每个小方块(像素)组成的:

 

 这个是xld,可以看到线和每个像素(小方块)会有不同的交点,这是haolcon自己计算的:

 

 XLD代表亚像素级别的轮廓或者多边形。

XDL就是一个轮廓函数,它不是基于像素,人们通常称他为亚像素,只不过它比像素更精确,可以精确到像素内部的一种描述。

在Halcon中,使用XLD表示亚像素的轮廓和多边形。常用edges_sub_pix算子来提取亚像素轮廓。
       我们都知道图片是由像素组成,当我们用halcon读取图像Image或者region的时候,获得的数据就是像素。这些数据结构都是像素级别的。
       获得图像后,我们可以通过亚像素阈值分割或者亚像素边缘提取,这样这些处理得到的结果其实就是用亚像素轮廓来表示。。
       上述所述亚像素轮廓其实在halcon中指的就是xld,它可以表示直线或多边形,是一组有序的控制点集合,控制点顺序用来说明彼此相连的关系。
 

控制参数变量:string、integer、real

HALCON赋值是:= 其它计算机语言是=

 Integer型 

图片

HALCON 中number型数据类型是计算机语言double型

图片

字符串,注意在HALCON中是使用 '     ' 单引号

图片

控制参数变量:Tuple

Tuple(数组)其中的数据类型可以是Control参数类型的整形、实数型、字符串型三种变量之一;甚至是三种类型的混合。Tuple的数据不仅可以为Control类型数据,也可以是图形(Iconic)参数类型数据。

针对刚学习的做个数组的补充,数组相当于把很多数据打包起来,方便我们使用。如图可以理解为把很多节电池进行封装,方便取放。

图片

 当tuple中的数据为iconic参数类型时,最小索引是1,当为Control参数类型时,最小索引是0。

图形参数:Handle

  Handle(句柄)是用于管理一组复合数据的变量

    为了程序设计的方便性,该变量只通过唯一的值来标识;例如:窗口、保存创建的模板、采集相机等均以handle来标识要操作的对象

窗口ID

图片

模板匹配ID

图片

 2、VC++下数据类型

2.1 图形数据

Hobject:把图像数据封装成类的一种形式,包含hdevelep下的image、region、Xld。

// 判断数据是否为空和清空数据       

HObject image;

       image.Clear();                                  //清空数据

       if (image.Key()==UNDEF_KEY)         //判断图形数据是否为空

       {

              //如果为空执行这语句

       }

2.2 控制数据

HTuple,Hlong(整型数据的另一种形式),包含hdevelep下的所有控制数据。
   

   //数组赋值

       HTuple array;

       array.Clear();//清空元组数据

       array[0]=0;

       array[1]=1;

       array[2]=2;

       array[3]=3;

       array[4]=4;

       array[5]=5;

       HTuple array1;

       array1[0]=10;

       array1[1]=11;

       array1[2]=12;

       array1[3]=13;

// 数组基本操作算子

       //数组基本操作算子

       TupleConcat(array,array1,&array);  //将两个数组连接

       HTuple length;

       TupleLength(array,&length);        //得到数组长度

       HTuple selected,i=6;

       TupleSelect(array,i,&selected);    //选取数组中第i个元素

       TupleRemove(array,i,&array);       //移除数组中第i个元素

// VC++数据类型与Halcon数据类型转换

       halconInt=20;

       halconDouble=13.14;

       halconString="liu zhi";

      

       //halcon类型转换为vc++类型

       vcInt=halconInt[0].I();

       vcDouble=halconDouble[0].D();

       vcString=halconString[0].S();

      

       //vc++转换为halcon类型

       halconInt.Clear();

       halconDouble.Clear();

       halconString.Clear();

 

       halconInt=(HTuple)vcInt;

       halconDouble=(HTuple)vcDouble;

       //halconString=(HTuple)vcString;

// 判断数据是否为空和清空数据

       //判断数组是否为空,清空数组

       array.TupleLength(); //为0数组为空,大于0不为空

       array.Clear();       //清空数组元素

2.3. 易错难点


halcon数据类型在hdevelop与vc++中变量定义区别:在hedevdlop中一般不需要定义变量,会根据算子自动转换成相应的数据类型;VC++定义变量有两种类型,图形数据Hobject,控制数据HTuple。
 

参考:https://mp.weixin.qq.com/s/xs_Hfuasp45alZ4BW0RGBQ

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Halcon 3D是一种三维视觉软件,能够进行三维物体检测、三维重建、三维匹配等操作。Halcon 3D源码是由该软件的开发团队开发的,可以通过官方网站获得。 Halcon 3D源码可以提供给开发人员进行自定义开发和定制,为用户提供更强大、灵活和个性化的功能。Halcon 3D源码包含了各种算法和数据结构,如匹配算法、三维重建算法等,开发者可以根据自己的需求进行调整和修改。 使用Halcon 3D源码需要具备一定的编程经验和计算机视觉知识,因为它需要使用C++语言进行开发。同时,也需要掌握一些计算机图形学、数学和物理学等方面的知识。但是,Halcon 3D源码提供了文档和实例代码,让开发者可以更快速更好地理解和使用它。 总之,Halcon 3D源码提供了一种高度自由的平台,用户可以基于此平台,快速地开发自己的三维视觉应用。同时,由于Halcon 3D源码是由专业的开发团队开发的,因此它具有高度稳定性和可靠性,可以满足各种商业应用的需求。 ### 回答2: Halcon 3D 源码是一种基于 HDevelop 的工具,用于处理三维视觉数据和成像分析。该源码提供了一种强大的方法和工具,可用于创建高质量的 3D 模型、进行形状分析、进行测量分析、进行物体定位和识别等应用。 Halcon 3D 源码主要包括以下几个部分: 1.三维图像采集:该部分包括从 3D 相机和激光扫描仪中获取数据的相关代码。 2.三维数据处理:该部分包括对 3D 数据进行预处理、分割、滤波、重构、注册等相关代码。 3.三维成像分析:该部分包括对 3D 模型进行形状分析、测量分析、物体定位和识别等相关代码。 4.三维可视化:该部分包括将处理得到的 3D 数据进行可视化表示的相关代码。 Halcon 3D 源码的使用需要一定的编程知识和实践经验,同时需要对 3D 图像处理和成像分析有一定的了解。对于初学者来说,建议先学习相关的基础知识,例如 3D 向量和矩阵运算、点云处理、三角剖分算法等。 总之,Halcon 3D 源码是一种非常强大的工具,可用于处理三维视觉数据和成像分析。它的使用需要一定的编程技能和实践经验,但值得潜心学习和掌握。 ### 回答3: Halcon 3D源码是一种基于Halcon软件,提供三维视觉处理的源码。Halcon软件是由MVTec公司开发的高性能计算机视觉库,提供了丰富的图像处理、分析和识别功能,广泛应用于工业自动化、医疗设备、安防监控等领域。 Halcon 3D源码通过Halcon软件的基本功能,结合三维立体几何变换,实现了三维测量、点云处理、三维重建、三维搜索和三维定位等功能。用户可以使用Halcon 3D源码来处理从不同传感器获得的三维数据,如激光扫描、TOF相机、结构光相机等,从而实现高效、精确、可靠的三维视觉处理。 Halcon 3D源码具有以下优点: 1.高性能:通过利用Halcon软件的高性能计算能力,能够处理大规模的三维数据,实现快速、准确的三维测量和分析。 2.开放性:Halcon 3D源码是一种开放的源码,用户可以根据自己的需求和特定应用场景进行定制和改进。 3.功能丰富:Halcon 3D源码提供了多种三维测量、重建、搜索和定位的功能,适用于不同场景下的应用需求。 4.易用性:Halcon 3D源码通过图形界面和API接口进行操作,用户可以方便地进行编程和应用开发。 总之,Halcon 3D源码是一种功能强大、性能优越的三维视觉处理源码,为工业自动化、医疗设备、安防监控等领域的应用提供了良好的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值