镜头2(附录视频00:
20—00:
42)
此镜头表现了一个巨大锁链从水底升起,扰乱了原本的流体水面并带起一系列水花的场景。
这个场景利用了有关计算机图形学的相关知识,创建了不同的模型,来模拟这种虚拟的不科学的场景,使视觉效果看起来逼真。
图4图5图6
经典的欧氏几何学只研究直线、矩形、圆、三角形、圆锥面、锥体、椭球体等规则的形状,而对于自然界中稍为复杂一些的图形就没有能力描述它。
而70 年代后期发展起来的分形几何可用来描述极复杂的几何图形。
一个分形集应具备以下几个典型性质:
(l) 通常它本身的结构在大小尺度上有着某种“自相似”形式(有的严格地相似,也有的只是近似的、或者统计的相似性);
(2)当图形比例不断缩小时,它可以有任意小的细节;
(3) 它的“分形维数”大于它的“拓扑维数”;
(4) 在大多数令人感兴趣的情形下,它可以用非常简单的方法定义,并可以用迭代计算产生其图形;
(5) 分形的结果是倾向于“解释性”的,而非“预言性”的。
可以从图5看到镜头2所用到的模型有:
水面模型,锁链模型,水花模型。
这几个模型都符合分形几何的典型性质。
所以我们可以用分形几何模拟这些景物,其中较为困难的是水面和水花的分形。
为了实现三维海面建模,模拟海浪运动效果,我们首先要画出静态海浪曲面。
没分形前是一个正方形,第一次分形产生4个正方形,第二次细分可生成16个正方形,第三次则可生成64个...经过i次细分生成的正方形为2^2i个。
通过迭代我们可以得到海浪曲面效果图。
基于FBM方法的曲面生成算法如下:
(1)确定迭代初始正方形个数g及迭代次数n。
(2)确定随机函数方程g()=(rand()%(r-1)-r/d)。
(3)初始迭代次数m=0,然后对初始正方形的四个角点分别赋予随机高度值hA、hB、hC、hD,并将生成的坐标保存到坐标数组中。
(4)令当前迭代次数m=m+1,计算档次迭代所生成的所有点的坐标值,并保存到坐标数组中。
(5)重复第4步,直到当m=n-1时为最后一次迭代过程,结束迭代。
(6)使用纹理映射方法将海浪纹理映射到生成的曲面上,生成海浪分形图形。
对于从锁链上流下的水花进行运动分析:
水流从锁链表面倾泻出一道或多道水流,而后水流收重力作用流下。
在水流下落过程中,同样伴有水花飞溅等效果,而且在水流飞速下落的过程中,可能会与障碍物发生碰撞而改变运动方向。
水花可以看做不规则物体运动,故可以将这类运动用粒子系统方法来实现。
假设水花由若干个粒子构成,每个粒子在生成的时候都具有一定的属性,如粒子的寿命、速度、方向、颜色等。
随着时间的变化,每个粒子必须经过四个阶段:
(1)粒子的产生;
(2)粒子的运动;(3)碰撞检测;(4)粒子的消亡。
利用粒子系统生成单帧图像的过程见下图。
完成了对海面、锁链、水花的建模,我们可以进一步对模型进行贴图,增添光影效果,最终完成如图6的效果。
镜头3(附录视频00:
43—01:
11)
这个镜头是一个脑内虚拟场景的表现,为了区分人物,一部分人是彩色,一部分人是黑白,加入了白雾效果的模拟,才形成了这样一种特殊的效果。
要想实现这种虚拟场景的模拟,也需要我们的数字图像处理技术。
首先我们要把不同的人物素材从原拍视频中提取出来,这时候需要用到图像分割方面的技术。
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。
它是由图像处理到图像分析的关键步骤。
现有的图像分割方法主要分以下几类:
基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。
①灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。
阈值分割方法实际上是输入图像f到输出图像g的如下变换:
其中,T为阈值,对于物体的图像元素g(i,j)=1,对于背景的图像元素g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。
阈值确定后,将阈值与像素点的灰度值逐个进行比较,而且像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
阈值分割的优点是计算简单、运算效率较高、速度快。
在重视运算效率的应用场合(如用于硬件实现),它得到了广泛应用。
②区域生长和分裂合并法是两种典型的串行区域技术,其分割过程后续步骤的处理要根据前面步骤的结果进行判断而确定。
区域生长的基本思想是将具有相似性质的像素集合起来构成区域。
具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。
将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。
这样一个区域就长成了。
区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标提取。
分裂合并差不多是区域生长的逆过程:
从整个图像出发,不断分裂得到各个子区域,然后再把前景区域合并,实现目标提取。
分裂合并的假设是对于一幅图像,前景区域由一些相互连通的像素组成的,因此,如果把一幅图像分裂到像素级,那么就可以判定该像素是否为前景像素。
当所有像素点或者子区域完成判断以后,把前景区域或者像素合并就可得到前景目标。
③图像分割的一种重要途径是通过边缘检测,即检测灰度级或者结构具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方。
这种不连续性称为边缘。
不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。
现代电影主要采用绿幕、蓝幕的制作过程使得图像分割更加方便逼真。
我们提取了人物素材之后,需要把一部分如效果图所示转换成黑白。
目前常用的色彩格式有RGB,HSV/YUV以及HLS三种,对于HSV和HLS,惯用的方法是将其转换为RGB色彩格式再进行灰度化。
所以我们主要介绍RGB色彩模式下灰度化的主要方法。
定义于RGB空间的彩色图,其每个像素点的色彩由R、G、B三个分量共同决定。
每个分量在内存所占的位数共同决定了图像深度,即每个像素点所占的字节数。
以常见的24深度彩色RGB图来说,其三个分量各占1个字节,这样每个分量可以取值为0~255,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。
对这样一幅彩色图来说,其对应的灰度图则是只有8位的图像深度(可认为它是RGB三个分量相等),这也说明了灰度图图像处理所需的计算量确实要少。
不过需要注意的是,虽然丢失了一些颜色等级,但是从整幅图像的整体和局部的色彩以及亮度等级分布特征来看,灰度图描述与彩色图的描述是一致的。
对于RGB图像进行灰度化,通俗点说就是对图像的RGB三个分量进行加权平均得到最终的灰度值。
最常见的加权方法如下:
1)Gray=B;Gray=G;Gray=R
2)Gray=max(B+G+R)
3)Gray=(B+G+R)/3
4)Gray=0.072169B+0.715160G+0.212671R
5)Gray=0.11B+0.59G+0.3R
这三种方法中,第一种为分量法,即用RGB三个分量的某一个分量作为该点的灰度值;第二种方法为最大值法,将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。
第三种方法将彩色图像中的三分量亮度求平均得到一个灰度图;后两种都是属于加权平均法,其中第四种是OpenCV开放库所采用的灰度权值,第五种为从人体生理学角度所提出的一种权值(人眼对绿色的敏感最高,对蓝色敏感最低)。
完成了图像分割、和灰度化的工作,我们成功地将视频人物素材准备完全。
现在我们需要的是将所有素材整合到一起,进行整个虚幻场景的构建。
从剧照上可以看出,这个场景是以黑色为底色,充斥着白色烟雾的一个场景。
这些烟雾并没有明显的“烟源”,就像天空的雾云一样。
于是我们可以通过计算机图形学中的气态流体模拟实例中找到模拟它的方法。
气态流场作为流体的一种,具有以下特性:
1)易流动和易变形特性;
2)随机性和湍流特征;
3)易扩散特征。
为了更好地模拟这种运动复杂的气态流体,我们通过基于细胞自动机的生成模拟来完成这种模拟方法。
细胞自动机为模拟包括自组织结构在内的复杂现象提供了一个强有力的方法。
细胞自动机模型的基本思想是:
自然界里许多复杂结构和过程,归根到底只是由大量基本组成单元的简单相互作用所引起。
因此,利用各种细胞自动机有可能模拟任何复杂事物的演化过程。
细胞自动机的原理是按一定的状态转移规则进行状态转换。
从而达到仿真的目的,因此有必要给空间内的每个细胞确定相应的状态变量。
而细胞自动机的状态迁移也必须按照一定的状态迁移规则进行,不同的气态流体模拟有着不同的状态变量和状态迁移规则。
所以首先为了模拟无源烟雾流体,我们要先来分析烟雾模型细胞的性质。
烟雾细胞有温度和透明度的状态变化。
可以给细胞设置状态变量T和Alpha来描述细胞的温度和透明度。
对于烟雾细胞,温度越高,所受浮力就越大,上升就越快。
而影响烟雾细胞透明度变化的主要原因是颜色和温度。
烟雾细胞在运动过程中要受到重力、风力、阻力、摩擦力和浮力的多重影响。
考虑到摩擦力对于细胞运动的影响很小,我们忽略不计。
这样,垂直方向所受力为重力、阻力和浮力,水平方向受力为风力,f合=F浮-(G+F阻)。
据此我们可以制定烟雾细胞的状态迁移规则。
根据模拟的效果,可以对状态变量和状态迁移规则进行修改,以取得最逼真的效果。
镜头4(附录视频01:
12—01:
35)
这个镜头表现了角色突发变异之后,通过一些对角色新的形象的不完整镜头的剪辑来留下悬念,对戏剧冲突的加强。
由于角色的形象是一种夸张、虚拟的蓝色毛怪的形象,除了一部分对演员进行特效化妆完成之外,也运用了建模等数字媒体手段来完善角色形象。
而针对于这个镜头来说,这种人物通过一个玻璃瓶底反光映出眼部影像其实是一种虚拟合成的特殊效果。
在自然条件下,玻璃制品的反光并不能如此清晰,不适合直接运用到电影镜头中,所以我们需要通过数字图像技术来刻画这种特殊视觉效果。
图7图8
图9图10图11
图12图13
我们一步一步来分析这个特殊视觉效果的组成。
首先,为什么画面倒映在玻璃底部的影像不会让我们觉得不真实?
首先他对一个原本是平面的视频素材进行了置换纹理贴图,使它看上去带有了玻璃瓶底部特殊的扭曲效果。
然后对其进行了光效处理,才形成了这样逼真的视觉效果。
为了完成置换纹理,我们先要进行素材的准备。
对于本镜头我们需要准备的素材有两部分:
瓶底纹理,角色眼部特写。
我们先来分析瓶底纹理的制作。
在这之前,我们可以拍摄如图7所示的瓶底素材,使用图片分割技术保留我们所需要的部分。
为了更好地和我们的电影画面融合,我们在此之前可以对其进行色相、饱和度、灰度等处理,使其色调符合我们的画面。
然而图7所示的素材作为置换纹理贴图可能细节太多,无法真实地模拟现实的视觉效果,我们先对其进行空域卷积滤波处理。
空域滤波技术根据功能主要分为平滑滤波与锐化滤波,平滑滤波能减弱或消除图像中的高频率分量而不影响低频分量。
因为高频分量对应图像中的区域边缘等灰度值具有较大变化的部分,平滑滤波可将这些分量滤去减少局部灰度起伏,是图像变得比较平滑。
所以空域滤波可以在提取较大目标前去除太小的细节或将目标的小间断连接起来。
空域滤波是在图像空间通过邻域操作完成的,实现的方式基本都是利用模板进行卷积来进行,实现的基本步骤为:
1、将模板中心与图中某个像素位置重合;
2、将模板的各个系数与模板下各对应像素的灰度值相乘;
3、将所有乘积相加,再除以模板的系数个数;
4、将上述运算结果赋给图中对应模板中心位置的像素。
空域滤波的主要分类如下图所示:
均值滤波用领域的均值代替像素值,减小了图像灰度的尖锐变化。
由于典型的随机噪声就是由这种尖锐变化组成,因此均值滤波的主要应用就是减噪,即除去图像中不相干的细节,其中“不相干”是指与滤波模板尺寸相比较小的像素区域。
但是图像边缘也是由图像灰度尖锐变化带来的特性,因而均值滤波总是存在不希望的边缘模糊的负面效应。
均值滤波器可以衍生出另一种特殊的加权均值滤波器,用不同的系数乘以像素,这样,从权值上看,一些像素比另一些更重要。
如,处于模板中心位置的像素比其他任何像素的权值都要大,正交方向相邻的像素比对角项的权值大。
中值滤波器比小尺寸的线性平滑滤波器的模糊程度明显要低,对处理脉冲噪声(椒盐噪声)非常有效。
中值滤波器的主要功能是使拥有不同灰度的点看起来更接近于它的邻近值,去除那些相对于其邻域像素更亮或更暗,并且其区域小于滤波器区域一半的孤立像素集。
中值滤波等对去除一定特性的噪声会比较有效,除此之外我们还可以用几何方法来去除离散噪声。
考虑一幅二值图像,对每个黑点我们以递归的方法从上下左右以及左上、右上、左下、右下八个方向搜索连续的黑点,如果某个方向连续黑点的数目满足规定的长度,我们就认为该点不是离散点,否则认为该点是离散点而去除掉(把黑点改为白点)。
通过平滑滤波,我们可以相信我们可以将如图7所示的瓶底处理成如图8所示的适合我们使用的纹理素材,这样我们的准备工作就完成了一部分。
接下来我们还要完成对角色眼部特写镜头的一部分处理。
X战警中充斥着不少正常生活中没有的角色,譬如这个镜头中出现的蓝毛野兽汉克。
它拥有蓝色皮肤和旺盛的蓝色毛发,手掌脚掌健壮如同野兽一般。
经过查阅资料我们了解到,这个角色的拍摄方法是综合了特效化妆和数字建模两部分技术完成的。
由于特效化妆之后大量附着在演员面部的无机物阻挡了面部表情的动作和皮肤纹理,造成一部分僵硬和不真实感,所以现代电影使用对面部进行建模完善表情细节的方法来优化画面。
如果仅从数字处理角度来分析,角色面部的处理过程应该如图9到图11所示。
图9为演员真正的眼部影像,要想从图9变成图10所示画面,我们首先可以对整个画面进行调整色相的处理。
实现时只要将RGB表示的颜色先换算成HSL(L)表示法,调整色相(hue)的值,在将调整以后的值换算回RGB表示,就实现了调整图象色相的效果。
而图像整体色相和眼睛虹膜色相的调整幅度明显不同,这时候需要我们再次利用图像分割技术准确提取眼瞳的位置进行更大幅度的调整。
完成了图10的制作,我们可以使用简单的逻辑与运算将蓝色皮毛附着到演员面部,如图11所示。
就这样完成了眼部特写影像的处理,可以进行合成了。
为了合成出真实可信的镜头,我们首先对眼部特写进行像素的旋转、拉伸,使它符合透视,再去除掉多余像素,形成如图12所示的效果。
然后我们将之前做好的瓶底纹理素材图8和图12进行置换纹理处理。
置换滤镜可以从PS、AE等应用软件中找到,是一个非常常用的功能。
置换滤镜的最常用的功能是将一种纹理附加到目标物体上。
当然你也可以将这个物体附加到纹理上。
通过置换滤镜可以得到各种贴近真实效果的模拟。
置换图决定了目标对象中像素移动的距离和方向,它是根据图片中的灰度值来实现的。
对于简单的置换图来说,亮色处的像素向左上方移动,当颜色为纯白色时,移动距离最大,为128像素。
中性色(50%灰色)处的像素保持原位置不变。
暗色处的像素向右下方移动,当颜色为纯黑色时,移动距离最大,为128像素。
介于白色与黑色之间的颜色分别使像素移动相应的距离。
这幅简单的置换图必须是灰度模式。
对于复杂的置换图来说,像素的移动方向和距离取决于红色和绿色通道的亮度值。
在红色通道中,白色=左移,黑色=右移;在绿色通道中,白色=上移,黑色=下移。
蓝色通道不起作用。
移动的距离和简单置换图一个道理。
复杂的置换图必须是RGB模式。
若非RGB模式,可以通过不同的转换公式转换色彩模式。
置换图的过程原理可如下图所示:
置换图上的a1点对应源图的a点,置换图上的b1点对应源图的b点,查看a1的红绿通道的色阶值,红通道中大于128的色阶值使a1的横坐标向右查找,红通道中小于128的色阶值使a1的横坐标向左查找,绿通道中大于128的色阶值使a1的纵坐标向下查找,绿通道中小于128的色阶值使a1的纵坐标向下查找,然后通过查找而得的红通道的横坐标偏移以及查找所得的绿通道的纵坐标的偏移查找到b1的位置。
然后在源图上找到与b1对应的位置b,把它复制到与a1对应的位置a上。
这就是反向查找以及置换的原理。
偏移距离=(像素灰度-128)×该方向比例,因此,对于x,y方向比例都为100%的情况下,像素在x或者y方向的最大移动距离是128像素。
灰度为128的像素不产生偏移。
对于在选区之内的置换,不管是不是规则的选区,置换参与计算的区域为选区的外接矩形,而源图最后的效果只有选区内才表现出来。
由于在源图上寻找目的像素的时候(图中为b),寻找的位置可能超出了选区的外接矩形,那么该目的像素的位置,称为未定义区域。
折回方式,是从另一侧继续进入外接矩形区域查找。
重复边缘像素方式遇到选区的边缘就不折回查找而是继续复制选区的边缘。
经过了置换贴图,我们发现影像发生了一定程度的扭曲。
扭曲程度和置换贴图素材的灰度程度是息息相关的。
最后对合成的影像边缘进行画面增强处理,再加入背景图层,就完成了这个镜头的特殊效果处理。
镜头5(附录视频01:
36—02:
05)
这个镜头是一个动态的变身镜头,原本是正常人类的角色通过动画变成了满身布满蓝色鳞片的样子。
这个镜头的拍摄方法是通过剪辑来完成,首先拍摄正常角色的一组影像,然后演员进行特效化妆涂满蓝色涂料后再拍摄一组影像,由于摄像机的位置固定不变,经过剪辑处理后就造成了角色一直没动的假象。
然而其中角色变身的过程的确是通过数字媒体技术完成的。
图14图15
要想进行动态的