GLYPH's Projects Page

This page has some descriptions of projects I'm currently working on.

Last Edited: July 6, 1998


Information Content FAQ
I've written a FAQ on information content and Kolmogorov Complexity and stuff.
Have a look if you're interested in information theory.


Color Reduction

I am working with Endlisnis to develop a fast program which performs very nice color reduction on images. Our results so far are very promising, since we haven't even implemented all parts of the algorithm yet. Pictured below is a 256 color image of fruit. Then there is a 16-color version created with Photoshop using an adaptive palette, followed by a 16-color version created with v9.6 of our program. No dithering was used in either 16-color version, and no further modifications were made to the images.





The output from our program is clearly superior to Photoshop's. Note especially the colors in the flowers, the apple, the peaches, the pear, the leaves, the plate, the blue cloth and the pale beige cloth. Wait a minute, that's everything, isn't it? Our program is still nowhere near being finished. I am researching a new color space which will be perceptually uniform for humans, and I'm working on better color weighting algorithms, so keep checking back for more updates.

Click Here for more example images.
Click Here for comparisons with more programs.
Click Here for comparisons with other algorithms.

You can download the unregistered shareware Intel executable for v8.1 of our program from Endlisnis' Homepage



Sprite Engine

I'm making my own 2D sprite engine with extremely smart clipping and fast scaling. It should be really darn fast when it's complete. It still needs some optimizations for larger sprites, the clipping isn't fully smart yet, and it doesn't scroll yet. I'm not going to make it 3D. I'm doing it for a very specific 2D thing. A 3D engine would use a completely different approach. Anyway, you can download a cheezy demo of it here that runs on almost any Intel machine.





Arithmetic Coding (Well, sort of...)
Due to the multiple patents on various implementations of arithmetic coding, I am developing a new method of data representation which is nearly as efficient as arithmetic coding. It is different enough, though, that it should evade all the patents.

The method hovers aound 99% efficiency, with an abosulte worst case performance of 92% efficient. It can be made extremely fast, as well. When using a static model, the method is faster than static Huffman. When using an adaptive model, it is many times faster than adaptive Huffman, and rivals the speed of the fastest arithmetic coders. I have most of it coded now, and apart from the initialization section, it is only 8 lines of C++ code.



Image Compression
Well, I've finally found a way to speed up my image compressor. The original way I was going to do it would have made it as slow as fractal compression. Well, it turns out that the original way sucks.

My new way is nearly as fast as JPEG and wavelet methods, and it also solves all the arbitrary problems of my old way. In other words, I can actually program the new way.

There's still more work to be done. For now, I'm making a program which calculates the arithmetically encoded size of a given image using my method, and I shall include checks to ensure reversibility. Once my arithmetic coder is perfected, I'll use it to make a working image compressor. The first full version will be lossless, with lossy versions later.


Information Theory

This is something I've been researching quite a bit. I have narrowed IT down to one major subject:
Prediction.
Basically, the way I see it, everything involves prediction and probability modelling, either implicitly or explicitly.