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

  FORUM HardWare.fr
  Programmation

  algorithme pour retouche d'image

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

algorithme pour retouche d'image

n°24310
juldjin
Posté le 12-04-2001 à 15:38:33  profilanswer
 

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:

mood
Publicité
Posté le 12-04-2001 à 15:38:33  profilanswer
 

n°24312
darkoli
Le Petit Dinosaure Bleu
Posté le 12-04-2001 à 15:46:44  profilanswer
 

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.

n°24313
juldjin
Posté le 12-04-2001 à 15:53:54  profilanswer
 

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:

n°24315
darkoli
Le Petit Dinosaure Bleu
Posté le 12-04-2001 à 16:01:43  profilanswer
 

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é

n°24316
juldjin
Posté le 12-04-2001 à 16:03:00  profilanswer
 

oki merci je vais buché dessus avant de me rentrer chez moi (pouh dure journée)  :sol:

n°24319
darkoli
Le Petit Dinosaure Bleu
Posté le 12-04-2001 à 16:10:16  profilanswer
 

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.

n°24381
kick
Posté le 12-04-2001 à 17:32:41  profilanswer
 

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 ?

n°24416
Roswell_
Posté le 12-04-2001 à 19:27:00  profilanswer
 

juldjin> ben il te plait mon algo de flou ;)


---------------
http://www.cheata.net le site qui vous donne la banane!
n°24475
juldjin
Posté le 13-04-2001 à 08:34:37  profilanswer
 

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...

n°24508
darkoli
Le Petit Dinosaure Bleu
Posté le 13-04-2001 à 10:18:17  profilanswer
 

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.

mood
Publicité
Posté le 13-04-2001 à 10:18:17  profilanswer
 

n°24518
juldjin
Posté le 13-04-2001 à 10:40:32  profilanswer
 

gracias darkoli

n°24557
Roswell_
Posté le 13-04-2001 à 12:01:25  profilanswer
 

Ca donne quoi ta galerie avec la matrice du laplacien?
 
 0 -1  0
-1  4 -1
 0 -1  0


---------------
http://www.cheata.net le site qui vous donne la banane!
n°24561
tsr
Posté le 13-04-2001 à 12:11:43  profilanswer
 

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];

n°24573
juldjin
Posté le 13-04-2001 à 12:57:20  profilanswer
 

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.

n°25065
juldjin
Posté le 17-04-2001 à 08:59:35  profilanswer
 

tsr --> euh.. moi je maitrise pas les opérations avec les hexas..
si tu peux m'expliquer comment tourne ton algorithme  :sol:  
 
thanks

n°25193
toufleboss
Posté le 17-04-2001 à 13:41:29  profilanswer
 

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:


---------------
touf
n°25234
darkoli
Le Petit Dinosaure Bleu
Posté le 17-04-2001 à 14:41:53  profilanswer
 
n°25244
juldjin
Posté le 17-04-2001 à 15:09:26  profilanswer
 

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)

n°25252
darkoli
Le Petit Dinosaure Bleu
Posté le 17-04-2001 à 15:27:22  profilanswer
 

revoici une autre url pour l'utilisation des matrices avec photoshop
 
http://www.multimania.fr/webmaster [...] tml?page=5


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  algorithme pour retouche d'image

 

Sujets relatifs
generation d'image et phpVB : menu popup : petite image à gauche ???
Algorithme de compression MP3cliquer sur une image est provoquer plusieurs actions sous java script
Probleme d'algorithme?Algorithme?
HTML : Image de fond statiqueHTML : Image de fond statique
[java-script] 2 onclick sur une seule image 
Plus de sujets relatifs à : algorithme pour retouche d'image


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR