文章信息
- 吴军, 莫葵梅, 王冰洋, 彭智勇, 马峻
- WU Jun, MO Kuimei, WANG Bingyang, PENG Zhiyong, MA Jun
- 利用改进的S-LUT快速生成计算全息图
- Rapid Generation of Computer Generated Hologram Computation Using Improved S-LUT Technology
- 武汉大学学报·信息科学版, 2019, 44(11): 1685-1692
- Geomatics and Information Science of Wuhan University, 2019, 44(11): 1685-1692
- http://dx.doi.org/10.13203/j.whugis20180026
-
文章历史
收稿日期: 2018-06-19
计算全息通过计算机模拟三维物体在全息面上的复振幅分布(计算全息图)并加载到空间光调制器(spatial light modulator,SLM)上,由再现光在空间上呈现出三维物体真正的三维(3 dimention, 3D)像[1],是一种非常理想的真三维裸眼3D技术,近年来在理论与应用研究方面得到了广泛的重视[2-3]。尽管计算全息在算法与实验设备等方面取得了很大进展,但离实用阶段仍相距甚远,其主要原因在于:三维物体信息量丰富,空间结构复杂,且难以用具体函数描述其物波分布, 导致其全息计算复杂度高,运算量巨大。全息图生成达不到计算全息三维实时显示要求,是亟待解决的关键问题之一[4-6]。
计算全息图(computer generated hologram, CGH)的形成涉及物体表面光源衍射场的计算,目前主要方法可概略分为点源法和面元法两类[1, 7]。点源法需将被记录物体离散成大量的点(光源),并模拟计算所有点发出的光线在全息面上与参考光干涉叠加而获得全息图[4],运算量大,十分耗时。从实时处理角度出发,一系列基于点源法的计算全息优化算法相继被提出,其代表是采用“空间换时间”策略的查找表(look-up tables,LUT)及各种改进算法。通过离线计算单个物点在全息面的贡献, 并按特定结构(三维表格)预先存储,实际生成全息图时仅需根据物体表面位置与查找表间的关联进行简单计算即可[8],但需大量存储空间用于三维表格数据加载。沿着这一思路并通过对点源法计算公式的合理简化,将三维LUT拆分成两个分别存储水平、竖直方向调制因子的二维LUT[9],该分裂查找表(split look-up tables,S-LUT)方式不仅大幅降低了查找表的内存需求,还可提高计算速度,再现三维物体时只需调用两个LUT中的调制因子就能获得全息图;基于夫琅禾费近似原理提出的压缩查找表(compressed-LUT,C-LUT)可进一步节省存储空间[10],但易造成重建图像失真,其原因在于忽略深度信息降低了全息图水平和竖直方向的相位精度;文献[11]提出的三角函数查找表(trigonometric-LUT, T-LUT), 通过在查找表离线计算中引入深度信息可有效减少在线计算复杂度,若采用单精度数据存储,则实际内存占用还可降低一半。
面元法是基于特殊形状均匀面源的频谱有解析解及衍射的角谱理论而形成,其代表是平面波角谱及其改进算法[12-14]。针对由二维表面组成的三维物体,文献[12]基于自定义的二维表面特性函数,利用快速傅里叶变换(fast Fourier transformation,FFT)单独计算每个表面发射光场,并在全息面上进行综合,从而获得全息图,因每个表面仅计算一次FFT,该方法可有效节省时间,但三维物体表面轮廓过于复杂时处理困难;文献[13]直接解析计算普通三角形在全息图平面的频率分布,可避免对每个小面片的FFT计算,算法复杂度仅取决于全息图分辨率和3D模型多边形数目,速度更快,但未考虑表面相互遮挡及隐藏面消除;文献[14]给出了有遮挡的三维表面物体辐射光场数学描述,全息图光场计算时,通过光线跟踪选取特定视角的可视面片,从而达到移除被遮挡面、解决遮挡目的。总体上,因计算时需对复杂物体表面进行面元优化分解、考虑面元遮挡及边界对重建物体形状影响,面元法具有较高的计算复杂度高。文献[15]对三维物体进行分层并计算每层图到全息面的菲涅尔衍射分布,叠加后再通过相干光的干涉得到全息图;文献[16]通过获取三维物体在不同视角的投影图,计算每个投影图对全息面像素的贡献值来获得计算全息图光场,其对光学系统要求较低,白光条件下即可获得真实物体的全息图,但再现像质量受投影图片数量影响大。
点源法三维全息计算原理简单,操作灵活,重建像质量高且具有真三维特性,本文通过改进S-LUT算法以进一步提升点源法的计算性能,为构建基于计算全息的三维显示系统提供参考。
1 S-LUT算法原理如图 1所示,设被记录三维物体与全息图的坐标系分别为O-XYZ和o-xy,坐标轴OX//ox,OY//oy,若三维物体被离散为N个空间点
$ I\left( {{x}_{h}}, {{y}_{h}} \right)=\overset{N}{\mathop{\underset{j}{\mathop{\mathop{\sum }^{}}}\, }}\, {{A}_{j}}\text{exp}\left( \text{i}\frac{2\text{ }\!\!\pi\!\!\text{ }}{\lambda }R \right) $ | (1) |
式中,
由式(1)可看出,点源法存在大量距离(相位)重复计算,且主要为平方、开方、三角函数等耗时的符号运算,传统查找表算法在线运行时虽通过直接地址查找能减少运行时间,但需构建大规模LUT存储离线计算输出的相位信息,所需存储空间达GB量级[1]。为有效降低存储要求,S-LUT算法采用了查找表分裂、降维策略,原理如下[9]。
以规整的空间网格表征物体点,沿网格(空间坐标轴)方向的采样点数分别为NX、NY、NZ,物体空间点数为:
$ I\left( {{x}_{h}}, {{y}_{h}} \right)=\overset{N}{\mathop{\underset{j}{\mathop{\mathop{\sum\limits }^{}}}\, }}\, {{A}_{j}}H\left( \text{ }\!\!\Delta\!\!\text{ }x, {{Z}_{j}} \right)V\left( \text{ }\!\!\Delta\!\!\text{ }y, {{Z}_{j}} \right) $ | (2) |
其中,
式中,
$ I\left( {{x}_{h}}, {{y}_{h}} \right){{|}_{\left( {{X}_{j}}, {{Y}_{j}}, {{Z}_{j}} \right)}}=H\left( \text{ }\!\!\Delta\!\!\text{ }x, {{Z}_{j}} \right)\overset{{{N}_{Y}}}{\mathop{\underset{j=0}{\mathop{\mathop{\sum }^{}}}\, }}\, {{A}_{j}}V\left( \text{ }\!\!\Delta\!\!\text{ }y, {{Z}_{j}} \right) $ | (3) |
因
$ S\left( {{y}_{h}} \right)=\overset{{{N}_{Y}}}{\mathop{\underset{j=0}{\mathop{\mathop{\sum }^{}}}\, }}\, {{A}_{j}}V\left( \text{ }\!\!\Delta\!\!\text{ }y, {{Z}_{j}} \right) $ | (4) |
$ I\left( {{x}_{h}}, {{y}_{h}} \right){{|}_{\left( {{X}_{j}}, {{Y}_{j}}, {{Z}_{j}} \right)}}=H\left( \text{ }\!\!\Delta\!\!\text{ }x, {{Z}_{j}} \right)S\left( {{y}_{h}} \right) $ | (5) |
叠加各列物点复振幅获得最终全息图:
$ I\left( {{x}_{h}}, {{y}_{h}} \right)=\mathop{\sum }^{}I\left( {{x}_{h}}, {{y}_{h}} \right){{|}_{\left( {{X}_{j}}, {{Y}_{j}}, {{Z}_{j}} \right)}} $ | (6) |
由式(4)~(6)可知,S-LUT在线计算的总次数为
本文对S-LUT算法的改进主要有两个方面:(1)改变查找表存储内容,进一步减少在线计算次数,并对在线计算过程进行统一计算设备架构(compute unified device architecture,CUDA)并行加速;(2)实施相位迭代计算,提高离线查找表生成效率。
2.1 在线加速为进一步减少在线计算次数,可考虑存储物点每一列对全息面每一行像素的贡献S(yh),即将式(4)也转化为离线计算,有:
$ S\left( {{y}_{h}}, k \right)=\overset{{{N}_{Y}}}{\mathop{\underset{j}{\mathop{\mathop{\sum }^{}}}\, }}\, {{A}_{j}}V\left( \text{ }\!\!\Delta\!\!\text{ }y, {{z}_{j}} \right)|k~(k=0, 1\ldots {{N}_{x}}-1) $ | (7) |
相应地,以
分析可知,若全息图上每个像素所占空间为M,
根据新查找表数据的存储内容、结构,本文对全息图在线计算部分进行CUDA并行加速,核函数设计为
现有点源法在利用各种离线查找表进行计算全息加速时均未考虑查找表生成效率,从应用上讲应予以统筹兼顾,本文根据文献[17]的相位迭代计算思想,离线生成S-LUT查找表时以加、减替换耗时的平方、开根号运算,可显著提高其计算效率。因S-LUT水平、竖直因子计算形式一样,以
$ \begin{align} & H\left( \text{ }\!\!\Delta\!\!\text{ }x, {{Z}_{j}} \right)=\text{exp}\left( \text{i}k\left( {{Z}_{j}}+\frac{\text{ }\!\!\Delta\!\!\text{ }{{x}^{2}}}{2{{Z}_{j}}} \right) \right)= \\ & \ \ \ \ \ \ \ \ \text{exp}\left( \text{i}{{\theta }_{H}}\left( \text{ }\!\!\Delta\!\!\text{ }x, {{Z}_{j}} \right) \right) \\ \end{align} $ | (8) |
$ \begin{matrix} {{\theta }_{H}}\left( \text{ }\!\!\Delta\!\!\text{ }x, {{Z}_{j}} \right)=k\left( {{Z}_{j}}+\frac{\text{ }\!\!\Delta\!\!\text{ }{{x}^{2}}}{2{{Z}_{j}}} \right)=2\text{ }\!\!\pi\!\!\text{ }\left( \frac{{{Z}_{j}}}{\lambda }+\frac{\text{ }\!\!\Delta\!\!\text{ }{{x}^{2}}}{2\lambda {{Z}_{j}}} \right)= \\ 2\text{ }\!\!\pi\!\!\text{ }\left( {{\theta }_{Z}}+{{\theta }_{X}} \right) \\ \end{matrix} $ | (9) |
式中,
令d表示全息面上像素水平移动距离,则如图 5所示,同一物点在全息面
$\begin{matrix} {{\theta }_{H}}\left( \text{ }\!\!\Delta\!\!\text{ }x+d, {{Z}_{j}} \right)={{\theta }_{Z}}+\frac{\text{ }\!\!\Delta\!\!\text{ }{{x}^{2}}}{2\lambda {{Z}_{j}}}+\frac{\left( 2d\text{ }\!\!\Delta\!\!\text{ }x+{{d}^{2}} \right)}{2\lambda {{Z}_{j}}}= \\ {{\theta }_{H}}\left( \text{ }\!\!\Delta\!\!\text{ }x, {{Z}_{j}} \right)+{{T}_{d}} \\ \end{matrix}$ | (10) |
则当d=1时,有:
当d=2时,有:
当d=n+1时:
以此类推,当d=n时:
${{T}_{n}}={{T}_{n-1}}+{{T}_{1}}+\left( n-1 \right)\Delta $ | (11) |
综合式(8)~(11)可知,同一物点对全息面上某一行像素的衍射相位可迭代计算得到,除首像素外,其余像素的相位计算均为简单的加、减及乘法,故能有效提高H(Δx,Zj)的计算效率,即有:
$\begin{matrix} {{\theta }_{H}}\left( \text{ }\!\!\Delta\!\!\text{ }x+n, {{Z}_{j}} \right)=2\text{ }\!\!\pi\!\!\text{ }\left( {{\theta }_{Z}}+{{\theta }_{X}}\left( \text{ }\!\!\Delta\!\!\text{ }x+n, {{Z}_{j}} \right) \right)= \\ 2\text{ }\!\!\pi\!\!\text{ }\left( {{\theta }_{Z}}+{T_{n}} \right) \\ \end{matrix}$ | (12) |
$H\left( \text{ }\!\!\Delta\!\!\text{ }x+n, {{Z}_{j}} \right)=\text{exp}\left( \text{i}{{\theta }_{H}}\left( \text{ }\!\!\Delta\!\!\text{ }x+n, {{Z}_{j}} \right) \right)$ | (13) |
同理,可迭代计算得到竖直调节因子
本文在PC机(Windows 10操作系统,VS2012编译环境)上实现上述算法,算法验证所需两物体虚拟三维模型由离散点云构成(见图 6),并按要求规整到空间网格:物体1(头像)的采样点数
计算机配置 | 性能参数 |
CPU | Intel Core E5-1620(1 CPU, 4 Cores, 3.70 GHz) |
GPU | NVIDIA Quadro K2000(1 GPU, 384 Cores, 954 MHz, 2 GB) |
内存 | OCZ DDR3(1 866 MHz, 16 GB) |
根据物体采样点数、全息计算参数及§3给出的算法加速策略,本文先通过相位迭代离线计算出查找表数据并存储到硬盘,然后将查找表数据加载到GPU在线计算出振幅型全息图,表 2和表 3分别列出了两测试物体在不同层数下的正面计算全息图生成时间开销。定义查找表生成效率提升度R1=原查找表生成时间/新查找表迭代生成时间-1, 则由表 2和表 3可知,本文算法R1约为1~1.5, 同一物体不同层R1保持稳定, 微小的数值波动源于不同层的物体空间点数存在差异。考虑到本文算法查找表是在原算法竖直调节因子基础上产生, 额外增加了计算开销,则相同表格下相位迭代计算带来的查找表生成效率提升度更高。
层数 | 原查找表生成时间/ms | 原查找表迭代生成时间/ms | 新查找表迭代生成时间/ms | 原算法GPU计算时间/ms | 本文GPU计算时间/ms | GPU效率提升/% | 查找表效率提升/ms |
20 | 811 | 282 | 383 | 271 | 215 | 26.05 | 1.12 |
30 | 1 174 | 388 | 506 | 371 | 304 | 22.04 | 1.32 |
40 | 1 520 | 534 | 662 | 519 | 430 | 20.70 | 1.30 |
50 | 1 746 | 583 | 731 | 644 | 541 | 19.04 | 1.39 |
100 | 3 521 | 1 284 | 1 454 | 1 267 | 1 078 | 17.53 | 1.42 |
150 | 5 316 | 1 950 | 2 221 | 1 877 | 1 627 | 15.37 | 1.39 |
200 | 7 231 | 2 726 | 2 997 | 2 491 | 2 165 | 15.06 | 1.41 |
250 | 8 841 | 3 273 | 3 561 | 3 134 | 2 707 | 15.77 | 1.48 |
300 | 10 699 | 3 878 | 4 218 | 3 750 | 3 259 | 15.07 | 1.54 |
层数 | 原查找表生成时间/ms | 原查找表迭代生成时间/ms | 新查找表迭代生成时间/ms | 原算法GPU计算时间/ms | 本文GPU计算时间/ms | GPU效率提升/% | 查找表效率提升/ms |
20 | 951 | 343 | 495 | 389 | 287 | 35.54 | 0.92 |
30 | 1 394 | 501 | 685 | 555 | 432 | 28.47 | 1.04 |
40 | 1 859 | 683 | 897 | 737 | 572 | 28.85 | 1.07 |
50 | 2 344 | 787 | 1 041 | 904 | 721 | 25.38 | 1.25 |
100 | 4 684 | 1 731 | 2 083 | 1 773 | 1 443 | 22.87 | 1.25 |
150 | 7 099 | 2 657 | 3 002 | 2 632 | 2 163 | 21.68 | 1.36 |
200 | 9 428 | 3 350 | 3 887 | 3 507 | 2 865 | 22.41 | 1.43 |
250 | 11 795 | 4 111 | 4 790 | 4 361 | 3 618 | 20.54 | 1.46 |
300 | 13 745 | 5 091 | 5 691 | 5 256 | 4 332 | 21.32 | 1.42 |
此外,需要指出的是,采用加、减运算生成查找表时更有利于其GPU加速(本文尚未实施),若本文查找表计算GPU加速后能达到常规30倍提升,则其生成时间仅约占全息图在线计算时间的3%~5%,已无需进行离线计算,从而有利于节省存储空间。全息图GPU在线计算方面,定义其效率提升度R2=(原算法GPU计算时间/本文算法GPU计算时间-1)×100%, ,则R2与§2.1给出的理论值相吻合:物体1的R2理论值为300/1 024≈30%,该物体在20层时R2为26%, 随着层数增加,R2提升幅度放缓, 当层数达到150层后趋于稳定在15%左右; 类似地, 物体2的R2理论值为400/1 024≈40%,在20层时R2为35.5%, 随着层数增加,R2提升幅度放缓, 当层数达到150层后稳定在21%左右。
对比表 2和3还可发现, 相同全息面分辨率下, 物体空间点数越多, 改进算法效果越显著, 见图 7和图 8。
本文利用信噪比(signal-to-noise ratio,SNR)对全息图质量进行评估,令
表 4列出了测试物体不同层数下的计算全息图SNR。文献[7]实施相位迭代计算获得的全息图SNR约为50dB,并认为当全息图SNR>30时, 其再现像视觉质量上的差异已难以识别,据此而言,本文算法两测试物体全息图SNR与文献[7]相接近, 且不同层SNR保持稳定(限于篇幅,仅列出50~200层结果),表明本文查找表快速生成方式可保证计算全息图及其再现像的质量。图 9~10分别给出了50层时两测试物体的振幅型计算全息图及其再现像,可见两种方法输出结果在视觉上的差异已难以觉察。表 4同时给出了测试物体再现像SNR,可以看出其值在不同层保持稳定,但大小略低于相应的全息图SNR,原因在于物点空间再现时存在二次衍射噪声,故再现像SNR有所降低。综上所述,本文研究结果表明:
层数 | 数据1 SNR/dB | 数据2 SNR/dB | |||
全息图 | 再现像 | 全息图 | 再现像 | ||
50 | 51.84 | 47.74 | 54.99 | 49.24 | |
100 | 51.86 | 48.115 | 55.09 | 49.98 | |
150 | 51.87 | 47.75 | 55.02 | 49.84 | |
200 | 51.84 | 48.115 | 55.14 | 48.13 |
1) 采用相位迭代计算过程,以加、减替换耗时的平方、开根号运算可大幅提高查找表离线生成效率, 并随物体点数、层数增加而增大。
2) 通过改变竖直调制因子查找表内容为存储物点每一列对全息面每一行像素的贡献,可有效减少S-LUT的全息图在线计算次数,从而提升在线计算效率(不少于15%), 且CUDA并行设计更为简单。
4 结语与利用人眼双目视差或视觉暂留效应的传统3D显示技术相比,计算全息三维显示能提供人眼视觉系统所需的全部深度信息,同时还具有传统光学全息所不具备的低噪声、高重复性及可获得虚拟物体全息图等方面的优点,是一种非常理想的真三维裸视技术,困难在于三维物体全息计算复杂度高、运算量巨大,达不到实时显示要求。本文从在线、离线计算两方面同时对S-LUT算法进行性能提升,在不影响计算全息图及其再现像质量的前提下显著提升计算效率。下一步将对改进的离线查找表生成算法进行GPU加速以使其能达到在线计算时间要求,进一步完善现有算法并将其应用于裸视3D显示系统应用开发之中。
[1] |
Li Junchang. Diffraction Calculation and Digital Holograph[M]. Beijing: Science China Press, 2014. (李俊昌. 衍射计算及数字全息[M]. 北京: 科学出版社, 2014. )
|
[2] |
Ma Jianshe, Xia Feipeng, Su Ping, et al. Survey on Key Techniques and Systems of Digital Holographic 3D Display[J]. Optics and Precision Engineering, 2012, 20(5): 1141-1152. (马建设, 夏飞鹏, 苏萍, 等. 数字全息三维显示关键技术与系统综述[J]. 光学精密工程, 2012, 20(5): 1141-1152. ) |
[3] |
Jia Jia, Wang Yongtian, Liu Juan, et al. Progress of Dynamic 3D Display of the Computer-Generated Hologram[J]. Laser and Optoelectronics Progress, 2012, 49(5): 12-20. (贾甲, 王涌天, 刘娟, 等. 计算全息三维实时显示的研究进展[J]. 激光与光电子学进展, 2012, 49(5): 12-20. ) |
[4] |
Zheng Huadong, Yu Yingjie, Cheng Weiming. Co-mputer-Generated Hologram Calculation for Spatial-Reconstruction of Three-Dimensional Object[J]. Optics and Precision Engineering, 2008, 16(5): 917-924. (郑华东, 于瀛洁, 程维明. 三维物体空间再现技术中的全息图计算[J]. 光学精密工程, 2008, 16(5): 917-924. DOI:10.3321/j.issn:1004-924X.2008.05.026 ) |
[5] |
Javidi B, Tajahuerce E. Three-Dimensional Object Recognition by Use of Digital Holography[J]. Optics Letters, 2000, 25(9): 610-612. DOI:10.1364/OL.25.000610 |
[6] |
Fu Shenghao, Wang Yuanqing, Bao Xuliang, et al. Fast Hologram Generation Based on Parallel Computing[J]. Electronics Optics and Control, 2013, 20(3): 61-64. (付胜豪, 王元庆, 鲍绪良, 等. 基于并行计算的全息图快速生成[J]. 电光与控制, 2013, 20(3): 61-64. DOI:10.3969/j.issn.1671-637X.2013.03.014 ) |
[7] |
Weng J, Shimobaba T, Oikawa M, et al. Fast Recurrence Relation for Computer Generated Hologram[J]. Computer Physics Communications, 2012, 183(1): 46-49. DOI:10.1016/j.cpc.2011.08.015 |
[8] |
Lucente M E. Interactive Computation of Holograms Using a Look-up-Table[J]. Journal of Electronic Imaging, 1993, 2(1): 28-34. DOI:10.1117/12.133376 |
[9] |
Pan Y, Xu X, Solanki S, et al. Fast CGH Computation Using S-LUT on GPU[J]. Optics Express, 2009, 17(21): 18543-18555. DOI:10.1364/OE.17.018543 |
[10] |
Jia J, Wang Y, Liu J, et al. Reducing the Memory Usage for Effective Computer-Generated Hologram Calculation Using Compressed Look-up Table in Full-Color Holographic Display[J]. Applied Optics, 2013, 52(7): 1404-1412. DOI:10.1364/AO.52.001404 |
[11] |
Jiang Xiaoyu, Cong Bin, Pei Chuang, et al. A New Look-up Table Method of Holographic Algorithms Based on Compute Unified Device Architecture Parallel Computing[J]. Acta Optica Sinica, 2015, 35(2): 80-87. (蒋晓瑜, 丛彬, 裴闯, 等. 一种基于新型查表方法的统一计算设备架构并行计算全息算法[J]. 光学学报, 2015, 35(2): 80-87. ) |
[12] |
Matsushima K. Computer-Generated Holograms for Three-Dimensional Surface Objects with Shade and Texture[J]. Applied Optics, 2005, 44(22): 4607-4614. DOI:10.1364/AO.44.004607 |
[13] |
Ahrenberg L, Benzie P, Magnor M, et al. Computer Generated Holograms from Three Dimensional Meshes Using an Analytic Light Transport Model[J]. Applied Optics, 2008, 47(10): 1567-1574. DOI:10.1364/AO.47.001567 |
[14] |
Kim H, Hahn J, Lee B. Mathematical Modeling of Triangle-Mesh-Modeled Three-Dimensional Surface Objects for Digital Holography[J]. Applied Optics, 2008, 47(19): 117-127. DOI:10.1364/AO.47.00D117 |
[15] |
Trester S. Computer-Simulated Fresnel Holography[J]. European Journal of Physics, 2000, 21(4): 317-331. DOI:10.1088/0143-0807/21/4/305 |
[16] |
Shaked N T, Katz B, Rosen J. Review of Three-Dimensional Holographic Imaging by Multiple-Viewpoint-Projection Based Methods[J]. Applied Optics, 2009, 48(34): 120-136. DOI:10.1364/AO.48.00H120 |
[17] |
Matsushima K, Takai M. Recurrence Formulas for Fast Creation of Synthetic Three-Dimensional Holograms[J]. Applied Optics, 2000, 39(35): 6587-6594. DOI:10.1364/AO.39.006587 |