Ceci est supposé calculer l'histogramme d'une image en niveaux de gris 8 bits. Avec un bitmap de test 1024x770, CreateTime se termine à environ 890ms. Comment puis-je faire cela (chemin, façon) plus vite?Comment puis-je accélérer cette classe d'histogramme?
EDIT: Je devrais mentionner que cela ne calcule pas réellement l'histogramme, il obtient seulement les valeurs hors de la bitmap. Donc, je devrais vraiment demandé, quel est le moyen le plus rapide pour récupérer toutes les valeurs de pixels à partir d'une image en niveaux de gris 8 bits?
public class Histogram {
private static int[,] values;
public Histogram(Bitmap b) {
var sw = Stopwatch.StartNew();
values = new int[b.Width, b.Height];
for (int w = 0; w < b.Width; ++w) {
for (int h = 0; h < b.Height; ++h) {
values[w, h] = b.GetPixel(w, h).R;
}
}
sw.Stop();
CreateTime = (sw.ElapsedTicks/
(double)Stopwatch.Frequency) * 1000;
}
public double CreateTime { get; set; }
}
b est-il en mémoire? –
Jetez un oeil au lien posté par McWafflestix. J'avais l'habitude de le faire en C++ mais quand j'ai essayé de migrer ma lib vers C#, c'est sur ce site que j'ai appris les outils C# pour un accès rapide aux pixels. – Andres