Naposledy jsme zvětšovali a zmenšovali obrázek, nyní si spočítáme jeho histogram. Obrázek máme uložený v dvojrozměrném poli double[,] BitmapArray, zde je uložena jeho černobílá varianta, aby se nám vše lépe počítalo. Histogram spočítáme následujícím způsobem:
private int[] SpocitejHistogram()
{
int vyska = this.BitmapArray.GetLength(1);
int sirka = this.BitmapArray.GetLength(0);
int[] histogram = new int[256];
int N = sirka * vyska;
for (int y = 0; y < vyska; y++)
{
for (int x = 0; x < sirka; x++)
{
histogram[(int)this.BitmapArray[x, y]] = histogram[(int)this.BitmapArray[x, y]] + 1;
}
}
return histogram;
}
Tento histogram můžeme následně uložit jako bitmapu:
private Bitmap VykresliHistogram(double[] histogram) {
double max = 0;
Point[] body=new Point[256];
Bitmap bitmap = new Bitmap(256, 100);
Graphics g = Graphics.FromImage(bitmap);
g.FillRectangle(Brushes.White, 0, 0, 256, 100);
Pen pen = new Pen(Color.Black, 1);
for (int i = 0; i < histogram.Length; i++) {
if (histogram[i] > max) {
max = histogram[i];
}
}
for (int j = 0; j < histogram.Length; j++)
{
g.DrawLine(pen, new Point(j, 100), new Point(j, (100-(int)(((double)histogram[j]/(double)max)*100))));
}
g.DrawLines(pen, body);
g.Dispose();
return bitmap;
}
Kterou lze následně vykreslit.
Příspěvek vyšel v Sobotu 3.11.2007 15:22 v kategorii Programování a byl 7876x zobrazen. Pokud se vám líbil můžete si jej zalinkovat: Linkuj.cz, Del.icio.us
"A jedeme dál ..." Človíčkův Weblog aneb Michal Horák bloguje. (c) Michal Horák (Človíček webdesign) 2006