计算机研究与发展
JOURNAL OF COMPUTER RESEARCH AND DEVELOPMENT
1999　Vol.36　No.6　P.717-724



利用共轭梯度法重建三维物体表面算法的研究
王汝传　王绍棣　胡岚
摘　要：通过立体视觉方法能得到一些分散点处表面信息，根据这些分散点处三维表面信息，可对三维表面进行重建，文中主要讨论利用共轭梯度法重建三维物体表面的算法.
关键词：共轭梯度法，三维物体，重建三维物体表面
分类号：TP391
RESEARCH ON AN ALGORITHM OF REBUILDING 3D
OBJECT SURFACE USING CONJUGATE GRADIENT METHOD
WANG Ru-Chuan，WANG Shao-Di，HU Lan
(Department of Computer science and Technology,Nanjing Institute of Posts and Telecommunications Nanjing 210003)
Abstract：By using stereopsis the 3D object surface informations of some dispersive points can be obtained.Based on these informations,the 3D object surface can be rebuilt. In the paper here,an algorithm of rebuilding the 3D object surface using the conjugate gradient method is discussed.
Key words：conjugate gradient method ,3D object,rebuilding 3D object surface▲
　　在汽车、飞机、模具等机械行业的CAD/CAM中经常涉及到曲面重建的问题，曲面重建的首要问题是通过立体视觉方法得到一些分散点处的三维表面信息，为了得到一个完整的三维表面距离和方向信息，就需要根据分散点的表面信息对三维表面进行重建.从理论上讲，通过已知分散点的表面可以有无穷多个，因此，所需要重建的是一个与图像信息相一致最佳拟合表面.
1　视差测距原理
　　立体视觉是基于三角测量原理，利用两个或多个摄像机对同一景物从不同位置的成像结果来恢复距离数据的一种方法.配准是在不同成像面上找出对应点关系，通过配准得到的是二维视差信息，要转换为主体视觉所需的三维深度值则需要借助于成像模型来进行视差测距，视差测距的原理如图1所示.


图1　视差测距原理图
　　在图1中，Cl,Cr分别为左、右两个相机的光学中心位置(透镜中心)，Cl与Cr之间的距离为b，相机焦距为f.设物体上的点P在左、右相机图像面上的投影分别为Pl、Pr，P与Cl和Cr的连线间的距离为d，过Cl和Cr分别向图像面作垂线，垂足分别为Al，Ar，过P向图像面作垂线，垂足为B.令|AlPl|=la,|ArPr|=lb,|PrB|=a，则由相似三角形可得：
　　(1)
　　(2)
由式(1)和式(2)可得：
　　(3)
从而有
　　(4)
代入式(1)可得：
　　(5)
　　由上式可以看出，距离d与b，f和la-lb有关.la-lb称为点P在左右两个图像面.
2　三维表面重建的算法
　　通过立体视觉方法仅能得到的图像特征点处的稀疏视差值，为了得到一个完整的三维表面，就需要根据分散点处的信息来进行三维表面的重建，我们将根据计算机图形学的相关理论及数学规划法、共轭梯度法来细化、优化一种进行三维表面重建的算法.
　　从理论上讲，通过已知分散点的表面可以有无数多个，例如通过一个已知圆弧上的点的表面可以是平的圆盘，也可以是半球或由辐射状正弦函数形成的卷曲面等.因此，三维表面的恢复是要重建一个与图像信息一致的最佳拟合表面.这样一个最佳拟合表面是存在的，并且这个表面使得二次变分函数
　　(6)
达到最小值，其中S是一个表面.
2.1　算法的细化
　　求式(6)的二次变分函数的最小值可看成一个优化问题，而且已知的是分散的数据，所以应采用数学规划法来进行优化.
　　(1) 数学规划法
　　利用数学规划法的简单描述如下：首先，将表面划分成m×m的网格，所要计算的就是每一网格点上的表面信息.因此，可以将每一个表面看成是一个m2维向量空间中的一个点，其每一维代表网格上每一点的值.将这个m2维的向量扩展到(m2+1)维，使得最后一维是二次变分函数Θ(S)的值.这样，就在(m2+1)维空间中建立一个“超面”，称为目标面.求(6)式的最小值也就等同于在这个目标面上寻求一个最低点，这一点所代表的表面即为所要求的表面.
　　数学规划法通过迭代过程来寻求目标面上的最低点：
　　①　选择目标面上的一个点作为起始点.
　　②　在目标面上检测该点的一个局部区域，选取这一区域中的最低点.
　　③　以最低点作为新的起始点，重复上述过程直到满足要求为止.
　　(2) 目标函数的确定
　　式(6)所给出的二次变分函数是连续的，在应用数学规划法的时候，需将它转换成离散的形式.由于在Θ(S)中有平方根运算，因此求Θ(S)的最小值等同于求平方项的最小值.
　　对于m×m的网格，另每一网格点的坐标为(i,j)，表示第i行、第j列的网格点，网格点上的每一点用S(i,j)来表示.按行或按列的次序排列S(i,j)，可得一个m2维的向量S={S(0,0),S(0,1)，…，S(m-1,m-1)}.在离散形式下，设网格间距为h，则近似的有：

