This module is related method which convert to horizontal parallax only hologram.
Introduction
 The hologram contains all the information of a 3D object and require a large amount of transmission for use in a holographic display. However, because the capacity of the information transmission channel is limited, a great amount of research has been spent on holographic information reduction so as to facilitate, for example, TV transmission of holograms. A horizontalparallaxonly (HPO) hologram has been proposed as an excellent way to reduce the required amount of data for 3D display [1,2].
 Recently, HPO optical scanning holography(OSH) has been suggested as an electrooptical technique that actually records the holographic information of a real object without vertical parallax [3]. However, the proposed HPO OSH will introduce aberration upon optical reconstruction along the vertical direction if the vertical extent of the asymmetrical Fresnel zone plate (FZP), which has been proposed to generate the HPO data from a real object, is not small enough [3,4]. To eliminate aberration caused by the asymmetrical FZP, an algorithm that converts a recorded fullparallax (FP) hologram to an HPO hologram was subsequently proposed [4]. The converted HPO hologram was optically reconstruct using a conventional amplitudeonly spatial light modulator (SLM) [5].
Algorithm
 This method that converts a fullparallax hologram to an HPO hologram by using Gaussian lowpass filtering and fringematched filtering. Although a fullparallax hologram of a 3D object can be considered as a collec tion of 2D Fresnel zone plates (FZPs), an HPO hologram is a collection of 1D FZPs [3]. Figures 1(a) and 1(b) show a 2D FZP and an asymmetrical FZP, respectively. The asymmetrical FZP shown in Fig. 1(b) illustrates an approx imation to a line or 1D FZP by masking a slit along the x direction. Note that the asymmetrical FZP still has curvature within its vertical extent if the slit size is not small enough, and hence it will generate aberrat ion upon reconstruction of the hologram.
Figure 1. (a) Fullparallax FZP, (b) asymmetrical FZP.
 Gaussian lowpass filtering along the vertical direction removes the highfrequency components of the object along the vertical direction. This makes it possible to reduce the amount of data by sacrificing the vertical parallax without losing the horizontal parallax. The filtered output becomes a hologram in which the object is encoded by an asymmetrical FZP.
 Fringematched filter compensates the curvature of the Gaussian lowpass filtered hologram along the vertical direction and gives an exact HPO hologram as an output [1,2]. This makes it possible to removes the curvature along the vertical direction of the asymmetrical FZP.
 First, the full parallax complex hologram of the object obtained using the OSH setup is given by the following [6]:
\[ H_{full}(x,y)=\int_{z_0\Delta z}^{z_0+\Delta z}I_0(x,y,z) \otimes \frac{j}{\lambda z} \times \exp \left \{ \left(\frac{\pi}{NA^2z^2}+j \frac{\pi}{\lambda z}\right)\left(x^2+y^2\right) \right \}dz \qquad \left(1\right) \]
 Where \(NA\) represents the numerical aperture defined as the sine of the halfcone angle subtended by the TDFZP, \(\lambda\) is the wavelength of the laser, \(z_0\) is the depth location of the object, \(2\Delta z\) is the depth range of the object, and the symbol \(\otimes\) denotes 2D convolution. The spectrum of the hologram is given by
\[ H_{full}(k_x,k_y)=F\left\{H_{full}(x,y)\right\} =\int_{z_0\Delta z}^{z_0+\Delta z}I_0(k_x,k_y,z) \times \exp \left \{ \left[\frac{1}{4\pi}\left(\frac{\lambda}{NA}\right)+j \frac{\lambda z}{\lambda \pi}\right] \left(k_x^2+k_y^2\right) \right \}dz \qquad \left(2\right) \]
 Where \( F\left\{.\right\}\). represents Fourier transformation with \(\left(k_x,k_y\right)\) denoting spatial frequencies.
 Next apply a Gaussian lowpass filter along the vertical direction, \( G_{lowpass}\left(k_x,k_y\right)=\exp\left[\frac{1}{4\pi} \left(\frac{\lambda}{NA_g} \right)^2k_y^2 \right]\), to the fullparallax hologram’s spectrum given by Eq. (2), where \( NA_g \) is a parameter that determines the cut off frequency of the Gaussian lowpass filter. The filtered spectrum is then given by
\[ H_{asym\ FZP}\left(k_x,k_y\right) =H_{full}\left(x,y\right)G_{lowpass}\left(k_x,k_y\right) =\int_{z_0\Delta z}^{z_0+\Delta z}{I_0(k_x,k_y,z) \times \exp\left\{\left[\frac{1}{4\pi}\left(\frac{\lambda}{NA}\right)^2+j\frac{\lambda z}{4\pi}\right]k_x^2+ \left[\frac{1}{4\pi}\left(\frac{\lambda}{{NA}_{lp}}\right)^2+j\frac{\lambda z}{4\pi}\right]k_y^2\right\}}dz \qquad \left(3\right) \]
 Where \({\rm NA}_{lp}={\rm NA}_gNA/\sqrt{{\rm NA}^2+{NA}_g^2}\) is the NA of the FZP along the vertical direction. Note that the Gaussian lowpass filtered hologram is a hologram in which the object’s crosssectional images are encoded with the asymmetrical FZP. As discussed earlier, the asymmetric FZP has curvature along the vertical direction. To remove the curvature, use a fringematched filter, \(F_{fm}\left(k_x,k_y\right)=exp\left[j\lambda z_0/4\pi k_y^2\right]\), that compensates the curvature along the vertical direction, where \(z_0\) is the depth location of the object. Hence the fringeadjusted filtered output becomes
\[ H_{HPO}\left(k_x,k_y\right) =H_{asym\ FZP}\left(k_x,k_y\right)F_{fm}\left(k_x,k_y\right) =\int_{z_0\Delta z}^{z_0+\Delta z}{I_0(k_x,k_y,z)\times \exp\left\{\left[\frac{1}{4\pi} \left(\frac{\lambda}{NA}\right)^2+j\frac{\lambda z}{4\pi}\right]k_x^2+{\left[\frac{1}{4\pi} \left(\frac{\lambda}{{NA}_{lp}}\right)^2+j\frac{\lambda\left(zz_0\right)}{4\pi}\right]k}_y^2\right\}}dz \qquad \left(4\right) \]
 The HPO hologram in space domain is given by \( H_{HPO}\left(x,y\right)=F^{1}\left\{H_{HPO}\left(k_x,k_y\right)\right\}\), where \( F^{1}\left\{.\right\} \). Represents the inverse Fourier transformation. Now, in the case that the depth range of the object \( \left(2\Delta z\right)\) is smaller than the infocus range of the line FZP along the vertical direction \( \left(2\Delta z_{ver_dir}=2\lambda/\left({NA}_{lp}^2\right)\right)\), i.e., \( \Delta z\le\Delta z_{ver_dir}\), which is usually true when we synthesize an HPO hologram for 3D display, \( z\approx z_0\) within the range of the object depth along the y direction, and hence the last term of the exponential function become zero, i.e., \( \lambda\left(zz_0\right)/4\pi\approx 0\). Equation (4) then becomes
\[ H_{HPO}\left(k_x,k_y\right) =\int_{z_0\Delta z}^{z_0+\Delta z}{I_0(k_x,k_y,z) \times \exp\left\{\left[\frac{1}{4\pi}\left(\frac{\lambda}{NA}\right)^2+j\frac{\lambda z}{4\pi}\right]k_x^2 +{\left[\frac{1}{4\pi}\left(\frac{\lambda}{NA_{lp}}\right)^2\right]k}_y^2\right\}}dz \qquad \left(5 \right ) \]
 and its spatial domain expression is
\[ H_{HPO}\left(x,y\right)=F^{1}\left\{H_{HPO}\left(k_x,k_y\right)\right\} =\int_{z_0\Delta z}^{z_0+\Delta z}{I_0(x,y,z)\otimes\frac{j}{\lambda z} \times \exp\left\{\left[\left(\frac{\pi}{NA^2z^2}\right)+j\frac{\pi}{\lambda z}\right]x^2 +\frac{\lambda}{NA_{lp}^2z^2}y^2\right\}}dz \qquad (6) \]
Figure 2. Flowchart
Reference
 [1] P. St. Hilaire, S. A. Benton, and M. Lucente, “Synthetic aperture holography: a novel approach to threedimensional displays,” J. Opt. Soc. Am. A 9, 11, 19691977 (1992).
 [2] H. Yoshikawa and H. Taniguchi, “Computer Generated Rainbow Hologram,” Opt. Rev. 6, 118 (1999).
 [3] T.C. Poon, T. Akin, G. Indebetouw, and T. Kim, “Horizontal parallaxonly electronic holography,” Opt. Express 13, 2427–2432 (2005).
 [4] T. Kim, Y. S. Kim, W. S. Kim, and T.C. Poon, “Algorithm for converting fullparallax holograms to horizontal parallaxonly holograms,” Opt. Lett. 34, 1231–1233 (2009).
 [5] Y. S. Kim, T. Kim, T.C. Poon, and J. T. Kim, “Threedimensional display of a horizontalparallaxonly hologram,” Applied Optics Vol. 50, Issue 7, pp. B81B87 (2011)
 [6] T.C. Poon, T. Kim, G. Indebetouw, M. H. Wu, K. Shinoda, and Y. Suzuki, “Twinimage elimination experiments for threedimensional images in optical scanning holography,” Opt. Lett. 25, 215 (2000).
◆ sigConvertHPO()
bool ophSig::sigConvertHPO 
( 
 ) 

Function for convert complex hologram to horizontal parallax only hologram .
 Returns
 if works well return 0 or error occurs return 1
Definition at line 690 of file ophSig.cpp.
691 OphComplexField F1, G1, OUT_H;
692 int nx = context_.pixel_number[_X];
693 int ny = context_.pixel_number[_Y];
697 OUT_H.resize(ny, nx);
698 float NA = _width / (2 * _z);
699 float NA_g = NA*_redRate;
705 double sigmaf = (_z*(*context_.wave_length)) / (4 * M_PI);
707 for (i = 0; i < ny; i++)
709 int ii = (i + yshift) % ny;
710 y = (2 * M_PI*(i) / _height  M_PI*(nx  1) / _height);
712 temp2 = ((M_PI*(((*context_.wave_length) / (2 * M_PI*NA_g))*((*context_.wave_length) / (2 * M_PI*NA_g))))*((y*y)));
713 for (j = 0; j < nx; j++)
715 int jj = (j + xshift) % nx;
716 F1(ii, jj)._Val[_RE] = cos(temp);
717 F1(ii, jj)._Val[_IM] = sin(temp);
718 G1(ii, jj)._Val[_RE] = std::exp(temp2);
719 G1(ii, jj)._Val[_IM] = 0;
722 fft2(ComplexH[0], OUT_H, OPH_FORWARD);
723 G1.mulElem(F1.mulElem(OUT_H));
724 fft2(G1, ComplexH[0], OPH_BACKWARD);
void fft2(matrix< Complex< T >> &src, matrix< Complex< T >> &dst, int sign=OPH_FORWARD, uint flag=OPH_ESTIMATE)
Function for Fast Fourier transform 2D.