Fast precalculated triangular mesh algorithm for 3D binary computer ...

122 downloads 0 Views 768KB Size Report
Dec 10, 2014 - Fan Yang, Andrzej Kaczorowski, and Tim D. Wilkinson* ... A new method for constructing computer-generated holograms using a precalculated ...
Fast precalculated triangular mesh algorithm for 3D binary computer-generated holograms Fan Yang, Andrzej Kaczorowski, and Tim D. Wilkinson* Centre of Molecular Materials for Photonics and Electronics, Engineering Department, University of Cambridge, 9 JJ Thomson Avenue, Cambridge CB3 0FA, UK *Corresponding author: [email protected] Received 21 October 2014; revised 18 November 2014; accepted 18 November 2014; posted 19 November 2014 (Doc. ID 225332); published 5 December 2014

A new method for constructing computer-generated holograms using a precalculated triangular mesh is presented. The speed of calculation can be increased dramatically by exploiting both the precalculated base triangle and GPU parallel computing. Unlike algorithms using point-based sources, this method can reconstruct a more vivid 3D object instead of a “hollow image.” In addition, there is no need to do a fast Fourier transform for each 3D element every time. A ferroelectric liquid crystal spatial light modulator is used to display the binary hologram within our experiment and the hologram of a base right triangle is produced by utilizing just a one-step Fourier transform in the 2D case, which can be expanded to the 3D case by multiplying by a suitable Fresnel phase plane. All 3D holograms generated in this paper are based on Fresnel propagation; thus, the Fresnel plane is treated as a vital element in producing the hologram. A GeForce GTX 770 graphics card with 2 GB memory is used to achieve parallel computing. © 2014 Optical Society of America OCIS codes: (070.0070) Fourier optics and signal processing; (090.1760) Computer holography; (100.6890) Three-dimensional image processing; (200.0200) Optics in computing; (250.0250) Optoelectronics. http://dx.doi.org/10.1364/AO.53.008261

1. Introduction

A conventional 2D display can no longer meet the demands of modern everyday usage, because people would like to see more realistic images as part of their entertainment. Hence, commercial products, such as 3DTV [1], 3D mobile phones [2,3], and even 3D game consoles [4], are being developed. Most current commercial 3D technologies exploit human’s binocular disparity and make both eyes to focus at the same point out of the display plane, passively using 3D glasses. This is known as stereoscopic display technology. This method can produce a high-quality 3D image, but the use of glasses makes it less flexible. In order to fix such a limitation, autostereoscopic displays [5,6] have been developed, where microlenses [7] or parallax barriers [8] are used to replace glasses. All of these 3D technologies described above 1559-128X/14/358261-07$15.00/0 © 2014 Optical Society of America

can cause visual fatigue due to a mismatch between accommodation and convergence. The earliest successful and popular example of a 3D display is known as “Pepper’s Ghost,” which was first shown in a theater during the staging of The Haunted Man and the Ghost’s Bargain in 1862. This effect was achieved by reflection off an ultrathin transparent film, which played a role in forming a virtual image behind the film and reflected the ghost image toward the audience. This technology can be used conveniently for large-scale projection and is, therefore, used widely in popular concerts [9]. Although they are frequently defined as “holographic projection,” they are in fact not as there is no hologram used. The holographic method, which was first invented by Dennis Gabor from Imperial College London, took off in the 1970 s [10]. A hologram used to achieve holographic projection can be displayed using a spatial light modulator (SLM) that is fabricated from liquid crystal materials [11,12] such as ferroelectric 10 December 2014 / Vol. 53, No. 35 / APPLIED OPTICS

8261

liquid crystals (FLCs) [13] or nematic liquid crystals [14]. A FLC SLM can be used to achieve video projection with kilohertz frame rates, which makes high resolution possible by exploiting the time-average aspect of human vision. However, because the FLC molecules are only stable in two real states, the modulation is always binary. Hence, there will be a conjugate image appearing in the replay field for 2D holographic projection. 3D holographic displays using FLC SLMs also suffer from such effects in the volumetric domain. In this paper, all holograms are displayed on a FLC SLM using binary modulation. In theory, compared with conventional projection, 2D holographic projection has many advantages, which include smaller size, simpler optical structure, lower cost, higher efficiency, robustness to pixel defects, and focus-free operation. Using focus-free operation means that uneven surface projection is also possible. The most important feature of a 3D holographic display over conventional ones is that it exploits all available depth cues, and hence, overcomes the problem of visual fatigue. 2. Backgrounds and Theories A.

