Moyenne de deux pixels

Moyenne de deux pixels - Divers - Programmation

Marsh Posté le 22-05-2008 à 12:31:38    

Bonjour,
je travaille actuellement sur un projet de seam-carving en java.
J'importe une Image que je met dans une matriceRGB. Cette matrice contient la valeur RGB de chaque pixel de l'image.
Pour faire un agrandissement de l'image, il nous faut créer un nouveau pixel.
Voici la fonction que j'utilise actuellement :

Code :
  1. public void recopiePixelSCH(int x, int y){
  2.  this.matrice[x+1][y] = this.matrice[x][y];
  3. }


Cependant pour que le rendu de l'image soit plus "beau", je souhaiterais pouvoir faire la moyenne des deux pixels voisins.
Exemple :

Code :
  1. public void nouveauPixelSCH(int x, int y){
  2.  this.matrice[x+1][y] = moyenne(this.matrice[x-1][y],this.matrice[x-2][y]);
  3. }


Le problème vient de la fonction moyenne puisque je n'arrive pas à calculer cette moyenne (j'ai essayé de faire la moyenne mathématiques mais c'est un désastre).
Quelqu'un peut-il m'aider s'il vous plaît?
Merci d'avance.

Reply

Marsh Posté le 22-05-2008 à 12:31:38   

Reply

Marsh Posté le 22-05-2008 à 13:03:50    

Merci à tous ceux qui ont vu ce message.
J'ai trouvé la solution.
Je décompose ma valeur RGB en rouge, vert et bleu et je fais la moyenne séparément.

Code :
  1. public void recopie2PixelSCH(int x, int y){
  2.  if (x==0) x++;
  3.  if (x==this.largeur-1) x--;
  4.  int rgb1 = this.matrice[x-1][y];
  5.  int rgb2 = this.matrice[x+2][y];
  6.  int r1 = (rgb1 >>16 ) & 0xFF;
  7.  int r2 = (rgb2 >>16 ) & 0xFF;
  8.  int g1 = (rgb1 >> 8 ) & 0xFF;
  9.  int g2 = (rgb2 >> 8 ) & 0xFF;
  10.  int b1 = rgb1 & 0xFF;
  11.  int b2 = rgb2 & 0xFF;
  12.  this.matrice[x+1][y] = new Color((int)((r1+r2)/2), (int)((g1+g2)/2), (int)((b1+b2)/2)).getRGB();
  13. }

Reply

Marsh Posté le 22-05-2008 à 13:12:46    

yop :)

 


ça serait possible de tester/utiliser ton programme une fois que t'auras fini ? :)


Message édité par art_dupond le 22-05-2008 à 13:13:05

---------------
oui oui
Reply

Marsh Posté le 22-05-2008 à 16:31:48    

Oui mais pas avant deux bonnes semaines, le temps de le rendre

Reply

Marsh Posté le 23-05-2008 à 00:24:31    

oki chouette :)


---------------
oui oui
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed