Projet..."Fractales" - C++ - Programmation
Marsh Posté le 12-03-2003 à 21:11:50
Requête :
Réécrire un utilitaire de compression d'image se basant comme FIF (Fractal Imager Format) permettant de convertir n'importe quelle image en fratale afin de compresser de façon monstrueusement efficace, avec peut de perte, et permettant d'effectuer des zooms jusqu'à 100 fois sans perte de qualité visuelle (avec l'ancienne version sous DOS que j'avais c'était errible, on pouvait même découvrir des détails infivisibles sur l'image originale, genre les numéros sur une plaque d'immatriculation.
Le problème c'est qu'ils en opnt fait un plug-in pour PhotoShop et c'est devenu du total n'importe quoi : ça compresse rien, c'est pourri, c'est lent.
Alors que la version MSDOS était assez rapide sur un 386 (moins de 30 secondes pour compresser, moins de 10 secondes pour décompresser) et sur une image en 800x600x33bpp, ont arrivait à obtenir une taille de moins de 2 Ko sans perte de qualité
Ca c'était l'époque où les gens savaient programmer
Y'a même un plug-in qui était sorti pour IE et NS à l'époque des version 3, mais ça n'a jamais pris.
Marsh Posté le 12-03-2003 à 21:35:28
ton algo arrive à créer des détails qui n'existaient pas sur l'image originale ??? ça existe ça ?
Marsh Posté le 12-03-2003 à 21:56:09
Ben non, mais par lissage par reconnaissance de formes, ça rends lisible ce qui est crénelé ou flou.
Par exemple :
C'est éxagéré, mais c'est le principe.
Et l'avantage de ce sytème, c'est que étant une forumle mathématique, on peu zoomer tant qu'on veut, on aura toujours une forme parfaite.
Marsh Posté le 13-03-2003 à 21:47:08
Tiens, ben voilà le plugin pour PhotoShop.
Ils semblent avoir fait des progrès depuis la version gratuite.
http://www.altamira-group.com/solutions/photo/
Marsh Posté le 21-03-2003 à 06:47:01
MagicBuzz a écrit : et sur une image en 800x600x33bpp, ont arrivait à obtenir une taille de moins de 2 Ko sans perte de qualité |
Soit un rapport de 1/966. Il ne devait pas y avoir grand-chose dans l'image à la base...
On n'est pas en train de faire mieux en compression avec les ondelettes ?
Marsh Posté le 21-03-2003 à 08:38:21
Pour encoder une image de l'ensemble de mandelbrot
tu as juste besoin des coordonnées de l'image (soit l'équivalent de quatre flottants plus ou moins précis).
Et tu peux le rendre dans la résolution que tu veux !!!
Ca c'est fort
LeGreg
Marsh Posté le 21-03-2003 à 09:10:55
legreg a écrit : Pour encoder une image de l'ensemble de mandelbrot |
J'appelle pas ça une image moi
Marsh Posté le 21-03-2003 à 09:15:49
noldor a écrit : |
ah ouai c'est quoi ??
LeGreg
Marsh Posté le 21-03-2003 à 12:11:48
FIF se base sur cette technologie, mais pas tout à fait.
En fait, il recherche des fractales dont le rendu est similaire à des parties de la photo, et donc il n'a plus besoin que de conserver en mémoire les fonctions mathématiques de ces différents fractales, ce qui est bien moins volumineux que la plupart des autres outils de compression.
En moyenne, le FIF fait des images 50% plus petites que le JPG en qualité minimale, sans en avoir les inconvénients.
En fait, le FIF est un eu destructeur tout de même, car il ne conserve pas l'image exacte, mais une méthode pour la redessiner.
Son point faible se situe au niveau des points isolés. En effet les points isolés ne correspondent pas à une fractale, et ils sont purement en simplement zappés. J'avais fait le test avec une photo d'un ciel étoilé. Ben il s'est transformé en ciel nuageux
Marsh Posté le 21-03-2003 à 12:46:55
legreg a écrit : |
une fonction mathématique
quand je me prends ma gueule en photo, j obtiens pas c egenre de chose
Marsh Posté le 21-03-2003 à 14:23:21
noldor a écrit : une fonction mathématique |
Détrompe-toi, toute forme naturelle (la tête étant consitituée de formes naturelles) et par définition modelable en fractale.
Donc à ta tronche corresponds une série de fractales pour la représenter.
Marsh Posté le 21-03-2003 à 14:35:48
MagicBuzz a écrit : |
ça me rappelle mon année de 1ère S, où on avait étudié la compression numérique d'une feuille de fougère. C'était carrément interressant, et assez impressionnant : on avait programmé le truc sur nos calculettes, qui dessinaient peu à peu une feuille de fougère de plus en plus détaillée. Y avait des histoires de probabilités, de X, Y et je sais plus trop. C loin tout ça...
Marsh Posté le 22-03-2003 à 08:11:56
legreg a écrit : Pour encoder une image de l'ensemble de mandelbrot tu as juste besoin des coordonnées de l'image (soit l'équivalent de quatre flottants plus ou moins précis). |
Tu as là une méthode de compression extrêmement efficace...
...mais hyper spécialisée puisqu'elle ne peut encoder que des "images de l'ensemble de mandelbrot".
Pour généraliser à autre chose, il va falloir plus que 4 nombres.
MagicBuzz: J'ai vu une fois un encodage qui restituait non pas des pixels mais un pavage de polygones irréguliers.
Tu connais ? C'est le FIF en question ?
Marsh Posté le 22-03-2003 à 10:28:05
noldor a écrit : une fonction mathématique |
Mais pourquoi je voudrais encoder ta trombine ?
C'est pas une fonction mathématique d'abord.
Une fonction mathématique ça ressemble à ça:
soit f défini de C dans C et c une constante
tels que pour tout z de C f(z) = z^2 + c
Franchement, je ne sais pas trop ce que tu appelles une image
si ce n'est une image de ta trombine ?? (ce qui me parait plutôt limité)
LeGreg
Marsh Posté le 22-03-2003 à 10:33:02
Musaran a écrit : Tu as là une méthode de compression extrêmement efficace... |
Ah oui mais tu encodes tes fractales comment? En gif (comme dans mon exemple?)
Ce n'est plus de la compression là, c'est de l'expansion.
Tu connais la fameuse blague récurrente de l'algorithme de compression qui compresse tout fichier sans perte à un taux de compression positif ?
(pour ceux qui en doute c'est un peu comme le fameux solvant universel qui dissout tout.)
LeGreg
Marsh Posté le 22-03-2003 à 10:39:52
D'ailleurs je continue à digresser mais tu sais
que le jpeg serait trés mauvais pour compresser l'ensemble de Mandelbrot?
En effet, la frontiére de l'ensemble à la propriété fascinante d'être continu partout mais dérivable nulle part.
Et pour rendre une telle fonction il faudrait des termes à l'infini dans une DCT (ou transformée de fourier), or le jpeg élimine les hautes fréquences en les quantifiant avec une faible résolution.
Conclusion: il faut chercher un algorithme à l'opposé du jpeg pour rendre une telle complexité.
LeGreg
Marsh Posté le 22-03-2003 à 11:41:12
legreg a écrit : |
si, c'est une fonction mathématique
ce que je veux dire, c est que si ça se limite à compresser un ensemble de Julia ou autre, c'est très limité
Marsh Posté le 23-03-2003 à 12:04:29
legreg a écrit : Tu connais la fameuse blague récurrente de l'algorithme de compression qui compresse tout fichier sans perte à un taux de compression positif ? |
Oui.
J'ai même eu beaucoup de mal à faire comprendre que c'était impossible !
Ce qui est rigolo, c'est qu'au premier abord le concept de compression semble impossible.
Question à la con: A-t'on prouvé que les données aléatoires sont les moins compressibles ?
Sinon, ça voudrait dire qu'il existe encore plus désordonné que le hasard.
Citation : D'ailleurs je continue à digresser mais tu sais |
Effectivement, je viens de tester la compression jpeg avec ton exemple.
Il a du mal... Beurk.
Marsh Posté le 23-03-2003 à 12:10:01
La definition mathématique de suite de nombres aléatoire c'est justement une suite de nombre pas compressible. Pas besoin de le démontrer
Marsh Posté le 23-03-2003 à 14:59:09
Citation : Ce qui est rigolo, c'est qu'au premier abord le concept de compression semble impossible. |
Si c'est possible cf la théorie de l'information.
De plus il n'y a pas que les algos sans perte:
il est tout à fait possible de compresser un signal
avec un facteur de compression fixe au moment ou l'on accepte
de perdre une partie de l'information.
Le type d'information que l'on perd dépend grandement du type
d'algo utilisé (aliasing, banding, flou, bavures pour rester dans le domaine des images).
Citation : Question à la con: A-t'on prouvé que les données aléatoires sont les moins compressibles ? |
J'aimerais que tu définisses ce qui pour toi est
une donnée aléatoire et comment tu la compresserais parce que je ne sais pas trop comment prendre ta phrase et j'ai peur que tu fasses une grosse confusion.
LeGreg
Marsh Posté le 14-04-2003 à 02:39:03
legreg a écrit : Si c'est possible cf la théorie de l'information. |
La théorie de l'information est loin d'être un "premier abord".
Ce qui est contre-intuitif pour le débutant, c'est que des méthodes générales puissent trouver et réduire des répétitions dans des données sans en connaître au préalable l'organisation.
Les concepts de redondance et d'espace de valeur ne sont pas simples.
legreg a écrit : J'aimerais que tu définisses ce qui pour toi est une donnée aléatoire et comment tu la compresserais [...] |
Pour moi, des données aléatoires sont des données qui ne suivent aucune relation logique entre elles.
On ne peut donc les décrire de façon simple avec une formule ou un algorithme.
La plus simple et plus courte façon de les décrire est de toutes les énumérer.
Mais il existe tellement de relations logiques possibles qu'en tirant des données au hasard, on a une certaine probabilité de reproduire l'une d'entre elles.
On peut voir cela en tirant de petites séries de nombres aléatoires. Certaines sont un peu compressibles...
Si on choisit de jeter de tels mauvais tirages, on a une méthode pour faire plus aléatoire que le hasard ?
Il y a donc une différence entre le concept aléatoire pur et un tirage "aléatoire" effectif.
Ce cernier est désordonné, mais pour qu'il soit aléatoire il faut que toutes les méthodes de description échouent. Pour pouvoir toutes les essayer, il faut limiter leur nombre à un ensemble fini...
Définir l'alétoire en terme de compressibilité est une pirouette, cela ne fait que reporter le problème: qu'est-ce que la compression ?
Exprimer des données en termes d'autres données et de méthodes de traitement ?
C'est extraire de la complexité des données pour la mettre dans le traitement...
Comment mesurer ces complexités respectives pour déterminer la solution la plus simple ?
Il est facile de définir un espace de valeur, mais qu'en est-il de "l'espace de traitements" ?
L'intuition me dit qu'on ne peut être plus désordonné que le hasard.
Je voudrais une preuve.
Marsh Posté le 14-04-2003 à 08:22:59
El_gringo a écrit : |
y'a aussi le brocoli
A->A(A)[A]
Marsh Posté le 12-03-2003 à 20:12:35
Voila je programme en ce moment un affichage de fractales
J'aimerais savoir si quelq'un peut me donner des indications sur le pivot de gauss
Ou si par hasard vous auriez quelques bonnes idees pour enrichir le programme toutes requetes est bonne a prendre
Merci de votre aide
---------------
AlaiX