Traitement d'images [Résolu]

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

Je cherche une API pour faire du traitement des images.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 novembre 2018
- 16 nov. 2006 à 20:17
3
Merci
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

Merci Twinuts 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Twinuts
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
- 16 nov. 2006 à 21:04
0
Merci
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, ...)


- ...
Commenter la réponse de Ombitious_Developper
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 novembre 2018
- 16 nov. 2006 à 21:13
0
Merci
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
Commenter la réponse de Twinuts
- 2 déc. 2012 à 12:18
0
Merci
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();
}
}
}
Commenter la réponse de hanenhanoun

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.