DE202012013410U1 - Bildkompression mit SUB-Auflösungsbildern - Google Patents

Bildkompression mit SUB-Auflösungsbildern Download PDF

Info

Publication number
DE202012013410U1
DE202012013410U1 DE202012013410.8U DE202012013410U DE202012013410U1 DE 202012013410 U1 DE202012013410 U1 DE 202012013410U1 DE 202012013410 U DE202012013410 U DE 202012013410U DE 202012013410 U1 DE202012013410 U1 DE 202012013410U1
Authority
DE
Germany
Prior art keywords
image
entropy
processor
input image
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE202012013410.8U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202012013410U1 publication Critical patent/DE202012013410U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Kodierer, der Folgendes umfasst: einen Prozessor; eine mit dem Prozessor gekoppelte Speicherkomponente; ein Entropiecode-Generierungsmodul, das konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Bestimmen einer Vielzahl von Entropiecodesätzen, basierend auf statistisch vergleichbaren Regionen in einem Bild; und das Generieren eines ersten Sub-Auflösungsbildes, umfassend die Referenzen auf die Vielzahl von Entropiecodesätzen, worin jede der besagten Referenzen einen der Entropiecodesätze anzeigt, um einen entsprechenden Pixel im Eingangsbild zu kodieren; ein Modul zum Speichern des Bildes, das konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Kodieren des Eingangsbildes mittels der jeweiligen Sub-Auflösungsbilder zur Steuerung von jedem von der Vielzahl von Kompressionsparametern; und ein Ausgabemodul für die komprimierte Bilddatei, das konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Ausgeben von zumindest dem kodierten Eingangsbild und dem generierten ersten Sub-Auflösungsbild als eine komprimierte entropiekodierte Bilddatei.

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Diese Offenlegung bezieht sich allgemein auf die Bildkompression. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Hintergrund
  • Die weite Verbreitung von digitalen Kameras, mit Kamera ausgestatteten Mobiltelefonen und Handgeräte sowie anderen bequemen Bildaufnahmegeräten führten zu einer großen Anzahl von Bildern, die regelmäßig auf verschiedene Web-basierte Anwendungen hochgeladen werden. Anwendungen wie diese zeigen die fortlaufende Notwendigkeit von Bildkompressionsverfahren, die die Effizienz, Qualität und Flexibilität verbessert haben.
  • Das Portable Netzwerk Graphics(PNG)-Format ist ein häufig verwendetes Format für die Speicherung und den Transport von Bildern in Netzwerken wie dem Internet. Andere Bildformate, wie das Graphics Interchange Format (GIF), Tagged Image File Format (TIFF) und Joint Photographic Experts Group (JPEG) werden ebenfalls häufig im Internet-Umfeld eingesetzt. PNG und GIF gelten als verlustfreie Kompressionsverfahren, während JPEG ein verlustbehaftetes Kompressionsverfahren ist. TIFF kann manchmal eine verlustbehaftete und eine verlustfreie Kompression verwendet werden. Jede dieser Techniken bietet viele Vorteile bei der Bildkompression. Jede dieser Techniken weist jedoch Schwächen in der Effizienz, Qualität und Flexibilität auf.
  • Daher wird eine Bildkompressionstechnik gewünscht, die auf breiter Basis angenommen und unterstützt wird sowie eine verbesserte Effizienz und Qualität gegenüber derzeit verfügbaren Techniken bietet.
  • ZUSAMMENFASSUNG DER AUSFÜHRUNGSFORMEN
  • Verfahren, Systeme und Artikel zur Durchführung der Bildkompression und -dekompression mittels mit Sub-Auflösungsbildern werden offengelegt. Für die Bildkompression beinhalten diese die Bestimmung einer Vielzahl von Entropiecodesätzen, basierend auf statistisch ähnlichen Regionen im Eingangsbild, die Generierung von einem oder mehreren Sub-Auflösungsbildern, einschließlich eines ersten Sub-Auflösungsbildes, bestehend aus der Vielzahl der Entropiecodesätze, eine Kodierung des Eingangsbildes mittels des zumindest einen generierten Sub-Auflösungsbildes zur Steuerung des zumindest einen Kompressionsparameters, einschließlich eines Entropiecodes und Ausgabe des kodierten Eingangsbildes und die Generierung von zumindest einem Sub-Auflösungsbild als eine komprimierte entropiekodierte Bilddatei.
  • Eine andere Ausführungsform der Bildkompression beinhaltet die Generierung der jeweiligen Sub-Auflösungsbilder für jedes von einer Vielzahl von Kompressionsparametern des Eingangsbildes, Kodierung des Eingangsbildes mittels der jeweiligen Sub-Auflösungsbilder zur Steuerung jedes von einer Vielzahl von Kompressionsparametern und Ausgabe des kodierten Eingangsbilds sowie der generierten Sub-Auflösungsbilder als eine komprimierte entropiekodierte Bilddatei.
  • Ausführungsformen für die Bilddekompression beinhalten die Aufspaltung einer Bilddatei für den Zugriff auf das kodierte komprimierte Bild und die jeweiligen Sub-Auflösungsbilder für jeden von einer Vielzahl von Kompressionsparametern, das Dekodieren des komprimierten kodierten Eingangsbildes mit der jeweiligen Sub-Auflösung zur Steuerung von jedem von einer Vielzahl von Kompressionsparametern und Ausgabe des dekodierten Eingangsbildes.
  • Weitere Merkmale und Vorteile der Erfindung sowie die Struktur und Funktionsweise der verschiedenen Ausführungsformen der Erfindung werden nachfolgend in Bezug auf die begleitenden Zeichnungen genau beschrieben. Es wird darauf hingewiesen, dass die Erfindung nicht auf die bestimmten hierin beschriebenen Ausführungsformen beschränkt ist. Derartige Ausführungsformen sind hier nur zur Veranschaulichung enthalten. Basierend auf den hierin enthaltenen Lehren können weitere Ausführungsformen für Fachleute auf dem Gebiet ersichtlich werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN/FIGUREN
  • Auf die Ausführungsformen der Erfindung wird verwiesen, diese Beispiele können in den begleitenden Figuren dargestellt sein. Diese Figuren sind illustrativ und sollen nicht beschränkend sein. Obwohl die vorliegende Offenlegung in der Regel im Zusammenhang mit diesen Ausführungsformen beschrieben wird, sollte verstanden werden, dass diese Ausführungsformen nicht auf den Wirkungsbereich begrenzend sein sollen.
  • 1 ist ein Ablaufdiagramm zur Veranschaulichung einer Bildkompressions- und Kodiertechnik gemäß einer Ausführungsform.
  • 2 ist ein Ablaufdiagramm zur Veranschaulichung der verwendeten Vorverarbeitungstechnik bei der Bildkompressions- und Kodiertechnik in 1, gemäß einer Ausführungsform.
  • 3 ist ein Ablaufdiagramm zur Veranschaulichung der bei der Bildkompressions- und Kodiertechnik in 1, gemäß einer Ausführungsform.
  • 4 ist ein Ablaufdiagramm zur Veranschaulichung der räumlichen Vorhersagetechnik bei der Bildkompressions- und Kodiertechnik in 1, gemäß einer Ausführungsform.
  • 5 ist ein Ablaufdiagramm zur Veranschaulichung der anfänglichen Pixel-basierten Kompressionstechnik bei der Bildkompressions- und Kodiertechnik in 1, gemäß einer Ausführungsform.
  • 6 ist ein Ablaufdiagramm zur Veranschaulichung der Technik zur Bestimmung der Entropiecodes bei der Bildkompressions- und Kodiertechnik in 1, gemäß einer Ausführungsform.
  • 7 ist ein Ablaufdiagramm zur Veranschaulichung einer allgemeinen Bildkodiertechnik bei der Bildkompressions- und Kodiertechnik in 1, gemäß einer Ausführungsform.
  • 8 ist ein Blockdiagramm eines Systems eines Kodierers gemäß einer Ausführungsform.
  • 9 ist ein Blockdiagramm zur Veranschaulichung der Daten, die dem Kodierer zugeordnet werden können, dargestellt in 8, gemäß einer Ausführungsform.
  • 10 ist ein Blockdiagramm eines komprimierten Bilddateiformates gemäß einer Ausführungsform.
  • 11 ist ein Ablaufdiagramm zur Veranschaulichung einer Bilddekompressions- und Dekodiertechnik gemäß einer Ausführungsform.
  • 12 ist ein Blockdiagramm eines Dekoders gemäß einer Ausführungsform.
  • 13 ist ein System einer Recheneinheit gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Während illustrative Ausführungsformen für bestimmte Anwendungen in der vorliegenden Offenlegung beschrieben sind, sollte verstanden werden, dass diese Ausführungsformen bezüglich der Offenlegung als nicht einschränkend anzusehen sind. Andere Ausführungsformen sind möglich und Änderungen können an den Ausführungsformen innerhalb der Idee und dem Wirkungsbereich der hierin enthaltenen Lehre und zusätzlicher Felder, in denen Ausführungsformen von signifikanten Nutzen wären, vorgenommen werden. Bei der Beschreibung eines bestimmten Merkmals, einer bestimmten Struktur oder einer bestimmten Eigenschaft im Zusammenhang mit einer Ausführungsform wird weiterhin unterstellt, dass Fachleute die Kenntnis besitzt, ein solches Merkmal, eine Struktur oder Eigenschaft im Zusammenhang mit anderen Ausführungsformen zu bewerten, unabhängig davon, ob diese ausführlich beschrieben sind oder nicht.
  • Die vorliegende Offenlegung ist im Allgemeinen auf Verfahren, Systeme und Artikel zur Herstellung der Kompression von Bildern ausgerichtet. Ausführungsformen, einschließlich der hierin speziell offengelegten, erzielen eine verlustlose oder nahezu verlustlose Bildkompression, wobei auch erhebliche Vorteile bezüglich der Verarbeitungseffizienz, Bildqualität und Speicherung realisiert werden. Einige Unterschiede zwischen der derzeit populären PNG-Bildkompression und den Ausführungsformen sind rein illustrativ.
  • Ausführungsformen generieren getrennte Sätze von Entropiecodes für Bereiche des Eingangsbildes, die ähnliche Statistiken aufweisen. Die jeweiligen erzeugten Entropiecodes werden in einem Bild mit Sub-Auflösung gespeichert (z. B. Bilder mit niedriger Auflösung, wobei diese somit kleiner als das Eingangsbild sind), diese werden dann zur Steuerung der Entropiekodierung der Pixel im Eingangsbild verwendet. Auf diese Weise werden die Entropiemerkmale der Pixel, die sich in der Nähe des zweidimensionalen Raumes des Bildes befinden, vorteilhafterweise in den Ausführungsformen verwendet. Im Gegensatz hierzu kodiert PNG die Entropie für Blöcke linearen Speichers, d. h., das Bild wird zu einem Byte-Stream und wird dann entropiekodiert. Die Entropiemerkmale in zweidimensionaler Nähe im Eingangsbild werden in PNG nicht effektiv genutzt, da der lineare Byte-Stream entropiekodiert ist. Darüber hinaus können die Ausführungsformen durch die Verwendung eines Sub-Auflösungsbildes zur Spezifizierung von Entropiecodes für die verschiedenen Bereiche bei dem Dekodiervorgang Entropiecodes aufwandeffektiver ändern.
  • In Bezug auf die räumliche Vorhersage werden Ähnlichkeiten, die in der zweidimensionalen Nähe in einem Bild vorhanden sind, in den Ausführungsformen effektiver zur Spezifikation eines räumlichen Prädiktors für jeden rechteckigen Block genutzt. Die räumlichen Prädiktoren sind in einem Sub-Auflösungsbild gespeichert, das anschließend zur Steuerung der räumlichen Vorhersage verwendet wird. Im Gegensatz hierzu spezifiziert PNG einen räumlichen Prädiktor für jede Zeile des Eingangsbildes, ohne besondere Berücksichtigung der statistischen Ähnlichkeiten von lokalen Regionen.
  • Ausführungsformen nutzen die Korrelationen zwischen den verschiedenen Farbkanälen mittels eines Kreuz-Farbkomponentenprädiktors zur Vorhersage räumlicher Vorhersagefehler. Ausführungsformen kodieren jeden Farbkanal mit einem separaten Entropiecode, um Wechselbeziehungen zwischen Komponenten mit gleicher Farbe im Eingangsbild vorteilhaft zu nutzen. PNG verwendet einen gemeinsamen Entropiecode für alle Farbkanäle.
  • Während PNG eine statische Farbpalette definiert, führen Ausführungsformen lokal definierte Farbpaletten für Eingangsbildbereiche ein. Die Palette wird dynamisch mit einer Hash-Technik generiert, die zu verbesserten Farbeigenschaften führen kann.
  • Darüber hinaus verwenden Ausführungsformen Sub-Auflösungsbilder zur Steuerung der verschiedenen Aspekte der Bildkompression und Entropiekodierung. Die Sub-Auflösungsbilder können mit den gleichen Techniken verwendet werden, die zur Speicherung des Eingangsbildes verwendet werden.
  • 17 veranschaulichen verschiedene Aspekte der Ausführungsformen des Kompressionsverfahrens. 810 und 13 veranschaulichen Systeme gemäß den Ausführungsformen.
  • 1 veranschaulicht ein Verfahren 100 zur Bildkompression und Entropiekodierung gemäß einer Ausführungsform. Das Verfahren kann z. B. mittels eines Systems, wie nachfolgend unter Bezug auf die 810 und 13 beschrieben, implementiert werden. Das Verfahren 100 kann nicht in der angegebenen Reihenfolge auftreten und kann nicht unbedingt alle Schritte erfordern.
  • Bei Schritt 102 erfolgt die Vorverarbeitung eines Eingangsbildes. Das Eingangsbild kann ein digitalisiertes Foto oder ein anderes digitales Bild sein. Das Eingangsbild kann im Speicher als eine logische rechteckige Anordnung von Pixeln repräsentiert werden. Ein Pixel kann ein oder mehrere Bytes umfassen. Entsprechend einer Ausführungsform beinhaltet ein Pixel 4 Bytes und die Rot-, Grün-, Blau- und Alpha-Kanäle. Der Vorverarbeitungsschritt 102 kann die Pixel des Eingangsbildes derart verarbeiten, dass das Eingangsbild nach der Vorverarbeitung eine höhere Kompression erzielt. Gemäß einer Ausführungsform können Alpha-Ersatz, Farbdiskretisierung und Palettenauswahl in Schritt 102 durchgeführt werden. Der Vorverarbeitungsschritt 102 ist in Bezug auf 2 nachfolgend beschrieben.
  • Bei Schritt 104 unterliegt das Eingangsbild oder genauer gesagt das vorverarbeitete Eingangsbild einer räumlichen Vorhersage. Insbesondere bezieht sich, wie Fachleuten bekannt sein wird, die räumliche Vorhersage auf die Vorhersage eines Pixels, basierend auf einem oder mehreren zuvor auftretenden Pixeln. Der Unterschied zwischen vorhergesagtem und aktuellem Wert wird in der Pixelposition im räumlich vorhergesagten Bild vermerkt. Darüber hinaus wird ein Sub-Auflösungsbild der ausgewählten räumlichen Prädiktoren gespeichert.
  • Das Eingangsbild kann in rechteckige Bereiche mit einer vorgegebenen Größe („Blöcke”) aufgeteilt werden. Die Blöcke können jede Größe besitzen, wie z. B. 16×16 Pixel. Blöcke der gleichen oder unterschiedlicher Größen können bei der räumlichen Vorhersage, der Farbraumtransformation und der Entropiecodeauswahl verwendet werden.
  • Für jedes Pixel in jedem Block wird versuchsweise einen Satz räumlicher Prädiktoren angewendet. Der versuchsweise angewendete Satz räumlicher Prädiktoren ist vorkonfiguriert oder kann dynamisch ermittelt werden. Gemäß einer Ausführungsform beinhaltet der Satz räumlicher Prädiktoren einzelne Pixel oder Kombinationen von Pixeln, die sich auf der linken Seite des aktuellen Pixels (der Begriff „aktuelles Pixels” wird verwendet, um auf ein gerade bearbeitetes Pixel zu verweisen) bzw. Pixel, die sich eine oder mehrere Zeilen oberhalb des aktuellen Pixels befinden. Es muss beachtet werden, dass Pixel, die sich entweder auf der linken Seite oder über dem aktuellen Pixel befinden, entsprechend der Verarbeitungsfolge der Pixel in einem Bild von links nach rechts und von oben nach unten vor dem aktuellen Pixel verarbeitet werden.
  • Der für einen Block ausgewählte räumliche Prädiktor kann der räumliche Prädiktor sein, der zur geringsten Summenentropie in den Unterschieden zwischen den räumlich vorhergesagten Werten und den jeweiligen aktuellen Werten der Pixel im Block führt. So werden in Ausführungsformen räumliche Prädiktoren auf einer Art und Weise bestimmt, die die Entropie lokal auf jeden Block optimiert.
  • In einigen Ausführungsformen werden Kriterien bei der Auswahl des räumlichen Prädiktors für den aktuellen Block berücksichtigt, die den Absolutwert der Unterschiede zwischen räumlichen vorhergesagten Werten und aktuellen Werten minimieren sowie eine Tendenz zugunsten vorbestimmter benachbarter Pixel als Prädiktor bzw. als Bestandteil des Prädiktors vorziehen. Die Minimierung des Absolutwertes der Unterschiede kann die Entropie global im gesamten Bild reduzieren. Gemäß einer Ausführungsform kann die Minimierung der Absolutwerte auf der Minimierung des Absolutwertes der Differenz für jedes Pixel in einem Block oder nach der Minimierung der Summe des Absolutwertes der Differenz für den Block beruhen. Gemäß einer weiteren Ausführungsform kann die Minimierung der Absolutwerte zumindest teilweise durch eine gewichtete Summe der Vorhandenseinzählungen der Differenzwerte erreicht werden. Die Gewichtung kann z. B. exponentiell oder nach dem Gaußschen Verfahren zugunsten kleiner Absolutwerte gegenüber großer Absolutwerte erfolgen.
  • Die für jeden Block ausgewählten räumlichen Prädiktoren werden dann in einem Sub-Auflösungsbild für den räumlichen Prädiktor vermerkt. Weitere Einzelheiten bezüglich des räumlichen Prädiktors werden in Bezug auf 3 nachfolgend beschrieben.
  • Bei Schritt 106 wird eine Farbraumtransformation des Eingangsbildes ausgeführt. Die Farbraumtransformation des Eingangsbilds kann vor oder nach der räumlichen Vorhersage ausgeführt werden. In den beschriebenen Ausführungsformen wird der Farbraumtransformation ein Zwischenbild übergeben, das die räumlichen Vorhersageunterschiede als Pixelwerte enthält.
  • Die Farbraumtransformation beinhaltet die Ermittlung und Aufzeichnung der Korrelationen zwischen Farbkomponenten. Beispielweise können die Korrelationen zwischen Grün und Rot, Grün und Blau sowie Rot und Blau als Farbkorrelationsfaktoren identifiziert und erfasst werden. Somit kann ein Pixel, der ursprünglich drei separate Farben für Grün, Rot und Blau beinhaltete, nach der Farbtransformation durch den ursprünglichen Farbwert für Grün sowie durch die ermittelten Werte für die Korrelationsfaktoren für Rot und Blau vertreten werden. Rot kann als ein Korrelationsfaktor der Beziehung Rot zu Grün und Blau kann als ein oder mehrere Korrelationsfaktoren im Zusammenhang mit Blau zu Rot oder als ein Korrelationsfaktor der Beziehung Blau zu Grün dargestellt werden.
  • Die Korrelationsfaktoren werden in einem Sub-Auflösungsbild gespeichert. Die Farbwerte im Eingangsbild werden geändert, um die Vorhersagefehler für Rot und Blau, basierend auf den jeweiligen Korrelationsfaktoren, zu beinhalten. Die Beschreibung der Farbraumtransformation erfolgt in Bezug auf 4 nachstehend auf ausführliche Art und Weise beschrieben, auf der Recheneinrichtung für eine zuvor festgelegte Dauer aufrechterhalten werden.
  • Bei Schritt 108 erfolgt eine erste Pixel-basierte Kompression des Eingangsbildes. In der hier beschriebenen Ausführungsform wird der ersten Pixel-basierten Kompression das Eingangsbild übergeben, das bereits der räumlichen Vorhersage- und Farbtransformationsverarbeitung unterzogen wurden. Schritt 108 kann jedoch an anderen Positionen im Zuge des Verfahrens 100 ausgeführt und daher kann das Eingangsbild den Vor- oder Nachbearbeitungsschritten 104 und 106 in anderen Ausführungsformen unterzogen werden.
  • Für jedes Pixel fügt die erste Pixel-basierte Kompression entweder eine Rückwärtsreferenz, den Pixel oder einen Palettenverweis ein. Fachleute auf dem Gebiet werden erkennen, dass die Kompression durch das Einfügen von Rückwärtsreferenzen in konventionellem LZ77, basierend auf Bytes, ausgeführt wird. Im Gegensatz zu LZ77 basiert das Einfügen der Rückwärtsreferenzen in Ausführungsformen auf Pixeln. Die Pixel-basierte Kompression ermöglicht die bessere Nutzung zweidimensionaler Nähemerkmale im Bild zur Verbesserung der Kompression. Gemäß einer Ausführungsform kann eine Palette (hierin als „Neue Farbpalette” bezeichnet) während der Pixel-basierten Kompression dynamisch gefüllt werden. Die erste Pixel-basierte Kompression des Eingangsbildes ist in Bezug auf 5 nachfolgend beschrieben.
  • Bei Schritt 110 wird das komprimierte Eingangsbild als Ausgabe von Schritt 108 einer zweidimensionalen Regiontransformation unterzogen. Die zweidimensionale Regiontransformation identifiziert die Positionsinformationen in dem komprimierten Bild und kodiert diese Positionsinformationen mit einem Code, der einer entsprechenden zweidimensionalen Entfernung entspricht. So kann beispielsweise eine erste Rückwärtsreferenz während der Kompression (z. B. bei Schritt 108) als Pixelentfernung eingefügt werden. Die zweidimensionale Regiontransformation kann die Pixelentfernung mit einem kurzen Code für eine entsprechende zweidimensionale Entfernung ersetzen. Eine vorkonfigurierte zweidimensionale Regioncodetabelle gibt die Beziehung zwischen den jeweiligen kurzen Codes und den gewählten entsprechenden relativen Pixelentfernungen an. Gemäß einer Ausführungsform gibt die vorkonfigurierte Tabelle kurze Codes für eine 16×8-Pixel-Umgebung des aktuellen Pixels an. Diese kurzen Codes sind durch ihre euklidische Distanz zum aktuellen Pixel angeordnet. Mittels der kurzen Codes für unmittelbar benachbarte Bereiche ermöglicht zum Beispiel einen einfacheren (in Bezug auf die Bits) Verweise auf Pixel aus einer oder mehreren unmittelbar darüberliegenden Zeilen.
  • Bei Schritt 112 werden Entropiecodes bestimmt und ein Sub-Auflösungsbild für Entropiecodes aufgezeichnet. Entropiecodes werden für lokale Bereiche (z. B. Blöcke oder Cluster von Blöcken) des Bildes bestimmt, die ähnliche Statistiken aufweisen. Die Entropiecodes oder die zur Kodierung jedes Pixel verwendeten Verweise auf Entropiecodes werden in einem Sub-Auflösungsbild als Entropie-Sub-Auflösungsbild bezeichnet. Die Entropiecode-Bestimmung ist im Zusammenhang mit 6 nachfolgend beschrieben.
  • Schritt 114 ist das entropiekodierte Eingangsbild. Gemäß einer Ausführungsform kann die Eingabe für die Entropiekodierung das Eingangsbild, das einer räumlichen Vorhersage, Farbtransformation, Pixel-Kompression und der zweidimensionalen Regiontransformation unterzogen wurde, sein.
  • Die Entropiekodierung arbeitet pixelweise auf dem Eingangsbildpixel in einer von links nach rechts und von oben nach unten gerichteten Abarbeitungsfolge. An jeder Stelle des Bildes wird eine Entropiekodierung bestimmt, basierend auf einen im Entropie-Sub-Auflösungsbild verwiesenen Entropiecode. Wie in Bezug auf die nachfolgende 6 beschrieben, wird ein Entropiecodesatz für jeden Block des Eingangsbildes bestimmt. Ein Entropiecodesatz kann die entsprechenden Entropiecodes für Farben, Entfernungen und dergleichen beinhalten. Das Entropie-Sub-Auflösungsbild kann den für den entsprechenden Pixel im Eingangsbild zu verwendenden Entropiecodesatz angegeben. Der Entropiecode wird, basierend auf den Block des aktuellen Pixels, aufgerufen. Entropiecodes können z. B. auf Huffman-Codes und arithmetische Codes basieren.
  • Bei Schritt 116 wird das entropiekodierte komprimierte Bild an einen persistenten Speicher ausgegeben oder an eine andere Einheit übertragen. Die Ausgabe des entropiekodierten Bildes kann die Bildung einer komprimierten entropiekodierten Bilddatei beinhalten, wie in Bezug auf 10 beschrieben, was das komprimierte entropiekodierte Eingangsbild, die Sub-Auflösungsbilder und andere benötigte Informationen, die für die Dekompression zur Wiederherstellung des Eingangsbildes erforderlich sind, beinhaltet.
  • 2 zeigt ein Ablaufdiagramm eines Verfahrens 200 zur Vorverarbeitung des Eingangsbilds. Gemäß einer Ausführungsform kann das Verfahren 200 in Schritt 102 des vorstehend beschriebenen Verfahrens 100 verwendet werden. Das Verfahren 200 muss nicht in der angegebenen Reihenfolge ausgeführt werden und muss nicht unbedingt alle Schritte erfordern.
  • Bei Schritt 202 erfolgt der Alpha-Ersatz des Eingangsbildes. Der Alpha-Ersatz ist eine Technik zur Reduzierung der Entropie im Eingangsbild. Beim Alpha-Ersatz werden einige der Alpha-Werte, wie z. B. einzigartige Alpha-Werte oder solche, die nur selten im Bild vorhanden sind, durch häufiger im Bild vorhandene Alpha-Werte ersetzt. Gemäß einer Ausführungsform werden beispielsweise auch transluzente Werte besitzende besondere Farbwerte, wie jene, die in Bildformaten, wie PNG, TIFF und GIF, vorhanden sind, verarbeitet, um die ursprünglich vorhandenen Transluzenzwerte zu entfernen und um diese auf das Einschließen entsprechender spezifischer Transluzenzwerte zu korrigieren. Dieses Verfahren wird zur Reduzierung der Entropie im Alpha-Kanal verwendet.
  • Eine beliebige Anzahl von Pixeln kann als transluzent markiert und somit zum Gegenstand eines Alpha-Ersatzes werden lassen. Gemäß einer Ausführungsform wird die Transluzenz nicht als separate Farbwerte für Rot, Grün und Blau, sondern stattdessen als Versatz zum entsprechenden Alpha-Wert angegeben. Die Angabe von transluzentem Rot, Grün und Blau als Versatz zu Alpha ermöglicht der Ausführungsform die Beibehaltung der Transluzenzinformationen, auch wenn vielfache Alpha-Informationen für eine bestimmte RGB-Dreiergruppe vorhanden sind. Als Nebeneffekt der Verwendung der Angabe eines Versatzes des Alpha-Wertes kann die Entropie des Alpha-Kanals reduziert werden.
  • Bei Schritt 204 kann die Farbdiskretisierung ausgeführt werden. Gemäß einer Ausführungsform werden die Farbdiskretisierung und Kompaktifizierung zum Packen des dynamischen Bereichs von Farben verwendet, sodass die Vorhersage nur oder hauptsächlich solche bereits im Originalbild vorhandene Farbwerte bzw. Vorhersagefehlerwerte erbringen würde. Dies vermeidet oder reduziert die Notwendigkeit, dass das Vorhersagebild über mehr eindeutige Symbole verfügt, als im ursprünglichen Bild vorhanden sind.
  • So kann beispielsweise ein Prädiktor in Ausführungsformen, bei denen keine Farbdiskretisierung und Kompaktifizierung eingesetzt werden, zwei Farbwerte berücksichtigen und den Durchschnitt dieser beiden berücksichtigten Werte als die vorhergesagte Farbe für einen Pixel vorhersagen. Der durchschnittliche Wert kann jedoch keine Farbe sein, die irgendwo im Originalbild vorhanden ist, und daher würde das vorhergesagte Signal zu einem neuen Symbol führen. Das Packen des Dynamikbereichs der Farben, bei dem die Möglichkeit von Vorhersagen bzw. Vorhersagefehlern zu einer Erstellung neuer Werte führt, die nicht bereits im Originalbild vorhanden sind, führt zur Minimierung zusätzlicher neuer Symbole. Folglich kann das vorhergesagte Bild zu einer reduzierten Entropie im Vergleich zu konventionellen Techniken führen.
  • Bei Schritt 206 wird eine optionale Palettenauswahl ausgeführt. Gemäß einer Ausführungsform wird eine Palettenauswahl ausgeführt, wenn nur wenige Farben im Bild kodiert werden müssen. Die Palettenauswahl ermöglicht das Packen mehrerer Pixel in einen einzigen Pixel.
  • 3 veranschaulicht ein Verfahren 300 zur Durchführung der räumlichen Vorhersage. Gemäß einer Ausführungsform kann das Verfahren 300 in Schritt 104 des vorstehend beschriebenen Verfahrens 100 verwendet werden. Das Verfahren 300 muss nicht in der angegebenen Reihenfolge ausgeführt werden und muss nicht unbedingt alle Schritte erfordern.
  • Bei Schritt 302 werden räumliche Prädiktoren bestimmt. Wie vorstehend in Bezug auf Schritt 104 beschrieben, werden offengelegte Ausführungsformen zur Ermittlung räumlicher Prädiktoren zur Minimierung der Vorhersageunterschiede in einem Block verwendet. In einer weiteren Ausführungsform werden andere Kriterien, wie beispielsweise, aber nicht beschränkt auf diese, die Minimierung der Entropie räumlicher Vorhersageunterschiede innerhalb des Blocks, die Minimierung des Absolutwertes räumlicher Vorhersageunterschiede und die Gewichtung der Auswahlkriterien zugunsten benachbarter Pixelblöcke verwendet, um die Auswahl des räumlichen Prädiktors für lokale Charakteristiken des Blocks und optional der globalen Eigenschaften zu optimieren.
  • Wie vorstehend beschrieben, kann das/können die zur Vorhersage des aktuellen Pixels ausgewählte(n) Pixel von einer beliebigen der zuvor verarbeiteten Pixelpositionen stammen. Gemäß einer Ausführungsform gibt eine vorkonfigurierte räumliche Prädiktor-Codetabelle einen Code für jede von einer Vielzahl von Pixel-Positionen und Pixel-Kombinationen an. So kann beispielsweise eine räumliche Prädiktor-Codetabelle einen Code für keine Vorhersage, eine Vielzahl von Codes zum Kopieren einzelner Pixel und eine Vielzahl von Codes zur Durchschnittsbildung von zwei oder mehr Pixeln beinhalten. Somit kann eine Vorhersage für den aktuellen Pixel auf einem oder mehreren Pixeln beruhen.
  • Die das Eingangsbild kodierenden räumlichen Prädiktoren werden auf einer pro Block-Basis, basierend auf einer durch eine oder mehrere der vorstehend beschriebenen Kriterien bestimmten Aufwandfunktion, ausgewählt. In einem Block werden alle Pixel mit dem gleichen ausgewählten räumlichen Prädiktor verbunden.
  • Bei Schritt 304 werden die ausgewählten räumlichen Prädiktoren für jeden Block in einem Sub-Auflösungsbild für räumliche Prädiktoren gespeichert. Ein Pixel in dem Sub-Auflösungsbild stellt einen Block im Eingangsbild dar.
  • Die gleiche Speichertechnik, die zum Speichern von komprimierten entropiekodierten Eingangsbildern verwendet wird, kann zur Speicherung der jeweiligen Sub-Auflösungsbilder verwendet werden. Eine allgemeine Technik zum Speichern von komprimierten entropiekodierten Bildern, einschließlich Sub-Auflösungsbildern, wird nachfolgende mit Bezug auf 7 offengelegt.
  • Bei Schritt 306 wird das Eingangsbild (mit oder ohne Vorverarbeitung) verarbeitet, um die räumlichen Vorhersagen nach dem Sub-Auflösungsbild für räumliche Prädiktoren zu kodieren. Für jeden Pixel in dem Block wird ein vorhergesagter Wert, basierend auf dem entsprechenden, im Sub-Auflösungsbild für räumliche Prädiktoren gespeicherten räumlichen Prädiktor, bestimmt. Der Unterschied zwischen dem vorhergesagten Wert und dem tatsächlichen Wert wird dann in den Pixel kodiert. Im weiteren Verlauf der Ausführung der räumlichen Vorhersage von Pixeln über das Eingangsbild steuert das Sub-Auflösungsbild für räumliche Prädiktoren den angewandten räumlichen Prädiktor für jeden Block.
  • 4 veranschaulicht ein Verfahren 400 zur Farbraumtransformation eines Bildes. Gemäß einer Ausführungsform kann das Verfahren 400 in Schritt 106 des vorstehend beschriebenen Verfahrens 100 verwendet werden. Das Verfahren 400 muss nicht in der angegebenen Reihenfolge ausgeführt werden und muss nicht unbedingt alle Schritte erfordern.
  • Bei Schritt 402 werden Farbkorrelationen ermittelt. Farbkorrelatoren zwischen Farbkomponenten werden auf einer von Block-zu-Block-Basis ermittelt. Für jeden Block werden die Pixel, dies sind insbesondere die Rot-, Grün- und Blau(RGB)-Werte, zur Bestimmung der Korrelationen zwischen diesen analysiert. Gemäß einer Ausführungsform werden Korrelationen zwischen Grün und Rot, Rot und Blau sowie Grün und Blau bestimmt. Farbkorrelatoren werden zur Reduzierung der Entropie der roten und blauen Kanäle verwendet. So reduzieren beispielsweise Ausführungsformen durch die Repräsentation von Rot als ein Faktor des grünen Wertes in diesem Pixel die Entropie des roten Kanals. So können beispielsweise zwei Blöcke betrachtet werden, wobei einer RGB-Verhältnisse von jeweils 8:6:2 und 4:3:0, wie in konventionellen Systemen kodiert, aufweist. Gemäß einer Ausführungsform können diese Informationen als 8:X:Y und 4:X:Y kodiert werden, wobei X und Y Codes für 75% und 25% darstellen. So kann die Farbtransformation die Entropie der roten und blauen Kanäle unter Nutzung der Farbbeziehungen zwischen benachbarten Blöcken reduzieren.
  • Für jeden Block werden einheitliche Farbkorrelatoren bestimmt. Die Korrelatoren für den Block können, beispielsweise basierend auf den durchschnittlichen oder den am häufigsten vorkommenden Farbwerten im aktuellen Block ausgewählt werden. Gemäß einer Ausführungsform können Korrelatoren für einen Block in einer Art und Weise bestimmt werden, die eine die Entropie und die absoluten Werte der roten und blauen Komponenten verbindende Heuristik minimiert. So können beispielsweise alle Werte von Grün bis Rot im Block getestet werden und derjenige mit der niedrigsten Heuristik kann ausgewählt werden. Ebenfalls können alle Kombinationen von Grün zu Blau und von Rot zu Blau im Block geprüft werden und die Kombination mit der niedrigsten Heuristik kann ausgewählt werden. Darüber hinaus können in einigen Ausführungsformen Korrelatorwerte, die ähnlich denen von ausgewählten Korrelatoren von Blöcken sind, die sich oberhalb oder auf der linken Seite des aktuellen Blocks befinden, für die Auswahl leicht bevorzugt werden.
  • Bei Schritt 404 werden die ausgewählten Korrelationsfaktoren in einem Farbkorrelations-Sub-Auflösungsbild gespeichert. Jedes Pixel in dem Farbkorrelations-Sub-Auflösungsbild stellt einen Block im Eingangsbild dar. Jedes Pixel in dem Sub-Auflösungsbild speichert jeweils die Korrelationsfaktoren von Grün zu Rot, Grün zu Blau und Rot zu Blau. Diese Faktoren können in einer Art und Weise gespeichert werden, wobei positive oder negative Korrelationen angegeben werden können.
  • Bei Schritt 406 wird die Farbtransformation im Eingangsbild kodiert. Die roten und blauen Kanäle im Eingangsbild werden jetzt geändert, um die Vorhersagefehler der Farbkorrelationsvorhersage zu repräsentieren. Insbesondere werden die Farbvorhersagen kodiert, wie nachfolgend beschrieben. Grün wird nicht vorhergesagt und ist daher entspricht der gespeicherte Wert dem tatsächlichen Wert von Grün. Rot wird von Grün vorhergesagt, basierend auf dem Grün zu Rot-Korrelationsfaktor, entsprechend dem aktuellen Block, der in der Farbkorrelations-Sub-Bildauflösung angegeben wird. Der Unterschied zwischen den prognostizierten Rotwert, basierend auf dem Farbkorrelationsfaktor und dem zuvor kodierten räumlichen Vorhersagefehler für den Rotanteil, wird jetzt kodiert. Blau kann aus einem oder mehreren Grün- und Rotwerten vorhergesagt werden. Werden sowohl Grün als auch Rot in dem vorhergesagten Blauwert verwendet, wird gemäß einer Ausführungsform der Mittelwert der grünen, blauen und roten, blauen Vorhersagen als vorhergesagter Wert für die Blaukomponente übernommen. Der Modus, in dem Blau vorhergesagt wird, kann vorkonfiguriert werden. Somit wird die Kodierung der roten und blauen Kanäle entsprechend den im Farbkorrelations-Sub-Auflösungsbild angegebenen Korrelationsfaktoren gesteuert.
  • 5 veranschaulicht ein Verfahren 500 für die Pixel-basierte Kompression eines Eingangsbildes. Gemäß einer Ausführungsform kann das Verfahren 500 in Schritt 108 des Verfahrens 100 verwendet werden. Die Schritte 502516 veranschaulichen die Verarbeitung eines Bildes durch das Durchlaufen der Pixel in einem Bewegungsmuster von links nach rechts und von oben nach unten. Das Verfahren 500 muss nicht in der angegebenen Reihenfolge ausgeführt werden und muss nicht unbedingt alle Schritte erfordern.
  • Bei Schritt 502 wird der nächste zu verarbeitende Pixel ausgewählt. Die Verarbeitung würde in der Regel mit dem oberen linken Pixel beginnen. In anderen Iterationen wird ein folgender Pixel ausgewählt. Der ausgewählte nächste Pixel wird als aktuelles Pixel bezeichnet.
  • Die 504508 Schritte bestimmen den Aufwand für jede Operation, die auf den aktuellen Pixel bei der Kompression des Eingangsbilds ausgeführt werden kann. Gemäß einer Ausführungsform können drei separate Optionen berücksichtigt werden: (1) Einfügen einer Rückwärtsreferenz, (2) Einfügen der Pixel und 3) Einfügen eines Paletteneintrags.
  • Eine „Rückwärtsreferenz” zeigt an, dass ein bestimmter oder mehrere Pixel an die Position des aktuellen Pixels zur Komprimierung des Bildes kopiert werden können. Ist zum Beispiel das aktuelle Pixel der Anfang einer Sequenz von drei Pixeln alle von der Farbe C, und gab es zuvor an einer verarbeiteten Stelle 200 Pixel vor dem aktuellen Pixel einen Satz von drei Pixeln der Farbe C, können Ausführungsformen eine Rückwärtsreferenz einfügen, die einen Verweis auf die 200 Pixel zuvor angibt, die dem aktuellen Pixel entsprechen, und eine Länge einer Sequenz von 3 Pixeln, beginnend bei dem referenzierten Pixel. Eine Rückwärtsreferenz wird durch eine Entfernung und einen Längenwert angegeben. Entfernung bezieht sich auf die Entfernung zwischen aktuellem Pixel und referenziertem Pixel, und Länge bezieht sich auf die Anzahl der Pixel am aktuellen Pixel, zu dem der referenzierte Pixel kopiert werden kann.
  • Einfügen des Pixels bezieht sich auf den aktuellen, in das komprimierte Bild einzufügenden Pixel. Dies kann in einigen Situationen die Operation mit dem geringsten Aufwand für einen Pixel sein.
  • Das Einfügen eines Paletteneintrags bezieht sich auf das Einfügen eines Indexes in das komprimierte Bild. In einigen Ausführungsformen kann das Einfügen eines Paletteneintrags auch das Einfügen der entsprechenden Farbe in eine Palette beinhalten. Die entstehende Farbpalette wird während der Bearbeitung des Bildes durch die Pixel-basierte Kompression dynamisch erstellt. An jeder Pixelstelle wird der Aufwand für das Einfügen des Farbwertes in die entstehende Palette und das Einfügen des entsprechenden Palettenindexes in das komprimierte Bild berücksichtigt. Die Größe der entstehenden Palette kann vorkonfiguriert werden. Gemäß einer Ausführungsform wird eine 32-Bit-Ganzzahl, die Rot-, Grün-, Blau- und Alpha-Werte repräsentiert mit einem vorgegebenen Multiplikator multipliziert. Basierend auf der Größe werden einige Bits der resultierenden Ganzzahl als Index in einem Array verwendet, das die neue Farbpalette darstellt. Zum Beispiel können für eine entstehende Palettengröße von 128 7 Bits als Index-Wert verwendet werden. Für jeden Farbwert eines unkomprimierten Pixel-Streams kann ein Index auf verschiedene Arten bestimmt werden. Gemäß einer Ausführungsform wird, wie vorstehend beschrieben, der Index einer Farbe, basierend auf 7 angrenzende aufeinander folgende Bits, von einer vordefinierten Anfangsposition der Repräsentation des Farb-Bytes ermittelt. Gemäß einer weiteren Ausführungsform kann eine Modulo-Berechnung des Farbwertes zur Bestimmung eines Hash-Indexes für die entstehende Palette ausgeführt werden. Gemäß einer Ausführungsform kann eine entstehende Farbpalette für das Eingangsbild verwendet werden. In anderen Ausführungsformen kann eine separate entstehende Palette für jeweilige Bereiche definiert werden. So kann beispielsweise eine neue entstehende Palette für jeweils 32 Pixel entlang der X-Achse des Eingangsbildes erstellt werden.
  • Bei Schritt 504 wird der Aufwand für das Einfügen einer Rückwärtsreferenz für den aktuellen Pixel bestimmt. Wie vorstehend beschrieben, beinhaltet eine Rückwärtsreferenz das Einfügen einer Entfernung zu einem Pixel und eine Länge. Die Länge bezieht sich auf die Anzahl der Pixel, die ausgehend von den referenzierten Pixel kopiert werden können. Der Aufwand beinhaltet den Aufwand für das Einfügen der Entfernung und der Länge an der Position im komprimierten Bild, die dem aktuellen Pixel entspricht. Dieser Aufwand für das Einfügen der Bits wird in Bezug auf die Einsparung des Aufwandes, keine Anzahl der von der Rückwärtsreferenz kopierbaren Pixel, beginnend mit der Position des aktuellen Pixels, zu kopieren, bewertet. Muss zum Beispiel die Rückwärtsreferenz 5 Bytes kodieren und wird eine Länge von 3 Pixeln angezeigt, dann beträgt der Aufwand im Falle von Pixeln mit einer Größe von einem Byte für das Einfügen der Rückwärtsreferenz 5 – 3 = 2 Bytes. Gemäß einer anderen Ausführungsform basiert der Aufwand für die Rückwärtsreferenz nur auf dem Einfügeaufwand, d. h., muss die Rückwärtsreferenz 5 Bytes kodieren, dann beträgt der Einfügeaufwand 5 Bytes.
  • Gemäß einer Ausführungsform wird die längste Rückwärtsreferenz ausgewählt. Gemäß einer anderen Ausführungsform werden zwei oder mehr Rückwärtsreferenzen, möglicherweise mit unterschiedlichen Entfernungs- und Längeneigenschaften, verglichen und die mit dem geringsten Aufwand ausgewählt.
  • Bei Schritt 506 wird der Aufwand zum Einfügen des Pixels in das Eingangsbild ermittelt. Dieser Aufwand kann als Bit-Aufwand zum Einfügen eines Pixel betrachtet werden.
  • Bei Schritt 508 wird der Aufwand zum Einfügen eines entstehenden Palettenindexes ermittelt. Der Aufwand für das Einfügen eines entstehenden Paletteneintrags kann als die Größe des Indexeintrags betrachtet werden.
  • Bei Schritt 510 wird, basierend auf der Aufwandermittlung bei den Schritten 504508, der minimale Vorgangsaufwand ermittelt und die minimale Aufwandoperation an der Position des aktuellen Pixels aufgezeichnet. Der Aufwand wird, basierend auf dem Bit-Aufwand, bestimmt.
  • Bei Schritt 512 wird ermittelt, ob das letzte Pixel des Eingangsbildes erreicht wurde. Falls nicht werden die Schritte 502512 für den nächsten Pixel im traversalem Muster wiederholt.
  • Falls bei Schritt 512 festgestellt wird, dass der aktuelle Pixel der letzte Pixel ist, geht die Verarbeitung weiter zu Schritt 514. Bei Schritt 514 wird der Pfad des letzten Pixels zurückverfolgt, um die Umkehr des minimalen Aufwandpfades zu Kompression des Bildes zu ermitteln.
  • Bei Schritt 514 wird der ermittelte Pfad dann zur Ausführung der Kompressionsvorgänge umgekehrt, um den minimalen Aufwandpfad zur Kompression des Bildes zu durchlaufen. Der Pfad kann eine oder mehrere der Kodier-Rückwärtsreferenzen, Kodier-Pixel-Werte und Kodier-Palettenindexwerte an Pixelpositionen beinhalten. Am Ende von Schritt 514 ist die Pixel-basierte Kompression des Eingangsbildes abgeschlossen.
  • 6 veranschaulicht ein Verfahren 600 zur Ermittlung der Entropiecodes. Gemäß einer Ausführungsform kann das Verfahren 600 in Schritt 112 des vorstehend beschriebenen Verfahrens 100 verwendet werden. Das Verfahren 600 muss nicht in der angegebenen Reihenfolge ausgeführt werden und muss nicht unbedingt alle Schritte erfordern.
  • Bei Schritt 602 wird ein Bild zum Entropiekodieren empfangen. Gemäß einer Ausführungsform durchlief das empfangene Bild ein Pixel-basierten Kompressionsvorgang. Vor der Pixel-basierten Kompression kann das Eingangsbild einer räumlichen Vorhersage und Farbraumtransformation unterzogen worden sein. Das Verfahren 600 ist jedoch auch auf andere Arten von Bildern anwendbar.
  • Bei Schritt 604 werden Blöcke des Eingangsbildes ermittelt. Gemäß einer Ausführungsform werden Blöcke der Größe 16×16 bestimmt. Andere Blockgrößen sind möglich.
  • Bei Schritt 606 werden Statistiken für die jeweiligen Blöcke ermittelt. Statistiken können separat für Rot-, Grün-, Blau und Alpha-Komponenten, Entfernungscodes, Rückwärtsreferenz-Längencodes und Paletten-Hash-Werte bestimmt werden. Statistiken können im Histogrammformat ermittelt werden, wobei die Anzahl der Pixel für jede Statistik gezählt werden kann.
  • Bei Schritt 608 werden die Blöcke nach der Ähnlichkeit der Statistiken der jeweiligen Blöcke zusammengefasst. Gemäß einer Ausführungsform wird eine stochastische Cluster-Bildung ausgeführt. Die stochastische Cluster-Bildung kann zunächst unter Berücksichtigung jedes Blocks als Cluster und anschließend der iterativen Auswahl eines Cluster nach dem Zufallsprinzip erfolgen. Dann wird der ähnlichste Cluster unter einer ausgewählten Anzahl von Cluster ermittelt und ausgewählte und gefundene Cluster werden kombiniert. Dieser Cluster-Bildungsvorgang kann fortgesetzt werden, bis die Anzahl der Cluster auf einen festgelegten Cluster-Anzahlschwellenwert reduziert ist. Die Cluster-Schwellenwertanzahl kann ebenfalls, basierend auf einer Aufwandfunktion, bestimmt werden. Zum Beispiel kann der Aufwand zum Speichern eines Entropiecodes für jeden Cluster modelliert werden, wobei die Größe des jeweiligen Entropiecodes von der Verteilung der Blöcke in den Cluster abhängt. In einer Ausführungsform wird zum Beispiel der stochastische Algorithmus zur Reduzierung der Anzahl der Cluster von etwa 1000 auf etwa 50 verwendet.
  • Bei Schritt 610 wird der Cluster-Bildungsvorgang verfeinert. Dieser Schritt wird zur Verfeinerung stochastisch ermittelter Cluster durch Verschieben von Blöcken (oder der Blockstatistik) zu Cluster zur Verbesserung der Genauigkeit der Übereinstimmung zwischen dem Block und seinem Cluster verwendet. In diesem Schritt kann ein Cluster-Bildungsalgorithmus wie ein k-Mittelwertalgorithmus verwendet werden. Gemäß einer weiteren Ausführungsform wird jeder Block zur Bestimmung des optimalen Clusters für diesen analysiert und in diesen verschoben, wodurch die erwartete Anzahl der auszugebenden (zu speichernden) Bits minimiert wird. Nach jeder Verschiebung werden die Statistiken zur Kompensierung des Verschiebens angepasst. Dieser Vorgang kann für eine vorgegebene Anzahl von Male durchgeführt werden oder während sich die erwartete Anzahl auszugebender Bits für alle Blöcke weiter verringert, bis eine verfeinerte Cluster-Bildung erzielt wird.
  • Bei Schritt 612 wird ein Entropiecode für jeden Cluster bestimmt. Da in den Cluster Blöcke mit ähnlichen Eigenschaften zusammen gruppiert werden, werden die daraus resultierenden Entropiecodes speziell für die Eigenschaften der jeweiligen Clusters bestimmt. Darüber hinaus werden innerhalb jedes Clusters separate Entropiecodes für die Grün-, Rot-, Blau-, Alpha- und Entfernungskomponenten bestimmt. In Ausführungsformen kann der gleiche Entropiecode für die Grün-, Palettenindex- und Längenkomponenten verwendet werden. Jede Technik kann zur Bestimmung eines Entropiecodes verwendet werden, wie, aber nicht beschränkt auf einen Huffman-Code, der für jeden Cluster speziell ist und innerhalb jedes Clusters für jede Farb- und Entfernungskomponente.
  • Bei Schritt 614 wird der Entropiecode für jeden Block ermittelt. Insbesondere ein Satz von Entropiecodes („Entropiecodesatz”), bestehend aus separaten Entropiecodes für Rot-, Grün-, Blau-, Alpha-Farbkomponenten, Rückwärtsreferenz-Längencodes, Entfernungscodes und für Paletten-Hash-Werte. Dies kann durch die Ermittlung des Clusters, zu dem ein bestimmter Block gehört, ermittelt werden.
  • Bei Schritt 616 werden die Entropiecodesätze gespeichert und der auf jedes Pixel angewendete Entropiecode wird in einem Entropiecode-Sub-Auflösungsbild angegeben. Im Entropiecode-Sub-Auflösungsbild wird beispielsweise ein Pixel für jeden 16×16 Block im Eingangsbild gespeichert. Jeder Pixel in dem Entropiecode-Sub-Auflösungsbild gibt den Satz der Entropiecodes an, der auf den entsprechenden Block im Eingangsbild angewendet werden soll. So kann beispielsweise die Grünkomponente eines Pixels in dem Sub-Auflösungsbild mit einem Verweis auf die Position des entsprechenden Satzes von Entropiecodes in dem Satz der gespeicherten Entropiecodes aktualisiert werden. Der Satz von Entropiecodes kann fünf separate Entropiecodes beinhalten: Entropiecode für Grün, Pixel-Index, Rückwärtsreferenzlänge und der Entropiecode für die Rot-, Blau-, Alpha- und Entfernungskomponenten. Jeder dieser Entropiecodes kann separat mittels Huffman-Kodierung und Lauflängenkodierung kodifiziert werden.
  • Das Entropiecode-Sub-Auflösungsbild kann mit der gleichen Technik, die zur Speicherung der Sub-Auflösungsbilder und des komprimierten entropiekodierten Eingangsbildes verwendet wird, gespeichert werden. Die Beschreibung der Speicherung der Bilder erfolgt in Bezug auf 7 offengelegt.
  • 7 veranschaulicht ein Verfahren 700 zur Speicherung der Bilder in einem komprimierten und entropiekodierten Format. Gemäß einer Ausführungsform kann das Verfahren 700 zur Speicherung des komprimierten entropiekodierten Eingangsbildes sowie der Sub-Auflösungsbilder (z. B. des Entropie-Sub-Auflösungsbildes, des Farbkorrelations-Sub-Auflösungsbildes und des Sub-Auflösungsbild für räumliche Prädiktorenes) verwendet werden. Das Verfahren 700 muss nicht in der angegebenen Reihenfolge ausgeführt werden und muss nicht unbedingt alle Schritte erfordern.
  • Bei Schritt 702 unterliegt ein Eingangsbild der Pixel-basierten Kompression. Eine beispielhafte Pixel-basierte Kompression, und zwar in Aspekten ähnlich zu LZ77, wird auf Pixel anstelle von Bytes angewandt. 5 zeigt ein beispielhaftes Pixel-basiertes Kompressionsverfahren. Die Ausgabe der Pixel-basierten Kompression ist ein Pixel-Stream mit Pixeln, Rückwärtsreferenzen und Palettenindexwerten.
  • Bei Schritt 704 wird die Ausgabe der Pixel-basierten Kompression einer zweidimensionalen Regiontransformation unterzogen. Die zweidimensionale Regiontransformation wandelt die Entfernungen in Pixel-Entfernungen zu Codes um, die auf der zweidimensionalen Nähe basieren. Eine beispielhafte zweidimensionale Transformation wird in Bezug auf Schritt 110 des Verfahrens 100 vorstehend beschrieben.
  • Bei Schritt 706 wird das Eingangsbild in Blöcke (von z. B. 16×16 Pixeln) unterteilt und Statistiken für jeden Block ermittelt. Die Statistiken können separat für Rot-, Grün-, Blau-, Alpha- und Entfernungskomponenten erstellt werden. Statistiken können auch für Längen (von Rückwärtsreferenzen) und Pixel-Indexwerte erstellt werden. Gemäß einer Ausführungsform können Statistiken für Grün-, Längen- und Pixel-Indexwerte kombiniert werden. Die Bestimmung von Statistiken für Blöcke in Bezug auf die Schritte 604606 des Verfahrens 600 wird vorstehend beschrieben.
  • Bei Schritt 708 werden die Blöcke nach Ähnlichkeit der Statistiken zusammengefasst und in Schritt 710 werden die Cluster zur Verbesserung der Übereinstimmung zwischen den Blöcken und den jeweiligen Cluster verfeinert. Bei Schritt 712 werden Entropiecodes für Cluster ermittelt. Die Beschreibung der Cluster-Bildung von Blöcken, die Verfeinerung von Cluster und die Bestimmung der Entropiecodes für die jeweiligen Cluster erfolgt in Bezug auf die jeweiligen Schritte 608, 610 und 612 des Verfahrens 600.
  • Bei Schritt 714 wird das Entropie-Sub-Auflösungsbild gespeichert. Zur Speicherung des Entropie-Sub-Auflösungsbildes kann dieselbe Speichertechnik verwendet werden, wie in Verfahren 700 definiert. Somit definiert das Verfahren 700 die rekursive Speicherung von Bildern. Eine beispielhafte zweidimensionale Transformation wird vorstehend in Bezug auf Schritt 616 des Verfahrens 600 beschrieben.
  • Bei Schritt 716 wird das Eingangsbild entropiekodiert. Eine Entropiekodierung für das Ausgangsbild wird vorstehend in Bezug auf 114 Schritt des Verfahrens 100 beschrieben.
  • 8 stellt einen Kodierer 800 gemäß einer Ausführungsform dar. Der Kodierer 800 umfasst ein Vorverarbeitungsmodul 802, einen räumlichen Prädiktor 804, einen Farbraumtransformator 806, einen Pixel-Kompressor 808, ein Transformationsmodul für zweidimensionale Regionen 810, ein Entropiecode-Generierungsmodul 814, ein Modul zum Speichern des Bildes 812 und ein Ausgabemodul für die komprimierte Bilddatei 816.
  • Das Vorverarbeitungsmodul 802 ist zur Vorverarbeitung von Bildern konfiguriert, damit diese besser komprimiert werden können. Das Vorverarbeitungsmodul 802 wird beispielsweise zur Verringerung der Entropie im Bild verwendet, bevor das Bild komprimiert wird. Das Vorverarbeitungsmodul 802 beinhaltet einen Alpha-Ersatz-Mapper 822, einen Farb-Discretizer 824 und eine Palettenauswahl 826.
  • Der Alpha-Ersatz-Mapper 822 ist zum Entfernen und Ersetzen ausgewählter Alpha-Werte konfiguriert. Gemäß einer Ausführungsform kann das Alpha-Ersatz-Modul in Schritt 202 des Verfahrens 200 verwendet werden.
  • Der Farb-Discretizer 824 ist zur Reduzierung der sich daraus ergebenden Entropie oder zur Eliminierung oder Verringerung der vorhergesagten Werte, die sich nicht im ursprünglichen Bild befanden, durch die Anpassung des dynamischen Wertebereichs für Prädiktoren konfiguriert. Gemäß einer Ausführungsform kann der Farb-Discretizer 824 in Schritt 204 des Verfahrens 200 implementiert werden.
  • Die Palettenauswahl 826 ist zur Verringerung der Entropie der gemeinsamen Verteilungen zwischen benachbarten Pixeln, wenn ein Bild nur weniger als eine vorbestimmte Anzahl von Farben durch das engere Packen mehrerer Farben in die Datenstrukturen aufweist, konfiguriert. Gemäß einer Ausführungsform kann die Palettenauswahl 826 in Schritt 206 des Verfahrens 200 implementiert werden.
  • Der räumliche Prädiktor 804 ist zur Implementierung der räumlichen Vorhersage konfiguriert. Die räumliche Vorhersage wird beispielsweise in Bezug auf Schritt 104 des Verfahrens 100 und in Bezug auf das Verfahren 300 beschrieben.
  • Der Farbraumtransformator 806 ist zur Implementierung der Farbraumtransformation konfiguriert. Die Farbraumtransformation ist beispielsweise vorstehend in Bezug auf Schritt 106 der Verfahren 100 und 400 beschrieben. Die vorstehend genannten Ausführungsformen sind in Bezug auf das RGB-Farbmodell beschrieben. Andere Farbmodelle, wie z. B., aber nicht beschränkt auf das YUV-Farbmodell können ebenfalls verwendet werden.
  • Der Pixel-Kompressor 808 ist zur Durchführung einer Pixel-basierten Kompression des Eingangsbildes konfiguriert. Gemäß einer Ausführungsform ist der Pixel-Kompressor 808 zur Implementierung einer Pixel-basierte Kompression konfiguriert, wie in Bezug auf Schritt 702 des Verfahrens 700 beschrieben. Der Pixel-Kompressor 808 beinhaltet ein Rückwärtsreferenz-Einfügemodul 832, ein Greedy-Kompressormodul 834, ein Minimalaufwand-Kompressormodul 836 und ein Paletten-Einfügemodul 838.
  • Das Rückwärtsreferenzmodul 832 wird zur Feststellung verwendet, ob ein aktueller Pixel durch einen Verweis auf einen zuvor vorhandenen Pixel komprimiert werden kann und falls ja zum Einfügen einer Pixelentfernung zum referenzierten Pixel und einer Länge. Eine Beschreibung des Einfügens von Rückwärtsreferenzen erfolgt vorstehend in Bezug auf Schritt 504 von 5 nachfolgend beschrieben.
  • Das Paletten-Einfügemodul 838 wird zur Bestimmung eines Indexwertes für jeden Pixel und in der Zwischenzeit zum dynamischen Aufbau einer entstehenden Farbpalette während der Verarbeitung des jeweiligen Pixels verwendet. Nach der Bestimmung der Indexreferenz des Paletteneintrags für einen entsprechenden Pixel kann das Paletten-Einfügemodul 838 diesen Index in das komprimierte Bild einfügen, wenn der Aufwandvergleich zwischen dem Aufwand der Rückwärtsreferenz und dem Aufwand des Einfügens des Pixels ein günstiges Ergebnis erzielt.
  • Der Aufbau der neuen Palette erfolgt, während das Paletten-Einfügemodul 838 zur Verarbeitung jedes Pixels während der Kompression aufgerufen wird. Jeder Pixel kann einen Farbwert (z. B. RGB oder RGBA) beinhalten. Der Farbwert kann den Fehler in der entsprechenden räumlichen Vorhersage bzw. der Farbtransformationsvorhersage repräsentieren. Ein Hash-Index wird aus dem Wert des aktuellen Pixels erzeugt. Gemäß einer Ausführungsform wird eine vorbestimmte Anzahl von Bits an einer vorbestimmten Bitposition des Pixels ausgewählt. Die ausgewählten Bits dienen als ein Hash-Index. Der Pixel (z. B. Farbwert) wird dann in die Tabelle, basierend auf den Hash-Index, eingefügt. Andere Verfahren zur Bestimmung der Hash-Position für jede Farbe sind möglich und werden im Wirkungsbereich dieser Offenlegung betrachtet.
  • Der Minimalaufwand-Kompressor 836 ist zur Bestimmung der Mindestaufwand-Kompression für das Eingangsbild konfiguriert. Minimalaufwand-Kompressor 836 wählt für jeden Pixel des Eingangsbilds zwischen: a) einer oder mehreren Optionen zum Einfügen von Rückwärtsreferenzen, b) dem Einfügen des aktuellen Pixels und c) dem Einfügen eines Indexes in einen Paletteneintrag. Die Auswahl basiert auf einer Aufwandanalyse. 5 beschreibt ein Verfahren 500, das durch den Minimalaufwand-Kompressor 836 zum Komprimieren eines Bildes implementiert werden kann.
  • Das Greedy-Kompressormodul 834 wird zum Komprimieren eines Bildes durch Auswahl zwischen der längsten Rückwärtsreferenz, dem Kopieren des Pixels und dem Einfügen eines Palettenindexes verwendet. Die Operationen des Einfügens der Rückwärtsrefenzen, des Kopierens von Pixeln und des Einfügens der Paletteneinträge sind in Bezug auf die jeweiligen Schritte 504, 506 und 508 des Verfahrens 500 beschrieben. Das Greedy-Kompressormodul 834 kann für eine schnellere Kompressionstechnik verwendet werden, falls die Geschwindigkeit wichtiger als die Höhe der Kompression ist. Daher kann beispielsweise bei der Berücksichtigung von Rückwärtsreferenzen das Greedy-Kompressormodul 834 nur rückwärts gerichtete Zeichenfolge mit der längsten passenden Sequenz beim Aufwandvergleich zwischen dem Einfügen eines Pixels und dem Einfügen eines Palettenindexes berücksichtigen.
  • Das zweidimensionale Transformationsmodul 810 ist zum Ersetzen des Vorkommens von Pixel-Entfernungen durch kürzere Codes, basierend auf einer zweidimensionalen Entfernung, konfiguriert. Gemäß einer Ausführungsform kann das zweidimensionale Transformationsmodul 810 die Verarbeitung in Bezug auf den vorstehend beschrieben Schritt 110 des Verfahrens 100 implementieren.
  • Das Entropiecode-Generierungsmodul 814 ist des Weiteren zur Generierung eines Entropiecodes für die jeweiligen Bereiche des Eingangsbildes mit ähnlichen Statistiken konfiguriert. Gemäß einer Ausführungsform bestimmt ein Block-Cluster-Modul 842 Blöcke einer vorbestimmten Größe für das Eingangsbild und gruppiert anschließend Blöcke nach der Ähnlichkeit der Statistiken in Cluster. Das Entropiecode-Generierungsmodul 814 generiert einen separaten Entropiecode für jeden Cluster und optimiert den Code für die Eigenschaften dieses Clusters. Ein Satz von Entropiecodes kann für jeden Cluster generiert werden. Das Entropiecode-Generierungsmodul 814 generiert des Weiteren ein Entropie-Sub-Auflösungsbild zum Speichern der Entropiecodes für jeden Block des Eingangsbildes. Das Block-Cluster-Modul 842 kann die Verarbeitung in Bezug auf die vorstehend beschriebenen Schritte 604610 des Verfahrens 600 bzw. die Schritte 706710 des Verfahrens 700 implementieren. Das Entropiecode-Generierungsmodul 814 kann die Verarbeitung in Bezug auf die vorstehend beschriebenen Schritte 612616 des Verfahrens 600 bzw. die Schritte 712716 des Verfahrens 700 implementieren.
  • Das Bild speichern-Modul 812 ist zum Speichern des komprimierten entropiekodierten Eingangsbilds und jedes der auf dem Eingangsbild basierenden Sub-Auflösungsbilder konfiguriert. Gemäß einer Ausführungsform kann das Bild speichern-Modul 812 die Verarbeitung in Bezug auf das beschriebene Verfahren 700 implementieren. Wie vorstehend beschrieben, speichert das Verfahren 700 ein Bild mittels einer rekursiven Definition. So ruft beispielsweise Schritt 714 die Speicherung des Entropiecode-Sub-Auflösungsbildes mittels des gleichen Verfahrens 700 auf.
  • Das Ausgabemodul für die komprimierte Bilddatei 816 ist zur Ausgabe des vollständig komprimierten entropiekodierten Eingangsbildes, z. B. nach der Verarbeitung, basierend auf dem Verfahren 100, in eine Datei oder zur Übertragung an eine andere Einheit zur Dekodierung, konfiguriert. Das vollständig komprimierte entropiekodierte Eingangsbild enthält als Ausgabe unter anderem das komprimierte entropiekodierte Eingangsbild und die Sub-Auflösungsbilder. Eine beispielhafte Datei, die ein komprimiertes entropiekodiertes Bild enthält, ist in der nachfolgenden 10 dargestellt.
  • 9 illustriert Datenentitäten bei der Kompression von Bildern gemäß einer Ausführungsform. Das Eingangsbild 900 ist ein unkomprimiertes Bild, das einem Kodierer 800 zur Kompression zugeführt wird. Das komprimierte entropiekodierte Bild 904 ist das vollständig komprimierte und entropiekodierte Eingangsbild. Eingangsbild-Zwischenformate 902 (auch als „Zwischenbilder” bezeichnet) beziehen sich auf mehrere Zwischenstufen von Bildformaten zwischen dem unkomprimierten Eingangsbild und dem komprimierten entropiekodierten Bild nach der Verarbeitung des Eingangsbildes. Beispiele beinhalten die Ausgabe des Vorverarbeitungsmoduls 802 und aller seiner Untermodule, die Ausgabe des räumlichen Prädiktors 804, die Ausgabe des Farbraumtransformators 806, die Ausgabe des Pixel-Kompressors 808 und eines seiner Untermodule und die Ausgabe des Transformationsmoduls für zweidimensionale Regionen 810.
  • Das Sub-Auflösungsbild des räumlichen Prädiktors 906, das Farbkorrelations-Sub-Auflösungsbild 908 und das Entropie-Sub-Auflösungsbild 910 umfassen jeweils einen Pixel für jeden Block (z. B. einen 16×16 Pixel-Bereich) des Eingangsbildes. Das Sub-Auflösungsbild des räumlichen Prädiktors 906 speichert die für den jeweiligen Block des Eingangsbildes ausgewählten räumlichen Prädiktoren. Das Farbkorrelations-Sub-Auflösungsbild 908 speichert die Farbkorrelationsfaktoren für jeden Block im Eingangsbild. Das Entropie-Sub-Auflösungsbild 910 speichert die Verweise auf Sätze der Entropiecodes für jeden Block des Eingangsbildes.
  • Gemäß einer Ausführungsform ist eine enstehende Palette 920 eine Hash-Tabelle, wobei jeder Eintrag aus einem Hash-Index 922 und einem Palettenwert 924 besteht. Die Palettenwerte 924 umfassen Farben. Der Hash-Index 922 entspricht einem Index, der mittels Bits eines entsprechenden Farbwertes berechnet wird.
  • Die zweidimensionale Codetabelle 930 ist mit kurzen Codes für ausgewählte Pixel-Entfernungen konfiguriert. Die kurzen Codes repräsentieren zweidimensionale Entfernungen zwischen Pixelpositionen im Bild. Jeder Eintrag der zweidimensionalen Codetabelle 930 beinhaltet einen Eintrag für eine relative Pixel-Entfernung 932, der die Entfernung zwischen zwei Pixeln anzeigt und einen kurzen zweidimensionalen Code 936, der diese Entfernung repräsentiert.
  • Die Codetabelle für die räumliche Vorhersage 940 ist mit Codes, die eine Vielzahl von räumlichen Prädiktoren repräsentieren, konfiguriert. Wie vorstehend beschrieben, kann ein räumlicher Prädiktor auf einem einzelnen Pixel oder einer Kombination von zwei oder mehr Pixeln basieren.
  • 10 zeigt ein Blockdiagramm des Inhalts eines Dateiformats 1000, in dem komprimierte entropiekodierte Bilder 904 gespeichert werden können. Das Bildformat 1000 kann zum Speichern des komprimierten entropiekodierten Eingangsbildes 904 im persistenten Speicher verwendet werden. Darüber hinaus kann das Bildformat 1000 als Format verwendet werden, in dem ein komprimiertes entropiekodiertes Eingangsbild 904 an eine andere Entität zum Dekomprimieren übertragen werden kann. Ein Fachmann auf dem Gebiet wird erkennen, dass andere Elemente im Format 1000 enthalten sein können.
  • Die Bildgröße 1002 stellt die Größe der Bilddatei dar. Die Größe kann in Byte angegeben werden. Die Blockgröße 1006 stellt die Größe der Blöcke (z. B. 16×16 Pixel) dar, die zur Kompression verwendet werden. Die Paletten-Hash-Informationen 1004 enthalten Informationen über die Farbpalette, einschließlich aber nicht beschränkt auf die Hash-Indexgröße und Paletteneinträge. Das gespeicherte Entropie-Sub-Auflösungsbild 1012, das gespeicherte Farbkorrelations-Sub-Auflösungsbild 1014 und das gespeicherte Sub-Auflösungsbild für räumliche Prädiktoren 1016 sind jeweils gespeicherte Sub-Auflösungsbilder. Das gespeicherte Entropie-Sub-Auflösungsbild kann Verweise auf die Entropiecodesätze 1008 beinhalten. So kann beispielsweise die Referenz eine Ganzzahl sein, die einen Entropiecodesatz von den Entropiecodesätzen 1008 identifiziert. Wie vorstehend beschrieben, kann jedes Sub-Auflösungsbild in einer rekursiven Weise nach dem gleichen Verfahren wie dem zum Komprimieren und Speichern des Eingangsbildes gespeichert werden. Das gespeicherte komprimierte entropiekodierte Eingangsbild 1022 ist der Bit-Stream des komprimierten entropiekodierten Eingangsbildes.
  • Nach dem Empfang eines mittels des Verfahrens 100 kodierten Bildes, wie z. B. das gespeicherte komprimierte entropiekodierte Eingangsbild 1022, kann ein entsprechender Dekodierer eine Umkehr einiger der Schritte 116102 zum Erhalt des unkomprimierten und dekodierten Eingangsbildes ausführen. 11 zeigt ein Verfahren 1100, das den Dekodierprozess gemäß einer Ausführungsform ausführt.
  • Bei Schritt 1102 wird die komprimierte entropiekodierte Bilddatei verarbeitet, um das komprimierte entropiekodierte Eingangsbild, die komprimierten Sub-Auflösungsbilder und andere Informationen zu erhalten, die für zur Wiederherstellung des Eingangsbildes durch eine Dekompression benötigt werden. Die komprimierten Sub-Auflösungsbilder beinhalten komprimierte Versionen des Entropiecode-Sub-Auflösungsbildes, das Sub-Auflösungsbild für räumliche Prädiktoren und das Farbkorrelations-Sub-Auflösungsbild. Die Beschreibung des Inhalts der komprimierten entropiekodierten Bilddatei erfolgt vorstehend in Bezug auf 10. Wie vorstehend beschrieben, könnt jedes komprimierte Sub-Auflösungsbild rekursiv mit dem gleichen, zum Komprimieren des Bildes verwendeten Verfahren 100 gespeichert werden. Daher kann das Verfahren 1100 auf das jeweilige komprimierte entropiekodierte Sub-Auflösungsbild zum Erhalt des entsprechenden unkomprimierten Sub-Auflösungsbildes angewendet werden. Zur Vereinfachung der Beschreibung werden die Schritte des Verfahrens 1100 in Bezug auf die Dekodierung des Eingangsbildes nachfolgend beschrieben.
  • Bei Schritt 1104 erfolgt die Dekodierung des entropiekodierten Eingangsbildes. Die bei der Kodierung des Eingangsbildes zu verwendenden Entropiecodes werden basierend auf dem entsprechenden Pixel im Entropiecode-Sub-Auflösungsbild bestimmt. Wie vorstehend beschrieben, entspricht jedes Pixel des Entropiecode-Sub-Auflösungsbildes einem Block im Eingangsbild und gibt den für den Block zu verwendenden Entropiecodesatz an. Das Entropiecode-Sub-Auflösungsbild kann für jeden Block einen Verweis auf den entsprechenden Entropiecodesatz beinhalten. Die Entropiecodesätze können separat für den Dekodierer entweder im zerlegten Bild oder durch eine getrennte Übertragung zur Verfügung stehen. Durch die Dekodierung der Entropiecodes wird ein komprimiertes Eingangsbild von dem entropiekodierten Eingangsbild erhalten.
  • Bei Schritt 1106 wird die zweidimensionale Regiontransformation umgekehrt. So wird beispielsweise auf jeder Position im komprimierten Bild, wo ein zweidimensionaler Regiontransformationscode enthalten ist, der Wert durch die entsprechende tatsächliche Pixel-Entfernung ersetzt. Zweidimensionale Regiontransformations-Entfernungscodes können separat für den Dekodierer zur Verfügung gestellt werden, entweder im zerlegten Bild, durch eine getrennte Übertragung oder durch eine Konfiguration.
  • Bei Schritt 1108 wird das komprimierte Bild dekomprimiert. Wie vorstehend beschrieben wurde bei der Kompression des Eingangsbildes die Pixel-basierte Kompression durch das Einfügen einer Rückwärtsreferenz, des Pixels oder einer Palettenreferenz an den jeweiligen Pixelpositionen vom linken oberen Pixel zum unteren rechten Pixel des Eingangsbildes ausgeführt. Während der Dekompression wird das komprimierte Bild traversierend vom oberen linken Pixel bis zum unteren rechten Pixel bearbeitet, wobei Daten der Rückwärtsreferenz, der Pixelwert oder einen Wert aus einer Farbpalette eingefügt wird/werden. Wie in Bezug auf die anfängliche Kompression des Eingangsbildes vorstehend beschrieben, wird die entstehende Palette erstellt, während der Dekompressionsprozess die Pixel des komprimierten Eingangsbildes bearbeitet. Während die komprimierten Pixel-Positionen durchlaufen werden, wird die entstehende Palette dynamisch durch das Eintragen der Farbwerte in die Hash-Tabelle erstellt. Wenn eine Position im komprimierten Bild angetroffen wird, auf der ein Palettenindex eingefügt wurde, wird diese durch den entsprechenden Farbwert aus der dynamisch erstellten Palette ersetzt. Die Ausgabe des Pixel-Dekompressionsschrittes 1108 ist ein dekomprimiertes Eingangsbild, das weiterhin die Kodierungen der Farbraumtransformation, die räumliche Vorhersage und weitere, vom Kodierer ausgeführte Vorverarbeitungsschritte beinhaltet.
  • Bei Schritt 1110 werden Farbraumtransformationen im Eingangsbild dekodiert. Die kodierten Farbraumtransformationen ersetzen, wie vorstehend beschrieben, Farbwerte durch Vorhersagefehler für Rot und Blau, basierend auf entsprechenden Korrelationsfaktoren. Die Korrelationsfaktoren sind im Farbkorrelation-Sub-Auflösungsbild vorhanden. Mittels der im Farbkorrelations-Sub-Auflösungsbild gespeicherten Korrelationsfaktoren setzt der Dekodierprozess die Farbwerte zurück auf deren Werte ohne Farbkorrelationen.
  • Bei Schritt 1112 wird die räumliche Vorhersage, die während der Kodierung ausgeführt wurde, rückgängig gemacht. Die räumliche Vorhersage wird mittels der im räumlichen Vorhersage-Sub-Auflösungsbild zur Verfügung stehenden räumlichen Prädiktoren zurückgesetzt. Für jeden Pixel wird der vorhergesagte Wert oder genauer gesagt, der Vorhersage-Fehlerwert mit dem tatsächlichen entsprechenden Pixel-Wert ersetzt.
  • Bei Schritt 1114 wird der eine oder werden die mehreren vom Kodierer ausgeführten Vorverarbeitungsschritte rückgängig gemacht. Die während der Kodierung ausgeführten Vorverarbeitungsschritte können beispielsweise einer oder mehrere der Folgenden wie Alpha-Ersatz, Farbdiskretisierung und Palettenauswahl beinhalten. Jeder dieser Vorverarbeitungsschritte wird vorstehend in Bezug auf das Kodierungsverfahren 100 beschriebenen.
  • Nach Abschluss des Verfahrens 1100 steht eine dekodierte Version des Original-Eingabebildes zur Verfügung.
  • 12 stellt einen Dekodierer 1200, gemäß einer Ausführungsform, dar. Der Dekodierer 1200 beinhaltet ein Eingangsbild-Dekodierer 1201 und eine Bilddateiaufspaltung 1202. Der Eingangsbild-Dekodierer 1201 umfasst einen Entropie-Dekodierer 1204, einen Dekodierer für eine zweidimensionale Transformation 1206, einen Pixel-Dekomprimierer 1208, einen Palettengenerator 1210, einen Dekodierer für eine Farbraumtransformation 1212, einen Dekodierer für die räumliche Vorhersage 1214 und einen Vorverarbeitungs-Dekodierer 1216. Gemäß einer Ausführungsform führt der Dekodierer 1200 das Verfahren 1200 zur Dekodierung eines Bildes, das zuvor durch einen Kodiervorgang, z. B. durch das Verfahren 100, kodiert wurde, aus.
  • Die Bilddateiaufspaltung 1202 verwendet als Eingabe eine komprimierte kodierte Bilddatei, die durch einen Kodiervorgang wie dass Verfahren 100 erstellt wurde, und extrahiert das kodierte komprimierte Eingangsbild, die Sub-Auflösungsbilder und die anderen gespeicherten Komponenten zur Unterstützung der Dekodierung des Eingangsbildes. 10 zeigt ein beispielhaftes Format einer komprimierten kodierten Bilddatei, die als Eingabe für die Bilddateiaufspaltung 1202 verwendet wird. Der Eingangsbild-Dekodierer 1201 dekodiert das kodierte komprimierte Eingangsbild, wie nachfolgend beschrieben. Gemäß einer Ausführungsform wird jedes der Sub-Auflösungsbilder ebenfalls mit dem Eingangsbild-Dekodierer 1201 dekodiert.
  • Der Entropie-Dekodierer 1204 macht die auf das komprimierte Bild durch den Kodiervorgang ausgeführte Entropie-Kodierung rückgängig. Der Entropie-Dekodierprozess verwendet das Entropie-Sub-Auflösungsbild (aus der komprimierten kodierten Bilddatei dekodiert) zur Auswahl des Entropiecodes für jeden Block des Eingangsbildes.
  • Der Dekodierer für die zweidimensionale Transformation 1206 ersetzt die vom Kodierer in das komprimierte Bild eingefügten zweidimensionalen Transformationscodes mit den tatsächlichen Pixel-Entfernungen.
  • Der Pixel-Dekomprimierer 1208 macht die vom Kodierer ausgeführte anfängliche Kompression rückgängig. Gemäß einer Ausführungsform übernimmt der Bilddekomprimierer das komprimierte Entropie-dekodierte Bild nach dem Ersatz der zweidimensionalen Entfernungscodes. Während der Dekompression wird das komprimierte Bild traversierend vom oberen linken Pixel bis zum unteren rechten Pixel bearbeitet, wobei Daten einer Rückwärtsreferenz, der Pixelwert oder einen Wert aus einer Farbpalette eingefügt wird/werden.
  • Der Palettengenerator 1210 erstellt die Farbpalette (vorstehend als „entstehende Palette” bezeichnet) während der Dekompression des Eingangsbildes dynamisch. Wie in Bezug auf Schritt 1108 des Verfahrens 1100 beschrieben, wird während des Durchlaufens der komprimierten Pixel-Positionen die neue Palette durch das Eintragen der Farbwerte in die Hash-Tabelle dynamisch erstellt.
  • Der Dekodierer für die Farbraumtransformation 1212 übernimmt als Eingabe ein dekomprimiertes Eingangsbild und kehrt die vom Kodierer eingefügte Farbraumkodierung um. Die auf einer Pro-Block-Basis gespeicherten Farbkorrelatoren im Farbraum-Sub-Auflösungsbild dienen zur Dekodierung der Farbraumtransformation. Die Farbraumtransformation wird vorstehend in Bezug auf Schritt 1110 des Verfahrens 1100 beschrieben.
  • Der Dekodierer für die räumliche Vorhersage 1214 dekodiert die während des Kodierprozesses kodierten räumlichen Vorhersagen. Die räumlichen Prädiktoren für jeden Block sind im Sub-Auflösungsbild für räumliche Prädiktoren vorhanden.
  • Der Vorverarbeitungs-Dekodierer 1216 kehrt alle während der Enkodierung möglicherweise ausgeführten Vorverarbeitungsschritte, wie z. B. der Alpha-Ersatz, die Farbdiskretisierung und die Palettenauswahl, um. Die Ausgabe des Vorverarbeitungs-Dekodierers 1216 ist das vollständig dekodierte Eingangsbild.
  • 13 zeigt ein Recheneinheitssystem 1300, in dem die Ausführungsformen wie die Kodierungsverfahren in den 17, das Dekodierverfahren in der 11, der Kodierer 800 bzw. der Dekodierer 1200 implementiert werden können. Das System 1300 beinhaltet einen Prozessor 1302, der jede Recheneinheit oder jeden elektronischen Prozessor für die Ausführung von Anweisungen und Verarbeitung von Informationen, einschließlich der Pixel-Informationen, beinhalten kann. Der Prozessor 1302 kann eine Abfolge von Anweisungen verarbeiten oder Teil eines Gerätes sein, das eine Abfolge von Anweisungen verarbeitet. Der Prozessor 1302 kann beispielsweise ein Prozessor einer Recheneinheit, ein Prozessor in einem mobilen Gerät sein oder einen anderen elektronischen bzw. digitalen Prozessor beinhalten. Der Prozessor 1302 kann z. B. in einer Recheneinheit, in einer mobilen Recheneinheit, in einem Smartphone, in einer Set-Top-Box, in einer Entertainment-Plattform, in einem Server, in einer Kamera oder in einem anderen Bilderfassungsgerät, in einer Server-Farm, in einer Cloud-Recheneinheit und dergleichen eingebaut sein.
  • Der Prozessor 1302 kann mit einem Speicher 1304 über einen Bus 1308 verbunden sein. Der Speicher 1304 kann ein flüchtiger, persistenter, virtueller oder anderweitiger Speicher sein, um Informationen zur Verwendung mit bzw. zur Ausgabe vom System 1300 zu speichern. Der Speicher 1304 kann beispielsweise einen Arbeitsspeicher (RAM) bzw. einen dynamischen Schreib-Lesespeicher mit wahlfreiem Zugriff (DRAM) beinhalten. Der Speicher 1304 kann verwendet werden, um Informationen, wie z. B. Statusinformationen des Systems 1300, zu speichern. Der Speicher 1304 kann zum Beispiel ebenfalls verwendet werden, um Anweisungen des Systems 1300, einschließlich der Anweisungen des Bildverarbeitungsmoduls 112, zu speichern. Das System 1300 kann einen oder mehrere erforderliche oder angemessene Prozessoren 1302 beinhalten.
  • Der Bus 1308 kann eine Kommunikationsinfrastruktur, der die Interaktion zwischen den verschiedenen Komponenten des Systems 1300 ermöglicht, beinhalten. Der Bus 1308 kann beispielsweise Daten zwischen den Komponenten des Systems 1300, wie z. B. zwischen dem Prozessor 1302 und dem Speicher 1304, übertragen. Der Bus 1308 kann ein drahtloses oder drahtgebundenes Kommunikationsmittel zwischen den Komponenten des Systems 1300 sowie parallele, serielle oder andere topologische Arrangements beinhalten.
  • Ein permanenter Speicher 1306 kann Komponenten wie einen Speicher oder einen anderen permanenten Speicher beinhalten, der dem System 1300 zum Speichern von Daten über einen längeren Zeitraum dient (z. B. im Vergleich zum Speicher 1304). Der permanente Speicher 1306 kann nicht-flüchtigen Hauptspeicher, wie den vom Prozessor 1302 im System 1300 verwendeten, beinhalten. Zu permanenten Speichern 1306 zählen z. B. Flash-Speicher, eine Festplatte, ein optischer Datenträger oder andere, von der Recheneinheit lesbare Medien.
  • Die Ein-/Ausgabeschnittstelle 1310 kann Schnittstellen für die Tastatur, für die Maus, zur Sprachbefehlseingabe, für eine Anzeige oder für andere Ein- oder Ausgabegeräte beinhalten. Konfigurationsbefehle bzw. zu komprimierende Bilder können über die Ein-/Ausgabegeräteschnittstelle 1310 empfangen werden.
  • Die Netzwerkschnittstelle 1312 kann eine oder mehrere Schnittstellen zu Netzwerken, wie z. B. zu einem lokalen Netzwerk oder zum Internet, beinhalten. Die Netzwerkschnittstelle 1312 kann Schnittstellen für drahtgebundene oder drahtlose Verbindungen beinhalten. Konfigurationsbefehle bzw. zu komprimierende Bilder können über die Netzwerkschnittstelle 1312 empfangen werden.
  • Die vorliegende Erfindung wurde vorstehend mittels funktionaler Bausteine beschrieben, die die Implementierung der angegebenen Funktionen und deren Beziehungen veranschaulichen. Die Grenzen dieser funktionalen Bausteine wurden zum besseren Verständnis der Beschreibung hierin willkürlich definiert. Alternative Grenzen können definiert werden, solange deren spezifizierte Funktionen und Beziehungen angemessen durchgeführt werden.
  • Die vorstehende Beschreibung der spezifischen Ausführungsformen zeigt somit die allgemeine Natur der Erfindung vollständig, die andere durch die Anwendung fachgerechter Technik problemlos ändern bzw. für verschiedene Anwendungen solcher spezifischer Ausführungsformen anpassen können, ohne unangemessenes Experimentieren und ohne vom allgemeinen Konzept der vorliegenden Erfindung abzuweichen. Daher sind solche Anpassungen und Modifikationen auf Basis der hierin präsentierten Lehre und Anleitung als innerhalb der Bedeutungen des Bereichs der Äquivalente der offenbarten Ausführungsformen zu betrachten. Es versteht sich, dass die hierin enthaltene Phraseologie oder Terminologie dem Zweck der Beschreibung und nicht der Einschränkung dient, sodass die Terminologie oder Phraseologie der vorliegenden Spezifikation von Fachleuten angesichts der Lehren und Anleitung zu interpretieren ist.
  • Die Breite und der Wirkungsbereich der vorliegenden Erfindung sollen durch keinerlei der vorstehend beschriebenen exemplarischen Ausführungsformen eingeschränkt sein, sondern lediglich in Übereinstimmung mit den folgenden Ansprüchen und ihren Äquivalenten definiert werden.

