halcon单相机标定详细说明

合集下载

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

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

Halcon学习(二十二)摄像机标定(函数详解)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单相机标定和测量示例相机标定有很多方式:九点标定法、棋盘格标定法、圆形阵列标定法;本次采用圆形阵列标定法。

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数字图像处理 第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单相机标定详细说明

相机标定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相机标定简介

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算子笔记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标定板》课件

《halcon标定板》课件

标定板的使用方法
1
步骤二
2
通过相机控制软件拍摄多张标定板图像,
覆盖不同角度和焦距。
3
步骤一
将标定板放置在相机视野范围内,并确 保图像中能够完整显示标定板。
步骤三
使用图像处理软件根据标定板图像进行 相机校准和畸变矫正。
标定板的使用注意事项
平整稳定
在使用标定板时,确保其平 整稳定,防止标定板变形或 松动。
《halcon标定板》PPT课 件
欢迎使用《halcon标定板》PPT课件!本课件将介绍标定板和其在计算机视觉 中的功能与用途,标定板的种类、选择原则、使用方法,以及在使用过程中 需要注意的事项,以及常见问题及解决方案。让我们开始学习吧!
标定板的功能与用途
1 准确测量
标定板用于对相机进行准确的校准和测量,提供精确的图像尺寸和坐标信息。
圆形标定板
圆形标定板由一组同心圆组成, 用于测量图像畸变和判定图像 中心。
标定板的选择原则
1 尺寸和比例
根据应用需求选择合适的 标定板尺寸和比例,确保 能够覆盖场景中的目标物 体。
2 材质和耐用性
选择耐用且易于清洁的材 质,定点密度
根据需要选择标定点的密 度,以满足对精度和检测 要求的不同需求。
2 图像处理
标定板在图像处理中起着重要的作用,可以用于图像对齐、畸变校正和三维重构等领域。
3 质量控制
通过使用标定板进行相机标定,可以提高产品质量控制,并确保图像中的目标尺寸和形 状精准。
标定板的种类
角点标定板
角点标定板由一组明暗交替的 角点组成,用于角点检测和图 像畸变校正。
栅格标定板
栅格标定板由一组等间距的平 行线组成,用于测量图像畸变 和场景深度。

halcon辐射标定

halcon辐射标定

Halcon辐射标定1. 简介Halcon是一种广泛应用于机器视觉领域的软件工具。

辐射标定是Halcon中的一个重要功能,用于校准相机的辐射性能。

通过辐射标定,我们可以获取相机的辐射响应函数,从而在图像处理中进行辐射校正,提高图像质量和准确性。

2. 辐射响应函数辐射响应函数是相机对不同辐射强度下光线的响应关系。

在辐射标定中,我们希望通过一系列已知辐射强度的图像来建立相机的辐射响应函数。

辐射响应函数通常使用灰度值来表示,可以简单地理解为相机对光线的亮度感知能力。

通过辐射标定,我们可以得到一个灰度值到辐射强度的映射关系,从而在后续的图像处理中将图像的灰度值转换为真实的辐射强度。

3. 辐射标定流程辐射标定的流程可以分为以下几个步骤:3.1 图像采集首先,需要采集一系列具有不同辐射强度的图像。

可以通过控制光源的亮度或使用不同的滤光片来实现不同的辐射强度。

采集的图像应覆盖整个辐射范围,并尽可能避免过曝或欠曝的情况。

3.2 图像预处理在进行辐射标定之前,需要对采集的图像进行预处理。

预处理的目的是去除图像中的噪声和干扰,提高标定的准确性。

常见的预处理操作包括去噪、图像增强、图像配准等。

3.3 提取感兴趣区域在标定过程中,我们只关注感兴趣区域内的像素。

因此,需要通过图像分割或者手动选择的方式提取感兴趣区域。

感兴趣区域应包含辐射强度变化明显的区域,以提高标定的准确性。

3.4 计算灰度值和辐射强度的对应关系通过提取的感兴趣区域,可以计算每个像素的灰度值和对应的辐射强度。

可以选择一种已知的辐射强度作为参考,然后计算每个像素的灰度值和参考辐射强度之间的比例关系。

最终得到灰度值和辐射强度的对应关系,即辐射响应函数。

3.5 辐射校正在图像处理过程中,可以通过辐射响应函数将图像的灰度值转换为真实的辐射强度。

这样可以提高图像处理的准确性和可靠性。

辐射校正的过程是将图像中的每个像素的灰度值通过辐射响应函数进行映射,得到相应的辐射强度。

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

相机标定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 是世界坐标系原点与摄相机坐标系原点之间的差值。

相机坐标系到图像坐标系X d =f X c Z c ,Y d =f Y c Z c [X d Y d ]=f Z c [X c Y c] (1-4)(1-5)图5 相机成像坐标变换原理图图像物理坐标到图像像素坐标系图形坐标系是一个二维坐标系,又分为图像像素坐标系和图像物理坐标系。

图像像素坐标系X f -Y f 是以图像左上角为原点,以图像互为直角的两个边缘为坐标轴,满足右手准则而建立的。

图像是由一个个小的像素点组成的,图像像素坐标系的横纵坐标正是以像素点为单位,用来描述图像中每一个像素点在图像中的位置。

图像物理坐标系以光轴与像平面交点为圆心建立的,图像物理坐标系的两个坐标轴分别与图像像素坐标系的坐标轴平行,并且方向相同,如图3所示。

图像物理坐标系是以毫米为单位的直角坐标系X-Y 。

用(X f ,Y f )来描述图像像素坐标系中的点,用(X d ,Y d )来描述图像物理坐标系中的点。

图像物理坐标系的原点O 在图像像素坐标系中的坐标为(C x , C y ),用dx ,dy 来表示相邻像素点中心在X 轴方向和Y 轴方向的实际物理距离,则与图像像素坐标系的转化关系为:{ X f =X d dx +C x Y f =Y d dy +C y (1-6)1.4相机畸变模型相机畸变主要分为径向畸变和切向畸变,其中径向畸变是由透镜造成的,切向畸变是由成像仪与相机透镜的不平行造成的。

针孔模型是理想透镜的成像模型,但是实际中相机的透镜不可能是理想的模型,透镜形状的非理想特征造成像点会沿径向发生畸变。

一个像点沿径向内缩叫负畸变,或桶形畸变沿径向外延叫正畸变,或枕形畸变。

这种崎变相对于光轴严格对称的,也是畸变的主要分量[2]。

(X u ,Y u )为矫正后的坐标,(X d ,Y d )是受到镜头失真影响而偏移的像平面坐标,径向径向畸变模型:X u =X d +X d (k 1r 2+k 1r 4+⋯) Y u =Y d +Y d (k 1r 2+k 1r 4+⋯) (1-7)(1-8)其中k 1,k 2,⋯为径向畸变系数,r =√X d 2+Y d 2,一般只需要考虑一阶或二阶就可以满足要求。

切向畸变模型:X u =X d +P 1X d (3X d 2+Y d 2)+2P 2X d Y d +O[(X d ,Y d )4]Y u =Y d +P 2X d (3X d 2+Y d 2)+2P 1X d Y d +O[(X d ,Y d )4](1-9) (1-10) 其中P 1和P 2为切向畸变影响系数。

图7 径向畸变图8 切向畸变图6 图像像素坐标系和图像物理坐标系1.5需要标定的参数外部参数由前面可知,摄像机的外部参数是用来描述摄像机坐标系与世界坐标系的关系,它表明摄像机在世界坐标系中的位置和方位,可用的旋转矩阵和平移向量来表示,如式一所示。

其中由于为单位正交矩阵,必须满足个正交约束,故实质上旋转矩阵只有三个独立参数,加上平移向量的三个参数,故一共有个独立的外部参数。

内部参数内部参数只与摄像机内部结构有关,而与摄像机位置参数无关,主要包括图像主点坐标(c x,c y),单个像元的高宽s x,s y,摄像机的有效焦距f和透镜的畸变失真系数k等。

摄像机的内部参数有时也可以从制造商提供的说明书中查到,但是其精确性不能满足要求,仅可作为参考。

实际应用中需要对它们进行标定。

主点坐标(c x,c y),理论上主点坐标一般位于图像中心处,但实际上由于摄像机制作和使用摄像机的镜头可转动和拆卸等原因,使得面阵安装并不能保证以透镜光轴为中心,且图像采集数字化窗口的中心不一定与光学中心重合,这就使得主点不一定在图像的帧存中心,故需要标定,,的值。

单个像元的高宽s x,s y,该数据可以在制造商提供的技术文档中查到,但是该数据不是完全准确的。

单个像元的高宽理论上应该是相等的,但是由于制造的误差,两者不可能完全相等,因此需要根据实际情况对其进行修正。

透镜的畸变失真系数前面讲到理想的透镜成像才满足线性关系,实际上透镜存在多种非线性畸变,需要根据实际情况对它们进行修正。

1.6计算方法张正友标定法、Tsai两步标定法。

参考文献:1宋旗桂. 应用歪斜光线追踪法及近轴光线追踪法于照相机校正[D]. 台湾: 国立成功大学, 2007.2 邹凤娇. 摄像机标定及相关技术研究[D]. 成都:四川大学,硕士学位论文,2005.1.7目前设备中采用过的标定方法1、目前在RFID设备、LCR设备中标定都只采用一张,忽略相机畸变。

通过图像处理,提取标定板圆心的间距除以像素值得到。

该方法得到像素X方向和Y方向采用同一距离,忽略其误差。

2、Halcon的三维标定,是halcon默认的标定方法,消除径向畸变和视角畸变,在XYZ图9 Halcon三维标定采集图像示例3、Halcon的二维标定,只在XY平面内平移和旋转标定板,采集18张图像,减小Z的影响提高标定精度实验数据:图像坐标X方向像素物理距离图像坐标Y方向像素物理距离方法一15.5618um 15.5618um方法二15.7575um 15.7308um方法三采用方法一每个像素距离与方法二有0.2um的差距,当距离较小时,这个误差可能表现的并不明显,在目前的设备中基本能满足要求。

根据方法二知道X方向与Y方向像素物理差值是0.027um。

存在的问题:1、目前标定板相对视野范围显得有点大,会降低标定的精度。

考虑自己制作标定板,打印出来,但是遇到问题是,打印出来标定板大小与我设计的标定板大小有些许差距,可能是由于文件格式转换过程中导致像素改变使打印的大小出现偏差。

2、因尽量减小光圈,提高景深,提升标定精度。

后期采图时,尽量减小光圈。

2 使用Halcon标定助手进行标定2.1 标定描述机器视觉本质就是通过图像来获取三维世界的信息,然后基于该信息进行相应的图像处理手段,从中获取我们想要的信息。

标定的过程实际是建立图像世界与三维世界位姿的关系,只有准确地建立了该关系,才能从图像准确得知三维世界的真实状态。

但是镜头在拍摄物体时存在成像的畸变,镜头成像的畸变导致图像不能完全地反映真实的世界,对图像的后续处理会产生干扰。

尤其对于定位和检测,需要更高精度的矫正。

镜头成像的畸变分为径向畸变和切向畸变,相对切向畸变而言,径向畸变对图像影响较大,而径向畸变分为枕形畸变(Pincushion Distortion)和桶形畸变(Barrel Distortion),如图3所示。

因此,相机标定要矫正镜头的畸变,然后获取相机的内部参数和外部参数,建立起图像与三维世界的联系。

图3 枕形畸变与桶形畸变一个成功的标定,至少需要一个知道其精确尺寸的标定板。

在标定前需要采集不同姿态的标定板图像,确保每张图像都完整的包含了标定板。

标定图像的质量,很大程度上决定了标定是否能成功2.2 标定板标定的方法从原理上主要分为三大类:线性标定、非线性标定和二次标定。

使用的标定板有棋盘格也有原点阵列,如图4所示。

(a)棋盘格(b)原点阵列图4 标定板但是,halcon并非必须使用其特制的标定板才能进行相机标定,但是如果要使用Halcon 的标定算子进行标定,则必须使用Halcon特定的标定板,否则就需要自己去写标定板和特征点提取的算法了。

Halcon的标定板如图5所示,黑色的边框中有阵列分布的原点,在边框的左上角有个小三角用来确定其旋转的位置。

以30*30mm的标定板为例:黑色原点:7*7边框长度:30*30mm内边框长度:28.125mm*28.125mm黑色原点半径:0.9375mm原点中心间距:3.75mm裁剪宽度:30.75*30.75mm图5 halcon标定板标定板制作:Halcon的安装后的文件中含有部分型号标定板的描述文件,但是由于实际应用中的标定板尺寸与系统描述文件不一致,因此需要定制相应的描述文件。

Halcon中用gen_caltab(::XNum,YNum,MarkDist,DiameterRatio,CalTabDescrFile,CalTabPSFile:) 算子来制作一个标定板XNum 每行黑色标志圆点的数量。

YNum 每列黑色标志圆点的数量。

MarkDist 两个就近黑色圆点中心之间的距离。

单位是meterDiameterRatio 黑色圆点直径与两圆点中心距离的比值。

相关文档
最新文档