Current Page: Greybox » Authoring » Course ID: medieninformatik » Modules » Module ID: m04 » Learning Units » Unit ID: 04_19
Last Modified:Tuesday, 2015-05-05 - 08:09:08
 
Tools: ValidatePreview XML Preview HTML Preview PDF
Alternative: Printable HTML

 

Learning Unit ID: 04_19
Title: JPEG Bildvorbereitung
Abstract: In dieser Lerneinheit werden Vorbereitungsschritte beschrieben, die notwendig sind, um ein Bild als JPEG codieren zu können: Blockzerlegung, Farbraumtransformation, Diskrete Kosuinustransformation. Weiters wird der Begriff "Frequenz" in Zusammenhang mit Bildcodierung erläutert.
 
Status: Captions missing Version: 2005-01-07
History: 2005-01-07 (Robert Fuchs): Added VisJPEG applet => please test, .jar might not work properly.
2004-11-04 (Thomas Migl): Acro added
2004-10-14 Tthomas migl): PDA Abb. hinzugefügt
2004-09-22 (Thomas migl): Visio Icon als Platzhalter hinzugefügt
2004-09-17 (Thomas Migl): Statuseintrag hinzugefügt
2004-08-16 (Robert Fuchs): Checked, fixed and exported for Review #2.
2004-07-29 (Thomas Migl): Platzhalter für Applet +++ Almost final (although block-typing could be better) +++ TO DO: impl. Applet Abb PDA +++ VERW: APPLET; 41801
2004-07-29 (Robert Fuchs): Import is now complete.
2004-07-26 (Robert Fuchs): Manual import into the Greybox.
2004-03-12 (Robert Fuchs): Closed for 50% Content Deadline import in Scholion.
2004-03-11 (Thomas Migl): LOD1 Headers added
2004-03-08 (Robert Fuchs): Zapped Gremlins.
2004-03-07 (Robert Fuchs): Removed empty paragraphs from LOD1, fixed clustering bugs im LOD1 and LOD2.
2004-03-05 (Thomas Migl): LOD1, abstract
2004-03-05 (Robert Fuchs): Added images, formulas and links.
2004-03-02 (Robert Fuchs): Imported and tagged content from "m4-LU19-JPEGBilldvorbereitung-fertig.doc".
2004-02-25 (HTMLContentTools):Created skeleton page.

Author
Author 1: Thomas Migl E-Mail: migl@ims.tuwien.ac.at
Author 2: (empty) E-Mail: (empty)
Author 3: (empty) E-Mail: (empty)
Author 4: (empty) E-Mail: (empty)
Author 5: (empty) E-Mail: (empty)
Organization: Technische Universität Wien; Institut für Softwaretechnik und Interaktive Systeme; Arbeitsgruppe für Interaktive Multimediale Systeme; http://www.ims.tuwien.ac.at/

Content

Einleitung

1

Die drei Schritte der Bildvorbereitung

  1. Blockzerlegung
  2. Farbraumtransformation -Pixelwert dargestellt durch Grauwert und den beiden Chrominanzwerten
  3. DCT 242 -Transformation in Spektralbereich

2

AUTO

Die einfachste Form, eine Bilddatei zu verkleinern, ist, das Bild in einer kleineren Auflösung zu kodieren. Diese Datenreduktion ist für unser Auge aber sofort sichtbar. Das Bild wird als weniger scharf empfunden. Allerdings zeigt die Erfahrung, dass unser Auge bei Bildern mit reinen Grauwerten eine Bildverschlechterung resultierend aus einer Verringerung der Auflösung viel genauer wahrnimmt als bei Bildern mit reinen Farbwerten. Daraus folgt schon die erste Technik zur Bildkompression, die Farbraumtransformation. Viel wichtiger aber zu einer effektiven Kompression ist die Diskrete Kosinus Transformation.

Die drei Schritte der Bildvorbereitung

  1. Blockzerlegung - berücksichtigt die unterschiedlichen Struktureigenschaften an verschiedenen Bildstellen eines Bildes.
  2. Farbraumtransformation - Vor der eigentlichen JPEG 29 Kompression wird das Farbbild nicht in seinen Rot-Grün-Blau Komponenten dargestellt, sondern in den Farbraum Grauwerte und Farbwerte transformiert. Das gesamte Farbbild wird dabei als ein Schwarzweißbild und zwei Bildern, die die Farbinformationen enthalten. dargestellt. Die beiden Bilder mit den Farbinformationen können mit einer geringeren Auflösung kodiert werden.
  3. DCT 242-Transformation - Stellt die verschiedenen Bildregionen in ihrem Spektralbereich dar

Blockzerlegung

1

AUTO

  • Bilder haben instationären Charakter
  • DCT 242 nur effektiv, wenn in kleinen Bildbereichen angewandt

JPEG

  • Bildbereiche - Bild in nebeneinanderliegende, nicht überlappende 8x8 Pixel Blöcke eingeteilt

2

AUTO stru2002, 163

Bildsignale haben einen instationären Charakter. Ein und dasselbe Bild kann an verschiedenen Bildstellen unterschiedliche Strukturen zeigen. So gibt es Bilderstellen, in denen großflächige, homogene Farbflächen abgebildet werden (zum Beispiel blauer Himmel), an anderen Stellen wiederum sind scharfe Kanten, feine Strukturen etc sichtbar (Gräser in einer Wiese etc). Zur effektiven Analyse eines Bildes ist es daher wichtig, die einzelnen Regionen eines Bildes getrennt voneinander zu untersuchen.

Segmentierung im JPEG Standard

Im JPEG-Standard wird das Bild in 8x8-Pixel Blöcke unterteilt. Die nachfolgenden Operationen werden separat auf jeden Block (Luminanz und Chrominanz voneinander getrennt) angewendet.

Farbraumtransformation effe2000

1

AUTO

  • Unterschiedliche Empfindlichkeit des Auges
    • Hohe Empfindlichkeit - bei Bilder mit reinen Grauwerten
    • Geringere Empfindlichkeit - bei Bilder mit reinen Farbwerten
  • Ausnutzung für JPEG Bildkompression
    • nicht für jedes Pixel wird der Farbwert codiert
    • Farbabtastung gibt an, für welche Pixel Farbwerte codiert wird

Mögliche Abtastverhältnisse

Abtastverhältnis Erklärung
4:4:4 kein Subsampling; Luminanz und Chrominanz mit gleicher Dichte; kein Subsampling
4:2:2 2:1 chroma-subsampling; für zwei Y-Pixel einer Zeile werden jeweils ein Chrominanzwert genommen
4:2:0 2:1 chroma-subsampling; In horizontaler und vertikaler Richtung; für 4 Y-Pixel aus zwei Zeilen wird jeweils ein Chrominanzwert genommen
4:1:1 4:1 chroma-subsampling; für 4 Y-Pixel einer Scanline wird jeweils ein Chrominanzwert genommen

Applet: JPEG Visualisierung/ Farbraum

siehe Applet Visualisierung, Reiter Farbraum

2

AUTO

Bei der Komprimierung von Farbbildern werden bei JPEG die perzeptuellen Eigenschaften des menschlichen Auges berücksichtigt. Unser Auge kann unterschiedliche Helligkeitswerte genauer differenzieren als unterschiedliche Farben. Daher transformiert man die sonst übliche Blau-Grün-Rot-Farbdarstellung in einen Farbraum, der den Farbwert eines Pixels als Helligkeitswert (Y = Yield oder Luminanz) und Chrominanz (zwei Werte) beschreibt. In einem nach Yield und Chrominanz aufgespaltenen Farbraum können die Helligkeits- und Farbinformationen mit unterschiedlicher Dichte angegeben werden (=Unterabtastung/Subsampling). Diese Unterabtastung ist allerdings eine verlustbehaftete Prozedur. Das Comite Consultant International des Radio Communications (CCIR-601) schlagen als Nomenklatur für das Subsampling die A:B:C Notation vor.

Farbunterabtastung

Folgende Tabelle zeigt mögliche Abtastverhältnisse für die Farbunterabtastung.

Abtastverhältnis Erklärung
4:4:4 kein Subsampling; Luminanz und Chrominanz mit gleicher Dichte; kein Subsampling
4:2:2 2:1 chroma-subsampling; für zwei Y-Pixel einer Zeile werden jeweils ein Chrominanzwert genommen
4:2:0 2:1 chroma-subsampling; In horizontaler und vertikaler Richtung; für 4 Y-Pixel aus zwei Zeilen wird jeweils ein Chrominanzwert genommen
4:1:1 4:1 chroma-subsampling; für 4 Y-Pixel einer Scanline wird jeweils ein Chrominanzwert genommen

Applet: JPEG Visualisierung/Farbraum

siehe Applet Visualisierung, Reiter Farbraum

Diskrete Cosinus Transformation (DCT)

1

Diskrete Kosinustransformation (DCT)

 <math display='block'>  <semantics>  <mrow>  <mi>F </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo>, </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo>  </mrow>  <mn>2 </mn>  </mfrac>  <mo>&#x22C5; </mo> <mfrac>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo>  </mrow>  <mn>2 </mn>  </mfrac>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>x </mi> <mo>= </mo> <mi>o </mi>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>y </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mi>f </mi> <mo stretchy='false'>( </mo> <mi>x </mi> <mo>, </mo> <mi>y </mi> <mo stretchy='false'>) </mo>  </mrow>  </mstyle>  </mrow>  </mstyle> <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mrow> <mo>( </mo>  <mrow>  <mn>2 </mn> <mi>x </mi> <mo>+ </mo> <mn>1 </mn>  </mrow>  <mo>) </mo> </mrow> <mi>u </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mo stretchy='false'>( </mo> <mn>2 </mn> <mi>y </mi> <mo>+ </mo> <mn>1 </mn> <mo stretchy='false'>) </mo> <mi>v </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamOraiaacIcacaWG1bGaaiilaiaadAhacaGGPaGaeyypa0Zaa SaaaeaacaWGdbGaaiikaiaadwhacaGGPaaabaGaaGOmaaaacqGHflY1 daWcaaqaaiaadoeacaGGOaGaamODaiaacMcaaeaacaaIYaaaamaaqah abaWaaabCaeaacaWGMbGaaiikaiaadIhacaGGSaGaamyEaiaacMcaaS qaaiaadMhacqGH9aqpcaaIWaaabaGaaG4naaqdcqGHris5aaWcbaGaa miEaiabg2da9iaad+gaaeaacaaI3aaaniabggHiLdGcciGGJbGaai4B aiaacohadaWcaaqaamaabmaabaGaaGOmaiaadIhacqGHRaWkcaaIXaa acaGLOaGaayzkaaGaamyDaiabec8aWbqaaiaaigdacaaI2aaaaiGaco gacaGGVbGaai4CamaalaaabaGaaiikaiaaikdacaWG5bGaey4kaSIaa GymaiaacMcacaWG2bGaeqiWdahabaGaaGymaiaaiAdaaaaaaa@6E43@ </annotation>  </semantics>  </math>

Inverse Diskrete Kosinustranformation (IDCT)

 <math>  <semantics>  <mrow>  <mi>F </mi> <mo stretchy='false'>( </mo> <mi>x </mi> <mo>, </mo> <mi>y </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mn>1 </mn>  <mn>4 </mn>  </mfrac>  <mrow> <mo>[ </mo> <mrow>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>u </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>v </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo> <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mi>F </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo>, </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mrow> <mo>( </mo>  <mrow>  <mn>2 </mn> <mi>x </mi> <mo>+ </mo> <mn>1 </mn>  </mrow>  <mo>) </mo> </mrow> <mi>u </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mo stretchy='false'>( </mo> <mn>2 </mn> <mi>y </mi> <mo>+ </mo> <mn>1 </mn> <mo stretchy='false'>) </mo> <mi>v </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  </mrow>  </mstyle>  </mrow>  </mstyle>  </mrow> <mo>] </mo> </mrow>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamOraiaacIcacaWG4bGaaiilaiaadMhacaGGPaGaeyypa0Zaa SaaaeaacaaIXaaabaGaaGinaaaadaWadaqaamaaqahabaWaaabCaeaa caWGdbGaaiikaiaadwhacaGGPaGaam4qaiaacIcacaWG2bGaaiykaia adAeacaGGOaGaamyDaiaacYcacaWG2bGaaiykaiGacogacaGGVbGaai 4CamaalaaabaWaaeWaaeaacaaIYaGaamiEaiabgUcaRiaaigdaaiaaw IcacaGLPaaacaWG1bGaeqiWdahabaGaaGymaiaaiAdaaaGaci4yaiaa c+gacaGGZbWaaSaaaeaacaGGOaGaaGOmaiaadMhacqGHRaWkcaaIXaG aaiykaiaadAhacqaHapaCaeaacaaIXaGaaGOnaaaaaSqaaiaadAhacq GH9aqpcaaIWaaabaGaaG4naaqdcqGHris5aaWcbaGaamyDaiabg2da9 iaaicdaaeaacaaI3aaaniabggHiLdaakiaawUfacaGLDbaaaaa@6D7D @ </annotation>  </semantics>  </math>

Für beide gilt:

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mn>1 </mn>  <mrow>  <msqrt>  <mn>2 </mn>  </msqrt>  </mrow>  </mfrac>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG1bGaaiykaiabg2da9maalaaabaGaaGyma aqaamaakaaabaGaaGOmaaWcbeaaaaaaaa@3BB1@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>u </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamyDaiabg2da9iaaicdaaaa@38A8@ </annotation>  </semantics>  </math>

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mn>1 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG1bGaaiykaiabg2da9iaaigdaaaa@3ACA@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>u </mi> <mo>&#x003E; </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamyDaiabg6da+iaaicdaaaa@38AA@ </annotation>  </semantics>  </math>

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mn>1 </mn>  <mrow>  <msqrt>  <mn>2 </mn>  </msqrt>  </mrow>  </mfrac>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG2bGaaiykaiabg2da9maalaaabaGaaGyma aqaamaakaaabaGaaGOmaaWcbeaaaaaaaa@3BB2@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>v </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamODaiabg2da9iaaicdaaaa@38A9@ </annotation>  </semantics>  </math>

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mn>1 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG2bGaaiykaiabg2da9iaaigdaaaa@3ACB@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>v </mi> <mo>&#x003E; </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamODaiabg6da+iaaicdaaaa@38AB@ </annotation>  </semantics>  </math>

2

AUTO

Die JPEG Kompression basiert auf dem Prinzip der Transformations-Kodierung. Es kommt dabei die Diskrete Cosinus Transformation (DCT) zum Einsatz (siehe auch Fouriertransformation). Der Grund für den Einsatz einer Transformation besteht darin, dass man das Bildsignal in einer geeigneten Form repräsentieren will, die es ermöglicht, für unser Auge kaum wahrnehmbare und daher redundante Bildinformationen getrennt von deutlich sichtbaren und daher wichtigen Bildinformationen darzustellen. Die DCT ist reversibel, dabei ist die inverse DCT jene Operation, die wieder auf die ursprüngliche Bilddarstellung zurückführt. Beide Transformationen, DCT und inverse DCT, sind verlustlos, bewirken daher auch noch keine Datenkomprimierung. Sie ermöglichen jeglich zwei verschiedene Darstellungsformen ein und desselben Bildsignals. Die DCT führt von der Darstellung im räumlichen Bereich zu der im spektralen Bereich (Frequenzbereich), die inverse DCT vom spektralen zurück in den räumlichen Bereich.

Diskrete Kosinustransformation (DCT) furt1995, 105

 <math display='block'>  <semantics>  <mrow>  <mi>F </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo>, </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo>  </mrow>  <mn>2 </mn>  </mfrac>  <mo>&#x22C5; </mo> <mfrac>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo>  </mrow>  <mn>2 </mn>  </mfrac>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>x </mi> <mo>= </mo> <mi>o </mi>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>y </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mi>f </mi> <mo stretchy='false'>( </mo> <mi>x </mi> <mo>, </mo> <mi>y </mi> <mo stretchy='false'>) </mo>  </mrow>  </mstyle>  </mrow>  </mstyle> <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mrow> <mo>( </mo>  <mrow>  <mn>2 </mn> <mi>x </mi> <mo>+ </mo> <mn>1 </mn>  </mrow>  <mo>) </mo> </mrow> <mi>u </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mo stretchy='false'>( </mo> <mn>2 </mn> <mi>y </mi> <mo>+ </mo> <mn>1 </mn> <mo stretchy='false'>) </mo> <mi>v </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamOraiaacIcacaWG1bGaaiilaiaadAhacaGGPaGaeyypa0Zaa SaaaeaacaWGdbGaaiikaiaadwhacaGGPaaabaGaaGOmaaaacqGHflY1 daWcaaqaaiaadoeacaGGOaGaamODaiaacMcaaeaacaaIYaaaamaaqah abaWaaabCaeaacaWGMbGaaiikaiaadIhacaGGSaGaamyEaiaacMcaaS qaaiaadMhacqGH9aqpcaaIWaaabaGaaG4naaqdcqGHris5aaWcbaGaa miEaiabg2da9iaad+gaaeaacaaI3aaaniabggHiLdGcciGGJbGaai4B aiaacohadaWcaaqaamaabmaabaGaaGOmaiaadIhacqGHRaWkcaaIXaa acaGLOaGaayzkaaGaamyDaiabec8aWbqaaiaaigdacaaI2aaaaiGaco gacaGGVbGaai4CamaalaaabaGaaiikaiaaikdacaWG5bGaey4kaSIaa GymaiaacMcacaWG2bGaeqiWdahabaGaaGymaiaaiAdaaaaaaa@6E43@ </annotation>  </semantics>  </math>

Wobei gilt:

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mn>1 </mn>  <mrow>  <msqrt>  <mn>2 </mn>  </msqrt>  </mrow>  </mfrac>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG1bGaaiykaiabg2da9maalaaabaGaaGyma aqaamaakaaabaGaaGOmaaWcbeaaaaaaaa@3BB1@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>u </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamyDaiabg2da9iaaicdaaaa@38A8@ </annotation>  </semantics>  </math>

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mn>1 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG1bGaaiykaiabg2da9iaaigdaaaa@3ACA@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>u </mi> <mo>&#x003E; </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamyDaiabg6da+iaaicdaaaa@38AA@ </annotation>  </semantics>  </math>

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mn>1 </mn>  <mrow>  <msqrt>  <mn>2 </mn>  </msqrt>  </mrow>  </mfrac>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG2bGaaiykaiabg2da9maalaaabaGaaGyma aqaamaakaaabaGaaGOmaaWcbeaaaaaaaa@3BB2@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>v </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamODaiabg2da9iaaicdaaaa@38A9@ </annotation>  </semantics>  </math>

 <math>  <semantics>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mn>1 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaam4qaiaacIcacaWG2bGaaiykaiabg2da9iaaigdaaaa@3ACB@ </annotation>  </semantics>  </math> wenn  <math>  <semantics>  <mrow>  <mi>v </mi> <mo>&#x003E; </mo> <mn>0 </mn>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamODaiabg6da+iaaicdaaaa@38AB@ </annotation>  </semantics>  </math>

Inverse Diskrete Kosinustransformation (IDCT) furt1995, 111

 <math>  <semantics>  <mrow>  <mi>F </mi> <mo stretchy='false'>( </mo> <mi>x </mi> <mo>, </mo> <mi>y </mi> <mo stretchy='false'>) </mo> <mo>= </mo> <mfrac>  <mn>1 </mn>  <mn>4 </mn>  </mfrac>  <mrow> <mo>[ </mo> <mrow>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>u </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mstyle displaystyle='true'>  <munderover>  <mo>&#x2211; </mo>  <mrow>  <mi>v </mi> <mo>= </mo> <mn>0 </mn>  </mrow>  <mn>7 </mn>  </munderover>  <mrow>  <mi>C </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo stretchy='false'>) </mo> <mi>C </mi> <mo stretchy='false'>( </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mi>F </mi> <mo stretchy='false'>( </mo> <mi>u </mi> <mo>, </mo> <mi>v </mi> <mo stretchy='false'>) </mo> <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mrow> <mo>( </mo>  <mrow>  <mn>2 </mn> <mi>x </mi> <mo>+ </mo> <mn>1 </mn>  </mrow>  <mo>) </mo> </mrow> <mi>u </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  <mi>cos </mi> <mo>&#x2061; </mo> <mfrac>  <mrow>  <mo stretchy='false'>( </mo> <mn>2 </mn> <mi>y </mi> <mo>+ </mo> <mn>1 </mn> <mo stretchy='false'>) </mo> <mi>v </mi> <mi>&#x03C0; </mi>  </mrow>  <mrow>  <mn>16 </mn>  </mrow>  </mfrac>  </mrow>  </mstyle>  </mrow>  </mstyle>  </mrow> <mo>] </mo> </mrow>  </mrow>  <annotation encoding='MathType-MTEF'>  MathType@MTEF@5@5@+=feaafiart1ev1aqatCvAUfeBSjuyZL2yd9 gzLbvyNv2CaerbuLwBLnhiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDY LwzYbItLDharqqtubsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rq qrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0 FirpepeKkFr0xfr=xfr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaa GcbaGaamOraiaacIcacaWG4bGaaiilaiaadMhacaGGPaGaeyypa0Zaa SaaaeaacaaIXaaabaGaaGinaaaadaWadaqaamaaqahabaWaaabCaeaa caWGdbGaaiikaiaadwhacaGGPaGaam4qaiaacIcacaWG2bGaaiykaia adAeacaGGOaGaamyDaiaacYcacaWG2bGaaiykaiGacogacaGGVbGaai 4CamaalaaabaWaaeWaaeaacaaIYaGaamiEaiabgUcaRiaaigdaaiaaw IcacaGLPaaacaWG1bGaeqiWdahabaGaaGymaiaaiAdaaaGaci4yaiaa c+gacaGGZbWaaSaaaeaacaGGOaGaaGOmaiaadMhacqGHRaWkcaaIXaG aaiykaiaadAhacqaHapaCaeaacaaIXaGaaGOnaaaaaSqaaiaadAhacq GH9aqpcaaIWaaabaGaaG4naaqdcqGHris5aaWcbaGaamyDaiabg2da9 iaaicdaaeaacaaI3aaaniabggHiLdaakiaawUfacaGLDbaaaaa@6D7D @ </annotation>  </semantics>  </math>

Bei JPEG werden die aus der Blockzerlegung resultierenden 8x8-Pixel Blöcke eines Bildes in den beiden Bereichen betrachtet

Applet JPEG Visualisierung/DCT

siehe JPEG Visualisierung, Reiter DCT

Darstellung räumlicher/spektraler Bereich

1

Räumliche Darstellung eines 8x8 Pixel Blockes

  • Jeder Wert gibt die dem Ort entsprechende Helligkeit an

Spektrale Darstellung eines 8x8 Pixel Blockes

  • kein Zusammenhang Position Koeffizient und Örtlichkeit eines Pixels
  • Position Koeffizient entspricht den beiden Frequenzen, die er repräsentiert

2

AUTO

Die Werte eines 8x8 Pixelblockes werden im Folgenden sowohl in der räumlichen wie auch spektralen Darstellung in einer 8x8 Matrix dargestellt. Je nach gewählter Darstellungsform haben die Werte dieser Matrix unterschiedliche Bedeutung.

Darstellung im räumlichen Bereich

Jeder der 64 Werte eines 8x8 Pixel Blockes gibt im Y-Bild den dem Ort entsprechenden Helligkeitswert an, in den beiden Chrominanzbildern die dem Ort entsprechenden Farbwerte.

Y-Bild

Der Koeffizient in der Matrix an der Stelle 1.Reihe, 1. Spalte ist der Helligkeitswert des links oberen Pixels des 8x8 Blockes.

Insert image here; book is with Roman & Doris

Darstellung im spektralen Bereich

Im spektralen Bereich besteht kein Zusammenhang mehr zwischen der Position eines Koeffizienten innerhalb der Matrix und der Örtlichkeit eines Pixels. Vielmehr beschreibt die Position des DCT Koeffizienten jene Frequenzen, die er repräsentiert.

Was bedeutet Frequenz für ein Bild?

1

Bereiche verschiedener Frequenzanteile PC

Bereich 1: hohe Frequenzkomponenten
Bereich 2: mäßige Frequenzkomponenten
Bereich 3: keine Frequenzkomponenten

Bereiche verschiedener Frequenzanteile PDA_Phone

Bereich 1: hohe Frequenzkomponenten
Bereich 2: mäßige Frequenzkomponenten
Bereich 3: keine Frequenzkomponenten

2

AUTO

Momentan kann es verwirrend sein, dass ein Bild beziehungsweise ein Ausschnitt davon mit dem Begriff "Frequenz" beschrieben wird. Mit der allgemeinüblichen Definition für Frequenz: "Frequenz ist die Anzahl an Schwingungen, die ein Pendel innerhalb einer Sekunde absolviert" wird man sich dem, was die Frequenz in einem Bild beschreibt, nur sehr schwer nähern können.

AUTO

Für ein Bild ist die Frequenz nicht das Maß für eine Schwingungsdauer, sondern ein Maß für die örtliche Änderung der Pixelwerte. Sind in einem Bildteil hohe Werteänderungen benachbarter Pixel vorhanden, hat dieser Bildbereich hohe Frequenzkomponenten. Sind die Wertdifferenzen der benachbarten Pixel gering oder gleich Null, hat das Bild in diesem Bereich mäßig hohe bzw gar keine Frequenzkomponenten.

Bereiche verschiedener Frequenzanteile

Bereich 1: hohe Frequenzkomponenten
Bereich 2: mäßige Frequenzkomponenten
Bereich 3: keine Frequenzkomponenten

Bereiche verschiedener Frequenzanteile PDA_Phone

Bereich 1: hohe Frequenzkomponenten
Bereich 2: mäßige Frequenzkomponenten
Bereich 3: keine Frequenzkomponenten

 

Bildbereiche ohne Frequenzanteile

Man betrachte die Grauwerte nebeneinander liegender Pixel im Bereich 3 des Bildes. Dieser Bereich ist eine homogene Graufläche. Alle in diesem Bereich befindlichen Pixel haben den gleichen Grauwert. Es gibt keine Änderung der Werte. Es sind in diesem Teil des Bildes keine Frequenzkomponenten enthalten.

Bildbereiche mit Frequenzanteilen

Hier sind die Grauwerte des betrachteten Bildausschnittes unterschiedlich. Die Grauwerte benachbarter Pixel sind unterschiedlich.

Mäßige Frequenzanteile

Man betrachte das Portrait von Lena im Bildbereich 2. Am Hut von Lena sind zwar unterschiedliche Herlligkeitswerte der Pixel, verursacht durch die Oberflächenstrukur des Hutes und durch den Einfallswinkel des Lichtes, der Helligkeitsverlauf ist aber relativ kontinuierlich. Dieser Bereich wird nur mäßig große Frequenzkomponenten aufweisen.

Hohe Frequenzanteile

Bereich 1: Sehr hohe Frequenzen beinhalten jene Bildteile, wo benachbarte Pixel sehr unterschiedliche Grauwerte haben. im Bild von Lena ist dies die weiße Hutkrempe vor schwarzem Hintergrund. Jene Bildbereiche, die die Kante des Krempe beinhalten, werden genau an der Schnittstelle benachbarte Pixel haben, deren Werte weiß beziehungsweise schwarz sind. Hier ist eine maximale Änderung der Grauwerte benachbarter Pixel. Diese Bildteile beinhaltet sehr hohe Frequenzkomponenten.

Die DCT Koeffizienten

1

DCT Koeffizienten

DC-Koeffizient

  • Es gibt pro Block nur einen DC 494 -Koeffizient
  • Name kommt aus Elektrotechnik - Direct Current = Gleichstrom
  • Beschreibt Gleichanteil, das ist der Mittelwert der Pixelwerte des gesamten Blockes

AC- Koeffizienten

  • Name - Alternating Current = Wechselstrom
  • Es gibt 63 verschiedenen AC 507 - Koeffizienten pro Block

DCT Koefizienten eines 8x8 Pixel Blockes

DC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC

DCT Koeffizientenposition mit den repräsentierten Frequenzen

AUTO PC

AUTO PDA_Phone

2

DCT Koeffizienten

Die in der 8x8 Matrix dargestellten Werte geben die DCT Koeffizienten für den 8x8 Pixel Block an. Man unterscheidet zwischen zwei Arten von Koeffizienten, den DC 494 und den AC 507 Koeffizienten. Die Unterscheidung der beiden Typen ist für den gesamten Kompressionsverlauf wichtig, da sie dabei völlig unterschiedliche Prozeduren durchlaufen und auch unterschiedlich kodiert werden (siehe Lerneinheit JPEG Kodierungstechnik).

DC Koeffizienten

Der Koeffizient, der in der linken oberen Ecke der 8x8 Matrix steht, wird als der DC Koeffizient bezeichnet. DC steht für "Direct Current", dies ist wiederum ein Begriff aus der Elektrotechnik und bedeutet Gleichstrom. Für die Bildkompression heißt es, dass dieser DC Koeffizient den Signalanteil mit der Frequenz gleich Null beschreibt, also keine Wechselanteile beinhaltet. Für einen 8x8 Pixel Block eines Bildes gibt der DC Koeffizient den Mittelwert aller 64 Pixel an. Für das Y-Bild ist das der mittlere Grauwert, für die Chrominanzbilder der über den Block gemittelte Farbwert.

Dummy insert image here; book is with Roman & Doris

AC-Koffizienten

Die restlichen Koeffizienten der Matrix sind die AC Koeffizienten. AC steht für "alternating current". Diese Koeffizienten repräsentieren die Frequenzkomponenten des betrachteten Bildteils. Für die Positionierung eines AC-Koeffizienten gilt, je höher die zugehörige Frequenz, desto weiter rechts bzw. weiter unten wird er in der 8x8 Matrix notiert. Die Spaltenzahl bezieht sich auf horizontalen, die Zeilenzahl auf die vertikale Werteänderungen der Pixel. .Wobei hier wieder gilt: sehr hohe Frequenz repräsentieren einen sehr raschen Werteunterschied benachbarter Pixel, niedrigere Frequenzen eher einen kontinuierlichen Werteänderungsverlauf.

DCT Koefizienten eines 8x8 Pixel Blockes

DC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC
AC AC AC AC AC AC AC AC

Bildliche Veranschaulichung der DCT Koeffizienten

AUTO PC

AUTO PDA_Phone

AUTO

Die Abbildung soll veranschaulichen, welche Koeffizienten welche Helligkeitsverläufe in einem 8x8 Pixel Block repräsentieren. Dabei gilt, je größer der entsprechende Koeffizient, desto signifikanter sind die von ihm repräsentierten Frequenzen. Die Gesamtstruktur des 8x8 Blockes ergibt sich aus der Summe aller Frequenzen.

Applet: JPEG Visualisierung

1

Applet: JPEG Visualisierung

Online Alternative

2

Applet: JPEG Visualisierung

Online Alternative

Einleitung

Das folgende Java Applet soll im experimentellen Umgang helfen, Prozeduren, die die JPEG Kodierung durchläuft, kennen- und verstehen zu lernen. Es beschreibt unteranderem die in dieser Lerneinheit erläuterten Techniken der Farbraumtransformation und der DCT Transformation.

Appletbeschreibung

Die Oberfläche des Applets ist in zwei Bereiche geteilt.

Bereich mit Reiterauswahl

Der rechte Bereich ist in 6 Reiter aufgeteilt. Jeder Reiter beschreibt eine Prozedur von JPEG . Die Anordnung der Reiter (von links beginnend) entspricht der streng festgelegten Reihenfolge der JPEG Kodierung.

Bereich für Bildauswahl

Der linke Bereich des Applets bleibt unabhängig vom gewählten Reiter gleich. Hier kann die Studentin ein Bild auswählen, welches im oberen Bildfenster angezeigt wird. Verändert nun die Studentin in einer der Prozeduren bestimmte Parameter, kann sie in der linken Spalte den Button „Neu berechnen“ wählen. Im unteren Bildfenster wird dann das entsprechende JPEG Bild angezeigt (wobei sie auch „Differenzbild“ wählen kann, welches Aufschluss über die Qualität der Kodierung gibt). Weiters wird auch der entsprechende Kompressionsgrad berechnet und in einem Fortschrittsbalken angezeigt.

Reiter für Farbraum und DCT
Farbraum

Studentin kann Grad der Unterabtastung (=Subsampling) wählen, ein Fortschrittsbalken zeigt die durch diesen Schritt erreichte Datenreduktion.

DCT

Die Studentin kann mit Maus einen 8x8 Pixelblock im Bild wählen. Es werden die Pixelwerte und die DCT Koeffizienten sowohl in Tabellen- wie auch in 3D Ansicht dargestellt.


Notes
(empty)