# Mip Mapping

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

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

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

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 der von den Bildern benötigten Bytes Speicher errechnet sich so:
    ${\frac {4n^{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

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

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.