Wie verarbeiten Computer Bilder?

May 03 2021

Antworten

JeremiahDSeitz Feb 19 2019 at 15:00

Diese Frage ist schwer zu beantworten, einfach weil die Frage ziemlich offen ist. Ich werde aber mein Bestes geben …

Betrachten wir zunächst das Wort „Prozess“. Ich verstehe darunter, dass die Datei von der Festplatte gelesen und auf dem Bildschirm angezeigt wird. Wenn das falsch ist, klären Sie einfach, was Sie eigentlich meinen, und ich werde meine Antwort entsprechend ändern.

Abhängig vom Bildformat werden die Bilddaten komprimiert oder nicht. Das am häufigsten verwendete unkomprimierte Format ist BMP. Gängige komprimierte Formate sind JPG, GIF und PNG (WebP gewinnt in letzter Zeit auch an Bedeutung).

HINWEIS: Ich werde nur auf Rasterformate eingehen, da diese am häufigsten vorkommen. Es gibt auch Vektorformate, die allerdings ganz anders gehandhabt werden.

Der erste Schritt besteht darin, dass die Anwendung die betreffende Datei findet und öffnet. Sobald die Datei geöffnet ist, liest die Viewer-Anwendung die Daten aus der Datei in den Arbeitsspeicher.

Alle Bildformate enthalten zusätzliche Informationen, um verschiedene Informationsbits anzugeben, z. B. Bildabmessungen, Bittiefe und andere Elemente. Diese Informationen werden aus den Dateidaten extrahiert und gespeichert.

Unter der Annahme, dass die Bilddaten komprimiert sind, werden sie extrahiert und durch einen Codec (Coder/Decoder) geleitet. Dabei handelt es sich nur um einen Fachbegriff für Code, der Daten (Bilder, Audio und Video) komprimieren oder dekomprimieren kann.

Sobald der Codec seine Aufgabe erledigt hat, gibt er eine Reihe von Bytes zurück, die die eigentlichen Bilddaten enthalten.

Hier kommen die Header-Daten ins Spiel. Um ein Bild anzuzeigen, benötigt eine Anwendung vier Dinge: die Breite des Bildes, die Höhe des Bildes, das Pixelformat (Bittiefe und Reihenfolge) und die unkomprimierten Daten. Die ersten beiden Variablen werden verwendet, um die Größe des Ausgabebilds festzulegen. Anschließend wird jedes Pixel in den Bilddaten gelesen, mithilfe des Pixelformats aus dem Bildheader in die native Bittiefe und das native Format konvertiert und an die entsprechende Stelle in den Ausgabedaten kopiert.

Die endgültige Ausgabe wird dann in den Videospeicher kopiert, wo sie dem Benutzer angezeigt wird.

Bedenken Sie, dass dies eine ziemlich vereinfachte Beschreibung ist. Jeder der oben genannten Schritte kann auf viele verschiedene Arten durchgeführt werden, aber die allgemeinen Konzepte sind korrekt.

KaminiKantaMohanty Feb 21 2019 at 10:02

Auf konzeptioneller Ebene wird ein Bild als zweidimensionale Matrix dargestellt. Wenn es sich um ein Farbbild handelt, handelt es sich um drei solcher Matrizen, die jeweils einem Farbkanal entsprechen. Bei Schwarzweißbildern handelt es sich um eine einzelne Matrix. Die Elemente der Matrix haben typischerweise Werte im Bereich von 0 bis 255.

Der Computer kann eine Eingabematrix (oder Matrizen) eines Bildes verarbeiten, um eine Ausgabematrix (oder Matrizen) eines Bildes zu erzeugen. Alternativ kann eine Eingabematrix (oder Matrizen) eines Bildes verarbeitet werden, um eine Ausgabezahl oder einen Skalar zu erzeugen, z. B. um festzustellen, ob das Bild mit einem bestimmten Objekt oder Gesicht einer Person übereinstimmt, oder mit der Anzahl der Gesichter im Bild usw.

Exakte mathematische Algorithmen, die mit einer Eingabematrix arbeiten, können recht komplex sein.