　　再把双重积分转化为等价的离散形式，由此，得到如下的目标函数：

　　表面重建问题等价于使这一目标函数达到最小.因为表面的重建基于一些离散的点集，所以该目标函数的约束条件为：
　　令　Φ={(i,j)|网络点(i,j)上的深度已知的点集}
　　则对于所有在Φ的点(i,j)，都有
S(i,j)-C(i,j)=0　　(11)
　　其中C(i,j)是反映立体数据的一组约束.
2.2　共轭梯度法对算法进行优化
　　从前面的推导可以看出，该目标函数是二次的，具有“凸”的性质，所以在目标面上得到的局部最小点即为全局的最小点.再者，因为目标函数的约束是线性的，目标函数的最小化可以采用梯度投影法来解决；同时，还可以把约束直接合并到目标函数，这就等价于一个无约束的目标函数优化问题，就可以采用共轭梯度法来解决.这里用的就是共轭梯度法，目标函数转换为：

β是一个表示拟合程度的参数.
2.2.1　共轭方向
　　共轭梯度法(conjugate gradient methods)是求解无约束最优化问题的一种有效的最优化方法，它的基本思想是利用目标函数在已知点处的梯度构成一组共轭方向并沿这组方向进行搜索，求出目标函数的极小值点.
　　设A为n×n的对称正定矩阵，如果En中的两个方向d(1)和d(2)满足
(d(1))TAd(2)=0　　(13)
则称这两个方向关于A共轭，或称为它们为A的两个共轭方向.
　　设二次函数为
　　(14)
式中，A为n×n的对称正定矩阵，x=［x1,x2,…,xn］T,bT=［b1,b2,…,bn］.
　　(15)
　　对于两个变量的问题，可以直观地用图形来表示，如图2所示.


图2　共轭方向的性质
　　设从某一点x(0)出发沿d(1)方向搜索，使f(x)达到极小值点x(1)，则点x(1)必为该处等高线的节点，此点的梯度方向为等高线的法线方向.因此，
Tf(x(1))d(1)=(b+Ax(1))Td(1)=0　　(16)
如果从另一点x(0)出发沿d(1)方向搜索，可得另一极小值x(2)，同理则有
Tf(x(2))d(1)=(b+Ax(2))Td(1)=0　　(17)
式(17)与式(16)的差为
(x(2)-x(1))T=Ad(1)=0　　(18)
令
d(2)=x(2)-x(1)　　(19)
则有
(d(2))TAd(1)=0　　(20)
也即方向d(2)与d(1)为A的两个共轭方向.由图2可见，d(2)正是x(1)与x(2)两切点连线的方向，此方向上的极小值点即为函数f(x)的最优点x*.
　　由此可见，对于二元二次函数，只要依次沿方向d(2)与d(1)进行一维搜索，则经两次迭代必然达到极小值点；而对于欧氏空间上非负定的二次函数，可以用不超过n次的搜索达到极小值点.
2.2.2　共轭梯度法的计算步骤
　　共轭梯度法迭代计算步骤如下：
　　(1)　给定初始点x(0)和允许误差ε，置步数k=0；
　　(2)　计算函数f(k)在x(k)处的梯度向量g(k)=f(x(k))，检验是否满足‖g(k)‖≤ε，若满足则停止计算，所得的x(k)即为近似最优解x*；否则，令d(k)=-g(k)；
　　(3)　从x(k)出发，沿方向d(k)作一维搜索，满足，令x(k+1)=x(k)+λkd(k)；
　　(4)　计算,校验‖g(k+1)‖≤ε，若满足则停止计算，x(k+1)=x*；否则转步(5)；
　　(5)　判别是否k=n，若是，表示迭代了n次，已用完n个共轭方向，令x(0)=x(k+1),k=0,转步(2)；否则转步(6)；
　　(6)　计算

　　(7)　置步数k=k+1，返回步(3).
2.2.3　目标函数梯度的求取
　　式(12)给出了目标函数的形式，在对其求梯度时，根据i，j的取值可分成以下6种情况.为方便起见，先考虑目标函数中双重求和的前3项，不包括约束部分：
　　(1)　在网格中央的点，即：(i,j)∈{(i,j)|2≤i≤m-3,2≤j≤m-3}，共(m-4)2个点，则

/*把式(12)第1项、第2项和第3项求偏导*/

为了体现出其中的规律性，令上式为：表示每一项的系数，排列如下：

其中系数40所对应的为S(i,j)项，其余可类推.
　　所以在S(i,j)点处的梯度为t(i,j)与S(i,j)逐项相乘的和，其关键是求出t(i,j)的值，以下就不再一一推导，直接给出各个t(i,j)的值.
　　(2)　网格的4个项点，即：(i,j)∈{(0,0),(0,m-1),(m-1,0),(m-1,m-1)}，相应的4组系数以点(0，0)为例推导可得：

　　根据4组系数整理得：

