纹理重构(转)

纹理重构作为研究生阶段工作的一部分,花费了自己不少的心血。由于自己的能力有限,工作不是很到位,留下了很多需要进一步完善的地方,但对这个领域有了一定的认识,希望能够对别人有所帮助,更希望和感兴趣的同仁一起讨论交流。

=============================================================================

纹理重构的基本流程包括:数据采集、图像配准、纹理重光照和融合、纹理图的生成。

纹理重构的直观含义是在三维模型已知的情况下(可通过各种方法获得,比如三维扫描、建模软件建模、基于图像的建模等),从多个视角拍摄物体,得到一系列纹理图像,并将这些图像映射到三维模型表面上,从而得到真实感三维模型。

一、纹理映射简介

纹理映射技术最早于1974年由Catmull首先提出,是高质量图像合成中最成功的技术之一,它的应用极大地提高 了光栅扫描图像的视觉丰富感,对真实感图像的生成具有重要的意义。Catmull确定了以(u,v)表示的双变量实数纹理空间和以参数(s,t)表示的三 维曲面之间的映射对应关系。但由于Catmull的算法仅给出了纹理的色彩映射,无法表现三维对象的材质属性,Blinn和Newell在1976年提出 了“反射映射”的技术,在光照模型中考虑了纹理图案的镜面反射参数和高光系数,从而大大改进了经纹理映射后的图像质量。Blinn在1978年又提出了凹 凸纹理映射技术,利用一个扰动函数来更改模型表面的法向量来模拟粗糙表面的纹理,实现了在光滑的物体表面附上粗糙纹理的方法。Gardner使用纹理函数 控制物体的透明性,在模拟自然景物方面取得了良好的效果。

随着虚拟现实硬件技术的发展,可编程渲染管道Vertex Shader和Fragment Shader出现后,又出现了更多不同功能的纹理种类,如用于印花和剪纸等效果的Alpha Map、用于光照效果模拟的Light Map、用于光泽度效果的Gloss Map、用于近似反射效果的Environment Map、用于偏移矢量凹凸纹理的Offset Map、用于高度场凹凸纹理的Height-field Map、用于点积凹凸纹理的Normal Map、用于几何位移纹理的Displacement Map等。

纹理的种类有很多种。按照纹理定义域的不同,纹理可以分为一维纹理、二维纹理和三维纹理,在实际应用中可以用一维纹理表达岩石层,用二维纹理表达水波、植被或表面凹凸,用三维纹理表达云、木材、大理石等。

纹理映射的过程就是将纹理图像映射到一个三维模型表面,然后在绘制阶段再映射到二维显示设备的过程。它涉及到三个坐 标系,纹理空间坐标系(u,v)、三维模型空间坐标系(x,y,z)以及屏幕空间坐标系(i,j)。从纹理空间到三维模型空间的转化过程为曲面参数化的过 程,也成为纹理坐标的获取。从三维模型空间到屏幕空间的转化过程称为基于视角的投影。这个过程属于绘制过程,可由图像硬件来完成。因此,在纹理重构过程 中,我们主要考虑纹理坐标的获取过程。

Catmull提出的纹理映射思想是针对参数曲面上的纹理映射,而实际应用中还有大量物体被表示为非参数化多边形面片拼接而成的多面体,其表面的重新参数化相当困难,可以采用两步纹理映射方法来完成,也可以采用基于透视投影的纹理映射方法来完成。

参数曲面的纹理映射可以最终转化为表面参数化的数学问题,即求解三维表面到二维平面子集的一对一映射关系。两步纹理 映射根据实际物体的具体形状选择一种中间曲面,将映射过程分为两步进行:第一步将纹理图像映射到中间曲面上,称之为s映射;第二步用中间曲面包围物体,并 将其上的纹理映射到物体表面,称之为o映射。两步纹理映射的常用中间曲面有以下几种:平面、球面、圆柱面与立方体表面,其中后三种中间曲面可以包围物体, 实现对整个物体表面的纹理映射。传统的s映射方法不能保证纹理在中间曲面上保持联系,严重影响了真实感效果。为此人们提出了多种改进方法,以避免或改善纹 理不连续与扭曲变形现象,如简单的几何变形,表面展开或全局优化等。对于形状比较接近于上述几种中间曲面的物体,使用两步法比较方便,比如人脸的纹理映射 就可以使用圆柱面。

二、图像配准

对于使用数码相机获取的实拍纹理,使用透视投影的方法进行映射是最合适的。利用实拍照片为已知几何模型添加纹理需要进行照片与几何模型之间的配准,也就是为照片确定拍摄时相机相对于空间景物的方位和取景参数,从而建立二维图像和三维几何之间的对应关系。

Sato和Bernardini把数码相机和三维扫描仪绑定在一起,在获取三维几何数据的同时获取物体的纹理图像。 由于这种方法在采集阶段事先进行了校准,模型和图像的对应关系已知,因此可以直接进行纹理站体,简化了建模过程。但是其采集装置比较复杂、昂贵,因此,这 种方法有很大的限制。
除了上述将相机与扫描仪绑定的方法外,目前主要有两类方法来解决图像配准问题:第一类方法需要通过得到若干组物体表面的空间特征点和与之对于的图像特征 点,进而利用这些3D-2D特征点对应关系实现图像配准;第二类方法不依赖于上述特征点间的对应关系,而是通过匹配侧影轮廓线等较为明显的图像特征来实现 图像配准。

第一类方法简单易行,但问题的关键在于如何精确地找到物体表面的几何特征点以及它们在图像平面上的投影到。大量的工 作表面,自动的3D和2D特征点检测以及匹配的工作非常困难,到目前为止还没有出现能够可靠适应任意实际应用情况的算法。因此,在实际应用中通常采用手工 交互的方式选取上述特征点。但在一些表面相对光滑的物体表面选取三维特征仍存在较大的困难,且无法保证选取特征的精度。为此,一些研究者采用了在场景中放 置附加标记物体的方法,从而使得这些标记物体能够同时被三维扫描设备和普通相机识别出来,但这样带来的问题是必须小心地选取相机的拍摄视角,从而保证在每 一幅照片中都要出现足够数量的标记物体;此外,这些标记物体最终还需要从三维模型和纹理图像中予以剔除,增加了额外的工作并且造成了纹理的空洞。

第二类方法对几何模型在图像平面上的投影轮廓线和图像平面本事所具有的物体的侧影轮廓线进行匹配,并使他们之间的偏 差达到最小,从而实现空间物体与二维图像的配准。一般而言,上述偏差是通过计算一条轮廓线上的若干采样点到另一条轮廓线上最近的的距离和来得到的。实践表 明,第二类方法对于表面上具有丰富细节的物体具有较好的配准效果,但是,对于表面光滑或形状简单的物体,这类方法会产生较大的误差;更严重的是,在有些情 况下,我们无法得到物体清晰的侧影轮廓线或者从不同视角观察到的物体的侧影轮廓线完全相同,从而导致该类算法失效。

一些已有工作中也将上述两种方法结合起来共同使用。即首先通过3D-2D特征点匹配的方法得到一个粗略的配准结果, 进而采用侧影轮廓线匹配的方法对上述配准结果进行优化,从而得到更高的配准精度。此外,还有少数研究者引入了多视角图像上二维特征点间的对应关系对上述配 准结果进一步进行优化,这一过程是通过匹配空间物体表面上的任意一点在不同参考图像平面上投影像素点的颜色值来实现的,因此这仍然是一个正向投影的过程, 且必须存在一个初始的配准结果。

浙大的刘刚博士提出了一种新的思路,他采用基于图像重建的采样点模型与已知几何模型在空间中进行匹配的方法实现配 准,充分利用了物体几何形状本身具有的拓扑和曲率等信息,并可一次性地实现所有图像与空间物体的配准。但此方法也带来了基于图像的三维重建这样复杂的额外 计算任务,并且纹理绑定的准确度取决于采样点三维坐标重建的精度,而这些采样点的三维坐标重建算法并不总是很稳定,容易为纹理映射结果带来误差。

图像配准的过程也就是相机标定的过程,即确定相机的几何和光学参数,以及相机相对于世界坐标系的方位。在图像配准过 程中涉及到以下几个坐标系:世界坐标系、相机坐标系、图像坐标系。图像配准实际上就是确定这些坐标系之间的变换关系。世界坐标系(Xw,Yw,Zw)也称 为真实或现实世界坐标系,或全局坐标系。它是客观世界的绝对坐标,由用户任意定义的三维空间坐标系,一般的3D场景都用这个坐标系来表示。相机坐标系 (Xc,Yc,Zc)是以小孔相机模型的聚焦中心为原点,以相机光轴为Zc轴建立的三维直角坐标系,Xc、Yc一般与图像坐标系的x,y平行。图像坐标系 包括图像物理坐标系和图像像素坐标系。图像物理坐标系(x,y)是平面直角坐标系,原点为透镜光轴与成像平面的交点,x与y轴分别平行于相机坐标系的Xc 与Yc轴,单位为毫米。图像像素坐标系(u,v)是固定在图像上的以像素为单位的平面直角坐标系,其原点位于图像左上角,u、v平行于图像物理坐标系的x 和y轴,对于数字图像,分别为行列方向。

世界坐标系和相机坐标系之间的变换是由六个外参(三个旋转角和三个平移分量)来确定,而相机坐标系和图像坐标系之间 的变换则是由相机内参来确定。在理想的针孔相机模型下,相机的内参主要包括焦距、相机的主点坐标等。实践表明,摄像机光学系统并不是精确地按理想化的小孔 成像原理工作,存在透镜畸变,物体点哎摄像机成像面上实际所成的像与理想成像之间存在有光学畸变误差。主要的畸变误差分为三类:径向畸变、偏心畸变和薄棱 镜畸变。第一类只产生径向位置的偏差,后两类则既产生径向偏差,又产生切向偏差。

相机标定方法分类:

根据标定过程中是否采用标定参照物,可将标定算法分成传统标定算法和自标定算法两类。

(1)传统相机标定算法

这类算法基于一定的标定参照物。基本原理是基于已知形状、尺寸或空间位置的标定参照物,经过对其图像的处理,利用一 系列数学变化和计算方法,求取相机的内参和外参。这类算法的优点是系统的标定精度较高。缺点是标定的过程比较复杂,需要专业人员的操作,而且标定完成后, 系统设置难以调整,限制了系统的灵活性。这类算法中比较有代表性的有:

DLT(直接线性变换 Direct Linear Transformation)方法、RAC(径向排列约束 Radial Alignment Constraint)方法。Abdal-Aziz和Karara于70年代初提出了直接线性变换方法,他们从摄影测量学的角度深入得研究了相机图像和环 境物体之间的关系,建立了相机成像几何的线性模型,这种线性模型参数的估计完全可以由线性方程的求解来实现。      80年代中期Tsai提出的基于RAC的定标方法是相机标定方面的一项重要工作,该方法的核心是利用径向一致性约束来求解相机参数。基于RAC方法的最大 好处是它所使用的大部分方程是线性方程,从而降低了参数求解的复杂性,因此其定标过程快捷,准确。RAC相机标定方法属于两步法,第一步是利用最小二乘求 解超定线性方程,给出外部参数;第二步求解内部参数,如果摄像机物透镜畸变,可以由一个超定线性方程解出。如果存在一个以二次多项式近似的径向畸变,则可 以用优化搜索方法求解。

(2)摄像机自标定算法

这类算法无需依赖于标定参照物,仅利用摄像机在运动过程中周围环境的图像以及图像之间的对应关系进行标定。这类算法的灵活性好,不依赖于特定的环境,标定过程方便。但是标定精度要明显差于传统的摄像机标定方法。

(3)基于多个自由平面的标定算法

MS的张正友提出了一种基于多个自由平面的相机标定算法。这种算法通过拍摄平面模板在空间中的几个不通位姿来完成相 机标定。它是介于传统标定方法和自标定方法之间的一种方法,因为这种方法使用了标定参照物,但是不需要明确知道标定参照物的三维空间信息,只需要知道标定 平面上标志点的二维位置信息。由于在标定过程中无需知道明确的三维信息,因此标定操作简单灵活,非专业人员也易于操作;同时和完全不依赖于标定物的自标定 方法相比,它的标定精度较高,鲁棒性较好。

上面介绍了一些比较经典的标定算法,本文在纹理重构的实现过程中主要使用了以下两种方法进行相机标定。

(1)基于RAC方法的相机标定:

我们开发了一个交互式的界面,可以同时显示初三维模型和对应的二维图像。用户可以通过鼠标交互地选择2D-3D对应 点对,点对的数量通常需要多于6对。将这些2D-3D对应点对作为RAC标定算法的输入,可以标定出相机的内外参数。该方法比较简单、方便,但是当三维模 型上没有明显的特征点的时候,该算法工作不是很稳定。

(2)基于张正友标定算法的相机标定

我们可以首先使用张正友的方法标定出相机的内参,然后再利用基于侧影轮廓线的方法来标定相机的外参。之所以这样分开标定是因为张的方法所标定出来的外参是相对于平面板的而不是相对于实际的物体。

三、纹理重光照和融合

通常情况下,一幅数码照片纹理是难以覆盖整个三维模型表面的,因此需要通过映射多幅纹理来保证三维模型表面北完整覆 盖。然而,相邻两幅纹理图像之间可能存在颜色和亮度上的差异,当我们将其简单地映射到三维模型上时,会出现明显的接缝,造成视觉上的不连续性,从而损害了 三维模型的真实感。为此,我们需要对相邻的纹理进行拼接融合。关于纹理融合方法的介绍可以参考论文《Blending Images for Texturing 3D Models》。http://fsli.blog.hexun.com/16461863_d.html

标签:
News, OpenGL

相关日志

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Leave Comment

(必填)

(必填)