MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); 动态水面数据采集与重建方法
  软件学报  2016, Vol. 27 Issue (10): 2530-2541   PDF    
动态水面数据采集与重建方法
邹玲1,2, 齐越3, 赖舜男4     
1. 北京大学 信息科学技术学院图形与交互技术实验室, 北京 100871 ;
2. 北京电影学院 数字媒体学院, 北京 100088 ;
3. 虚拟现实技术与系统国家重点实验室(北京航空航天大学), 北京 100191 ;
4. 北京大学 信息科学技术学院, 北京 100871
摘要: 自然现象模拟是计算机图形学中的一个重要研究热点.如何快速、逼真地模拟自然现象是此类研究的主要目的.传统的解决思路大多采用基于物理的建模方法,而随着采集设备的快速发展,基于采集图像的重建方法得到了广泛关注与研究.以液体为研究对象,总结了近年来基于采集图像的重建方法的部分研究成果.针对动态水面,提出了一种动态水面数据采集与重建方法.首先,设计并搭建一套基于多相机的动态水面数据采集系统,采集得到多视图下不同水面运动现象的连续帧图像.其次,通过提取采集图像序列中每幅图像的亚像素级特征点,进行特征点匹配并建立特征点与物理空间中三维点的映射关系.然后,结合水介质的光学折射特性迭代求解水面上三维点阵的高度场和法向量.最终获得动态水面的重建结果.实验结果表明,该方法能够快速生成与采集水面可视效果相近的三维重建结果,可在计算机游戏、医学、科学研究可视化等领域具有应用前景.
关键词: 自然现象模拟     动态水面     基于采集图像     数据采集系统     立体折射原    
Method of Dynamic Water Surface Data Acqusition and Reconstruction
ZOU Ling1,2, QI Yue3, LAI Shun-Nan4     
1. Graphics and Interaction Laboratory, School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China ;
2. School of Digital Media, Beijing Film Academy, Beijing 100088, China ;
3. State key Laboratory of virtual Reality Technology and System(BeiHang University), Beijing 100191, China ;
4. School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China
Foundation item: National Natural Science Foundation of China (61232014, 61421062, 61173080, 61472010, 61272348, 61572054); National Key Technology Research & Development Program of China (2013BAK03B07, 2014BAK18B01)
Abstract: Natural phenomena simulation is an important research area in computer graphics domain. How to obtain realistic natural phenomena by simulation in an efficient way is the main purpose of this research field. The physics-based modeling method is a traditional way to solve this kind of problem. Along with rapid development of acquisition devices, the image-based method attracts a lot of research attention and interest. This paper chooses liquid as research object. Main research achievements on the topic of image-based reconstruction are summarized. Focusing on dynamic water surface, a method of dynamic water surface data acquisition and reconstruction is proposed. First, a dynamic water surface data acquisition system is designed and built in order to obtain image sequences of different water surface phenomenon on multi-viewpoint. Next, feature points on each captured images in sequences are extracted. Then after feature point matching process, the mapping relationship between feature points and 3D points are built. Finally, dynamic water surface reconstruction results are obtained by using the height field and normal of 3D point combined with the optical refractive property of water. Experimental results show that this method can generate 3D reconstruction results rapidly. Satisfactory visual effect is also achieved facilitating this application to be used in computer games, visualization in scientific computing, and virtual simulation in medical area.
Key words: nature phenomenon simulation     dynamic water surface     image-based     data acquisition system     principle of stereo refraction    

真实世界中的自然现象丰富多彩, 对自然现象进行真实感模拟和仿真一直是计算机图形学研究的重点, 也是虚拟现实领域研究的重要内容之一[1, 2].如何在数字世界中真实、有效地快速重现此类自然现象成为计算机图形学领域研究人员的热点研究问题之一.对于形态特征时刻快速发生变化的液体建模, 难以用经典的欧几里德几何对其形态进行完整而准确的描述.因此, 液体建模成为近年来计算机图形学领域的研究热点和难点[3].

基于物理的液体建模方法是一种常见的数值模拟方法, 其核心是为了生成一个视觉效果接近真实液体运动状态的模型.此类方法的模拟结果在视觉上和物理上都具有一定的真实感, 但大多计算量较大, 耗时较长.由于相机等光学设备和技术的迅猛发展, 高精度采集设备得到广泛的应用.基于高速相机等设备所采集的数据进行建模或重建的方法成为了活跃的研究热点.真实物体的几何形状、光学属性、运动方式等特征, 由于其自身的不确定性, 往往很难建立精确的数学模型以高效且逼真地进行模拟, 基于采集图像的液体模拟方法则可以很自然地反映这些特征.因为这些特征都可以通过采集设备直接捕捉, 并尽可能完整地保留下来.因此, 基于采集数据的建模方法的计算量相比于基于物理的方法会小很多, 建模效率更高, 速度更快.

基于图像的液体数据采集和建模主要围绕水面、水滴、水柱等的运动展开.其原理是利用采集设备获取满足速度等需求的采集结果, 对所关注的液体现象建模.数据采集与建模方法的难点问题主要是对于描述液体模型所需要的物理参数(如粘度、压力、速度、折射率等)难以在不影响液体运动形态的同时通过采集的方法全部获取.目前, 大多数液体数据采集方法是基于计算机视觉的原理, 利用高速相机拍摄液体运动图像来完成的, 建模结果以满足逼真的视觉效果为主要目标.基于视觉的方法主要存在以下难点.

(1) 由于液体具有半透明性, 表面对光的折射和反射非常复杂, 液体的运动会产生多变的视觉效果, 使得采集结果模糊.为此, 可采用的解决方法主要有两种:一种是利用不透明液体(如液体涂料、牛奶等)作为采集目标, 在表面人为添加特征, 以避免由于半透明性所带来的特征点难以识别的缺点.另一种是简化液体表面的运动, 采用较为简单的运动避免复杂运动所产生的多反射现象, 利用折射原理对表面建模.

(2) 对于某些细节特别丰富的液体现象(如涡流、漩涡等), 其表面运动十分剧烈, 速度场也会快速发生变化.利用折射原理对此类表面建模需要跟踪底部的标志物, 但标志物的精细度难以满足描述如此丰富细节的表面, 且剧烈的水面运动使得采集图像中的标志物模糊、缺失、破碎而无法精确跟踪.

本文以动态水面为研究对象, 针对动态水面的模型变化特征, 设计并实现了一种动态水面数据采集与重建方法.通过预先设置标志物的方法为液体添加特征, 利用高速相机获取特定水面运动图像序列, 最终可以快速恢复出此类动态水面的三维几何模型.

1 研究现状

基于采集图像的液体模拟方法主要围绕水流、水滴、水柱、水面等的运动展开.其原理是利用采集设备获取满足速度等需求的采集结果, 对所关注的液体现象建模.数据采集与建模方法的难点问题主要是对于描述液体模型所需要的物理参数(如粘度、压力、速度、折射率等)难以在不影响液体运动形态的同时通过采集的方法全部获取.目前, 大多数液体数据采集方法是基于计算机视觉的原理, 利用高速相机拍摄液体运动图像来完成, 建模结果以满足逼真的视觉效果为主要目标.此类方法的主要难点包括液体的半透明性和表面细节等, 可通过借助人为添加标志物来减少液体半透明性所带来的问题.预置标志点主要有两方面的作用:一是人为设定过程中具有已知的在某一特定世界坐标系中的准确坐标位置; 二是可以快速匹配多台相机中相同世界坐标的点.

利用液体折射原理可采集获取水面的结构信息.获取折射物体的表面信息很复杂, 尤其是难以得到相关的细节, 为了将问题简化, 可只考虑获取折射面的信息, 此时, 物体的折射率必须是已知的, 且折射介质应是均匀的.对折射介质早期的研究是Hohle[4]对水下物体的重建.之后, Maas[5]也做过类似的研究, 通过在水面下或者水面之外放置一个相机, 然后分析处理拍摄的图像来重建水下物体, 而不是直接对水进行建模.此类水下物体重建的研究为以后液体数据采集及建模研究提供了可借鉴的经验:折射后图像的处理方法可采用Bundle adjustment[6]方法.在如何获取折射表面信息这一问题上, 可根据变形图像获取其初始形状.难点在于物体的折射率与表面法向量都会影响到光线的折射.因此该方法一般用于获取单次折射表面的整体特征.

Murase等人[7, 8]首先利用液体的折射特征来重建物体表面.他将一台相机正交地放在一个装满干净的水的水箱上方, 在水箱底部放置一块已知的图案作为标志物, 如图 1所示.当水面发生动态变化时, 相机能够获取一系列的扭曲后的图样图像, 然后使用光流法[9]分析这些图像.在图像序列中, 各个像素的平均值轨迹可以模拟水面运动的轨迹.再将图像序列的每一帧中每一个像素的梯度信息整合到表面信息中, 可以得到可缩放的模拟水面.由这一过程可以发现, 折射率以及折射表面与图样的距离会对恢复结果造成直接影响.

Fig. 1 Sketch of Murase's acqusition principle[7] 图 1 Murase的采集原理示意图[7]

Morris等人[10, 11]实现了随时间变化的动态水面重建方法, 如图 2中左图所示, 使用两台相机搭建了立体采集环境, 用固定的图案(棋盘格)作为标志物.可以解决单相机采集过程中的二义性问题[12].另外, 它可以通过精确计算每个像素的深度与法向量信息来推断得到液体表面, 所以可求解未知折射率的折射表面, 这种方法并不依赖于水的平均表面, 在解决消失表面的问题时同样具有鲁棒性.

Fig. 2 Sketch of Morris's acqusition principle[10] 图 2 Morris的采集原理示意图[10]

为了解决相机在拍摄过程中由于反射折射等原因导致的特征扭曲甚至模糊等现象, Ding等人[13]设计了一套由相机阵列组成的采集系统, 如图 3中左图所示.9台相机分为两组, 轮流拍摄(如图 3中右图所示), 可以大幅度成倍地提高相机的帧率.实验中, 由于遮挡或折射等原因, 会出现拍摄图像特征扭曲或模糊的现象.若某一时刻, 多台相机中的个别相机出现拍摄图像扭曲或模糊等问题, 则可以使用其他正常相机拍摄的图像对问题相机的扭曲区域进行校正并反求出扭曲点在问题相机中原始的正确位置, 以保证多台相机可以在整个拍摄过程中正确地完成特征点的匹配与追踪.

Fig. 3 Sketch of Ding's acqusition principle[13] 图 3 Ding的采集原理示意图[13]

以上几种基于图像的水面重建方法均以水面折射原理为理论基础.Murase等人的方法因采集过程中只使用一台相机, 因此会产生二义性的问题, 恢复的水面并不能保证与真实采集水面相同.Morris等人的方法在采集过程中利用环境光, 当光线较暗时, 会产生拍摄图像中角点的模糊、阴影等现象而导致图像无法使用.Ding等人的方法采用相机阵列采集系统以弥补相机采集速度的不足, 实际操作中需要处理相机摆放、设置、同步等一系列问题, 操作较为繁琐.

2 动态水面数据采集

为了准确记录动态水面的变化过程并以高效、易用为主要目标, 我们研制了一套动态水面数据采集系统.本节主要介绍该系统的硬件组成、系统搭建方法、数据采集过程以及采集后的数据处理方法.

2.1 采集系统构建

为了记录连续的随时间变化的水面运动情况, 我们设计并搭建了动态水面数据采集系统, 如图 4所示.硬件组成主要有以下几个部分.

Fig. 4 Acqusition system for dynamic water surface 图 4 动态水面数据采集系统

(1) 高速相机:本系统使用了若干Adimec公司生产的型号为OPAL-1000c/Q, 接口是CameraLink的高速相机, 如图 5中左图所示.该相机最高设计采集帧率可达120帧/秒, 单帧采集图像(灰度值范围为0~255的灰度图像)的分辨率为1024×1024.每个相机固定在各自成像区域可以完全覆盖整个采集水面范围的位置上, 且相机距离水缸的垂直距离需要控制在100 cm~150 cm的范围内; 各个相机间的水平距离大约控制在50 cm的范围.采集过程中, 相机通过数据连接线接收来自采集服务器端的拍摄触发信号, 采集并传输每一帧图像到采集服务器端进行存储.利用相机控制软件, 可以调整相机的快门时间、光圈大小、采集帧率以及图像属性等, 以满足不同的实验环境下的实验条件.

Fig. 5 High-Speed camera and high-speed image acquisition board 图 5 高速相机和高速采集卡

(2) 高速采集卡:本系统采用IO Industries公司生产的DVR Express SAS图像采集卡, 如图 5中右图所示.高速采集卡是相机触发和采集数据存储的核心部件, 每一块高速采集卡可以最多同时控制4台相机, 它通过PCI-E接口与相机相连, 可以快速高效地存储数据并保证采集图像不会丢失.本系统所使用相机之间的同步是由高速采集卡上的信号发生器实现的.信号发生器产生信号触发多台相机进行同步拍摄与数据传输.

(3) 光源:实验中光源需满足的要求主要包括:(a) 光源强度需保证在30帧/秒的采集帧率下, 相机成像才会清晰而明亮; (b) 光源强度需在整个采集过程中保持一致, 不能在采集图像不同帧之间出现闪烁或明暗变化; (c) 点光源、线光源直射水面会引起明显的水面反射以及玻璃缸壁反射现象, 从而导致采集图像中出现干扰图像角点检测的高光区域, 因此需要避免此类光源的直射, 选择亮度均匀的环境光作为光源.通过多次实验, 我们发现室内普通日光灯光照亮度即可满足要求, 但需避免日光灯直射水面和玻璃缸壁.若光源强度不能满足条件(a), 则可以采用一台柔光箱摄影灯(如图 6中左图所示)为采集区域增强亮度.由于柔光箱摄影灯的原理是能够在普通光源的基础上通过一两层的扩散, 使原有光线的照射范围变得更广, 使之成为漫反射光.因此其发出的光非常柔和, 拍摄时可以消除图像上的光斑、阴影以及高光, 在保证亮度的同时满足了本系统对光源的要求.

Fig. 6 Softbox photography light, chessboard and water tank 图 6 柔光箱摄影灯、黑白棋盘格和玻璃水缸

(4) 模式板(pattern board):模式板设计需要满足辨识度高、特征明显的设计需求.由于黑白棋盘格的色彩简单且以角点作为特征点易于识别, 可以满足模式板的要求.实验中我们采用经过防水设计的黑白棋盘格(如图 6的中图所示)进行相机标定以及水面数据采集过程.利用黑白棋盘格为透明液体人为增加特征点以便于图像特征的提取.黑白棋盘格中的小格数量过多, 会导致由于运动的水面扭曲、遮挡等而产生的角点识别不准确的问题; 而小格数量过少则会导致特征点不足难以恢复水面的问题.本系统使用的黑白棋盘格的各个小格边长为1 cm, 共计24×39个小格.经过多次实验, 在水面高度1 cm~2 cm且水面运动非剧烈的情况下的采集图像可以满足后续算法的要求.

(5) 水缸:实验所使用的盛水容器(如图 6中右图所示)为侧壁高度20 cm, 底面边长50×50 cm2的玻璃水缸.实际采集水面运动过程中, 盛水高度一般控制在1 cm~2 cm.黑白棋盘格需紧贴在玻璃水缸底部内壁上并确保水面运动时不会发生移动, 以保证世界坐标系的唯一性.

2.2 数据采集

动态水面数据采集过程主要包括相机标定和水面运动采集两个部分.

本文采用了张正友[14]的相机标定方法.实验中, 我们采用OpenCV提供的相机标定函数进行计算.标定过程与后续动态水面图像采集时使用相同的黑白棋盘格, 以减少标定结果与重建结果出现误差的概率.具体操作过程是:首先, 固定好每台相机的位置; 然后, 在未放置水缸前每台相机各自拍摄24幅不同角度的黑白棋盘格图像; 再次, 摆放好水缸并各台相机同时拍摄一幅图像未注水前的棋盘格图像.最后, 将每一相机拍摄的这25幅黑白棋盘格图像作为相机标定函数的输入图像.该相机标定方法中的角点检测结果准确与否将在很大程度上影响最终相机标定结果的精度.最终获得每台相机的内部参数与外部参数(外部参数以最后拍摄的一幅图像为参考建立世界坐标系).经验证, 相机标定结果可以保证精度达到亚像素级, 标定误差可以控制在一个像素以内(标定误差与棋盘格边长比约为5%), 避免了因标定不准确所导致的后续模型重建结果的精度缺失以及错误的问题.

采集动态水面运动前, 将防水处理后的黑白棋盘格紧贴在玻璃水缸内的底部(与水直接接触的一侧)中心位置, 以避免除水以外的其他材质(如玻璃等)发生多余折射.相机固定在与水平面成60°~90°夹角, 垂直高度约为100 cm~150 cm的位置上, 调整相机光圈、焦距以及朝向, 保证棋盘格恰好位于相机成像区域中心位置并在保证水面完整覆盖的前提下占据尽量多的图像空间.我们采集的水面运动状态主要有:水滴滴入水面、微风拂过水面等.采集水面运动前, 先将水缸中注入高度约为1 cm~2 cm的清水(有固定且已知的折射率).采集过程中不能移动水缸, 以保证世界坐标系全程保持不变.制造的水面运动现象若过于剧烈, 会使得缸底的黑白棋盘格无法在图像中准确识别而导致后续恢复水面模型具有较大的误差; 若过于缓和, 则会使得后续恢复的表面运动过于轻微而导致肉眼难以识别.另外, 为了获得较好的采集结果, 数据采集的过程需要在相机性能、多相机同步、光源设置、数据传输与存储速度、棋盘格摆放等方面满足一定要求.

实验中我们设置相机的采集频率为每秒30帧, 所采集到的图像是分辨率为1024×1024的256位灰度图像序列.图 7图 8展示了部分采集真实数据的样例.

Fig. 7 Acqusition results of ring ripple 图 7 圆环状波纹采集结果

Fig. 8 Acqusition results of bar ripple 图 8 条形波纹采集结果

2.3 水面特征提取

利用动态水面数据采集系统采集得到以黑白棋盘格为参照物的图像序列.为了从图像中得到动态水面的特征信息, 就需要进行特征点(黑白棋盘格角点)的检测与匹配.我们选择基于图像灰度变化的角点检测方法, 其中, Harris角点检测方法是其典型代表.该方法对角点的直观定义是在水平和竖直两个方向上灰度梯度变化均较大的点, 且角点处的梯度不连续.其检测结果具有较好的准确性和鲁棒性.Harris角点检测算子由公式(1)给出.

$ M = \sum {w(x, y)} \left[{\begin{array}{*{20}{c}} {\sum {I_x^2} }&{\sum {{I_x}{I_y}} }\\ {\sum {{I_x}{I_y}} }&{\sum {I_y^2} } \end{array}} \right] \to {R^{ - 1}}\left[{\begin{array}{*{20}{c}} {{\lambda _1}}&0\\ 0&{{\lambda _2}} \end{array}} \right]R $ (1)

其中, M是一个2×2的矩阵, 由图像的导数计算求得; IxIy分别是图像沿xy方向的灰度梯度; $w(x, y) = \frac{1}{{2{\rm{\pi }}{\sigma ^2}}}{{\rm{e}}^{ - ({x^2} + {y^2})/2{\sigma ^2}}}$为高斯函数, 对矩阵中的4个元素进行高斯平滑滤波以减少噪声的影响.R可看成是旋转因子, 经角化处理后, 将两个正交方向的变化量分量提取为特征值λ1, λ2, 由于角点处的λ1, λ2均较大, 则有角点反映函数如公式(2)所示:

$ R = \det (M) - k \times trace{(M)^2} $ (2)

其中, det(M)=λ1×λ2; trace(M)=λ1+λ2; k为常数, 一般取值为0.04~0.06.R的值取决于M的特征值, 角点处R的值应是局部最大值.因此, 当计算某个像素的角点相应函数值大于预先设定的阈值时, 则视该点为所检测的角点.

Harris算子是一种简单、有效的点特征提取算子, 其优点主要有:计算简单, 只需用到灰度的一阶差分和滤波; 提取的点特征均匀合理; 具有较高的稳定性和鲁棒性, 对图像旋转、灰度变化、噪声影响和视点变化不敏感.Harris算子的局限性主要表现在:对尺度敏感, 且不具有尺度不变性; 只能检测像素级角点坐标.像素级的角点坐标一般难以满足动态水面建模的需求, 因此, 需要研究可获得亚像素级精度的角点检测算法, 以提高建模精度.为了得到角点亚像素级位置, 我们采用插值的思路, 将角点反映函数R(x, y)用二次多项式表示.通过求解二次多项式来获得取极值时R的精确位置.公式(3)给出反映函数R(x, y)的二次多项式形式.

$ R(x, y) = a{x^2} + b{y^2} + cxy + dx + ey + f $ (3)

假设用Harris角点检测方法已检测得到像素级角点(x, y), 利用与其相邻的8个像素点的坐标值可以建立一个含有abcdef这6个未知量(二次多项式中的参数)的超定方程组.对该方程组运用最小二乘法可得最小二乘解.待求的亚像素级角点坐标对应的是二次多项式的极大值点.为此, 我们对公式(3)进行求导运算, 以计算待求坐标点值:

$ \left\{ {\begin{array}{*{20}{c}} {\frac{{\delta R}}{{\delta x}} = 2ax + cy + d = 0}\\ {\frac{{\delta R}}{{\delta y}} = 2by + cx + e = 0} \end{array}} \right. $ (4)

假设待求角点的精确位置是q, 其邻域内一点为p, 则p点处的图像灰度梯度应与从q点指向p点的向量垂直, 正交的两向量点积应为0.但考虑到噪声的存在, 这两个向量的点积可能存在一定误差:

$ \varepsilon = \nabla {I_P} \times (q - p) $ (5)

其中, ∇IPp点处的灰度梯度; q点的值是当ε取值最小时的坐标.之后, 我们将像素级的Harris角点领域内的np点的可能坐标值联立方程组.由此, 求解q点的问题即可转变为求解x使Ax-b最小化的问题.其中, A是由np点的灰度梯度∇IP组成的n×2矩阵, b为∇IP构成的n×1的列向量, 当x=(ATA)-1ATb时, 可使$\left\| {\left. {Ax - b} \right\|} \right.$范数最小.为了保证角点检测的准确性和精度满足要求, 可以利用更新后的q点邻域内其他的点, 继续利用公式(5)进行迭代求最小值, 最终获得亚像素级的角点坐标q.如图 9所示为亚像素级特征点提取结果.

Fig. 9 Result of connor detection 图 9 角点检测结果

3 动态水面重建

水面重建算法以立体折射原理为理论依据, 使用不同相机在多个视角下获取的图像序列的特征点信息以及标定所得的相机内外参数作为算法输入, 最终利用输出的水面高度场和法向量场信息, 恢复水面模型.

3.1 立体折射原理

光线折射原理如图 10左图所示.假设已标定的某一台相机CameraA在世界坐标系中的坐标记作PCA.该相机获取的单帧图像中的某一个像素二维坐标记作PI.同时, 该像素PI对应的是置于水下的黑白棋盘格上的三维点坐标, 记作QI.折射发生在不同介质的交界处, 我们将发生水面折射的折射点三维坐标记作p, 该点的法向量为np.折射点位置和该点的法向量就是我们需要求解的结果.此时, PCAp构成入射光线ωi, ωi与法向量np的夹角记作入射角α; pQI构成折射光线ωo, ωo与法向量np的夹角记作折射角β; 液体折射率为r.

Fig. 10 Principle of light refraction and its ambiguity 图 10 光线折射原理与二义性

物理学中光的传播过程遵守斯涅尔法则(Snell’s Law), 因此可以得到如下约束.

a) ωiωo共面;

b)  $\frac{{Sin\alpha }}{{Sin\beta }} = r.$

由以上约束可将图像空间的点PI、三维空间的点QI和水面折射点p之间建立起映射关系, 即对于已知的PIQI两点, 计算水面折射点处的表面法向量np.p点的位置可由水面距水底的距离d表示, 构造方程中PIQI作为输入数据, npd则是目标函数.可以看出, 当dωi方向上平移取值时, 每个d值都可以找到与之对应的np值, 即存在一组dnp的解对.显然, 在单一相机采集的真实数据下, 无法计算得到关于dnp的确定解.Sanderson等人在进行相关研究时首先发现了距离与法向量二义性的问题[12], 如图 10中右图所示, 已知PIQI, 在不同的水面高度值下都有可能得到满足条件的dnp的解.为了解决这种二义性, 可以采用其他相机所采集的真实数据来辅助计算.我们通过对其他视角下采集得到的真实数据进行计算, 验证之前单一相机计算结果中d-np对的真实性在其他视角下是否依然满足上述约束.如果是的话, 则说明这个结果是可信的, 否则, 不可信.这也是采用多台相机采集真实水面数据的基本原理.当使用多台相机进行同步采集时, 多个成像平面组成了立体折射模型, 每一个折射点都位于不同折射平面的交线上.分别在各个视角的图像中找到PIQI, 每个视角对应图像中的一组PIQI都可以确定一组d-np值.通过建立不同视角之间特征点的映射关系, 找到各组d-np值解空间中的唯一共同解, 即为水面上的点, 并在各个视角内成像结果都符合同样的物理规律.

3.2 水面重建算法原理

我们以两台相机所采集的真实水面数据作为输入为例.设两台相机为CameraACameraB, 分别拍摄置于未注水的水缸缸底的棋盘格, 可以得到的两张图片, 分别记作I0AI0B.根据已知的相机内外参数矩阵, 可以找到各个棋盘格角点所对应的图像像素, 作为之后运动水面采集图像的初始对照图像.

在采集运动水面的过程中, 设在某一特定时刻两台相机分别拍摄缸底的棋盘格, 可以得到两张图片, 分别记为I1AI1B.同样, 根据相机参数, 可以找到各个棋盘格角点对应的图像像素.此时, 在水面运动不剧烈时, 即图像中各个角点可以正确识别的前提条件下, 作为参照图像的I0A中的各个角点(经过插值后可以是各个像素)都可以找到其在I1A中对应的角点(对应的像素).同理, I0BI1B也存在类似的对应关系.

利用拍摄图像恢复水面模型的过程, 实际上就是利用一台相机在某一特定时刻的图像以及另一台相机中的对应图像, 找到逐个像素的映射关系, 并且针对每对互相映射的像素求解它们对应的真实运动水面三维点的高度和法向量, 并在完全求解之后进行适当插值和其他优化的过程.

图 11所示, 设角点P0AP1A为图像I0AI1A中的一对互相映射的角点, 由于已经标定得到了相机的内外参数矩阵, 且已知在无水的情况下光线未发生折射现象, 则容易求得像素I1A对应于棋盘格上的点Q.显然, I0A也是映射到该点; 再由相机位置PCA、像素I1A在无水情况下对应的三维点位置Q(位于缸底, 高度值为0)可知, 存在一条光线在水面上经过折射, 而折射点位于由相机位置PCA、三维点Q确定的这条直线上.设折射点为p, 则相机位置PCA、折射点p和三维点Q确定了一条光线传播路径L1.

Fig. 11 Principle of stereo light refraction 图 11 立体折射原理

由单一相机采集结果的二义性分析可知, p点实际上并不是确定的点.在单个相机拍摄的图像中, p点有一个备选集合, 且这些点一定都位于由相机位置PCA、三维点Q所确定的这条直线上.

