STANNIX Community


Manual: pamstereogram

Pamstereogram User Manual(1)			   General Commands Manual			Pamstereogram User Manual(1)

NAME
       pamstereogram - create a single-image stereogram from a PAM depth map

SYNOPSIS
       pamstereogram  [-help]  [-verbose]  [-blackandwhite  | -grayscale | -color] [-maxval=value] [-patfile=pamfile] [-tex‐
       file=pamfile] [-bgcolor=color] [-smoothing=pixels] [-xbegin=pixels]  [-xshift=pixels]  [-yshift=pixels]	[-yfillshift
       pixels] [-magnifypat=scale] [-guidetop] [-guidebottom] [-guidesize=pixels] [-dpi=resolution] [-crosseyed] [-makemask]
       [-eyesep=inches] [-depth=fraction] [-planes=near_pixels,far_pixels] [-randomseed=integer] [-tileable] [infile]

DESCRIPTION
       This program is part of Netpbm(1).

       pamstereogram  inputs  a depth map (a map of the distances from your eye of the points in a scene) and outputs a sin‐
       gle-image stereogram (SIS). A SIS is a 2-D image specially designed to appear three dimensional when viewed with	 re‐
       laxed,  slightly	 unfocused  eyes.  What's exciting about single-image stereograms is that they don't require special
       glasses to view, although it does require a bit of practice to train your eyes to unfocus  properly.   The  pamstere‐
       ogram program provides a wealth of control over how the stereogram is generated, including the following:

       •      black and white, grayscale, or color output

       •      single-image  random-dot	stereograms  (SIRDS), single-image stereograms (SIS) using a tiled image, or mapped-
	      texture stereograms (MTS)

       •      images targeting a given device resolution and eye separation

       •      optional guide boxes to assist in focusing

       •      the ability to trade off depth levels for easier viewing

       •      choice of wall-eyed or cross-eyed stereograms

       The output is a PAM image on standard output.  Options control the exact format of the PAM.  If you want a PNM  (PBM,
       PGM,  or PPM) image, use pamtopnm on the output.	 There is no need to convert if you will use the image as input to a
       current Netpbm program, but many other programs don't know what a PAM is.

       To make a red/cyan type of stereogram (that you view with 3-D glasses) instead, see ppm3d.

OPTIONS
       You may use either single or double hyphens to denote options.  You may use either whitespace or an  equals  sign  to
       separate an option name from its value.

       In  addition  to	 the  options common to all programs based on libnetpbm (most notably -quiet, see  Common Options ),
       pamstereogram recognizes the following command line options:

       -verbose
	      Display messages about image sizes and formats and properties of the stereogram being generated.

       -blackandwhite
	      Produce a single-image random-dot black-and-white stereogram.  This is the default.

       -grayscale
	      Produce a single-image random-dot grayscale stereogram.

       -color Produce a single-image random-dot color stereogram.

       -maxval=value
	      Designate the maximum value of each gray/color component, i.e.  the color resolution. Smaller values make	 the
	      output image have smaller numbers of unique grays/colors. If you don't specify -maxval, pamstereogram uses the
	      maxval of the input image. This option has no effect with -blackandwhite.

       -patfile=pamfile
	      Specify  an  image to use as a repeated background pattern for the stereogram instead of a random-dot pattern.
	      Intricate images generally produce a crisper 3-D effect that simpler images. The output  file  will  have	 the
	      same maxval and format (black and white, grayscale or color) as the pattern file. You cannot specify the -pat‐
	      file  option along with -blackandwhite, -grayscale, -color, or -maxval.  The -verbose option will give you in‐
	      formation on the ideal dimensions of the pattern file.

       -xbegin=pixels
	      Specify the horizontal coordinate at which to begin stereogram generation.  The  background  pattern  will  be
	      minimally distorted at this point and more distorted at greater distances.  Consider using this in conjunction
	      with  -xshift to align the horizontal start of the pattern with the horizontal start of stereogram generation.
	      -xbegin is meaningful only in conjunction with -patfile, -makemask, or -texfile,	and  pamstereogram  actually
	      ignores it with respect to -texfile (but may not in a future version of pamstereogram).

	      The default is to begin in the center.

	      This option was new in Netpbm 10.71 (June 2015).

       -texfile=pamfile
	      Specify  an image to use as the texture for a mapped-texture stereogram.	The idea is that the depth-map image
	      provides the depth values of the 3-D object/scene while the texture  image  provides  the	 true-color  values.
	      Consequently,  the  texture image should align with the depth-map image.	(Note that it's required to have the
	      same dimensions.)	 The texture image's background color is ignored when blending colors.

	      This option was new in Netpbm 10.53 (December 2010).

       -bgcolor=color
	      Use color as the texture image's background color instead of letting pamstereogram determine it automatically.
	      Specify the color as described for the argument of the pnm_parsecolor() library routine .	 The -bgcolor option
	      is meaningful only in conjunction with -texfile.

	      This option was new in Netpbm 10.53 (December 2010).

       -smoothing=pixels
	      When used without -texfile, attempt to eliminate artifacts introduced by edges in the depth map if  pixels  is
	      greater than zero.

	      When  used  with	-texfile, horizontally blur non-background colors into background pixels up to a distance of
	      pixels pixels.  This helps smooth over distracting glitches introduced by the stereogram's  color	 constraints
	      when  producing  a mapped-texture stereogram.  In this case, the -smoothing option is helpful when the texture
	      image includes smooth color transitions (as in a photograph) but makes crisp texture  images  (as	 in  a	line
	      drawing) appear blurry.

	      This  option  was	 new in Netpbm 10.53 (December 2010).  Before Netpbm 10.61 (December 2012), it has no effect
	      without -texfile.

       -xshift=pixels
	      Shift the pattern image (designated by -patfile) to the right by pixels pixels (default: 0).

	      This option is valid only along with -patfile.

       -yshift pixels
	      Shift the pattern image (designated by -patfile) downwards by pixels pixels (default: 0). This option is valid
	      only along with -patfile.

       -yfillshift pixels
	      Shift the pattern image (designated by -patfile) downwards by pixels pixels (default: 0) but  only  after	 the
	      initial  population  of the pattern.  (If used with -yshift the resulting shifts are summed.)  A small -yfill‐
	      shift helps reduce visual artifacts in the 3-D image.  Steer's website, referenced under SEE ALSO , recommends
	      a shift of approximately 1/16" (6-7 pixels at pamstereogram's default of 100 DPI).

	      This option was new in Netpbm 10.94 (March 2021).

       -magnifypat=scale
	      Magnify each pixel in the pattern file or each random dot by integral scaling factor  scale.  Note  that	pam‐
	      stereogram applies the pattern magnification after pattern shifting (-xshift and -yshift).

       -guidebottom
	      Draw  a  pair  of black squares on a white background underneath the stereogram proper. These squares help you
	      guide your eyes into proper focus to view the 3-D image.	The trick is to focus your eyes some distance behind
	      the image, causing you to see four black squares, then continue altering your focus distance until the  middle
	      two black squares fuse into a single black square. At that point, a crisp, 3-D image will appear.

	      This option was new in Netpbm 10.61 (December 2012).  Before that, the presence of -guidesize, with a positive
	      value, has the same effect.

       -guidetop
	      Same as -guidebottom, except the guides go at the top of the image.

	      This option was new in Netpbm 10.61 (December 2012).  Before that, the presence of -guidesize, with a negative
	      value, has the same effect.

       -guidesize=pixels
	      The size (width and height) of each guide box.

	      This is valid only with -guidetop or -guidebottom.

	      Default is 20.

	      Before  Netpbm 10.61 (December 2012), if you don't specify this option, pamstereogram draws no guides.  If you
	      specify it with a positive value, pamstereogram behaves as if you specified -guidebottom too, and if you spec‐
	      ify it with a negative value, it behaves as if you specified -guidetop and specified guidesize  with  the	 ab‐
	      solute value of that negative value.

       -dpi=resolution
	      Specify  the  resolution	of  the	 output device in dots per inch.  The default is 100 DPI, which represents a
	      fairly crisp screen resolution.

	      Before Netpbm 10.53 (December 2010), the default was 96 DPI.

       -crosseyed
	      Invert the gray levels in the depth map (input image) so that the 3-D image pops out  of	the  page  where  it
	      would  otherwise	sink into the page and vice versa. Some people are unable to diverge their eyes and can only
	      cross them. The -crosseyed option enables such people to see the 3-D image as intended.  You can also  specify
	      the  -crosseyed option if you prefer using depth maps in which darker colors are closer to the eye and lighter
	      colors are farther from the eye.

	      Before Netpbm 10.53 (December 2010), pamstereogram used higher (lighter) numbers for things closer to the	 eye
	      without -crosseyed and vice versa.

       -makemask
	      Instead  of  a stereogram, output a PAM mask image showing coloring constraints. New pixels will be taken from
	      the pattern file where the mask is black. Copies of existing pixels will be taken from the pattern file  where
	      the  mask	 is  white. The -makemask option can be used to help create more sophisticated pattern files (to use
	      with -patfile) Note that -makemask ignores -magnifypat; it always produces masks that assume a pattern  magni‐
	      fication of 1.

       -eyesep=inches
	      Specify the separation in inches between your eyes. The default, 2.5 inches (6.4 cm), should be sufficient for
	      most people and probably doesn't need to be changed.

       -depth=fraction
	      Specify  the  output  image's depth of field. That is, fraction represents the fractional distance of the near
	      plane from the far plane. Smaller numbers make the 3-D image easier to perceive but  flatter.  Larger  numbers
	      make the 3-D image more difficult to perceive but deeper. The default, 0.3333, generally works fairly well.

       -planes=near_pixels,far_pixels
	      Explicitly  specify  the	distance between repeated pixels in the near plane and in the far plane.  This is an
	      alternative to -eyesep and -depth.  The following equalities hold:

       •      eyesep = 2 * far

       •      depth = 2 * (far - near) /
		    (2 * far - near)

	      The number of distinct 3-D depths is far - near + 1.  One might say that -eyesep and -depth are a more  human-
	      friendly way to specify stereoscopic parameters (distance between eyes and tradeoff between perceptibility and
	      depth) while -planes is a more computer-centric way (pixel distances in the resulting stereogram).

	      This option was new in Netpbm 10.59 (June 2012).

       -randomseed=integer
	      Specify  a seed to be used for the random number generator.  The default is to use a seed based on the time of
	      day, to one second granularity.

	      It is useful to specify the seed if you want to create reproducible results.  With the same random  seed,	 you
	      should get identical results every time you run pamstereogram.

	      This  is	irrelevant  if	you use a pattern file (-patfile option), because there is no random element to pam‐
	      stereogram's behavior.

	      This option was new in Netpbm 10.32 (February 2006).

       -tileable
	      Make the generated image horizontally tileable.  This works by blending a left-to-right rendering (the equiva‐
	      lent of -xbegin=0) with a right-to-left rendering (the equivalent of -xbegin=width-1).

	      This option was new in Netpbm 10.91 (June 2020).

PARAMETERS
       The only parameter, infile, is the name of an input file that is a depth map image. If you don't specify infile,	 the
       input is from standard input.

       The  input is a PAM image of depth 1. Each sample represents the distance from the eye that the 3-D image at that lo‐
       cation should be.  Lower (darker) numbers mean further from the eye.

NOTES
   Input Images
       pamstereogram pays no attention to the image's tuple type and ignores all planes other than plane 0.

       Like any Netpbm program, pamstereogram will accept PNM input as if it were the PAM equivalent.

   Mapped-texture Stereograms
       In a mapped-texture stereogram (MTS), the 3-D image can be drawn with true colors.  Unlike  a  SIRDS  or	 tiled-image
       SIS,  however,  the  image portrayed by an MTS is apparent in normal 2-D viewing.  It appears repeated multiple times
       and overlapped with itself, but it is not hidden.

       You create an MTS with pamstereogram by passing the filename of a PAM "texture image" with a -texfile option.  A tex‐
       ture image portrays the same 3-D object as the depth-map image but indicates the colors that the program should apply
       to the object.

       pamstereogram ignores the texture image's background color when it overlaps copies of the 3-D object.  This prevents,
       for example, a bright-red object on a black background from being drawn as a dark-red object (a blend of	 50%  bright
       red  and 50% black); instead, the program ignores the black and the object remains bright red.  A consequence of this
       feature is that an MTS looks best when the objects in the texture image have a crisp outline.  Smooth transitions  to
       the  background	color result in unwanted color artifacts around edges because the program ignores only exact matches
       with the background color.

       You should specify a larger-than-normal value for -eyesep (and/or -dpi) when producing an MTS.	Otherwise,  the	 3-D
       object  will  repeat so many times that most colored pixels will overlap other colored pixels, reducing the number of
       true-colored pixels that remain.

       An MTS can employ a background pattern (-patfile).  In this case, pamstereogram replaces background pixels with	pat‐
       tern pixels in the final step of generating the image.

   Miscellaneous
       A  good	initial	 test is to input an image consisting of a solid shape of distance 0 within a large field of maximum
       distance (e.g., a white square on a black background).

       With the default values for -dpi and -eyesep, pattern images that are 128 pixels wide can tile seamlessly.

EXAMPLES
       Generate a SIRDS out of small, brightly colored squares and prepare it for display on an 87 DPI monitor:

	   pamstereogram depthmap.pam \
	       -dpi 87 -verbose -color -maxval 1 -magnifypat 3 \
	       >3d.pam

       Generate a SIS by tiling a PPM file (a prior run with -verbose indicates how wide the  pattern  file  should  be	 for
       seamless tiling, although any width is acceptable for producing SISes):

	   pamstereogram depthmap.pam -patfile mypattern.ppm >3d.pam

       Generate	 an  MTS by associating colors with a depth-mapped object (using a large eye separation to reduce the number
       of repetitions of the texture image) and twice smoothing over background-colored speckles:

	   pamstereogram depthmap.pam \
	       -texfile colormap.pam -smoothing 2 -eyesep 3.5 \
	       >3d.pam

SEE ALSO
       •      pam(1)

       •      pamsistoaglyph(1)

       •      ppm3d(1)

       •      Harold W. Thimbleby, Stuart Inglis, and Ian H. Witten.  Displaying 3D Images: Algorithms for Single Image Ran‐
	      dom Dot Stereograms. In IEEE Computer, 27(10):38-48, October 1994.  DOI: 10.1109/2.318576 .

       •      W. A. Steer.  Stereograms: Technical Details.  URL: http://www.techmind.org/stereo/stech.html(1).

HISTORY
       pamstereogram was new in Netpbm 10.22 (April 2004), but probably broken beyond usability until Netpbm 10.32 (February
       2006) and Netpbm 10.26.23 (January 2006).

       A backward incompatible change to the way you request guide boxes (-guidetop, -guidebottom,  -guidesize	happened  in
       Netpbm 10.61 (December 2012).

AUTHOR
       Copyright © 2006-2020 Scott Pakin, scott+pbm@pakin.org.

Table Of Contents
       •      SYNOPSIS

       •      DESCRIPTION

       •      OPTIONS

       •      PARAMETERS

       •      NOTES

       •      Input Images

       •      Mapped-texture Stereograms

       •      Miscellaneous

       •      EXAMPLES

       •      SEE ALSO

       •      HISTORY

       •      AUTHOR

DOCUMENT SOURCE
       This manual page was generated by the Netpbm tool 'makeman' from HTML source.  The master documentation is at

	      http://netpbm.sourceforge.net/doc/pamstereogram.html

netpbm documentation				       2 January 2021				Pamstereogram User Manual(1)