Traitement d'image

hta9wa - 22 févr. 2013 à 10:07
BunoCS
Messages postés
15277
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 juillet 2022
- 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
366
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
15277
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 juillet 2022
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