Basic Concept of Holographic Projection

Basic holographic projection can be described from a 2D case into a 3D one. The process of diffraction through a given aperture is illustrated in Fig. 1. According to the Huygens–Fresnel approximation, we can obtain the full complex field radiating from the aperture as follows (k is the wavenumber): dE 

Ax; y jwt−kr e dS: r

(1)

As described by Goodman [15], the far-field pattern of the aperture is formed in the focal plane of a positive lens, if it is placed just after the aperture. And Eq. (1) can be propagated to get the following: jk

2 β2 

Eu; v  e2f 1− f α d

FTAx; yu;v ;

(2)

where f is the focal length of the positive lens and d is the distance between the hologram plane and the

Fig. 1. Diffraction through an arbitrary 2D aperture. 8262

APPLIED OPTICS / Vol. 53, No. 35 / 10 December 2014

Fig. 2. Optical schematic of the projection device for a 2D hologram and for 3D holograms.

positive lens. In order to eliminate the distortion term, d is chosen equal to focal length f . Therefore, in most cases, a 4f system is used. The optical schematic of the system that is used in our experiment is shown in Fig. 2. The 2D reconstruction image is related to its hologram through a Fourier transform, when it is reconstructed in the specified focal plane. Hence, a 3D object can be sliced into many 2D planes along z axis. Each replay plane is focused by adding a suitable Fresnel lens, which is modulated inside the hologram. These planes are called Fresnel planes. The Fresnel transform can focus different 2D images onto different planes along z axis. The hologram for a 3D image is then calculated based on the Fresnel approximation instead of using the restricted model from Rayleigh–Sommerfeld diffraction. In this case, the 3D image is divided into several slices parallel to the hologram. When the paraxial approximation is satisfied, the Fresnel approximation of the transfer function can be expressed as     1 2π π 2 2 tx; y; z  exp j z exp j x  y  ; jλz λ λz

(3)

where z is the distance between the hologram plane and the Fresnel slice. Then the diffraction field in the Fresnel slice can be expressed as the convolution of the transfer function and the hologram: tx; y; z  hx; y   ZZ  1 2π exp j z  hα; β jλz λ   π 2 2 × exp j x − α  y − β  dαdβ λz     1 2π π exp j z exp j x2  y2   jλz λ λz   ZZ  π hα; β exp j α2  β2  × λz   π × exp −j αx  βy dαdβ λz    π 2 2  C × FT hα; β exp j α  β  ; λz

(4)

where     1 2π π 2 2 exp j z exp j x  y  : C jλz λ λz

(5)

Equation (5) indicates that the parameter z in the Fresnel transform can be treated as the focal length of the lens. Because the human eye is only sensitive to the intensity rather than to the phase information of an object, the phase terms in Eq. (5) can be normalized to unity. The diffraction image based on the Fresnel transform can be seen clearly on the virtual focal plane at a distance of z. The hologram for a given target image at a distance z away from the hologram can be calculated from the following equation: 

hα; β  jλzj ·

FT−1 Tx; y

 π 2 2 α  β  : α;β ∕ exp λz (6)

In this paper, we use a FLC SLM to display the hologram. The complex values in the hologram are quantized to their nearest binary phase values as shown in Fig. 3. B.

Computer-Generated 3D Objects Using OpenGL

OpenGL is a popular program used to construct arbitrary 3D objects using polygon meshes [16], the most common being the triangle mesh. Initially, massive vertices are stored in a matrix array. Each vertex has three coordinate values, x, y, and z. Every three vertices are used to construct one triangular mesh. Then the OpenGL built-in function “glDrawElements” is used to issue a command to render the primitives from the original matrix array. It specifies the construction sequence, the starting memory address, type, and the number of the basic element. In this case, we use the triangular mesh as the basic element. Figure 4 illustrates a teapot consisting of triangular meshes. C.

GPU Parallel Computing

The Computer Unified Device Architecture (CUDA) is a system developed by NVIDIA Corporation in

Fig. 3. Binary phase quantization process. (a) Original complex number in the complex plane. (b) Quantized number in the complex plane.

Fig. 4. 3D teapot model consisting of triangular meshes.

2007 [17]. This kind of architecture can use a C-like language to compile the program without utilizing the Application Programming Interface. The merit of a GPU over the CPU is its much higher number of cores. For instance, the Intel i7 4770 CPU has four cores, whereas NVIDIA GTX 770 has 1536 CUDA cores. The CPU utilizes most areas of its chip to build the cache memory, BranchCache, command, control, and pipeline; thus, it can deal with the most complicated tasks. The GPU, by contrast, has relatively simpler function cores to deal with a lot of data with similar instructions. The CPU is best for dealing with the MIDS (Multiple Instruction Single Data) problem, while a GPU can achieve better performance when dealing with SIMD (Single Instruction Multiple Data) problems. In the case of computergenerated hologram (CGH) calculations, both the number of pixels and the number of 3D basic elements are high, while each pixel value on the hologram can be calculated with just one kind of instruction: a Fresnel transform. As a result, the CUDA is suitable for our CGH calculation. We used an NVIDIA GTX 770 graphics card to calculate the holograms. This GPU is based on the Kepler architecture, the GK104, and utilizes a 28 nm fabrication process. It is constructed using four GPCs (Graphics-Processing Clusters). Each GPC has two SMXs (Streaming Multiprocessors) and each SMX has 192 stream processors (SPs); therefore, the total number of SPs is 1536, which also represents the number of CUDA cores. The CUDA is a kind of a virtual model that can be used to reflect and exploit the real structure of the GPU. The kernel function plays a vital role during the CUDA computation. It contains all functions that should be executed by the GPU through the CUDA. There are three basic levels during the processing of one kernel: grid, block, and thread. Each level has three dimensions. There is also a maximum acceptable number for each dimension. Thread is the lowest level in this model. In this case, we utilize each thread to calculate each basic element, one triangular mesh. Two dimensions of the block are used to represent the hologram plane. The total number of 10 December 2014 / Vol. 53, No. 35 / APPLIED OPTICS

8263

SPs represents the theoretical maximum number of parallel threads, but it can also be limited by other factors, such as the maximum usable local memory size and registers within one block. Choosing suitable dimensions of the kernel can make the GPU to achieve best performance. The performance of kernels can be judged by software called “Visual Profiler.” 3. Algorithms

As described in Section 2, a Fresnel-based hologram can be calculated by multiplying one Fourier form and one Fresnel phase form. The Fourier form depends on the original image slice, while the Fresnel phase form can be derived only from the focal distance. Differently from previous research [18–20], there is no need to generate the ray-based model to sample the 3D target object or cut it into slices along z axis. This kind of a two-part algorithm allows us to develop a fast precalculated method for CGH computations. There are two main parts of our algorithm. The first part is to calculate one basic hologram of a right triangular mesh. The other part is to utilize the CUDA to perform transforms so that it can derive corresponding holograms of any other arbitrary triangle mesh displayed along z axis. The process of this algorithm is described in the following text. A.

Calculation of the Basic Hologram of a Right Triangle

This step is straightforward and can be done very quickly by applying the 2D fast Fourier transform (2D FFT) to a pixelated basic right triangle. The length of each section of this triangle is 50 pixels, so that the following transform can be performed successfully. The CUDA has a built-in library called “cuFFT” [21], which can be used to perform this transform. After each 2D FFT transform is completed, its result containing both the amplitude and phase information is stored in two global arrays, so that it can be used further. The complex base hologram for the original right triangle can be expressed as Hu; v. Figure 5 illustrates the outcomes. B.

Loading and Identifying the Elemental Triangular Mesh

The location of each triangle can be represented by three vertices, and each vertex has three coordinate values, “x,” “y,” and “z.” The first step is to load these

three vertices AAx1 ; y1 ; z1 , BBx2 ; y2 ; z2 , and CCx3 ; y3 ; z3 . Each elemental triangular mesh could be very thin along z axis, and their depths could be neglected. In this case, we need to get the 2D orthogonal projection triangle, ΔABC, of these points independent of the value of z. The “z” depth value can be used to generate a Fresnel phase plane later. ! ! ! Three projection directions AB, AC, and BC are calculated based on these three points on each x–y plane. Then each triangle is identified as one of the following three cases. The three parameters a, b, and c indicate cosines of each angle in one triangle, which can be used to define their characteristics. This kind of identification is very important because different types of triangles should be divided into the original basic right triangle using different mechanisms. ! ! In this case, we get a  AB · AC, b  → AB · → BC, and c  → AC · → BC. Therefore, there are totally three cases correlated to the triangular mesh properties as follows: Case 1: Right-Angled Triangle If a  0;

b < 0;

c > 0;

then ∠e is the rightangle. If a > 0;

b  0;

c > 0;

then ∠e is the right angle. If a > 0;

b < 0;

c  0;

then ∠e is the right angle. Case 2: Obtuse Triangle If a < 0;

b < 0;

c > 0;

then ∠e is the obtuse angle. If a < 0;

b > 0;

c > 0;

then ∠e is the obtuse angle. If a < 0;

b > 0;

c < 0;

then ∠e is the obtuse angle. Case 3: Acute Triangle If Fig. 5. (a) Original target basic right triangle with 50 pixels on both sides of intensity of “1”. (b) Phase information (0–2π) of the hologram (c) Normalized amplitude information (0–1) of the hologram. 8264

APPLIED OPTICS / Vol. 53, No. 35 / 10 December 2014

a < 0;

b > 0;

c > 0;

then ΔABC is an acute triangle.

C. Calculating the Original Position and Determining Movement

The original point Po should be set as the central position, which is used to compare with the right angle vertex position of the original basic right triangle, so that the movement parameter can be determined. For Case 1, Po is the right angle vertex. For Case 2, the original point should be the section on its longest side. The obtuse triangle can then be divided into two right triangles by a perpendicular line. For Case 3, the original point can be chosen as one of the alternative three sections. If their distance differences are Δx and Δy, respectively, along x and y axes, then the modified hologram with a shifted phase plane can be derived as H s u; v  Hu; v exp2πjΔx · u  Δy · v according to the Fourier shift theorem. D.

Calculating the Rotation Angle and Scaling Factors

Once the original point PO is determined, the rotation angle can be derived from the direction of the ! perpendicular line PO O, where point O is the sharing point of these two divided right triangles or the right angle vertex in Case 1. The rotation angle can be calculated from the following equations. Figure 6 illustrates this process. A rotation in the Fourier domain causes the same rotation in the original space domain; thus, the same angle can be used to rotate the base hologram to get a rotated triangular mesh. ! ! P O · OY cosθ  o! ! jPo O · OY j q  yo − yp∕ yo − yp2  xo − xp2 :

In this case, the arbitrary triangle ΔAOB is divided into two triangles, ΔAOP0 and ΔBOP0 . ΔBOP0 is rotated by angle θ, whereas ΔAOP0 is rotated by angle θ − π∕2. Therefore, either triangle has two factors along x and y axes after rotation. These four scaling factors Sx1, Sy1 , Sx2 , and Sy2 can be determined from the following equations:

(8)

Sy1  AP0 ∕d;

(9)

Sx2  BP0 ∕d;

(10)

Sy2  Sx1  OP0 ∕d;

(11)

where d is the length of the side of original base right triangle. The hologram after rotation and scaling can be expressed as H rs u; v  H rs1 u; v  H rs2 u; v:

(12)

These two subholograms of two triangles can be calculated, respectively, as follows: H rs1 u; v  H s u1 ∕Sx1 ; v1 ∕Sy1 ;

(13)

H rs2 u; v  H s u2 ∕Sx2 ; v2 ∕Sy2 :

(14)

In this case, H s can be calculated as detailed in Section 3.C. u1 , v1 and u2 , v2 are derived by adding suitable rotation matrices: 

u1 v1



cos θ − π2

4 sin θ − π2 2

 (7)

Sx1  OP0 ∕d;

u2 v2





cos θ  sin θ

3 − sin θ − 2π  u 

5 ; v cos θ − π2 − sin θ cos θ

  u : v

(15)

(16)

E. Calculating the Fresnel Plane and Getting the Final Hologram

According to Eq. (4), the Fresnel plane can be expressed as Fu; v  expπ∕λZcu2  v2 , where Zc  z1  z2  z3 ∕3. As described before, the depth of each elemental triangle can be determined by its central depth, Zc . By adding the hologram modified through movement, rotation, and scaling transforms to the calculated Fresnel plane, the final hologram for an arbitrary triangular mesh in 3D space can be derived as H final u; v  Fu; vH rs u; v. In this case, H rs u; v is derived from Eq. (12). Finally, all of these holograms can be added by the CUDA in parallel to achieve the final Fresnel hologram for the 3D object. 4. Results and Discussion

Fig. 6. Rotation calculation based on one projected triangle.

