jpegs verkleinern
-
Guten Abend Forum,
ich will ein Bild auf eine festgelegte größe skalieren.
Mit dieser Methode geht das auch ganz gut, aber die Ergebnisse sehen wesentlich schlechter aus, als wenn ich das mit Photoshop mache.void TForm1::scale_image(AnsiString bild_old, AnsiString bild_new, int width, int height) { //#include <jpeg.hpp> TRect ARect; Graphics::TBitmap *bmp = new Graphics::TBitmap(); TJPEGImage *jpg = new TJPEGImage(); jpg -> LoadFromFile(bild_old); // gewünschte neue Abmessungen festlegen //bmp->Width = jpg->Width * 2; //bmp->Height = jpg->Height * 2; bmp -> Width = width; bmp -> Height = height; // Rect mit den gleichen Abmessungen definieren und das per // StretchDraw vergrösserte JPEG auf das Bitmap zeichnen ARect = Rect(0, 0, width, height); bmp->Canvas->StretchDraw(ARect, jpg); // Inhalt des Bitmap auf das JPEG übertragen, speichern jpg->Assign(bmp); jpg->SaveToFile(bild_new); delete jpg; delete bmp; }Woran liegt es? Wie kann ich die Quali verbessern?

mfg
Blade
-
Daran, das Photoshop wesentlich mehr Aufwand beim verkleinern (oder vergrößern) treibt.
Das reicht von einfachen Pixel entfernen bis zur Errechnung neuer Farbwerte die sich aus umliegenden Werten ergeben. Das Stretchdraw arbeitet leider nur auf Pixelbasis.
Man kann solche Algos natürlich selbst nachprogrammieren oder im Internet suchen..
-
Bei der Verkleinerung kann man Filterfunktionen benutzen. Nehmen wir an, du halbierst dein Bild (Kantenläge/2). Dann reicht es nicht aus, beim Bild jede 2te Zeile und Spalte zu löschen. Du schreibst also eine Routine, die neue Pixel aus den alten benachbarten Pixeln errechnet. Je nachdem ob du nur die Pixel nördlich, südlich, westlich und östlich deines Pixels einbeziehst (biliniear) oder auch die Pixel nordöstlich, südöstlich,... über den Phytagoras mit einbindest (bicubisch), erhälts du eine schnellere oder bessere (langsamere) Interpolation der neuen Bildpunkte. Die Interploation besteht aus einfacher Mittelwertbildung unter Einbeziehung des Abstandes vom Bildpunkt (Gewichtungsfaktor).
-
-
Hier auf dieser Seite habe ich noch Beispielprogramme zum Thema Bildbearbeitung gefunden (mit Quellcode).
http://elvex.ugr.es/software/vision/english.html
Hat mir prima gefallen.
