halcon单摄像机标定

合集下载

基于HALCON软件的摄像机标定

基于HALCON软件的摄像机标定

基于HALCON软件的摄像机标定作者:闫霞牛建强来源:《数字技术与应用》2010年第11期摘要:摄像机标定是机器视觉的重要研究内容之一,提出了一种基于图像处理软件HALCON的标定方法。

它利用HALCON标定板以及HALCON的函数库功能,分析了对面阵摄像机的标定过程,该方法简单易行,提高了标定精度和计算速度,而且具有良好的跨平台移植性。

关键词:摄像机标定机器视觉 HALCON 标定板中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2010)11-0112-03Camera Calibration Based On HALCON SoftwareYanXia1 NiuJianQiang1(1.Department of Electronic Information Engineering, Henan University of Science And Technology,Luoyang He’nan 471003,China)Abstract:Camera calibration is one of the important research content in Machine vision, a method based on image processing software HALCON is suggested in this paper. It use calibration plate of HALCON and function of library , analyzed camera calibration process of the array camer, this method is simple and it improves the calibration precision and computation speed, and it has a good cross-platform portability。

halcon相机标定和测量示例

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<DiameterRatio<1.0;CalPlateDescr:输入要保存的标定文件(此文件保存路径在算子窗口可更改),默认值: 'caltab.descr',参考: 'caltab.descr', 'caltab_100mm.descr', 'caltab_10mm.descr', 'caltab_200mm.descr', 'caltab_30mm.descr';CalPlatePSFile :标定板图像文件的文件路径(此文件保存路径在算子窗口可更改),默认: 'caltab.ps',后缀:ps。

此算子“XNum, YNum, MarkDist, DiameterRatio”这四个参数根据图2所示的标定板参数设置。

Halcon算子笔记3_相机标定+矫正图像

Halcon算子笔记3_相机标定+矫正图像

