Traitement d'images

Résolu
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 16 nov. 2006 à 20:12
 hanenhanoun - 2 déc. 2012 à 12:18
Salut:

Je cherche une API pour faire du traitement des images.

4 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
16 nov. 2006 à 20:17
Salut,

tu peux utiliser http://java.sun.com/products/java-media/jai/JAI(Java Advanced Imaging)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
16 nov. 2006 à 21:04
Salut:

Pardon, j'ai une autre question.

Est ce que cette API (JAI) me permet de faire les opérations de base de traitement d'images telles que:

- Tranformation en niveau de gris.
- Rotation

- supporter de plusieurs formats d'images (BMP, TGA, PCX, JPG, ...)


- ...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
16 nov. 2006 à 21:13
Salut,

je pense que oui(perso je me suis fait les routines moi meme donc ...)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
voila un code vous pouvez l'utiliser

package cadre;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.awt.image.RescaleOp;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class PanDessin extends JPanel {

BufferedImage monImage = null;

public PanDessin() {
super();

}

protected void paintComponent(Graphics g)
{
super.paintComponent(g);
if(monImage != null)
g.drawImage(monImage, 0, 0, null);
}


protected void reduireImage()
{
BufferedImage imageReduite = new BufferedImage((int)(monImage.getWidth()*0.5),(int)( monImage.getHeight()*0.5), monImage.getType());
AffineTransform reduire = AffineTransform.getScaleInstance(0.5, 0.5);
int interpolation = AffineTransformOp.TYPE_BICUBIC;
AffineTransformOp retaillerImage = new AffineTransformOp(reduire, interpolation);
retaillerImage.filter(monImage, imageReduite );
monImage = imageReduite ;
repaint();
}
protected void fermer(){
System.exit(0);
}


protected void agrandirImage()
{
BufferedImage imageZoomer = new BufferedImage((int)(monImage.getWidth()*1.5),(int)( monImage.getHeight()*1.5), monImage.getType());
AffineTransform agrandir = AffineTransform.getScaleInstance(1.5, 1.5);
int interpolation = AffineTransformOp.TYPE_BICUBIC;
AffineTransformOp retaillerImage = new AffineTransformOp(agrandir, interpolation);
retaillerImage.filter(monImage, imageZoomer );
monImage = imageZoomer ;
repaint();
}
protected void seulliagebin(File fichierImage)
{

int se = 127;
se = Integer.parseInt(JOptionPane.showInputDialog("Donner le seuil"));


int he=0;
int we=0;

try{
BufferedReader in = new BufferedReader(new FileReader(fichierImage));
FileWriter ou = new FileWriter(fichierImage+"_seuilbin.pgm");

in.readLine();


String ch = in.readLine();
while (ch.startsWith("#"))
{
ch = in.readLine();
}


StringTokenizer st = new StringTokenizer(ch," ");
he= Integer.parseInt(st.nextToken());
we = Integer.parseInt(st.nextToken());

System.out.println("Height="+he+"width="+we);

in.readLine();


ou.write("P2");
ou.write("\n");
ou.write("#");
ou.write("Created by IrfanView");
ou.write("\n");
ou.write(he+" "+we);
ou.write("\n");
ou.write("255");
ou.write("\n");

String ligne=in.readLine();
ligne=in.readLine();
ligne=in.readLine();
ligne=in.readLine();
while(in.ready())
{
ligne=in.readLine();

StringTokenizer t=new StringTokenizer(ligne," ");
while(t.hasMoreTokens())
{
int val=Integer.parseInt(t.nextToken());
if(val<=se)
ou.write(0+" ");
else ou.write(255+" ");

}
}

JOptionPane.showMessageDialog(null,"OPERATION TERMINEE AVEC SUCCES ","SEUILLAGE BINAIRE",JOptionPane.INFORMATION_MESSAGE);

}



catch(IOException exc)
{
System.out.println(exc);
}




}
protected void imageConvolue()//on va utiliser le masque flou
{
BufferedImage imageFlou = new BufferedImage(monImage.getWidth(),monImage.getHeight(), monImage.getType());
float[ ] masqueFlou =
{
0.1f, 0.1f, 0.1f,
0.1f, 0.2f, 0.1f,
0.1f, 0.1f, 0.1f
};

Kernel masque = new Kernel(3, 3, masqueFlou);
ConvolveOp opération = new ConvolveOp(masque);
opération.filter(monImage, imageFlou);
monImage = imageFlou;
System.out.println("convolution effectuée");
repaint();

}

protected void imageEclaircie()
{
/*
* RescaleOp brillance = new RescaleOp(A, K, null);
* 1. A< 1, l’image devient plus sombre.
2. A > 1, l’image devient plus brillante.
3. K est compris entre 0 et 256 et ajoute un éclairement .
*/
BufferedImage imgBrillant = new BufferedImage(monImage.getWidth(), monImage.getHeight(), BufferedImage.TYPE_INT_RGB);
RescaleOp brillance = new RescaleOp(1.2f, 0, null);
brillance.filter(monImage, imgBrillant);
monImage = imgBrillant;
repaint();


}

protected void imageSombre()
{
/* RescaleOp assombrir = new RescaleOp(A, K, null);
*
* 1. A < 1, l’image devient plus sombre.
2. A > 1, l’image devient plus brillante.
3. K est compris entre 0 et 256 et ajoute un éclairement .
*
*/
BufferedImage imgSombre = new BufferedImage(monImage.getWidth(), monImage.getHeight(), BufferedImage.TYPE_INT_RGB);
RescaleOp assombrir = new RescaleOp(0.7f, 10, null);
assombrir.filter(monImage, imgSombre);
monImage = imgSombre;
System.out.println("assombrir effectuée");
repaint();
}





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");


}

protected void imageBinaire()
{
BufferedImage imgBinaire = new BufferedImage(monImage.getWidth(), monImage.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
Graphics2D surfaceImg = imgBinaire.createGraphics();
surfaceImg.drawImage(monImage, null, null);
monImage = imgBinaire;
repaint();
}

protected void imageEnNiveauGris()
{
BufferedImage imageGris = new BufferedImage(monImage.getWidth(), monImage.getHeight(), BufferedImage.TYPE_USHORT_GRAY);
Graphics2D surfaceImg = imageGris.createGraphics();
surfaceImg.drawImage(monImage, null, null);
monImage = imageGris;
repaint();
}

protected void ajouterImage(File fichierImage)
{ // desiiner une image à l'ecran
try {
monImage = ImageIO.read(fichierImage);

} catch (IOException e) {
e.printStackTrace();
}
repaint();
}

protected BufferedImage getImagePanneau()
{ // récupérer une image du panneau
int width = this.getWidth();
int height = this.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();

this.paintAll(g);
g.dispose();
return image;
}

protected void enregistrerImage(File fichierImage)
{
String format ="JPG";
BufferedImage image = getImagePanneau();
try {
ImageIO.write(image, format, fichierImage);
} catch (IOException e) {
e.printStackTrace();
}
}
}
0
Rejoignez-nous