构建完网格模型之后,要给网格加上纹理,就要使用纹理映射技术。纹理映射技术是真实感技术的一个重要方面,人脸表面的纹理具有颜色和几何纹理双重属性。
在贴纹理前,必须确定纹理与人脸的相对关系,即在场景中生成实体时,要同时用到纹理坐标和几何坐标。对于一个二维纹理来说,纹理坐标在X和Y方向上都是0.0~1.0。这样,在设计纹理时就要小心,要使其左右、上下各边能够很好地拼为一体,即要实现纹理图像的无缝拼接。在应用中,首先选择一个图像,由于被用作纹理图像的宽和高必须是2的幂,所以在预处理部分,须将其转换为符合要求大小的格式,如256×256像素,并将对应的分量依次读入缓存区。
在初始化时,对纹理映射的各种参数进行设置,要对相对的几何坐标同时给出对应的纹理坐标,我们采用了线积分卷积法来进行纹理的向量场映射。设向量场中任一点处的局部特性,由一个卷积和函数k(w)沿一条从该点开始向前向后跟踪出的一段流线积分的结果决定,则定点(x,y)的纹理值I(x,y)可由下式得出:
式中,I(x,y)为(x,y)出发向前向后跟踪的流线段所经过的像素;f(xi,yi)为像素点(xi,yi)处的输入纹理;hi为流线段穿过像素(xi,yi)时在其内的长度。经这样处理后,就可以实现具有较强的真实感人脸纹理。
在我们的系统中,人脸位于一个256×256像素的纹理贴图的中心,该图可以从CIF视频帧中自动获得。考虑到处理的方便,人脸需要尽可能地出现在纹理贴图的中心位置。事实上,在视频帧中,人脸的位置很难真正处于中心位置,因为讲话者会随机地晃动,所以对视频帧中人脸的位置需要加以研究。
我们将水平和垂直轴分为三段,其中水平方向上为LT/2和(LX-LT/2),垂直方向上为LT/2和(LY-LT/2)。这里LT/2表示纹理贴图的一半宽度(此处为128像素),LX和LY分别是CIF视频帧的宽度和高度。这四个标记可以将视频帧分解为九个区域。根据中心人脸(CY,CX)相对于这些区域的位置,可以决定如何进行纹理贴图。例如,如果CX<LT/2,并且CY<LT<2,则坐标(LT/2,LT/2)可以认为是纹理贴图的中心;而当LT/2<CX<LX-LT/2,并且LT/2<CY<LY-LT/2时,纹理贴图的中心被认为在(CY,CX)。根据自动产生的纹理贴图,三维人脸模型的纹理坐标可以通过将三维坐标系映射进入到纹理空间而得到。根据以上和前面的处于人脸模型转换中的个性化三维节点坐标,最终可以合成一个特定的三维人脸模型。我们从视频中截取了一张二维人脸,纹理贴图的示意如图11-4所示。按照上述纹理贴图的原则和算法,最终纹理贴图的结果如图11-5所示。(www.xing528.com)
图11-4 纹理贴图示意
a)Candide模型 b)视频截图 c)合成示意
图11-5 纹理贴图结果
a)合成结果 b)向右转过30° c)向左转过90°
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。