www.mikrocontroller.net

Forum: PC-Programmierung C++ Grauwert ermitteln


Autor: Moritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
//Bildconvertierung
bildgrau=new BYTE[infoheader.biWidth*infoheader.biHeight];
for (i=0;i<infoheader.biWidth;i++)
{
  for (int j=0;j<infoheader.biHeight;j++)
  {   
   bildgrau[j*infoheader.biHeight+i]=(bild[j*infoheader.biHeight+i].rgbtRed+        bild[j*infoheader.biHeight+i].rgbtGreen+          bild[j*infoheader.biHeight+i].rgbtBlue)/3;
  }
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Y = 0.3*R + 0.59*G + 0.11*B

Autor: johuuu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FYI: der Wert in der Struktur BITMAPINFOHEADER,
infoheader.biHeight,
kann unter Umständen auch negativ sein (siehe z.b. Beschreibung im SDK).

Autor: Moritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bis jetzt habe ich noch keine negativen Werte feststellen können.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.