立体环幕影像低成本解决之道——基于HLSL后处理技术的三通道立体投影方法研究

2014-11-25 09:55柳喆俊
科技传播 2014年2期
关键词:投影立体校正

柳喆俊

同济大学艺术与传媒学院,上海 200092

1 研究背景与价值

环幕影像是指呈现在圆柱体(或圆柱体局部)表面的环形影像。得益于出众的沉浸感与视觉效果,环幕影像不仅被广泛应用于科技馆、博物馆、博览会和各种商业活动中,而且目前绝大多数“4D 影院”、“5D 影院”实际上也是以立体环幕影像作为视觉核心的。

环幕影像本身并非新鲜事物,已经有很多成功范例和成熟解决方案了,尤其在2010 年上海世博会期间,环幕影像在众多世博展馆内大方异彩,吸引了数以万计的观众驻足赞叹。

但令人遗憾的是,时至今日环幕影像还是以“高端”的姿态固步于有限的场馆之内,具备丰富经验、能够进行环幕影像创作的艺术家寥寥无几,这很大程度上限制了这类影视作品的普及。2011 年底,上海科技馆召开了自主编创的4D 电影《重返二叠纪》的首映会,会上科技馆的负责人不无遗憾地表示目前国内大多数科技馆、博物馆都设立了4D 影院,但片源几乎完全依赖进口,翻来覆去只能放几部老片子,影片的供应远远跟不上观众和时代的需求。

目前国内高校动画、影视特效类的专业遍地开花,有些地方甚至到了供过于求的地步,为什么立体环幕影像的创作者却如此难觅呢?据笔者调查,除了信息不对称的因素以外,由于放映环幕影像需要造价高昂的特殊软硬件环境,超出了大部分高校相关专业愿意接受的水平,因此学生在校期间很难有机会进行这方面的学习和研究,毕业后会选择创作这类特种影片的人肯定只是凤毛麟角了。

传统环幕影院建设成本之所以昂贵,主要因为以下三个方面的原因:首先,要实现环幕投影必须进行边缘融合与几何校正,专门用于边缘融合与几何校正的硬件设备(国产)价格在20 至30 万左右;其次,立体环幕影像需要提供多通道视频信号,实现三通道立体投影就需要总共7 台电脑(6 台输出视频信号,另一台作为服务器),即使每台电脑采购成本在1 万元左右,7 台电脑的采购成本也要近10 万元了;最后,大多数环幕影院都选择使用价格昂贵的工程投影机,每台投影机在3-5 万元左右,六台投影机的采购总价高达20-30 万元。再加上环幕本身的造价和安装调试的费用,要打造一个三通道立体环幕影院的成本大约在50-80 万元——这显然是一笔相当可观的投入。

笔者负责的“非平面影响实验室”建设项目总经费不到200 万元,还需涵盖立体视觉、4D 座椅、交互球幕、球幕影院等多个研究域。因此,在满足创作与研究需求的前提下,必须尽可能降低三通道立体投影系统的造价。最后,经过反复研究与不懈努力,该系统的总造价被控制在了15 万元。

2 软硬件环境及建设成本

下面简单列举一下组成三通道立体投影系统的核心设备及它们的采购成本。(以下为2011 年时的采购价格,仅供参考。)

主控电脑:一台,总价约1.5 万元

监视器:20 寸显示器六台,总价约1.5 万元

投影机:三洋1160c 投影机,六台,总价约9 万元

环幕:直径6 米120 度金属弧形幕,约2.5 万元

5.1声道音响系统:0.25 万元

再加上偏振滤镜、支架、线材、安装等费用,硬件部分的投入约为15 万元,并且随着时间的推移硬件成本还会逐步降低。相比较大多数立体环幕系统50-80 万元的造价,这样的建设成本相信大部分的院校都能比较轻松地接受。

在软件系统上,本系统利用Quest3D 三维引擎内的Render to Texture 与HLSL 编程功能完成了几何校正与边缘融合。鉴于本方法的普适性,您完全可以选择自己熟悉的三维引擎组建,只需确保这个引擎支持“渲染至贴图”功能与“可编程着色器”功能即可。

最后,需要特别指出的是,在主控电脑中所选用的显卡为华硕EAH5870 EYEFINITY 6/6S/2GD5,因为它是为数不多的性能强大且能够同时输出六个数字视频信号的显卡,这样的显卡是组建低成本立体环幕投影系统的必要条件。

3 基于HLSL 的三通道立体投影实现方法

3.1 设备连接与系统配置

