文档库 最新最全的文档下载
当前位置:文档库 › HALCON使用手册简体中文版

HALCON使用手册简体中文版

HALCON使用手册简体中文版
HALCON使用手册简体中文版

halcon知识点

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到VC.pdf 里面的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. 俩个相对方形物体的距离计算。 如果这俩个物体和背景对比清晰,最近的距离在俩条边下则可以再预处理之后进行如下操作:

Halcon_VC相关

如何使用VC在Halcon中得到像素的信息 作者:支源,时间2007-3-16 Halcon的强大功能使我们省去很多图像处理(机器视觉)中的很多麻烦而又重复性的工作。但是,面向不同的应用,应该编写自己最核心的算法,从而达到最佳的处理效果;而且Halcon并不可能把各种情况都考虑进去。以下是我初步入门Halcon和VC的一点感触和想法,已经被实验证明了是正确的。 1,在VC中,使用Halcon打开图像文件,这里要注意read_image()和get_image_pointer1()指令被HDevelop翻译过来以后如下: Hobject Image HTuple Pointer, Type, Width, Height get_image_pointer1(Image, &Pointer, &Type, &Width, &Height); VC中如下声明: Halcon::Hobject Image Halcon::HTuple Pointer, Type, Width, Height VC中也可以如下声明使用: Hobject Image Char lpcsType[MAX_STRING] Hlong Pointer, Width, Height 或long Width, Height (如果定义为HTuple Pointer ; Hlong Width, Height; 编译会出现错误; 使用Halcon::HTuple Pointer, Type, Width, Height的话,后续中需要 图像的高宽时,强制类型转换不可用; 当然Hlong可以换成long,推荐使用Hlong。) get_image_pointer1(Image, &Pointer, lpcsType, &Width, &Height); 这里注意,在VC中如果get_image_pointer1( )中的字节类型使用tuple变量,那么Width和Height也必须使用tuple变量,否则编译时候容易出错误,至于原因是什么,可能halcon编译的时候需要各个参数的类型形式一致。 2,tuple类型的返回指针Pointer指向图像数据区域(如果是彩色则指向色彩的第一通道),图像的RGB色彩存放是同一种色彩信号最放在一起。注意Pointer所指向区域的大小比图像必须的色彩信息要大许多,这里可能是因为必须为tuple变量定义一定的类型限制,从而使用的空间变大了(由于不了解tuple的内部存储格式,所以不敢断定)。请看下面一段例子程序:使用Halcon,把彩色图像转化为灰度图像,然后使用Pointer指针得到灰度图像并显示,包括在VC窗口中进行显示部分。 using namespace Halcon; char lpcsType[MAX_STRING]; Hlong PointerGray,WidthGray, HeightGray; rgb1_to_gray(objImage, &objImageGray); get_image_pointer1(objImage, &PointerGray, lpcsType, &WidthGray, &HeightGray); BYTE * lpByte; BYTE * ImageGray; int bytewidth; bytewidth = ((long) WidthGray * 3 + 3 ) / 4 * 4 ;

halcon相机标定和测量示例

Halcon单相机标定和测量示例相机标定有很多方式:九点标定法、棋盘格标定法、圆形阵列标定法;本次采用圆形阵列标定法。 1Halcon相机标定 1.1标定板描述文件编制 此次相机标定采用的是网购的标定板(直接在万能的某宝搜halcon标定板),如图1。采购的时候卖家会提供标定板的相应参数,如图2。 图1标定板 图 2 标定板参数

用halcon标定助手标定的时候需要用到标定板的描述文件,此文件可以用gen_caltab算子自己编制。如下为函数说明:gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : ) 函数说明:创建一个标定文件和相应的脚本文件。 函数参数: Xnum:输入X方向标记(圆点)的数量,Xnum>1; Ynum:输入Y方向标记(圆点)的数量,Ynum>1; MarkDist:标记圆圆心间距离,单位“m”;(我看过一个资料翻译为标记点大小,差点被坑死) DiameterRatio:两标记点距离和标记直径的比值,默认:0.5。0

