[ANN] BTPC Extension - PyramidWorkshop



PyramidWorkshop is an image-compression System based upon the
scientific work of John Robinson (inventor of BTPC) about
image-compression with adaptive linear predictors and is in average
more efficient than PNG/JPEG2000.

http://sourceforge.net/projects/pyramidworkshop

The PyramidWorkshop is my try to beat PNG and JPEG2000 in efficiency,
usability and flexibility. I invented a lot of generic code as a base
for the project, that exist in supportive libraries: libdatatypes
handles any _type_ of data, hardware, geometric entities, streams,
calculations, arithmetics, approximations of calculations, algebra,
analysis ... it can be seen as the low-level base of the project and is
comparable in functionality with the libraries that get installed on a
base operating system libgenerators fills these types of data with
content, from random generators for 1D/2D/3D/4D to for example 2d-fire
generators; there don't exist so much industrial strength full-effects
code but more all the base layer (everybody is using perlin) libcoding
handles any type of transformation of types or structure of data, and
because this is about data-compression it's the most important
low-level library, containing arithmetic coders, huffman-trees,
suffix-trees libstreamio contains all (bit, byte, file, memory)stream
classes, as well as flat low-level models, dictionary
builder/converter, jump-point converter for executables, all sort of
tunnels (form A in stream, form B out of stream) libmemory/liblists are
more or less only being more flexible versions of concepts (heaps,
lists) reprogrammed 10000 times. libbtpc then is the setup of the
compression algorithm (maybe you have to read John Robinson's papers)
with adaptive linear predictors, applicateable to graphic files (still
and video) in incorporates a lot of ideas I took by reading
comp.compression and discussion of those topics, as well as data-
mining and analysing properties, I tried to maintain maximum
flexibility in the use of the code for shortly (un)proofing complex
ideas; this library is only the compression-algorithm, not any UI all
of above is system-independent and more or less compiler-independent
(GCC, VC, CodeWarrior) finally I setup a program for graphically
analysing pictures saving them with my algorithm and comparing it with
tiff / png / bmp / jpeg / jbig / jpeg2000 / CALIC / BTCP / APT / DjVu /
Limbo / LSP / SPITH / ..., I implemented (in libdatatypes) about 60
different color-spaces (XYZ, YCC PAL/NTSC, ...) for 3DNow/SSE/SSE2 for
realtime comparisson of compressing under different color-spaces (I
believe it's one of the most biggest and fastest color-conversion
libraries of the world, if not the one), as well as a 3D model of
presenting the occupied color-space of an image in
3D-(cube/math)-space. All of the code may be together about 120MB and
is copyrighted (in the moment :-) only by me I decided to make this
open-source, because it was the project I wanted to get fame and money
at the same time selling the software, but my life changed (I've gone
to El Salvador (i'm german)) and got work again (I made most of it in
the 1.5 years having no job) so last week I let hope go to ever find
the appropriate time to fix some very nasty bugs (I really don't want
to become an windows-expert, I'm compression-expert, that's enough) or
to implement all of the nicely features I have on the TODO; the
algorithm is 'stable', the program barrely, the idea is good, the
implementation excellent (I'm code/oop-_aestetic_) and I would be sad
if the code rotts on my disk, so maybe I earn some fame by becoming
copied. :)

CVS is public and contains a slightly updated version of the archived
one, I removed some bugs-because-of-rearrangement. The MSI-executable
is _NOT_ working, I don't know why the installer-database is
complaining not to find a specific file, but that's open to veryone to
edit (you know what I mean when you know MSI/Orca).

It consists of these parts:

PyramidWorkshop-0.0.0:

- no desc. yet -

libBTPC-0.0.0:
http://sourceforge.net/docman/display_doc.php?docid=31471&group_id=155761

- no desc. yet -

libcoding-0.0.0:
http://sourceforge.net/docman/display_doc.php?docid=31303&group_id=155761

libcoding is a libary whos purpose is to serve the
compression-enthusiast the
best. Coder, model and compilation are clearly seperated. You may
exchange any
of the components by one other without loosing functionality. That
offers the
abilities to experiment with data-structures without modifying the
model, or
exchanging the back-end arithmetic coder by golomb-codes.
In the moment there are about 35 different arithmetic coders
implemented as well
as a bunch of superb order-0 models, those are the result of my
experiments
with image-compressors. Very unique is the symbol-landscape storage
able to
store the symbol-landscape in most cases to 0.5 bit per symbol
including
a laplacian-smoothed initial symbol-distribution boosting order-0
models
extreme well.

libstreamI-0.0.0:
http://sourceforge.net/docman/display_doc.php?docid=31302&group_id=155761

libstreamIO is a library tunneling transfers from on storage-medium to
another,
making it possible for transforming the transfer-channel on-the-run.
It's especially programmed for data-compression, offering bit-stream to
be used
by arithmetic coders, or executable-file transformers and
dictionary-replacers
offering better predictable and/or smaller input for various
compression-
models.

libdatatypes-0.0.0:
http://sourceforge.net/docman/display_doc.php?docid=31301&group_id=155761

libdatatypes is the base library handling basically any kind of lower-
or higher-
level structure.
In the lowest level it offers processor-specific math-operators and
atomic
data-types. In the medium level it implements various conceptual atomic
data-structures like physical properties and positions/orientations. In
the
high level it offers highly complex objects and classes like
interleaved
and planar image buffers with operators and N-dimensional objects like
contours, as well as procedual objects like circles. Besides that it
has
a huge library of supportive functionality implemented that handles
these
types of data or calculates the relationships between them. An example
for
this may be that one class implements a black-body emitter that can be
connected to the wavelength-color-space which then can be converted to
an
rgb-image or a 3D-color-space point-cloud.

libgenerators-0.0.0:
http://sourceforge.net/docman/display_doc.php?docid=31304&group_id=155761

libgenerators is the complemental library to libdatatypes, it has
basically the
same structure and offers algorithms that may artificially
fill/construct the
different data-types and structures.
For the moment there are nearly only random / noise / turbulence
generators
for various dimensions. But they are very usefull to generate
(semi-)random
data for general purpose and image compressors.

libmemory-0.0.0:
http://sourceforge.net/docman/display_doc.php?docid=31300&group_id=155761

libmemory is a library handling memory allocations more compfortable
than the
normal heaps and queues.
It's inspirated by the memory-system implemented in the exec.library of
the
AmigaOS, therefore the low-level functionality has been taken from the
AROS
project.

libPPM-0.0.0:
http://sourceforge.net/docman/display_doc.php?docid=31299&group_id=155761

libPPM is what's left over from my SSE2 PPM experiments. It has binary
decision
models for MPS, MRS and Esc that are combined by the Bloom-mixer. Only
of
interest for people who want to dig into experimental code and ideas.
It contains about 25 different binary predictors, including various
modifications
to PPM-A/B/C, Cardinal and KT predictors. Also available is inheritance.

.



Relevant Pages

  • Re: Javascript Library
    ... elements, showing/hiding objects, animating objects, ajax, etc? ... Packed, jQuery is 26k. ... Packer has everything to do with compression. ... if you have n libraries to research and somebody pokes a hundred holes ...
    (comp.lang.javascript)
  • Re: Squish compression-based classifier
    ... Which open source compression libraries, if any, would allow me to ... trees/tables for compression and then use those trees/tables to ... compression implementation as a reference point and writing my own ...
    (comp.compression)
  • Re: Anyway to COMPRESS RESOURCES???
    ... Most zip libraries I know of use something along this style to allow arbitrary source and ... desitnation for compression. ... We use Dynazip and it does allow memory to memory compression through a ...
    (microsoft.public.vc.mfc)
  • Re: Magic for OpenOffice (file)
    ... There is no reason it couldn't be done, ... program in /usr/bin on Debian is GNU's GPL'd file implementation. ... could imagine, however, that depending on lots of compression libraries ... confident of the libraries' licenses. ...
    (Debian-User)