基于圆柱体的相机光心定位

2020-05-14 03:24昶,刘
沈阳理工大学学报 2020年6期
关键词:面片圆柱体标定

刘 昶,刘 青

(沈阳理工大学 信息科学与工程学院,沈阳 110159)

相机标定的目的是确定三维空间到二维图像平面的映射关系,是计算机视觉领域中的关键问题之一,标定精度会在很大程度上影响到视觉测量、三维重建等应用的准确性。目前,较为主流的标定方法主要有传统的相机标定、自标定和基于主动视觉的标定方法。传统的相机标定需要利用精度较高的标定物,如一维靶标[1-3]、平面靶标[4]和立体靶标[5]等。其中,一维靶标制作容易,但标定精度难以保证,而立体靶标的制作要求较高,平面靶标相对来说制作简单,也可以保证精度。最具代表性的标定方法是基于共面点特征的张氏标定法[6],可利用棋盘格平面标定板,或带有十字交叉特征点[7]或圆形标志点[8]的标定板。由于单一标定板图像提供的信息有限,该方法需要拍摄多幅不同位姿下的标定板图像,不适合应用于需要现场标定且不易移动标定板的场合;文献[9]利用了柱体和结构光进行相机标定,标定过程需要额外的设备;文献[10]应用虚拟像平面相机模型,利用一幅标定板图像构造目标的虚拟图像,实现畸变矫正,再通过最小二乘方法估计模型参数,同样需要多幅标定板图像。相机自标定方法主要分为基于场景约束的标定方法和基于几何约束的标定方法,前者主要通过场景中的平行或正交特征得到消失点或消失线信息,从而求出相机参数[11-12];后者利用绝对二次曲线或绝对二次曲面提供约束,通过Kruppa方程求解相机参数[13]。基于主动视觉的标定方法是在相机的运动参数已知的情况下对相机进行标定,这要求相机能做出某些特定的运动,因此需要特定的运动机构,在无法控制相机运动的场合不适用。

本文提出一种虚拟像平面相机模型下利用一个高度已知的圆柱体的标定方法,采用基于三角面片的方法生成圆柱体在虚拟像平面上的无畸变的投影图像,根据圆柱体本身具有的上下两底面相互平行、侧面与底面互相垂直的特性,得到关于光心位置的约束关系,实现光心在虚拟像平面坐标系下的定位。

1 虚拟图像生成

1.1 相机模型

本文采用虚拟像平面相机模型,利用平面标定板进行相机标定。如图1所示,设目标点P在真实像平面上的无畸变像点为q′,真实的成像点,即有畸变像点为q,由针孔模型,目标点P、无畸变像点q′和光心Oc共线,该直线与虚拟像平面的交点为P′。根据透视投影关系,可认为像点q′也是点P′在像平面上的成像,或者点P′是目标点P在虚拟像平面上的虚拟像点。本文将标定平面作为虚拟像平面,考虑到目标在虚拟像平面上的投影也能形成一幅图像,首先由原始图像构造目标在虚拟像平面上的投影图像,再由光心Oc和虚拟像点P′的连线确定投影射线。于是,光心Oc和虚拟像平面构成了一个理想的针孔模型,光心到虚拟像平面的垂直投影点为虚拟主点,光心到虚拟像平面的距离为虚拟焦距,该模型的核心内容包括虚拟图像生成和确定光心在虚拟像平面坐标系下的坐标。

图1 虚拟像平面相机模型

1.2 虚拟图像生成的三角面片拟合法

拍摄一幅平面标定板图像,并以其为虚拟像平面,记图像中有畸变像点q坐标为(u,v),对应的在虚拟像平面坐标系中的虚拟像点P′的坐标为(x,y),当仅考虑一阶径向畸变、切线畸变和薄棱镜畸变时,P′与q满足以下关系[14]

(1)

式中参数ci,j、di,j(0≤i+j≤3)和ei,j(0

(2)

该方法由于参数较多,计算精度并不十分理想,可根据文献[10]提出的改进方法,将图像坐标原点移动到(u,v),于是公式(2)演变为

(3)

公式(3)仅包含29个参数中的2个,有利于提高计算精度。

目标在虚拟像平面上的投影图像由其原始图像按以下步骤生成:(1)在标定平面上人为划分一些等间隔网格,网格的位置和大小由人为设定;(2)利用上述方法计算每个原始像点对应的投影点坐标;(3)利用距离每个网格点最近的k个投影点的原始像点的灰度计算该网格点的灰度值,则所有的网格点形成标定平面上的一幅虚拟图像,该虚拟图像是无畸变的。

由于与真实像点对应的虚拟像点的分布并不均匀,因此,虚拟图像的生成是一个基于散乱点的图像生成问题。网格点灰度值的估计一般采用k-NN方法[10],本文采用三角面片拟合法来计算。将虚拟图像点的坐标值(x,y)和灰度值I写成一个三维坐标的形式(x,y,I),坐标原点Ow并构成三维空间,选择虚拟像平面上距离网格点最近的3个投影点,其坐标值和其对应的原始像点的灰度值构成采样点Si(xi,yi,Ii),i=1、2、3,构成一个三角面片,以网格点在该三角面片上的灰度值作为该点的灰度的近似值。为了尽量避免3个采样点构成的三角形不包含目标位置点而导致较大误差,本文选择距离网格点P′最近的4个投影点P1、P2、P3和P4参与运算,记Pi对应的原始像点的灰度值为Ii,对应的采样点为Si,如图2所示,4个投影点可组成4个三角形ΔP1P2P3、ΔP1P2P4、ΔP1P3P4和ΔP2P3P4,对应4个三角面片分别为ΔS1S2S3、ΔS1S2S4、ΔS1S3S4和ΔS2S3S4。

图2 平面拟合示意图

依次判别4个三角形是否包含P′点。记ΔPiPjPk是第一个包含P′点的三角形,设对应的三角面片ΔSiSjSk的平面法向量为

(4)

平面可表示为

(x-xi)n1+(y-yi)n2+(I-Ii)n3=0

(5)

根据网格点坐标(x,y)求取对应的灰度值I。

若4个三角形均不包含网格点,则采用k-NN(k=4)方法计算灰度值。设投影点Pi到网格点P′的距离为di,则网格点的灰度估计值为

(6)

2 光心定位

2.1 圆柱体投影特性

性质1:线段AD、BC与圆ω1、ω2相切,线段的端点即为切点;

性质2:AD、BC和Q1Q2相交于点G;

性质3:ΔQ0Q1Q2与ΔOcQ1G是相似三角形。

图3 圆柱体投影示意图

2.2 光心位置计算

图4 虚拟像平面上圆柱体投影轮廓

由性质1可得,Q1D⊥AD,Q2A⊥AD,根据性质2可得,ΔGDQ1~ΔGAQ2,故有

(7)

由(7)式可得

(8)

可得点G,即虚拟主点的坐标为

(9)

再由性质3,利用三角形相似原理,有

(10)

得到光心Oc到虚拟像平面的距离OcG,即为虚拟焦距。至此,光心在虚拟像平面坐标系下的坐标完全确定。

以上方法中影响光心定位精度的主要因素是两个圆特征的提取精度。由于圆柱体是三维结构,柱体上不同物理点到相机的深度不同,受相机景深的影响,圆柱上下两个截面的圆弧边缘在像平面上的成像清晰度可能不同,对于小景深的相机,有可能造成对虚拟图像中的圆弧特征的提取出现误差,导致圆拟合的偏差,进而影响到光心定位的精度。因此,在实际应用时,应尽量保证圆柱两截面边缘圆弧的成像尽可能清晰,并通过增加柱体表面与支撑平面的色差、合理设计光源、避免柱体表面反光等手段减小圆弧特征的提取误差。

3 实验研究

3.1 虚拟图像生成实验

实验验证所提出的三角面片拟合法对虚拟图像生成的有效性,并对其与k-NN方法[10]在精度上的差异进行对比。采用Basler piA640-210gm工业相机,配备Pentax 4.2mm定焦镜头,拍摄一幅棋盘格标定板图像,图像尺寸为640pixel×480pixel,棋盘格每行、每列内角点数量为10×10,棋盘格大小为10mm×10mm。以此标定板平面作为虚拟像平面,用OpenCV的角点提取算法提取图像中的角点坐标,分别用k-NN(k=4)方法和本文所提的三角面片拟合方法恢复出该标定板在虚拟像平面上的投影图像。虚拟图像的像素距为0.2mm,尺寸为550pixel×550pixel。图5是虚拟图像的生成结果,其中图5a为原始图像,图5b、图5c分别为用k-NN法和本文的三角面片拟合方法所得标定板虚拟图像,图5d、图5e分别为上述两幅图像的局部效果图。

对比图5d和图5e,可以看出用本文方法恢复的图像边缘更加平滑,边缘信息更加明显。为了更直观地比较两种方法的效果,用OpenCV中的角点提取算法分别提取两幅虚拟图像中的角点坐标,计算其对应的世界坐标,再根据其真值计算误差,在图5b和图5c描述了角点误差的分布情况,图中每个角点周围的圆的直径表示该角点的误差的大小(为显示清楚将误差进行等倍数放大),圆的直径越大则误差越大。表1列举了两幅虚拟图像中角点的平均误差和最大误差统计结果,从表1中可以看到,采用本文方法的平均误差与最大误差均比k-NN(k=4)方法的小,由此可见,在使用相同数据的条件下,本文方法比k-NN方法更具优势。

图5 虚拟图像生成结果

表1 虚拟图像角点提取误差结果 mm

3.2 光心位置标定实验

实验用于对比本文所提在虚拟像平面上的光心定位方法与当前主流方法在精度上的差异。实验中采用铝圆管代替圆柱体标定块,高为72.34mm。实验所用装置如图6所示,仍然采用Basler piA640-210gm工业相机,实验配备4-18mm变焦镜头来拍摄图像。

图6 实验装置

光心标定实验的步骤如下:首先拍摄一幅标定板图像,如图7a所示,将此标定板平面作为虚拟像平面;然后将圆柱体置于标定平面上并拍照,再用本文的三角面片拟合法生成该圆柱体在虚拟像平面上的虚拟图像,如图7b所示,虚拟图像尺寸为900pixle×600pixle,像素距为0.2mm;用第2节的方法对光心进行定位。图7c和图7d分别展示了由虚拟图像中提取出的圆柱体的投影轮廓和圆弧的拟合效果。为便于对比,再拍摄15幅标定板在不同位姿下的图像(为节省篇幅,在此不对其他15幅图像进行展示),利用OpenCV方法和共16幅标定板图像对相机参数进行标定,以OpenCV的标定结果作为真值。表2列出了本文方法和OpenCV方法的标定结果,从结果可见,用本文方法和OpenCV方法得到的光心坐标的误差在0.6%以内,说明本文方法的标定精度达到了与主流方法相当的水平。

图7 光心定位实验图像

表2 标定结果 mm

4 结束语

在虚拟像平面相机模型下,提出了一种利用高度已知的圆柱体标定块的光心定位方法,利用三角面片拟合法生成圆柱体在虚拟像平面上的投影图像,采用最小二乘方法对图像中的圆弧进行圆拟合,进一步求得模型的虚拟主点,再根据相似三角形原理和圆柱的高度,求得模型的虚拟焦距,从而对光心进行定位。本文方法利用一个高度已知圆柱体标定块就能确定光心的位置信息,不需要已知圆柱直径,标定装置容易制造,且标定精度达到了主流方法的水平。

猜你喜欢
面片圆柱体标定
轻卡前视摄像头的售后标定
一种轻卡前视单目摄像头下线标定方法
使用朗仁H6 Pro标定北汽绅宝转向角传感器
人工“向日葵”材料问世
CT系统参数标定及成像—2
CT系统参数标定及成像—2
坡角多大,圆柱体在水平面滚得最远
找出圆柱体
河沿面片
河沿面片