Claims (5)

  1. Kodierer, der Folgendes umfasst: einen Prozessor; eine mit dem Prozessor gekoppelte Speicherkomponente; ein Entropiecode-Generierungsmodul, das konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Bestimmen einer Vielzahl von Entropiecodesätzen, basierend auf statistisch vergleichbaren Regionen in einem Bild; und das Generieren eines ersten Sub-Auflösungsbildes, umfassend die Referenzen auf die Vielzahl von Entropiecodesätzen, worin jede der besagten Referenzen einen der Entropiecodesätze anzeigt, um einen entsprechenden Pixel im Eingangsbild zu kodieren; ein Modul zum Speichern des Bildes, das konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Kodieren des Eingangsbildes mittels der jeweiligen Sub-Auflösungsbilder zur Steuerung von jedem von der Vielzahl von Kompressionsparametern; und ein Ausgabemodul für die komprimierte Bilddatei, das konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Ausgeben von zumindest dem kodierten Eingangsbild und dem generierten ersten Sub-Auflösungsbild als eine komprimierte entropiekodierte Bilddatei.
  2. Kodierer nach Anspruch 1, worin das Modul zur Entropiecode-Generierung des Weiteren konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: Aufteilung des Eingangsbildes in mehrere Blöcke; das Bestimmen der Entropiestatistiken für die jeweiligen Blöcke aus der Vielzahl der Blöcke; Cluster-Bildung der Vielzahl der Blöcke nach Ähnlichkeiten der ermittelten Entropiestatistiken zur Bildung einer Vielzahl von Block-Clustern; und das Bestimmen eines Entropiecodes für jeden der Block-Cluster.
  3. Kodierer nach Anspruch 1, worin das Ausgabemodul für die komprimierte Bilddatei des Weiteren konfiguriert ist, dass, wenn dieses von einem Prozessor ausgeführt wird, den Prozessor zum Speichern des kodierten Eingangsbildes und einer kodierten Version des generierten ersten Sub-Auflösungsbildes mittels einer ersten Kodiertechnik veranlasst.
  4. Fertigungsartikel, bestehend aus einem von einer Recheneinheit lesbaren Speichermedium mit darauf kodierten Anweisungen, dass, wenn dieser durch eine Recheneinheit ausgeführt wird, wobei die Recheneinheit zur Ausführung von Operationen veranlasst, die Folgendes umfassen: das Bestimmen einer Vielzahl von Entropiecodesätzen, basierend auf statistisch ähnliche Regionen im Eingangsbild; das Generieren eines oder mehrerer Sub-Auflösungsbilder, einschließlich eines ersten Sub-Auflösungsbildes, das Referenzen auf die Vielzahl von Entropiecodesätzen beinhaltet, worin jede der besagten Referenzen einen der Entropiecodesätze anzeigt, um einen entsprechenden Pixel im Eingangsbild zu kodieren; das Kodieren des Eingangsbildes mittels des generierten zumindest einen Sub-Auflösungsbildes zur Steuerung des zumindest einen Kompressionsparameters einschließlich eines Entropiecodes; und das Ausgeben des kodierten Eingangsbildes und Generieren von zumindest einem Sub-Auflösungsbild als eine komprimierte entropiekodierte Bilddatei.
  5. Dekodierer, der Folgendes umfasst: einen Prozessor; eine mit dem Prozessor gekoppelte Speicherkomponente; einen Bilddatei-Decomposer, der so konfiguriert ist, dass er, wenn er von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Aufteilen einer komprimierten entropiekodierten Bilddatei für den Zugriff auf das komprimierte kodierte Eingangsbild und die jeweiligen Sub-Auflösungsbilder für jeden von einer Vielzahl von Kompressionsparametern; und einen Eingangsbild-Dekodierer, der so konfiguriert ist, dass er, wenn er von einem Prozessor ausgeführt wird, den Prozessor zu Folgendem veranlasst: das Dekodieren des kodierten Eingangsbildes mittels der jeweiligen Sub-Auflösungsbilder zur Steuerung von jedem von einer Vielzahl von Kompressionsparametern.
