本小节中,我们将探索一个新的问题:如何根据一个长方体的图像来确定观测方向[7]。长方体可以对应于一栋建筑物,一个无人机在空中对这个建筑物拍照,并将照片传回。我们的任务是:根据传回的图像估计出拍照时的观测方向,从而进一步确定无人机的飞行姿态。
图2.5 长方体物体的边可以被分成三组平行线,因此,会产生三个消失点。根据这三个消失点在图像中的位置,我们可以进一步探索:长方体物体相对于像平面的“朝向”,进而确定观测方向。
2.3.1 确定平行直线的方向
透视投影成像的结果使得:长方体各个面的图像不再是长方形,而是一个个四边形,如图2.5所示。我们的问题是:如何根据这些四边形的形状,估计出拍照时的观测方向。
根据上一节的分析,我们知道:(三维)空间中的一条直线被投影成(二维)像平面上的一条直线。当三维空间中的平行线被投影成二维(像平面上的)直线后,这些二维直线会(在像平面上)相交于一点。这个点被称为消失点。本节中,我们将探索:如何通过消失点来确定观测方向。对于一个长方体物体,通过:1)图像中的线,2)线与线的交点,我们可以复原出大量的信息。长方体物体的边可以被分成三组平行线,因此,会产生三个消失点,即:图2.5中的A、B和C。我们将探索:如何根据这三个消失点在图像中的位置,来进一步判断长方体物体相对于像平面的“朝向”,进而确定相应的观测方向。假设图2.5中三个消失点A、B和C的坐标分别为:
长方体物体的(12条)边所对应的三组平行线的方向记为:
我们的第一个问题是:如何根据消失点来确定对应的平行直线方向(UA,VA,WA)T。直接根据消失点的定义式(2.18),我们“似乎”无法解决这一问题。有三个未知数UA、VA和WA,而式(2.18)中只给出了两个约束方程。
注意,方向(UA,VA,WA)T是一个单位长度的向量,也就是说,
进一步,我们可以整理得到:
将式(2.18)代入,我们可以进一步得到:
最终,我们整理得到:
根据式(2.18),我们可以整理得到:
最终,我们确定出了消失点所对应的平行直线方向:
采用同样的方法,我们可以进一步确定:另外两个消失点和所对应的平行直线方向(UB,VB,WB)T和(UC,VC,WC)T,也就是说,
进一步,以三组平行直线的方向(UA,VA,WA)T、(UB,VB,WB)T和(UC,VC,WC)T为相应的列向量,就构成了一个正交矩阵[2]:
也就是说,A T A=I,其中I为3×3的单位矩阵。对于正交矩阵A,一个直接的结论是A-1=A T。注意,虽然正交矩阵A中的三个列向量相互垂直,并且每个列向量的长度都等于1,但是,并不能确保正交矩阵A中的三个列向量构成一个直角坐标系。要构成一个直角坐标系,A中的三个列向量还必须使得[2]:
•矩阵A的行列式等于1,而不是等于1。
我们需要对正交矩阵A中的三个列向量做一些调整,从而保证这三个列向量构成一个直角坐标系。具体调整方式为:如果矩阵A的行列式等于1,那么就交换矩阵A中的两列,例如:令
经过上述调整后的A仍然是一个正交矩阵,并且,矩阵A中的三个列向量构成一个直角坐标系[2]。
2.3.2 判断观测方向
接下来,我们要解决的一个问题是:如何进一步确定观测方向?
为了更好地理解这个问题,我画了图2.7(a)。我们现在有两个直角坐标系:1)以长方体为中心的坐标系1,三个坐标轴分别为X 1轴、Y1轴和Z1轴;2)以相机为中心的坐标系2,三个坐标轴分别为X 2轴、Y2轴和Z2轴。在坐标系2中,坐标系1的三个轴(即X 1轴、Y1轴和Z1轴)的方向正好是:正交矩阵A中的三个列向量。我们要回答的问题是:在坐标系1中,坐标系2的三个轴(X 2轴、Y2轴和Z2轴)的方向是什么。我们要确定的观测方向就是:坐标系2中的Z2轴在坐标系1中的方向!
图2.6 我们现在有两个直角坐标系:1)以长方体为中心的坐标系1,三个坐标轴分别为X 1轴、Y1轴和Z1轴;2)以相机为中心的坐标系2,三个坐标轴分别为X 2轴、Y2轴和Z2轴。在坐标系2中,坐标系1的三个轴的方向正好是:正交矩阵A中的三个列向量。我们要确定的观测方向是:坐标系2中的Z2轴在坐标系1中的方向。
让我们稍作总结:在坐标系2中,坐标系1的三个轴(X 1轴、Y1轴和Z1轴)的方向构成正交矩阵A,坐标系2的三个轴(X 2轴、Y2轴和Z2轴)的方向构成单位矩阵I;在坐标系1中,坐标系1的三个轴(X 1轴、Y1轴和Z1轴)的方向构成单位矩阵I,坐标系2的三个轴(X 2轴、Y2轴和Z2轴)的方向构成什么?在教学过程中,很多同学都能给出正确答案:矩阵A所对应的逆矩阵A-1,但是,却解释不出原因。事实上,这是我们在线性代数的课程中学习过的一个重要内容:通过增广矩阵的方法实现矩阵的求逆运算[2]。我们将两个坐标系的两组坐标轴放在一起,组成两个增广矩阵:1)在坐标系2中的两组坐标轴方向[A|I];2)在坐标系1中的两组坐标轴方向[I|B]。我们用R来表示这两个坐标系之间的线性变换(三维空间中的旋转),于是,可以进一步得到:
也就是说,
进一步,我们可以得到:
注意:A是正交矩阵,因此A-1=A T。我们求得了坐标系2的三个轴(X 2轴、Y2轴和Z2轴)在坐标系1中的方向,即:矩阵B=A T中的三个列向量。最终,我们求得了观测方向(坐标系2中的Z2轴在坐标系1中方向),即:矩阵A T中的第三列,也就是说,
(www.xing528.com)
当然,如果矩阵A的行列式等于1,那么,需要交换WB和WC,也就是说,相应的观测方向变为了(WA,WC,WB)T。
2.3.3 正交性约束
最后,我们可以进一步完善所得到的结果,以增强算法的鲁棒性。由于寻找消失点过程中会引入误差(参见式(2.26)),我们所估计出的三组平行线的方向(即:式(2.38)中的三个列向量)可能并不是相互垂直的,而是“近似于”相互垂直,也就是说,式(2.38)中的矩阵A只是“接近于”一个正交矩阵。
于是,我们的问题可以被描述为:寻找一个最接近矩阵A的正交矩阵Q。我们可以用多种范数来“度量”两个矩阵的接近程度,在这里,我们选用矩阵的Froben ius范数的平方,也就是说,矩阵中所有元素的平方和,来进行度量。相应的数学模型为最小化目标函数:
其中Tr(•)表示矩阵的迹,也就是说,矩阵对角线元素之和[2]。
矩阵Q是一个正交矩阵,也就是说,Q T Q=I,因此,式(2.44)可以被进一步整理为:
于是,我们的问题被转化为:在条件Q T Q=I的约束下最大化目标函数Tr(Q T A)。事实上,Q T A反映出矩阵Q与A中对应列向量之间的相关性。我们可以通过矩阵的奇异值分解,来求解这一类问题[8]。
矩阵A可以被分解为(矩阵A的奇异值分解)[2]:
其中,U和V都是正交矩阵,Σ是一个对角矩阵,其对角线上的3个元素σ1、σ2和σ3称为矩阵A的奇异值[2],此外,σ1≥σ2≥σ3≥0。
我们定义一个新的正交矩阵R=UV T,以及一个对称矩阵S=VΣV T,于是,式(2.47)可以被进一步写为:
根据式(2.47),我们可以计算得到:
于是,我们可以得到:
进一步,根据式(2.48),我们可以得到:
上式给出了正交矩阵R=UV T的解析表达式,其中
因此,式(2.51)中关于R的计算过程并不比R=UV T简单。
事实上,我们要寻找的那个最接近A的正交矩阵Q就是矩阵R。代入式(2.48)和(2.50),我们可以得到:
我们不妨令:
注意,矩阵P={pi,j}也是一个正交矩阵,其中i=1,2,3和j=1,2,3分别表示行标和列标。于是,式(2.54)可以被写为:
注意,P={pi,j}是一个正交矩阵,因此,pi,j≤1。最终,我们分析得到:当p1,1=p2,2=p3,3=1时,式(2.56)中的Tr(Q T A)取得最大值。此时,矩阵P=I变成了一个3×3的单位矩阵。
根据式(2.55)不难发现:当且仅当Q=R时,矩阵P是一个单位矩阵。最终,我们求得了优化目标函数(2.44)的解析解:
图2.7 立方体在不同观测方向下的透视投影结果。(a)观测方向对应于单位球面上的一个观测点,参数φ和θ分别对应于观测点的经度和维度。(b)当φ=-30°和θ=60°时,立方体的观测结果。(c)当φ=-60°和θ=30°时,立方体的观测结果。
2.3.4 成像的逆问题
事实上,许多画图软件(例如MATLAB中的Figure图形窗口)都是根据透视投影绘制出三维物体在二维平面上的几何图形。MATLAB通过函数view(φ,θ)来确定观测方向,观测方向对应于单位球面上的一个观测点,如图2.7(a)所示。参数φ和θ分别对应于观测点的经度和维度,相应的观测方向为:
对于一个立方体,图2.7(b)中给出了MATLAB命令view(—30,60)的输出结果,也就是说,当φ=30°和θ=60°时,对立方体的观测(透视投影)结果。作为对比,图2.7(c)中给出了MATLAB命令view(—60,30)的输出结果,也就是说,当φ=60°和θ=30°时,对立方体的观测(透视投影)结果。从不同的方向进行观测,立方体的各个面会形成不同形状的四边形。透视投影模型告诉我们:如何根据观测方向来计算这些四边形(在图像中)的形状。本节中,我们尝试解决一个“相反”的问题:如何根据这些四边形的具体形状来估计观测方向。最终,借助于消失点理论,我们解决了这一问题。
观测方向是“因”,四边形的形状是“果”。在数学上,根据“结果”来推测“原因”,又被称为逆问题理论。要求解一个逆问题,首先需要清晰明确地了解“因果关系”!光电感知常常伴随着“对成像求逆”的过程,因此,我们再次强调:
•对成像原理的深刻理解是极其重要的!
透视投影公式(2.4)为我们提供了实现光电感知的一种方式:通过严谨的数学分析来研究和分析感知问题,我们将其称为计算感知模型。人类感知的实现是一个复杂的系统,至少包括如下两个层面:
•猜测:例如基于神经网络的目标分类。
本书中,我们的研究重点是第一层面的内容:通过严谨的数学分析来建立理论模型,进而得出现实具体感知任务的有效方法。我们也会用部分章节介绍第二层面的内容。本书的附录中给出了一些实例,通过结合计算和猜测两个层面的内容,来实现复杂的光电感知任务。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。