Provided by: epsilon-bin_0.9.2-2_amd64 bug

NAME

       EPSILON - powerful Open Source wavelet image compressor

SYNOPSIS

       epsilon COMMAND [OPTIONS] FILES...

DESCRIPTION

       EPSILON  is a powerful Open Source wavelet image compressor.  The project is aimed on parallel and robust
       image processing.  EPSILON source package consists of two core parts:  portable,  well-designed,  thread-
       safe  library  and  codec,  build  on  the  top of the library. The library API is very clean, simple and
       carefully documented.

       EPSILON's compression algorithm is based on wavelet transform and so called embedded coding.  The  former
       is  a well-known mathematical theory and the latter is a very effective, yet simple method of progressive
       image coding. The actual algorithm employed in EPSILON is called SPECK - Set Partitioned  Embedded  bloCK
       coder introduced by Asad Islam and William Pearlman.

       At  the moment, EPSILON supports more than 30 wavelet filters and have automated interface for adding new
       ones. The script called make_filterbank.pl translates XML-files with filter descriptions to the C  source
       code  suitable  for EPSILON. So, the only manual operation is to copy-and-paste program's output into the
       EPSILON's source code.  After recompilation new filters will be ready  to  use.   Special  note:  if  you
       succeed in adding new filters, please send them to me.  They will be included into the main source tree.

       EPSILON  project follows an old and fruitful UNIX tradition to Keep It Simple. For example, EPSILON works
       with PPM (Portable PixelMap) and PGM (Portable GrayMap) images only. They provide basic functionality and
       serve  as  a  least-common-denominator for interchanging truecolor and grayscale images between different
       platforms and operating systems. Looking for a converter? Try Netpbm  (http://netpbm.sourceforge.net/)  -
       perfect Open Source tool-kit with more than 220 handy utilities!

       For  storing  and interchanging compressed images EPSILON defines it's own PSI (ePSIlon) file format. The
       PSI format is designed with simplicity and fault-tolerance in  mind.  A  typical  PSI  file  consists  of
       several  independent  blocks.  Each  block  represents a tile from the original image and have completely
       self-contained header. Each block is protected with CRC and (actually with two CRCs: one for  the  header
       and  another  for  the  data)  separated  from other blocks with a special unique marker. This simple yet
       effective technique makes stream synchronization and error localization almost trivial.  Moreover,  block
       headers  are  saved  as  a plain text: you can edit them by-hand with your favorite text editor. Check it
       out!

       EPSILON have a lot of interesting features.  For  example,  you  can  finely  control  compression  ratio
       (thank`s  to  embedded  coding), manually distribute bit-budget among image channels, switch to different
       encoding and filtering modes and so on. EPSILON also supports HUGE files with constant memory and  linear
       time complexity.

       Another  nice  feature  is multi-threading support. Try to (re)compile EPSILON with Pthreads enabled (see
       INSTALL for more info) and you  will  surely  notice  significant  coding  speed-up  (assuming  you  have
       multicore CPU or several CPUs on you computer).

       As  of  release  0.6.1 EPSILON also supports clustering mode. This is a very powerful feature if you have
       several machines linked with a high-capacity network, say gigabit  ethernet  or  even  faster.  To  build
       cluster-aware EPSILON version please read INSTALL file.

       Although  EPSILON have a rich set of special ad-hoc options you are not obliged to use them. Defaults are
       usually just fine.  EPSILON's command line interface is very friendly and designed to be similar to  GZIP
       or BZIP.  So, `epsilon foo.ppm' and `epsilon -d bar.psi' is usually enough.

OPTIONS

   Commands:
       -e, --encode-file
              Encode specified file(s). This is a default action if no command is given.

       -d, --decode-file
              Decode specified file(s).

       -t, --truncate-file
              Truncate  specified  file(s).  Due to embedded coding, block truncation is equivalent to block re-
              compression. In other words, truncation further compresses PSI-files.

       -s, --start-node
              Start cluster node. Note: this option is available in cluster-aware EPSILON version  only  and  is
              intended  for SLAVE nodes. In other words, you should invoke epsilon -s on each SLAVE node in your
              cluster.  Stopping cluster node is even simpler: killall epsilon.

              This command runs a daemon program that accepts TCP connections at certain port (2718 by default).
              For each connection a new child process is forked and the main program waits for a next connecton.
              Encoding and decoding statistics is SYSLOG-ed using LOG_DAEMON facility.

              If you have DSH (Distributed SHell) installed on MASTER node, you can also use two handy  scripts,
              namely  start_epsilon_nodes.pl  and  stop_epsilon_nodes.pl,  for starting and stopping all cluster
              nodes respectively.

              Host configuration is taken from so  called  .epsilon.nodes  file.   By  default,  program  checks
              .epsilon.nodes  in  the current directory.  If there is no such file, program tries .epsilon.nodes
              in user`s home directory. You can also explicitly specify file location  as  an  argument  to  the
              script. File format is described below.

       -a, --list-all-fb
              List  all  available  filterbanks.  This  command  shows  ID, NAME and orthogonality TYPE for each
              available filterbank. As of release 0.8.1 EPSILON also supports lifting implementation of a famous
              Daubechies  9/7  biorthogonal  wavelet  transform.  It  works  faster  than  generic  filter-based
              counterpart. Default ID is daub97lift

       -V, --version
              Print program version.

   Options to use with `--encode-file' command:
       -f, --filter-id=ID
              Wavelet filterbank ID. See also --list-all-fb command.

       -b, --block-size=VALUE
              Block size to use: 32, 64, 128, 256, 512 or 1024. The default  value  is  256.  Using  very  small
              blocks  as  well as using very large blocks is not recommended: the former adds substantial header
              overhead and the latter  slows  down  encoding/decoding  without  any  profit  in  image  quality.
              Nevertheless, in some rare circumstances this rule is quite opposite.

       -n, --mode-normal
              Use  so  called  normal  processing  mode.  This  mode  can  be  used with the both orthogonal and
              biorthogonal filters. In practice you should avoid this  parameter  unless  you  are  making  some
              research in wavelets.

       -o, --mode-otlpf
              Use so called OTLPF processing mode. In a few words, OTLPF is some kind of hack to reduce boundary
              artefacts when image is broken into several  tiles  (as  usually  happens).  Due  to  mathematical
              constrains  this  method  can be applied to biorthogonal filters only. This option is turned on by
              default.

       -r, --ratio=VALUE
              With this parameter you can finely control desired compression ratio. This value is not obliged to
              be  integral: for example, the value of 34.102 is just fine. For obvious reasons compression ratio
              should be grater than 1. Although EPSILON's bit-allocation algorithm is pretty precise,  too  high
              compression  ratios  will be clipped due to block headers overhead. On the other hand, blank image
              (e.g. entirely black) surely will be encoded just in a couple of hundreds of bytes  regardless  of
              compression  ratio  you  desire.  Nevertheless, for a most real-life images and compression ratios
              (let us say 10..200) actual compression ratio will be very close to the value you desire.  Default
              compression ratio is 10.

       -2, --two-pass
              By  default  EPSILON uses constant bit-rate (CBR) bit-allocation algorithm. CBR is pretty fast and
              usually gives acceptable image quality. If image quality is a concern, try two-pass variable  bit-
              rate  (VBR)  bit-allocation  algorithm instead.  VBR gives better results than CBR, but runs about
              twice slower.

       -N, --node-list
              File with cluster configuration. Note: this option is available in cluster-aware  EPSILON  version
              only  and  is  intended  for  MASTER node. Each line in this file should comply with the following
              format:

              user@host:port^number_of_CPUs

              All fields are mandatory. No comments, spaces or blank lines are allowed here.  The  second  field
              can  be  either IP address or host name. The last field is actually the number of simultaneous TCP
              connections with a corresponding SLAVE node. Usually it is set to the number of CPUs  or  somewhat
              larger.

              If  you  omit  this  option, EPSILON will try .epsilon.nodes in the current and home directory (in
              that order).

              Note 1: ´user´ field is used by start_epsilon_nodes.pl and stop_epsilon_nodes.pl to SSH  into  the
              target box.

              Note 2: ´port´ is EPSILON node's port not SSH's.

       -T, --threads
              Number of encoding threads. Note: this option is available in thread-aware EPSILON version only.

       --Y-ratio=VALUE, --Cb-ratio=VALUE, --Cr-ratio=VALUE
              Bit-budget  percent  for  the  Y,  Cb  and  Cr channels respectively.  The values should give 100%
              altogether. Note that these options have sense for truecolor (i.e. PPM) images only.  The  default
              values are 90-5-5.

       --no-resampling
              By  default EPSILON resamples truecolor images using so called 4:2:0 resampling scheme. This trick
              essentially speed-ups encoding/decoding without sacrificing image quality.  Usually  there  is  no
              reason to disable resampling.

   Options to use with `--decode-file' command:
       -T, --threads
              Number of decoding threads. Note: this option is available in thread-aware EPSILON version only.

       -N, --node-list
              File  with  cluster configuration. Note: this option is available in cluster-aware EPSILON version
              only and is intended for MASTER node. Each line in this file  should  comply  with  the  following
              format:

              user@host:port^number_of_CPUs

              All  fields  are  mandatory. No comments, spaces or blank lines are allowed here. The second field
              can be either IP address or host name. The last field is actually the number of  simultaneous  TCP
              connections  with  a corresponding SLAVE node. Usually it is set to the number of CPUs or somewhat
              larger.

              If you omit this option, EPSILON will try .epsilon.nodes in the current  and  home  directory  (in
              that order).

       --ignore-hdr-crc
              Ignore header CRC errors.

       --ignore-data-crc
              Ignore data CRC errors.

       --ignore-format-err
              Skip over malformed blocks.

   Options to use with `--truncate-file' command:
       -r, --ratio=VALUE
              Desired truncation ratio. See also --truncate-file command.

   Options to use with `--start-node' command:
       -P, --port=VALUE
              By  default  cluster  node  listens  port  number 2718.  With this option you can set another port
              number.

   Common options:
       -H, --halt-on-errors
              By default if something fails EPSILON proceeds to the next input file. With this  option  you  can
              change  default  behaviour: EPSILON will halt on first error. Note that in MPI mode this option is
              not available and EPSILON always halts on errors.

       -q, --quiet
              By default EPSILON shows pretty statistics during its operation.  With this  option  you  can  ask
              EPSILON to be quiet.

       -O, --output-dir=DIR
              Output directory for encoded, decoded and truncated files.  If not set, output files will be saved
              in the same directory as input ones.

   Help options:
       -?, --help
              Show help message.

       --usage
              Display brief usage message.

EXAMPLES

       Encode all PPM files in current directory with two-pass VBR algorithm:

       epsilon *.ppm -2

       Encode PGM file with 1:100 compression ratio using 4 threads:

       epsilon -e big.pgm -r 100 -T 4

       Decode all files to the /tmp directory, operate quietly:

       epsilon -dq *.psi -O /tmp

       Decode a list of heavily corrupted files:

       epsilon -d *.psi --ignore-hdr-crc --ignore-data-crc --ignore-format-err

       Start cluster node with non-standard port number:

       epsilon -s -P 1234

       Encode files using custom cluster configuration:

       epsilon *.ppm *.pgm -N /path/to/.epsilon.nodes

       Encode file with MPI engine using all available processors:

       mpirun C epsilon test.ppm

AUTHOR

       Alexander Simakov, <xander@entropyware.info>

       Feedback, bug-reports and patches are welcome. Feel free to write!