Figure 7 shows a comparison of the calculation times for a CPU alone and for the NVIDIA GPU with the CUDA. In this case, we used an i7 4770k CPU and NVIDIA GTX 770 to do this calculation. The SLM used was a reflective binary phase device, which had a resolution of 1280 × 1024 pixels, with a pixel 10 December 2014 / Vol. 53, No. 35 / APPLIED OPTICS

8265

Fig. 7. Comparison of calculation speed between a CPU and the GPU.

pitch of 13.62 m. As can be seen from the results, the block size has a remarkable effect on the computation time, because each block has its limited number of registers and size of shared memory. Therefore, the number of threads within one block cannot be chosen to be so large. Although the code can be compiled by the computer automatically to optimize the number of registers, for a GPU computation, we need to use as many registers as possible to reduce the loading and writing time. As a result, we chose 256 threads per block in this case to calculate the hologram based on 6553 triangular meshes to achieve the fastest speed. In order to demonstrate the importance of this new algorithm, we provide a comparison of this algorithm with two other algorithms as shown in Fig. 8. According to Fig. 8, the computation speed of this new algorithm is faster than that of the point-based one when the same number of basic elements is used. The reason is that one kernel can compute a hologram for one arbitrary triangular mesh by just doing some simple transformations instead of expensive complex amplitude calculations on-the-fly. The slice-based algorithm is much slower than the other two algorithms because each hologram for one slice needs to be calculated by using one FFT. In order to achieve the same speed as that of our new algorithm, this algorithm should be used only for 3D objects consisting of no more than three slices. It is obviously not suitable for this “teapot” model. In addition, normal

Fig. 8. Comparison of calculation speed among different algorithms. 8266

APPLIED OPTICS / Vol. 53, No. 35 / 10 December 2014

3D objects must have more than three slices. Therefore, our new algorithm is much more suitable for 3D hologram calculations. Although the triangular mesh position can be loaded straightforwardly, the intensity of each elemental triangle mesh can be modified slightly so that the quality of the reconstruction result is improved. By introducing different arbitrary phase information to each elemental triangle mesh, the reconstruction result becomes more solid than before, as shown in Fig. 9. This technology is based on the concept that human’s eyes are only sensitive to the intensity rather than to the phase information of an object. This is very similar to the Gerchberg– Saxton algorithm [22]. It benefits from the reduction of noise due to quantization by smoothing the intensity information of a hologram, which cannot be recorded purely by a binary phase-only hologram. In order to reconstruct a more vivid 3D object, a suitable light model is used. In this paper, we have used a Lambertian reflectance [23] and ambient light model. The intensity of the light reflected by each triangular mesh can be expressed as I r  I i × ˆ · ng ˆ  I a , where I r and I i are the intensity maxfD of the reflected light and incident light, respectively; ˆ is the unit vector from the central point of a triD angular mesh to the light source; nˆ is the unit vector

Fig. 9. Teapot is placed 0.8 m away from the hologram to fulfill the Fresnel approximation, and the size range is about 6 cm. The focal distance was chosen as 0.81 m. (1a) Experimental result without adding a random phase. (1b) Simulated result without adding a random phase. (2a) Experimental result with a random phase added. (2b) Simulated result with a random phase added. (3a) Experimental result by applying the Lambertian light model. (3b) Simulated result by applying the Lambertian light model.

perpendicular to the triangular mesh’s plane; and the last term I a is the intensity of ambient light. As shown in Fig. 9(3a), the reconstructed teapot can mimic the effect of metallic gloss, which makes it appear more vivid. Due to its high degree of parallelization, these two improvements have little effect on the final speed. 5. Conclusion

We have generated a binary phase hologram using the CUDA acceleration technology and a precalculated basic hologram. One merit of this method is that it can reconstruct solid and vivid 3D objects instead of hollow objects generated by the point-cloud model [24]. Another merit is that the calculation speed is more than 20 times faster than that in the traditional CPU calculation method due to the power of the CUDA’s SIMD performance. This also makes future real-time 3D displays possible. In addition, by calculating the basic hologram beforehand, there is no need to do a Fourier transform for each triangular mesh. Only one Fourier transform is needed during the whole calculation session. The pixel values for any arbitrary triangular mesh can be derived by just doing the straightforward modifications described in Section 3, and the heavy calculation work of the GPU kernel can be alleviated effectively. References 1. L. Zhang and J. T. Wa, “Stereoscopic image generation based on depth images for 3D TV,” IEEE Transactions on Broadcasting 51, 191–199 (2005). 2. F. Julien, J. Harrold, and G. J. Woodgate, “A prototype 3D mobile phone equipped with a next-generation autostereoscopic display,” Proc. SPIE 6490, 64900M (2007). 3. F. Lamberti and A. Sanna, “A streaming-based solution for remote visualization of 3D graphics on mobile devices,” IEEE Trans. Visual. Comp. Grap. 13, 247–260 (2007). 4. J. J. Laviola, “Bring VR and spatial 3D interaction to the masses through video games,” IEEE Comp. Grap. Appl. 28, 10–15 (2008). 5. N. A. Dodgson, “Autostereoscopic 3D displays,” Computer 38, 31–36 (2005). 6. H. Urey, K. V. Chellappan, E. Erden, and P. Surman, “State of the art in stereoscopic and autostereoscopic displays,” Proc. IEEE 99, 540–555 (2011). 7. S. Hong, J. Jang, and B. Javidi, “Three-dimensional volumetric object reconstruction using computational integral imaging,” Opt. Express 12, 483–491 (2004).

8. W. Mphepo, Y. Huang, and H. D. Shieh, “Enhancing the brightness of parallax barrier based 3D flat panel mobile displays without compromising power consumption,” J. Disp. Technol. 6, 60–64 (2010). 9. K. Donbavand, “From Michael Jackson to Burberry, holograms are having a moment,” Tech Yeah, May 2014. Available at: http://news.instyle.com/2014/05/20/tech‑yeah‑from‑michael‑ jackson‑to‑burberry‑holograms‑are‑having‑a‑moment/. 10. L. B. Lesem, P. M. Hirsch, and J. A. Jordan, “The kinoform: a new wavefront reconstruction device,” IBM J. Res. Dev. 13, 150–155 (1969). 11. J. Amako and T. Sonehara, “Kinoform using an electrically controlled birefringent liquid-crystal spatial light modulator,” Appl. Opt. 30, 4622–4628 (1991). 12. M. Reicherter, T. Haist, E. U. Wagemann, and H. J. Tiziani, “Optical particle trapping with computer-generated holograms written on a liquid-crystal display,” Opt. Lett. 24, 608–610 (1999). 13. T. D. Wilkinson, D. C. O’Brien, and R. J. Mears, “Dynamic asymmetric binary holograms using a ferroelectric liquid crystal spatial light modulator,” Opt. Commun. 109, 222–226 (1994). 14. I. C. Khoo, “Holographic grating formation in dye- and fullerene C60-doped nematic liquid-crystal film,” Opt. Lett. 20, 2137–2139 (1995). 15. J. Goodman, Introduction to Fourier Optics (Roberts & Company, 2004). 16. K. Matsushima and S. Nakahara, “Extremely high-definition full-parallax computer-generated hologram created by the polygon-based method,” Appl. Opt. 48, H54–H63 (2009). 17. J. Sanders and E. Kandrot, CUDA by Example: An Introduction to General-Purpose GPU Programming (Addison-Wesley, 2011). 18. R. Chen and T. D. Wilkinson, “Computer generated hologram from point cloud using graphics processor,” Appl. Opt. 48, 6841–6850 (2009). 19. R. Chen and T. D. Wilkinson, “Computer generated hologram with geometric occlusion using GPU-accelerated depth buffer rasterization for three-dimensional display,” Appl. Opt. 48, 4246–4255 (2009). 20. J. Chen, D. Chu, and Q. Smithwick, “Rapid hologram generation utilizing layer-based approach and graphic rendering for realistic three-dimensional image reconstruction by angular tiling,” J. Electron. Imaging 23, 161–167 (2014). 21. S. Cook, CUDA Programming: A Developer’s Guild to Parallel Computing with GPUs (Morgan Kaufmann, 2013). 22. R. W. Gerchberg and W. O. Saxton, “A practical algorithm for the determination of the phase from image and diffraction plane pictures,” Optik 35, 237–250 (1972). 23. C. Schlick, “A survey of shading and reflectance models,” Comput. Graph. Forum 13, 121–131 (1994). 24. T. Shimobaba, H. Nakayama, N. Masuda, and T. Ito, “Rapid calculation algorithm of Fresnel computer-generatedhologram using look-up table and wavefront-recording plane methods for three-dimensional display,” Opt. Express 18, 19504–19509 (2010).

10 December 2014 / Vol. 53, No. 35 / APPLIED OPTICS

8267

Suggest Documents