vb连接halcon读取图像

halcon基本,vb连接halcon读取图像,视频 halcon学习方法:安装完halcon之后,在开始里出现一些文档 quick_guide.pdf 快速入门halcon hdevelop_users_guide.pdf 详细讲解在hdevelop中使用halcon,及hdevelop的操作 programmers_guide.pdf 详细讲解在高级语言中的使用halcon reference_hdevelop.pdf 讲解各个算子、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、vb中使用halcon窗口加载图像 1.读取图像 [cpp]view plaincopyprint? 1.read_image (Lena, 'F:/image/lena.jpg') 2.get_image_size (Lena, Width, Height) 3.dev_close_window () 4.dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle) 5.set_display_font (WindowHandle, 14, 'mono', 'true', 'false') 6.dev_display (Lena) 7.disp_continue_message (WindowHandle, 'black', 'true') 8.stop () 2.导出vb的bas代码 选择文件/导出,弹出

注意:此处选择使用halcon窗口 3.vb中调用read_image.bas 先看一下read_image.bas的内容,可知在需要的地方直接调用main即可 [vb]view plaincopyprint? 1.... 2. 3.' Main procedure 4.Private Sub action() 5. 6. ' Local iconic variables 7. Dim ho_Lena As HUntypedObjectX 8. 9. 10. ' Local control variables 11. Dim hv_Width As Variant, hv_Height As Variant 12. Dim hv_WindowHandle As Variant 13. 14. 15. Call Op.ReadImage(ho_Lena, "F:/image/lena.jpg") 16. Call Op.GetImageSize(ho_Lena, hv_Width, hv_Height) 17. If COMExpWinHandleStack.IsOpen() Then 18. Op.CloseWindow (COMExpWinHandleStack.Pop()) 19. End If 20. Call Op.SetWindowAttr("background_color", "black") 21. Call Op.OpenWindow(0, 0, Tuple.TupleDiv( _ 22. hv_Width, 2), Tuple.TupleDiv(hv_Height, 2), 0, "", "", hv_WindowHandle) 23. COMExpWinHandleStack.Push (hv_WindowHandle) 24. Call set_display_font(hv_WindowHandle, 14, "mono", "true", "false") 25. If COMExpWinHandleStack.IsOpen() Then 26. Call Op.DispObj(ho_Lena, COMExpWinHandleStack.GetActive()) 27. End If 28. Call disp_continue_message(hv_WindowHandle, "black", "true") 29. HDevelopStop 30.End Sub 31. 32. 33. 34.#If Not NO_EXPORT_APP_MAIN Then 35.Sub InitHalcon() 36. ' Default settings used in HDevelop 37. Call Op.SetSystem("do_low_error", "false") 38.End Sub 39. 40.Sub Main() 41. Call InitHalcon 42. Call action 43.End Sub 44. 45.#End If

注释的HALCON的标定校正程序

注释的HALCON的程序 时间:2015-11-12 13:25:58阅读:4评论:0收藏:0[点我收藏+]标签:des si代码it la sp文件数据ha *关闭窗口 dev_close_window () dev_close_window () *打开指定大小、颜色背景的窗口 dev_open_window (0, 0, 768/2, 576/2, ‘black‘, WindowHandle1) dev_update_pc (‘off‘) dev_update_window (‘off‘) dev_update_var (‘off‘) dev_update_time (‘off‘) dev_set_draw (‘margin‘) dev_set_line_width (3) * * Calibrate the camera.(标定相机)步骤一 * * 标定板描述文件 CaltabName := ‘caltab_big.descr‘ * make sure that the file ‘CaltabDescrName‘ is in the current directory, * the HALCONROOT/calib directory, or use an absolut path

