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

Traitement d'images Discussion :

AMR et agrandissement d'images


Sujet :

Traitement d'images

  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut AMR et agrandissement d'images
    Je suis nouveau dans le domaine des ondelettes.
    J'ai aperçu des solutions pour agrandir une image en utilisant l'analyse multi-résolution, mais aucun algorithme, ni aucun nom de logiciel le faisant !
    Alors qu'apparement, ce serait plus performant ?
    J'ai vu aussi l'agrandissement par induction, qui a l'air efficace, un petit algo trainerait-il dans les placards de certains ?
    Quelque soit le langage

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pour les ondelettes, le facteur 2 est facile à faire, pour les autres, je ne sais pas. Mais effectivement, c'est très performant car les algos habituels sont locaux tandis que les ondelettes sont globaux, c'est un peu leur généralisation.

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    quand on agrandi une image, on perd de l'information, il faut donc combler les trous.
    Une méthode de base est donc l'interpolation.

    Sinon, un petit soft open source nommé imageJ fait de l'agrandissement correctement, regarde donc comment il font.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  4. #4
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Où puis-je trouver une explication et/ou un code source (peu importe le langage) faisant cette opération ?
    Même si c'est assez mathématique, ce n'est pas grave .

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pour l'interpolation, il y a eu un sujet où Flo. et moi avont un peu donné des pistes pour l'interpolation bilinéaire.

  6. #6
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Non non, moi je veux faire avec la méthode des ondelettes !
    Donc, je cherche des pistes pour cette méthode .

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ah, OK
    Tu décomposes en ondelettes ton image. Après, tu ajoutes du noir - coeff 0 - dans 3 nouveaux quarts de plan de même taille que ton image, tu fais une transformée inverse et tu as une image 2 fois plus grande

  8. #8
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    OK, sur le principe, ça ressemble au zero padding pour la TF...
    Je peux trouver des codes qui font la décomposition en ondelettes, et l'opération inverse ?
    J'avoue que je ne trouve pas...

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    C'est plus difficile à trouver parce qu'il existe énormément d'ondelettes qu'on peut utiliser.
    Le plus simple, prends une Daubechies d'ordre assez faible. Comme pour la FFT, c'est une transformée selon chaque axe.
    Si tu veux faire une transformée entier -> entier, Daubechies a écrit un article à ce sujet, c'est fait à coup de parties entières, mais c'est aussi inversible - sauf que ce ne sont plus exactement des ondelettes orthonormales, si mes souvenirs sont bons -

  10. #10
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Dans mon cas, c'est une transformation entier->entier, car ce sont des images 32bitsx32bitsx32bits...
    J'ai bien trouvé quelque chose, mais je ne sais pas si ça correspond à ce à quoi tu pensais :
    http://www.bearcave.com/misl/misl_te...ies/index.html

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ca, c'est la transformée classique avec ondelettes de Daubechies.
    http://citeseer.ist.psu.edu/407090.html pour l'article sur la transformation entier -> entier.

  12. #12
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    C'est assez complexe !
    Mais je pense que j'ai compris, en gros .

    Maintenant, je vais voir dans le forum C pour une implémentation.
    Si tu as des documents (ou d'autres personnes ), je prends toujours, surtout si ce sont des applications directes de ce que je veux faire .

  13. #13
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Finalement, Python est bien plus intéressant pour les ondelettes, ça a été très rapide à mettre en oeuvre !
    J'ai réussi à faire une transformée, puis une transfo inverse.
    Maintenant, je voudrais comprendre quelque chose :
    Si l'image de départ est dans l'espace vectoriel V0, l'image d'arrivée est dans l'espace V1 (2 fois plus petite). Donc, si je veux agrandir, il faut que je suppose mon image V0 comme une image déjà transformée, puis j'applique une idwt pour revenir dans l'espce V-1, qui correspond à l'agrandissement par deux ?

    Si oui, comment, concrètement, je fais ça ?
    Je n'ai pas les coefficients ?

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    L'image d'arrivée est dans l'espace d'arrivée, mais cet espace a la même dimension que l'image originale. Il y a 4 quartiers dans cet espace d'arrivée pour une transformation de "profondeur 1" :
    - en haut à gauche, on a l'image filtrée, sous-échantillonnée
    - en haut à droite, on a les résidus pour le filtrage par les "absisses"
    - en bas à gauche, on a les résidus pour le filtrage par les "ordonnées"
    - en bas à droite, on a soit les résidus du filtrage des résidus des absisses par les ordonnées ou l'inverse selon qu'on fasse d'abord une transformée selon les absisses ou les coordonnées.
    D'ailleurs, si tu fais juste une transformée, c'est encore plus simple, sur une partie de l'image, tu as l'image sous-échantillonnée, sur l'autre, tu as les résidus qui correspondent au filtrage - d'ailleurs, plus les coeffs de ces résidus sont faibles, mieux on pourra compresser l'image -
    Enfin, tout ça sous-entend que tu fais un filtrage "sur place", où tu gardes sur une même image de même dimension l'image sous-échantillonnée et les résidus.

  15. #15
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Oki, je l'ai effectivement observé .
    Maintenant, comment je fais un agrandissement, concrètement ?
    Je prends mon image, et je fais une dwt inverse, mais avec quels coefficients ?

  16. #16
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    En fait, tu crées une image 2 fois plus grande, tu copies dans le carré en haut à gauche ton image, et tu fais une transformée inverse de taille 1. C'est tout

  17. #17
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Je dois sans doute me planter quelque part...
    Je fais exactement ce que tu m'as dis, je prends l'image de départ, je la mets dans le coin gauche de l'image de taille double (noire ailleurs), puis je fais une transfo inverse, avec les coeff d'approx qui sont mon image de départ.
    J'obtiens ça :

  18. #18
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Parce que tu ne une transformée que sur un sens, fais là aussi selon l'autre dimension
    En tout cas, c'est presque le bon résultat

  19. #19
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Donc, mes coefficients de détail seront les même ?
    J'ai ce prototype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    idwt(cA, cD, wavelet, mode=MODES.sym, correct_size=0)
    
    cA approximation coefficients.
    cDdetail coefficients.
    wavelet Wavelet to use in Transform. This can be name of wavelet from wavelist() or Wavelet object.modeSignal extension mode, see MODES. This is only important when DWT was performed in periodizationmode.
    
    correct_size additional option. Normally coeff_a and coeff_d must have the same length. With correct_size set to True, length of coeff_a may be greater than length of coeff_d by value of 1. This is useful when doing multilevel decomposition and reconstruction of non-dyadic length signals.
    Donc, pour cA, j'ai mis l'image "petite"...

  20. #20
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Oui, tu fais juste une transformée inverse d'ordre 1 selon chaque axe, comme tu l'as fait pour l'axe des x pour l'image précédente.

Discussions similaires

  1. Agrandissement (zoom) image
    Par beavis6511 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/12/2007, 11h00
  2. Composant anti-aliasing pour agrandissement d'image
    Par boon31 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 11/11/2007, 16h31
  3. Agrandissement d'image en javascript
    Par bellzigor dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/01/2007, 14h50
  4. [GD] [PHP 4.3] Agrandissement d'image - lissage pixels
    Par Djakisback dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/01/2007, 20h50
  5. Réponses: 3
    Dernier message: 17/09/2006, 00h33

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