Skaling Interpolation

In dem WPF Steuerelement Image sehen Bilder oft sehr verauscht aus, wenn sie viel kleiner als in Originalauflösung dargestellt werden. Grund dafür ist das  Interpolationsverfahren: Während bei der Darstellung in Originalauflösung jeder Pixel gezeigt wird, müssen bei einer Verkleinerung des Bildes mehere Pixel zu jeweils einem neuen Pixel zusammengefasst werden. Je nach Verfahren entstehen dabei sehr scharfe Kanten.

Die standardmäßig in WPF verfügbaren Interpolationsverfahren sind in der BitmapScalingMode Enumeration aufgelistet. Der HighQuality Mode liefert z.B. eine Interpolation, die scharfe Kanten beim Skalieren minimiert. Um einem Image Steuerelement eine solche Interpolation zuzuweisen, verwendet man die statische Methode SetBitmapScalingMode(…) der RenderOptions Klasse. Das kann z.B. direkt im Konstruktor des WPF Fensters geschehen:

public MainWindow()
{
  InitializeComponent();
  RenderOptions.SetBitmapScalingMode(image1, BitmapScalingMode.HighQuality);
}

Es folgt ein Vergleich in Bildform:

imgInterpolation

Als Beispielbild wurde eine Aufnahme von Gras verwendet, welche ohnehin bereits recht scharfe Kanten besitzt. Das Bild links wurde mit dem Interpolationsverfahren Linear skaliert und das Bild rechts mit dem Interpolationsverfahren HighQuality.

Man könnte sich nun fragen, warum nicht standardmäßig HighQuality für das Skaling verwendet wird. Ein möglicher Grund wäre folgender: HighQuality benötigt bei seinen Berechnungen mehr Zeit als z.B. Linear. Das kann bei Animationen kritisch sein; diese beginnen dann unter Umständen zu ruckeln.