IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

antialiasing rapide


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut antialiasing rapide
    Salut,

    Je recherche un algo d'antialiasing rapide pour une image (2D). Pour l'instant j'utilise la méthode du supersampling qui revient à dessiner l'image à x fois sa taille actuelle et la réduire en faisant la moyenne des pixels de l'image d'origine. Cette méthodes donne un bon résultat mais est très gourmande en temps de traitement.

    J'ai lu quelques docs sur l' "adaptive antialiasing", un algo créé par un nommé Turner Whitted dans le domaine du ray tracing. Malheureusement les documents sont rares et principalement orientés vers la 3D. Il semble qu'il existe aussi des méthodes de prefiltering qui sont beaucoup plus rapides... Quelqu'un aurait-il des informations là dessus ou sur d'autres méthodes ?

    Merci...

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    PROCEDURE AntiAlias(clip:tbitmap);
    VAR x,y:Integer;p0,p1,p2:pbytearray;
    BEGIN
     clip.PixelFormat:=pf24bit;
     FOR y:=max(1,0)TO min(clip.height-2,clip.height)DO BEGIN
      p0:=clip.ScanLine[y-1];
      p1:=clip.scanline[y];
      p2:=clip.ScanLine[y+1];
      FOR x:=max(1,0)TO min(clip.width-2,clip.width)DO BEGIN
       p1[x*3]:=(p0[x*3]+p2[x*3]+p1[(x-1)*3]+p1[(x+1)*3])DIV 4;
       p1[x*3+1]:=(p0[x*3+1]+p2[x*3+1]+p1[(x-1)*3+1]+p1[(x+1)*3+1])DIV 4;
       p1[x*3+2]:=(p0[x*3+2]+p2[x*3+2]+p1[(x-1)*3+2]+p1[(x+1)*3+2])DIV 4;
      END;
     END;
    END;
    Salut rbag!
    Voici la fonction que j'utilise dans mes progs Delphi.
    Elle est issue de l'excelente unité JanFX.
    J'en ai essayé d'autres, mais celle-ci est la meilleur rapport rapidité / qualité.
    Le sujet m'intérresse, mais j'ai très peu d'informations, je reste à l'écoute, à+

    http://www.developpez.net/forums/viewtopic.php?t=47603

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut
    Effectivement cette méthode est rapide, simplement ce n'est pas un réel antialiasing mais plus un floutage de l'image. Des version modifiées utilisent des matrices de poids pour pondérer l'importance des pixels en diagonale mais le résultat est tout de même beaucoup moins bon qu'un réel antialiasing et ne permet pas d'obtenir l'effet de lissé des lignes aussi bon...

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut Rbag!

    Je suis enfin arrivé à obtenir le code d'une fonction de redimensionnement d'un TBitmap 24bits avec anti-aliasing (le vrai). Plusieurs type d'anti-aliasing sont disponibles. Perso, je trouve que le filtre "Linear" va bien pour agrandir l'image et "Lanczos" donne de meilleurs résultats pour la réduction... Un grand merci à Nono40 pour avoir trouver la solution d'un problème, il m'a été d'un grand secours !

    http://sub0.developpez.com/delphi/AAlias.zip

    A noter que la fonction est issue du code du composant Graphics32 pour Delphi.
    Je pense qu'il est plus rapide avec ce-dernier (optimisation MMX)...
    à+

  5. #5
    Membre du Club
    Profil pro
    dbadmin et dev web magento
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dbadmin et dev web magento

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 56
    Points
    56
    Par défaut
    y aurait-il moyen que tu me décrive l'algorythme en gros ?
    j'aimerais bien l'implémenter sur php mais j'y connait vraiment rien au delphi...

    je sais que ça va demander beaucoup de ressources

    merci!

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Evidemment, en PHP, je te conseille d'utiliser la fonction ImageCopyResampled. Car comme tu dois le savoir, le souci avec PHP, c'est que c'est un langage interprété, et recoder cette fonction est possible mais son traitement sera long...

    Sinon, regarde le code Delphi de ma source AAlias.zip et traduit le en PHP. Si tu veux, je possède déjà la fonction Scanline, je l'avais fait pour modifier la luminosité et le contraste d'une image avec PHP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 24
    Dernier message: 07/02/2016, 11h36
  2. Calcul rapide de percentiles
    Par benj63 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 08/12/2006, 15h50
  3. LES TECHNIQUES DES SGBDR / MySQL rapide ???
    Par SQLpro dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2003, 12h16
  4. Accés rapide aux propriétés d'un Objet
    Par Alacazam dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/11/2002, 22h56
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo