Quel est le moyen le plus rapide pour convertir une image en noir et blanc en C#?
Avant que quelqu'un les flammes de moi pour ne pas vérifier les autres posts, je l'ai déjà fait. J'ai une question spécifique à propos de l'une des techniques qui existent pour convertir une image en niveaux de gris.
J'ai lu attentivement les messages d'autres sur soi et essentiellement copié la technique 3 (ColorMatrix) à partir du tutorial de ce site. Il fonctionne très, très, rapidement.
Le problème, je vais avoir, c'est que ce dont j'ai besoin est un pur BW image. (c'est à dire: si la moyenne(R,B,G) > 200 => blanc reste noir). J'ai implémenté la méthode simple, et il faut effectivement soit près de 10 fois tant que les niveaux de gris de l'algorithme du tutoriel.
Je ne suis pas un expert en traitement de l'image, et je me demandais si il existe un moyen de modifier l'extrait du tutoriel pour convertir des images en noir et blanc. Sinon, un moyen efficace serait de faire.
EDIT:
Voici le code que j'utilise pour le noir et blanc (pas de cerveau approche):
public Bitmap make_bw(Bitmap original) {
Bitmap output = new Bitmap(original.Width, original.Height);
for (int i = 0; i < original.Width; i++) {
for (int j = 0; j < original.Height; j++) {
Color c = original.GetPixel(i, j);
int average = ((c.R + c.B + c.G) / 3);
if (average < 200)
output.SetPixel(i, j, Color.Black);
else
output.SetPixel(i, j, Color.White);
}
}
return output;
}
cal de coller un code qui fonctionne mal? comment quelque chose peut ajouter 10x plus de temps si vous n'ajoutez qu'un "si"?
Chen qui est juste moyen
OriginalL'auteur user472875 | 2011-02-15
Vous devez vous connecter pour publier un commentaire.
De la lecture, même problème: Quel serait un bon VRAI noir et blanc colormatrix?
J'ai "triché" un peu... vu que le jeun exemple dans votre lien utilisé SetColorMatrix et googlé pour SetColorMatrix BW 🙂
OriginalL'auteur xanatos
Ce mec fait trois tests, le fastests être le
ColorMatrix
comme mentionné ici. Lien externe à propos de la conversion d'imageMAIS un des intervenants prétend que la raison de la directe et
unsafe
pixel méthode d'accès est plus lente, les appels à.Width
et.Height
dans les bitmaps et de copier ces valeurs aux variables locales rend l'accès direct aux pixels beaucoup plus rapide.J'ai testé et il semble que la méthode dangereuse est environ 2,5 fois plus rapide que l'utilisation de la
ColorMatrix
. Mais c'est sans doute aussi plus impliqués et, évidemment, il exige queunsafe
code est autorisé dans le projet, qui pourrait ne pas être souhaitable.OriginalL'auteur faester
Je suis en utilisant ce code simple:
OriginalL'auteur Lucas Grubba