mkhadi
Messages postés58Date d'inscriptionlundi 1 novembre 2010StatutMembreDernière intervention 4 décembre 2018
-
14 août 2012 à 04:47
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
23 août 2012 à 08:37
salut
comment convertie une image de niveau de gris a image couleur .
voici le code de conversion de image couleur a image Niveau de gris
public int[]NiveauGris(int[]Entre,int w,int h){
int[]Sortie=Entre;
for(int i=0;i<Entre.length;i++){
int pix=Entre[i];
int red = (pix >> 16) & 0xff;
int green = (pix >> 8) & 0xff;
int blue = (pix ) & 0xff;
int alpha = (pix >> 24) & 0xff;
int gris =(red+green+blue)/3;
int rgb = (alpha<<24)+(gris<<16)+(gris<<8)+gris;
Sortie[i]=gris; }
return (Sortie);}
mkhadi
Messages postés58Date d'inscriptionlundi 1 novembre 2010StatutMembreDernière intervention 4 décembre 2018 21 août 2012 à 18:29
salut voici mon code source complet
//------------------- fonction qui charger image --------------
private Image image = null;
private Boolean stretch = true;
/**
* Constructeur
* @param image image à afficher
*/
public JImagePanel(Image image) {
this.image = image;
}
/**
* Constructeur
* @param file nom du fichier
*/
public JImagePanel(String file) {
image = getToolkit().getImage(file);
MediaTracker MT=new MediaTracker(this);
MT.addImage(image,0);
try{
MT.waitForID(0);
if(MT.isErrorAny())throw new IllegalArgumentException("Image no charger!");
}catch(Exception e){}
w = image.getWidth(this);
h = image.getHeight(this);
tabpix = new int [w * h];
}
catch (InterruptedException e) {System.out.println("Pb dans grabPixels()");
}
// traitement de l'image à l'aide des // elements du tableau
for(int i=0;i<tabpix.length;i++)System.out.println(tabpix[i]);
}
/**
* Position de l'image sur le panel
* @param stretch true: etirer l'image / false: centrer l'image
*/
public void setStretch(Boolean stretch) {
this.stretch = stretch;
}
/**
* Surcharger le dessin du composant
* @param g canvas
*/
protected void paintComponent(Graphics g) {
int x = 0;
int y = 0;
int width = 0;
int height = 0;
/**
* Exemple : jPanelImage dans un JFrame
* @param args
*/
//-------------------------------------------------------------------------
public int[]NiveauGris(int[]Entre,int w,int h){
int[]Sortie=Entre;
for(int i=0;i<Entre.length;i++){
int pix=Entre[i];
int red = (pix >> 16) & 0xff;
int green = (pix >> 8) & 0xff;
int blue = (pix ) & 0xff;
int alpha = (pix >> 24) & 0xff;
int gris =(red+green+blue)/3;
int rgb = (alpha<<24)+(gris<<16)+(gris<<8)+gris;
Sortie[i]=gris; }
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 22 août 2012 à 09:49
En regardant ton code source, je pense que la meilleure solution que tu ais est d'abandonner. Ce genre d'algorithme existe mais est très complexe à mettre en oeuvre. Ce sont généralement des algorithmes probabilistes basés sur des réseaux de neurones ou de la segmentation d'image (un peu comme ceux qui permettent de créer les images qui sortent des scanner et des irm)
Les algorithmes les plus performants actuellement utilises des indications données par l'utilisateur sur la couleur à appliquer sur quelques points et en fonction de la texture de fond, ils déduisent les autres points.
Dans tous les cas, ton objectif est je pense trop élevé au vu de ta maîtrise du langage.
J’espère que tu ne le prendra pas mal, mais j'essaye de t'éviter de perdre trop de temps.
Et "l’algorithme à décalage" est en réalité une famille d'algorithme de chiffrement symétrique... Ce nom est peut être également utilisé pour un algorithme de colorisation mais j'en doute.
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 23 août 2012 à 08:37
Je pense que tu n'as pas très bien compris. Ce genre d'algorithme n'existe pas !
Pour coloriser des films par exemple, ils utilisent soit des photos couleur pour déduire certains points, et un logiciel ultra pointu déduit les autres points. Il y a actuellement pas mal de recherche sur ce genre d'algorithme, et je pense qu'il est impossible
pour toi comme pour moi d'ailleurs de coder en java ce genre d'algorithme.