VC++ 6.0 - Histogramm

Gast #954716
Ich hab mir ein kleines Programm in Visual Studio C++ 6.0 erstellt, 
indem ich zunächst ein Farbbild im Bitmap Format einlese. Dieses 
Farbbild wird dann konvertiert (Graubild). Im Anschluß erzeuge ich das 
Histogramm.
Zur Überprüfung hab ich das Farbbild mit IrfanView in ein Graubild 
umgewandelt. Dieses Graubild lade ich in Matlab mit der Funktion 
I=imread('farbbild.bmp')rein. Mit der Funktion imhist(I) erzeuge ich 
dann in Matlab das Histogramm. Mir ist aufgefallen dass die 
Histogrammwerte zwischen VC++ 6.0 und Matlab nicht übereinstimmen. Woran 
könnte dies liegn?
Gast #954760
Falls es nur kleine Unterscchiede zwischen den Histogrammen sind:
Du wandelst die Farbwerte erst einzeln in Integer um und addierst
erst dann. Geh doch umgekehrt vor, so hast du weniger
Informationsverlust.
Unterschiede wirst du aber immer haben: Entweder hast du
unterschiedliche Faktoren bei der Graustufenberechnung und.und.und..
Falls es aber sehr grosse/deutliche Unterschiede sind, solltest
du beide Module (wenn möglich) überprüfen.


Gruss

Jörg
Gast #954797
Ich hab den Fehler entdeckt. Und zwar ist die Grauwerteberechnung nicht 
korrekt.

Hier ist die richtige Berechnung:
bildgrau[j*infoheader.biHeight+i]=(299*bild[j*infoheader.biHeight+i].rgb 
tRed+587*bild[j*infoheader.biHeight+i].rgbtGreen+114*bild[j*infoheader.b 
iHeight+i].rgbtBlue)/1000;
Gast #954828
Jetzt hast du aber alle Faktoren (vorher 0.299,0.587,0.114) einfach
mit 1000 multipliziert. Du solltest für ein Histogramm für den
Bereich 0..255 aber mit 255 (nicht 256) multiplizieren, d.h. du
erhälst dann die Faktoren (76.245, 149.685, 29.07).

Gruss

Jörg

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.