K-LiBRE Posté(e) le 19 novembre 2009 Partager Posté(e) le 19 novembre 2009 Bonjour à tous, J'ai trouver un logiciel de binarisation : Binarization Image Processor, mais lorsque je binarise une image et que je l'ouvre avec bloc note, j'ai des caractères inconnu, pas ceux que je voudrais obtenir (c'est à dire de 0 et des 1 avec la longueur et la largeur de l'image (ce qui pourrais me permettre d'introduire des images dans le logiciel jgraps lorsque je programme en java)). Comment pourrais je procéder ? Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 20 novembre 2009 Partager Posté(e) le 20 novembre 2009 Bonjour à tous,J'ai trouver un logiciel de binarisation : Binarization Image Processor, mais lorsque je binarise une image et que je l'ouvre avec bloc note, j'ai des caractères inconnu, pas ceux que je voudrais obtenir (c'est à dire de 0 et des 1 avec la longueur et la largeur de l'image (ce qui pourrais me permettre d'introduire des images dans le logiciel jgraps lorsque je programme en java)). Comment pourrais je procéder ? Merci d'avance. ouvre le plutot avec un editeur hexa ... si tu attend de voir les 0 et 1 en TXT je crois que tu peux attendre longtemps Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 20 novembre 2009 Partager Posté(e) le 20 novembre 2009 Haha... Et elle feront quelle taille tes images si tu les transforme en 0 et en 1 ? Je te conseille plutôt d'utiliser Base64 : tu n'obtiendras que des caractères visibles ASCII et ça sera quand même plus petit que des caractères 0/1. Et c'est un format que tu trouvera en standard dans la quasi-totalité des librairies. Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 20 novembre 2009 Auteur Partager Posté(e) le 20 novembre 2009 En fait j'ai besoin de dessin en .txt avec des 01 pour programmer en java (je ne suis quand licence 1 d'informatique xD) Il n'y a vraiment pas moyen ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 21 novembre 2009 Partager Posté(e) le 21 novembre 2009 a mon avis tu a loupé un cours Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 21 novembre 2009 Auteur Partager Posté(e) le 21 novembre 2009 les dessin il sont fait à la main normalement en cours, mais je voulais convertir une image noir et blanc en niveau de gris représenté par plein de 0 et 1 !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
BreizFenrir Posté(e) le 22 novembre 2009 Partager Posté(e) le 22 novembre 2009 Je pense qu'il serait utile que tu nous fasse un topo complet sur les raisons qui te poussent à vouloir faire ça. Je ne vois personnellement pas les raisons qui pourraient te pousser à avoir besoin d'un tel fichier, et je suis assez curieux. Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 23 novembre 2009 Auteur Partager Posté(e) le 23 novembre 2009 Pour l'instant je fait que du Java ("basique"), et je trouvais sympa de pouvoir introduire des images dans les "minis programmes" que je fais, pour égayer un peu quoi ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 24 novembre 2009 Partager Posté(e) le 24 novembre 2009 ça ne nous dit toujours pas pourquoi tu veux des images sous forme de caractères 0 et 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 24 novembre 2009 Auteur Partager Posté(e) le 24 novembre 2009 Parce que c'est le seul moyen de les mettre dans jgraps, c'est en .txt avec des 0 pour un pixel blanc et 1 pour un pixel noir ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 28 novembre 2009 Auteur Partager Posté(e) le 28 novembre 2009 up Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 29 novembre 2009 Auteur Partager Posté(e) le 29 novembre 2009 up pls :S Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 1 décembre 2009 Auteur Partager Posté(e) le 1 décembre 2009 Personne en peut me dire comment faire pour avoir une image en binaire avec des 1 pour les pixels noir et des 0 pour les pixels blanc ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 1 décembre 2009 Partager Posté(e) le 1 décembre 2009 Personne en peut me dire comment faire pour avoir une image en binaire avec des 1 pour les pixels noir et des 0 pour les pixels blanc ? Je dis juste ca comme ca mais a mon avis tu as plus besoin d'une librairie pour lire le BMP ( ou autres ), ensuite de scan ta matrice de point et tu rempli au fur et a mesure ton fichier texte. Mais en soit ce que tu dis enfin pour moi ne mene a rien, ton image meme en BMP peut posseder un encodage tu peux pas le dumper comme ca poulet. Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 3 décembre 2009 Partager Posté(e) le 3 décembre 2009 Question con, mais pourquoi ne pas faire une pauvre interface Swing qui affichera sans souci ton image ?? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Charles.w Posté(e) le 3 décembre 2009 Partager Posté(e) le 3 décembre 2009 bah tu ouvre une image, tu lui applique un filtre (genre norme carrée sur le noir, avec un seuil bien choisi)...normallement, tu devrait récupérer une matrice de 0 et de 1 (enfin 255 pour chaque canal de couleur)...que tu pourra sauvegarder au format txt...regarde dans les classes de java.awt.image Tu fait une classe qui étend de RGBImageFilter, dans le constructeur, tu met canFilterIndexColorModel à true, et tu met override la méthode filterRGB à l'aide de celle ci-dessous... public int filterRGB (int x, int y, int rgb) { int alpha = rgb & 0xFF000000; int red= (rgb & 0xFF0000) >> 16; int green = (rgb & 0x00FF00) >> 8; int blue = (rgb & 0x0000FF) ; int min = Math.min(red, Math.min(green, blue)); int max = Math.max(red, Math.max(green, blue)); int c; // If all the channels are less than the limit the output color is black. // Otherwise output color is White. if (min < limit && max < limit) c = 0; else c=255; return alpha | (c << 16) | (c << 8 ) | c; } en combinant avec ce que tu peux lire ici, http://www.exampledepot.com/egs/java.awt.i.../FilterRgb.html , tu devrait t'en sortir...ou du moins, tu aura pas mal avancé Lien vers le commentaire Partager sur d’autres sites More sharing options...
schtroumpf Posté(e) le 4 décembre 2009 Partager Posté(e) le 4 décembre 2009 Bonjour, Est ce que ce serait quelque chose qui transforme ton image comme ça que tu cherche ? , , , , ,@@@@####@@@@@##@@#@@@@@@@@@@W *W@@ .**++.,,,,@@@@@@@@@@W *WW ,*::::,,..,,,.@@@@@@@@@W *@* ,#*.,,,,.,:.,,,@@@@@@@@@W *W ,,+@:,,,,,,,:.,,*@@@@@@@@W ***,,+@.,,,,,,,,., .@@@@@@@@W ,*:++,#,,,,,,,,,..,,,@@@@@@@@W ***W ::,,,,,,,,.::..,*@@@@@@W *.+@+..,,,,,,,,.:+:#+,,*@@@WW *..@W#.::,,,,:@##**@@:, @@@WW *.::@W#,+@.,.#*..*@@@#., @@WW *,:+W@*.,,*,.: *@@@W*:,,@@WW *, .+*@@W+,,. ,@@:#@#., ,,@@W ,+:,@W@.#,,,,:, ,,.+@@:,,,:.@W * :WW#.,,,##W,,,,.*@@@.,,,,@W *,@@@#+,,,WW#* ,.+@@.:,:,,,@W *,++#@@+,,,, , .:#@@*++#::,@W ,*@ @*#*+,.@@@@,,:*@#++#W:, @W *, *#:.,::.,,. ,.+@@+#*#:,@@W *,*#+#@#..+@*,,.:+@@@@#@+: @W *::#@*+*:,,,,,,:*@@@@@@##* @W **###::,,.,,,,:@@@@@@@@@*:*@W **##*+*#:####@@@@@@@@@@@@.@@W ******+#@+@@@@@@@@@@@W@@@@+*W *:*####+@##@@@@@@@@@W.:+.:+#W *+#####*+#@@@@@@@@@@.,,.::*#W *#*#####*+*@@@@@@@@*,,,.:*#@W ,:##+#####++@@@@@@@#,,,..+#@@W ,WWWWWWWWWWWWWWWWWWWWWWWWWWWWW La c'est censé représenter Marylin Monroe J'ai troouvé ça ici Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 4 décembre 2009 Auteur Partager Posté(e) le 4 décembre 2009 Bonjour,Est ce que ce serait quelque chose qui transforme ton image comme ça que tu cherche ? , , , , ,@@@@####@@@@@##@@#@@@@@@@@@@W *W@@ .**++.,,,,@@@@@@@@@@W *WW ,*::::,,..,,,.@@@@@@@@@W *@* ,#*.,,,,.,:.,,,@@@@@@@@@W *W ,,+@:,,,,,,,:.,,*@@@@@@@@W ***,,+@.,,,,,,,,., .@@@@@@@@W ,*:++,#,,,,,,,,,..,,,@@@@@@@@W ***W ::,,,,,,,,.::..,*@@@@@@W *.+@+..,,,,,,,,.:+:#+,,*@@@WW *..@W#.::,,,,:@##**@@:, @@@WW *.::@W#,+@.,.#*..*@@@#., @@WW *,:+W@*.,,*,.: *@@@W*:,,@@WW *, .+*@@W+,,. ,@@:#@#., ,,@@W ,+:,@W@.#,,,,:, ,,.+@@:,,,:.@W * :WW#.,,,##W,,,,.*@@@.,,,,@W *,@@@#+,,,WW#* ,.+@@.:,:,,,@W *,++#@@+,,,, , .:#@@*++#::,@W ,*@ @*#*+,.@@@@,,:*@#++#W:, @W *, *#:.,::.,,. ,.+@@+#*#:,@@W *,*#+#@#..+@*,,.:+@@@@#@+: @W *::#@*+*:,,,,,,:*@@@@@@##* @W **###::,,.,,,,:@@@@@@@@@*:*@W **##*+*#:####@@@@@@@@@@@@.@@W ******+#@+@@@@@@@@@@@W@@@@+*W *:*####+@##@@@@@@@@@W.:+.:+#W *+#####*+#@@@@@@@@@@.,,.::*#W *#*#####*+*@@@@@@@@*,,,.:*#@W ,:##+#####++@@@@@@@#,,,..+#@@W ,WWWWWWWWWWWWWWWWWWWWWWWWWWWWW La c'est censé représenter Marylin Monroe J'ai troouvé ça ici non ce n'est pas ça ^^ et je connais ART ASCII, mais il ne permet pas de convertir des fichiers, juste de faire des dessins donc sa m'aide mais juste pour dessiner à la main Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 4 décembre 2009 Auteur Partager Posté(e) le 4 décembre 2009 bah tu ouvre une image, tu lui applique un filtre (genre norme carrée sur le noir, avec un seuil bien choisi)...normallement, tu devrait récupérer une matrice de 0 et de 1 (enfin 255 pour chaque canal de couleur)...que tu pourra sauvegarder au format txt...regarde dans les classes de java.awt.image Tu fait une classe qui étend de RGBImageFilter, dans le constructeur, tu met canFilterIndexColorModel à true, et tu met override la méthode filterRGB à l'aide de celle ci-dessous... public int filterRGB (int x, int y, int rgb) { int alpha = rgb & 0xFF000000; int red= (rgb & 0xFF0000) >> 16; int green = (rgb & 0x00FF00) >> 8; int blue = (rgb & 0x0000FF) ; int min = Math.min(red, Math.min(green, blue)); int max = Math.max(red, Math.max(green, blue)); int c; // If all the channels are less than the limit the output color is black. // Otherwise output color is White. if (min < limit && max < limit) c = 0; else c=255; return alpha | (c << 16) | (c << 8 ) | c; } en combinant avec ce que tu peux lire ici, http://www.exampledepot.com/egs/java.awt.i.../FilterRgb.html , tu devrait t'en sortir...ou du moins, tu aura pas mal avancé merci beaucoup pour ta réponses mais je ne comprend pas la moitié de ce que tu programme xD canFilterIndexColorModel RGBImageFilter les constructeur... je connais pas. ça non plus je ne sais pas ce que c'est ">>" :S dsl Lien vers le commentaire Partager sur d’autres sites More sharing options...
Charles.w Posté(e) le 4 décembre 2009 Partager Posté(e) le 4 décembre 2009 Bah disons que un entier (int) en java = 32 bits...et qu'un pixel RGB+canal alpha, tous codés sur 8 bits = 32 bits... chaque pixel de couleur est donc codé de la sorte (pseudo-hexa) : AA RR GG BB pour le cas de ce filtre, le canal alpha (transparence) ne nous intéresse pas, donc on l'isole et on le sauvegarde pour plus tard...les F indiquent les bits que l'on veut conserver int alpha = rgb & 0xFF000000; on récupère ensuite les canaux rouge, vert et bleu, pour ce faire, on doit procéder de la même manière que précédemment, en "marquant" comme précédemment les portions de l'entier que l'on veut garder avec des F (ou des 1111 si tu préfère) int red = rgb & 0xFF0000; int green = rgb & 0x00FF00; int blue = rgb & 0x0000FF; sauf que pour là, on a tout sauf des valeurs facilement comparable...le rouge va être représenté par un "grand" nombre, le vert par un "moyen" nombre, et le bleu par un "petit" nombre...il faut donc tous les ramener à des valeurs comparables, comprises entre 0 et 255... - pour le bleu, il n'y a rien à faire, on n'utilise que les bits les plus bas de l'entier...on a donc déjà des valeurs comprises entre 0 et 255. - pour le rouge, les 16 bits les plus à droite ne nous servent à rien, on les supprime donc à l'aide de l'opérateur de décallage de bits ">>" int red = red >> 16; - pour le vert, les 8 bits les plus à droite ne nous servent à rien, même combat : int green = green >> 8; Après, pour le coup de l'algo de filtrage...bah c'est comme ca, on recherche le min et le max des trois canaux...si ces deux valeurs sont en dessous d'une certaine limite : on met tous les canaux du pixel à 0, 255 sinon. Pour recomposer le pixel, on doit ajouter le canal alpha, le canal rouge en lui recollant les 16 bits qu'on lui a enlevé, le canal vert et les 8 bits qu'on lui a enlevé, et on ajoute le canal bleu... Lien vers le commentaire Partager sur d’autres sites More sharing options...
K-LiBRE Posté(e) le 4 décembre 2009 Auteur Partager Posté(e) le 4 décembre 2009 Bah disons que un entier en java = 32 bits...et qu'un pixel RGB+canal alpha, tous codés sur 8 bits = 32 bits...chaque pixel de couleur est donc codé de la sorte (pseudo-hexa) : AA RR GG BB pour le cas de ce filtre, le canal alpha (transparence) ne nous intéresse pas, donc on l'isole et on le sauvegarde pour plus tard...les F indiquent les bits que l'on veut conserver int alpha = rgb & 0xFF000000; on récupère ensuite les canaux rouge, vert et bleu, pour ce faire, on doit procéder de la même manière que précédemment, en "marquant" comme précédemment les portions de l'entier que l'on veut garder avec des F (ou des 1111 si tu préfère) int red = rgb & 0xFF0000; int green = rgb & 0x00FF00; int blue = rgb & 0x0000FF; sauf que pour là, on a tout sauf des valeurs facilement comparable...le rouge va être représenté par un "grand" nombre, le vert par un "moyen" nombre, et le bleu par un "petit" nombre...il faut donc tous les ramener à des valeurs comparables, comprises entre 0 et 255... - pour le bleu, il n'y a rien à faire, on n'utilise que les bits les plus bas de l'entier...on a donc déjà des valeurs comprises entre 0 et 255. - pour le rouge, les 16 bits les plus à droite ne nous servent à rien, on les supprime donc à l'aide de l'opérateur de décallage de bits ">>" int red = red >> 16; - pour le vert, les 8 bits les plus à droite ne nous servent à rien, même combat : int green = green >> 8; Après, pour le coup de l'algo de filtrage...bah c'est comme ca, on recherche le min et le max des trois canaux...si ces deux valeurs sont en dessous d'une certaine limite : on met tous les canaux du pixel à 0, 255 sinon. Pour recomposer le pixel, on doit ajouter le canal alpha, le canal rouge en lui recollant les 16 bits qu'on lui a enlevé, le canal vert et les 8 bits qu'on lui a enlevé, et on ajoute le canal bleu... ok j'ai à peut près compris (après avoir relus 4 fois XD)! Donc grâce à ça on obtient le pixel envoyé a la fonction en pixel noir ou pixel blanc, c'est bien sa ? Après il faudrait dire un truc du genre : if (pixel en x y <= 177) écrire 0 dans *.txt else écrire 1 est ce que se serai ça http://www.exampledepot.com/egs/java.awt.i.../FilterRgb.html ? ou alors tu l'a mis dans ton code block déjà ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Charles.w Posté(e) le 5 décembre 2009 Partager Posté(e) le 5 décembre 2009 quelque chose du genre, en effet Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.