光学空间定位系统在诸多领域都有着广泛应用。本文提出了一种结合使用线阵相机和面阵相机的方法来进行空间定位。线阵相机的一维数据可以快速处理, 提取出目标点的坐标。利用这个坐标来辅助面阵相机上的数据处理, 减少面阵相机上目标的搜索量和计算量, 同时还可以对多目标点定位的匹配过程提供帮助, 进而达到加快计算速度的目的。通过本方法可以达到1.608 mm的定位精度, 约为测量范围的千分之一; 而且可以同时对多目标点进行定位, 即使在目标点之间并没有几何约束的条件下, 该方法对4目标点的定位时间也可达23.87 ms, 即为41.9 fps。
引用本文: 吴剑, 李昂. 一种基于一维和二维相机的混合光学定位方法. 生物医学工程学杂志, 2015, 32(6): 1310-1316. doi: 10.7507/1001-5515.20150232 复制
0 引言
三维空间定位技术是指通过光、声、电等手段,对目标的三维坐标进行遥测的技术。现普遍采用的是电磁定位和光学定位两种。由于光学定位技术不易受到电磁干扰,所以在工业、医疗以及运动测量等诸多领域都有着广泛应用[1],尤其在微创手术导航中,定位技术在引导临床医生进行精确手术上发挥着重要作用[2-4]。
现有的光学定位系统一般采用双目机器视觉原理[5],通过两个存在一定视差的相机对同一范围内的目标进行拍摄,再根据之前对相机进行标定的结果[6],对所拍摄的目标进行重建[7]。但这种方法需要对两幅图像进行处理,二维图像不论在滤波还是搜索上都会花费较长的时间[8]。也有人使用线阵相机代替一般的二维相机进行定位[9]。这种方法的应用开始于COSTEL系统[10]。这种方法仅需要对一维信号进行处理,能够简化计算,但相对地就要增加相机数量来补足缺少的信息。一般来说一个线阵CCD构成的定位系统,至少需要3个线阵相机[11-12],但每次只能识别单个标志点。通过增加1个线阵相机可实现一次多个标志点识别[13]。
本文提出了一种联合使用线阵相机和面阵相机进行光学空间定位的方法。通过优先处理线阵相机信号,再根据线阵相机和面阵相机之间的几何关系,将得到的线阵相机结果通过一定的转换,对面阵相机的信号处理提供约束条件,从而提高面阵相机对标志点的识别速度。
1 原理
本文提出的一种结合使用面阵相机和线阵相机,对多目标点进行三维空间定位的方法,它使用如图 1所示的镜头摆放方式,利用两个线阵相机和一个面阵相机,对目标标志点进行三维定位,下面详述其定位原理。

1.1 坐标变换
在光学三维定位系统中有世界坐标系Ow(Xw, Yw, Zw)、相机坐标系Oc(Xc, Yc, Zc)(线阵相机和面阵相机)和图像坐标系O1(x, y)等三个坐标系,需要在三个坐标系之间进行转换。它们之间的相互关系可以用式(1)来表示:
$\left[\begin{gathered} x \hfill \\ y \hfill \\ z \hfill \\ \end{gathered} \right]=\left[\begin{gathered} 1\;\; \;\; 0\;\; \;\; \frac{{{x_0}}}{f} \hfill \\ 0\;\; \;\; 1\;\; \;\; \frac{{{y_0}}}{f} \hfill \\ 0\;\; \;\; 0\;\; \;\; \frac{1}{f} \hfill \\ \end{gathered} \right]R\left\{ {\left[\begin{gathered} {X_w} \hfill \\ {Y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right]-T} \right\}$ |
其中R和T分别为一个刚体变换中的旋转分量和平移分量,也是相机的外方位因素。x0, y0为相机镜头主光轴穿过图像坐标系的位置的坐标值,f为镜头焦距,它们是相机的内方位因素[14]。
1.2 相机标定
对目标点进行三维坐标测量,需要对相机进行内外方位因素标定。本文提出的测量系统包含了线阵相机和面阵相机,因此要分别进行标定[15-16]。
在实际应用中,我们使用三轴高精度位移平台来提供目标点的真实坐标,并且采用直接线性变换(direct linear transformation,DLT)的方法对相机进行标定[17]。
对于面阵相机来说,由式(1)可得以下关系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
其中L1~L11为一组11个L系数,它们表示了面阵相机的9个内外方位因素(包括旋转分量R,平移分量T,相机焦距f和主光轴坐标(x0, y0)。目标点在面阵相机上的坐标(x, y)和该目标在三维空间中的坐标(Xw, Yw, Zw)的关系可用式(2)表示。
由此面阵相机标定就是求解一组L系数。根据已有的DLT方法,我们通过测量一组n(n≥6)个已知空间三维坐标和图像坐标的标志点来对该相机的L系数进行求解。
利用最小二乘法求解面阵相机的L系数向量,完成对面阵相机的标定,得到一组L系数记为Lxy。
对于线阵相机来说,其方法是相似的,由于只有一维数据,式(2)只有关于x的第一个关系式,即:
$x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}}$ |
求解相机的L系数,两个线阵相机分别有自己不同的L系数,分别记为Lx1,Lx2。不过不同的是一个线阵相机的L系数只有7个,而面阵相机的L系数有11个。
1.3 像坐标提取
在对相机进行标定完成之后,对一组标志点进行三维坐标计算的关键,就是要在不同相机中识别并计算出配对的标志点像坐标。像坐标的计算和匹配速度决定了定位系统的精度和运行速度。本文提出如图 2所示的方法,即:首先快速处理线阵相机的信号,得到目标点的一维坐标根据线阵相机和面阵相机之间的成像几何关系,实现对面阵相机中标志点的快速识别和二维坐标的计算。

