home *** CD-ROM | disk | FTP | other *** search
/ Der Mediaplex Sampler - Die 6 von Plex / 6_v_plex.zip / 6_v_plex / DISK2 / MULTI_04 / CONVRT.ZIP / CONVERT.DOC < prev    next >
Text File  |  1993-05-12  |  12KB  |  244 lines

  1.  
  2.                 Convert version 1.2
  3.                    May 12, 1993
  4.  
  5.     Copyright 1993 Stephen B. Coy
  6.     All Rights Reserved
  7.  
  8.         Unmodified copies of Convert may be freely distributed via
  9.     BBSs, Internet and services such as CompuServe and BIX.  You may
  10.     not include Convert as part of any commercial product, that
  11.     includes shareware, without explicit permission.  I can be
  12.     contacted at the address below for more info and bug reports.
  13.  
  14.         Stephen Coy
  15.         Vivid Software
  16.         15205 NE 13th Pl., #2904
  17.         Bellevue, WA  98007
  18.  
  19.         (206)641-8615
  20.  
  21.         CompuServe : 70413,136
  22.         Internet   : coy@plato.ds.boeing.com
  23.  
  24.         Convert is based on Convert.exe which is included with
  25.     the shareware ray tracer Vivid.  (plug, plug!)  I've decided to
  26.     move away from Vivid's own .img format and join the rest of the
  27.     world using Truevision's Targa format.  Convert reads truecolor
  28.     Targa files (16, 24 and 32 bit) and Vivid's .img files and
  29.     converts them to 8-bit GIFs.  When 32-bit Targa files are
  30.     converted the alpha data is ignored.  Convert will read both
  31.     run-length encoded and unencoded Targas.
  32.  
  33.          Convert.exe is a real-mode version which should run on
  34.     just about any system.  Conv_386.exe is a 386 compiled version
  35.     which runs about twice as fast and uses a DOS extender so it
  36.     shouldn't run out of memory.
  37.  
  38.          When running convert you have two main decisions to make: a)
  39.         how should the program pick the palette and b) should the program
  40.         do any dithering of the output.  Picking the palette is not
  41.         always an easy problem.  Standard VGA allows us to view only 256
  42.         of the available 262,144 colors.  An "average" lores image will
  43.         have about 7000 colors which we need to represent with our
  44.         palette of 256.  A higher resolution image my have tens of
  45.         thousands of colors to represent.  The following algorithms are
  46.     currently implemented in convert.
  47.  
  48.              Palette File -- A palette may be input via a .map file. 
  49.     This uses the same format as .map files created/read by Fractint.
  50.         This option is useful for creating multiple gifs with the same
  51.         palette for animation. 
  52.  
  53.              Popularity -- The popularity algorithm chooses the palette
  54.         by picking the 256 colors which represent then greatest number of
  55.         pixels in the image.  The remaining colors in the image are
  56.         mapped onto the palette using a minimum distance formula.  The
  57.         popularity algorithm tends to work best on images with a lower
  58.         number of colors.  One typical problem of the algorithm is that
  59.         small highlights may not be colored correctly.  Highlights
  60.         generally only cover a few pixels so their color usually doesn't
  61.         have enough representation in the image to be chosen by the
  62.     popularity algorithm.  To help alleviate this problem, Convert
  63.         forces the corners of the color cube (white, red, green, blue,
  64.         cyan, magenta, yellow, and black) to be selected as the first
  65.         eight palette entries.  Since most highlights are white this
  66.         greatly helps reduce unwanted artifacts in the resulting image. 
  67.     This is the default option for choosing the palette.
  68.  
  69.              Median Cut -- The median cut algorithm tries to choose a
  70.         more well balanced set of colors to represent the image.  The
  71.         general idea of the median cut is to choose a palette in which
  72.         each entry represents about the same number of pixels in the
  73.         image.  This helps to correctly color highlights that a pure
  74.     popularity algorithm might miss.  Convert also allows you to
  75.         limit the number of pixels represented by any one color.  This,
  76.         in effect, increases the importance of the colors in highlights
  77.         and other small regions of the image.  With this limit set to
  78.         one, every color in the image is given the same weight without
  79.     regard for the number of pixels it covers.  This is the option
  80.     you will want to use 90% of the time.
  81.  
  82.              Fixed Palette -- The fixed palette option uses a
  83.         predetermined palette instead of choosing one based on the
  84.         content of the image.  This has the advantage of being much
  85.     faster.  When choosing by popularity or median cut Convert must
  86.         first build a tree structure in memory containing every color in
  87.         the image and a count of the number of pixels represented by that
  88.         color.  After choosing the palette the colors in the tree must
  89.         then be mapped onto the colors in the palette.  This can slow
  90.     Convert down quite a bit.  When using a fixed palette the image
  91.         colors are mapped directly onto the palette colors via simple
  92.         equations eliminating the need for the tree structure and the
  93.         costly remapping of the images colors to an arbitrary palette. 
  94.     Also, the current version of Convert can only support a tree
  95.         containing about 57,000 colors.  After this my clone runs out of
  96.     RAM.  The fixed palettes supported by Convert are:
  97.  
  98.              0 : A grey scale image using 256 grey scale tones.  Due to
  99.         VGA limitations this will display as 64 shades on most PC
  100.     systems.  Of the three fixed palettes supported by Convert this
  101.     is the only one I ever use.
  102.  
  103.              1 : Divides the color cube into 8 shades of red, 8 shades of
  104.         green, and 4 shades of blue.  Generally produces fairly bad
  105.         images but kept in for nostalgia.  Blue was chosen to get the
  106.         lower resolution because in general the human eye is much less
  107.         sensitive in the blue range and has a harder time focusing on
  108.         edges therefore the loss of color resolution is not missed as
  109.         much. 
  110.  
  111.              2 : Divides the color cube into 6 shades of red, 7 shades of
  112.         green, and 6 shades of blue.  This option gives the best balance
  113.         of speed vs good color representation.  I've found that it works
  114.         best with images that have a large number of colors.  The
  115.         addition of dithering is usually helpful. 
  116.  
  117.              Dithering is the process of displaying pixels of differing
  118.         colors next to each other in such a way as to produce the
  119.         illusion of more colors.  An every day example of this is your
  120.         television.  Stick your nose up to the picture tube and notice
  121.         that the screen is made up of tiny red, green, and blue dots
  122.         which vary in intensity.  These are the only colors your TV
  123.         actually produces but your eye combines them to produce the rest
  124.         of the spectrum.  Well, at least the spectrum according to NTSC. 
  125.  
  126.              Floyd Steinberg dithering is the original error diffusion
  127.         dithering algorithm.  Error diffusion dithering attempts to
  128.         compensate for a limited palette by insuring that the sum of the
  129.         errors in any region of the image is zero even though the colors
  130.         at each individual pixel may contain some error.  At each pixel
  131.     as Convert scans through the image the nearest color for that
  132.         pixel is chosen.  Generally this color will not be exact.  The
  133.         difference between the chosen palette color and the true color is
  134.         then added to the neighboring pixels which have not been scanned
  135.         yet.  Floyd Steinberg dithering has the advantage of having a
  136.         "random" look to it.  Generally, it does not produce noticeable
  137.         patterns in the output image. 
  138.  
  139.              Ordered dithering works by adding a fixed amount to each
  140.         pixel based on its location.  The sum of these additions over a
  141.         region of the image is equal to zero.  Since ordered dither does
  142.         not take into account the values of neighboring pixels it
  143.         produces fixed patterns in the images which may be distracting in
  144.         some cases.  Ordered dithering combined with a fixed palette has
  145.     an advantage if you are producing single fames for an animation.
  146.     During an animation the background (non-moving) regions of the
  147.     image will stay constant whereas if you use Floyd Steinberg
  148.     dithering the patterns constantly shift around and below any
  149.     moving objects on the screen.
  150.  
  151.              The random noise option allows you to add white noise to an
  152.         image.  In some cases this may help as much as dithering.  It can
  153.         also be used in conjunction with either of the dithering options. 
  154.         Interesting effects may be obtained by increasing the range of
  155.         the noise.  Images converted with a large amount of noise tend to
  156.         take on a distinctly grainy look.  Interesting, but not overly
  157.     useful.  The default range for the noise is +-4 on a 0..255
  158.         range.  This value was chosen strictly because it seemed to look
  159.         good in most cases.  Random noise has the advantage of being
  160.         constant from image to image.  This means that smooth areas in a
  161.         series of images will not shimmer during animation. 
  162.  
  163.          Ok, fine, now how do I run Convert? Well, it goes like this:
  164.  
  165.     C> convert [-m #] [-f #] [-p palfile] [-d] [-o] [-r [#]] file
  166.  
  167.     If the file name has no extension then Convert will first try
  168.     and open file.tga and then file.img.  If the filename already
  169.     has an extension then it is used "as-is."
  170.  
  171.     [-m #] chooses median cut and limits each color to represent
  172.         at most # pixels.  # defaults to 64K and is optional.
  173.  
  174.     [-f #] chooses fixed palette #.  # defaults to 0, grey
  175.         scale.
  176.  
  177.     [-p palfile] reads the palette out of the file palfile.map.
  178.         If this file does not exist the palette will be chosen by
  179.         median cut, popularity, or fixed depending on what other
  180.         flags are set.  After the palette is chosen it will then be
  181.         written to the file palfile.map.
  182.  
  183.     [-d] chooses Floyd Steinberg dithering.
  184.  
  185.     [-o] chooses ordered dithering.
  186.  
  187.     [-r #] chooses random noise +- #.  # defaults to 4.
  188.  
  189.     For example:
  190.  
  191.         C> convert -f 2 -d test
  192.  
  193.     will convert test.img to test.gif using fixed palette 2 and
  194.         Floyd Steinberg dithering. 
  195.  
  196.     Assuming that test.map does not exist
  197.         
  198.         C> convert -m -p test test1
  199.         C> convert -m -p test test2
  200.         C> convert -m -p test test3
  201.         C> convert -m -p test test4
  202.         
  203.         will convert test1 using median cut to choose the palette.  The
  204.         palette will then be saved to test.map.  Test2, test3, and test4
  205.         will then be converted using the palette in test.map. 
  206.  
  207.              In general the best results will be obtained by using the -m
  208.     -d flags as in Convert -m -d test.  For images that tend to be
  209.     fairly monochromatic I've found that -m -d -r works well.
  210.         Adding the small amount of random noise helps break up some of
  211.         the banding.  On the down side it also adds to the .gif file size
  212.         since it is tough to compress random noise well.  To get nice
  213.     looking grey scale images try -f 0 -r.
  214.  
  215.         Questions, problems and suggestions can be addressed to
  216.     me at the address at the top of this file.  I can also be
  217.     found on PCGnet, Internet and CompuServe.
  218.  
  219.                 Have fun,
  220.  
  221.                     Stephen
  222.  
  223.  
  224.     Trademarks:
  225.  
  226.         BIX .......... Byte
  227.         GIF .......... CompuServe
  228.         Targa ........ Truevision
  229.         Vivid ........ Vivid Software
  230.  
  231. version 1.0
  232.     Original version
  233.  
  234. version 1.1
  235.     Fixed bug with RLE encoded Targa files having the red and blue
  236.     planes swapped.
  237.  
  238. version 1.2
  239.     Added support for reading 16-bit Targa files.
  240.  
  241.     Added 5-bit prequantizing using te -5 flag on the command
  242.     line.  This is most effective in images with large numbers
  243.     of colors.
  244.