为了确定折射点p的确切位置, 我们任取集合中的一个点p, 求它在相机CameraB拍摄图像中的对应像素, 假设此点是P1B.显然, P1B并不一定在图像I1B的角点上, 因此需要通过插值求其所对应的水平面上的三维点位置.具体方法是:在I1B中找到距离P1B最近的4个角点, 这时P1B应位于这4个角点围成的四边形内或者是边缘上.由I1BI0B的对应关系, 与P1B相对应的P0B也应位于这4个角点分别对应的中的4个角点所围成的四边形中或边缘上.至此, 通过双线性插值或者其他插值方法可以得到P1B, 于是也就得到了其所对应的水平面上的三维点, 记作Q′.这时, 由相机位置PCB、折射点p、三维点Q′可以得到又一条折射光线L2.

根据已知水的折射率, 可以分别求得光线传播路径L1上折点p处的法向量n1和对应光线传播路径L2上折点p处的法向量n2.将n1和n2进行对比, 若二者不相同, 说明这个p点并非实际水面上的点; 若二者相同, 则可以确定求得的点p位于真实水面上.

由于实际采集等操作中存在各种误差, 直接比较n1和n2是否相等并不能说明问题, 尤其在水面高度较低、折射现象并不明显的时候, 误差会明显增大.这时, 可以采用交换法向量的方法, 即设n1为L2p点处的法向量, n2为L1p点处的法向量.据此假设计算QQ′的位置, 并与实际测量的位置进行比较, 这种方法要比直接比较n1和n2更加稳定, 受外在环境等条件的影响也比较小.对某一时刻的两张图像中所有对应像素重复上述过程就可以得到该时刻的水面三维点位置和法向量, 对相机拍摄得到的整个图像序列上的图像对做上述计算可以恢复整个运动过程中各个时刻的水面模型.图 12展示了对单个特征点求解其三维信息的基本流程.其中的关键步骤包括空间映射关系的建立和体素剔除过程.

Fig. 12 Process of computing 3D information for single feature point 图 12 求解单个特征点对应三维信息的流程

3.3 水面重建算法实现

水面重建算法步骤如下:

首先输入采集图像序列, 抽取多视图中的同一时刻下的图像组, 如果输入帧为第1帧, 则根据Harris角点检测方法提取特征点, 并建立该图像组中数据在图像空间上的映射关系(特征匹配), 否则, 根据前继帧的特征提取结果检测该帧图像数据的特征并建立映射关系, 再根据前继帧的求解结果确定当前帧的搜索初值以及解空间的搜索范围, 根据动态水面折射模型, 计算当前值是否为解, 按照一定步长, 不断更新搜索值, 迭代求解直至得到解空间中的最优解.对序列中的每一组图像进行上述求解计算, 最终可以得到建模结果.

4 实验结果与分析

根据第3.3节所分析的详细算法流程, 我们以采集得到的几组数据作为输入.利用水面重建算法, 得到了如下建模结果.其中, 图 13显示了重建算法所得到的水面法向量与高度场的求解结果.图 13左图所示为水面特征点法向量的求解结果, 图 13右图所示为水面特征点高度场的求解结果.图 14展示了单滴水滴落入水面的某3个时刻的恢复后的水面高度场.从图中可以看出, 利用本文算法得到的水面高度场与实际水面运动情况基本相同.

Fig. 13 Height field and normals of water surface 图 13 水面高度场与法向量

Fig. 14 Reconstructed height field of water surface 图 14 恢复的水面高度场

从单帧图像的重建结果可以看出, 本文的算法可以较好地得到水面点阵的高度值和对应法向量信息(以颜色表示不同高度值和不同的法向量), 根据高度值以及法向量均可以恢复出水面的三维模型, 但相对于法向量的值, 高度场对于重建结果的噪声影响更大, 往往采用法向量结果来计算水面三维模型可以更好地去除噪声.

图 15(a)~图 15(d)分别显示的是单滴水滴落入平静的水面之后形成的环状波纹以及波纹向四周散开的过程.通过对连续帧的运动水面重建, 可以验证本文算法能够很好地表现出水面的动态变化过程.

Fig. 15 Reconstruction result of water drop 图 15 水滴现象重建结果

为了评估本文基于采集数据的水面重建方法, 我们开发了水面绘制平台来模拟一个虚拟的场景, 该场景尽可能地近似于实验室的采集环境条件, 可从多角度、不同光源情况下观测基于图像的水面重建后的绘制结果.图 16展示了单滴水滴从水缸的一角落入水面的场景, 直到水面渐渐趋于平缓.从这6个时刻的水面运动视觉效果可以看出, 本文基于采集数据的水面重建方法可以准确地完成动态水面的重建.

Fig. 16 Water surface reconstruction results 图 16 水面重建绘制效果

5 总结

液体作为自然现象的重要组成部分, 对液体的真实感模拟与仿真成为计算机图形学的研究热点.本文总结了近些年基于采集图像的液体模拟的主要研究方法与成果.以动态水面为研究对象, 针对其变化特征, 设计并实现了一种动态水面数据采集与重建方法.该方法主要包括两个步骤:数据采集与模型重建.首先, 设计并搭建了动态水面数据采集系统.该系统可以获得多视角下水面运动的图像序列.然后, 利用图像序列中提取的特征点, 并结合立体折射原理, 可以快速恢复出此类水面运动形态的三维模型.实验结果表明, 该方法针对可采集的水面运动现象, 可真实、快速地重建三维模型.但对于可采集现象较为局限这一问题, 将来的研究方向将集中在如何利用更先进的采集设备及利用其他辅助手段以获得更为丰富的水面运动现象.

参考文献
[1] Zhao QP. Review on virtual reality. Science China:Series F, 2009, 39 (1) :2–46(in Chinese with English abstract). http://www.cnki.com.cn/Article/CJFDTOTAL-PZKX200901003.htm
[2] Zhao QP. Data acquisition and simulation of natural phenomena. Science China:Series F, 2011, 41 (4) :385–419(in Chinese with English abstract). [doi:10.1007/s11432-011-4210-2]
[3] Zou L, Qi Y, Zhao QP. Review on liquid acquisition and modeling techniques. Journal of Computer Research and Development, 2013, 50 (11) :2472–2480(in Chinese with English abstract). http://www.cnki.com.cn/Article/CJFDTOTAL-JFYZ201311029.htm
[4] Hohle J. Reconstruction of the underwater object. Photogrammetic Engineering and Remote Sensing, 1971, 37 (9) :948–954.
[5] Maas H. New developments in multimedia photogrammetry. Optical 3D Measurement Techniques, 1995, 8 (3) :150–155. https://tu-dresden.de/bu/umwelt/geo/ipf/photogrammetrie/ressourcen/dateien/forschung/publikationen/pubdocs/1999-und-aelter/1995_Maas_multimed.pdf
[6] Triggs B, Mclauchlan P, Hartley R, Fitzgibbon W.Bundle adjustment-A modern synthesis.In:Triggs B, ed.Proc.of the Vision Algorithms'99.LNCS 1883.Berlin:Springer-Verlag, 2000.298-372.[doi:10.1007/3-540-44480-7_21]
[7] Murase H.Surface shape reconstruction of an undulating transparent object.In:Radiometry.Sudburg:Jones and Bartlett Publishers, Inc., 1992.313-317.
[8] Murase H. Surface shape reconstruction of a nonrigid transport object using refraction and motion. IEEE Trans.on Pattern Analysis and Machine Intelligence, 1992, 14 (10) :1045–1052. [doi:10.1109/34.159906]
[9] Horn B, Schunck B. Determining optical flow. Artificial Intelligence, 1981, 17 (81) :185–203.
[10] Morris N, Kutulakos K.Dynamic refraction stereo.In:Proc.of the 10th IEEE Int'l Conf.on Computer Vision.Washington:IEEE Computer Society, 2011.1573-1580.[doi:10.1109/ICCV.2005.79]
[11] Morris N.Image-Based water surface reconstruction with refractive stereo[Ph.D.Thesis].Toronto:University of Toronto, 2004.
[12] Sanderson A, Weiss L, Nayar S. Structured highlight inspection of specular surfaces. IEEE Trans.on Pattern Analysis and Machine Intelligence, 1988, 10 (1) :44–55. [doi:10.1109/34.3866] http://ieeexplore.ieee.org/xpl/abstractkeywords.jsp?reload=true&arnumber=3866
[13] Ding YY, Li F, Ji Y, Yu JY.Dynamic fluid surface acquisition using a camera array.In:Proc.of the IEEE Int'l Conf.on Computer Vision.Washington:IEEE Computer Society, 2011.2478-2485.[doi:10.1109/ICCV.2011.6126533]
[14] Zhang ZY. A flexible new technique for camera calibration. IEEE Trans.on Pattern Analysis and Machine Intelligence, 2000, 22 (11) :1330–1334. [doi:10.1109/34.888718]
[1] 赵沁平. 虚拟现实综述. 中国科学:F辑, 2009,39 (1) :2–46. http://www.cnki.com.cn/Article/CJFDTOTAL-PZKX200901003.htm
[2] 赵沁平. 自然现象的数据获取与模拟. 中国科学:F辑, 2011,41 (4) :385–419. [doi:10.1007/s11432-011-4210-2]
[3] 邹玲, 齐越, 赵沁平. 液体采集与建模技术综述. 计算机研究与发展, 2013,50 (11) :2472–2480. http://www.cnki.com.cn/Article/CJFDTOTAL-JFYZ201311029.htm