Fast Generating of a Digital Hologram Using General-Purpose Computation on Graphics Processing Units Joong-Seok Song*,
Young-Ho Seo†, Jong-Il Park*
*Dept, Electronics and Computer Engineering, Hanyang University †Dept, Electronics and Material Engineering, Kwangwoon University
ABSTRACT In this paper, we propose a method for fast generating a digital hologram using General-Purpose Computation on Graphics Processing Units (GPGPU). This method can reduce the computational time of generating a digital hologram by using the parallel processing with CUDA. And we demonstrate the effectiveness of our algorithm through a variety of experiment. KEYWORDS: Parallel programming, 3D/stereo scene analysis, Parallel processing, Image display. INDEX TERMS: D.1.3 [Software]: Concurrent Programming— Parallel programming; I.2.10 [Artificial Intelligence]: Vision and Scene Understanding—3D/stereo scene analysis; I.3.1 [Computer Graphics]: Hardware Architecture—Parallel processing; I.4.0 [Image Processing and Computer Vision]: General—Image displays. 1
INTRODUCTION
The effective methods of displaying a 3D object are stereo display and hologram. These methods are being extensively researched from each field. Among them, the hologram is getting more interest because it can offer visual information as similar to human vision characteristic. However, because a hologram is made with a laser beam, is needed a stable optical system for making a hologram with normal phases and magnitudes about a 3D object.[1] Therefore, to solve these constraints, we typically use a computer generated holography (CGH), which is method for making a digital hologram by using mathematical computation in the personal computer. The CGH was proposed by Brown and Lohmann in 1966. It is useful method for easier extracting a digital hologram from a 3D object in the real-world.[2] However, in order to compute a digital hologram by using the CGH, we should compute a lots of data. So, Lucente et al. had been proposed a method of the fast computing a digital hologram using look-up table (LUT) for solving this problem.[3][4] Also, Choi et al. had been proposed an another method, which used a recursive computation for generating a digital hologram.[5] In this paper, we propose a method which is reducing the overall computational time in computing CGH, using CUDA. The CUDA is an acronym for compute unified device architecture. * email: * email: † email:
[email protected] [email protected] [email protected]
LEAVE 0.5 INCH SPACE AT BOTTOM OF LEFT COLUMN ON FIRST PAGE FOR COPYRIGHT BLOCK
Chapter2 of this paper explains the hologram generating system. Chapter3 explains the fast generating of a digital hologram using parallel processing. Chapter4 explains the result of experiment about experimental result. At the conclusion, we show the conclusion of this paper and research direction in chapter5. 2
SYSTEM OF GENERATING DIGITAL HOLOGRAM
A digital hologram is generated from a digital system. Figure 1 shows the system of generating a digital hologram. A condensing lens make collimated wave, a beam splitter separates a light into the reference wave and the object wave. An interference pattern is generated when the object wave, which is reflected from a 3D object, reflects a charge coupled device (CCD) with the reference wave. (a) recoding (b) reconstruction Figure 1. System of a digital hologram. Generally, a reconstruction object is generated by projecting a laser beam on an interference pattern. A digital hologram can be replaced a hologram, which is generated from an optical system. It can be calculated by a personal computer. Figure 2 show a flow of a digital holography. Figure 2. Flowchart of a digital holography. In this paper, we use a 3D object model, which is composed of 6982 sources of light. We can generate a digital hologram by computing them all through CGH computation. If we make a digital hologram with 1024pixel ´ 1024pixel, we should
calculate 7,321,157,632 times. It is taking too long. Thus, we need to improve the speed of the CGH computing. 3
FAST GENERATING OF A DIGITAL HOLOGRAM
A generating of a digital hologram is based on the CGH computation. So, if it fast computed, a digital hologram can be fast generated. The CGH computation is expressed as (1). (1)
N
Ia = å A j cos(k ( pxa - px j ) 2 + ( pya - py j ) 2 + z 2 ) j
A digital hologram and a 3D object is and . The reference wave number is = 2/. The p is the pixel-pitch of a digital hologram. A coordinate of a digital hologram is and . A coordinate of a 3D object is , and . In this paper, we use the other CGH equation for calculating in parallel. That is expressed as (2). N
I a = å A j cos(2p (q z + q H ))
(2) p2 2 2 (q z = qH = (( xa - x j ) + ( ya - y j ) ) l 2pl As shown Figure 2, the CGH computation has been having a recurrent part. Thus, we can fast compute the CGH computation by using a CUDA. j
And Figure 4-(c) is a reconstruction image by using a computation on GPU-based. We compared the computational time of each condition, between Figure 4-(b) and Figure 4-(c). Table 1 shows the conditions of experiment in this paper. Table 1. The experiment condition. Item The details CPU Intel(R) Core Quad 2.4GHz GPU Nvidia Geforce 8800GTS OS MS window 7 RAM 4.0GB Compiler MS Visual C++ The result of experiment is as follow Table 1. The computational time of CGH computation on GPU-based is about 12,258ms. And the computational time of CGH computation on CPU-based is about 784,945ms. The computational time when compared between GPU and CPU, GPU is faster. Consequently, we were able to show that the CGH computation on GPU-based is faster than CPU-based through this experiment.
Zj
Table 2 The experiment condition. Item Computational time [ms] GPU 12,258 CPU 783,945 Ratio (CPU vs GPU) 1 : 63.953 5
Figure 3. System of the CGH computation using CUDA. Figure 3 shows the system of the CGH computation using CUDA. We performed the experiment through parallel processing by using CUDA. 4
In this paper, we proposed a method for fast generating a digital hologram. We prove that this proposed method improves a speed of generating a digital hologram by using stream processor of GPU. It makes a group of threads which are pixels of a digital hologram. This method can improve an overall computational time by simultaneous computing. As a result, we show that computation on GPU-based is about 64 times faster than a computation on CPU-based. In future, we will continually optimize the CGH computation for generating a digital hologram in real time. REFERENCES [1]
EXPERIMENTAL RESULTS
In this paper, we use (2) of the CGH computation. We set parameters as follows. The size of a 3D object is 200pixel ´ 200pixel, 8 bit. The sources of light are 6982. The sample image is Stanford Bunny. And we made a hologram resolution, which is 1024pixel ´ 1024pixel. The reference wave length (λ) is 633mm, reconstruction distance is 100nm. The pixel-pitch (p) is 10.4um ´ 10.4um. Figure 4 shows the images used in this experiment. Figure 4-(a) is a 3D object. Figure 4-(b) is a reconstruction image by using a computation on CPU-based.
[2] [3]
[4]
[5]
[6]
(a)
(b) (c) Figure 4. The images of experiment.
CONCLUSION
[7]
W. H. Ryu and M. H. Jeong A study on three-dimensional computer generated holograms by 3-D coordinates transformation. Applied Optical Society of Korea, volume 17, pages 525-531, December 2006. B. R. Brown and A. W. Lohmann. Complex spatial filtering with binary masks. Applied Optics, volume 5, pages 967-969, June 1966. M. Lucente. Interactive computation of holograms using a look-up table. Journal of Electronic Imaging. volume 2, pages 28-34, January 1993. D. E. Smalley and Q. Y. J. Smithwick, and V. M. Bove. Holographic video display based on guided-wave acousto-optic devices. Proceedings of SPIEP practical HolographyXXI, volume 6488, Feburary 2007. H. J. Choi and Y.H. Seo. Fast computation algorithm of Fresnel holograms using recursive addition method. Applied The Journal of Korea Information and Communications Society, volume 33, May 2008. J. Y. Son. Holography’s theory and application. Publishing Company: Bong-Myeong. ISBN-10: 8986522683. ISBN-13: 9788986522686 NVIDIA GPU Computing Developer home page. http://www.developer.nvidia.com/object/gpucomputing.html.