halcon知识点

合集下载

halcon 数学运算

halcon 数学运算

halcon 数学运算【1.HALCON简介】HALCON(Hardware Abstraction Layer for Control Networks)是一款由德国不伦瑞克大学开发的开源软件,用于嵌入式系统的控制和监控。

它提供了一种硬件抽象层,使得开发者可以编写与特定硬件无关的程序。

在实际应用中,HALCON广泛应用于机器视觉、运动控制等领域。

【2.HALCON数学运算基础】在HALCON中,数学运算主要通过内置的数学函数库实现。

这些函数可以处理各种数学问题,包括算术运算、三角函数、对数、指数、逻辑运算等。

为了方便使用,HALCON将这些函数分为几个类别,如基本函数、统计函数、矩阵函数等。

【3.HALCON中的常用数学函数】以下是一些在HALCON中常用的数学函数:- 算术运算:+、-、*、/、%、^- 三角函数:sin、cos、tan、asin、acos、atan- 对数与指数函数:log、log10、exp、sqrt- 随机数生成:rand、randn- 统计函数:mean、stddev、var、sum、prod- 矩阵函数:矩阵加法、矩阵乘法、矩阵转置、行列式、逆矩阵【4.实例演示】以下是一个简单的HALCON程序,演示了如何使用数学函数:```PROGRAM exampleVARi : INT;j : INT;sum : REAL;product : REAL;matrix1 : MAT(3, 3);matrix2 : MAT(3, 3);matrix3 : MAT(3, 3);END_VARFOR i := 1 TO 3 DOFOR j := 1 TO 3 DOmatrix1(i, j) := i * j;END_FOR;END_FOR;sum := 0;FOR i := 1 TO 3 DOsum := sum + matrix1(i, 1); END_FOR;product := 1;FOR i := 1 TO 3 DOproduct := product * matrix1(1, i);END_FOR;matrix2 := matrix1 * matrix1;PRINT "矩阵1:"; matrix1;PRINT "矩阵2:"; matrix2;END_PROGRAM```【5.总结与建议】HALCON提供了丰富的数学函数,可以帮助开发者轻松实现各种数学运算。

Halcon学习笔记

Halcon学习笔记

Halcon学习笔记1、Halcon的自我描述Program LogicEach program consists of a sequence of HALCON operatorsThe program can be structured into proceduresThe sequence can be extended by using control operators like if, for, repeat, or while The results of the operators are passed via variablesNo implicit data passing is appliedInput parameters of operators can be variables or expressionsOutput parameters are always variablesHDevelop has no features to design a graphical user interfaceAn HDevelop program is considered as a prototypic solution of the vision part of an applicationHDevelop is typically not used for the final application由此可以看出,Halcon的定位是一个类库,有着完整、快速实现函数,同时提供了HDevelop 作为快速开发的图形化(IDE)界面;但是,Halcon程序并不是一个完整的最终应用软件,它没有用户界面,也不提供显示的数据(公用的数据格式)。

Halcon的初学者也应当从参考Halcon的程序入手,熟悉Halcon类库,也即HDevelop-Based Programming;在此基础上,进入ORClass-Oriented Programming。

HALCON函数介绍

HALCON函数介绍

HALCON函数介绍HALCON函数介绍(转)sobel_amp( Image : EdgeAmplitude : FilterType, Size : )根据图像的一次导数计算图像的边缘close_edges( Edges, EdgeImage : RegionResult : MinAmplitude : )close_edges_length( Edges, Gradient : ClosedEdges : MinAmplitude, MaxGapLength : ) 使用边缘高度图像关闭边缘间隙。

输出的区域包含杯关闭的区域。

(感觉是对边缘的扩充)derivate_gauss( Image : DerivGauss : Sigma, Component : )watersheds( Image : Basins, Watersheds : : )从图像中提取风水岭。

zero_crossing( Image : RegionCrossing : : )零交点(二次导数)diff_of_gauss( Image : DiffOfGauss : Sigma, SigFactor : )近似日志算子( 拉普拉斯高斯) 。

laplace_of_gauss( Image : ImageLaplace : Sigma : )拉普拉斯高斯edges_color_sub_pix( Image : Edges : Filter, Alpha, Low, High : )精确的亚像素边缘提取(彩色图像)edges_sub_pix( Image : Edges : Filter, Alpha, Low, High : )精确边缘提取的亚像素(灰度图像)edges_color( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )根据颜色进行边缘提取edges_image( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )边缘提取skeleton( Region : Skeleton : : )计算区域的框架Skeleton == Regionfrei_amp( Image : ImageEdgeAmp : : )Frei-chen模板进行边缘检测(振幅)frei_dir( Image : ImageEdgeAmp, ImageEdgeDir : : ) Frei-chen 模板进行边缘检测(振幅和方向)nonmax_suppression_dir( ImgAmp, ImgDir : ImageResult : Mode : )使用方向图像抑制所有的超过给定最大值的图像灰度值的点gen_contours_skeleton_xld( Skeleton : Contours : Length, Mode : ) 将系统框架转换成XLD轮廓laplace( Image : ImageLaplace : ResultType, MaskSize, FilterMask : )使用有限差分计算拉普拉斯变换info_edges( : : Filter, Mode, Alpha : Size, Coeffs )估计滤波器的宽度kirsch_dir( Image : ImageEdgeAmp, ImageEdgeDir : : )使用Kirsch算子计算出边缘(振幅和方向)prewitt_amp( Image : ImageEdgeAmp : : )使用Prewitt 算子计算出边缘(振幅)kirsch_amp( Image : ImageEdgeAmp : : ) 使用Kirsch 算子计算出边缘(振幅)highpass_image( Image : Highpass : Width, Height : )从高频成分提取的图像。

halcon笔记

halcon笔记
Chapter 1 Introduction
1、What Basic Knowledge Do You Need for 3D Vision(chapter 2 and chapter 3 ) (1)camera calibration (相机标定) Using a camera calibration, you can transform image processing results into arbitrary 3D coordinatesystems and thus derive metrical information from images, regardless of the position and orientation ofthe camera with respect to the object (2)chapter 2 on page 15 introduces you to the details on the camera model and parameters. (3) chapter 3 shows how to apply a general 3D vision task with a singlecamera in a specified plane.
• 2.2 Camera Model and Parameters//相机 模型与参数 • halcon支持两种相机:area scan cameras (区域扫描相机) 和 line scancameras (线扫描相机) • 与机器视觉相关的两种镜头: • pinhole camera model (小孔成像摄像机 模型)和 telecentriccamera model(远心 摄像机模型)
5、How Can You Extend 3D Vision to Robot Vision?//如何将3D视觉转换为机器视觉

halcon学习笔记

halcon学习笔记

halcon学习笔记1、HsmartWindow 报错问题2、HwindowCtronl绘制图形未结束⼜点击绘制导致错误3、论坛转贴常见问题4、找圆找线部分参数设置5、实现基于形状的模板匹配6、⼀维测量-卡尺7、直线/圆拟合---------------------------------------------------------------- 1-- HsmartWindow 控件除了会调⽤halcondonet.dll外还会调⽤halcon.dll,如果程序根⽬录不存在halcon.dll,则会通过全局变量找到halcon mevtec⽬录去调⽤,这样是没有问题的;如果根⽬录下存在halcon.dll,则会优先调⽤根⽬录下的⽂件,然后halcon.dll内部如果使⽤到HsmartWindow的功能,则还会调⽤⼀个Hcanvas.dll的⽂件,如果根⽬录下没有这个⽂件则会报错,程序编译后启动过程中报错,报错内容为:----------------------------------------------------------------------------------2- HsmartWindow不⽀持Draw开头的函数,只能在Hwindow上⾯画,在执⾏Draw函数的时候,程序停在该函数位置,未点击⿏标右键确认Draw Region之前,程序会⼀直停留,此时再执⾏其他的Draw函数,就会导致在整个流程乱掉,避免这种情况的⽅法是在每个Draw函数之前都调⽤⼀次HalconApi.CancelDraw()函数,结束上次未完成的绘制。

--------------------------------------------------------------------3--以下引⽤ihalcon学习⽹上帖⼦《转“Halcon基本问题解答”》----------------------------------------------------------2. 裁剪图像;从图像上截取某段图像进⾏保存。

halcon笔记

halcon笔记

t h r e sh o l d 按设置的阙值提取图像区域。

c o n n ec t i on合并所有选定像素触摸相互连通区。

S e l ec t_s h ap e选择区域面积(属性:'面积')在指定区间内。

S m a l le s t_r e ct a n gl e1计算每个区域的坐标(连续/栏)的包围矩形。

dilation_circle ( Region ,RegionDilation , Radius ) 膨胀Radius为半径complement ( Region , RegionComplement )反填充Region区域get_mbutton ( WindowHandle, &Row, &Column, &Button ) 等待至用户鼠标有输入,Row,和Column返回坐标,左键输入:Button=1;中键:Button=2;右键:Button=4set_tposittion(windowhandle,Row,Column)设置文本输出坐标mean_image ( Image : ImageMean : MaskWidth, MaskHeight : )取平均值平滑图像MaskWi dth &MaskHeight ∈ {3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101}select_region_point (ConnectRegion, OneObject, Row, Column)在连同区ConnectRegion中用坐标选中区域gauss_image ( Image : ImageGauss : Size : )高斯模糊图像,size:3,5,7,9,11sub_image ( ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : ) ImageSub=(ImageMinuend-ImageSubtrahend)*Mult+Add,增强两幅图像的差异elliptic_axis ( Regions : : : Ra, Rb, Phi ),计算Region区域中的椭圆参数decompose3 ( MultiChannelImage : Image1, Image2, Image3 : : )三通道图像转换为三个图像trans_from_rgb ( ImageRed, ImageGreen, ImageBlue :ImageResult1,ImageResult2, ImageResult3 : ColorSpace : )从一个rgb图像转换为一个任意格式图像difference ( Region, Sub : RegionDifference )计算两个区域的不同,并返回dev_update_pc ( DisplayMode) 设置程序是否总在前面,对置顶有作用(不支持C++代码) dev_update_window(DisplayMode) 默认状态下所有的对象(图像,区域,或XLD)都在活动图形窗口显示。

Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(⼀⽂学会halcon基础操作,总结⾃超⼈视觉)此⽂根据《超⼈视觉 halcon启蒙班》写成,结合图⽚和例程,直观简单地介绍halcon的最基本操作基础知识光学:⼏何光学,物理光学数学:导数为主的⾼等数学,矩阵论五种需求:1.识别定位2.符号识别:⼀⼆维码,OCR3.测量需求4.缺陷需求(最常见,难度最⼤)5.⼿眼标定和抓取(结合运动控制)图像处理⼀般思路1.采集2.预处理拉开灰度⼏何变换去噪:中值滤波,均值滤波,⾼斯滤波抠图3.图像分割⼆值化形态学特征选择ps:Halcon⾥区域和图像是不同概念4.识别显⽰5.通信三⼤数据类型图像,区域,XLD灰度直⽅图勾选“阈值”将灰度值在”绿线和红线之间”的以选定颜⾊进⾏填充将把圈定的阈值范围内的直⽅图均匀拉伸释放到整个直⽅图轴上数组语法* Simple tuple operationsTuple1 := [1,2,3,4,5]Number := |Tuple1|SingleElement := Tuple1[3]Part := Tuple1[1:3]Copy := Tuple1[0:|Tuple1| - 1]运⾏结果读取图⽚的四种⽅法1. ⽂件 -> 读取图⽚2. Image Acquisition -> ⾃动检测接⼝(刷新设备)-> Direct show,从摄像头直接读图3. Image Acquisition -> 选择⽂件,从图像⽂件中读取4. Image Acquisition -> 选择路径,结合正则表达式读取路径下的图⽚PS:⽤Image Acquisition读取时记得点击代码⽣成摄像头抓取模式:在可视化 -> 更新窗⼝中调整同步采集:实时抓取,⼀直抓取异步采集:只等图⽚处理完后,grab_image才开始抓取PS:更多信息包括双相机采集,可以在案例 -> ⽅法 -> 图像采集设备中学习ROI(感兴趣区域)特征检测PS:⼆值化之后的区域虽然不连通,但仍然认为是⼀个区域。

halcon知识点总结

halcon知识点总结

halcon知识点总结Halcon基本概念Halcon的全称是HALCON(Highly Optimized Computer Vision Algorithms), 是由MVTec Software GmbH公司开发的一款强大的视觉处理软件,为工业自动化领域提供了全面的解决方案。

这种软件广泛应用于制造业、半导体行业、电子产业、医药行业等领域,用于机器视觉系统的开发和部署。

Halcon具有以下几个基本概念:1. 图像处理Halcon是一种用于图像处理的软件,它提供了一系列的图像处理算法和工具,可以对图像进行预处理、分割、特征提取、匹配等操作,以满足各种不同的应用需求。

2. 机器视觉Halcon可以应用于机器视觉系统中,用于进行产品质量检测、物体识别和追踪、三维测量等操作,以提高生产效率和产品质量。

3. 算法优化Halcon提供了高度优化的图像处理算法,可以实现高性能和高效率的图像处理,适用于高速和复杂的生产环境。

特性Halcon具有以下一些重要的特性:1. 高性能Halcon使用了一系列高效的图像处理算法和数据结构,以实现高速的图像处理能力,能够满足各种不同的应用需求。

2. 多功能Halcon提供了丰富的图像处理和分析功能,可以用于多种不同的应用场景,如工业自动化、医疗影像、安防监控等。

3. 跨平台Halcon可以在多种不同的操作系统上运行,并且支持多种不同的开发语言和工具,可以轻松集成到现有的系统之中。

应用Halcon在多个领域都有广泛的应用,以下是一些典型的应用场景:1. 工业自动化在工业自动化领域,Halcon可以用于进行产品质量检测、零件识别和追踪、三维测量等操作,以提高生产效率和产品质量。

2. 医疗影像在医疗领域,Halcon可以用于进行医学影像处理和分析,如医学图像的识别、分割、量化分析等,以辅助医生进行诊断和治疗。

3. 安防监控在安防监控领域,Halcon可以用于进行行人识别、车辆识别、人脸识别等操作,以提高监控系统的识别能力和准确度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.无论读入什么图像,读入图像显示效果明显和原始图像不一致,哪怕是从相机读入的图像,也是明显颜色差异。

什么原因引起?初步诊断是,显示的时候调用的颜色查找表存在异常不是default,而是其它选项。

此时可以通过查阅相关参数,调用set_system解决,也可以在编辑-》参数选择-》颜色查找表进行更改。

2.裁剪图像;从图像上截取某段图像进行保存。

如何实现该操作?首先应该知道,region不具有单独构成图像的要素,他没有灰度值。

有用过opencv的应该知道ROI(感兴趣区域),设置好它后,对图像的大部分操作就转为图像的一个矩形区域内进行。

类似的,halcon有domain概念。

首先设置好一个矩形区,然后使用reduce_domain(是一个矩形区域)后,再使用crop_domain就裁剪出图像。

3.读入bmp,或tiff图像显示该图不是bmp文件或不能读。

原因是什么?这个常有新手询问,画图,图像管理器都能打开,又或者是相机采集完直接存到硬盘。

Halcon读取图像在windows下面到最后是调用windows库函数实现读图功能。

咱不清楚到底是怎么调用的。

对于图像格式,在读图函数F1说明很细。

基本bmp如果文件头不是bw还是bm(百度百科bmp格式查找,编写此处时无网络,后续可能忘记),就读不进来。

其他规格欢迎补充。

解决办法,如果是相机采集,就在内存直接转换(参见halcon到里面的halcon和bitmap互转);如果是采完的图片,大部分通过画图工具转换为24位bmp格式,即可解决。

4.读入avi文件报错。

Halcon通过directshow或另一个格式解析视频,正常来说应该可以读入市面大部分视频,实际测试发现只能读入最标准的avi文件格式。

如果需要临时处理,需要下格式工厂等工具转化为最标准的avi文件格式(论坛叶诺有发帖说明)。

5. Region或xld筛选。

Halcon提供了丰富的region和xld筛选方法。

Region可以使用select_shape_xld,选择出符合要求的区域,如果不能满足还可以通过类似region feature这样关键字组合成的算子获取区域特征,然后通过tuple排序或相加减,再通过tuple_find确定是对应哪个区域的特征。

同样的halcon也提供了select_contours_xld进行轮廓筛选。

6. Halcon分几类对象,每个类的功用是?Halcon总分俩大类,tuple和图标对象obj。

Tuple涵盖了对所有基础数据类型的封装,可以理解为她是halcon定义的数组类。

Obj是alcon定义图标类基类。

衍生出了许多类型,其中Region,Xld,Image其中最主要的类型。

7. F1说明,参数部分-array是什么意思?该符号说明,该参数接受一组输入,对tuple就是一组tuple,对obj就是通过concat_obj或其它操作产生的一组obj元组。

8.俩个相对方形物体的距离计算。

如果这俩个物体和背景对比清晰,最近的距离在俩条边下则可以再预处理之后进行如下操作:1. Segement_contours_xld分割边缘线段(edgeXXXX等得到的边缘);2. select_contours_xld选择出特定的长度或方向边缘;3.假设此时刚好获取俩条线,则可以利用distance_ll,求得距离,也可以自己fit_lineXXXX拟合直线再求距离;以上是一种方法,另一种常见方法是利用measure_pos或measure_pair进行测量,不熟悉的可以翻看示例或者使用测量助手进行测量。

9.创建过程或函数,或者全文编辑。

在算子编辑窗口,main所在行右边,有四个按钮,将鼠标移到该位置,将有中文提示,按提示点击按钮。

10.从其它halcon环境窗口复制函数或算子复制到新建的halcon窗口,无法使用,提示不识别。

除了敲错,此种情况都是由于该函数式本地或全局函数,而不是halcon算子。

确定的方法:注意该算子颜色然后去编辑参数选择查看该颜色代表的算子属于什么类型函数。

亦可以直接右键,如果有查看函数。

为黑色可点击,这种情况也是本地或全局函数。

解决方法:如果是全局函数,可以在halcon目录下面找到该函数,加载到新窗口就行;也可以新建输入输出一致的过程,将代码复制过来,然后使用。

本地函数只能使用后一种方法解决。

11. 64位系统,VS2010及以下版本报error LNK1112:模块计算机类型”X86”与目标计算机类型”X64”冲突。

问题原因是默认情况,halcon在64位系统会自动安装64位halcondll,并且添加到环境变量;而vs一般是默认X86编译环境,俩者dll库不一致,换句话说是底层机器指令不一致。

解决办法是将编译环境设置为64位,详见百度;或者再次安装halcon选择32位dll,并修改环境变量VC++路径为32位库路径,bin指向32位dll路径。

12. 64位系统,VS2012。

无论怎么更改库文件,头文件,名空间,最好的提示也是找不到函数定义。

反复出现,无法解决时,有可能是问题11所述问题,解决办法见11.至于为何不提示errorLNK1112,可能是VS更改了前面检测等级,在编译阶段就拦截到错误。

应该说是更先进了,只是比较不合情理。

13.如何查找halcon算子?Halcon算子命名大部分所见即所得,也就是如果你记得你要找的算子汉字名称,输入到翻译器得到英文单词,在F1的算子分栏从头开始输大部分能找到一些算子,这时候再点击进去注意算子功能解释,懂了是自己要的就拿起来到例程搜索示例,查阅功能;不懂就看说明部分;再不懂进群问。

另外,对于近半算子是按动作_类型/目标_属性命名。

Obj是region,xld,image的父类,后三者找不到的算子可以输入obj查找。

14. Halcon相等,不等于,异或,或等操作符。

直接在F1出来的分栏输入operation,查找可得。

15.在halcon环境使用get_grayval进行像素操作太慢,如何加速?注意到halcon环境是解释执行,get_grayval可以一次获取多个,可以预先把行数据存入一个tuple对象,存一次以后可用多次。

因此提速方法,建议事先创建好行tuple (用tuple_add加一,即可实现所有行加一),列的tuple数组(创建好可以用多次)。

这时每次再调用get_grayval,速度将显着提升,因为节省了逐行解释时间。

注意:如果导出到VC,则建议用get_image_pointer获取指针进行操作。

16.从一组region或xld,image中获取单个对象,或多个halcon同类对象构成-array元组。

select_obj负责从多个对象的元组选出指定序号对象;concat_obj执行将俩个对象(或元组)链接成一个对象元组。

17.更改halcon颜色查找表,显示不同颜色空间。

在编辑参数选择颜色查找表进行更改;也可以在F1输入lut进行查找设置函数。

18.创建空对象,空Region,空数组。

gen_empty_obj创建空的对象;gen_emtpy_region创建空数组;halcon环境中tuple用:=[]。

19. Region和xld互相转化;多边形创建xld;直方图,直线,点集,多边形,行程编码创建region。

Halcon里对象之间的相互转换,一般可以转化为gen_目标对象_源对象形式。

如:gen_region_contour_xld使用xld创建一个region;gen_contour_region_xld从区域region创建一个轮廓xld。

直方图histo;直线是line,点集是points,行程编码runs,黑森线hline,多边形polygon。

按照上面格式进行查找。

20. Halcon伪彩色可以参照冈萨雷斯伪彩色章节。

21. Halcon角度分布22.判断Region是否为空?首先一般region是多个region存在一个regions变量里面。

所以先使用count_obj获得有多少个obj;然后使用select_obj,选出一个区域处理;接着使用area_center,VC可以使用()!=H_EMPTY_REGION判断是否为空。

23.新手入门书籍?首推《机器视觉算法与应用》,这本书前面更多的是阐述一些通用的机器视觉经验,后面有跟示例,代码为,实际使用可能会有部分函数已经被抛弃使用;其次,冈萨雷斯绿皮书《数字图像处理》,介绍内容丰富,全面,但是可能讲得比较深,没有实际实践或再找资料展开会比较,常读不深入。

是数字图像处理基础理论不可多得的书籍。

24.用halcon调用halcon支持的品牌相机,使用相机自带的厂家软件可以发现相机,可是halcon总是提示:图像获取设备未初始化。

这是为什么?把对应品牌的相机配置文件加到采集助手的使当前halcon调用的相机参数与厂家软件一致;再确保相机驱动,采集卡驱动安装完毕。

25.屏幕/窗口截图。

使用dump_window_image保存对应窗口截图,截图为当前肉眼所见图像,包括已经绘制到图像上的region,xld等。

26.导出halcon 11代码为C++代码,经常提示不识别,或者名空间名字没找到。

解决办法是什么?首先halcon11导出如果没有勾选10,默认产生的C++代码,对应的主要头文件是和using namespace HalconCPP。

配置如下头文件#include “” ,代码在导出时已经自动生成。

using namespace HalconCPP;代码导出时已经自动生成。

在VC++目录,配置include路径,一个是默认Halcon安装文件夹下面的include,另外一个根据你导出的代码而定,上面是halconCPP,所以对应添加include文件夹下面的HalconCPP文件夹到路径里面。

此外配置将安装文件夹下的lib添加到库文件目录。

最后将添加到库的依赖项。

注意此处要一句导出代码而定,上述导出的是halcon -C++代码,所以是此处添加该项。

27.标定助手的“平均误差”是指什么?这个平均误差的计算是按如下方式:1.计算标定板图像的标志点位置,此处记为Mark1;2.标定结束后,将标准标志点,按照得出的转换矩阵,进行转换得到Mark2;3.由于可以得到Mark1和Mark2点之间对应关系,点对应相减,绝对值累加(此处累加方式请具体查标定程序查找具体平均误差计算函数,很久,已记忆不详),然后除以标志点数目。

4.此时得到的就是平均误差。

28. Halcon参数函数里面的四个冒号(::::)是什么意思?四个冒号按照参数类型和输入输出不同进行了分隔。

从左到右依次是(输入的obj对象:输出的obkj对象:输入的控制变量:输出的控制变量)。

相关文档
最新文档