Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1412 connectés 

 


Dernière réponse
Sujet : algorithme pour retouche d'image
darkoli revoici une autre url pour l'utilisation des matrices avec photoshop
 
http://www.multimania.fr/webmaster [...] tml?page=5

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
darkoli revoici une autre url pour l'utilisation des matrices avec photoshop
 
http://www.multimania.fr/webmaster [...] tml?page=5
juldjin merci encore darkoli.
g reussi a faire un retrecissement de n'importe quelle image, et ceux en gardant l'aspect ratio.
je suis fier de moi...
 
touf--> Cette fille c'est la femme de ma vie, et je m'en fout de ces tété etc...
(immenses)
darkoli re voici des liens :
 
http://www.astrosurf.com/legault/ip_fr.htm
http://www.campus.ecp.fr/astro/exp [...] ement.html
 
http://raphaello.univ-fcomte.fr/IG [...] Images.htm tres bien fait

 

[edit]--Message édité par darkoli--[/edit]

toufleboss Jules tu sait bien que tu maitrise pas  :D  
 
Alors arrête de te faire du mal et dis moi si elle a des gros tété  :eek2:
juldjin tsr --> euh.. moi je maitrise pas les opérations avec les hexas..
si tu peux m'expliquer comment tourne ton algorithme  :sol:  
 
thanks
juldjin merci a tous pour tout vos trucs, je reviens lundi, car la je suis en week END   !!!!
 
mais je pense que ces algos vont me trotter comme meme dans l'esprit.
tsr si ca peut t'aider j'ai fait une fonction pour resizer une image:
cette fonction filtre l'image pour que ce ne soit pas trop pourrit.
 
AVEC tailleX et tailleY sont les nouvelles dimentions de l'image
AVEC oldx et oldy sont les anciennes dimentions de l'image
 
    int buffer[]=new int[tailleX*tailleY];
 
    int sx=oldx, sy=oldy;
    // calcul du coeficient d'interpolation des point entre l'img source et l'img de destination
    int ix=sx*256/tailleX;
    int iy=sy*256/tailleY;
 
    int x,y,a,b,xx,yy,yyy;
    int c0,c1,c2,c3,c;
    int o0,o1,o2,o3;
 
    // on utilise une virgule fixe pour x et y (24bits pour les valeur entiere de x et y)
    // et 8bits pour les valeur derriere la virgule pour x->b et y->a
    // parcourt de la nouvelle image
    y=0;
    for (int j=0;j<tailleY;j++)
        {
        // y est la coordonnée dans l'ancienne image
        // a est la la valeur apres la virgule
        // (distance entre le plus proche pixel de la source vers la coordonnée de y)
        a=y&0xff;
        x=0;
        yy=y>>8;
        yyy=yy*sx;
        for (int i=0;i<tailleX;i++)
            {
            // x est la coordonnée dans l'ancienne image
            // b est la la valeur apres la virgule
            // (distance entre le plus proche pixel de la source vers la coordonnée de x)
            b=x&0xff;
            xx=x>>8;
            c=0;
           // test si le projeter est contenu dans l'image
            if ((xx+yyy)>=0 && (xx+1+yyy+sx)<(sy*sx-1)) {
 
              o0=f.get(xx+yyy); o1=f.get((xx+1)+yyy);
              o2=f.get(xx+yyy+sx); o3=f.get(xx+1+yyy+sx);
              // bilinear interpolation
              c=0xff000000;
              c0=(o0&0xFF0000)>>16; c1=(o1&0xFF0000)>>16;
              c2=(o2&0xFF0000)>>16; c3=(o3&0xFF0000)>>16;
              c0=(c0<<8)+b*(c1-c0);
              c2=(c2<<8)+b*(c3-c2);
              c+=((c0<<8)+a*(c2-c0))&0xff0000;
 
              c0=(o0&0xFF00)>>8; c1=(o1&0xFF00)>>8;
              c2=(o2&0xFF00)>>8; c3=(o3&0xFF00)>>8;
              c0=(c0<<8)+b*(c1-c0);
              c2=(c2<<8)+b*(c3-c2);
              c+=(((c0<<8)+a*(c2-c0))>>8)&0xff00;
 
              c0=o0&0xFF; c1=o1&0xFF;
              c2=o2&0xFF; c3=o3&0xFF;
              c0=(c0<<8)+b*(c1-c0);
              c2=(c2<<8)+b*(c3-c2);
              c+=(((c0<<8)+a*(c2-c0))>>16)&0xff;
 
              buffer[i+j*tailleX]=c;
//              buffer[i+j*tailleX]=f.get(xx+yyy);
              }
            x+=ix;
            }
        y+=iy;
        }
    // recopie du buffer
    f.buffer=new int[tailleX*tailleY];
 
    for(int i=0;i<tailleX*tailleY;i++)
      f.buffer[i]=buffer[i];
Roswell_ Ca donne quoi ta galerie avec la matrice du laplacien?
 
 0 -1  0
-1  4 -1
 0 -1  0
juldjin gracias darkoli
darkoli d'ailleurs a propos de photoshop, dans le menu filtre, va tout en bas, et tu verras tu peux toi meme remplir une matrice pour faire une filtre. Donc pour faire des testes pour trouver une matrice efficace tu peux essayer.
 
Pour le contour ca se fait en 4 fois, d'abord de gauche a droite, puis de droite a gauche puis de haut en bas et enfin de bas en haut avec 4 matrices differentes, et en,suite, il faut ajouter les 4 images obtenus. Mais il y a d'autres méthodes.
juldjin Kick -> Mon stage est trop fort pour l'instant, je programme en Win 32, ca a été dure mais je commence a maitriser.
maintenant je passe aux algo pour traiter les images, mais C pas avec les maths qu'on a eu a l'iut que je vais faire grand chose (El Hor...).
 
Roswell_ -> je vais peux etre me servir d'un de tes algos pour faire les contours, mais y faudrait que j'optimise, en faite je dois chercher sur une image des galleries creusé par des lombrics.... donc y faut que je détour que les parties sombres...
 
darkoli -> merci de ton aide si précieuse, la je travaille sur un algo pour redimensionner une image (l'agrandir ou la rétrecir) je regarde comment photoshop et paint shop pro le font
apparemment c'est pareil avec des matrices...
Roswell_ juldjin> ben il te plait mon algo de flou ;)
kick alors juldjin c'est comment ton projet, moi c'est de la bd ca me plait pas trop mais j'apprend pas mal de truc sur asp, vb et c# alors ca compense, et toi ?
darkoli voici un exemple tout bete pour faire du flou tout bete.
 
matrice de flou 3x3 avec des 1 dans chaque case.
ton image est considerée aussi comme une matrice lxh (largeur et hauteur)
 
1° attention, avec cette méthode, les pixels du bord de l'image sont ignorés.
2° je considere une image noir et blanc : 0..255
3° il faut une image intermediaire pour les resultat.
 
unsigned char isrc[l][h];
unsigned int  idst[l][h]; // à 0
unsignet char mat[3][3];
int           som;  // somme des elements de la matrice
 
for (int i=1;i<(l-1);i++) {
  for (int j=1;j<(k-1);j++) {
    for (int k=-1;k<2;k++) {
      for (int l=-1;l<2;l++) {
        idst[i][j]=idst[i][j]+(isrc[i+k][j+l]*mat[k][l]);
        }
      }
    idst[i][j]=idst[i][j]/som;
    }
  }
 
voila, normalement ca marche mais ce n'est pas du tout optimisé.
Avec ca tu as au moins le principe de fonctionnement. Il suffit ensuite de modifier les valeur de la matrice mat et tu pourras faire de belles choses.
juldjin oki merci je vais buché dessus avant de me rentrer chez moi (pouh dure journée)  :sol:
darkoli voici quelque liens mais ce n'est pas trié et parfois c'est un peu compliqué.
 
http://www.inria.fr/rapportsactivi [...] tat-2.html
 
 
http://pczenith.univ-mlv.fr/~jf/Tr [...] _imag.html
 
je suis sur qu'il y a mieux que ca mais ben c'est ce qu j'ai trouvé
juldjin ouais C bien ce que je pensait, mais moi les maths c'est pas le top...
 
Si qq'un connait un site pour les nuls en maths, SVP ? :hap:
darkoli dans la plus part des cas le traitement d'une image se resume a appliquer une matrice pour chaque point de l'image. La taille de la matrice et les valeurs des éléments de la matrice sont tres importants.
 
Il existe des matrices pour faire du "flou" (directionnel, ...) ou de la detection de contour par exemple.
juldjin bonjour, je cherche de la doc sur internet si possible, qui m'expliquerait comment traiter les images :
 agrandir,retrecir,faire du flou etc...
 
merci d'avance   :lol:

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)