Halcon算子笔记3_相机标定+矫正图像Map_image.hdev: 矫正图像*关闭窗口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)*显示Imagedev_display (Image)*在图像中找到标定板的区域:图像,标定板描述文件,滤波核大小,二值化值find_caltab (Image, Caltab, CaltabName, 3, 112, 5)*设置区域颜色:绿色dev_set_color ('green')*显示图像中标定板的区域dev_display (Caltab)*(核心函数:搜寻图像的原始点)在图像中找到标定板的各个角点坐标和初始位姿find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, 128, 10, 18, 0.9, 15, 100, RCoord, CCoord, StartPose) *设置颜色:红色dev_set_color ('red')*在窗口上圆形标记角点的位置disp_circle (WindowHandle1, RCoord, CCoord, gen_tuple_const(|RCoord|,1.5))*一个图像位姿加入位姿元组NStartPose := [NStartPose,StartPose]*所有图像角点行坐标数组相连NRow := [NRow,RCoord]*所有图像角点列坐标数组相连NCol := [NCol,CCoord]endfordev_update_time ('on')disp_continue_message (WindowHandle1, 'black', 'true')stop ()** Calculate the mapping.(计算带矫正信息的图像)步骤二**(核心函数)标定相机参数,对步骤一的数据进行计算处理camera_calibration (X, Y, Z, NRow, NCol, StartCamPar, NStartPose, 'all', CamParam, NFinalPose, Errors)*生成空的对象:包含矫正映射信息的图像gen_empty_obj (Maps)*for循环一次处理一组对应的图像for NumImage := 1 to NumImages by 1* Obtain the pose of the calibration table.*获取标定出来的位姿3DPose := NFinalPose[(NumImage-1)*7:(NumImage-1)*7+6]*设置新的原始3D位姿set_origin_pose (Pose, -1.125, -1.0, 0, PoseNewOrigin)*(核心函数)生成带矫正映射信息的图像MapSinglegen_image_to_world_plane_map (MapSingle, CamParam, PoseNewOrigin, 768, 576, 900, 800, 0.0025, 'bilinear')*将单张图像加入图像元组Mapsconcat_obj (Maps, MapSingle, Maps)endfordisp_continue_message (WindowHandle1, 'black', 'true')stop ()*代码到此处:有了NumImages张标定的原图+ NumImages张带矫正映射信息的图像,*接下来While循环,一张一张的矫正图像** Map the images.(矫正图像)步骤三**窗口设置dev_open_window (0, 391, 900/2, 800/2, 'black', WindowHandle2)Button := 0NumImage := 1while (Button # 1)dev_set_window (WindowHandle1)dev_set_part (0, 0, 575, 767)dev_clear_window ()*从图像元组中选择一张图像select_obj (Images, Image, NumImage)*显示选择的图像dev_display (Image)disp_message (WindowHandle1, 'Press any mouse button to stop', 'image', -1, -1, 'black', 'true')*选择对应位置的带矫正信息的图像select_obj (Maps, MapSingle, NumImage)*(核心函数)矫正图像:原图,带矫正信息图,矫正结果图map_image (Image, MapSingle, ImageMapped)*以下为窗口、循环之类的处理,与图像处理没什么关系dev_set_window (WindowHandle2)dev_set_part (0, 0, 799, 899)dev_clear_window ()dev_display (ImageMapped)NumImage := NumImage + 1if (NumImage > NumImages)NumImage := 1endifdev_error_var (Error, 1)dev_set_check ('~give_error')get_mposition (WindowHandle1, R, C, Button)dev_error_var (Error, 0)dev_set_check ('give_error')if (Error#H_MSG_TRUE)Button := 0endifif (Button)breakendifendwhiledev_set_window (WindowHandle2) dev_close_window ()。

HALCON数字图像处理 第11章 标定

HALCON数字图像处理 第11章 标定
图像像素坐标系的转化关系
2、标定的内外参数
外部参数:由前面可知,相机的外部参数是用来描述相机坐标系与世
界坐标系的关系,它表明相机在世界坐标系中的位置和方位,可用旋
转矩阵和平移向量来表示。实质上旋转矩阵只有三个独立参数,加上
平移向量的三个参数,故一共有6个独立的外部参数。
内部参数:内部参数只与相机内部结构有关,而与相机位置参数无关,
否则HALOCN会提示有品质问题。
HALCON数字图像处理
标定板图像
(a)
(c)
HALCON数字图像处理
(b) (d)
2、 HALCON标定助手标定过程
步骤1: 打开标定助手,设定描 述文件,标定板厚度,相机类 型、焦距等参数。
图中 ,表示Sx和Sy按照1:1的关 系关联,同步调节,因为面阵相机 的像元一般是方形的,宽和高是一 样的。如果取消关联,那么Sx和Sy
HALCON数字图像处理
图像成像坐标系到图像像素坐标系
如图所示,图像成像坐标系是以毫米为单位的直角坐标系 X-Y。用(Xf ,Yf)来描述图像像素坐标系中的点,用 (Xd ,Yd)来描述图像成像坐标系中的点。图像成像坐 标系的原点O在图像像素坐标系中的坐标为(Cx, Cy),用 dx、dy 来表示相邻像素点中心在 X 轴方向和Y轴方向的 实际物理距离。
可以异步调节。
步骤2:加载图像,可以实时采集,也 可以采集好后再一起标定,建议先采 集后标定。图中所示加载标定板图像 的窗口,还需要将其中的一幅图像设 置为参考位姿。
HALCON数字图像处理
步骤3:在采集图片合格后,点击上 一步骤图中的“标定”按钮,标定 结果就出来了,如图所示,在这一 步的窗口中,会有标定之后的相机 内外参数等标定结果。

halcon摄像机标定

halcon摄像机标定

基于HALCON的双目立体视觉系统实现摘要双目立体视觉的研究一直是机器视觉中的热点和难点。

使用双目立体视觉系统可以确定任意物体的三维轮廓,并且可以得到轮廓上任意点的三维坐标。

因此双目立体视觉系统可以应用在多个领域。

本文将主要介绍如何基于HALCON实现双目立体视觉系统,以及立体视觉的基本理论、方法和相关技术,为搭建双目立体视觉系统和提高算法效率提供了参考。

关键词双目视觉三维重建立体匹配摄像机标定视差双目立体视觉是机器视觉的一种重要形式,它是基于视差原理并由多幅图像获取物体三维几何信息的方法。

双目立体视觉系统一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,并基于视差原理恢复出物体三维几何信息,重建物体三维轮廓及位置。

双目立体视觉系统在机器视觉领域有着广泛的应用前景。

HALCON是在世界范围内广泛使用的机器视觉软件。

它拥有满足您各类机器视觉应用需求的完善的开发库。

HALCON也包含Blob分析、形态学、模式识别、测量、三维摄像机定标、双目立体视觉等杰出的高级算法。

HALCON支持Linux和Windows,并且可以通过C、C++、C#、Visual Basic和Delphi语言访问。

另外HALCON与硬件无关,支持大多数图像采集卡及带有DirectShow和IEEE 1394驱动的采集设备,用户可以利用其开放式结构快速开发图像处理和机器视觉应用软件。

一.双目立体视觉相关基本理论介绍1.1 双目立体视觉原理双目立体视觉三维测量是基于视差原理,图1所示为简单的平视双目立体成像原理图,两摄像机的投影中心的连线的距离,即基线距为b。

摄像机坐标系的原点在摄像机镜头的光心处,坐标系如图1所示。

事实上摄像机的成像平面在镜头的光心后,图1中将左右成像平面绘制在镜头的光心前f处,这个虚拟的图像平面坐标系O1uv的u轴和v轴与和摄像机坐标系的x轴和y轴方向一致,这样可以简化计算过程。

Halcon相机标定简介

Halcon相机标定简介

Halcon相机标定简介相机标定简介⾸先镜头有畸变,也就是说照出的图像与实际不符产⽣了形变。

即使⼯业镜头也是有千分之⼏的畸变率的。

上个图告诉⼤家畸变这个图⾥,第⼀个图就是我们相机下的真实的形状,后边两个就是照出来有畸变的图⽚。

其次镜头与相机⽆论你的机械结构精度多⾼,也不容易或者说没办法将相机安装的特别正,那相机安装不正也是会导致误差的。

⼤家想知道具体数学模型的话可以搜⼀下相机标定的理论⽅⾯的知识,我侧重怎么做。

标定就是把上述两个东西转化成正常的。

⽆论是在图像测量或者机器视觉应⽤中,相机参数的标定都是⾮常关键的环节,其标定结果的精度及算法的稳定性直接影响相机⼯作产⽣结果的准确性。

深度说明1、相机标定参数介绍内参:确定摄像机从三维空间到⼆维空间的投影关系。

针孔相机(FA镜头相机)模型为6个参数(f,kSx,Sy,Cx,Cy);远⼼镜头相机模型为5个参数(f,Sx,Sy,Cx,Cy);线阵相机为11个参数(f,k,Sx,Sy,Cx,Cy,Width,Highth,Vx,Vy,Vz)。

其中:f为焦距;k表⽰径向畸变量级。

如果k为负值,畸变为桶形畸变,如果为正值,那么畸变为枕形畸变。

Sx,Sy是缩放⽐例因⼦。

对于相机(FA镜头)表⽰图像传感器⽔平和垂直⽅向上相邻像素之间的距离,初始值与真实值越接近计算速度越快。

对于远⼼摄像机模型,表⽰像素在世界坐标系中的尺⼨。

Cx,Cy是图像的主点,对于相机,这个点是投影中⼼在成像平⾯上的垂直投影,同时也是径向畸变的中⼼。

对于远⼼摄像机模型,只表⽰畸变的中⼼。

Vx,Vy,Vz:线阵相机必须与被拍摄物体之间有相对移动才能拍摄到⼀幅有⽤的图像。

这是运动向量。

Sx,Sy对于线阵相机是相邻像元的⽔平和垂直距离。

2、标定板详细介绍问题1:halcon是否只能使⽤halcon专⽤的标定板?halcon提供了简便、精准的标定算⼦与标定助⼿,这在实际使⽤中极⼤地⽅便了使⽤者在halcon中有两种标定⽅式:halcon⾃带例程中出现的,⽤halcon定义的标定板,如下图:⽤户⾃定义标定板,⽤户可以制作任何形状、形式的标定板,如下图:所以,halcon并⾮只能使⽤专⽤标定板,也可以使⽤⾃定义标定板就可以进⾏标定。

halcon相机标定方法

halcon相机标定方法

halcon相机标定方法【实用版3篇】《halcon相机标定方法》篇1Halcon相机标定方法可以采用以下步骤:1. 确定畸变系数。

畸变系数表示相机成像过程中的畸变程度,其值介于0和0.00001之间。

在标定过程中,需要确定畸变系数。

2. 确定标定板。

标定板是用于相机标定的已知几何信息的板状物体。

标定板通常由一系列等边直角三角形组成,每条边上都有四个角,共12个点。

这些角可以用于计算相机的内部参数和畸变系数。

3. 获取标定板图像。

获取标定板图像并将其输入到Halcon中。

4. 提取角点信息。

使用Halcon中的“find_features”函数来提取标定板图像中的角点信息。

该函数将自动检测图像中的角点,并返回其坐标和类型。

5. 计算相机内部参数。

使用提取的角点信息,结合Halcon中的“find_feature_points”函数和“find_feature_matches”函数,可以计算相机的内部参数和畸变系数。

6. 验证标定结果。

为了验证标定结果,可以使用Halcon中的“check_calib”函数来检查相机内部参数和畸变系数是否正确。

以上是Halcon相机标定的基本步骤。

《halcon相机标定方法》篇2Halcon相机标定方法有:1. 传统六点标定法。

这种方法是通过一个平面上的六个点的位置来确定整个平面的几何参数,进而求得相机的内参数。

2. 棋盘格标定法。

棋盘格标定法是通过棋盘格上两组对应点的几何约束,解算出相机的畸变系数。

3. 标定板标定法。

《halcon相机标定方法》篇3Halcon相机标定方法有以下几个步骤:1. 建立棋盘格点在Halcon中,建立棋盘格点需要指定格点在图像中的实际坐标,这样可以正确计算出畸变系数。

如果只指定棋盘格在图像中的尺寸和数量,那么在畸变计算时会返回默认的(通常是不可靠的)畸变系数。

建立棋盘格点的方法如下:`2x2 to picture :诤友棋盘格(squareSize:[20,20], gridNum:25)`2. 确定相机位置和方向这里有两种方法:方法一:建立一个动态的目标,不断改变目标与相机的距离和角度,然后计算目标的成像位置,从而得到相机的位置和方向。

Halcon单相机标定板标定

Halcon单相机标定板标定

Halcon单相机标定板标定⾸先得到相机的内参gen_cam_par_area_scan_division (0.012, 0, 0.00000375, 0.00000375, 640, 480, 1280, 960, StartCamPar)普通的畸变:’area_scan_division’ [’area_scan_division’, Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight⾼精度畸变(多项式⼦):’area_scan_polynomial’ [’area_scan_polynomial’, Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight然后建⽴标定对象:create_calib_data ('calibration_object', 1, 1, CalibDataID)//建⽴标定对象set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)//设置相机的参数set_calib_data_calib_object (CalibDataID, 0, 'calplate_80mm.cpd')//设置标定板的⽂件//查找标定板NumImages := 7for I := 1 to NumImages by 1read_image (Image, ImgPath + 'calib_image_' + I$'02d')dev_display (Image)find_calib_object (Image, CalibDataID, 0, 0, I, [], [])get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I)get_calib_data_observ_points (CalibDataID, 0, 0, I, Row, Column, Index, StartPose)//获取标定板的位姿dev_set_color ('green')dev_display (Caltab)dev_set_color ('red')disp_circle (WindowHandle, Row, Column, gen_tuple_const(|Row|,1.5))endfor//纠正实际世界坐标位姿set_origin_pose (Pose, 0, 0, 0.002, Pose)//由于标定板的厚度是0.02,所以Z平移到相机坐标需要加上0.02//标定相机calibrate_cameras (CalibDataID, Errors)//标定相机get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)//得到相机标定后的相机内参,这个内参包含了畸变参数get_calib_data (CalibDataID, 'calib_obj_pose', [0,1], 'pose', Pose)//以第⼀张图作为参考平⾯,得到参考平⾯的坐标位姿//坐标转换image_points_to_world_plane (CamParam, Pose, Row, Col, 'mm', X1, Y1)//将相机平⾯映射到实际坐标位置位姿:描述是世界坐标转换到相机坐标的旋转平移参数,也就是该点在相机坐标系下的位姿。

halcon单相机标定详细说明

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 (α)=[1000cosα−sinα0sinαcosα] (1-1) R (β)=[cosβ0sinβ010−sinβ0cosβ] (1-2)R (γ)=[cosγsinγ0−sinγcosγ0001] (1-3)总的旋转矩阵就是三者的乘积:R(α,β,γ)=R (α)∗R (β)∗R(γ)平移矩阵T =(t x ,t y ,t z ),t x ,t y ,t z 是世界坐标系原点与摄相机坐标系原点之间的差值。

Halcon学习(21)摄像机标定常用函数(二)

Halcon学习(21)摄像机标定常用函数(二)

Halcon学习(二十一)摄像机标定常用函数(二)1.read_cam_par( : : CamParFile : CameraParam)从文件夹中读取相机的内参数。

2.disp_caltab( : : WindowHandle, CalTabDescrFile, CameraParam, CaltabPose, ScaleFac : )利用相机内外参数,把标定板模型投影到图像平面,显示标定点和连接线,X,Y轴也被显示出来。

3.vector_to_pose( : : WorldX, WorldY, WorldZ, ImageRow, ImageColumn, CameraParam,Method , QualityType : Pose, Quality)计算世界坐标和图像坐标之间关系的绝对位姿参数。

其中世界坐标至少选择不在同一条直线上的三个点。

世界坐标上的点如果在一个平面上,应该选择'planar_analytic' 作为Method的参数。

输出位姿和位姿质量。

4.write_pose( : : Pose, PoseFile : )把位姿写入TXT文件。

5.get_mbutton( : : WindowHandle : Row, Column, Button)返回鼠标点击的图像点像素坐标,以及鼠标按钮值,左键0,中间键2,右键4.6.image_points_to_world_plane( : : CameraParam, WorldPose, Rows, Cols, Scale : X,Y)把图像坐标转化成Z=0平面的世界坐标,输出为世界坐标的X,Y7.pose_to_hom_mat3d( : : Pose : HomMat3D)把3D位姿转化成齐次变换矩阵。

8.affine_trans_point_3d( : : HomMat3D, Px, Py, Pz : Qx, Qy, Qz)进行两个坐标系之间的3D坐标的仿射变换。

基于HALCON软件的摄像机标定的研究报告

基于HALCON软件的摄像机标定的研究报告

基于HALCON软件的摄像机标定的研究报告摄像机标定是计算机视觉中最基础而又最重要的问题之一,通过标定可以实现摄像机畸变矫正、三维重建、轨迹跟踪等诸多操作。

HALCON是一款流行的计算机视觉和机器视觉开发工具,其自带的摄像机标定模块可以实现对相机内外部参数的计算和优化,并可生成标定文件以供后续操作使用。

本文将介绍HALCON软件的摄像机标定原理和流程,并使用实验数据进行验证。

一、HALCON摄像机标定原理HALCON摄像机标定基于Perspective Projection Model(透视投影模型),即传统的针孔相机模型。

根据这个模型,每个点在图像平面上的位置可以用其在三维空间中的坐标(x,y,z)和摄像机参数(focal length、principal point、radial distortion、tangential distortion等)计算得出。

因此,摄像机标定的主要目的是测量这些摄像机参数,以实现对图像的畸变矫正。

二、HALCON摄像机标定流程HALCON摄像机标定流程包含以下几个步骤:1. 准备标定板:使用一张精确已知的标定板(如棋盘格)作为标定物体。

标定板上应该有一定数量的格子,并且格线应该较为清晰,以便识别。

2. 拍摄标定板照片:摄像机需要从至少两个不同角度拍摄标定板的照片,以获得足够的信息来计算摄像机参数。

拍摄时应注意保持标定板与摄像机位置、光照等条件的一致性。

3. 提取标定板角点:使用HALCON提供的Corner Detection(角点检测)算法,对标定板照片中的角点进行提取。

提取的角点应该较为准确,并尽可能地覆盖整个标定板。

4. 生成初始参数:对提取的角点进行3D-to-2D转换,生成摄像机的初始内外部参数。

这些参数可以作为优化算法的初始值。

5. 优化参数:使用HALCON自带的Optimize Calibration Object Parameters(标定参数优化)算法,对摄像机内外部参数进行优化。

halcon 单目相机 标定例程

halcon 单目相机 标定例程

HALCON是一个强大的机器视觉软件,它支持各种相机的标定。

单目相机标定的主要目的是完成像素坐标到世界坐标之间的转换。

此外,标定还能帮助我们进行畸变矫正和一维二维图像测量,因为相机成像后往往会产生畸变和缩放。

在HALCON中,你可以使用标定助手来完成单相机的标定。

具体的步骤如下:
1. 打开HALCON并新建一个程序。

2. 在程序编辑中输入算子gen_caltab,然后右击打开算子窗口,输入相关参数,点击确定。

这一步会生成两个文件,一个是后缀为.descr的标定板描述文件,另一个是标定板的图像文件。

3. 打开助手里的标定助手。

4. 进入到标定助手界面,更改描述文件、摄像机模型以及相机相关参数。

5. 点击标定选项卡,然后点击图像采集助手,会立刻弹出图像采集助手对话框(如果之前打开过图像采集助手,在这里就不会弹出),接下里进行相机的连接。

点击自动检测接口,可以选择halcon自带的接口或者是相机的接口。

通过以上步骤,你便可以使用HALCON对单目相机进行标定了。

请注意,这只是一个基本流程,实际操作可能需要根据你的具体需求和设备进行调整。

利用Halcon进行单目标定

利用Halcon进行单目标定

利用Halcon进行单目标定楼主#更多•只看楼主倒序阅读发布于:2020-01-23 10:12摄像机标定之前,首先要确定相机和镜头的参数,参考对应说明书,查找IMAGING SOUR CE 31BU03相机的参数如下:分辨率1024*768;格式1/3’’;像素尺寸,水平4.65um,垂直4.65um;两个镜头是computar工业自动化镜头,其参数分别是:①焦距5mm,F1.4,尺寸1/2’’,②焦距12mm,F1.4,尺寸2/3’’。

相机和镜头参数作为标定过程中算子StartCa mPar的初值。

标定过程首先,创建标定数据模型,使用算子create_calib_data,实例中为create_calib_data ('cali bration_object', 1, 1, CalibDataID),该算子是为了创建标定数据模型,即标定的数据将存放于CalibDataID中。

其次,设定摄像机的初始化参数,即第一段所提及。

算子为set_calib_data_cam_param (C alibDataID, 0, 'area_scan_division', StartCamPar)。

第三步,描述标定板,,这里标定板名称CaltabName有两种途径获取,使用算子set_calib_data_calib_object (CalibDataID, 0,CaltabName)。

一种途径是直接调用Halcon自带的描述文件(.descr),另一种是通过算子gen_caltab自制标定板,产生描述文件。

标定板描述文件中的标定板信息必须与标定过程中使用的标定板规格、尺寸一致。

第四步,开始标定。

其中又分为两部分,一是找到标定板,二是找到标定点及其位置。

使用算子为find_caltab (Image, Caltab, CaltabName, SizeGauss,MarkThresh, MinDiamMarks)和find_marks_and_pose (Image, Caltab,CaltabName, StartCamPar, StartThresh, Delta Thresh, MinThresh, Alpha,MinContLength, MaxDiamMarks, RCoord, CCoord, StartPose)。

Halcon 摄像机标定流程

Halcon 摄像机标定流程

使用halcon相机标定初始值确定富士伺服富士伺服初始参数是0.0195,注意halcon里单位是m k是畸变系数,可以初始为0 sx和sy是相邻像元的水平和垂直距离,1/4"可以查得分别宽和高尺寸是3.2和2.4mm,用320×240去除,得到sx和sy分别是0.01mm,那么应该初始为sx=1.0e-005和sy=1.0e-005,Cx和Cy分别是图像中心点行和列坐标,可以初始化为160和120,最后两个参数是ImageWidth和ImageHeight直接就用320和240。

Halcon 摄像机标定流程摄像机分两种,一种是面扫描摄像机(Area Scan Camera),一种是线扫描摄像机(Line Scan Camera)。

准确来说,叫摄像机系统比较正确。

所谓的面扫描摄像系统是指可以通过单纯曝光取得面积影像,而线扫描摄像机,必须利用运动速度才能取得影像。

两种不同的摄像系统由于成像的过程有区别,所以标定的过程也有区别,这里仅讨论面扫描摄像系统。

流程如下:1、初始摄像机参数:startCamPar:=[f,k,Sx,Sy,Cx,Cy,NumCol,NumRow]f 焦距k 初始为0.0Sx 两个相邻像素点的水平距离Sy 两个相邻像素点的垂直距离Cx、Cy 图像中心点的位置NumCol NumRow图像长和宽2、caltab_points读取标定板描述文件里面描述的点到X[],Y[],z[],描述文件由gen_caltab生成。

3、fin_caltab找到标定板的位置4、find_marks_and_pose 输出标定点的位置和外参startpose5、camera_calibration输出内参和所有外部参数到第五步时,工作已经完成了一半,计算出各个参数后可以用map_image来还原形变的图像或者用坐标转换参数将坐标转换到世界坐标中。

Halcon学习(22)摄像机标定(函数详解)

Halcon学习(22)摄像机标定(函数详解)

Halcon学习(二十二)摄像机标定(函数详解)基于halcon摄像机标定(函数详解)作者:骑蚂蚁上高速本文为作者骑蚂蚁上高速所写。

如有问题,可以留言。

希望大家多多指点。

摄像机标定程序:注意:E:/calibration_image :为标定图像文件路径'E:/calibration_description/caltab_123mm.descr:为标定描述文件路径*作者:骑蚂蚁上高速*程序开始list_files ('E:/calibration_image', 'files', ImageFiles)TmpCtrl_AllMarkRows := []TmpCtrl_AllMarkColumns := []TmpCtrl_StartPoses := []TmpCtrl_ReferenceIndex := 0StartParameters := [0.008,0,5.2e-006,5.2e-006,640,512,1280,1024]for Index := 0 to |ImageFiles|-1 by 1read_image (Image, ImageFiles[Index])find_caltab (Image, TmpObj_PlateRegion, 'E:/calibration_description/caltab_123mm.descr', 3, 112, 5)find_marks_and_pose (Image, TmpObj_PlateRegion, 'E:/calibration_description/caltab_123mm.descr', StartParameters, 128, 10, 18, 0.9, 15, 100, TmpCtrl_MarkRows, TmpCtrl_MarkColumns, TmpCtrl_EstimatedPose)TmpCtrl_AllMarkRows := [TmpCtrl_AllMarkRows, TmpCtrl_MarkRows]TmpCtrl_AllMarkColumns := [TmpCtrl_AllMarkColumns, TmpCtrl_MarkColumns]TmpCtrl_StartPoses := [TmpCtrl_StartPoses, TmpCtrl_EstimatedPose]endforcaltab_points ('E:/calibration_description/caltab_123mm.descr', TmpCtrl_X, TmpCtrl_Y, TmpCtrl_Z)camera_calibration (TmpCtrl_X, TmpCtrl_Y, TmpCtrl_Z, TmpCtrl_AllMarkRows, TmpCtrl_AllMarkColumns, StartParameters, TmpCtrl_StartPoses, 'all', CameraParameters, TmpCtrl_FinalPoses, TmpCtrl_Errors)tuple_select_range (TmpCtrl_FinalPoses, 7*TmpCtrl_ReferenceIndex, 7*TmpCtrl_ReferenceIndex + 6, CameraPose)set_origin_pose (CameraPose, 0.0, 0.0, 0.001, CameraPose)stop ()一、读入图像,函数如下list_files ('E:/calibration_image', 'files', ImageFiles)for Index := 0 to |ImageFiles|-1 by 1read_image(Image, ImageFiles[Index])endfor注释:'E:/calibration_image':为图像路径,图像文件索引是从0开始的,所以|ImageFiles|(文件数量)减去1。

基于HALCON软件的摄像机标定

基于HALCON软件的摄像机标定

基于HALCON软件的摄像机标定HALCON是一种非常强大的计算机视觉软件,可以用于许多应用领域,包括自动化、机器视觉、医学成像等。

在这些不同的领域,HALCON用户需要对摄像机进行标定,以便准确地测量和分析图像。

在本文中,我们将探讨如何使用HALCON进行摄像机标定。

摄像机标定的基本原理摄像机标定是计算机视觉中的一个重要过程。

在这个过程中,我们需要找到摄像机内部的一些参数,以便能够准确地测量对象的大小、位置和方向。

这些参数包括内部参数和外部参数。

内部参数包括焦距、畸变和像素距离等,这些参数决定了光学系统如何将世界坐标系中的点映射到图像平面上。

外部参数包括摄像机的位置和朝向,这些参数决定了摄像机如何拍摄场景。

因此,摄像机标定的目标就是确定这些参数。

摄像机标定的步骤摄像机标定通常涉及到摄像机的内部参数和外部参数,因此标定的步骤通常包括两个部分。

第一步是内部参数标定,我们需要用一些已知的三维坐标对摄像机的成像进行测量,得到这些坐标在图像中的投影。

这些点的坐标通常以像素为单位,我们可以使用极线几何或者张正友标定法等方法来求解内部参数。

第二步是外部参数标定,我们需要知道摄像机对于目标的位置和朝向。

通常我们使用标定板或者其他点来测量这些参数。

标定板通常是一个具有已知格子的图案,我们可以测量这些格子在图像中的位置,然后使用PnP算法和非线性优化等数学方法计算摄像机的位置和朝向。

HALCON摄像机标定步骤和代码接下来我们将介绍如何使用HALCON进行摄像机标定。

首先我们需要准备一些标定板或者其他特殊图案。

这些标定板通常由黑白相间的正方形组成,我们需要利用这些正方形来求解内部参数和外部参数。

1. 导入图像首先,我们需要使用HALCON导入摄像机标定所需的图像。

通常我们需要拍摄一系列的标定板图像,这些图像应该包括各种不同的摄像机角度和位置。

这些图像将用于内部参数和外部参数的标定过程。

通常在导入图像之前,需要对图像进行预处理,例如去除噪声和平滑化处理。

基于HALCON软件的单摄像机标定方法研究

基于HALCON软件的单摄像机标定方法研究

1 摄像机模型和参数
摄像 机模型指如何将 世界坐标系 中的某 点通过摄像 机 、镜头和图像采集设备映射到二维图像 中,其成像过程 即对空间点的投影变换[ 3 ] 。使用HAL C O N 软件可对两种不 同类型的摄像机进行标定:面阵摄像机和线阵摄像机 。在 机器视觉 中,有两种不同类型的摄像机镜头 ,一种镜头和
中 国 科 技 信 息 2 0 1 4 年 第 0 3 , 0 4 期 合 刊・ C H I N A S C I E N C E A N D T E C H N O L O G Y I N F O R M A T I O N F e b 2 0 1 4
信息科技
基于H AL C ON 软件的单摄像机标定方法研究
MAT L AB、0 p e n C V及HAL C ON软件等 。HA L C O N软 件是 德 国MVT e c 公 司开 发 的一套完 善的机 器视 觉算法 包 ,它节约 了产 品开发成本 ,缩短 了开 发周期 ,其灵活 的架 构便于机 器视 觉、医学 图像和 图像分析应 用的快 速 开 发 。HALC 0 N支持 多种 操作 系统 ,其 函数库可 以用
崔帅锋
I .郑 , J q ’ I m . 民广播 电 台 ,河 南 郑 州 4 5 0 0 1 8
Si n gl e Camer a Cal i br a t i on St ud y Bas ed On HALCON Sof t war e
Cu i Sh u a i f e n g

引言
计 算 机视 觉 研 究 的 目 标 是 通 过计 算 机 对采 集 到 的 图像 或 视 频 进行 处 理 ,从 而 实现 对 客观 世界 三 维 场景 的 认知 ,

hanlcon

hanlcon

hanlcon⼀.halcon单摄像机标定从今天起,每天坚持学习10-15个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, CameraIdx, CalibObjIdx, CalibObjPoseIdx, Row, Column, Index, Pose : )收集算⼦6的标定数据,将标定数据储存在标定数据模型中。

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

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的标定数据,将标定数据储存在标定数据模型中。

输入控制分别为标定数据模型句柄,相机索引,标定板索引,位姿索引,行列坐标,位姿。

8.calibrate_cameras( : :CalibDataID:Error)标定一台或多台相机,依据CalibDataID中的数据。

控制输出平均误差。

9.get_calib_data( : :CalibDataID,ItemType,ItemIdx,DataN ame: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)
设置新的坐标原点,控制输入为原始的位姿和沿着世界坐标系的三个坐标轴的平移量,控制输出为新的位姿。

相关文档
最新文档