1.3.1 线阵相机中的像坐标提取
首先我们对两个线阵相机采集到的信号进行处理,可得到与图 2中类似的尖峰脉冲信号[18],为了增强目标信号的识别效果,一般在相机镜头前加装红外滤光片,因此在图像中几乎只保留下目标点的脉冲信号。一般通过阈值法来提取像坐标值,即通过设定一个自适应阈值,将所有的目标点的中心坐标用重心法计算出来,这样我们就得到了所有目标点的两个一维坐标,分别记为:CCDx1,CCDx2。
1.3.2 依靠像交线方法的面阵坐标提取
对于一个面阵相机的图像,由于在实际应用当中,不能确定一幅图像中目标点的个数,传统方法不可避免地要对整幅图像进行检索。但由于本文提出的方法在处理线阵相机的数据时,已获得了目标点的部分信息,包括目标点的数量和分布情况,我们可以利用这些信息来减少对图像的检索,进而缩短处理的时间。
我们使用的线阵相机,其摆放方式与位置是和面阵相机有一定联系的。一个目标点在一个面阵相机会产生一个像点,而这个像点则表示目标点位于空间中的一条直线上;但一个目标点在线阵相机上会产生一条像线,这个像线表示了目标点位于空间中的一个平面上。如图 3(a)所示,两个线阵CCD产生的两个平面在空间上会产生一条交线,而目标点就位于这条交线上。这条交线会在面阵CCD上产生一个像,为方便描述,我们称之为像交线,而且我们所求的像点也在这条像交线上。

(a)像交线产生原理图;(b)像交线投影图
Figure3. Geometrical relationship of target and its images(a) producing of image intersecting line; (b) projection of image intersecting line
由式(3)可知两个线阵CCD所得到的相交平面分别可以表示为:
$\begin{gathered} CCDx1=\frac{{L_1^{\left(1 \right)}{X_w} + L_2^{\left(1 \right)}{Y_w} + L_3^{\left(1 \right)}{Z_w} + L_4^{\left(1 \right)}}}{{L_5^{\left(1 \right)}{X_w} + L_6^{\left(1 \right)}{Y_w} + L_7^{\left(1 \right)}{Z_w} + 1}} \hfill \\ CCDx2=\frac{{L_1^{\left(2 \right)}{X_w} + L_2^{\left(2 \right)}{Y_w} + L_3^{\left(2 \right)}{Z_w} + L_4^{\left(2 \right)}}}{{L_5^{\left(2 \right)}{X_w} + L_6^{\left(2 \right)}{Y_w} + L_7^{\left(2 \right)}{Z_w} + 1}} \hfill \\ \end{gathered} $ |
联立即为交线的空间表达式。而所求的像线表达式应如式(4)所示,是一组面阵相机坐标(x, y)之间的关系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
以上两式中的所有L系数均已经在相机标定时计算得到,所以只需要将式(4)代入到(5)当中,即可得到形如y=kx+b的像交线表达式。而我们所要估计的像点则一定位于这条像交线上,所以在后面的处理过程中我们可以充分利用这一点,优先在这条像交线上搜索目标点,以减少计算量。
此外,如图 3(b)所示,由于定位系统的测量范围是固定的,所以测量目标一定位于这个测量范围之内。因此,对于像交线来说,我们并不需要检查整条像交线,只需要搜索交线在测量范围之内的部分在像平面上的投影即可,如图 3所示。由于两个线阵相机通常都是和面阵相机放置在同一侧,且相距不远,所以两个像平面的交线与面阵相机主光轴的夹角都较小(小于45°),而交线的端点则在测量范围的最远点和最近点处取得,即Zw=Zmin和Zw=Zmax处。将端点处Z坐标代入式(4),得到2个端点在世界坐标系下的坐标(Xw, Yw, Zw),将其代入式(5),就可以计算出这条交线段在面阵相机上的投影线段的端点,二者相距一般不超过100个像素。
由于我们仅仅知道两个线阵相机上目标点的峰值位置,但并不知道两个相机上坐标的对应关系。在目前没有多目标点之间几何约束的条件下,以一般工具的4个目标点为例,我们需要对任意位置的4目标进行分析。2个线阵相机会向我们给出16种可能的组合方式。所以有的像交线段上会没有目标点,而有的范围中会有多个目标点,为了解决这个问题,我们使用如图 4所示的处理流程。

在上述处理流程中,由于我们使用的目标点会在二维图像上形成一个直径15~18个像素的亮斑,所以为了减少计算量,我们只需要在交线段的投影线段上搜索目标点的像,即可以完成面阵相机上目标点的提取工作[19]。图 5给出了可能发生的几种情况。

(a)理想情况;(b)错误匹配1;(c)错误匹配2;(d)多点匹配
Figure5. Image intersecting line and point image(a) ideal situation; (b) error matching 1; (c) error matching 2; (d) multi point matching
如图 5(a)中理想情况,找到目标点后再进行以该点为种子点进行区域增长,得到一个完整的目标点的像,再通过重心法就可以得到这个目标的中心坐标。将这个坐标记为CCDxy,并和此时的CCDx1、CCDx2对应地记录下来备用。如图 5(b)所示,像交线上并没有目标的像点,则认为这种匹配方式不正确,直接排除,进行下一轮检测。如图 5(c)所示,虽然像交线目标的像点在像交线上,但是却不在与测量区域相交的范围之内,同样认为不正确,将其排除掉。如图 5(d)所示,可能会出现同时有两个点满足条件的情况,我们在对第一个点进行提取之后,将这个目标点周围一定范围的图像置为零,再次对这个区域进行搜索,直到找不到其他目标点为止。如此在遍历所有CCDx1、CCDx2的组合的情况下,可找到所有线阵坐标和面阵坐标可能的对应关系。
1.4 三维坐标重建
三维重建过程实际为相机成像过程的逆过程。我们需要通过相机拍摄到的图像来还原原本目标点在世界坐标系下的坐标。作为已知条件,我们通过图像处理得到了每个目标点在3个相机上的坐标CCDx1、CCDx2和CCDxy以及对应于每个相机的3组L系数Lx1、Lx2和Lxy。将上述已知条件整理成矩阵形式,矩阵的前两行是面阵相机的参数及坐标,后两行是线阵相机的参数及坐标:
$NW=C$ |
其中:
$ \begin{gathered} N=\left[\begin{gathered} x{L_5}-{L_1}\; \;\; \;\; \;\; x{L_6}-{L_2}\; \;\; \;\; \;\; x{L_7}-{L_3} \hfill \\ y{L_5}-{L_8}\; \;\; \;\; \;\; x{L_6}-{L_9}\; \;\; \;\; \;\; x{L_7}-{L_{10}} \hfill \\ {x^{\left(1 \right)}}L_5^{\left(1 \right)}-L_1^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_6^{\left(1 \right)}-L_2^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_7^{\left(1 \right)}-L_3^{\left(1 \right)} \hfill \\ {x^{\left(2 \right)}}L_5^{\left(2 \right)}-L_1^{\left(2 \right)}\; \;{x^{\left(2 \right)}}L_6^{\left(2 \right)}-L_2^{\left(2 \right)}\; {x^{\left(2 \right)}}L_7^{\left(2 \right)}-L_3^{\left(2 \right)} \hfill \\ \end{gathered} \right] \hfill \\ W=\left[\begin{gathered} {X_w} \hfill \\ {y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right] \hfill \\ C=\left[\begin{gathered} {L_4} \hfill \\ {L_{11}} \hfill \\ L_4^{\left(1 \right)} \hfill \\ L_4^{\left(2 \right)} \hfill \\ \end{gathered} \right.\left. \begin{gathered}-x \hfill \\-y \hfill \\-{x^{\left(1 \right)}} \hfill \\-{x^{\left(2 \right)}} \hfill \\ \end{gathered} \right\} \hfill \\ \end{gathered} $ |
利用最小二乘法就可以求出三维坐标向量(Xw,Yw, Zw)以及一个误差参数。选择误差参数最小的n个向量(n为在线阵相机上提取到的目标点的峰值数量)即为这一组图像中的多个目标点的坐标值[20]。
2 实验
2.1 实验设备
将按照一定规则摆放好的相机连接其相应的采集卡采集数据,再传输给计算机进行计算处理,并显示输出实际坐标重建的结果。所用线阵CCD型号为TCD1208AP,共有2 160个像元,像元间距是14μm。所用面阵CCD的分辨率是720×576。
图 6给出了相机系统部分的实物图,中间位置的是普通的面阵相机,而左右两边的是配有柱面透镜的线阵相机,且其方向是相互垂直的。

2.2 实验结果
首先,本文提出的结合使用线阵CCD和面阵CCD的方法,其主要优点在于对目标点的匹配上。利用前文的方法,对线阵相机坐标的利用除了减小了对面阵图像的检索范围之外,还能够对多目标的识别与匹配有很大帮助。直接进行检索的话,由于没有辅助信息,我们无法得知那些坐标是由同一个目标点产生的,这样就需要在三维坐标重建时,对所有可能的情况进行重建,通过比较误差的大小来确定。但重建算法需要计算最小二乘,多次的最小二乘运算耗时较长,所以应该尽量减少计算次数。假设我们需要测量的目标点有4个,一般4个目标点可以用来定位一个工具,不使用辅助信息,则需要计算4×4×4=64次,而使用线阵相机信息作为辅助的情况下,经过大量实验得到,多数需要计算8~12次,一般不会超过15次即可。

对于多组工具的目标点匹配,由于每组工具所对应的4个目标点,其在空间距离上差距较小,可以通过工具本身的结构信息来加以区分,以5组工具,即20个目标点为例,如果每组工具都可以通过结构信息进行区分,则理论上需要进行不少于5×4×4×4=320次重建。而通过本文提出的匹配流程进行计算,则一般只需要进行80~100次重建即可。该计算次数按比例来说会比单组工具(4目标点)有所增加,主要由于多组工具之间互相干扰造成。
本系统的可测量区域为距离相机1~3 m、上底面1.0 m×1.0 m、下底面1.5 m×1.5 m的方形棱台。所用目标点是由固定在3轴高精度平台上的LED构成的。
定位精度方面,由计算机在系统可测量区域内随机生成了43个坐标,将目标点通过三轴高精度平台移动到准确的位置,然后用定位系统进行测量。随机地从中选取15个点作为已知点,对相机进行标定,然后对剩下的数据点进行重建,比较重建结果与真实坐标,计算平均误差。实验重复1 000次,平均误差为1.608 mm,约为测量尺度的千分之一。
定位速度方面,我们分别对3个目标点和4个目标点进行实验(一般手术器具常用3~4个标记点进行定位),计算重建时间,重复1 000次,当目标数为3时,平均时间16.06 ms,即62.3 fps;当目标数为4时,平均时间23.87 ms,即41.9 fps。
根据相机分辨率对重建精度进行分析,本文所使用的面阵相机的分辨率是720×576,按此分辨率计算,在相机上1个像素的变化,在空间中大约对应1.4 mm的变化。线阵CCD虽然分辨率较高,但其更主要的是提供定位的深度信息。由此可见本文中得到的1.608 mm的定位精度足以验证本算法的准确性。
3 总结与讨论
本定位方法将面阵相机和线阵相机结合在一起使用,两种相机各有各自的优点,线阵相机提供可以快速处理一维信号,使我们可以对这幅图像的基本信息,例如目标点数目及其大致分布情况有一个初步了解,这些信息可以有效地对处理面阵相机的图像进行辅助,加快对二维图像的处理速度。
本文的定位精度很大程度上受限于相机的分辨率,根据分析,我们有理由相信如果使用分辨率更高的相机,是可以很大程度上提高定位精度,或者增大可测量的空间范围。
本文方法的定位速度,尤其是对多组工具进行重建的绝对时间上,与现有双目视觉定位系统相比并无明显优势,主要原因在于双目视觉系统发展历史较长,技术较为成熟,现有商用系统中有很多优化算法,这些优化算法的加速效果是在实验中难以实现进行对比的。所以本文的结果中对于算法的优点分析,主要放在了对目标点匹配所需的计算次数上,以此来对本方法的优势进行说明。
在相机摆放方式的选择上,相互垂直摆放的线阵相机能够最大程度地避免目标点在某一方向上重叠的发生。由于只需要提供3个不同的观测信息,就可以对单个目标点进行重建,4个不同的观测信息就可以对多个目标点进行重建,所以只要保证各个相机提供的信息不会重合,即面阵相机所确定的像线不位于线阵相机所确定的像平面内,矩阵就会是满秩的,就可以对多个目标点进行重建。事实上,像线是几乎不可能位于像平面内的,因为相机镜头的参数是不同的,即便摆放位置刚好重合,也仅可能对某些特殊位置的点缺失信息,导致重建困难。但是对整个视场来说,绝大部分的空间都是可以正常重建的。所以本方法对各种不同的摆放方式在理论上并没有严苛的要求,将来也将研究不同的摆放位置对重建精度的影响。
0 引言
三维空间定位技术是指通过光、声、电等手段,对目标的三维坐标进行遥测的技术。现普遍采用的是电磁定位和光学定位两种。由于光学定位技术不易受到电磁干扰,所以在工业、医疗以及运动测量等诸多领域都有着广泛应用[1],尤其在微创手术导航中,定位技术在引导临床医生进行精确手术上发挥着重要作用[2-4]。
现有的光学定位系统一般采用双目机器视觉原理[5],通过两个存在一定视差的相机对同一范围内的目标进行拍摄,再根据之前对相机进行标定的结果[6],对所拍摄的目标进行重建[7]。但这种方法需要对两幅图像进行处理,二维图像不论在滤波还是搜索上都会花费较长的时间[8]。也有人使用线阵相机代替一般的二维相机进行定位[9]。这种方法的应用开始于COSTEL系统[10]。这种方法仅需要对一维信号进行处理,能够简化计算,但相对地就要增加相机数量来补足缺少的信息。一般来说一个线阵CCD构成的定位系统,至少需要3个线阵相机[11-12],但每次只能识别单个标志点。通过增加1个线阵相机可实现一次多个标志点识别[13]。
本文提出了一种联合使用线阵相机和面阵相机进行光学空间定位的方法。通过优先处理线阵相机信号,再根据线阵相机和面阵相机之间的几何关系,将得到的线阵相机结果通过一定的转换,对面阵相机的信号处理提供约束条件,从而提高面阵相机对标志点的识别速度。
1 原理
本文提出的一种结合使用面阵相机和线阵相机,对多目标点进行三维空间定位的方法,它使用如图 1所示的镜头摆放方式,利用两个线阵相机和一个面阵相机,对目标标志点进行三维定位,下面详述其定位原理。

1.1 坐标变换
在光学三维定位系统中有世界坐标系Ow(Xw, Yw, Zw)、相机坐标系Oc(Xc, Yc, Zc)(线阵相机和面阵相机)和图像坐标系O1(x, y)等三个坐标系,需要在三个坐标系之间进行转换。它们之间的相互关系可以用式(1)来表示:
$\left[\begin{gathered} x \hfill \\ y \hfill \\ z \hfill \\ \end{gathered} \right]=\left[\begin{gathered} 1\;\; \;\; 0\;\; \;\; \frac{{{x_0}}}{f} \hfill \\ 0\;\; \;\; 1\;\; \;\; \frac{{{y_0}}}{f} \hfill \\ 0\;\; \;\; 0\;\; \;\; \frac{1}{f} \hfill \\ \end{gathered} \right]R\left\{ {\left[\begin{gathered} {X_w} \hfill \\ {Y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right]-T} \right\}$ |
其中R和T分别为一个刚体变换中的旋转分量和平移分量,也是相机的外方位因素。x0, y0为相机镜头主光轴穿过图像坐标系的位置的坐标值,f为镜头焦距,它们是相机的内方位因素[14]。
1.2 相机标定
对目标点进行三维坐标测量,需要对相机进行内外方位因素标定。本文提出的测量系统包含了线阵相机和面阵相机,因此要分别进行标定[15-16]。
在实际应用中,我们使用三轴高精度位移平台来提供目标点的真实坐标,并且采用直接线性变换(direct linear transformation,DLT)的方法对相机进行标定[17]。
对于面阵相机来说,由式(1)可得以下关系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
其中L1~L11为一组11个L系数,它们表示了面阵相机的9个内外方位因素(包括旋转分量R,平移分量T,相机焦距f和主光轴坐标(x0, y0)。目标点在面阵相机上的坐标(x, y)和该目标在三维空间中的坐标(Xw, Yw, Zw)的关系可用式(2)表示。
由此面阵相机标定就是求解一组L系数。根据已有的DLT方法,我们通过测量一组n(n≥6)个已知空间三维坐标和图像坐标的标志点来对该相机的L系数进行求解。
利用最小二乘法求解面阵相机的L系数向量,完成对面阵相机的标定,得到一组L系数记为Lxy。
对于线阵相机来说,其方法是相似的,由于只有一维数据,式(2)只有关于x的第一个关系式,即:
$x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}}$ |
求解相机的L系数,两个线阵相机分别有自己不同的L系数,分别记为Lx1,Lx2。不过不同的是一个线阵相机的L系数只有7个,而面阵相机的L系数有11个。
1.3 像坐标提取
在对相机进行标定完成之后,对一组标志点进行三维坐标计算的关键,就是要在不同相机中识别并计算出配对的标志点像坐标。像坐标的计算和匹配速度决定了定位系统的精度和运行速度。本文提出如图 2所示的方法,即:首先快速处理线阵相机的信号,得到目标点的一维坐标根据线阵相机和面阵相机之间的成像几何关系,实现对面阵相机中标志点的快速识别和二维坐标的计算。

1.3.1 线阵相机中的像坐标提取
首先我们对两个线阵相机采集到的信号进行处理,可得到与图 2中类似的尖峰脉冲信号[18],为了增强目标信号的识别效果,一般在相机镜头前加装红外滤光片,因此在图像中几乎只保留下目标点的脉冲信号。一般通过阈值法来提取像坐标值,即通过设定一个自适应阈值,将所有的目标点的中心坐标用重心法计算出来,这样我们就得到了所有目标点的两个一维坐标,分别记为:CCDx1,CCDx2。
1.3.2 依靠像交线方法的面阵坐标提取
对于一个面阵相机的图像,由于在实际应用当中,不能确定一幅图像中目标点的个数,传统方法不可避免地要对整幅图像进行检索。但由于本文提出的方法在处理线阵相机的数据时,已获得了目标点的部分信息,包括目标点的数量和分布情况,我们可以利用这些信息来减少对图像的检索,进而缩短处理的时间。
我们使用的线阵相机,其摆放方式与位置是和面阵相机有一定联系的。一个目标点在一个面阵相机会产生一个像点,而这个像点则表示目标点位于空间中的一条直线上;但一个目标点在线阵相机上会产生一条像线,这个像线表示了目标点位于空间中的一个平面上。如图 3(a)所示,两个线阵CCD产生的两个平面在空间上会产生一条交线,而目标点就位于这条交线上。这条交线会在面阵CCD上产生一个像,为方便描述,我们称之为像交线,而且我们所求的像点也在这条像交线上。

(a)像交线产生原理图;(b)像交线投影图
Figure3. Geometrical relationship of target and its images(a) producing of image intersecting line; (b) projection of image intersecting line
由式(3)可知两个线阵CCD所得到的相交平面分别可以表示为:
$\begin{gathered} CCDx1=\frac{{L_1^{\left(1 \right)}{X_w} + L_2^{\left(1 \right)}{Y_w} + L_3^{\left(1 \right)}{Z_w} + L_4^{\left(1 \right)}}}{{L_5^{\left(1 \right)}{X_w} + L_6^{\left(1 \right)}{Y_w} + L_7^{\left(1 \right)}{Z_w} + 1}} \hfill \\ CCDx2=\frac{{L_1^{\left(2 \right)}{X_w} + L_2^{\left(2 \right)}{Y_w} + L_3^{\left(2 \right)}{Z_w} + L_4^{\left(2 \right)}}}{{L_5^{\left(2 \right)}{X_w} + L_6^{\left(2 \right)}{Y_w} + L_7^{\left(2 \right)}{Z_w} + 1}} \hfill \\ \end{gathered} $ |
联立即为交线的空间表达式。而所求的像线表达式应如式(4)所示,是一组面阵相机坐标(x, y)之间的关系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
以上两式中的所有L系数均已经在相机标定时计算得到,所以只需要将式(4)代入到(5)当中,即可得到形如y=kx+b的像交线表达式。而我们所要估计的像点则一定位于这条像交线上,所以在后面的处理过程中我们可以充分利用这一点,优先在这条像交线上搜索目标点,以减少计算量。
此外,如图 3(b)所示,由于定位系统的测量范围是固定的,所以测量目标一定位于这个测量范围之内。因此,对于像交线来说,我们并不需要检查整条像交线,只需要搜索交线在测量范围之内的部分在像平面上的投影即可,如图 3所示。由于两个线阵相机通常都是和面阵相机放置在同一侧,且相距不远,所以两个像平面的交线与面阵相机主光轴的夹角都较小(小于45°),而交线的端点则在测量范围的最远点和最近点处取得,即Zw=Zmin和Zw=Zmax处。将端点处Z坐标代入式(4),得到2个端点在世界坐标系下的坐标(Xw, Yw, Zw),将其代入式(5),就可以计算出这条交线段在面阵相机上的投影线段的端点,二者相距一般不超过100个像素。
由于我们仅仅知道两个线阵相机上目标点的峰值位置,但并不知道两个相机上坐标的对应关系。在目前没有多目标点之间几何约束的条件下,以一般工具的4个目标点为例,我们需要对任意位置的4目标进行分析。2个线阵相机会向我们给出16种可能的组合方式。所以有的像交线段上会没有目标点,而有的范围中会有多个目标点,为了解决这个问题,我们使用如图 4所示的处理流程。

在上述处理流程中,由于我们使用的目标点会在二维图像上形成一个直径15~18个像素的亮斑,所以为了减少计算量,我们只需要在交线段的投影线段上搜索目标点的像,即可以完成面阵相机上目标点的提取工作[19]。图 5给出了可能发生的几种情况。

(a)理想情况;(b)错误匹配1;(c)错误匹配2;(d)多点匹配
Figure5. Image intersecting line and point image(a) ideal situation; (b) error matching 1; (c) error matching 2; (d) multi point matching
如图 5(a)中理想情况,找到目标点后再进行以该点为种子点进行区域增长,得到一个完整的目标点的像,再通过重心法就可以得到这个目标的中心坐标。将这个坐标记为CCDxy,并和此时的CCDx1、CCDx2对应地记录下来备用。如图 5(b)所示,像交线上并没有目标的像点,则认为这种匹配方式不正确,直接排除,进行下一轮检测。如图 5(c)所示,虽然像交线目标的像点在像交线上,但是却不在与测量区域相交的范围之内,同样认为不正确,将其排除掉。如图 5(d)所示,可能会出现同时有两个点满足条件的情况,我们在对第一个点进行提取之后,将这个目标点周围一定范围的图像置为零,再次对这个区域进行搜索,直到找不到其他目标点为止。如此在遍历所有CCDx1、CCDx2的组合的情况下,可找到所有线阵坐标和面阵坐标可能的对应关系。
1.4 三维坐标重建
三维重建过程实际为相机成像过程的逆过程。我们需要通过相机拍摄到的图像来还原原本目标点在世界坐标系下的坐标。作为已知条件,我们通过图像处理得到了每个目标点在3个相机上的坐标CCDx1、CCDx2和CCDxy以及对应于每个相机的3组L系数Lx1、Lx2和Lxy。将上述已知条件整理成矩阵形式,矩阵的前两行是面阵相机的参数及坐标,后两行是线阵相机的参数及坐标:
$NW=C$ |
其中:
$ \begin{gathered} N=\left[\begin{gathered} x{L_5}-{L_1}\; \;\; \;\; \;\; x{L_6}-{L_2}\; \;\; \;\; \;\; x{L_7}-{L_3} \hfill \\ y{L_5}-{L_8}\; \;\; \;\; \;\; x{L_6}-{L_9}\; \;\; \;\; \;\; x{L_7}-{L_{10}} \hfill \\ {x^{\left(1 \right)}}L_5^{\left(1 \right)}-L_1^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_6^{\left(1 \right)}-L_2^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_7^{\left(1 \right)}-L_3^{\left(1 \right)} \hfill \\ {x^{\left(2 \right)}}L_5^{\left(2 \right)}-L_1^{\left(2 \right)}\; \;{x^{\left(2 \right)}}L_6^{\left(2 \right)}-L_2^{\left(2 \right)}\; {x^{\left(2 \right)}}L_7^{\left(2 \right)}-L_3^{\left(2 \right)} \hfill \\ \end{gathered} \right] \hfill \\ W=\left[\begin{gathered} {X_w} \hfill \\ {y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right] \hfill \\ C=\left[\begin{gathered} {L_4} \hfill \\ {L_{11}} \hfill \\ L_4^{\left(1 \right)} \hfill \\ L_4^{\left(2 \right)} \hfill \\ \end{gathered} \right.\left. \begin{gathered}-x \hfill \\-y \hfill \\-{x^{\left(1 \right)}} \hfill \\-{x^{\left(2 \right)}} \hfill \\ \end{gathered} \right\} \hfill \\ \end{gathered} $ |
利用最小二乘法就可以求出三维坐标向量(Xw,Yw, Zw)以及一个误差参数。选择误差参数最小的n个向量(n为在线阵相机上提取到的目标点的峰值数量)即为这一组图像中的多个目标点的坐标值[20]。
2 实验
2.1 实验设备
将按照一定规则摆放好的相机连接其相应的采集卡采集数据,再传输给计算机进行计算处理,并显示输出实际坐标重建的结果。所用线阵CCD型号为TCD1208AP,共有2 160个像元,像元间距是14μm。所用面阵CCD的分辨率是720×576。
图 6给出了相机系统部分的实物图,中间位置的是普通的面阵相机,而左右两边的是配有柱面透镜的线阵相机,且其方向是相互垂直的。

2.2 实验结果
首先,本文提出的结合使用线阵CCD和面阵CCD的方法,其主要优点在于对目标点的匹配上。利用前文的方法,对线阵相机坐标的利用除了减小了对面阵图像的检索范围之外,还能够对多目标的识别与匹配有很大帮助。直接进行检索的话,由于没有辅助信息,我们无法得知那些坐标是由同一个目标点产生的,这样就需要在三维坐标重建时,对所有可能的情况进行重建,通过比较误差的大小来确定。但重建算法需要计算最小二乘,多次的最小二乘运算耗时较长,所以应该尽量减少计算次数。假设我们需要测量的目标点有4个,一般4个目标点可以用来定位一个工具,不使用辅助信息,则需要计算4×4×4=64次,而使用线阵相机信息作为辅助的情况下,经过大量实验得到,多数需要计算8~12次,一般不会超过15次即可。

对于多组工具的目标点匹配,由于每组工具所对应的4个目标点,其在空间距离上差距较小,可以通过工具本身的结构信息来加以区分,以5组工具,即20个目标点为例,如果每组工具都可以通过结构信息进行区分,则理论上需要进行不少于5×4×4×4=320次重建。而通过本文提出的匹配流程进行计算,则一般只需要进行80~100次重建即可。该计算次数按比例来说会比单组工具(4目标点)有所增加,主要由于多组工具之间互相干扰造成。
本系统的可测量区域为距离相机1~3 m、上底面1.0 m×1.0 m、下底面1.5 m×1.5 m的方形棱台。所用目标点是由固定在3轴高精度平台上的LED构成的。
定位精度方面,由计算机在系统可测量区域内随机生成了43个坐标,将目标点通过三轴高精度平台移动到准确的位置,然后用定位系统进行测量。随机地从中选取15个点作为已知点,对相机进行标定,然后对剩下的数据点进行重建,比较重建结果与真实坐标,计算平均误差。实验重复1 000次,平均误差为1.608 mm,约为测量尺度的千分之一。
定位速度方面,我们分别对3个目标点和4个目标点进行实验(一般手术器具常用3~4个标记点进行定位),计算重建时间,重复1 000次,当目标数为3时,平均时间16.06 ms,即62.3 fps;当目标数为4时,平均时间23.87 ms,即41.9 fps。
根据相机分辨率对重建精度进行分析,本文所使用的面阵相机的分辨率是720×576,按此分辨率计算,在相机上1个像素的变化,在空间中大约对应1.4 mm的变化。线阵CCD虽然分辨率较高,但其更主要的是提供定位的深度信息。由此可见本文中得到的1.608 mm的定位精度足以验证本算法的准确性。
3 总结与讨论
本定位方法将面阵相机和线阵相机结合在一起使用,两种相机各有各自的优点,线阵相机提供可以快速处理一维信号,使我们可以对这幅图像的基本信息,例如目标点数目及其大致分布情况有一个初步了解,这些信息可以有效地对处理面阵相机的图像进行辅助,加快对二维图像的处理速度。
本文的定位精度很大程度上受限于相机的分辨率,根据分析,我们有理由相信如果使用分辨率更高的相机,是可以很大程度上提高定位精度,或者增大可测量的空间范围。
本文方法的定位速度,尤其是对多组工具进行重建的绝对时间上,与现有双目视觉定位系统相比并无明显优势,主要原因在于双目视觉系统发展历史较长,技术较为成熟,现有商用系统中有很多优化算法,这些优化算法的加速效果是在实验中难以实现进行对比的。所以本文的结果中对于算法的优点分析,主要放在了对目标点匹配所需的计算次数上,以此来对本方法的优势进行说明。
在相机摆放方式的选择上,相互垂直摆放的线阵相机能够最大程度地避免目标点在某一方向上重叠的发生。由于只需要提供3个不同的观测信息,就可以对单个目标点进行重建,4个不同的观测信息就可以对多个目标点进行重建,所以只要保证各个相机提供的信息不会重合,即面阵相机所确定的像线不位于线阵相机所确定的像平面内,矩阵就会是满秩的,就可以对多个目标点进行重建。事实上,像线是几乎不可能位于像平面内的,因为相机镜头的参数是不同的,即便摆放位置刚好重合,也仅可能对某些特殊位置的点缺失信息,导致重建困难。但是对整个视场来说,绝大部分的空间都是可以正常重建的。所以本方法对各种不同的摆放方式在理论上并没有严苛的要求,将来也将研究不同的摆放位置对重建精度的影响。