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

C Discussion :

Resize d'une image


Sujet :

C

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 0
    Points : 309
    Points
    309
    Par défaut Resize d'une image
    Salut,

    Voilà, ca fait plusieurs jours que je bataille... Je n'arrive pas à créer une fonction qui permet de redimensioner une image. Alors par désespoir j'ai essayer de chercher sur internet... Bilan tout aussi désastreux...

    Est-ce que quelqu'un a une idée ou un site à me donner pour trouver le source...

    Merci Beaucoup.

    Nuwanda

  2. #2
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 84
    Points : 89
    Points
    89
    Par défaut
    voici du pseudo code:

    tu cree une nouvelle image vide de taille l'image finale.

    tu parcours cette image et pour chaque point tu calcul ses coordonnees dans l'image d'origine (genre : image init= 10*10 , image final, 100*100 : le point (4;5) de l'image final correspond au point (4*10/100;5*10/100) ).
    ensuite tu as plusieurs possibilite: (car les coordonees ne tomberont pas forcement juste).tu tronques la partie decimal (point superieur gauche), tu ajoute 0.5 (a x et a y) et tu tronques la partie decimal ( le point le plus proche)et enfin la meilleur qui est l'approximation bilineaire, qui consiste a recuperer la distance entre les 4 points (haut bas gauche droit ) qui l'entoure et de faire d1*Phaut+d2*PBas +d3*Pgauche+ d4*Pdroit.

    Voila si c pas clair redemandez moi

  3. #3
    Membre averti

    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 0
    Points : 309
    Points
    309
    Par défaut
    Je n'ai pas trop compris desolé ;-)
    Si on prend le cas d'une image 7*7 que lon veut mettre en 5*5, on fait comment ?

  4. #4
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 84
    Points : 89
    Points
    89
    Par défaut
    Voici ddu pseudo code:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    //Methode facile : Coin superieur gauche
    cree une image 5x5
    pour chaque ligne de l'image 5x5 y (donc de 0 a 4)
    	pour chaque colonne 5x5 x (donc de 0 a 4
    		mettre le pixel (x,y) de 5x5 a la valeur du pixel ((int)(x*(7/5)),(int)(y*(7/5))) de 7x7
    tu as donc dans l'image 5x5 l'image 7x7 reduite
     
    //Methode un peu plus difficile :Le plus proche
    cree une image 5x5
    pour chaque ligne de l'image 5x5 y (donc de 0 a 4)
    	pour chaque colonne 5x5 x (donc de 0 a 4
    		mettre le pixel (x,y) de 5x5 a la valeur du pixel ((int)(x*(7/5) +0.5),(int)(y*(7/5)+0.5)) de 7x7
    tu as donc dans l'image 5x5 l'image 7x7 reduite
     
    //Methode encore plus difficile :approximation bilineaire
    cree une image 5x5
    pour chaque ligne de l'image 5x5 y (donc de 0 a 4)
    pour chaque colonne 5x5 x (donc de 0 a 4{
     
    		recupere la distance dx entre x*(7/5) et (int)(x*(7/5))
    		recupere la distance dy entre y*(7/5) et (int)(y*(7/5))
    		calcule coinSupGauch =racine(2)-racine(dx*dx+dy*dy)
    		recupere la distance dx entre x*(7/5) et (int)(x*(7/5))
    		recupere la distance dy entre y*(7/5) et (int)(y*(7/5) +0.5)
    		calcule coinInfGauch =racine(2)-racine(dx*dx+dy*dy)
    		recupere la distance dx entre x*(7/5) et (int)(x*(7/5)	+0.5)
    		recupere la distance dy entre y*(7/5) et (int)(y*(7/5))
    		calcule coinSupDroit =racine(2)-racine(dx*dx+dy*dy)
    		recupere la distance dx entre x*(7/5) et (int)(x*(7/5) +0.5)
    		recupere la distance dy entre y*(7/5) et (int)(y*(7/5) +0.5)
    		calcule coinInfDroit =racine(2)-racine(dx*dx+dy*dy)
    		total=coinSupGauch+coinInfGauch+coinSupDroit+coinInfDroit
    		coinSupGauch/=total(il devient donc compris entre 0 et 1)
    		coinInfGauch/=total(il devient donc compris entre 0 et 1)
    		coinSupDroit/=total(il devient donc compris entre 0 et 1)
    		coinInfDroit/=total(il devient donc compris entre 0 et 1)
    		le total des 4 est donc egal a 1
     
    		mettre le pixel (x,y) de 5x5 a   la valeur du pixel ((int)(x*(7/5)     ),(int)(y*(7/5)    )) de 7x7 multiplie par coinSupGauch
    									plus la valeur du pixel ((int)(x*(7/5) +0.5),(int)(y*(7/5)    )) de 7x7 multiplie par coinSupDroit 
    									plus la valeur du pixel ((int)(x*(7/5)     ),(int)(y*(7/5)+0.5)) de 7x7 multiplie par coinInfGauche
    									plus la valeur du pixel ((int)(x*(7/5) +0.5),(int)(y*(7/5)+0.5)) de 7x7 multiplie par coinInfDroit 
    }
    tu as donc dans l'image 5x5 l'image 7x7 reduite

  5. #5
    Membre averti

    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 0
    Points : 309
    Points
    309
    Par défaut
    Merci beaucoup, là je comprend très bien le fonctionnement.

    Sinon as-tu entendu parlé du resize bicubic ? (encore mieux mais encore plus difficile)

    Nuwanda

    Ps : Re-merci

  6. #6
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 84
    Points : 89
    Points
    89
    Par défaut
    Effectivement c'est mieux que le bilineaire, en fait le bicubic va prendre 16 pixels autours et avec les coeffecient d'une equation cubique, va melanger tout ca.

  7. #7
    Membre habitué Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2004
    Messages : 326
    Points : 146
    Points
    146
    Par défaut
    J'ajouterai juste qu'il n'y a pas vraiment de différence entre le bilinéaire et le bicubique au niveau visuel
    Athlon 6000+ Dual Core & GeForce 8600 GT -- Ubuntu Gutsy

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

Discussions similaires

  1. resize d'une image sous delphi6
    Par yarekc dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2012, 11h50
  2. Réponses: 2
    Dernier message: 02/02/2012, 22h47
  3. Réponses: 4
    Dernier message: 17/08/2009, 14h19

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