石鑫华视觉 发表于 2017-5-11 10:32:32

基于Vision Assistant的图像处理实用教程-第一章 基本概念 1.5 空间标定

NI视觉助手VisionAssistant教程第一章界面与基本概念第五节 空间标定本节描述了怎么设置一幅图像的标定,以便于将像素坐标转换成现实世界坐标。当需要做准确测量并使用现实世界的单位时,将像素坐标转换成现实世界坐标是非常有用的。标定介绍空间标定是将像素转换成现实世界单位的一个过程,同时还会解决许多成像固有的错误,如畸变,透视等。当你需要使用现实世界单位进行精确测量时,标定成像设置是非常重要的。一个图像包含了像素形式的信息。空间标定允许你将一个测量从像素单位转换成另一个单位,如英寸或厘米。如果你知道像素与现实世界单位的转换比率,这种转换是非常容易的。例如,一个像素等于一英寸,一个长度测量为10像素,那么其真实值则为10英寸。当然这个转换也可能并不简单,因为透视投影与镜头畸变会影响像素单位的测量。通过构建像素单位到现实世界单位的转换映射,标定考虑了可能的错误。对于图像显示和形状测量,你也可以使用标定信息来校正透视或非线性畸变错误。NI视觉标定软件支持面阵相机使用直线或远心镜头进行标定。但是NI视觉标定软件不能准确的标定鱼眼镜头或曲线镜头。什么时候使用标定使用NI视觉标定工具可以做下面的一些事情:l通过成像一个标准模式,如标定模板或通过提供参考点,可以自动标定成像装置。l在现实世界单位与像素单位之间转换测量结果,如长度、面积或宽度。l应用一个已经学习过的标定映射,通过标定设置来校正采集的图像。l分配一个任何标定轴来测量现实世界单位中的位置,相对于一个图像中的一个点。标定算法这节内容描述了NI视觉支持的标定算法。下面的表提供了一个每种算法何时使用的简单描述。详细信息请参看后面的独立章节。
算法名称什么时候使用
Simple Calibration简单标定当你的相机与被测目标的表面是垂直时,且畸变可以忽略不计时,可以使用简单标定。例如,简单标定可以用于使用远心镜头的成像装置。
Perspective Calibration透视标定使用透视标定来纠正透视引起的畸变,这种畸变通常是因为相机的光轴与被目标的表面并不垂直引起的。
Distortion Modeling畸变建模使用畸变模型来校正由于镜头的固有缺陷引起的畸变。NI视觉支持以下畸变模型:Division除法:校正径向畸变。Polynomial多项式:校正径向和切向畸变。如果你的相机也不垂直于被测物体的表面,你可以联系联合使用透视标定与畸变建模两种方法进行校正。
Camera Modeling相机建模使用相机模型为模拟详细的相机特征,这些特征包括焦距、图像中心以及畸变模型。相机模型最常用的应用是用于机器人,以确定相机和被测目标的相对关系。因为相机模型包含了一个畸变模型,你不需要再计算一个单独的畸变模型。
Microplane Calibration微平面标定当工作平面是非线性的时候(即被测目标的表面不是一个平面,而是由曲线组成的),可以使用微平面标定。
表1 标定算法简单标定简单标定算法直接转换像素坐标和现实世界的单位。透视标定透视标定算法计算整个图像中一个像素到现实世界的映射,允许你轻松的转换你转换像素坐标到现实世界单位。下图包含在现实世界有相同大小的多个点,但是经透视投影后它们变得扭曲了:图1 透视标定畸变建模畸变模型使用一个或多个标定栅格来模拟由镜头不完美引起的畸变,并且对整个图像校畸变。畸变建模可以模拟径向和切向畸变。下面的图显示了典型的镜头畸变:图2 镜头畸变图2-A显示了一个桶形畸变。图2-B显示了一个枕形畸变。你可以使用除法模型或多项式模型来校正径向畸变。切向畸变发生在相机传感器与光轴不对齐的情况下。如果你的图像表现有切向畸变,使用多项式模型。相机建模相机模型使用多个标定栅格图像来模拟详细的相机特征,包括焦距、图像中心以及畸变模型。使用相机模型,你可以应用数据计算来确定值,如目标的姿势。微平面标定微平面标定算法计算标定栅格中集中于每个点的一个矩形区域的像素到现实世界的映射。NI视觉围绕每个点基于其邻域对该点进行插值映射。使用微平面标定来校正由于非线性工作平面引起的畸变。下面的图显示了非线性畸变:图3 微平面标定空间标定概念标定软件使用标定算法和一系列已知的像素到现实世界的映射关系来计算整幅图像的标定信息。标定软件使用这些已知的映射来计算整个图像中像素到现实世界的映射。个别标定算法对于创建一系列已知的像素信息可能有特别的需求。在你标定了图像之后,为了表达像素测量在现实世界的单位,或校正扭曲图像的一部分,你可以定义一个标定轴。你也可以检查统计结果以评估标定的质量或状态。映射像素坐标到现实世界坐标你可以用两种方式指定一系列相机到现实世界的映射,这个取决于你选择的标定算法。你可以手动映射像素坐标到现实世界坐标,也可以使用标定栅格。由此产生的标定信息仅适用于你用于创建映射的成像装置。成像装置中任何违反映射信息的改变都会降低标定信息的准确性。手动定义映射手动定义映射,在标定软件中输入一系列的现实世界的点和对应的像素坐标。下表描述了允许手动定义映射的算法:
算法名称算法描述
Simple Calibration 简单标定简单标定通过按标定水平和垂直方向将像素坐标转换到现实世界坐标。将水平和垂直方向上的像素距离以现实世界单位提供给标定软件。
Perspective Calibration 透视标定提供一组像素到现实世界的映射用于透视标定,以校正透视畸变。为了校正透视畸变,至少需要4个像素到现实世界的映射,当然更多的映射可能会得到更好的结果。
表2 手动定义映射算法使用标定栅格标定栅格(calibration grid)是由等距离的网格组成的,类似于下图4-A所示的圆点栅格:图4 圆点栅格(圆点标定板)为了使用标定栅格,需要以现实世界的单位提供水平(dx)方向和垂直(dy)方向两点之间的距离。标定软件使用如图4-B栅格图像,以及栅格中两点之间的距离生成一系列标定过程需要的像素到现实世界的映射。下面的算法支持使用标定栅格:l畸变模型——除法——多项式l相机模型l微平面标定参考下面的指南使用标定栅格实现准确的结果:l标定栅格应该覆盖大部分的视野或检查目标的面积。l为了校正图像的畸变,至少需要4个像素到现实世界的映射,当然更多的映射可以提供更好的结果。使用多个标定栅格图像某些标定算法可能需要多个标定栅格图像。例如,畸变模型仅能学习那些只在一幅标定栅格图像中点。如果那些点没有覆盖整个视野或检测下的面积,畸变模型可能并不是很准确。NI视觉标定软件可以使用多个标定栅格图像。下面的图像显示了在同一视野中通过摆放不同位置获得的多个标定格栅图像。图5 同一视野下的多个栅格图像当多个提供了图像后,标定软件使用最小二乘法来优化标定模型。在学习了畸变模型之后,你必须执行透视标定以设置你想要进行测量的工作平面并且使能像素到现实世界的映射。下面的图显示了使用多个标定栅格图像时涉及到的步骤。图6 多幅标定栅格图像使用时包含的步骤首先,使用从多幅标定栅格图像中的得到的点学习畸变模型或相机模型。然后对你想进行测量的工作平面进行透视标定。如果工作平面有变化,则必须重新学习透视标定。使用多个标定栅格图像在多个平面为了计算相机模型,你必须至少从三个不同的投影平面提供多个栅格图像。下面的图显示了相同的标定栅格在多个不同的投影平面:图7 相同标定栅格在多个投影平面为了得到准确的结果,用于计算相机模型的标定栅格应该包括一个最小45度的相对角度。下面的图像显示了不同的相对角度覆盖:图8 相机模型的计算需要有45度以上的相对角图8-A显示了两个标定栅格有一个20度的相对夹角。图C显示了两个标定栅格有一个90度的相对夹角。相机模型计算出的结果,图8-A没有图8-C的准确。例如,图C中的栅格交点比其它图像中要更清晰。如果标定栅格之间的相对角度太小,标定软件则会表明其没有足够的数据来计算相机模型。如下图所示,使用多幅标定栅格图像来计算相机模型,可以获得最准确的结果:图9 理想的多幅标定栅格图像标定相机模型标定轴为了表示在现实世界单位的测量结果,必须定义一个标定轴。为了定义标定轴,需要指定以下的信息:l标定轴的原点,以像素坐标表示;l标定的水平X轴与图像的水平轴的夹角,以度来表示。l标定垂直Y轴的方向,要么直接要么间接。下面的图展示了一个默认的标定轴和一个用户定义的标定轴。标定系统的原点位置圆点的中心位置。点A表明了默认标定轴的原点,从图像的顶部最左边像素开始。点B表明了用户定义的标定轴的原点。标定轴的角度,定义为θ,指定标定轴X1的方向,是关于图像中的水平轴的。标定轴原点在A点的垂直Y轴使用的是间接垂轴,而标定轴原点在B点的使用的是直接垂轴。图10 默认标定轴与用户定义标定轴下面的图说明了垂轴的方向。一个间接轴方向如图11-A所示,对应于一个典型的数字图像,它的左上角像素作为原点。一个直接轴方向如图11-B所示,对应于现实世界笛卡尔坐标Y轴的方向。图11 直接垂轴方向与间接垂轴方向默认标定轴定义如果标定使用多个标定栅格图像,则标定轴被定义在工作平面图像。标定过程定义了一个默认的标定轴如下所示:1、原点的设置根据以下的条件:l如果使用手动定义参考点,原点被放置在点(0,0)相对于你定义的点。l如果使用标定栅格图像,原点放置在标定栅格图像最左上角的点的中心。2、角度设置为0。这样使X轴与标定栅格图像最顶端的一行的点是对齐的。3、垂轴方向被设置成间接的。这样使Y轴与标定栅格图像最左边一列的点是对齐的。    如果你指定了一系列点而不是使用一个标定栅格图像,这些点定义了默认的标定轴方向、角度和垂轴方向。重新定义标定轴你可以使用NI软件重新定义一个标定轴。例如,你可能想定义一个标定轴基于检查下的某个零件的测量值。下面的图12显示了一个检查应用程序,它的目的是确定电路板上与角落相关的孔的位置。电路板放在一个平台上,这个平台可以在X和Y方向移动,而且可以围绕中心旋转。电路板的角落位置平台的中心。在初始设置位置,如图12-A所示,使用以下参数定义标定轴与电路板的角落对齐:l标定轴的起点被定义为电路板的角落上的位置(像素单位)。l标定轴的角度被设置成180度。l垂轴方向设置成间接方向(向上)。在这个示例中,你可以使用模式匹配来找到孔的像素位置,在图12-A中以十字标记来表示。转换孔的像素位置到现实世界位置。这个转换返回现实世界关于标定轴的孔位置。在检查过程中,平台可能移动或旋转一个已知的量。这会引起板电路板在相机视野中占据一个新的位置,这会使电路板在后面的图像中出现移动或旋转,如图12-B所示。因为电路板已经移动了,标定轴的原点与电路板的角落不再对齐。因此,使用这个标定轴的测量可能不再准确。使用平台已经移动多少的信息来确定图像中电路板角落的新位置。使用设置标定函数(set calibration function)来更新标定轴以反映新的位置,如图12-C所示。更新过的标定轴的起源成为电路板角落新的像素位置,平台旋转的角度则成为标定轴的角。图12 重新定义标定轴标定质量信息失真畸变的指定是相对而言的。例如,一个镜头在一个给定的区域之上显示出了2%的枕形径向畸变,会将图像中一个角落区域上的点与光轴的距离拉远2%。在结果图像里,角落距离光轴应该是400像素的话,测量结果则会为408像素。NI视觉标定软件提供了一个统计畸变百分比来表示标定系统的质量。NI视觉软件会计算每个像素的畸变误差除以每个像素到光轴的距离。其平均结果将作为统计畸变百分比。使用畸变统计百分比来确定选择的标定算法是否适合你的应用程序。例如,如果使用透视标定或使用稀疏的标定栅格来校正表现出非线性或镜头畸变的图像,你可能会得到一个高的统计畸变百分比。你也可以使用统计畸变百分比来确定标定系统是否有问题。例如,如果你的镜头只引入了一个微小的畸变,但是却有一个高的统计畸变百分比,这种情况可能表明了一个问题,如标定板有物理上的畸变扭曲。误差映射NI视觉标定软件计算误差映射,连同下面的误差统计:lMean Error平均误差lMaximum error最大误差lStandard deviation标准偏差误差映射是位置误差的一个估计值,当转换像素坐标到现实世界坐标时它是可以预计的。误差映射是一个二维数组,包含了图像中每个像素预计的位置误差。像素坐标(i,j)的误差值表示估计的现实世界坐标(x,y)相对于真正的现实世界位置的最大可能位置误差。下面的方程(两点之间的距离)显示了如何计算误差值:e(i,j)=√((x-x_true )^2+(y-y_true )^2 )误差值表明了到估计的现实世界坐标到真正的现实世界位置的径向距离。误差值有一个95%的可信区间,这意味着位置误差估计的现实世界坐标等于或小于误差值95%时,标定变得不可靠。一个像素坐标有小的误差值表明估计的现实世界坐标计算的非常准确。而较大的误差值表明估计的现实世界坐标可能并不是很准确。使用误差映射来确定成像装置和标定信息满足检查应用程序的精度要求。如果误差值大于你的应用程序设置的位置误差,那么你可以需要提高你的成像装置。一个有很高镜头失真的成像装置通常会得到一个很高的误差映射。如果你正在使用一个有相当大失真的镜头,你可以使用误差映射来确定像素位置,以满足应用程序的精度要求。由于镜头畸变影响的增加是朝向图像边界的,所以接近镜头中心的像素有较低的误差值,而图像边界处的像素则会有较高的误差值。图像校正图像校正涉及到在标定设置里将采集的有畸变的图像转换成透视误差和镜头畸变都已经被校正的图像。NI视觉通过对输入图像中的每个像素应用像素到现实世界坐标的转换来校正图像。然后NI视觉通过简单位移与缩放来转换现实世界坐标的位置生成一幅新的图像。NI视觉在缩放过程中会使用插值来生成新的图像。当你学习校正时,你可以选择构建一个校正表。校正表是一个存储在内存中的查找表,它包含了图像中所有像素的现实世界位置信息。查找表极大的提高了图像校正的速度,但是会更多的内存并且会增加你的学习时间。当你想在应用程序中校正一系列图像时,可以使用这个选项。校正图像是一个耗时的操作。你也许不需要图像上同样可以得到你想要的测量。例如,你可以使用NI视觉粒子分析函数从图像中直接计算标定测量,这个图像包含了标定信息但是并没有校正。同样的,你可以将边缘检测函数返回的像素坐标转换成现实世界坐标。校正面积你可以校正整个图像或图像中的某个区域,基于用户定义的ROI组或通过标定软件定义的标定ROI。下面的图显示了不同的图像区域可以指定用于校正。NI视觉学习校正区域仅在你指定的区域中。图13 标定ROI1、Calibration ROI Using the Perspective Algorithm标定ROI使用透视算法2、Calibration ROI Using the Nonlinear Algorithm标定ROI使用非线性算法3、Rectangular Region Surrounding Each Dot每个点周围的矩形区域图14 校正区域1、Full Image整个图像:校正整个图像,不用管标定ROI和用户定义ROI。2、User or Calibration ROI用户定义ROI或标定ROI:使用用户定义ROI或标定ROI校正像素。3、User ROI用户定义ROI:在学习标定阶段,仅校正在用户定义的ROI里的像素。4、User and Calibration ROI用户定义ROI和标定ROI:只校正用户定义ROI与标定ROI交集部分中的像素。5、Calibration ROI标定ROI:仅校正在标定ROI中的像素。标定ROI是由标定算法计算得到的。有效的坐标表明你试图将像素坐标映射到现实世界坐标的像素是否在你校正的图像区域里。例如,如果你仅校正标定ROI里的像素,但是你又试图映射标定ROI外的像素到现实世界坐标,这校正图像学习参数会显示有错误。缩放模式缩放模式定义了如何缩放校正图像。两个缩放模式选项是可用的:自适应缩放与保持面积缩放。下面的图显示了缩放模式。图15-A显示了原始图像。使用自适应缩放,校正图像被缩放成与原始图像同样大小的图像,如图15-B所示。使用保持面积缩放,则校正后的图像中的特征面积与原始图像的面积相同,但是图像的大小通常会变得更大,如图15-C所示。因为保持面积缩放模式增加了图像的大小,函数的处理时间可能会增加。图15 缩放模式深入探讨这里描述了生成标定图像的原因因素以及这些因素是如何用于映射图像像素坐标到现实世界坐标的。同时还描述了NI视觉软件校正畸变,以及如何计算一幅图像中目标的姿势。下面的图像显示了如何创建一幅图像:图16 投影映射(ProjectiveMapping)其中:l标定的目标表示在现实世界坐标系(X_w,Y_w,Z_w )。l相机的坐标系表示为(x_c,y_c,z_c ),z轴与光轴对齐,x轴和y轴则与图像平面的水平轴和垂直轴对齐。l一个中间平面,与图像平面平行,说明了图像里标定目标的形状。相机坐标轴是通常下面的转换关系从现实世界坐标轴移位得来的:P_c=R(P_w-T)其中:P_w等于现实世界坐标系中的点,P_c等于相机坐标系中的同质点,R等于现实世界坐标轴与相机坐标轴之间的旋转矩阵,T等于现实世界坐标轴的原点减去相机坐标轴的原点。单应性一个物理投影或单应性,定义了一个点从一个平面到另一个平面的几何映射。在标定里,单应性可以描述现实世界的三维坐标到图像中的像素坐标的转换。一个物理投影变换将现实世界点P(X_w,Y_w,Z_w )映射为图像点p(x_w,y_w )。这里需要注意的是,因为p被定义为同质坐标,所以你必须通过z来分开同质点以恢复实际图像的坐标。一个典型的单应性可表示为:p=sHP其中:p等于图像平面投影到相当于二维图像坐标的相机坐标系中的表现。p等于现实世界点在三维现实世界坐标系中的表达。s等于缩放因子。H等于单应性。在NI视觉标定软件中,单应性(H)是一个3×3的矩阵,它由另外两个矩阵的生成:一个相机矩阵(M)和单应性矩阵(W)。相机矩阵一个相机矩阵(M)(Camera Matrix)描述了以下内部相机参数:l焦距长度l原点位置l像素尺寸l像素倾斜角度内部相机参数使用下面的矩阵表示:其中以及F等于焦距,以毫米为单位。s_x等于相机传感器在水平方向上的像素尺寸,以像素每毫米为单位。s_y等于相机传感器在垂直方向上的像素尺寸,以像素每毫米为单位。c_x等于成像器到光轴的水平位移,以毫米为单位。c_y等于成像器到光轴的垂直位移,以毫米为单位。α等于像素y关于x的倾斜角。file:///C:/Users/SHI/AppData/Local/Temp/msohtmlclip1/01/clip_image081.png的通常等于0。注意,因为file:///C:/Users/SHI/AppData/Local/Temp/msohtmlclip1/01/clip_image081.png通常等于0,则file:///C:/Users/SHI/AppData/Local/Temp/msohtmlclip1/01/clip_image083.png被定义为:相机镜头的焦距F以及像素尺寸(s_x,s_y )不能直接计算出来。相机标定只能计算焦距和像素尺寸的导数(f_x,f_y )。单应性矩阵一个单应性矩阵(W)(Homography Matrix)由旋转矩阵和平移矢量组成,平移矢量表示为现实世界平面的点到图像平面的点的矢量。物理投影变换矩阵可以表示为:其中R等于旋转矩阵。t等于平移矢量。旋转矩阵(R)可以表示为三个独立的3×1矩阵,如下所示:因此,原始单应性p=sHP可以表示为因为标定的执行通常是对于平面标定目标,因此可以将其一般化,令Z=0来进一步简化单应性:镜头和相机畸变有两种类型的失真是比较常见的。镜头的特性会引入一个径向畸变,而一个错位的镜头与相机传感器可能会引入切向畸变。下面的图说明了这两种类型的失真:图17 径向畸变P_1A等于目标平面(Object Plane)上的点P_1在图像平面(Image Plane)上的期望投影。P_1D等于目标平面上的点P_1由于镜头畸变在图像平面上的期望投影。P_2A等于目标平面的点P_2在图像平面上的期望投影。P_2D等于目标平面上的点P_2由于镜头畸变在图像平面上的期望投影。图18 切向畸变NI视觉提供了除法和多项式畸变模型来校正这两种镜头畸变。除法畸变模型除法畸变模型(divisiondistortion model,又叫除式畸变模型)可以校正径向畸变。除法畸变模型使用一个单一的参数file:///C:/Users/SHI/AppData/Local/Temp/msohtmlclip1/01/clip_image121.png来模拟失真。除法畸变模型可以可以表示为:
其中K>0时校正枕形畸变K<0时校正桶形畸变下面的图展示了桶形和枕形两种类型的畸变:图19 桶形畸变(左)与枕形畸变(右)使用逆方程来得到扭曲纠正坐标:多项式畸变模型多项多畸变模型可以校正径向和切向两种畸变。使用多项式畸变模型校正径向畸变多项式模型使用一个或多个系数参数(K)来模拟失真。径向畸变的畸变模型可以表示为:对于特定的镜头为了模拟径向畸变,你可以指定需要的系数数量。使用多项式畸变模型校正切向畸变多项式模型使用两个参数P_1和P_2来描述切向畸变。切向畸变的畸变模型可以表示为:确定目标的姿势在单应性章节中的解释,一个典型的单应性可表示为:p=sHP其中:p等于图像平面投影到相当于二维图像坐标的相机坐标系中的表现。P等于现实世界点在三维现实世界坐标系中的表达。s等于缩放因子。H等于单应性。在NI视觉标定软件中,单应性(H)是一个3×3的矩阵,它由另外两个矩阵的生成:一个相机矩阵(M)和单应性矩阵(W)。在单应性矩阵章节的解释中原始单应性p=sHP可以简化为其中:p等于图像平面投影到相当于二维图像坐标的相机坐标系中的表现。P等于现实世界点在三维现实世界坐标系中的表达。s等于缩放因子。M等于相机矩阵。r_1和r_2等于简化了的旋转矢量R。t等于平移向量。计算目标的姿势为了计算出工作平面的姿势,你需要完成下面的步骤:1、学习相机模型并生成相机矩阵(M)。2、执行透视校正并生成单应性矩阵(W)。3、使用NI视觉软件提供的单应性(H)和相机矩阵(M)信息,应用下面的矩阵变换来计算旋转和平移系数:RR^T=I其中I等于单位矩阵|r_1 |=|r_2 |r_3=r_1×r_24、使用计算得到的系数,推导出目标的欧拉角,以确定目标的姿势。
页: [1]
查看完整版本: 基于Vision Assistant的图像处理实用教程-第一章 基本概念 1.5 空间标定

LabVIEW HALCON图像处理入门教程(第二版)
石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
《LabVIEW Vision函数实例详解》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23