支持AMD Eyefinity 功能的显卡最大的优势在于它不仅能够同时输出六个不同的影像,而且可以在驱动程序层面将六个画面合并为一个完整的桌面。根据这个特点,我们将六台显示器按照3x2 的形式组成分辨率为3072x1536 的矩阵,左眼画面渲染至1-3 号显示器/投影机,右眼画面渲染至4-6 号显示器/投影机,左右眼投影画面以偏振技术加以区隔。

本系统的硬件设备连接图如下:

图1 设备连接图

3.2 利用HLSL 进行几何校正与边缘融合的思路

3.2.1 相机模型转换

适用于环幕的影像分为预渲染影像(如动画或影片)和实时影像两大类,其中实时影像又包括二维和三维两种,它们之间各有不同但其中难度最高的是本文所研究的实时三维影像。

由于常用的3D API(包括OpenGL 和DirectX)仅支持针孔相机模型,生成环幕影像只能通过多相机画面拼接。相机数量越少拼接后图像精度的损失越大,相机越多则消耗的运算资源越多,因此必须在两者之间取一个平衡点。对于本例中120度的环幕来说,水平方向上放置三个视锥左右相连的摄像机比较合适。虽然这三台相机可以渲染出左右相连的画面,但如果简单地将它们左右拼在一起那么透视不连续的问题会明显地表现出来,表现为直线在接缝处产生折角(见图2)。

利用HLSL 语言调用GPU 的像素着色器(Pixel Shader),我们可以将三个画面修正成连续的环幕影像,其核心代码如下:

其中angH 为单个相机的水平视角,IN.UV 是原采样点UV坐标,pi 为圆周率,H 和W 代表贴图的UV 长度(其值为1),texCol 为Pixel Shader 返回的色彩值。

图2 环幕影像修正效果

3.2.2 线性变换

理想情况下,投影方向应垂直于该部分圆弧的弦,且分管环幕左、中、右侧的投影机影像应能完美地两两重叠。但事实上,由于投影机和环幕的安装都不可能精确到分毫不差,并且为了降低成本我们选择了并不支持“镜头平移”功能的商用投影机,所以在进行几何校正时必须纠正这一偏差。

在进行平面投影时,这样的偏差通常由投影机内置的“梯形校正”功能修正,但是在进行环幕投影时必须利用程序解决。这首先是因为投影机的“梯形校正”功能无法达到子像素级的精度,其次也是因为很多投影机仅能进行垂直梯形校正而不能进行水平梯形校正。另外,将所有校正操作都集成在同一的界面中也能大大提升调试效率。

由于投影机与环幕的相对位置、角度所引起的偏差可以通过一次线性变换完成修正。本系统允许用户通过移动四个角点实时地影响修正结果,也即通过四个角点的坐标实时计算出变换矩阵并完成变换。

本方案计算变换矩阵所采用的是Dong-Keun Kim 等人在A Planar Perspective Image Matching using Point Correspondences and Rectangle-to-Quadrilateral Mapping一文中的提出的计算公式,如下(原文公式中的一个小错误在此已修正):

得到变换矩阵后利用HLSL 对于图像进行重取样,只需将IN.UV 与变换矩阵相乘即为新采样坐标。需要强调的是,按照上述公式求出的矩阵M 是将矩形变换至任意四边形的变换矩阵,但由于矫正过程是一个对于渲染结果进行重取样的过程,因此应当直接使用M 而非其逆矩阵M-1。

图3 变换矩形求解公式

3.2.3 非线性变换

目前市场上所能购买到的投影机都是为平面成像设计的,在平面上它们可以投射出4:3 或16:9 的矩形画面(或至少是线性变换后的画面)。但是在环幕或其它非平面投影对象表面,投影机形成弯曲影像是无法通过线性变换修正的,必须通过非线性变换才能使之与投影幕匹配,这是环幕几何校正的核心步骤。

在这里我们假设环幕是理想的圆柱体局部,其矫正过程与相机模型转换过程颇有可借鉴之处。假设用tpc、btc 来定义环幕顶部与底部的弯曲系数,则非线性变换的核心算法如下:

3.2.4 融合带生成

通常所谓的“边缘融合”事实上包含融合带生成和融合带亮度修正两个步骤。为了进行边缘融合,相邻的两个投影画面必须有一定的重叠部分,且重叠部分的画面内容相同,称为融合带。假设左-中和中-右的画面重叠部分宽度分别为edge1和edge2(以原始画面宽度的百分比衡量),则在中间画面生成融合带的核心算法为:

其中IN.UV 是原采样点UV 坐标,sourceMapSampler1至3 分别为左、中、右三张贴图的采样器,texCol 为Pixel Shader 返回的色彩值。

左右两侧融合带的生成算法更为简单,这里就不介绍了。

3.2.5 融合带亮度..修正

融合带亮度修正的目标是使左右两个投影画面的重叠区域与非重叠区域亮度一致,具体实现方法是根据一定的函数曲线将画面亮度沿着融合带逐步降低,产生逐渐变暗的边缘。最简单的函数曲线是从100%到0%的一次函数,但由于绝大多数投影机本身的伽马值在2.2 左右而非1,因此插值曲线应当选择幂函数而非一次函数。

融合带指定位置的纵向亮度增益值y 与该位置的相对水平坐标值x 之间的关系为:

y=xgamma(x ∈[0,1])

为了让融合带的亮度控制更为灵活,本系统依据Paul Bourke 的主张加入了另外两个参数值center 和falloff,用以偏移亮度中心点与控制衰减速度,最终的HLSL 核心代码如下(以左画面为例):

其中IN.UV 是原采样点UV 坐标,edge1 和edge2 表示融合带宽度,falloff、center、gamma 分别表示衰减度、亮度中心偏移量与伽马值,texCol 为Pixel Shader 返回的色彩值。

算法中调用的函数mapping()和multCalc()定义如下:

3.2.6 依序组合所有算法

最后,我们需要将所有的算法按照合理的顺序串联起来,依次执行。每一步算法执行完毕后,其结果都会利用Render to Texture 功能保存在贴图中作为下一步运算的基础。本方案所采用的算法执行流程如下图所示:

图4 算法执行流程

3.3 实际效果测试

根据以上几何校正与边缘融合的思路,本文作者在Quest3D 引擎中开发出了几何校正+边缘融合的模块,并将之与实时渲染的三维程序相结合,测试结果如下:

图5 实际效果测试(仅左眼画面)

经测试,在硬件搭建完毕的情况下几何校正与边缘融合模块一般可以在10 分钟以内完成调试,拼接后的影像清晰锐利,没有明显的拼缝和叠影问题,可以满足绝大部分影视与交互内容的放映需求。

另外,得益于5870 GPU 强大的运算能力,虽然程序运行在3072x1536 这样的超高分辨率下,并且几何校正与边缘融合需要消耗大量的GPU 资源,但程序的流畅度并没有受到严重影响,程序帧速率始终保持在50FPS 以上。当然,测试用的游戏场景并不算太复杂,随着画面复杂程度与精美程度的提高,几何校正与边缘融合运算对运行速度的负面影响应该会逐步显现出来。

4 结论与进一步研究的方向

本文所提出的方法经过实际检验切实可行、效果良好,其优点和缺点都非常明显。

本方法的优点在于,只需一台电脑无需边缘融合机便可实现三通道立体投影,相比较其它方案大幅降低了建设成本,也规避了多台电脑间信号同步的复杂问题。它的缺点在于,由于需要利用GPU 进行大量运算以完成边缘融合和几何校正,因此会消耗可观的运算资源,如果显示的内容是复杂的实时渲染三维场景则帧速率会被显著降低。另外,与使用边缘融合机的方案相比,本方法需与特定的引擎结合使用,并不能做到软件无关性。

在本文的基础上,可以在以下几个方面做进一步的研究与探索。

首先,通过加入网格变形功能模块让像素级的几何校正功能更为灵活,并且能够应对不规则的投影表面变形。

其次,设法提高执行效率,让几何校正与边缘融合所占用的运算资源尽可能少,为主程序留出足够的运算机能。

最后,通过其它开发工具拓展本方法的适用范围,使之与特定引擎无关,实现桌面级的几何校正与边缘融合。

[1]Dong-Keun Kim,Byung-Tae Jang,Chi-Jung Hwang.A planar perspective image matching using point correspondences and rectangle-to-quadrilateral mapping,Proceedings of Fifth IEEE Southwest Symposium on Image Analysis and Interpretation,2002,4:87-91.

[2]Paul Heckbert,Projective Mappings for Image Warping,Fundamentals of Texture Mapping and Image Warping,Master's thesis CS Division,U.C.Berkeley,1989,6:17-21.

[3]Paul Bourke.Edge blending using commodity projectors.http://paulbourke.net/ texture_colour/edgeblend/,2004.

[4]吕冀,汪渤,高洪民.图像失真矫正算法与应用,微计算机信息,2008,12:280-281.

[5]陈子俊.环幕电影系统及其开发利用.影视技术,2000,6:46-47.

猜你喜欢
投影立体校正
解变分不等式的一种二次投影算法
念个立体咒
基于最大相关熵的簇稀疏仿射投影算法
劉光第《南旋記》校正
找投影
立体登陆
一类具有校正隔离率随机SIQS模型的绝灭性与分布
机内校正
炫酷立体卡
一种基于eNode B的主动式频偏校正算法