Traitement d'image

hta9wa - 22 févr. 2013 à 10:07
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 22 févr. 2013 à 16:53
Bonjour,
Je cherche à faire un algorithme de filtrage d'image en utilisant le filtre de sobel avec java android. merci à tout

3 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
22 févr. 2013 à 10:45
Salut,

Nous pouvons t’aider sur un point précis mais pas te fournir un code source. Tu peux peut être en trouver un en cherchant sur google mais ce n'est pas certain.

Essayes de le faire et si tu as des difficultés, nous serons là pour t'aider.
0
j'ai un code java (netbeans) j'essaye de le convertir en java android mais je suis bloquée dans la fonction qui convertit une image couleur en niveau de gris.
voila le code en java


import java.util.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.MediaTracker.*;
import java.io.*;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.imageio.*;

class sobel
{
public void filtre(String fil)
{
             try {
BufferedImage img=ImageIO.read(new File(fil));
int [][] pixel= new int[img.getWidth()][img.getHeight()];
 		int x,y,g;

//***************************************************
//Conversion enniveau du Gris

for (int i = 0; i < img.getWidth(); i++) {
   for (int j = 0; j < img.getHeight(); j++) {
      Color pixelcolor= new Color(img.getRGB(i,j));
      int r=pixelcolor.getRed();
      int gb=pixelcolor.getGreen();
      int b=pixelcolor.getBlue();
      int hy=(r+gb+b)/3;
      int rgb=new Color(hy,hy,hy).getRGB();
      // changer la couleur de pixel avec la nouvelle couleur inversée
      img.setRGB(i, j, rgb);
   }
}	

//***************************************************  	
// parcourir les pixels de l'image
        for (int i = 0; i < img.getWidth(); i++) 
{
for (int j = 0; j < img.getHeight(); j++) 
{

// recuperer couleur de chaque pixel
Color pixelcolor= new Color(img.getRGB(i, j));

// recuperer les valeur rgb (rouge ,vert ,bleu) de cette couleur
 pixel[i][j]=img.getRGB(i, j);

       }
    }

//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
for (int i = 1; i < img.getWidth()-2; i++) 
{
for (int j = 1; j < img.getHeight()-2; j++) 
{
                    x=(pixel[i][j+2]+2*pixel[i+1][j+2]+pixel[i+2][j+2])-(pixel[i][j]+2*pixel[i+1][j]+pixel[i+2][j]);
                    y = (pixel[i + 2][j] + 2 * pixel[i + 2][j + 1] + pixel[i + 2][j + 2]) - (pixel[i][j] + 2 * pixel[i][j + 1] + pixel[i][j + 2]);
            
                    g=Math.abs(x)+Math.abs(y);	

                   //System.out.println(g);
                    pixel[i][j]=g;
                  }
        }

//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//**********************************************************************************	for (int i = 0; i < img.getWidth(); i++) {
     for (int j = 0; j < img.getHeight(); j++) {

Color pixelcolor= new Color(pixel[i][j]);
int r=pixelcolor.getRed();
int gb=pixelcolor.getGreen();
int b=pixelcolor.getBlue();
        int rgb=new Color(r,gb,b).getRGB();

// changer la couleur de pixel avec la nouvelle couleur inversée
img.setRGB(i, j, rgb);

}
}	
// enregistrement d'image
          ImageIO.write(img, "bmp",new File("Sobel.bmp"));
       
        //ImageIO.write()//;
}
catch (Exception e) {
System.err.println("erreur -> "+e.getMessage());
}

System.out.println("fin");
}

}



la fonction de je cherche est l'équivalent de getRBG(int, int) en java android
merci d'avance
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
22 févr. 2013 à 16:53
Hello,
Je ne pense pas qu'il y ait de fonction magique... Il faut récupérer les pixels et faire des masques pour récupérer les couleurs
Regarde ceci


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous