C++ Grauwert ermitteln

Gast #784611
Lesenswert?

Hallo, ich möchte mit Visual Studio 6.0 die Grauwerte eines 
Bitmap-Bildes ermitteln. Die Bitmapdatei kann ich bereits einlesen. Mit 
welcher Funktion kann man nun die Grauwerte jedes Bildpunktes ermitteln 
und in ein Array ablegen? Später möchte ich ein Histogramm darüber 
erstellen.

Im Netz hab ich mal so eine Funktion gefunden, womit der Grauwert 
ermittelt wird. Funktioniert aber nicht.
1
//Bildconvertierung
2
bildgrau=new BYTE[infoheader.biWidth*infoheader.biHeight];
3
for (i=0;i<infoheader.biWidth;i++)
4
{
5
  for (int j=0;j<infoheader.biHeight;j++)
6
  {   
7
   bildgrau[j*infoheader.biHeight+i]=(bild[j*infoheader.biHeight+i].rgbtRed+        bild[j*infoheader.biHeight+i].rgbtGreen+          bild[j*infoheader.biHeight+i].rgbtBlue)/3;
8
  }
9
}
#784646
Lesenswert?

Moritz wrote:

> Im Netz hab ich mal so eine Funktion gefunden, womit der Grauwert
> ermittelt wird. Funktioniert aber nicht.

Was funktionioniert daran nicht?
Dein Code ermittelt den Grauwert als den Mittelwert der Rot Grün
Blau Werte eines Pixels.
Ist grundsätzlich zulässig.

'Den Grauwert' als solchen gibt es nicht. Du musst entscheiden
was du als Grauwert nimmst und je nachdem was du modellieren willst
ist dein Grauwert etwas anderes.

Zb. Benutzt die Umrechnung eines Farbbildes in ein Schwarz/Weiss
Bild einen gewichteten Mittelwert, der sich an der Farbempfindlichkeit
der früher üblichen Schwarz/Weiss Filme orientierte.

Du könntest aber auch den RGB in den HLS oder HSV Farbraum
transferieren und dort zb. den L ( = Lightness ) Wert als
'Grauwert' verwenden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren