|
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 |
Aperçu |
---|
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: |