*初始相机参数:焦距、畸变系数Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight StartCamPar := [0.008,0,0.0000086,0.0000086,384,288,768,576] *物体在空间坐标系中的位姿数组 NStartPose := [] *行角点数组 NRow := [] *列角点数组 NCol := [] *X、Y、Z从标定表文件获取计算值 caltab_points (CaltabName, X, Y, Z) *创建空的图像元组 gen_empty_obj (Images) *图像的数目 NumImages := 10 *接下来for循环,依次读取、处理NumImages张图像 for I := 1 to NumImages by 1 *读取图像:Image得到图像数据 read_image (Image, ‘calib/calib-3d-coord-‘+I$‘02d‘) *将单个Image加入元组Images中 concat_obj (Images, Image, Images) *显示Image dev_display (Image) *在图像中找到标定板的区域:图像,标定板描述文件,滤波核大小,二值化值

Halcon标定文件资料地生成及标定板规格

Halcon标定文件的生成 Halcon标定文件的生成 图一 Halcon标定文件的生成,需要有以下几个步骤: 1.创建一个标定数据模板,由create_calib_data算来完成。 2.指定相机的类型,初始化相机内部参数,由set_calib_data_cam_param算子来完成。 3.指定标定板的描述文件,由set_calib_data_calib_object算子完成。 4.收集观察数据,有算子set_calib_data_observ_points完成。也就是收集标定板上圆点的中心坐标,跟各个校正板的位置姿态。 5.配置校正过程。由算子set_calib_data完成。 6.将数据整合进行标定计算。calibrate_cameras 7.获得标定参数。get_calib_data 8.记录标定参数,write_cam_par

StartCamPar := [0.016, 0, 0.0000074, 0.0000074, 326, 247, 652, 494] 解释一下这个数组的意思。 面阵相机有14或18个参数(根据想相机的畸变模式),对于线阵相机有17个参数。这些参数可以分开为内部相机参数、外部相机参数。 面阵相机(division模式): Focus(焦距):远焦镜头镜头焦距的长度 Kappa:扭曲系数 Sx,Sy:两像素间距 Cx,Cy:中心点坐标 Whith,Height:图像的宽高 面阵相机(polynomia模式): Focus(焦距):远焦镜头镜头焦距的长度 K1, K2, K3, P1,P2:扭曲系数 Sx,Sy:两像素间距 Cx,Cy:中心点坐标 Whith,Height:图像的宽高 线阵相机不做具体介绍 Halcon标定板规格 2011-12-23 12:56 68人阅读评论(1) 收藏举报

halcon单摄像机标定

In the reference manual,operator signatures are visualized in the following way: operator ( iconic input : iconic output : control input : control output ) 在HALCON所有算子中,变量皆是如上格式,即:图像输入:图像输出:控制输入:控制输出,其中四个参数任意一个可以为空。控制输入量可以是变量、常量、表达式,控制输出以及图像输入和输入必须是变量,以存入算子计算结果中。 1.caltab_points:从标定板中读取marks中心坐标,该坐标值是标定板坐标系统里的坐标值,该坐标系统以标定板为参照,向右为X正,下为Y正,垂直标定板向下为Z正。该算子控制输出为标定板中心3D坐标。 2.create_calib_data:创建Halcon标定数据模型。输出 一个输出数据模型句柄。 3.set_calib_data_cam_param:设定相机标定数据模型中设置相机参数的原始值和类型。设置索引,类型,以及相机的原始内参数等。 4.set_calib_data_calib_object:在标定模型中设定标定对象。设定标定对象句柄索引,标定板坐标点储存地址。 5.find_caltab:分割出图像中的标准标定板区域。输出为标准的标定区域,控制 6.find_marks_and_pose:抽取标定点并计算相机的内参数。输出MARKS 坐标数组,以及估算的相机外参数。 即标定板在相机坐标系中的位姿,由3个平移量和3个旋转量构成。 7.set_calib_data_observ_points( : : CalibDataID, CameraId x, CalibObjIdx,CalibObjPoseIdx, Row, Column, Index, Pose : ) 收集算子6的标定数据,将标定数据储存在标定数据模型中。输入控制分别为标定数据模型句柄,相机索引,标定板索引,位姿索引,行列坐标,位姿。