DE202012013410.8U 2011-11-03 2012-11-02 Bildkompression mit SUB-Auflösungsbildern Expired - Lifetime DE202012013410U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201113288445 2011-11-03
US13/288,445 US8615138B2 (en) 2011-11-03 2011-11-03 Image compression using sub-resolution images

Publications (1)

Publication Number Publication Date
DE202012013410U1 true DE202012013410U1 (de) 2016-11-15

Family

ID=47295153

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202012013410.8U Expired - Lifetime DE202012013410U1 (de) 2011-11-03 2012-11-02 Bildkompression mit SUB-Auflösungsbildern

Country Status (9)

Country Link
US (2) US8615138B2 (de)
EP (1) EP2761873A2 (de)
JP (1) JP2014525183A (de)
KR (1) KR101461209B1 (de)
CN (1) CN103703779B (de)
AU (1) AU2012332327B2 (de)
CA (1) CA2831967C (de)
DE (1) DE202012013410U1 (de)
WO (1) WO2013067327A2 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615138B2 (en) 2011-11-03 2013-12-24 Google Inc. Image compression using sub-resolution images
CN104322062B (zh) * 2012-06-26 2016-12-21 英特尔公司 跨层跨通道样本预测
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
JP6164360B2 (ja) * 2014-03-14 2017-07-19 富士通株式会社 画像符号化装置、画像復号装置、画像符号化方法、及び画像復号方法
WO2015139176A1 (zh) * 2014-03-17 2015-09-24 富士通株式会社 基于调色板的编码装置、方法以及图像处理设备
US20150312573A1 (en) * 2014-03-17 2015-10-29 Nokia Technologies Oy Method and technical equipment for video encoding and decoding
WO2015143351A1 (en) 2014-03-21 2015-09-24 Futurewei Technologies, Inc. Advanced screen content coding with improved color table and index map coding methods
US10091512B2 (en) 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US10623747B2 (en) * 2014-06-20 2020-04-14 Hfi Innovation Inc. Method of palette predictor signaling for video coding
US10687064B2 (en) 2014-08-04 2020-06-16 Qualcomm Incorporated Palette mode encoding and decoding with inferred pixel scan order
KR102216656B1 (ko) 2014-09-02 2021-02-17 삼성전자주식회사 이미지 처리 방법 및 그 전자 장치
US10158866B2 (en) * 2014-09-26 2018-12-18 Qualcomm Incorporated Parsing dependency reduction for palette index coding
GB2531005A (en) 2014-10-06 2016-04-13 Canon Kk Improved encoding process using a palette mode
CN114630131B (zh) * 2014-11-12 2023-11-07 寰发股份有限公司 索引映射编解码中的跳出像素编解码方法
WO2016074627A1 (en) * 2014-11-12 2016-05-19 Mediatek Inc. Methods of escape pixel coding in index map coding
JP6122516B2 (ja) 2015-01-28 2017-04-26 財團法人工業技術研究院Industrial Technology Research Institute エンコーディング方法及びエンコーダ
US10819990B2 (en) 2015-02-16 2020-10-27 Hfi Innovation Inc. Method and apparatus for palette predictor initialization for palette coding in video and image compression
KR102051197B1 (ko) * 2015-03-20 2019-12-02 미디어텍 싱가폴 피티이. 엘티디. 비디오 코딩에서의 인터 예측으로의 팔레트 코딩 방법
US9460365B1 (en) 2015-03-24 2016-10-04 Intel Corporation Clustered palette compression
SG11201708026TA (en) * 2015-04-08 2017-10-30 Hfi Innovation Inc Methods of palette mode coding in video coding
US9544608B1 (en) 2015-07-03 2017-01-10 Microsoft Technology Licensing, Llc Lossless image compression for few-colored images
US10356432B2 (en) * 2015-09-14 2019-07-16 Qualcomm Incorporated Palette predictor initialization and merge for video coding
CN105578191B (zh) * 2015-12-15 2018-12-07 辽宁师范大学 基于直方图滑动窗口的索引图基色选择方法
US11892311B2 (en) 2016-11-26 2024-02-06 Thinkware Corporation Image processing apparatus, image processing method, computer program and computer readable recording medium
CN108121764B (zh) 2016-11-26 2022-03-11 星克跃尔株式会社 图像处理装置、图像处理方法、电脑程序及电脑可读取记录介质
WO2018123801A1 (ja) * 2016-12-28 2018-07-05 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元モデル配信方法、三次元モデル受信方法、三次元モデル配信装置及び三次元モデル受信装置
US10872180B2 (en) * 2017-01-20 2020-12-22 Hamilton Sunstrand Corporation Complex feature cloning in additive manufacturing datasets
US10313715B2 (en) * 2017-04-27 2019-06-04 Nanning Fugui Precision Industrial Co., Ltd. Transmission method for video data and device employing same
JP6956803B2 (ja) * 2017-05-26 2021-11-02 グーグル エルエルシーGoogle LLC ニューラルネットワークを使用するタイル型画像圧縮
US10362325B2 (en) * 2017-06-04 2019-07-23 Apple Inc. Techniques for compressing multiple-channel images
US10362319B2 (en) * 2017-06-04 2019-07-23 Apple Inc. Techniques for compressing multiple-channel images
CN107801026B (zh) * 2017-11-09 2019-12-03 京东方科技集团股份有限公司 图像压缩方法及装置、图像压缩及解压缩***
US10776957B2 (en) 2018-10-02 2020-09-15 Samsung Electronics Co., Ltd. Online image compression in hardware
US11025913B2 (en) * 2019-03-01 2021-06-01 Intel Corporation Encoding video using palette prediction and intra-block copy
US11770535B2 (en) * 2021-02-19 2023-09-26 Samsung Display Co., Ltd. Systems and methods for joint color channel entropy encoding with positive reconstruction error

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0759086A (ja) * 1993-07-30 1995-03-03 Canon Inc 画像処理装置
JPH09505188A (ja) * 1993-11-15 1997-05-20 ナショナル・セミコンダクター・コーポレイション 4分木構造walsh変換符号化
US5805735A (en) * 1995-03-02 1998-09-08 Apple Computer, Inc. Method and apparatus for compression of digitized image data using variable color fidelity
JPH09200535A (ja) * 1996-01-18 1997-07-31 Canon Inc 画像処理装置およびその方法
JPH11161782A (ja) * 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置
US6563953B2 (en) 1998-11-30 2003-05-13 Microsoft Corporation Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock
US6853755B2 (en) * 2001-03-28 2005-02-08 Sharp Laboratories Of America, Inc. Method and apparatus for adaptive compression of scanned documents
US7688894B2 (en) 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
EP1538844A3 (de) * 2003-11-26 2006-05-31 Samsung Electronics Co., Ltd. Verfahren zur Farbfehlerbildtransformation und -kodierung
JP4418762B2 (ja) * 2004-05-07 2010-02-24 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
US7006700B2 (en) * 2004-06-25 2006-02-28 Avocent Corporation Digital video compression command priority
JP2006128944A (ja) * 2004-10-27 2006-05-18 Canon Inc 情報処理装置及び情報処理方法、画像形成装置、プログラム、記憶媒体、印刷システム
US7450134B2 (en) * 2004-11-18 2008-11-11 Time Warner Cable Inc. Methods and apparatus for encoding and decoding images
JP4493551B2 (ja) * 2005-06-09 2010-06-30 オリンパスイメージング株式会社 データ符号化装置、データ復号化装置、データ符号化方法、データ復号化方法、プログラム
KR101088375B1 (ko) * 2005-07-21 2011-12-01 삼성전자주식회사 가변 블록 변환 장치 및 방법 및 이를 이용한 영상부호화/복호화 장치 및 방법
CN101496406B (zh) * 2006-03-23 2012-02-01 三星电子株式会社 图像编码/解码方法和设备
KR101200865B1 (ko) * 2006-03-23 2012-11-13 삼성전자주식회사 영상의 부호화 방법 및 장치, 복호화 방법 및 장치
US7778472B2 (en) 2006-03-27 2010-08-17 Qualcomm Incorporated Methods and systems for significance coefficient coding in video compression
JP4771288B2 (ja) * 2006-04-03 2011-09-14 富士ゼロックス株式会社 データ処理装置及びプログラム
JP4717704B2 (ja) 2006-04-26 2011-07-06 ルネサスエレクトロニクス株式会社 データ処理装置およびデータ処理方法
US8275045B2 (en) 2006-07-12 2012-09-25 Qualcomm Incorporated Video compression using adaptive variable length codes
KR101266168B1 (ko) * 2006-08-16 2013-05-21 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
WO2009083838A1 (en) * 2007-12-21 2009-07-09 Koninklijke Philips Electronics, N.V. Methods and apparatus for efficient distribution of image data
US8705623B2 (en) * 2009-10-02 2014-04-22 Texas Instruments Incorporated Line-based compression for digital image data
WO2011083439A1 (en) * 2010-01-08 2011-07-14 Nokia Corporation An apparatus, a method and a computer program for video coding
KR101464057B1 (ko) * 2010-02-08 2014-11-21 노키아 코포레이션 비디오 코딩을 위한 장치, 방법 및 컴퓨터 프로그램
JP2011205693A (ja) * 2011-06-14 2011-10-13 Sharp Corp 画像復号装置及び画像符号化装置
US8615138B2 (en) 2011-11-03 2013-12-24 Google Inc. Image compression using sub-resolution images

Also Published As

Publication number Publication date
US8977066B2 (en) 2015-03-10
KR20130143678A (ko) 2013-12-31
US20130114893A1 (en) 2013-05-09
CN103703779A (zh) 2014-04-02
KR101461209B1 (ko) 2014-11-14
AU2012332327A1 (en) 2013-11-21
CA2831967A1 (en) 2013-05-10
EP2761873A2 (de) 2014-08-06
WO2013067327A2 (en) 2013-05-10
CA2831967C (en) 2015-06-02
JP2014525183A (ja) 2014-09-25
US20140072239A1 (en) 2014-03-13
WO2013067327A3 (en) 2013-07-25
CN103703779B (zh) 2016-01-20
AU2012332327B2 (en) 2014-04-10
US8615138B2 (en) 2013-12-24

Similar Documents

Publication Publication Date Title
DE202012013410U1 (de) Bildkompression mit SUB-Auflösungsbildern
DE60312620T2 (de) Codierungs- und decodierungsverfahren mit variabler länge
CN105917648B (zh) 具有非对称分区的帧内块复制预测以及编码器侧搜索图案、搜索范围和用于分区的方法
DE60310800T2 (de) Approximierter Kubikfilter
DE112018005250T5 (de) Punktwolkenkomprimierung
CN105491376B (zh) 图像编码、解码方法及装置
DE112017006657T5 (de) Adaptive planare Prädiktion mit ungleichen Gewichten
DE102016225270A1 (de) Verfahren, anwendungsprozessor, und mobiles endgerät zum verarbeiten eines referenzbildes
WO2015096822A1 (zh) 图像编码、解码方法及装置
DE102016125117A1 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
CN106031177A (zh) 用于硬件加速的视频编码的主编码器
CN114650419A (zh) 进行帧内预测的编码器、解码器和对应方法
EP1371229B1 (de) Verfahren zur komprimierung und dekomprimierung von videodaten
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE69937833T2 (de) Verfahren und vorrichtung zur skalierbaren formkodierung
DE202016008177U1 (de) Bewegungsvektoraufteilung des letzten Frames
CN104754362B (zh) 使用精细划分块匹配的图像压缩方法
DE202016008164U1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
US20180242023A1 (en) Image Coding and Decoding Method and Device
DE202017007520U1 (de) Bewegungskompensation durch maschinelles Lernen
DE112022004563T5 (de) Hybride, auf einem neuronalen netzwerk basierende, end-to-end-bild- und video-codierverfahren
EP2373030A1 (de) Verfahren zur Kompression von Bilddaten
DE69915843T2 (de) Teilbandkodierung/-dekodierung
DE112012006541B4 (de) Verfahren zur Videokompression
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right