Mip Mapping

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Mip Mapping ist eine Antialiasing-Technik für Texturen. Sie wird in modernen 3D-Grafikchips zur Verbesserung der Bildqualität, aber auch der Geschwindigkeit eingesetzt.

Probleme bei der Texturskalierung[Bearbeiten]

Das Problem beim Texture Mapping von Objekten besteht darin, dass man diese von nah und fern betrachten können soll. Korrelativ zum Erscheinungsbild des Objekts muss also auch die Textur ihre Form und Größe verändern:

  • Magnifikation - die Textur muss stark vergrößert werden, um das Objekt zu bedecken, wenn es nah am Betrachter liegt.
  • Minifikation - die Textur muss stark verkleinert werden, wenn das Objekt sehr weit vom Betrachter entfernt ist (im Extremfall ist das Objekt dann nur noch genau 1 Pixel groß)

Werden keine Gegenmaßnahmen ergriffen, treten bei diesen Skalierungen Aliasing-Effekte auf, die als Artefakte sehr störend sind, besonders bei Mustern mit schrägen oder gerundeten Linien, als Verzerrungen oder Flimmern (Moiré-Effekte).

MIP-Map[Bearbeiten]

Beispiel für eine MIP-Map. Die Kantenlänge des größten Bildes beträgt 28 = 256 Pixel.
Dieses Bild soll die effiziente Speicherung (im Sinne von Speicher-Fragmentierung) von Bildern veranschaulichen. Es wird nur 1 weißes Byte "verschwendet". Wie farblich im Bild angedeutet, können sowohl die RGB Farben eines Bildes nach diesem Schema aufgeteilt werden, als auch kongruente Komplettbilder (jeweils dann 3 Stück) gemeinsam gespeichert werden

MIP ist eine Abkürzung für multum in parvo, was so viel bedeutet wie viel auf kleinem Platz. Eine MIP-Map (auch Bildpyramide) ist eine Folge von Rasterbildern desselben Motivs, jedoch mit abnehmender Auflösung. Die Kantenlänge jedes Bildes ist genau halb so groß wie die des Vorgängerbildes. Das kleinste Bild hat je nach Implementierung eine Größe von 1×1 oder 2×2 Pixel. Daraus folgt, dass alle Bilder quadratisch sein müssen und als Kantenlänge eine Zweierpotenz haben. Man spricht bei diesen Stufen auch von Level of Detail (LOD).

Speicherbedarf[Bearbeiten]

MIP-Maps haben einen höchstens um 1/3 höheren Speicherbedarf als das größte Bild alleine:

\sum_{i=0}^\infty \left( \frac{1}{4} \right) ^ i = \frac{1}{1 - \frac{1}{4}} = \frac{4}{3} = 1 + \frac{1}{3} \ \mbox{(geometrische Reihe)}

Die genaue Anzahl von den Bildern benötigten Bytes Speicher errechnet sich so:

\frac{4 n^2 c - 1}{3} = \text{Anzahl Bytes}

Dabei sind n die Kantenlänge des Bildes (quadratisch angenommen) und c die Bytes pro Farbkanal (1: Graustufenbild mit 256 Graustufen; 3: RGB-Bild mit 8-Bit pro Farbkanal)

Berechnung[Bearbeiten]

MIP-Maps können einfach berechnet werden, indem für jedes Pixel des verkleinerten Bildes der Mittelwert der vier korrespondierenden Pixel des Ausgangsbildes berechnet wird. Dies ist rekursiv für alle weiteren Stufen durchzuführen. Dieses Verfahren wird häufig implizit von der Grafikhardware beim Texturladen angewandt, um Speicherbandbreite zu sparen. Eine aufwändigere aber zu besserer Bildqualität führende Methode zur MIP-Map-Berechnung bietet die Fouriersynthese.

MIP-Mapping als Texturfilter[Bearbeiten]

Bei der Minifikation von Texturen beim Texture Mapping wird dasjenige LOD ausgewählt, bei welchem ein Texel groß genug ist, um ein Pixel vollständig zu überdecken.

Auf diese Weise ist sichergestellt, dass jedes Texel der Ursprungstextur Einfluss auf die gestauchte Textur hat und somit keine abtastbedingten Alias-Effekte auftreten. Gerade die Sprünge zwischen den LODs führen zu Unstetigkeiten, die als Linien zwischen den MIP-Bändern deutlich sichtbar sind. Jedes dieser Bänder hat einen Schärfegrad, der sich stark von den Nachbarbändern unterscheidet. Außerdem kommt es bei jeder Stauchung, die keiner Zweierpotenz entspricht, und auch bei anisotropen Verzerrungen immer zu einem übermäßigen Schärfeverlust.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]