Halcon机器视觉二维码实例及分步注解

Halcon机器视觉二维码实例及分步注解 [plain]view plaincopy 1.*2D Code generated by Image Acquisition01 2.*QR Code 3.dev_close_window() 4.dev_open_window(0,0,400,400,'black',WindowHandle) 5.*先关闭活动图形窗口,再打开这个窗口,标识符为WindowHandle; 6.*相对于界面左上角第0行、第0列,大小为400×400像素,颜色为黑色。 7.open_framegrabber('DirectShow',1,1,0,0,0,0,'default',8,'rgb',-1,'false','defa ult','Gsou USB2.0Camera',0,-1,AcqHandle) 8.*打开帧接收器(图像采集设备,如摄像头,工业相机等),参数(Parameter)详见这个算子 9.*注意摄像头的名称,可以用工具栏中的“助手”——打开新的Image Acquisition获取摄像头及插入代码 10.grab_image_start(AcqHandle,-1) 11.while(true) 12.grab_image_async(Image,AcqHandle,-1) 13.create_data_code_2d_model('QR Code',[],[],DataCodeHandle) 14.*二维码的创建开头的算子,clear为结束清除的算子,见下。 15.set_display_font(WindowHandle,16,'mono','true','false') 16.dev_set_color('forest green') 17.dev_set_draw('margin') 18.dev_set_line_width(3) 19.set_data_code_2d_param(DataCodeHandle,'default_parameters','enhanced_recognition') 20.*设置选定参数的二维数据模型,参数详见这个算子 21.find_data_code_2d(Image,SymbolXLDs,DataCodeHandle,[],[],ResultHandles,DecodedDa taStrings) 22.*检测和读取二维代码符号,也支持读取二维数据模型的序列,参数详见这个算子 23.for i:=0to|ResultHandles|-1by1 24.select_obj(SymbolXLDs,SymbolXLD,i+1) 25.get_contour_xld(SymbolXLD,Row,Col) 26.get_string_extents(WindowHandle,DecodedDataStrings[i],Ascent,Descent,TxtWidth ,TxtHeight) 27.disp_message(WindowHandle,DecodedDataStrings[i],'image',max(Row-50),max([min( Col+30)-TxtWidth/2,1]),'black','true') 28.endfor 29.*这段for循环语句的目的是让解码到的字符串(二维码的内容)显示到二维码深绿色(forest green上 面定义)的解码区域框的行列位置。 30.*disp_message(WindowHandle,DecodedDataStrings,'window',12,12,'black','true') 31.*如果不需要设置显示到区域框中间的位置,而是显示到窗体的上方或其他位置,那么不需要上面那段for 语句,只需这段信息显示的语句即可显示到窗体相应位置。 32.if(|DecodedDataStrings|>0) 33.disp_continue_message(WindowHandle,'black','true')

Halcon

Halcon 目录 1、相机接入且拍摄 (2) 1.1 步骤 (2) 1.2 后续处理函数 (5) 2、相机标定 (7) 2.1标定步骤 (7) 3、手眼系统标定 (11) 3.1 标定步骤 (11) 4、图像坐标和机器臂坐标转换 (13) 4.1 转换步骤 (14) 5、模版匹配(基于形状) (19) 5.1 步骤 (19) 6、常见函数 (25) 6.1 图像分割 (25) 6.2 轮廓提取、处理 (31)

1、相机接入且拍摄 1.1 步骤 (1)连接相机 open_framegrabbe(Name, HorizontalResolution, VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn, Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger, CameraType, Device, Port, LineIn, AcqHandle) 在算子窗口内输入函数名,填入参数后点击“确定”按钮即可将函数加入程序中。 注: Name: 图像采集设备的名称 可通过以下步骤确定: 1、在Halcon菜单栏里点击“窗口”,选择“打开算子窗口”。 (若算子窗口已打开则直接进入第二步) 2、在“输入算子或函数”栏内输入“open_framegrabbe” 回车后出现下图

3、在“参数”栏中的Name后点击即可自动检测连接的设 备(笔记本电脑摄像头检测后为’DirectShow’) 此参数若随意填写,可能导致程序报错 HorizontaResolution、VerticalResolution:预期的图像采集接口的水平分辨率和垂直分辨率 ImageWidth、ImageHeight:预期图像的宽度和高度部分StartRow、StartColumn:显示预期图像的开始坐标 Field:预期图像是一半的图像或者是完整图像 BitsPerChannel:每像素比特数和图像通道 ColorSpace:获取图像的输出形式(gray、raw、rgb、yuv、default)说明:此参数设置不同的值可以得到不同的图像效果,如设置

halcon标准标定板制作

halcon标准标定板的自制方法 zsxm2009 发表于 - 2011-4-23 18:19:00 halcon中标准标定板的自制方法 1.找到halcon标定板描述文件(后缀名是.descr),目录是:D:\Program Files\MVTec\HALCON-10.0\calib(具体的视个人安装位置所定)。 2.用“写字板”打开所需规格的标定板描述文件,这里强调一下:用“写字板”打开文件可以很清晰的看到里面描述的内容,如果用记事本打开的话,很混乱而且又很多字符无法识别。我这里需要制作6mm×6mm的标定板。 3.打开“caltab_6mm.descr”文件,内容如下(中文部分为我所翻译,如有错误敬请指正): # Plate Deion Version 2 # HALCON Version 7.1 -- Fri Jul 22 16:25:19 2005 # Deion of the standard calibration plate # used for the CCD camera calibration in HALCON # (generated by gen_caltab) # # # 7 rows x 7 columns #7行×7列 # Width, height of calibration plate [meter]: 0.006, 0.006 #标定板的宽与高【单位:米】:0.006,0.006 # Distance between mark centers [meter]: 0.00075 #各个圆点中心之间的距离【单位:米】:0.00075 # Number of marks in y-dimension (rows) #y轴上圆点的数目,注意这里的y轴的正方向是竖直向下的(行数) r 7 #7行 # Number of marks in x-dimension (columns) #x轴上圆点的数目,注意这里的x轴正方向是水平向右的(列数) c 7 #7列 # offset of coordinate system in z-dimension [meter] (optional): #坐标系在z轴方向上的偏移【单位:米】(可选): z 0 #z轴偏移为0,即在z轴上不偏移,图像位于xy平面上 # Rectangular border (rim and black ) of calibration plate #标定板的矩形边框(边界和黑框) # rim of the calibration plate (min x, max y, max x, min y) [meter]:

跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码

跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手—打开新的Image Acquisition—选中图像获取接口(I),然后点击检测,找到摄像头。如下图: 第三步:点击连接,将颜色空间设置为gray,然后点击实时,此时图像窗口中将显示采集到的图像,将物体放置到摄像头前,位置调至条码清晰。如下图:

集,点击插入代码,此时程序编辑器中将自动生成代码,如下图:

这时单击下运行按钮,将会采集一副图像并显示到图形窗口中。接下来我们将开始条码读取的工作。 第五步:在Do Something后插入如下代码: create_bar_code_model ([ ], [ ], BarCodeHandle) *由于不知道条码是何类型,因此条码类型设置为auto。CodeTypes := ['auto'] find_bar_code (Image, SymbolRegions, BarCodeHandle, CodeTypes, DecodedDataStrings) get_bar_code_result (BarCodeHandle, 'all', 'decoded_types', DecodedDataTypes) 这时再重新运行程序,只要图像清晰,此时就可以读到条码了。条码区域会变成红色,而且在变量窗口中可以查到读取的条码类型和内容。如下图:

第六步:我们再添加代码,将读取结果直接显示在图像窗口中。 disp_message (WindowHandle, DecodedDataTypes[0]+': '+DecodedDataStrings[0], 'image', 100, 160, 'forest green', 'true') 此时会提示错误WindowHandle未被初始化。 *获取更多课程请Q智达工控学院:1613985351 因为图像采集助手会自动打开一个窗口,因此我们先将它关闭,然后自己创建一个窗口。在程序最开始加上这两句代码: dev_close_window () dev_open_window (0, 0, 512, 512, 'black', WindowHandle) 再重新运行程序,此时在读取到的条码在图像中写出来了。如下图:

