<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Holographer &#124; Holography &#187; Optics</title>
	<atom:link href="http://holographer.org/optics/feed/" rel="self" type="application/rss+xml" />
	<link>http://holographer.org</link>
	<description>holographer.org</description>
	<lastBuildDate>Thu, 06 May 2010 18:07:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HoloPov: A previsualization program for holographers (version 0.5)</title>
		<link>http://holographer.org/holopov-a-previsualization-program-for-holographers-version-05/</link>
		<comments>http://holographer.org/holopov-a-previsualization-program-for-holographers-version-05/#comments</comments>
		<pubDate>Thu, 29 Apr 2004 18:43:09 +0000</pubDate>
		<dc:creator>Kaveh</dc:creator>
				<category><![CDATA[Optics]]></category>
		<category><![CDATA[Article]]></category>
		<category><![CDATA[Holographers]]></category>
		<category><![CDATA[Holography]]></category>
		<category><![CDATA[HoloPov]]></category>
		<category><![CDATA[Kaveh Bazargan]]></category>
		<category><![CDATA[PovRay]]></category>
		<category><![CDATA[Ray tracing]]></category>
		<category><![CDATA[Revolution]]></category>
		<category><![CDATA[RunRev]]></category>

		<guid isPermaLink="false">http://wordpress.holographer.net/?p=564</guid>
		<description><![CDATA[
Kaveh Bazargankaveh@holographer.org
About the authorKaveh&#x2019;s interest began with seeing the Royal Academy of Arts exhibition of holograms in London in 1976. He was studying physics at Imperial College London, and continued to complete a PhD in &#x2018;display holography&#x2019;. His passion remains the quest to achieve ultimate realism with holography.


Download PDF
Over the years I have often wanted [...]]]></description>
			<content:encoded><![CDATA[<div class="author-data">
<p><a href="http://wordpress.holographer.net/wp-content/uploads/2009/06/bazargan-photo.jpg"><img src="http://wordpress.holographer.net/wp-content/uploads/2009/06/bazargan-photo.jpg" alt="Kaveh Bazargan" title="Kaveh Bazargan" width="100" height="121" class="alignleft size-full wp-image-565" /></a><span class="author">Kaveh Bazargan</span><br /><span><a href="mailto:kaveh@holographer.org">kaveh@holographer.org</a></span></p>
<p class="bio"><strong>About the author</strong><br />Kaveh&#x2019;s interest began with seeing the Royal Academy of Arts exhibition of holograms in London in 1976. He was studying physics at Imperial College London, and continued to complete a PhD in &#x2018;display holography&#x2019;. His passion remains the quest to achieve ultimate realism with holography.</p>
</div>
<p><span id="more-564"></span></p>
<div class="download-pdf"><a href="/media/articles/hg00008.pdf" target="_blank">Download PDF</a></div>
<p>Over the years I have often wanted to be able to simulate the recording and reconstruction process in holograms. I am particularly interested in display holograms, as opposed to HOEs. During my studies I did write little programs for specific cases, but not a general purpose program. There are two parts to such a program: first to calculate the reconstructed image, having fed in the the recording data, and second, to present this in a nice graphical form, preferably three-dimensional.</p>
<p>Recently I discovered <i>POV-ray</i> (<a href="http://www.povray.org" target="_blank">http://www.povray.org</a>), a 3D image rendering engine, and realised it was the ideal tool for the job. Please see the the amazing images people have created with it. <i>POV-ray</i> is free, platform-independent (Linux, Unix, Macintosh, Windows), and produces images equal to renderers at <i>any</i> price. The beauty of using <i>POV-ray</i> is that not only is it a superb 3D rendering engine, but it is also an excellent programming language. Never calling myself a <i>real</i> programmer, I slowly put some equations in, got results, and soon got carried away! Slowly I built in more capability. The more I work on it the more possibilities I see to simulate the holographic process. I can now see that we can simulate full color holograms, &#x2018;pseudocolour&#x2019; holograms, and rainbow holograms. At the moment it is limited to transmission holograms, but I hope to extend it to reflection holograms too. </p>
<p>The basic equations used are those of Champagne (<i>J.&nbsp;Opt.&nbsp;Soc.&nbsp;Amer.</i>&nbsp;57 (1967)&nbsp;p.&nbsp;51). In this document I&#x2019;ll not go into the equations, but just the functionality of the program. This version is really still being worked on, and there will be bugs, so I do appreciate feedback. </p>
<p class="section-head">License</p>
<p>HoloPov is released under the GNU LGPL license (see <a href="http://www.fsf.org/licenses/licenses.html#LGPL" target="_blank">http://www.fsf.org/licenses/licenses.html#LGPL</a>). The code is therefore &#x2018;open&#x2019; and you can modify it and use it free of charge, and to redistribute it, within the restrictions of the license. In the spirit of Free Software, I encourage people to test and modify the code to improve and debug it, and help serve the holographic                                                                                                                                        community. </p>
<p class="section-head">Requirements</p>
<p>You should be running <i>POV-ray</i> on your computer. I have used version&nbsp;3.5. The files should run with any installation of <i>POV-ray</i> above 3.5. <i>POV-ray</i> runs on most platforms and is device independent. </p>
<p class="section-head">Examples</p>
<p>To see some examples of the kind of output produced, please see my other article, <a href="../hg00009/hg00009.pdf">&#x201C;White light transmission holograms&#x201D;</a> </p>
<p class="section-head">Availability</p>
<p>HoloPov is available for download <a href="/media/holopov-0.5.zip">here</a>.
</p>
<p class="section-head">File structure</p>
<p>There are three files in the package, <span class="obeylines-h"><span class="verb">holopov.pov</span></span> and <span class="obeylines-h"><span class="verb">holopov.inc</span></span>, and <span class="obeylines-h"><span class="verb">optics.inc</span></span>. You will also need to get <span class="obeylines-h"><span class="verb">CIE.inc</span></span> from <a href="http://www.ignorancia.org/zips/lightsys4.zip">http://www.ignorancia.org/zips/lightsys4.zip</a>. <span class="obeylines-h"><span class="verb">holopov.pov</span></span> is the file that is run through <i>POV-ray</i>. It will <span class="obeylines-h"><span class="verb">#include</span></span> <span class="obeylines-h"><span class="verb">holopov.inc</span></span> which will in turn <span class="obeylines-h"><span class="verb">#include</span></span> several other files. Most of these are standard files distributed with <i>POV-ray</i>, but <span class="obeylines-h"><span class="verb">optics.inc</span></span> is a library file of mine, and <span class="obeylines-h"><span class="verb">CIE.inc</span></span> is a third party file which, amongst other things, works out the approximate color for a given wavelength. </p>
<p class="section-head">The coordinate system</p>
<p>We use the coordinate system of <i>POV-ray</i>, i.e.&nbsp;a <i>left-handed</i> cartesian system. The hologram is always in the <i>x</i>&#x2013;<i>y</i> plane, centered at the origin. If you imagine your computer screen as being the hologram, with the <i>x</i>-axis pointing to the right, and <i>y</i>                                                                                                                                        pointing up, then the <i>z</i>-axis will be pointing into the screen. The center of the screen is <span class="obeylines-h"><span class="verb">&lt;0,0,0&gt;</span></span> </p>
<p>I have chosen to have the observer in the z &lt; 0 region, and other points in the z &gt; 0. But I think that any point can have any coordinates. If the formulae have been coded properly, then this should be the case <i>I think</i>. I have not dared test this yet! </p>
<p class="section-head">Overall concept</p>
<p>The basic idea is that you dial in the recording and the reconstruction parameters, and the program will work out the position of the image. By &#x2018;parameters&#x2019;, I mean the following:
</p>
<ul class="itemize1">
<li class="itemize">position of the object
     </li>
<li class="itemize">position of the recording source
     </li>
<li class="itemize">position of the reconstruction source
     </li>
<li class="itemize">position of the observer
     </li>
<li class="itemize">recording wavelength
     </li>
<li class="itemize">reconstruction wavelength</li>
</ul>
<p>All these values are entered into the main file, i.e.&nbsp;<span class="obeylines-h"><span class="verb">holopov.pov</span></span>.
</p>
<p class="section-head">The object</p>
<p>These are the parameters that define the object:</p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">obj_dist</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">obj_angle</span></span>                                                                                                                                             </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">obj_side_angle</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">obj_theta</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">object_size</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">grid_sep</span></span></li>
</ul>
<p>After a lot of thought, I decided that spherical polar coordinates were the best way to enter the data for the object, at least for me. </p>
<p><span class="obeylines-h"><span class="verb">obj_dist</span></span> is the distance of the center of the object from the origin, i.e.&nbsp;from the center of the plate. This value is always positive. </p>
<p><span class="obeylines-h"><span class="verb">obj_angle</span></span> is the angle of the object in the <i>y</i>&#x2013;<i>z</i> plane, i.e.&nbsp;above or below the horizon. </p>
<p><span class="obeylines-h"><span class="verb">obj_side_angle</span></span> is the angle of the object in the <i>x</i>&#x2013;<i>z</i> plane, i.e.&nbsp;the angle if we were looking directly from above. </p>
<p><span class="obeylines-h"><span class="verb">obj_theta</span></span> is the angle around the <i>y</i>-axis. This the angle one would see if one were looking down the <i>y</i>-axis from above. </p>
<p>To have an object in the observer space, i.e.&nbsp;z &lt; 0, we can use values of <span class="obeylines-h"><span class="verb">obj_theta,&nbsp;obj_angle</span></span> &gt; 90<sup >&#x2218;</sup> or &lt; &#x2212;90<sup >&#x2218;</sup>. </p>
<p><span class="obeylines-h"><span class="verb">object_size</span></span> needs some explanation. I have defined an object to be not just a point, but a 3-dimensional grid of points. The three coordinates in <span class="obeylines-h"><span class="verb">object_size</span></span> define the extent of the image in each axis. For example <span class="obeylines-h"><span class="verb">&lt;2,2,2&gt;</span></span> means a cube, with dimension <span class="obeylines-h"><span class="verb">2</span></span> on each side. <span class="obeylines-h"><span class="verb">grid_sep</span></span> defines the distance between successive grid points. The smaller the value of <span class="obeylines-h"><span class="verb">grid_sep</span></span>, the more grid points will be present. If <span class="obeylines-h"><span class="verb">object_size</span></span> is set to <span class="obeylines-h"><span class="verb">&lt;2,0,2&gt;</span></span>, the grid will effectively be a sheet, with zero height. </p>
<p>Please note that values corresponding to object distance and angle refer to the average object position, i.e.&nbsp;the center of the object. </p>
<p class="section-head">Recording geometry</p>
<p>Here are the values to set:</p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">ref_dist</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">ref_angle</span></span>                                                                                                                                             </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">ref_side_angle</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">ref_theta</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">lambda_r</span></span></li>
</ul>
<p>Again we use spherical polar coordinates. <span class="obeylines-h"><span class="verb">lambda_r</span></span> is the wavelength used for recording the hologram. Again we should be able to use angles &gt; 90<sup >&#x2218;</sup> and &lt; &#x2212;90<sup >&#x2218;</sup> to have, for example, a converging beam. I need to do a bit more thinking on this. For example, how to distinguish between a converging beam and a diverging beam, both referring to the same point in space. I hope that we can have a sign system that caters for all combinations. </p>
<p class="section-head">Reconstruction geometry</p>
<p>Here are the corresponding values in reconstruction:</p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">rec_dist</span></span>
     </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">rec_angle</span></span>
     </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">rec_side_angle</span></span>
     </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">rec_theta</span></span>
     </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">lambda_c</span></span></li>
</ul>
<p class="section-head">Observer</p>
<p>These values define the observer:</p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">obs_dist</span></span>                                                                                                                                             </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">obs_angle</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">obs_side_angle</span></span></li>
</ul>
<p>I have been using angles of zero, and a negative observer distance to signify an observer on the <i>z</i>-axis, but to be consistent with above. </p>
<p class="section-head">Camera settings</p>
<p>These are the more or less standard settings used in <i>POV-ray</i> for the camera:</p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">camera_loc</span></span> &#x2013; The camera position. Presently in cartesian coordinated,      but might be better to change it to polar in future releases.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">camera_look</span></span> &#x2013; Center of the rendered image.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">camera_angle</span></span> &#x2013; As in the normal <i>POV-ray</i> definition. To zoom in, we      decrease this value.      </li>
</ul>
<p class="section-head">H1 and H2</p>
<p>I have managed to simulate the effect of having a master hologram, or as it is normally referred to, the H1. The hologram doing the final imaging, I will always refer to as the H2. The dimensions of the two plates are set by:</p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">h1_width</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h1_height</span></span>      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h2_width</span></span>                                                                                                                                             </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h2_height</span></span></li>
</ul>
<p>The main reason for setting the dimensions of the two plates is to take into account the image cut-off, or vignetting, that occurs as the viewer moves around. We also need a value to define the position of the H1 relative to H2. We could of course give the distance between the two, but I have opted to define <span class="obeylines-h"><span class="verb">h1_sep</span></span>, which is the distance from the center of the object to that of the H1. So as we change the position of the object, all other values being equal, we are also implicitly changing that of the H1. </p>
<p class="section-head">Options</p>
<p>I have put in a lot of options which have a bearing on how the final image is drawn. These are set as parameters that are tested later in <span class="obeylines-h"><span class="verb">holopov.inc</span></span>. A value of 0 implies the value is false, any other value sets the value to true. Here are the list of options now available: </p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">object_points_true</span></span> &#x2013;  Draws  a  sphere  at  each  object  grid  point.      The  color  is  a  color  approximating  to  the  recording  wavelength.  This      is  achieved  by  the  <span class="obeylines-h"><span class="verb">Wavelength()</span></span> macro  in  <span class="obeylines-h"><span class="verb">CIE.inc</span></span> (see  the  file  for      details). The radius of the sphere is determined by <span class="obeylines-h"><span class="verb">object_sphere_rad</span></span>      in <span class="obeylines-h"><span class="verb">holopov.inc</span></span>.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">object_grid_true</span></span> &#x2013; Joins up the object grid points with cylinders, color      as  above.  The  radius  of  the  cylinder  is  set  by  <span class="obeylines-h"><span class="verb">grid_cylinder_rad</span></span> in      <span class="obeylines-h"><span class="verb">holopov.inc</span></span>.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">image_points_true</span></span> &#x2013;  As  with  <span class="obeylines-h"><span class="verb">object_points_true</span></span>,  but  for  image      points. Color corresponds to the reconstruction wavelength. Radius is set      by <span class="obeylines-h"><span class="verb">image_sphere_rad</span></span>. I have set the object and image radii separately.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">image_grid_true</span></span> &#x2013; As with <span class="obeylines-h"><span class="verb">object_grid_true</span></span>, but for the image. The      radius of the cylinder is set by <span class="obeylines-h"><span class="verb">grid_cylinder_rad</span></span>.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">ref_beam_true</span></span> &#x2013; Draws four lines from the reference point to the four      corners of the recording plate. The &#x2018;lines&#x2019; are actually cones which taper      to zero at the reference point. The maximum radius of the cone is equal      to <span class="obeylines-h"><span class="verb">ray_radius</span></span>. Color approximates to the reference wavelength.                                                                                                                                             </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">rec_beam_true</span></span> &#x2013;  As  with  <span class="obeylines-h"><span class="verb">ref_beam_true</span></span>,  but  for  the  reconstruction      beam. Color as expected.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">obj_beam_true</span></span> &#x2013; Draws a cylinder from the center of the plate to the      position of the observer. Color that of the recording wavelength, radius      set by <span class="obeylines-h"><span class="verb">ray_radius</span></span>.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">image_beam_true</span></span> &#x2013; Joins the center of the image to the observer position.      The  section  from  the  observer  to  the  plate  is  a  solid  cylinder,  radius      determined by <span class="obeylines-h"><span class="verb">ray_radius</span></span>, and the section from the plate to the image      is  drawn  as  a  dotted  line.  Paramters  for  this  are  <span class="obeylines-h"><span class="verb">dotted_space</span></span> and      <span class="obeylines-h"><span class="verb">dotted_ray_rad</span></span>.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">eye_true</span></span> &#x2013; Draws a pair of eyes, a bit evil looking at present, at the      observer position, and looking at the center of the image.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">plate_true</span></span> &#x2013; Draws the recording plate, the dimensions of which are      determined by <span class="obeylines-h"><span class="verb">Plate</span></span>, in <span class="obeylines-h"><span class="verb">holopov.inc</span></span>. I have left this in the <span class="obeylines-h"><span class="verb">.inc</span></span> file,      as I have not had to change it much, but it can be moved to the main      <span class="obeylines-h"><span class="verb">.pov</span></span>&nbsp;file.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">vignette_true</span></span> &#x2013; This option will draw only those parts of the image      which would be visible with the geometry described, i.e.&nbsp;the image will      be cut off at the edges of the plate.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">disp_comp_true</span></span>  &#x2013;   Uses   &#x2018;dipersion   compensation&#x2019;.   This   means   it      disregards the value set for <span class="obeylines-h"><span class="verb">rec_angle</span></span>, and adjusts it so that the image is      reconstructed as close to the object position as possible. In other words,      it compensates for lateral chromatic dispersion.      </li>
</ul>
<p class="section-head">H1 and H2 options</p>
<p>We&#x2019;ll list the H2 options first, as the the H2 is always present, but H1 is optional: </p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">h2_visible</span></span> &#x2013; This just means that the H2 plate is drawn in the final      rendering. Sometimes it might be best not to draw it.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h2_vignette_true</span></span> &#x2013;  This  will  simulate  the  vignetting  effect,  or  the      cut-off, of the h2. In other words, an image point is drawn only when the      straight line from that point to the eye intersects with the H2. This works      for real and virtual images.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h2_vignette_visible</span></span> &#x2013; This draws a faint volume in space, rather like      a distorted pyramid, showing how the vignetting works. It is included for      educational purposes.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h1_visible</span></span> &#x2013; As above, but shows the H1. I have only tried this in viewer      space, i.e.&nbsp;a real image of the H1 projected, but it should work in the case      of a virtual image too.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h1_vignette_true</span></span> &#x2013;  As  with  H2,  but  this  is  far  more  important  for      holgraphers, as it determines the viewing angle for the image.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">h1_vignette_visible</span></span> &#x2013; As with H2.</li>
</ul>
<p class="section-head">Camera options</p>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb">camera_observer_true</span></span> &#x2013; The camera is at the observer position (between      the two eyes!). I have added <span class="obeylines-h"><span class="verb">0.1*y</span></span> to its value later, so that the camera is      not blocked by the image or object beams cylinders, if these are present.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">look_at_image_true</span></span> &#x2013; Always keeps the center of the image in the center      of the picture.      </li>
<li class="itemize"><span class="obeylines-h"><span class="verb">orthographic_true</span></span> &#x2013; Uses orthographic viewing. Useful if looking down      at one of the axes. Actually, we are using a &#x2018;cheat&#x2019; orthographic view,      because true orthographic is not compatible with <span class="obeylines-h"><span class="verb">screen.inc</span></span> which we      need in order to put the data in the corner of the image. In our case we set a high value for the distance of the camera, and adjust the camera angle to      a very small one. If you are interested, see <span class="obeylines-h"><span class="verb">#if&nbsp;(orthographic_true)&#8230;</span></span>      in <span class="obeylines-h"><span class="verb">holpov.inc</span></span>.      </li>
</ul>
<p class="section-head">Multiple images</p>
<p>Quite often we want to superimpose in the same picture, the result of varying one of the values, for example, observer position, reconstruction wavelength, etc. I have defined a variable called <span class="obeylines-h"><span class="verb">repeat_image</span></span>. This can be set to a value which determines which parameter is to be varied. For example, we can say <span class="obeylines-h"><span class="verb">#declare&nbsp;repeat_image&nbsp;=&nbsp;Lambda_c</span></span> to vary the reconstruction wavelength. Note the upper case first letter to distinguish this &#x2018;choice&#x2019; from the actual value, which is <span class="obeylines-h"><span class="verb">lambda_c</span></span>. (I have previously set <span class="obeylines-h"><span class="verb">Lambda_c</span></span> to a number, so this is just a trick to make it easier to remember what is to be varied.) </p>
<p>In <span class="obeylines-h"><span class="verb">holopov.pov</span></span> I have inserted and commented out all the possible variables, so these just need to be uncommented. If nothing is to be varied, then we choose <span class="obeylines-h"><span class="verb">None</span></span>. </p>
<p>The value <span class="obeylines-h"><span class="verb">repeat_amplitude</span></span> determines the &#x2018;amplitude&#x2019; of the variation around the central value set previously. So, for example, if <span class="obeylines-h"><span class="verb">lambda_c</span></span> has been set to <span class="obeylines-h"><span class="verb">550</span></span>, and <span class="obeylines-h"><span class="verb">repeat_amplitude</span></span> is set to <span class="obeylines-h"><span class="verb">150</span></span>, then the range for repetition will be from 400 to 700nm. The number of steps is determined by <span class="obeylines-h"><span class="verb">number_of_steps</span></span>. A value of <span class="obeylines-h"><span class="verb">2</span></span> will result in two variations, one for 400 and one for 700nm. </p>
<p class="section-head">Animation</p>
<p>In addition to multiple images in the same output, we can animate the scene by varying any of these parameters. Using multiple images and animations are independent, so it is possible to have a multiple image that is animated too. For instance, we can show the effect of using different wavelengths to reconstruct in the same scene, using multiple images, then animate that whole scene by moving the observer in an arc, by varying <span class="obeylines-h"><span class="verb">obs_theta</span></span>. </p>
<p>The equivalent of <span class="obeylines-h"><span class="verb">repeat_amplitude</span></span> in animation is the <span class="obeylines-h"><span class="verb">animate</span></span> variable, and it is set in the same way as in multiple images. </p>
<p>There is one more parameter that determines how the frames are distributed through time: if <span class="obeylines-h"><span class="verb">sinusoidal_true</span></span> is set to zero, then the frames are evenly distributed through time. Otherwise, the distribution is sinusoidal. In other words, the variation is fast near the central value, and slows down towards the extreme values. When the final animation is &#x2018;looped back and forth&#x2019;, this gives a more natural, smooth motion. </p>
<p class="section-head">Running the animation</p>
<p>Please note that a command for running the animation must be given, otherwise the animation settings will be ignored. The precise method for running the animation depends on your installation. You should either choose animation through the user interface, or use a command line if you are using Linux or the command line version on Mac OS&nbsp;X (which is what I use). In any case, the most important point is that the <span class="obeylines-h"><span class="verb">clock</span></span> variable must go from <span class="obeylines-h"><span class="verb">-1</span></span> to <span class="obeylines-h"><span class="verb">1</span></span>. Other options, such as total number of frames, resolution, etc, are set according to your preference. </p>
<p>Of course <i>POV-ray</i> can only produce the individual frames for an animation. You will need to use a utility to convert these to a true movie file. I use QuickTime Pro, and it works pretty well. The best way to look at the animation is to loop the animation back and forth continuously. In QT&nbsp;Pro, choose &#x2018;loop back and forth&#x2019; from the Movie menu. </p>
<h3 style="font-size: 1.45em">Other comments</h3>
<p class="section-head">Data output</p>
<p>The reason for including <span class="obeylines-h"><span class="verb">screen.inc</span></span> is to allow data to be output to the file. This works very nicely. Presently only a few values are output, and there is no choice as to what to print. I need to spruce this up a bit. </p>
<p class="section-head">The maths</p>
<p>This was a bit more complex than I thought. The basic equations are those of Champagne of course, but there is a basic complication in display holography which                                                                                                                                        is not normally mentioned. In a conventional optical system, the &#x2018;pupil&#x2019; is normally given, and the principal ray is that which goes through the center of the pupil. So we can apply the equations and get the answer. In a display hologram, we don&#x2019;t know where the pupil will be. In other words, the precise spot on the hologram that the observer looks through is not fixed. If the wavelength is changed, the image will shift, and the observer will be looking through a different part of the hologram in order to see the same image point. The same happens of course if the observer moves. That point is the center of our optical system. </p>
<p>So before using the elegant equations of Champagne, I had to use an iterative method (Newton&#x2019;s approximation) to find the principal ray. Only then could I apply the equations. This process has to be repeated for each point in a grid.
<p> I will detail the mathematical background in another article soon. </p>
<p class="section-head">Divisions by zero</p>
<p>I have caught a few cases where division by zero occurs, e.g. when <span class="obeylines-h"><span class="verb">obj_dist&nbsp;=&nbsp;0</span></span>. In this case I use the simple trick of giving it a very small distance. (I think I am showing that I am not a <i>real</i> programmer!) I appreciate any more cases of such errors, as well as suggestions of better ways to avoid them. </p>
<p class="section-head">Lighting</p>
<p>This is set as a simple set of two lights, which can be changed.</p>
<h3 style="font-size: 1.45em">Things to do</h3>
<p class="section-head">Short term</p>
<ul class="itemize1">
<li class="itemize">Check angles for points in &#x2212;z region
     </li>
<li class="itemize">Group items better as macros in <span class="obeylines-h"><span class="verb">holopov.inc</span></span>
     </li>
<li class="itemize">Improve data display
     </li>
<li class="itemize">Provide option for a solid looking cube, rather like ball and sticks, as now.
     </li>
<li class="itemize">Provide a user-friendly GUI. It is important that this is portable, and<br />
     more or less device independent. I am presently trying out Revolution<br />
     (<a href="http://www.runrev.com" target="_blank">http://www.runrev.com</a>)
     </li>
</ul>
<p class="section-head">Longer term</p>
<ul class="itemize1">
<li class="itemize">Show a &#x2018;real&#x2019; object and its image, not just grid points or cubes
     </li>
<li class="itemize">Incorporate conventional optics (like a field lens) to modify image
     </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://holographer.org/holopov-a-previsualization-program-for-holographers-version-05/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Visual perception and the holographic image</title>
		<link>http://holographer.org/visual-perception-and-the-holographic-image/</link>
		<comments>http://holographer.org/visual-perception-and-the-holographic-image/#comments</comments>
		<pubDate>Thu, 29 Apr 2004 17:11:46 +0000</pubDate>
		<dc:creator>Kaveh</dc:creator>
				<category><![CDATA[Optics]]></category>
		<category><![CDATA[Article]]></category>
		<category><![CDATA[Holographic image]]></category>
		<category><![CDATA[Michael Dalton]]></category>
		<category><![CDATA[Perception]]></category>
		<category><![CDATA[Visual]]></category>

		<guid isPermaLink="false">http://wordpress.holographer.net/?p=550</guid>
		<description><![CDATA[
Michael Daltonmdalton@mac.com
About the authorMichael is a physicist who became interested in holography around 1983. He was co-founder and Technical Business Director of Voxel&#x2014;a company which developed and patented the concept of multiple exposure Digital Holograms (Voxgrams) for medical applications. He was awarded US patent number 6123733 for the simulation of Voxgrams on desktop computers. He [...]]]></description>
			<content:encoded><![CDATA[<div class="author-data">
<p><a href="http://wordpress.holographer.net/wp-content/uploads/2009/06/dalton-photo.jpg" target="_blank"><img src="http://wordpress.holographer.net/wp-content/uploads/2009/06/dalton-photo.jpg" alt="Michael Dalton" title="Michael Dalton" width="100" height="121" class="alignleft size-full wp-image-551" /></a><span class="author">Michael Dalton</span><br /><span><a href="mailto:mdalton@mac.com">mdalton@mac.com</a></span></p>
<p class="bio"><strong>About the author</strong><br />Michael is a physicist who became interested in holography around 1983. He was co-founder and Technical Business Director of Voxel&#x2014;a company which developed and patented the concept of multiple exposure Digital Holograms (Voxgrams) for medical applications. He was awarded US patent number 6123733 for the simulation of Voxgrams on desktop computers. He has a strong interest in visual perception.</p>
</div>
<p><span id="more-550"></span></p>
<div class="download-pdf"><a href="/media/articles/hg00005.pdf" target="_blank">Download PDF</a></div>
<p>In a period where the term &#x201C;Holographic&#x201D; can be applied to just about anything, even a lipstick (L&#x2019;Oreal&#x2019;s Glam Shine), I thought it an good time to go back to first principles and to reflect on what is distinctive about a holographic image and in what when it is an appropriate solution to a visual problem. If we consider the relevant features of the viewers visual system we may be able to construct a better holographic image or three-dimensional imaging system.</p>
<p>A viewer&#x2019;s visual perception of the world is based on a complex relationship between the eye and the brain. The eye consists of a physical optical system e.g.&nbsp;a lens, and light sensors. The brain contains the neurological system used to interpret the information passed from the eye through the visual cortex to the brain. The parts of the visual system of particular interest to us are the 3D depth perception mechanisms, or depth cues. Whilst depth perception is a complex sum of all of these depth cues, it can be divided into two broad categories: physiological and psychological. </p>
<p class="section-head">Physiological depth cues</p>
<p>These are considered the strongest depth cues because they are dependent on physical changes in the eye&#x2019;s optical system. The first three (accommodation, motion parallax, and convergence) can be considered monocular depth cues, since they can be used by those with sight in only one eye. </p>
<ul class="itemize1">
<li class="itemize">Accommodation &#x2013; This depth cue is dependent on the control of the shape      of the eyes by the ciliary muscles to bring the image formed on the retina      into a sharp focus.      </li>
<li class="itemize">Motion parallax &#x2013; Of two objects moving at the same speed, that which is further from the viewer projects an image which moves across the eye&#x2019;s retina more slowly than the one which is closer. Therefore the further      objects  will  appear  to  move  more  slowly  than  those  which  are  closer.      Correspondingly, if the viewer is moving and the objects are stationary,      then the objects which are closer will appear to move faster than those at      a greater distance.      </li>
<li class="itemize">Convergence &#x2013; To bring an object into focus in the most sensitive portion      of the eye, the fovea, objects which are closer require the eyeballs to twist      towards each other more (larger convergence angle), than those at a greater      distance (smaller convergence angle).      </li>
<li class="itemize">Binocular  disparity  &#x2013;  This  is  a  complex  binocular  depth  cue,  which      assumes that the image projected onto the area of the back of each eye      ball, is focused on the same object, and hence is intimately related to      the convergence cue. It relies upon the correlation, and hence disparity or      lack of correlation, between the two images perceived by the brain. Points      that are farther away will appear to have a greater disparity or separation      between each perceived image, than those closer to each other. The brain      interprets this disparity as being closer, or further to the viewer than the      point of convergence.</li>
</ul>
<p class="section-head">Psychological depth cues</p>
<p>These depth cues are not derived from physical changes in the viewers eyes, but rather from a higher level interpretation of the images passed from the eyes to the visual cortex in the brain. These depth cues result from our brain&#x2019;s previous knowledge of how 3D objects should appear in the real world, but, as the renaissance artists in the 15th and 16th centuries realized, can also be triggered by two-dimensional image representations, such as canvases, to create the illusion of depth. They are characterized by being relative measures of distance; they require comparison with other objects in a scene before they can used to infer their relative distances from the observer. These depth cues, when separated from their natural (physiological) counterparts in the 2D world, can become ambiguous as many illusionists and artists, such as Escher, have shown to great effect. </p>
</p>
<ul class="itemize1">
<li class="itemize">Stereopsis  &#x2013;  One  of  the  strongest  psychological  depth  cues,  for  those      with binocular vision is stereopsis, which can be considered as part of the  binocular  disparity  cue,  but  which  can  be  triggered  by  pairs  of      two-dimensional images or stereo displays such as anaglyphs.      </li>
<li class="itemize">Occlusion  &#x2013;  An  object  which  is  nearer  to  the  viewer  can  partially  or      completely obscure those further away.      </li>
<li class="itemize">Linear perspective &#x2013; As an object moves away from the eye the image      projected onto the back of the eye decreases in size and so we perceive      them as becoming smaller.      </li>
<li class="itemize">Aerial perspective &#x2013; The further an object is, the more atmosphere there      is between us and the object. The atmosphere causes light to be scattered,      and has a tendency to scatter blue light more. Thus as objects recede in      distance their contrast will decrease and they will appear bluer. This is      most apparent when looking at distant objects such as mountain ranges,      but the effect can also be seen in a smoke-filled room.      </li>
<li class="itemize">Size &#x2013; An object that is closer to us will appear larger than when it      is moved farther away. If we recognise the object and can determine its      relative size in the scene, we can judge the relative depths of objects in      the scene.      </li>
<li class="itemize">Shading/shadows &#x2013; The shading of an object, the way that light falls on      and is reflected by it, can give clues to its orientation, which can be used      to relate it to other objects in a scene. When used with other psychological      depth cues it can help to sort the relative depths of objects in scene. If      an object casts a shadow onto another, then we can determine that it is      closer to the light source &#x2013; an interpretation which can also aid in sorting      the relative distances of objects.</li>
</ul>
<p class="section-head">Ranges of depth cues</p>
<p>Now let us consider over what distance ranges these depth cues are most effective. In this way we can determine which depth cues are most relevant in particular situations.</p>
<p class="section-head">Near range depth cues (15&nbsp;cm&#x2013;1.5&nbsp;m)</p>
<p>These depth cues are most important when dealing with objects at arm&#x2019;s length, such as a surgeon operating with a scalpel or a wine grower picking a grape from a vine. They are implicitly used in everyday tasks which require visual feedback to the brain&#x2019;s motor control system, such as when we pick up an object. Of the psyhcological cues, occlusion (think of threading a needle) and stereopsis are most useful at this near range. </p>
<p class="section-head">Medium range depth cues (1.5&#x2013;150&nbsp;m)</p>
<p>Here recognising an object (is it a tiger or a cat?) and the rate that it is moving (is&nbsp;that car going to knock me down?) are important visual questions. The importance of the physiological depth cues starts to diminish with increasing depth and we become more reliant on the psychological depth cues. </p>
<p class="section-head">Long range depth cues (150&nbsp;m&#x2013;15&nbsp;km)</p>
<p>Here the physiological depth cues dominate and at great distances the occlusion and aerial perspective are the only cues which have much effect.</p>
<div class="float"  >
<table class="float" style="border-top: 1px dotted #6464dc; padding-top: 2px;">
<tr class="float">
<td class="float">Table&nbsp;1.&nbsp;Importance of depth cues at different distances
<div   class="centerline" style="margin: 0px; padding: 0px;"><!--tex4ht:inline--></p>
<div class="tabular" style="margin: 0px; padding: 0px;">
<table class="tabular" width="520px"  cellspacing="2" cellpadding="5" style="border-bottom: 1px dotted #6464dc; padding-bottom: 2px;  line-height: 2em;" frame="void" id="TBL-1-" >
<colgroup id="TBL-1-1g">
<col  id="TBL-1-1" />
<col  id="TBL-1-2" />
<col  id="TBL-1-3" />
<col  id="TBL-1-4" /></colgroup>
<tr    bgcolor="#ecec9c"   valign="baseline" id="TBL-1-1-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-1-1"   class="td11">    Range                   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-1-2"   class="td11">    Near    </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-1-3"   class="td11">    Medium    </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-1-4"   class="td11">    Far    </td>
</tr>
<tr    bgcolor="#cecece"  valign="baseline" id="TBL-1-2-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-2-1"   class="td11">    <b>Physiological</b>          </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-2-2"   class="td11">             </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-2-3"   class="td11">                 </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-2-4"   class="td11">           </td>
</tr>
<tr    bgcolor="#ecec9c"   valign="baseline" id="TBL-1-3-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-3-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Accommodation      </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-3-2"   class="td11">    &#x2022;&#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-3-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-3-4"   class="td11">           </td>
</tr>
<tr    bgcolor="#cecece"  valign="baseline" id="TBL-1-4-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-4-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Motion Parallax        </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-4-2"   class="td11">    &#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-4-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-4-4"   class="td11">           </td>
</tr>
<tr    bgcolor="#ecec9c"   valign="baseline" id="TBL-1-5-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-5-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convergence           </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-5-2"   class="td11">    &#x2022;&#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-5-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-5-4"   class="td11">           </td>
</tr>
<tr    bgcolor="#cecece"  valign="baseline" id="TBL-1-6-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-6-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Binocular Disparity    </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-6-2"   class="td11">    &#x2022;&#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-6-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-6-4"   class="td11">           </td>
</tr>
<tr  class="vspace" style="font-size:6.0pt">
<td  >&nbsp;</td>
<td  >&nbsp;</td>
<td  >&nbsp;</td>
<td  >&nbsp;</td>
</tr>
<tr    bgcolor="#ecec9c"   valign="baseline" id="TBL-1-7-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-7-1"   class="td11">    <b>Psychological</b>         </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-7-2"   class="td11">             </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-7-3"   class="td11">                 </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-7-4"   class="td11">           </td>
</tr>
<tr    bgcolor="#cecece"  valign="baseline" id="TBL-1-8-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-8-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stereopsis               </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-8-2"   class="td11">    &#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-8-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-8-4"   class="td11">    &#x2022;   </td>
</tr>
<tr    bgcolor="#ecec9c"  valign="baseline" id="TBL-1-9-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-9-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Occlusion              </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-9-2"   class="td11">    &#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-9-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-9-4"   class="td11">    &#x2022;   </td>
</tr>
<tr    bgcolor="#cecece" valign="baseline" id="TBL-1-10-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-10-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linear Perspective     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-10-2"   class="td11">    &#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-10-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-10-4"   class="td11">    &#x2022;   </td>
</tr>
<tr    bgcolor="#ecec9c"  valign="baseline" id="TBL-1-11-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-11-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aerial Perspective    </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-11-2"   class="td11">             </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-11-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-11-4"   class="td11">    &#x2022;   </td>
</tr>
<tr    bgcolor="#cecece" valign="baseline" id="TBL-1-12-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-12-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size                      </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-12-2"   class="td11">    &#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-12-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-12-4"   class="td11">    &#x2022;   </td>
</tr>
<tr    bgcolor="#ecec9c"  valign="baseline" id="TBL-1-13-">
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-13-1"   class="td11">    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shading                </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-13-2"   class="td11">    &#x2022;   </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-13-3"   class="td11">    &#x2022;     </td>
<td valign="middle"  align="left" style="white-space:nowrap;" id="TBL-1-13-4"   class="td11">    &#x2022;   </td>
</tr>
</table></div>
</div>
<div   class="centerline">
<table class="minipage">
<tr>
<td></td>
</tr>
</table></div>
</td>
</tr>
</table>
</div>
<p>When we are considering the creation of an image or visual display system, by looking at these depth cues, we can construct a display which works to complement our visual perceptive system. To underline the importance of taking these into account, let us first the effect of situations which cause conflicting inputs to our perception system: </p>
<p>Travel sickness &#x2013; This is a condition caused by the conflict between sensory inputs to the brain. If I am reading while I am being rocked about by the motion of the car or boat in which I am travelling, my visual system tells me that the book I am reading is stationary, but my inner ear tells me I am moving. This conflict between the visual system and the detection of motion from the inner ear can lead to feelings of nausea. By looking out the window instead of reading, the two perception systems both report the same information to the brain and the feeling of nausea will recede.
<p> The complement to this type of conflict can be found in the works of the OpArt or Kinetic artists. Here the viewer is stationary but may see motion in the visual field caused by the interaction of high contrast edges at various angles and frequencies. A more serious occurrence of this type of perceptive conflict may be found in people with &#x2018;scotopic sensitivity syndrome&#x2019; where high-contrast repeated patterns such as window blinds or even text on a page can cause feelings of nausea. Once solution being investigated by researchers is to find a particular coloured filter which minimises the effect on the viewer. </p>
<p class="section-head">Holographic systems</p>
<p>First let us consider the &#x201C;gold standard&#x201D; of holography &#x2013; A full-aperture hologram made at a single wavelength and replayed with the same reference beam.
<p>A full-aperture hologram of an object can trigger all the depth cues that the real object would. There is nothing to suggest that the shape of the object is not in fact &#x201C;real&#x201D; other than it&#x2019;s monochromatic. Just as in the real world, the physiological and psychological depth cues work together and do not conflict each other. Any distortions in the reconstruction system tend to be minimized near the plane of the holographic film, so objects tend to be placed as close as possible to the film plane. Because of this proximity to the viewer, the physiological cues are the most important. </p>
<p>Therefore full aperture holograms are best suited to those displays where the viewer is going to come close to the display and be within a distance that they could interact with the object. Such examples would be in museums or exhibitions. Placing the hologram far from the viewer reduces the effect of the physiological cues and hence reduces its three-dimensional impact on the viewer &#x2013; one may just as effectively use a video display or stereo display system (e.g.&nbsp;lenticular) to get the viewer&#x2019;s attention. Unfortunately, the type of objects that can be used in this form of full-aperture holography is restricted by the size of holographic film, and by the need for the object to be motionless for the duration of the holographic exposure.
<p> However there are circumstances where it is not practical to make a full-aperture hologram of the object, due to its size or susceptibility to motion. Here we may resort to stereo displays, which use pairs of two-dimensional images to trigger only the binocular disparity from the physiological and the psychological depth cues. Such examples can be found in lenticular displays, anaglyphs and stereograms. Stereograms use holography to create a series of virtual slits through which the viewer can see stereo pairs of images, without the need for glasses. Since the 2D images used in the recording of these stereograms can generated from any photographic or other scanning technique, or from computer generated simulations or designs, any size of object can be used to create them. </p>
<p>There is, however, a problem with stereo display systems. When used to display near-range objects, the physiological depth cues of accommodation, and convergence both report to the visual system that they are looking at two flat images at a single depth. However the other depth cues, especially binocular disparity (and&nbsp;hence stereopsis) are all reporting differing depths, and this conflict can lead to nausea if the viewer is exposed to such displays for an extended length of time. Therefore, I would not consider using such a system for a surgical applications for example, where the surgeon may be operating for periods of 10 or more hours on a patient at arms length!
<p> This conflict between physiological and psychological depth cues for stereo displays can be tolerated at near ranges for short periods of time. If the display has to be viewed for longer periods of time, e.g.&nbsp;movies, then we can limit objects appearing in the near range, where the physiological depth cues will report conflict, and instead keep them at the medium and long ranges where the physiological depth cues are weak. One other technique for reducing this conflict is to restrict the range of depths in the scene so that the disparity between the depth cues is minimized. </p>
<p class="section-head">Conclusion</p>
<p>I have briefly explored the relationship between the physiological, and psychological depth cues and how these consideration can be relevant when creating holographic images of scenes which consist of near, medium and far ranges. In a future article I will explore how an understanding of other aspects of the viewer&#x2019;s perception system, can be useful when constructing a holographic image or another 3D imaging system. </p>
]]></content:encoded>
			<wfw:commentRss>http://holographer.org/visual-perception-and-the-holographic-image/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
