I''ve read a couple of books on fractals, one with an appendix on image compression. I think I pretty much understand it, the one area that I''ve never look into is wavelet methods.
The one thing that stuck me was that fractal image compression would be perfect for images that are not so natural, for images with sharp edges. For example in graphic design, huge images could be compressed to very small files and it wouldn''t take all that long. I would have thought it could replace .gif images for example. Now with this technique you could zoom in as much as you want, because the lines are straight or curved, although this ''detail'' is not really detail. There is no information there. In effect it would produce the same effect as a vector format.
I don''t know if wavelet methods could be this effective. But I certainly know that jpegs would be absolutely useless.
Is fractal image compression bullshit?
Ok, I saw a demo, and I saw how it works. The compression scheme is to look for similarities and combine and reuse them. And because of this compression by similarities it''s called "fractal" compression because fractal graphs have self-similarity. When the documentary explained things, it sounded like a much more revolutionary idea. Wait a minute, I thought compression was always ''looking for similarities.'' I still say that this is nothing new. What exactly does fractal image compression do with fractal formulas--anything? I have an an unrelated-to-fractal question: Is there a commonplace way to combine two arbitrary, positive numbers into one, and then, with a decompression algorithm retrieve the two unmolested numbers? I can''t think of a way. If there was a way hashing and unhashing values like that, it would be revolutionary.
There are several implementations of fractal image compressors (though I wouldn''t say the results are stunning). There is also the Clear Video codec (purchased by RealNetworks and transformed into the original RealPlayer codec) which is a form of fractal video compression (for the time it produced images that where recognizable on a very low bandwidth connection, using low end hardware). However fractal image compression is just one of many types of image/video compression that have potential.
Pack two numbers into one and vica versa? It''s easy (If the following is an acceptable solution). I can pack a "5" and a "7" together in one number, "57," quite easily. Just think outside base 10. You need only to know the two numbers and their maximum values. (If this is too much required information, then let me know, and I''ll try to think of another way). Here''s how to combine any number of numbers into a single other number. Remember: a number can be generated using more than one base.
result = a * amax0 + b * bmax1 + c * cmax2 ...
(Note: This only works for the absolute values of numbers, and does not preserve individual sign information).
This technique may be what you''re looking for though.
result = a * amax0 + b * bmax1 + c * cmax2 ...
(Note: This only works for the absolute values of numbers, and does not preserve individual sign information).
This technique may be what you''re looking for though.
Yeah, that''s called a number base system. They''ve been used for thousands of years. I think what would be really useful would be packing two bytes into one, which is, of course, fundamentally impossible to do for any arbitrary combination of two bytes. Sorry for sounding sarcastic...I''m too lazy to rewrite those sentences. bleah.
You know what I never noticed before?
I know it''s been around forever, but it was the only answer I could think of to leinad''s latest question. (Sometimes the obvious answer is the right one)
Now, if two bytes really could be stored for the price of one somehow, then basically all of information theory would explode.
Now, if two bytes really could be stored for the price of one somehow, then basically all of information theory would explode.

To pack multiple values into a single value, you have to have some sort of algorithm to make sense of the "packed" value.
Something to think about as well is an old technique used to draw lines. Basically, for 3x3 pixels, there are only so many arrangements of pixels that make up components of a line. So you can store all these arrangements beforehand, and then do analysis to see which pre-stored arrangement is required. Something similar could be done with images. Figure out a rudimentary and elemental set of graphical relationships, store them, and then analyze images and store codes (or indices) for which elements to use. This would yield an approximation of the original image and could theoretically yield infinite detail (sort-of, kinda like vector graphics). Not necessarily the same detail that would have existed in the actual object being represented, but at least you wouldn''t have jaggy edges or fuzzy interpolated regions where sharp, clear lines should exist.
This is, however, WAY beyond me at the moment as it is a terribly abstract concept. :-) Fun to think about though. And maybe somebody with alot of time on their hands can sit down and work something like this out. This does, however, seem to be similar to the idea of fractal compression. Except that one of the main differences is that fractal compression uses the image being compressed as the source "template" of sorts for what features to reproduce and to use as elements for the greater whole. The technique I described above would be more generalized either for any kind of image (rough approximations) or specialized for a certain type of image (better approximation).
Something to think about as well is an old technique used to draw lines. Basically, for 3x3 pixels, there are only so many arrangements of pixels that make up components of a line. So you can store all these arrangements beforehand, and then do analysis to see which pre-stored arrangement is required. Something similar could be done with images. Figure out a rudimentary and elemental set of graphical relationships, store them, and then analyze images and store codes (or indices) for which elements to use. This would yield an approximation of the original image and could theoretically yield infinite detail (sort-of, kinda like vector graphics). Not necessarily the same detail that would have existed in the actual object being represented, but at least you wouldn''t have jaggy edges or fuzzy interpolated regions where sharp, clear lines should exist.
This is, however, WAY beyond me at the moment as it is a terribly abstract concept. :-) Fun to think about though. And maybe somebody with alot of time on their hands can sit down and work something like this out. This does, however, seem to be similar to the idea of fractal compression. Except that one of the main differences is that fractal compression uses the image being compressed as the source "template" of sorts for what features to reproduce and to use as elements for the greater whole. The technique I described above would be more generalized either for any kind of image (rough approximations) or specialized for a certain type of image (better approximation).
Sounds like vector quantization. There''s an article about it over at gamasutra. Of course, it doesn''t take the logical next step that you did using the concept to achieve infinite resolution.
Who knows? With quantum computers it might be possible to store two or more bytes in the same physical location. Each bit can be in multiple states at the same time, it would just be a matter of figuring out which bit states comprise number A and which comprise number B. You might even be able to do calculations on the multiple values in parallel.
It''s just a thought. I''m no expert on the subject, I just attended a seminar on the subject. But it sounds quite promising.
Tom
It''s just a thought. I''m no expert on the subject, I just attended a seminar on the subject. But it sounds quite promising.
Tom
"E-mail is for geeks and pedophiles." -Cruel Intentions
May 25, 2003 12:58 PM
If it were possible to store 2 arbitary bytes in 1 byte, then you could do this:
Take 8 bytes, and store them in 4 bytes.
Take those 4 bytes, and store them in 2 bytes.
Take those 2 bytes, and store them in 1 byte.
You could store ANY amount of information in 1 byte. Therefore I think it''s not possible.
Take 8 bytes, and store them in 4 bytes.
Take those 4 bytes, and store them in 2 bytes.
Take those 2 bytes, and store them in 1 byte.
You could store ANY amount of information in 1 byte. Therefore I think it''s not possible.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement