[img]https://mategnu.de/bilder/banner/Arbeitsblatt_Lsg_LK.png[/img]
Bei digitalen Bildern wird neben der Farbe eines Pixels auch seine Position als Komponenten eines Pixelvektors angegeben.[br]Bei einer Auflösung des Monitors von 1920*1080 werden 1920 Pixel nebeneinander in einer Reihe, in 1080 Reihen untereinander in Spalten angeordnet.[br]Der erweiterte Pixelvektor [math]\overrightarrow{p_{xy}}=\begin{pmatrix} x\\ y\\ r \\ g \\ b\end{pmatrix}[/math] beschreibt dann für jedes Pixel die Position in Reihe x und Spalte y und die Farbanteile r,g,b.
Das unten dargestellte Bild mit 15*10 Pixeln soll in Vektoren codiert werden. [br]Der Hintergrund ist weiß, das Koordinatengitter ist das Pixelraster. [br]Jedes Pixel entspricht einem Kästchen. Das dargestellte Orange hat den Farbvektor [math]\overrightarrow{orange}=\begin{pmatrix} 255 \\ 120 \\ 50\end{pmatrix}[/math].[br]Das erste Kästchen unten links hat den Pixelvektor [math]\overrightarrow{p_{1,1}}=\begin{pmatrix} 1\\ 1\\ 255 \\ 255 \\ 255\end{pmatrix}[/math].[br] a) Geben Sie die Pixelvektoren für die drei schwarz umrahmten Pixel an. [br] b) Ändern Sie das Bild so um, dass der Pixelvektor [math]\overrightarrow{p_{11,3}}=\begin{pmatrix} 11\\ 3\\ 0 \\ 10 \\ 245\end{pmatrix}[/math] im Bild korrekt dargestellt ist. [br][br]Tipp: Im Bild unten lässt sich mit dem Vieleckwerkzeug [icon]/images/ggb/toolbar/mode_regularpolygon.png[/icon] ein kleines Quadrat ("Pixel") einzeichnen, für das in den Einstellungen (Rechtsklick, Zahnradsymbol) die Farbe geändert werden kann.[br]
a) von links nach rechts[br][math]\overrightarrow{p_{2,3}}=\begin{pmatrix} 2\\ 3\\ 255 \\ 120 \\ 50\end{pmatrix}[/math][br][math]\overrightarrow{p_{4,4}}=\begin{pmatrix} 4\\ 4\\ 255 \\ 120 \\ 50\end{pmatrix}[/math][br][math]\overrightarrow{p_{9,7}}=\begin{pmatrix} 9\\ 7\\ 255 \\ 255 \\ 255\end{pmatrix}[/math][br][br]b) Das Pixel(-kästchen) mit den Koordinaten x=11 und y=3 muss eingefärbt werden mit dem Farbvektor [math]\overrightarrow{hellblau}=\begin{pmatrix} 0\\ 10\\ 245\end{pmatrix}[/math]. Dazu wird mit dem Vieleckwerkzeug [icon]/images/ggb/toolbar/mode_regularpolygon.png[/icon] ein Quadrat erzeugt und in den Einstellungen (Rechtsklick auf Quadrat & Zahnradsymbol) im Tab Farbe der Farbcode hexadezimal eingegeben.
Bereits an diesem kleinen Bild aus 15∙10 Pixeln ist leicht einzusehen, dass durch die Codierung jedes einzelnen Pixels unnötig viele Einzelinformationen erzeugt werden. Sinnvoller scheint es, Pixel mit gleicher Farbe zusammenzufassen. Dazu nutzt beispielsweise der JPEG-Standard das Prinzip der [b]Blockbildung[/b], bei der das Bild in rechteckige Blöcke gleicher Farbe unterteilt werden und für diese lediglich der Bereich und die Farbe in einem Blockvektor codiert werden. Vereinfacht sieht diese Codierung für einen Block einheitlicher Farbe wie folgt aus: [math]\overrightarrow{block_{1}}=\begin{pmatrix} x_S\\ y_S\\x_E \\ y_E \\r \\ g \\ b\end{pmatrix}[/math] mit den Koordinaten der Ecken unten links [math]x_S \ y_s[/math] und oben rechts [math]x_E \ y_E[/math] des Blocks und den Farbanteilen [math]r\ g\ b[/math].
a) Geben Sie für das orange Rechteck im Bild aus Aufgabe 1 eine Codierung mithilfe des JPEG-Prinzips an.
[math]\overrightarrow{block_{orange}}=\begin{pmatrix} 2\\ 3\\ 6\\5 \\ 255 \\120 \\ 50\end{pmatrix}[/math]
b) Unterteilen Sie nun das ganze Bild aus Aufgabe 1 in möglichst geeignete Blöcke und codieren Sie mithilfe des JPEG-Prinzips das gesamte Bild in Blockvektoren.
[math]\overrightarrow{block_{1}}=\begin{pmatrix}1\\1\\1\\10\\255\\255\\255\\255\end{pmatrix}[/math][br][math]\overrightarrow{block_{orange}}=\begin{pmatrix} 2\\ 3\\ 6\\5 \\ 255 \\120 \\ 50\end{pmatrix}[/math][br][math]\overrightarrow{block_{2}}=\begin{pmatrix}2\\6\\6\\10\\255\\120\\50\end{pmatrix}[/math][br][math]\overrightarrow{block_{3}}=\begin{pmatrix}2\\1\\15\\2\\255\\255\\255\end{pmatrix}[/math][br][math]\overrightarrow{block_{4}}=\begin{pmatrix}7\\3\\15\\10\\255\\255\\255\end{pmatrix}[/math]
Digitale Videos werden als eine Hintereinanderreihung von einzelnen Bildern gespeichert. Bei der Standard-Bildrate von 24 fps (frames per second - also 24 Bilder pro Sekunde) und einer Standard-HD-Auflösung von 1920*1080 Pixel pro Bild kommen enorme Datenmengen bestehend aus Pixelvektoren zusammen. Deshalb sind Kompressionsverfahren absolut unumgänglich. Ein wichtiges Kompressionsformat für Videoinhalte ist MPEG. [br]Neben der Kompression der einzelnen Bilder z.B. mit JPEG (intraframe Kompression) ergibt sich bei Videos eine weitere Möglichkeit der [b]Kompression durch die Analyse der Änderungen von Bild zu Bild[/b] (interframe Kompression). Alle Pixelvektoren werden nur für ein Startbild gespeichert, die Vektoren für die Folgebilder enthalten deutlich weniger Informationen.[br][img]https://mategnu.de/bilder/modul_3/Videokompression.png.bmp[/img][br][br]Die nachfolgende Abbildung zeigt ein Beispiel-Folgebild des MPEG-Formats einer TV-Nachrichtensendung.
Quelle: [url=https://pi4.informatik.uni-mannheim.de/pi4.data/content/courses/1997-ws/seminarvs/THEMA11/video-mpeg.html]https://pi4.informatik.uni-mannheim.de/pi4.data/content/courses/1997-ws/seminarvs/THEMA11/video-mpeg.html[/url]
Das MPEG-Format nutzt (vereinfacht) drei grundlegende Prinzipien der interframe Kompression[br]Für Folgebilder werden nur noch folgende Informationen gespeichert:[br]1. für jeden Bildpunkt, der seine Farbe verändert hat, ein Vektor [math]\overrightarrow{p_{farb}}=\begin{pmatrix} x\\ y\\ \Delta r\\ \Delta g\\ \Delta b\end{pmatrix}[/math] mit [br][list][*]Pixelkoordinaten [math]x,y[/math] [/*][*]Änderung der Farbkomponenten [math]\Delta r,\Delta g,\Delta b[/math] [br][/*][/list]2. für jeden Block, der seine Farbe einheitlich verändert hat, ein Vektor [math]\overrightarrow{Block_{farb}}=\begin{pmatrix} x_S\\ y_S\\ x_E\\y_E \\ \Delta r\\ \Delta g\\ \Delta b\end{pmatrix}[/math] mit[br][list][*]Koordinatenbereich des Blocks [math]x_S,y_S,x_E,y_E[/math] [/*][*]Änderung der Farbkomponenten [math]\Delta r,\Delta g,\Delta b[/math] [br][/*][/list]3. für jeden Block, der seine Position geändert hat, ein Vektor [math]\overrightarrow{Block_{pos}}=\begin{pmatrix} x_S\\ y_S\\ x_E\\y_E \\ \Delta x\\ \Delta y\end{pmatrix}[/math] mit[br][list][*]Koordinatenbereich des Blocks [math]x_S,y_S,x_E,y_E[/math] [/*][*]Änderung der Pixelkoordinaten [math]\Delta x,\Delta y[/math] [/*][/list]
Im folgenden Applet sind zum Startbild aus Aufgabe 1 und 2 zwei weitere Folgebilder einer Videosequenz dargestellt, die durch den Schieberegler [i]Bildnummer [/i]angezeigt werden. [br]Nutzen Sie die Prinzipien der MPEG-Interframe-Kompression, um die beiden Folgebilder möglichst komprimiert zu codieren.
Von Bild 1 zu Bild 2: Positionsänderung des Blocks[br][math]\overrightarrow{Block_{pos}}=\begin{pmatrix} x_S\\ y_S\\ x_E\\y_E \\ \Delta x\\ \Delta y\end{pmatrix}=\begin{pmatrix} 2\\ 3\\ 6\\5 \\ 7\\ 4\end{pmatrix}[/math][br] [br]Von Bild 2 zu Bild 3: Farbänderung des Blocks[br][math]\overrightarrow{Block_{farb}}=\begin{pmatrix} x_S\\ y_S\\ x_E\\y_E \\ \Delta r\\ \Delta g\\ \Delta b\end{pmatrix}=\begin{pmatrix} 9\\ 7\\ 13\\9 \\ -135\\ 115 \\ -20\end{pmatrix}[/math][br]