Seite 1 von 1

Gamma-Error beim Bilder skalieren

Verfasst: 13.05.2014 21:05
von NicTheQuick
Hi Leute,

ich habe gerade festgestellt, dass Purebasic auch zu den "Programmen" gehört, die Bilder falsch verkleinern bzw. vergrößern.
Darauf aufmerksam hat mich dabei dieser Artikel gemacht: Gamma error in picture scaling

Jetzt weiß ich nicht genau, ob PureBasic diesen Fehler z.B. in der Windows-Version nicht hat. Aber interessieren tut es mich auf jeden Fall. Ich habe den Fehler jedenfalls hier unter Linux. Aber ich war auch sehr überrascht, dass der Fehler sogar in GIMP noch nicht behoben ist. Wenn PureBasic nicht seine eigenen Resize-Funktionen nutzt, sondern die des OS, dann sollte es z.B. bei Mac OS X keine Probleme geben.

Hier schon mal ein kleiner Testcode. Das passende Bild findet ihr in diesem Zip: gamma_dalai_lama_gray.zip (siehe auch den Link oben).

Code: Alles auswählen

file.s = "/home/nicolas/tmp/pb/gamma_dalai_lama_gray" ;ohne .jpg

UseJPEGImageDecoder()
UseJPEGImageEncoder()

If LoadImage(0, file + ".jpg")
	width = ImageWidth(0) / 2
	height = ImageHeight(0) / 2
	ResizeImage(0, width, height)
	SaveImage(0, file + "_half.jpg", #PB_ImagePlugin_JPEG, 9)
	FreeImage(0)
EndIf
Wenn eure Bild nach dem Skalieren grau ist, dann macht Purebasic das Skalieren falsch, ansonsten richtig.

Ich empfehle euch auf jeden Fall auch den Artikel oben, denn der erklärt sehr genau, warum das alles so ist, wie es ist, und vor allem, was anscheinend leider viele falsch machen.

Re: Gamma-Error beim Bilder skalieren

Verfasst: 13.05.2014 22:01
von c4s
Ja, vor nahezu 4 Jahren hatte ich dazu mal im englischen Forum einen Bug-Report geschrieben: ResizeImage() - No gamma error

Re: Gamma-Error beim Bilder skalieren

Verfasst: 13.05.2014 22:14
von NicTheQuick
Ah, cool. Da hab ich noch nicht nachgeschaut. Hab grad mal ein +1 drunter gesetzt. Fertige Algorithmen gibt es ja dafür schon. Und viel langsamer als die normalen sind die ja auch nicht. Deswegen sollte eine Implementieren kein großes Problem darstellen.

Re: Gamma-Error beim Bilder skalieren

Verfasst: 13.05.2014 22:16
von alter Mann
graues Bild mit Win8 PB32

Re: Gamma-Error beim Bilder skalieren

Verfasst: 14.05.2014 14:20
von bobobo
#PB_Image_Raw ist eine eher hässliche Lösung, aber Scheisse (hier das komisch gerasterte Bild vom Lama)
kann man eh nicht gut polieren.

Re: Gamma-Error beim Bilder skalieren

Verfasst: 14.05.2014 15:13
von NicTheQuick
Falsch ist das Resizing trotzdem. Egal wie scheiße du das Bild vom Lama findest. Als spar dir deine komischen Argumente doch einfach. Das Problem wirkt sich auch auf normale Bilder aus wie du sehen wirst, wenn du dir den Artikel mal durchliest.

Re: Gamma-Error beim Bilder skalieren

Verfasst: 14.05.2014 16:12
von bobobo
Es ist mitnichten falsch, genauso falsch wie die Behauptung ich hätte den Artikel nicht vor dem Posten gelesen.
Bilderverkleinern ist immer verlustbehaftet.
Und im Beispielbild ist der eigentliche Bildinhalt eben grau ! Wenn man das Bild vom Lama mal stark vergrößert
anschaut, sieht man, dass neben einem Pixel immer ein Pixel in nahezu der Komplementärfarbe sitzt.
Die Nase des Lama auf dem Bild besteht aus knallgrünen und magentafarbenen Pixeln. Das Bild farblich invertiert sieht aus wie das Original.
Sowas verkleinert ergibt eben was eher Graues. Und soweit ist es vollkommen verständlich, dass ein
"normales" Verkleinern dieses Bildes eben ein graues Bild ergibt.
Dass es Möglichkeiten gibt, den Effekt für so ein Bild zu umgehen mit Hilfe der im Artikel erwähnten
Gammatrickserei ist ja nett aber eigentlich verfälscht es genauso den Bildinhalt wie das normale Verkleinern.
Mir könnte ja dann z.B. das Raster der Komplementärfarben hinterher fehlen.