Prendre de l'image monochrome (noir et blanc) avec Android
Je voudrais prendre une photo en noir et blanc dans mon application. J'ai cherché des solutions (dans ce site), mais j'ai toujours trouvé la solution pour mettre une photo en niveaux de gris (par exemple dans cette rubrique), mais ce n'est pas ce que je recherche ...
J'ai aussi trouvé un sujet qui propose cela :
public static Bitmap createContrast(Bitmap src, double value) {
//image size
int width = src.getWidth();
int height = src.getHeight();
//create output bitmap
Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
//color information
int A, R, G, B;
int pixel;
//get contrast value
double contrast = Math.pow((100 + value) / 100, 2);
//scan through all pixels
for (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
//get pixel color
pixel = src.getPixel(x, y);
A = Color.alpha(pixel);
//apply filter contrast for every channel R, G, B
R = Color.red(pixel);
R = (int) (((((R / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if (R < 0) {
R = 0;
} else if (R > 255) {
R = 255;
}
G = Color.red(pixel);
G = (int) (((((G / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if (G < 0) {
G = 0;
} else if (G > 255) {
G = 255;
}
B = Color.red(pixel);
B = (int) (((((B / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if (B < 0) {
B = 0;
} else if (B > 255) {
B = 255;
}
//set new pixel color to output bitmap
bmOut.setPixel(x, y, Color.argb(A, R, G, B));
}
}
return bmOut;
}
Mais la qualité d'image est horrible ...
Est toute personne ayant une idée s'il vous plaît?
Merci
Euh..ce peut être une question bête, mais quelle est la différence entre le " vrai noir et blanc et en niveaux de gris? Les deux sont faits dans différentes nuances de gris, mais est-il une définition précise des termes? Btw , de "50 nuances" blagues sont interdits! 🙂
Je me demandais la même chose et suis tombé sur cet exemple farm3.staticflickr.com/2393/3533241378_04c2b649c2_b.jpg. Le haut de l'image est monochrome et le bas est en niveaux de gris. Je suppose que cela dépend de ce que l'OP est d'essayer d'atteindre la capture d'une véritable image monochromatique à partir de l'appareil photo du téléphone dans son application ou de convertir des images existantes? Seule raison pour laquelle je demande, c'est parce qu'il a déjà posté des exemples de conversion après le fait 🙂
sans quelques mots, votre exemple n'est pas une explication. Monochrome signifie une couleur sur un fond d'une autre couleur. Le noir et le blanc signifie qu'il est noir sur un fond blanc. Je suppose que les exemples que vous avez indiqués sont juste converti à partir de la couleur à B&W à l'aide de différents filtres.
Je pense que c'est probablement le cas: stackoverflow.com/questions/2499545/...
J'avais supposé que l'OP ne veulent pas d'un vrai monochrome (c'est à dire les valeurs de pixel 0 et 255), qui est ce qui me confond. Ne peut pas vérifier, la plupart des images liées comme je suis au travail (bloqué, grr). Btw, en noir et blanc peut signifier également en blanc sur un fond noir! Est une zebra noir avec des rayures blanches ou blanc avec des bandes noires? 🙂
Je me demandais la même chose et suis tombé sur cet exemple farm3.staticflickr.com/2393/3533241378_04c2b649c2_b.jpg. Le haut de l'image est monochrome et le bas est en niveaux de gris. Je suppose que cela dépend de ce que l'OP est d'essayer d'atteindre la capture d'une véritable image monochromatique à partir de l'appareil photo du téléphone dans son application ou de convertir des images existantes? Seule raison pour laquelle je demande, c'est parce qu'il a déjà posté des exemples de conversion après le fait 🙂
sans quelques mots, votre exemple n'est pas une explication. Monochrome signifie une couleur sur un fond d'une autre couleur. Le noir et le blanc signifie qu'il est noir sur un fond blanc. Je suppose que les exemples que vous avez indiqués sont juste converti à partir de la couleur à B&W à l'aide de différents filtres.
Je pense que c'est probablement le cas: stackoverflow.com/questions/2499545/...
J'avais supposé que l'OP ne veulent pas d'un vrai monochrome (c'est à dire les valeurs de pixel 0 et 255), qui est ce qui me confond. Ne peut pas vérifier, la plupart des images liées comme je suis au travail (bloqué, grr). Btw, en noir et blanc peut signifier également en blanc sur un fond noir! Est une zebra noir avec des rayures blanches ou blanc avec des bandes noires? 🙂
OriginalL'auteur Vince | 2012-08-20
Vous devez vous connecter pour publier un commentaire.
Si vous aimez l'image à 1bit noir/blanc, vous pouvez utiliser un simple (& lent) seuil algorithme
Mais selon ce que ne fera pas bonne, pour de meilleurs résultats, vous avez besoin d'un algorithme de dithering, voir Algorithme de présentation - c'est le seuil de la méthode.
Pour 256 niveaux de gris de conversion:
selon http://www.mathworks.de/help/toolbox/images/ref/rgb2gray.html calculer la valeur de gris de chaque pixel comme
gray = 0.2989 * R + 0.5870 * G + 0.1140 * B
qui pourrait se traduire àMais c'est assez lent car vous avez à faire pour des millions de pixels séparément.
https://stackoverflow.com/a/9377943/995891 a une bien jolie manière d'atteindre le même.
Une question : dans ce morceau de code "(0.2989 * R + 0.5870 * G + 0.1140 * B)", pourquoi utilisez-vous ces valeurs : 0.2989 , 0.5870 & 0.1140 ?
C'est l'un des moyens possibles pour convertir les couleurs en niveaux de gris. Les êtres humains perçoivent la luminosité des couleurs différemment (par exemple, le bleu est beaucoup plus lumineux que le vert) afin que cette tente pour correspondre à la perception humaine. Jetez un oeil à la images ou de lire stackoverflow.com/questions/687261/....
OriginalL'auteur zapl
G = Couleur.rouge(pixel);
G = Couleur.vert(pixel);
B = Couleur.rouge(pixel);
B = Couleur.bleu(pixel);
Voir si cela change (en gras) aide.
OriginalL'auteur C2940680