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?
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
Ich hab die Bildkonvertierung abgeändert. Die Werte zwischen schwanken schon. Bin da nicht zufrieden. Woran könnte das noch liegen?
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;
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.