　　从上可以看出，系数的值是基于所求梯度点的位置而排列的，可通过其中之一的“旋转”得到．在后续的几种情况中，就给出系数的一个排列作为“模板”．
（3）在网格的边上并且距离顶点一个单位长度的8个点，即：(i,j)∈{(0,1),(0,m-2),(m-1,1)(m-1,m-2),(1,0),(m-2,0),(1,m-1),(m-2,m-1)}，以点S(m-1,m-2)为例计算梯度：

由此可得其系数的计算“模板”为：

　　(4)　在网格的边上，去掉(2)(3)两种情况中列出的点，即：(i,j)∈{(i,j)|((j=0或j=m-1),(2≤i≤m-3))∪((i=0或i=m-1),(2≤j≤m-3))}，共4(m-4)个点.以点(i,j)∈{(i,j)|((i=m-1),(2≤j≤m-3))}为例来计算梯度：

由此可得其系数的计算“模板”为：

　　(5)　距离每边一个单位长度的4个点，即:(i,j)∈{(1,1),(m-2,1)(1,m-2),(m-2,m-2)}，以点S(m-2,1)为例来计算梯度：

由此可得其系数计算“模板”为：

　　(6)　在距离网格边缘一个单位长度的4条边上，去掉(3)(5)两种情况列出的点，即：(i,j)∈{(i,j)|((i=1或i=m-2),(2≤j≤m-3))∪((j=1或j=m-2),(2≤j≤m-3))}，其4(m-4)个点.以点(i,j)∈{(i,j)|((j=m-2),(2≤i≤m-3))}为例来计算梯度：

由此可得其系数计算“模板”为：

　　计算目标函数的梯度时，在应用上述6种计算“模板”计算出式(12)前三项梯度的基础上，再加约束条件部分的梯度即可求得目标函数的梯度.求得梯度后，根据前面所给出共轭梯度法的计算步骤，就可以求出目标函数的最小值，也求得所需的表面.
　　以下所附的图(图3和图4)是采用上述算法重建的表面.图中重建表面所基于的点是根据Marr-Poggio立体算法计算所得的，这些点包含了图像的深度信息.


图3　盘旋状楼梯的重建表面之一(β=1)


图4　盘旋状楼梯的重建表面之二(β=0.1)
　　由图可得：拟合程度参数β表示了所重建表面的“光滑”程度，太大或太小都不能很好地重建表面.为求得最优的β值，可采用下述的方法：取在图像配准时匹配有误的点进行β值的测试，如果β所取的值在重建表面时能使这些匹配有误的点影响表面的形状，那么这个β值就被采用.
　　从两幅图中可以看出：在图像配准求得的特征点的基础上，通过应用共轭梯度法求二次变分函数的最小值来进行物体三维表面的重建是一个可行的方法，它的算法思路清晰，计算量小，是利用计算机视觉理论解决高级虚拟环境中视觉问题的一个有效方法.
3　结　　语
　　立体视觉是基于三角测量原理，利用两个或多个摄像机对同一景物从不同位置的成像结果来恢复距离数据的一种方法，为了最终恢复空间物体的三维形状，立体视觉中一般需要解决以下3方面的问题：图像面上视差计算，由视差恢复某些点的三维坐标以及由稀疏的三维数据恢复表面.■
作者简介：王汝传，男，1943年8月生，教授，目前主要从事计算机软件、计算机图形和虚拟　　　　　　技术等.
　　　　　王绍棣，1942年11月生，教授，目前主要从事计算机通信、图像处理技术等.
　　　　　胡岚，女，1973年8月生，硕士研究生，目前主要从事计算机通信、虚拟技术等.
作者单位：王汝传(南京邮电学院计算机科学与技术系　南京　210003)
　　　　　王绍棣(南京邮电学院计算机科学与技术系　南京　210003)
　　　　　胡岚(南京邮电学院计算机科学与技术系　南京　210003)
参考文献：
［1］Celni G,Gossard D.Deformable curve and surface finite elements for free-form shape design. ACM SIGGRAP Computer Graphics,1991,25(4):257～266
［2］Choi B K,Lee C S.Sweep surface modelling via coordinate transformations and blending.CAD,1990,22(2):87～96
［3］唐荣锡.CAD/CAM技术.北京：北京航空航天大学出版社，1994 
(Tang Rongxi. CAD/CAM Technology(in Chinese).Beijing:Beijing University of Aeronautics and Astronautics Press, 1994)
［4］王汝传.计算机图形技术原理及其应用.北京：人民邮电出版社，1997
(Wang Ruchuan. Principle and Application of Computer Graphics Technology(in Chinese). Beijing: People's Posts & Telecommunications Publishing House, 1997)
［5］卢章平，谭建荣，周广仁.曲面重建的一种实用方法的研究与实现.Chinagraph'96论文集.1996.90～95
(Lu Zhangping, Tan Jianrong, Zhou Guangren. Study and implementation of a practical method for camber rebuilding.In Chinagraph'96 Collected Papers(in Chinese).1996.90～95)
收稿日期：1998-07-16
修稿日期：1999-03-19
