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 éclairé

    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
    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 éclairé
    Inscrit en
    Mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 84
    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 éclairé

    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
    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 éclairé
    Inscrit en
    Mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 84
    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 éclairé

    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
    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 éclairé
    Inscrit en
    Mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 84
    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 éclairé Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    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

+ 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