halcon单相机标定详细说明

相机标定 1 相机标定基本原理 1.1 相机成像模型 目前大多数相机模型都是基于针孔成像原理建立的,因为针孔成像原理简单,并且能满足建模的要求。除此之外还有基于应用歪斜光线追踪法和近轴光线追踪法的成像模型[1]。针孔成像虽然已经展示出了相机的成像原理,但是由于针孔成像是理想的物理模型,没有考虑相机本身的尺寸、镜头与相机轴心的偏斜等因素的影响,因此精度很低,不能满足工业机器视觉的要求。为了使相机模型能高精度的反应相机的实际成像过程,需要再针孔成像模型的基础上考虑镜头畸变等的因素。 图1 针孔成像 基于针孔成像原理建立的相机的成像模型,如下图所示。在相机的成像模型中,包含有几个坐标系分别是世界坐标系、相机坐标系、图像坐标系,相机的成像过程的数学模型就是目标点在这几个坐标系中的转化过程。 图2 针孔成像模型 (1)世界坐标系(X w,Y w,Z w),就是现实坐标系,是实际物体在现实世界中的数学描述,是一个三维的坐标空间。 (2)摄像机坐标系(X c, Y c),以针孔相机模型的聚焦中心为原点,以摄像机光学轴线为Z c轴 (3)图像坐标系:分为图像像素坐标系和图像物理坐标系 为了便于数学描述将图像平面移动到针孔与世界坐标系之间。如下图所示。

图3 将相机平面移至针孔与目标物体之间后的模型 1.2 坐标系间转换 从世界坐标系到相机坐标系: P(X c ,Y c ,Z c )=R(α,β,γ)?P(X w ,Y w ,Z w )+T 每一个世界坐标的对象都可以通过旋转和平移转移到相机坐标系上。将目标点旋转θ角度,等价于将坐标系方向旋转θ。如下图所示,是二维坐标的旋转变换,对于三维坐标而言,旋转中绕某一个轴旋转,原理实际与二维坐标旋转相同。如果,世界坐标分别绕X ,Y 和Z 轴旋转α,β,γ,那么旋转矩阵分别为R (α),R (β),R (γ) 图4 坐标旋转原理 R (α)=[10 00cosα ?sinα0sinαcosα] (1-1) R (β)=[cosβ 0sinβ0 10?sinβ 0cosβ ] (1-2)

halcon算子注解查询手册

Chapter 1 :Classification (4) 1.1 Gaussian-Mixture-Models (4) 1.2 Hyperboxes (4) 1.3 Neural-Nets (5) 1.4 Support-Vector-Machines (6) Chapter 2 Control (7) Chapter3 :Develop (8) Chapter 4 :File (10) 4.1 Images (10) 4.2 Misc (10) 4.3 Region (10) 4.4 Text (10) 4.5 Tuple (11) Chapter 5:Filter (12) 5.1 Arithmetic (12) 5.2 Bit (12) 5.3 Color (13) 5.4 Edges (13) 5.5 Enhancement (14) 5.6 FFT (15) 5.7 Geometric-Transformations (16) 5.8 Inpainting (17) 5.9 Lines (17) 5.10 Match (18) 5.11 Misc (18) 5.12 Noise (18) 5.13 Optical-Flow (19) 5.14 Points (19) 5.15 Smoothing (19) 5.16 Texture (20) 5.17 Wiener-Filter (20) Chapter 6 :Graphics (21) 6.1 Drawing (21) 6.2 Gnuplot (22) 6.3 LUT (22) 6.4 Mouse (23) 6.5 Output (23) 6.6 Parameters (24) 6.7 Text (26) 6.8 Window (27) Chapter 7 :Image (28) 7.1 Access (28) 7.2 Acquisition (28) 7.3 Channel (29)

标定板

30*30 规格的标定板的规格 黑色圆点行数: 7 黑色圆点列数: 7 外边框长度: 30mm*30mm 内边框长度: 28.125mm*28.125mm 即:黑色边框线宽为一个圆点半径(0.9375)黑色圆点半径: 0.9375mm 圆点中心间距: 3.75mm 裁剪宽度: 30.75mm*30.75mm 即:由黑色边框向外延伸0.375mm 边角:由黑色外边框向内缩进一个中心边距的长度 40*40 规格的标定板的规格 黑色圆点行数: 7 黑色圆点列数: 7 外边框长度: 40mm*40mm 内边框长度: 37.5mm*37.5mm 即:黑色边框线宽为一个圆点半径(0.125) 黑色圆点半径: 0.125mm 圆点中心间距: 5mm 裁剪宽度: 21mm*21mm 即:由黑色边框向外延伸0.5mm 边角:由黑色外边框向内缩进一个中心边距的长度 50*50 规格的标定板的规格 黑色圆点行数: 7 黑色圆点列数: 7 外边框长度: 50mm*50mm 内边框长度: 46.875mm*46.875mm 即:黑色边框线宽为一个圆点半径(1.5625)黑色圆点半径: 1.5625mm 圆点中心间距: 6.25mm 裁剪宽度: 51.25mm*51.25mm 即:由黑色边框向外延伸0.625mm 边角:由黑色外边框向内缩进一个中心边距的长度 60*60 规格的标定板的规格 黑色圆点行数: 7 黑色圆点列数: 7 外边框长度: 60mm*60mm 内边框长度: 56.25mm*56.25mm 即:黑色边框线宽为一个圆点半径(1.875) 黑色圆点半径: 1.875mm 圆点中心间距: 7.5mm 裁剪宽度: 61.5mm*61.5mm 即:由黑色边框向外延伸0.75mm 边角:由黑色外边框向内缩进一个中心边距的长度

Halcon学习(20)摄像机标定常用函数(一)

Halcon学习(二十)摄像机标定常用函数(一) 在HALCON所有算子中,变量皆是如上格式,即:图像输入:图像输出:控制输入:控制输出,其中四个参数任意一个可以为空。控制输入量可以是变量、常量、表达式,控制输出以及图像输入和输入必须是变量,以存入算子计算结果中。 1.caltab_points:从标定板中读取marks中心坐标,该坐标值是标定板坐标系统里的坐标值,该坐标系统以标定板为参照,向右为X正,下为Y正,垂直标定板向下为Z正。该算子控制输出为标定板中心3D坐标。 2.create_calib_data:创建Halcon标定数据模型。输出一个输出数据模型句柄。 3.set_calib_data_cam_param:设定相机标定数据模型中设置相机参数的原始值和类型。设置索引,类型,以及相机的原始内参数等。 4.set_calib_data_calib_object:在标定模型中设定标定对象。设定标定对象句柄索引,标定板坐标点储存地址。 5.find_caltab:分割出图像中的标准标定板区域。输出为标准的标定区域,控制 6.find_marks_and_pose:抽取标定点并计算相机的内参数。输出MARKS坐标数组,以及估算的相机外参数。 即标定板在相机坐标系中的位姿,由3个平移量和3个旋转量构成。 7.set_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx,CalibObjPoseIdx, Row, Column, Index, Pose : ) 收集算子6的标定数据,将标定数据储存在标定数据模型中。输入控制分别为标定数据模型句柄,相机索引,标定板索引,位姿索引,行列坐标,位姿。 8.calibrate_cameras( : : CalibDataID : Error) 标定一台或多台相机,依据CalibDataID中的数据。控制输出平均误差。 9.get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName : DataValue) 获得标定数据。 依靠索引号和数据名称来返回输出的数据值。可查询与模型相关的数据,与相机相关的数据(包括相机的内外参数等),与标定对象相关的数据,与标定对象的姿态相关的数据。控制输出是要查询的标定数据。 如:get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam) //查询相机的位姿 get_calib_data (CalibDataID, 'calib_obj_pose', [0, NumImage], 'pose', Pose) //查询标定板位姿10.write_cam_par( : : CameraParam, CamParFile : ) 记录相机的内参数,输入控制为内参数,输出控制为 存取相机内参数的文件名。 11.set_origin_pose( : : PoseIn, DX, DY, DZ : PoseNewOrigin) 设置新的坐标原点,控制输入为原始的位姿和沿着世界坐标系的三个坐标轴的平移量,控制输出为新的位姿。

Halcon学习笔记之缺陷检测(二)教学教材

Halcon学习笔记之缺陷检测(二)例程:detect_indent_fft.hdev 说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步: 首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波); 然后,将原图和构造的滤波器进行快速傅里叶变换; 最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。 注:代码中绿色部分为个人理解和注释,其余为例程中原有代码 *Initialization(初始化) dev_updata_off() //这一句包含如下三个算子: //dev_updata_pc(‘off’) 关闭更新程序计数器//dev_updata_var(‘off’) 关闭更新变量窗口 //dev_updata_window(‘off’) 关闭更新图像窗口(即通过命令来显示想要在图像窗口显示的图片) dev_close_window() //关闭活动的图像窗口 read_image(Image,’plastics / plastics_01’) //载入图片//参数说明:为读入图片命名(Image)// 文件名(’plastics/plastics_01’) get_image_size(Image,Width,height) //获取图片的长宽;//参数说明:之前读入或生成的图片(Image)// 图片的宽(Width)// 图片的高(Height) dev_open_window(0,0,Width,Height,’Black’,WindowHandle) //打开一个新的图像窗口//参数说明:起始坐标(0,0)// 大小(Width,Height)// 背景颜色(’Black’)// 窗口句柄(WindowHandle) set_display_font (WindowHandle,14,’mono’,’ture’,’false’)//设置不依赖操作系统的字体 //参数说明:窗口句柄(WindowHandle)

Halcon学习(十八)如何制作标定板

MarkDist 的距离。 两个就近黑色圆点中心之间Halcon 学习(十八)如何制作标定板 下面我具体介绍一下,如何制作halcon 的标准标定板方法一:用halcon 软件自动生成的.ps 文件来制作标定板。 这个也是最简单有效的方法。 打开halcon 的HDevelop 软件,调用算子: gen_caltab( : : XNum,YNum,MarkDist,DiameterRatio,CalTabDescrFile,CalTa bPSFile : ) XNum 每行黑色标志圆点的数量。 YNum 每列黑色标志圆点的数量。

DiameterRatio 黑色圆点半径与圆点中心距离的比值。 CalTabDescrFile 标定板描述文件的文件路径(.descr)。 CalTabPSFile 标定板图像文件的文件路径 (.ps),如图1 然后复位(F2),点击运行(F5)通过软件Gsview打开,按1:1 比例打印,OK ! 备注一个30*30 的标准标定板的halcon 源代码。gen_caltab (7,7,0.00375,0.5,'F:/halcon 程序 /gencaltab/30_30.descr','F:/halcon 程序/gencaltab/40_40.ps')规格的标定板的规格 黑色圆点列数:7

黑色圆点行数:7 黑色圆点列数:7

外边框长度:30mm*30mm 内边框长度:28.125mm*28.125mm 即:黑色边框线宽为一个圆点半径(0.9375) 黑色圆点半径:0.9375mm 圆点中心间距: 3.75mm 裁剪宽度:30.75mm*30.75mm 即:由黑色 边框向外延伸0.375mm 边角:由黑色外边框向内缩进一个中心边 距的长度 方法二:用halcon 软件自动生成的.descr 文件来制作标定板。打开halcon 的HDevelop 软件,调用算子: gen_caltab 生成一个.descr 的文件,用写字板打开(注意要用写字板,记事本打开会有一些数据不可见,一般windowsXP

相关文档
相关文档 最新文档