DE102014203560B4 - INDEXED COLOR HISTORY IN IMAGE ENCODING - Google Patents

INDEXED COLOR HISTORY IN IMAGE ENCODING Download PDF

Info

Publication number
DE102014203560B4
DE102014203560B4 DE102014203560.0A DE102014203560A DE102014203560B4 DE 102014203560 B4 DE102014203560 B4 DE 102014203560B4 DE 102014203560 A DE102014203560 A DE 102014203560A DE 102014203560 B4 DE102014203560 B4 DE 102014203560B4
Authority
DE
Germany
Prior art keywords
pixel
color
ich
current pixel
encoding
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.)
Active
Application number
DE102014203560.0A
Other languages
German (de)
Other versions
DE102014203560A1 (en
Inventor
Alexander Garland MacInnis
Frederick George Walls
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.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Avago Technologies International Sales Pte Ltd
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
Priority claimed from US14/182,172 external-priority patent/US9363517B2/en
Application filed by Avago Technologies International Sales Pte Ltd filed Critical Avago Technologies International Sales Pte Ltd
Publication of DE102014203560A1 publication Critical patent/DE102014203560A1/en
Application granted granted Critical
Publication of DE102014203560B4 publication Critical patent/DE102014203560B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with 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/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/94Vector quantisation

Abstract

System mit:
einem Speicher, der speichert:
eine indizierte Farbhistorie mit einem Eintrag, der einen Farbwert eines vorher codierten Pixels speichert;
einer Codierungslogik, die mit dem Speicher in Kommunikation steht und konfiguriert ist zum:
Erhalten eines aktuellen Pixels zur Codierung;
Bestimmen, ob das aktuelle Pixel durch Bezugnahme auf die indizierte Farbhistorie zu codieren ist, durch Bestimmen, wenn ein Farbwert des aktuellen Pixels innerhalb einer Differenzschwelle ausgehend von dem Farbwert des vorher codierten Pixels liegt;
Zugreifen auf einen Quantisierungsparameter für das aktuelle Pixel; und
Bestimmen der Differenzschwelle als eine Funktion des Quantisierungsparameters für das aktuelle Pixel; und
wenn bestimmt wird, dass das aktuelle Pixel unter Verwendung der indizierten Farbhistorie zu codieren ist:
Codieren des Pixels als ein Indexwert, welcher auf den Eintrag in der indizierten Farbhistorie Bezug nimmt; und
wenn nicht bestimmt wird, dass das aktuelle Pixel unter Verwendung der indizierten Farbhistorie zu codieren ist:
Codieren des aktuellen Pixels als ein unkomprimierter Farb- oder Pixelwert oder durch Einfügen in die indizierte Farbhistorie.

Figure DE102014203560B4_0000
System with:
a memory that stores:
an indexed color history having an entry storing a color value of a previously encoded pixel;
an encoding logic in communication with the memory and configured to:
obtaining a current pixel for encoding;
determining whether to encode the current pixel by reference to the indexed color history by determining if a color value of the current pixel is within a difference threshold from the color value of the previously encoded pixel;
accessing a quantization parameter for the current pixel; and
determining the difference threshold as a function of the quantization parameter for the current pixel; and
if it is determined that the current pixel is to be encoded using the indexed color history:
encoding the pixel as an index value that references the entry in the indexed color history; and
if not determining that the current pixel is to be encoded using the indexed color history:
Encoding the current pixel as an uncompressed color or pixel value or by inserting it into the indexed color history.
Figure DE102014203560B4_0000

Description

Technisches Gebiettechnical field

Diese Offenbarung bezieht sich auf Bildcodierung. Diese Offenbarung bezieht sich auch auf eine Verwendung einer indizierten Farbhistorie zum Codieren oder Decodieren eines Bilds.This disclosure relates to image coding. This disclosure also relates to using an indexed color history to encode or decode an image.

Hintergrundbackground

Schnelle Fortschritte in der Elektronik und der Nachrichtentechnik, die durch immense Kundenanforderungen angetrieben sind, haben zu der weltweiten Einführung von Vorrichtungen geführt, die eine große Vielfalt von Bild- oder Videoinhalten anzeigen. Beispiele derartige Vorrichtungen umfassen Smartphones, Flachschirmfernsehgeräte und Tabletcomputer. Verbesserungen in Bild- und Videoverarbeitungsmethoden werden die Fähigkeiten dieser Vorrichtungen weiter erhöhen.Rapid advances in electronics and communications, driven by immense customer demands, have led to the worldwide introduction of devices that display a wide variety of image or video content. Examples of such devices include smartphones, flat panel televisions, and tablet computers. Improvements in image and video processing methods will further increase the capabilities of these devices.

US 2007 / 0 041 635 A1 beschreibt ein System mit einem ersten Computer, der mit einem zweiten Computer über ein Netzwerk kommuniziert. Der zweite Computer umfasst ein Codiermodul, das ein Pixelfarbdatum codiert und an den ersten Computer überträgt. Das Codiermodul codiert das Pixelfarbdatum durch Erzeugen eines Bits, das die Anzahl unterschiedlicher Pixelfarbdaten anzeigt, die codiert wurden, seit ein Datum mit derselben Farbe wie das Pixelfarbdatum zuletzt codiert wurde. U.S. 2007/0 041 635 A1 describes a system having a first computer communicating with a second computer over a network. The second computer includes an encoding module that encodes and transmits pixel color data to the first computer. The encoding module encodes the pixel color datum by generating a bit that indicates the number of different pixel color datums that have been encoded since datum of the same color as the pixel color datum was last encoded.

US 8 599 214 B1 beschreibt ein Verfahren zum Kommunizieren eines Bildabschnitts zwischen einem ersten Computer und einem zweiten Computer. Das Verfahren umfasst ein Bestimmen eines Farbtabellenvergleichsergebnisses für einen Eingabepixelwert durch den ersten Computer, ein Erzeugen, basierend auf dem Ergebnis des Farbtabellenvergleichs, codierter Daten, ein Übermitteln der codierten Daten an den zweiten Computer und ein Aktualisieren der Farbtabelle gemäß dem Ergebnis des Farbtabellenvergleichs. U.S. 8,599,214 B1 describes a method for communicating a portion of an image between a first computer and a second computer. The method includes the first computer determining a color table comparison result for an input pixel value, generating encoded data based on the color table comparison result, transmitting the encoded data to the second computer, and updating the color table according to the color table comparison result.

US 5 818 032 A beschreibt eine Vorrichtung und ein Verfahren zum Speichern großer Mengen digitaler Daten in Farbhalbton-Mikropunkten fürFarblaser- oder Tintenstrahldrucker mit hoher Auflösung. U.S. 5,818,032 A describes an apparatus and method for storing large amounts of digital data in color halftone microdots for high resolution color laser or inkjet printers.

US 6 983 074 B1 beschreibt ein Verfahren zum Komprimieren eines Echtfarbenbilds, wobei eine Farbtabelle eine Zuordnung von Echtfarben zu Indexfarbwerten definiert. U.S. 6,983,074 B1 describes a method for compressing a true color image where a color table defines a mapping of true colors to index color values.

US 6 091 850 A beschreibt ein Verfahren zum Komprimieren und Dekomprimieren von Grafiken. U.S. 6,091,850 A describes a method for compressing and decompressing graphics.

EP 2 373 030 A1 beschreibt ein Verfahren zur Kompression von Bilddaten, welches ein Codieren von Pixelwerten für Pixel und ein Bestimmen geschätzter Pixelwerte der Pixel in Abhängigkeit von dem Pixelwert benachbarter Pixel umfasst. EP 2 373 030 A1 describes a method for compressing image data, which includes coding pixel values for pixels and determining estimated pixel values of the pixels depending on the pixel value of neighboring pixels.

In Übereinstimmung mit der vorliegenden Erfindung werden ein System mit den Merkmalen des Anspruchs 1, ein Verfahren mit den Merkmalen des Anspruchs 8 und ein Produkt mit den Merkmalen des Anspruchs 13 bereitgestellt.In accordance with the present invention a system having the features of claim 1, a method having the features of claim 8 and a product having the features of claim 13 are provided.

Vorteilhafte Weiterbildungen ergeben sich aus den abhängigen Unteransprüchen.Advantageous developments result from the dependent subclaims.

Figurenlistecharacter list

  • 1 zeigt ein Beispiel einer Vorrichtung, die eine Bildverarbeitung unter Verwendung einer indizierten Farbhistorie durchführt. 1 Fig. 12 shows an example of an apparatus that performs image processing using indexed color history.
  • 2 zeigt eine Beispielarchitektur eines Codierers. 2 shows an example architecture of an encoder.
  • 3 zeigt eine beispielhafte Darstellung der indizierten Farbhistorie. 3 shows an example representation of the indexed color history.
  • 4 zeigt eine weitere beispielhafte Darstellung der indizierten Farbhistorie. 4 shows another exemplary representation of the indexed color history.
  • 5 zeigt eine beispielhafte Darstellung der indizierten Farbhistorie. 5 shows an example representation of the indexed color history.
  • 6 zeigt ein Beispiel einer Logik, die eine Vorrichtung zum Codieren von Bilddaten implementieren kann. 6 Figure 12 shows an example of logic that an apparatus for encoding image data may implement.
  • 7 zeigt ein Beispiel eines Systems zum Verarbeitung von Bilddaten. 7 shows an example of a system for processing image data.
  • 8 zeigt ein Beispiel einer Logik, die eine Vorrichtung zum Decodieren von Bilddaten implementieren kann. 8th Figure 12 shows an example of logic that an apparatus for decoding image data may implement.

Ausführliche BeschreibungDetailed description

Die nachstehende Erörterung nimmt Bezug auf eine Bildcodierung unter Verwendung einer indizierten Farbhistorie bzw. -vorgeschichte. Die nachstehend beschriebenen Methoden und Systeme können die Effizienz bei einer Bildcodierung (z.B. einer Codierung oder Decodierung) verbessern, insbesondere für fein detaillierten Bildinhalt wie etwa Text. Eine Bildcodierung unter Verwendung einer indizierten Farbhistorie kann in effizient codierten Farben (z.B. Farbwerten oder Pixel- bzw. Bildelementwerten) resultieren, die in einem Bild vorher aufgetreten sind, wie etwa Farben aus einem vorher verarbeiteten Teil des Bilds, an einer vorhergehenden Linien- oder Zeilenposition in dem Bild, die sich an einer Position über, unter, links von und/ oder rechts von einem aktuellen Pixel bzw. Bildelement mit einer bestimmten Farbe befindet, oder an anderen Positionen. Auch eine Bildkompression unter Verwendung einer indizierten Farbhistorie kann in einer effizienten Codierung von ähnlichen, aber nicht identischen, Farben resultieren, die in dem Bild vorher aufgetreten sind, wie etwa ähnliche Farben, die mit einer beliebigen Anzahl von Ähnlichkeitskriterien mit Bezug auf die eine ursprüngliche Farbe übereinstimmen bzw. zusammenpassen.The discussion below makes reference to image encoding using indexed color history. The methods and systems described below can improve efficiency in image coding (eg, encoding or decoding), particularly for finely detailed image content such as text. Image encoding using an indexed color history can result in efficiently encoded colors (eg, color values or pixel values) that previously occurred in an image, such as colors from a previously processed portion of the image, at a previous line or line position in the image that is at a position above, below, to the left of, and/or to the right of a current pixel or picture element with a specific color, or at other positions. Also using an image compression an indexed color history can result in efficient coding of similar, but not identical, colors that have previously occurred in the image, such as similar colors that match any number of similarity criteria with respect to the one original color.

Die Vorrichtungen, die eine indizierte Farbhistorie enthalten bzw. einbeziehen, implementieren oder unter-/halten bzw. pflegen oder eine Codierung oder Decodierung unter Verwendung einer indizierten Farbhistorie durchführen, wie es nachstehend beschrieben ist, können viele unterschiedliche Formen annehmen. Beispielsweise können die Vorrichtungen Set-Top-Boxen bzw. Digitalempfänger, Mobiltelefone, Smartphones, Laptopcomputer, Organizer, Taschencomputer, Tabletcomputer, tragbare E-Mail-Geräte oder in einem Speicher durch einen Prozessor ausgeführte Prozesse oder Threads sein. Weitere Beispiele von Vorrichtungen umfassen Fernsehgeräte, hochauflösende (z.B. Blue-Ray-(TM) oder DVD-Audio-) Medienabspielgeräte oder Heimmedienserver. Solche Vorrichtungen können in praktisch jeder Umgebung gefunden werden, einschließlich dem Zuhause, dem Geschäft, dem öffentlichen Raum und den Automobilien.The devices that include, implement, or maintain indexed color history, or perform encoding or decoding using indexed color history, as described below, may take many different forms. For example, the devices may be set-top boxes, cell phones, smart phones, laptop computers, personal organizers, handheld computers, tablet computers, portable email devices, or processes or threads executed in memory by a processor. Other examples of devices include televisions, high definition (e.g., Blue-Ray (TM) or DVD-Audio) media players, or home media servers. Such devices can be found in virtually any environment, including the home, business, public spaces, and automobiles.

1 zeigt ein Beispiel einer Vorrichtung 100, die eine Bildverarbeitung einschließlich einer Codierung von Bilddaten unter Verwendung einer indizierten Farbhistorie durchführt. Die Vorrichtung 100 umfasst eine Kommunikationsschnittstelle 110 und eine Benutzerschnittstelle 116. Die Kommunikationsschnittstelle 110 kann eine Kommunikation über eine beliebige einer vielfältigen Reihe von drahtgebundenen oder drahtlosen Formaten, Protokollen, Modulationen, Frequenzkanälen, Bitraten und Codierungen unterstützen. Somit kann die Kommunikationsschnittstelle 110 eine Kommunikation unterstützen unter Verwendung von der 802.11a/b/g/n/ac-Standards, der 60 GHz-WiGig/802.11TGad-Spezifikation, Bluetooth, Global System for Mobile Communications (GSM), Zeitmehrfachzugriff (TDMA), Frequenzmehrfachzugriff (FDMA), Codemehrfachzugriff (CDMA), Ethernet, Kabel (z.B. DOCSIS), DSL, Multimedia over Coax Alliance (MoCA), Stromleitung (z.B. HomePlug AV), Ethernet Passive Optical Network (EPON), Gigabit Passive Optical Network (GPON), oder andere drahtgebundene oder drahtlose Zugriffsmethoden oder -protokolle. 1 12 shows an example of an apparatus 100 that performs image processing including encoding of image data using an indexed color history. The device 100 includes a communication interface 110 and a user interface 116. The communication interface 110 may support communication over any of a variety of wired or wireless formats, protocols, modulations, frequency channels, bit rates, and encodings. Thus, the communication interface 110 can support communication using the 802.11a/b/g/n/ac standards, the 60 GHz WiGig/802.11TGad specification, Bluetooth, Global System for Mobile Communications (GSM), Time Division Multiple Access (TDMA ), Frequency Division Multiple Access (FDMA), Code Division Multiple Access (CDMA), Ethernet, Cable (e.g. DOCSIS), DSL, Multimedia over Coax Alliance (MoCA), Powerline (e.g. HomePlug AV), Ethernet Passive Optical Network (EPON), Gigabit Passive Optical Network ( GPON), or other wired or wireless access methods or protocols.

Die Vorrichtung 100 umfasst Systemlogik 112. Die Systemlogik 112 kann jede Kombination von Hardware, Software, Firmware oder anderer Logik umfassen. Device 100 includes system logic 112. System logic 112 may include any combination of hardware, software, firmware, or other logic.

Die Systemlogik 112 kann zum Beispiel in einem System-auf-Chip (SoC), einer anwendungsspezifischen integrierten Schaltung (ASIC) oder anderen Schaltungen implementiert sein. Die Systemlogik 112 ist Teil der Implementierung von jeglicher gewünschter Funktionalität in der Vorrichtung 100. Im Kontext einer Codierung von Bilddaten kann die Systemlogik 112 einen Codierer 114 umfassen. Der Codierer 114 kann jede beliebige Bildverarbeitung, die nachstehend beschrieben ist, einschließlich einer Codierung von Bilddaten unter Verwendung einer indizierten Farbhistorie, in Hardware, Software oder beidem implementieren. In einigen Implementierungen implementiert die Systemlogik 112 den Codierer 114 und eine indizierte Farbhistorie in Hardware, z.B. als dedizierte Bildverarbeitungsschaltungen.The system logic 112 may be implemented in a system-on-chip (SoC), an application specific integrated circuit (ASIC), or other circuits, for example. The system logic 112 is part of the implementation of any desired functionality in the device 100. In the context of encoding image data, the system logic 112 may include an encoder 114. The encoder 114 may implement any of the image processing described below, including encoding image data using an indexed color history, in hardware, software, or both. In some implementations, the system logic 112 implements the encoder 114 and indexed color history in hardware, e.g., as dedicated image processing circuitry.

In einigen Implementierungen umfasst die Systemlogik 112 ein oder mehrere Prozessoren 120 und Speicher 121. Der Speicher 121 speichert zum Beispiel Systemanweisungen 122, einschließlich Codierungsanweisungen 124, die der Prozessor 120 zum Codieren von Bilddaten ausführt. Der Speicher 121 kann auch die indizierte Farbhistorie (ICH: „Indexed Color History“) 126 (z.B. als eine Hardwareregisterdatei), Betriebsparameter 127 und zu codierende Daten 128, z.B. Pixeldaten eines Bilds, speichern. Pixeldaten können sich auf einen Farbwert des Pixels bzw. Bildelements beziehen oder einen solchen umfassen.In some implementations, system logic 112 includes one or more processors 120 and memory 121. Memory 121 stores, for example, system instructions 122, including encoding instructions 124, that processor 120 executes to encode image data. Memory 121 may also store Indexed Color History (ICH) 126 (e.g., as a hardware register file), operating parameters 127, and data to be encoded 128, e.g., pixel data of an image. Pixel data may refer to or include a color value of the pixel or picture element.

Die Systemlogik 112 kann die ICH 126 als einen Speicher (z.B. Cache, Tabelle oder geordnete Liste) implementieren, der einen Satz von aktuell verwendeten Farbwerten oder Pixelwerten unter-/hält. Der Codierer 114 unter-/hält die ICH 126. Der Codierer 114 kann die ICH 126 zum Speichern einer konfigurierbaren Anzahl von Einträgen implementieren. Die ICH 126 kann eine vorbestimmte Anzahl von Einträgen, wie etwa 8, 16, 32, 64, oder jede andere Anzahl von Einträgen speichern. Einträge in der ICH 126 können eine Farbbezeichnung speichern, wie etwa durch einen Farbwert oder einen Pixelwert. Der Codierer 114 kann einen Farbwert als einen Zahlenwert (oder ein Tupel von Zahlen) darstellen, der (das) Teil eines Farbraums (oder Farbmodells) ist, wie etwa des RGB-Farbraums, des YCoCr-Farbraums, des YCoCg-Farbraums, des CMYK-Farbraums oder jedes beliebigen anderen Farbraums. In einigen Implementierungen codiert der Codierer abhängig von dem Format des Eingangsbilds 114 Bilddaten in YCoCg oder YCbCr. Der Codierer 114 kann ein RGB-Eingangsbild vor einer Codierung in YCoCg wandeln. Ein Decodierer kann decodierten YCoCg-Inhalt vor einer Ausgabe in RGB wandeln.System logic 112 may implement ICH 126 as a memory (e.g., cache, table, or ordered list) that maintains a set of currently used color values or pixel values. The encoder 114 maintains the ICH 126. The encoder 114 may implement the ICH 126 to store a configurable number of entries. The ICH 126 may store a predetermined number of entries, such as 8, 16, 32, 64, or any other number of entries. Entries in the ICH 126 can store a color designation, such as by a color value or a pixel value. The encoder 114 may represent a color value as a number value (or a tuple of numbers) that is part of a color space (or color model), such as the RGB color space, the YCoCr color space, the YCoCg color space, the CMYK -color space or any other color space. In some implementations, depending on the format of the input image 114, the encoder encodes image data in YCoCg or YCbCr. The encoder 114 may convert an input RGB image to YCoCg prior to encoding. A decoder can convert decoded YCoCg content to RGB before output.

Der Codierer 114 kann die ICH 126 derart implementieren, dass Einträge Speicherorte mit mehreren Bits sind, die einen Farbwert halten. Ein Farbwert kann sich auf eine Darstellung einer Farbe in einem bestimmten Farbraum beziehen. Zum Beispiel, wenn RGB24-Bild-oder Videodaten, die in YCoCg gewandelt wurden, codiert werden, kann die Y-Komponente eines YCoCg-Farbwerts mit 8 Bits codiert werden und können die Co- & Cg-Komponenten jeweils mit 9 Bits codiert werden. In diesem Beispiel kann die ICH 126 Einträge in der ICH 126 mit 26 Bits zuweisen, um einen YCoCg-Farbwert zu speichern. Ein Eintrag kann breiter sein, als dies zum Speichern eines Farbwerts notwendig ist. Zum Beispiel kann jeder Eintrag 32 Bits breit oder 64 Bits breit sein und dadurch zum Beispiel einen nahtlosen Betrieb mit anderen Farbräumen ermöglichen, die zusätzliche Bits pro Farbwert verwenden. Als eine weitere Abwandlung kann der Codierer 114 ICH-Einträge implementieren, die schmäler sind als die Anzahl von Bits zum Speichern eines Farbwerts für einen bestimmten Farbraum. In dieser Abwandlung kann der Codierer 114 einen Farbwert auf eine kleinere Bittiefe quantisieren oder runden, um ihn in schmäleren Einträgen der ICH 126 zu speichern.The encoder 114 may implement the ICH 126 such that entries are multiple bit storage locations that hold a color value. A color value can refer to a representation of a color in a specific color space. To the Bei spiel, when RGB24 image or video data converted to YCoCg is encoded, the Y component of a YCoCg color value can be encoded with 8 bits, and the Co & Cg components can be encoded with 9 bits each. In this example, the ICH 126 can allocate entries in the ICH 126 with 26 bits to store a YCoCg color value. An entry can be wider than necessary to store a color value. For example, each entry can be 32 bits wide or 64 bits wide, allowing seamless operation with other color spaces that use additional bits per color value, for example. As a further variation, encoder 114 may implement ICH entries that are narrower than the number of bits to store a color value for a particular color space. In this variation, the encoder 114 may quantize or round a color value to a smaller bit depth in order to store it in narrower ICH 126 entries.

Der Codierer 114 kann Bilddaten unter Verwendung einer ICH-Codierung oder einer Nicht-ICH-Codierung codieren. Beim Durchführen einer ICH-Codierung kann der Codierer 114 Bilddaten durch Bezugnahme auf die ICH 126 codieren, z.B. durch Darstellung von Pixel in einem codierten Bitstrom als Indexwerte in die ICH 126. Beim Durchführen einer Nicht-ICH-Codierung kann der Codierer 114 Bilddaten unter Verwendung eines anderen Codierungsverfahrens ohne Bezugnahme auf die ICH 126 codieren, wobei Beispiele hierfür die Codierungsverfahren umfassen, die beschrieben sind in der US-Anmeldung Nr. 12/720,273 , eingereicht am 9. März 2010, und der US-Anmeldung Nr. 14/044,627 , eingereicht am 2. Oktober 2013, die beide hiermit mittels Bezugnahme hierin vollständig eingebunden sind. Zum Beispiel kann der Codierer 114 eines der prädiktiven Codierungsverfahren nutzen, die in der US-Anmeldung Nr. 14/044,627 beschrieben sind, wenn er eine Nicht-ICH-Codierung durchführt.The encoder 114 can encode image data using ICH coding or non-ICH coding. When performing ICH encoding, the encoder 114 may encode image data by referencing the ICH 126, eg, by representing pixels in an encoded bitstream as index values into the ICH 126. When performing non-ICH encoding, the encoder 114 may encode image data using of another coding scheme without reference to the ICH 126, examples of which include the coding schemes described in US Pat U.S. Application No. 12/720,273 , filed March 9, 2010, and the U.S. Application No. 14/044,627 , filed October 2, 2013, both of which are hereby incorporated herein by reference in their entirety. For example, the encoder 114 can use one of the predictive coding methods described in U.S. Application No. 14/044,627 are described when performing non-ICH encoding.

2 zeigt eine Beispielarchitektur 200 eines Codierers 114. Die beispielhafte Architektur 200 kann eine Codierung von Pixel bzw. Bildelementen unter Verwendung von entweder einer prädiktiven Codierung oder einer ICH-Codierung unterstützen. 2 12 shows an example architecture 200 of an encoder 114. The example architecture 200 may support coding of pixels using either predictive coding or ICH coding.

Der Codierer 114 kann Bitströme erzeugen, die präzise mit einer unabhängig spezifizierten bpp- (Bits-pro-Pixel-) Rate im Einklang stehen können. Die bpp-Rate kann in Form von Bits pro Pixelzeit spezifiziert sein. Bits pro Pixelzeit können algorithmisch spezifiziert werden, da die Einheit einer Pixelzeit sowohl am Eingang als auch am Ausgang des Codierers 114 gleich sein kann. Die Anzahl von Bits, die jedes Pixel oder jede Gruppe von Pixel codieren, kann erheblich variieren. In der beispielhaften Architektur 200 ermöglicht ein Ratenpuffer 202 eine Wandlung der variablen Anzahl von Bits, die zum Codieren jeder Gruppe verwendet werden, z.B. in eine konstante bpp-Rate. Zu diesem Zweck kann der Codierer 114 die Ratensteuereinheit 204 umfassen. Die Ratensteuereinheit 204 kann bestimmen, ob der Quantisierungsschritt zu inkrementieren, zu dekrementieren oder unverändert zu lassen ist.The encoder 114 can generate bit streams that can be precisely consistent with an independently specified bpp (bits per pixel) rate. The bpp rate can be specified in terms of bits per pixel time. Bits per pixel time can be specified algorithmically since the unit of a pixel time can be the same at both the encoder 114 input and output. The number of bits encoding each pixel or group of pixels can vary significantly. In the example architecture 200, a rate buffer 202 allows the variable number of bits used to encode each group to be converted, e.g., to a constant bpp rate. The encoder 114 may include the rate control unit 204 for this purpose. The rate control unit 204 can determine whether to increment, decrement, or leave the quantization step unchanged.

Der Codierer 114 kann eine Farbraumwandlungslogik 206 umfassen, z.B. eine Logik zur Wandlung einer RGB-Eingabe auf reversibles YCoCg. Ein Eingangspuffer 208 kann die gewandelte Eingabe speichern. In 2 ist auch eine Prädiktion-, Quantisierung- und Rekonstruktion- (PQR-) Logik 210 gezeigt, die eine Prädiktion von Abtastwerten und eine Erzeugung von Restwerten implementiert. In einigen Implementierungen sagt die PQR-Logik 210 Pixelkomponenten vorher und quantisiert diese, was zu quantisierten Resten führt. Die PQR-Logik 210 kann eine Pixelkomponente aus vorher codierten und rekonstruierten Pixelkomponenten vorhersagen, und sie kann mehrere (z.B. drei) Prädiktoren umfassen: eine adaptive modifizierte Medianprädiktion (MMAP: „Modified Median Adaptive Prediction“), eine Mittelpunktprädiktion (MPP: „Mid-Point Prediction“) und eine Blockprädiktion (BP: „Block Prediction“). Die PQR-Logik 210 implementiert auch eine Quantisierung von Restwerten und eine Rekonstruktion von Abtastwerten.The encoder 114 may include color space conversion logic 206, such as logic to convert an RGB input to reversible YCoCg. An input buffer 208 can store the converted input. In 2 Also shown is prediction, quantization and reconstruction (PQR) logic 210 that implements prediction of samples and generation of residuals. In some implementations, the PQR logic 210 predicts and quantizes pixel components, resulting in quantized residuals. The PQR logic 210 may predict a pixel component from previously encoded and reconstructed pixel components, and may include multiple (e.g., three) predictors: modified median adaptive prediction (MMAP), midpoint prediction (MPP), Point Prediction”) and a Block Prediction (BP: “Block Prediction”). The PQR logic 210 also implements residual quantization and sample reconstruction.

In 2 ist auch die (VLC-)Logik einer Codierung mit variabler Länge gezeigt, die eine Entropiecodierung unter Verwendung von DSU-VLC (Delta Size Unit Variable-Length Coding) implementieren kann. Die VLC-Logik 214 kann zum Beispiel die quantisierten Abtastwerte unter Verwendung ihrer natürlichen 2 komplementären Binärwerte codieren. Die Anzahl von Bits, die der Codierer für Abbildung und Codierung variabler Länge 206 verwendet, um jeden Wert zu codieren, kann dynamisch durch eine Kombination von einer jüngsten Historie von codierten Werten der gleichen Pixelkomponente und einem mit jeder Einheit von Abtastwerten in Zusammenhang stehenden Präfixwert dynamisch bestimmt werden. Der Eingangspuffer 208 liefert Abtastwerte an die Ebenheitsbestimmungslogik 218.In 2 also shows the (VLC) logic of variable-length coding that can implement entropy coding using DSU-VLC (Delta Size Unit Variable-Length Coding). For example, the VLC logic 214 may encode the quantized samples using their natural 2's complement binary values. The number of bits that the variable-length mapping and coding encoder 206 uses to encode each value can be dynamically determined by a combination of a recent history of encoded values of the same pixel component and a prefix value associated with each unit of samples to be determined. The input buffer 208 provides samples to the flatness determination logic 218.

Die beispielhafte Architektur 200, die in 2 gezeigt ist, umfasst die ICH 126. Der Codierer 114 bestimmt, ob Pixeldaten unter Verwendung der ICH 126 oder gemäß einem anderen Codierungsverfahren zu codieren sind. In einigen Abwandlungen bestimmt der Codierer 114, ob Pixel unter Verwendung einer ICH-Codierung oder einer Nicht-ICH-Codierung zu codieren sind, pro Gruppe. Der Codierer 114 kann eine Gruppe von Pixel als zum Beispiel 1, 2, 3, 4, 6, 8 oder jede beliebige andere Anzahl von Pixel identifizieren, die in einer beliebigen Art und Weise organisiert sind, z.B. über eine Abtastzeile hinweg, in einem bestimmten Teil eines Bilds, in einer eindimensionalen oder mehrdimensionalen (z.B. 2-dimensionalen) Anordnung, egal ob gänzlich zusammenhängend oder nicht zusammenhängend, oder in einer anderen Art und Weise. Zum Beispiel kann eine Gruppe von 8 Pixel zwei Sätze von 2 x 2 zusammenhängenden Pixel darstellen, wobei jeder Satz mit dem anderen Satz zusammenhängend oder nicht zusammenhängend ist. Als ein weiteres Beispiel kann die Gruppe von 8 Pixel ein zusammenhängender 2 x 4-Block von Pixel sein.The example architecture 200 that is used in 2 1 includes the ICH 126. The encoder 114 determines whether to encode pixel data using the ICH 126 or according to another encoding method. In some variations, encoder 114 determines whether to encode pixels using ICH encoding or non-ICH encoding, per group. The encoder 114 may identify a group of pixels as, for example, 1, 2, 3, 4, 6, 8, or any other number of pixels organized in any manner, eg, across a scan line across, in a specific part of an image, in a one-dimensional or multi-dimensional (eg, 2-dimensional) arrangement, whether fully contiguous or discontinuous, or in some other way. For example, a group of 8 pixels may represent two sets of 2 x 2 contiguous pixels, each set being contiguous or non-contiguous to the other set. As another example, the group of 8 pixels can be a contiguous 2 x 4 block of pixels.

Der Codierer 114 kann die Verwendung einer ICH-Codierung unter Verwendung von einem beliebigen von vielfältigen Algorithmen oder Kriterien auswählen, von denen jeder/jedes in den Betriebsparametern 127 spezifiziert sein kann. Der Auswahlalgorithmus oder das -kriterium, der oder das durch den Codierer 114 eingesetzt wird, muss nicht in einem Decodierer verwirklicht sein. Wie es nachstehend ausführlicher beschrieben ist, kann der Codierer 114 in einem codierten Bitstrom angeben, ob ein Eingangspixel oder eine Gruppe von Eingangspixel unter Verwendung einer ICH-Codierung oder einem anderen Codierungsverfahren codiert wurde.The encoder 114 may select to use ICH encoding using any of a variety of algorithms or criteria, any of which may be specified in the operational parameters 127 . The selection algorithm or criterion employed by encoder 114 need not be implemented in a decoder. As described in more detail below, encoder 114 may indicate in an encoded bit stream whether an input pixel or group of input pixels was encoded using ICH encoding or another encoding method.

In einigen Implementierungen bestimmt der Codierer 114, ob eine ICH-Codierung für eine Gruppe von Eingangspixel zu verwenden ist, gemäß Ähnlichkeitskriterien mit Bezug auf Einträge in der ICH 126. Anders ausgedrückt kann der Codierer 114 bestimmen, eine ICH-Codierung für eine aktuelles Eingangspixel zu verwenden, wenn ein Eintrag in der ICH 126 die Ähnlichkeitskriterien mit Bezug auf das aktuelle Eingangspixel erfüllt. Der Codierer 114 kann bestimmen, eine ICH-Codierung für eine Gruppe von Pixel zu verwenden, wenn eine Schwellenanzahl oder ein -prozentsatz (z.B. alle) der Eingangspixel in der Gruppe die Ähnlichkeitskriterien erfüllen. In dieser Hinsicht kann der Codierer 114 den Farbwert des/der Eingangspixels/-pixel mit den in Einträgen der ICH 126 gespeicherten Farbwerten vergleichen.In some implementations, encoder 114 determines whether to use ICH encoding for a group of input pixels according to similarity criteria with reference to entries in ICH 126. In other words, encoder 114 may determine to assign ICH encoding for a current input pixel use when an entry in the ICH 126 meets the similarity criteria with respect to the current input pixel. The encoder 114 may determine to use ICH encoding for a group of pixels if a threshold number or percentage (e.g., all) of the input pixels in the group meet the similarity criteria. In this regard, the encoder 114 may compare the color value of the input pixel(s) to the color values stored in ICH 126 entries.

Der Codierer 114 kann ein oder mehrere Ähnlichkeitskriterien mit Bezug auf die Differenz zwischen dem Farbwert eines zu codierenden Eingangspixels und dem Farbwert eines Eintrags in der ICH 126 anwenden, wobei einige Beispiele hierfür als Nächstes dargelegt sind. Als ein erstes Beispiel kann der Codierer 114 bestimmen, ob eine Differenz zwischen Farbwerten eine Differenzschwelle überschreitet, z.B. wie sie zwischen einer oder mehreren Komponenten eines Farbraums gemessen wird, oder wie sie durch den Abstand zwischen zwei Farbwerten in dem Farbraum gemessen wird. Ähnlichkeitskriterien können erfüllt sein, wenn die Differenz zwischen einer oder mehreren Komponenten oder die Summe der Differenz (z.B. die Absolutdifferenz) zwischen einer oder mehreren Komponenten oder eine ausgewählte Funktion des/der Komponenten kleiner ist als die Differenzschwelle. In dieser Hinsicht können Einträge in der ICH 126 die Ähnlichkeitskriterien erfüllen, wenn der Farbwert des zu codierenden Eingangspixels in seinem Farbwert von demjenigen von einem oder mehreren Einträgen in der ICH 126 um weniger als eine Differenzschwelle differiert, z.B. wenn der Farbwert des Eingangspixels innerhalb einer Differenzschwelle ausgehend von dem Farbwert eines Eintrags in der ICH 126 liegt.The encoder 114 may apply one or more similarity criteria related to the difference between the color value of an input pixel to be encoded and the color value of an entry in the ICH 126, some examples of which are set forth next. As a first example, the encoder 114 may determine whether a difference between color values exceeds a difference threshold, e.g., as measured between one or more components of a color space or as measured by the distance between two color values in the color space. Similarity criteria can be met if the difference between one or more components or the sum of the differences (e.g. the absolute difference) between one or more components or a selected function of the component(s) is smaller than the difference threshold. In this regard, entries in the ICH 126 may meet the similarity criteria if the color value of the input pixel to be encoded differs in color value from that of one or more entries in the ICH 126 by less than a difference threshold, e.g. if the color value of the input pixel is within a difference threshold based on the color value of an entry in the ICH 126.

In einigen Abwandlungen können die Ähnlichkeitskriterien eine gemeinsame bzw. allgemeine Differenzschwelle spezifizieren, die für ein oder mehrere Komponenten eines Farbwerts anwendbar ist, z.B. eine gemeinsame bzw. allgemeine Differenzschwelle für die Vergleiche von den Y-, Co- und Cg-Komponenten zwischen dem Eingangspixel und den Einträgen der ICH 126. In anderen Abwandlungen können die Ähnlichkeitskriterien jeweilige Differenzschwellen spezifizieren, die für einzelne Komponenten eines Farbwerts anwendbar sind, z.B. eine erste Differenzschwelle, die für Vergleiche der Y-Komponente anwendbar ist, eine zweite Differenzschwelle, die für Vergleiche der Co-Komponente anwendbar ist, und eine Cg-Differenzschwelle, die für Vergleiche der Cg-Komponente anwendbar ist. Als eine weitere Alternative oder eine zusätzliche Abwandlung können die Ähnlichkeitskriterien bestimmte Differenzschwellen spezifizieren, die für unterschiedliche Pixel in einer Gruppe spezifisch sind.In some variations, the similarity criteria may specify a common difference threshold applicable to one or more components of a color value, e.g. a common difference threshold for the comparisons of the Y, Co, and Cg components between the input pixel and the entries of ICH 126. In other variations, the similarity criteria may specify respective difference thresholds applicable to individual components of a color value, e.g. a first difference threshold applicable to comparisons of the Y component, a second difference threshold applicable to comparisons of the co- component is applicable and a Cg difference threshold applicable for comparisons of the Cg component. As a further alternative or additional modification, the similarity criteria may specify certain difference thresholds specific to different pixels in a group.

Der Codierer 114 kann die Differenzschwelle als eine Funktion von einer der mehreren Variablen bestimmen, die bei einer Nicht-ICH-Codierung verwendet werden. Als Beispiele kann der Codierer 114 die Differenzschwelle als den Maximal-, Minimal- oder Durchschnittsfehler festlegen, der aus einer Codierung von Pixel in einer Gruppe unter Verwendung eines Nicht-ICH-Codierungsverfahrens erhalten werden kann. In diesen Situationen können die Ähnlichkeitskriterien Fehlerkriterien umfassen. Um eine weitere Veranschaulichung im Kontext einer Quantisierung bereitzustellen, bestimmt der Codierer 114 die Differenzschwelle als eine Funktion eines Quantisierungsparameters (QP), der für ein aktuelles Pixel oder eine aktuelle Pixelgruppe gelten wurde, wenn der Codierer 114 eine Nicht-ICH-Codierung, z.B. eine prädiktive Codierung, zu verwenden hätte. In dieser Veranschaulichung kann ein Nicht-ICH-Codierungsalgorithmus eine Verwendung eines QP-Werts von 4 für das erste Pixel und eines QP-Werts von 5 für das zweite und das dritte Pixel in einer Gruppe von drei Pixel spezifizieren. Die entsprechenden maximalen Quantisierungsfehler können 24/2 = 8 für das erste Pixel und 25/2 = 16 für das zweite und das dritte Pixel sein. Der Codierer 114 kann eine Differenzschwelle von 8 für Komponenten des ersten Pixels und eine Differenzschwelle von 16 für Komponenten des zweiten und des dritten Pixels anwenden, wenn er diese mit Einträgen in der ICH 126 vergleicht. Somit kann der Codierer 114 bestimmen, ob die Ähnlichkeitskriterien erfüllt sind, indem er bestimmt, ob die Absolutdifferenz für jeder Komponente für ein zu codierendes Eingangspixel und einen Eintrag in der ICH 126 diese Differenzschwellen überschreitet. In dieser besonderen Veranschaulichung bestimmt der Codierer 114, dass die Ähnlichkeitskriterien erfüllt sind, wenn zum Beispiel der Absolutwert der Differenz zwischen den Farbwertkomponenten des Eingangspixels und den Farbwertkomponenten des Farbwerts eines Eintrags in der ICH 126 um weniger als die Differenzschwelle differiert, z.B. um 8 für Vergleiche mit Farbwertkomponenten des ersten Pixels und um 16 für Vergleiche mit Farbwertkomponenten des zweiten und des dritten Pixels.The encoder 114 can determine the difference threshold as a function of one of several variables used in non-ICH encoding. As examples, the encoder 114 can set the difference threshold as the maximum, minimum, or average error that can be obtained from encoding pixels in a group using a non-ICH encoding method. In these situations, the similarity criteria may include error criteria. To provide further illustration in the context of quantization, the encoder 114 determines the difference threshold as a function of a quantization parameter (QP) that would apply to a current pixel or group of pixels if the encoder 114 used a non-ICH encoding, eg, a predictive coding. In this illustration, a non-ICH coding algorithm may specify using a QP value of 4 for the first pixel and a QP value of 5 for the second and third pixels in a group of three pixels. The corresponding maximum quantization errors can be 2 4 /2 = 8 for the first pixel and 2 5 /2 = 16 for the second and third pixels. The encoder 114 may have a difference threshold of 8 for components of the first pixels and a difference threshold of 16 for second and third pixel components when comparing them to entries in the ICH 126. Thus, the encoder 114 can determine whether the similarity criteria are met by determining whether the absolute difference for each component for an input pixel to be encoded and an entry in the ICH 126 exceeds these difference thresholds. In this particular illustration, the encoder 114 determines that the similarity criteria are met if, for example, the absolute value of the difference between the color value components of the input pixel and the color value components of the color value of an entry in the ICH 126 differs by less than the difference threshold, e.g., by 8 for comparisons with color value components of the first pixel and by 16 for comparisons with color value components of the second and third pixels.

Als zusätzliches Beispiel von Ähnlichkeitskriterien kann der Codierer 114 einen anderen Differenzschwellenwert als den maximalen momentan anwendbaren Quantisierungsfehler anwenden. Zum Beispiel, wenn ein maximaler Quantisierungsfehler eine vorbestimmte Fehlerstufe (z.B. einen Schwellenwert) überschreitet, kann der Codierer 114 eine Differenzschwelle anwenden, die kleiner ist als der maximale momentan anwendbare Quantisierungsfehler. Wenn der maximale Quantisierungsfehler die vorbestimmte Fehlerstufe nicht überschreitet, kann der Codierer 114 eine Differenzschwelle anwenden, die gleich dem maximalen momentan anwendbaren Quantisierungsfehler ist. Als eine Veranschaulichung kann der Codierer 114, falls QP = 5 gilt und der Maximalfehler gleich 16 ist und eine vorbestimmte Fehlerstufe gleich 8 ist, einen Differenzschwellenwert von weniger als 16 anwenden, zum Beispiel 8. Falls QP = 4 gilt und der maximale Fehler 8 ist, kann der Codierer einen Differenzschwellenwert anwenden, der gleich dem Maximalfehler ist, der 8 ist.As an additional example of similarity criteria, encoder 114 may apply a difference threshold other than the maximum currently applicable quantization error. For example, if a maximum quantization error exceeds a predetermined error level (e.g., a threshold), the encoder 114 may apply a difference threshold that is less than the maximum currently applicable quantization error. If the maximum quantization error does not exceed the predetermined error level, the encoder 114 may apply a difference threshold equal to the maximum currently applicable quantization error. As an illustration, if QP=5 and the maximum error is 16 and a predetermined error level is 8, the encoder 114 may apply a difference threshold of less than 16, for example 8. If QP=4 and the maximum error is 8 , the encoder can apply a difference threshold equal to the maximum error, which is 8.

In einigen Abwandlungen erfordert eine Erfüllung der Ähnlichkeitskriterien eine identische Übereinstimmung zwischen Farbwerten eines Eingangspixels und eines Eintrags in der ICH 126. Das heißt, dass der Codierer 114 eine Erfüllung der Ähnlichkeitskriterien bestimmt, wenn ein Eintrag in der ICH 126 mit dem Eingangspixel identisch übereinstimmt. Als eine noch weitere Abwandlung können die Ähnlichkeitskriterien eine exakte Übereinstimmung für eine oder mehrere Farbkomponenten zwischen dem Eingangspixel und einem Eintrag der ICH 126 erfordern. In dieser Abwandlung kann der Codierer 114 eine Erfüllung der Ähnlichkeitskriterien bestimmen, wenn ein oder mehrere Komponenten des Eingangspixels mit jeweiligen Komponenten eines Eintrags der ICH 126 identisch übereinstimmen.In some variations, meeting the similarity criteria requires an identical match between color values of an input pixel and an entry in the ICH 126. That is, the encoder 114 determines meeting the similarity criteria when an entry in the ICH 126 identically matches the input pixel. As a still further variation, the similarity criteria may require an exact match for one or more color components between the input pixel and an ICH 126 entry. In this variation, the encoder 114 may determine similarity criteria met when one or more components of the input pixel identically match respective components of an ICH 126 entry.

Die Codierer 114 kann beim Bestimmen einer Verwendung einer ICH-Codierung für ein Pixel oder eine Gruppe von Eingangspixel mehrere Kriterien anwenden. Als ein Beispiel bestimmt der Codierer 114, ob eine Codierung im ICH-Modus für eine Gruppe auszuwählen ist, basierend auf einer oder mehreren Bedingungen, wie etwa, wenn die folgenden beiden Bedingungen erfüllt sind:

  1. (1) für jedes Pixel in der Gruppe gibt es zumindest einen Eintrag in der ICH 126, der die Ähnlichkeitskriterien erfüllt; und
  2. (2) eine geschätzte Anzahl von Bits, die bei Codierung der Gruppe im ICH-Modus aufgewendet würde („Bitkosten“), ist geringer als eine geschätzte Anzahl von Bits, die bei Codierung der Gruppe unter Verwendung des Nicht-ICH-Modus aufgewendet würde.
The encoder 114 may apply multiple criteria in determining use of ICH encoding for a pixel or group of input pixels. As an example, encoder 114 determines whether to select ICH mode encoding for a group based on one or more conditions, such as when the following two conditions are met:
  1. (1) for each pixel in the group, there is at least one entry in the ICH 126 that meets the similarity criteria; and
  2. (2) an estimated number of bits that would be expended encoding the group in ICH mode ("bit cost") is less than an estimated number of bits that would be expended encoding the group using non-ICH mode .

Als ein zusätzliches oder alternatives Beispiel zu der vorstehenden Bedingung (2) kann der Codierer 114 ein Kriterium zum Wählen zwischen dem ICH-Modus und dem Nicht-ICH-Modus basierend auf den Bitkosten für die Pixelgruppe und einem oder mehreren zusätzlichen Parametern, wie etwa einem durch Verwendung des Codierungsmodus verursachten Fehler, anwenden. Eine Codierung der Pixelgruppe im ICH-Modus kann einen Fehler in ein Eingangspixel einführen, wenn der Farbwert für einen Eintrag in der ICH 126, auf den zum Codieren des Eingangspixels Bezug genommen wird, von dem Farbwert des Eingangspixels differiert, und der Fehler für ein Eingangspixel kann 0 sein, wenn der Farbwert des unter Bezug genommenen bzw. referenzierten Eintrags in der ICH 126 mit dem Farbwert des Eingangspixels identisch übereinstimmt. In dieser Hinsicht kann sich ein Fehler auf die Differenz zwischen dem Farbwert des Eingangspixels und dem codierten Farbwert beziehen, der sich aus einem bestimmten Codierungsmodus ergibt. Eine Codierung in Nicht-ICH-Modi kann einen Fehler einführen, der zum Beispiel durch eine Quantisierung oder Rekonstruktion von Farbwerten verursacht wird. In diesen Beispielen kann der Codierer 114 jeweilige Fehler gewichten, die sich aus einer Verwendung einer ICH-Codierung und einer Nicht-ICH-Codierung ergeben, und den Fehler beim Bestimmen berücksichtigen, ob eine ICH-Codierung oder Nicht-ICH-Codierung zu verwenden ist.As an additional or alternative example to condition (2) above, encoder 114 may use a criterion for choosing between ICH mode and non-ICH mode based on the bit cost for the pixel group and one or more additional parameters, such as a errors caused by using the encoding mode. Encoding the pixel group in ICH mode may introduce an error into an input pixel if the color value for an entry in the ICH 126 referenced to encode the input pixel differs from the color value of the input pixel, and the error for an input pixel may be 0 if the color value of the referenced entry in the ICH 126 is identical to the color value of the input pixel. In this regard, an error may refer to the difference between the color value of the input pixel and the encoded color value resulting from a particular encoding mode. Coding in non-ICH modes may introduce error caused by quantization or reconstruction of color values, for example. In these examples, the encoder 114 may weight respective errors resulting from using ICH coding and non-ICH coding and consider the error in determining whether to use ICH coding or non-ICH coding .

In einigen Implementierungen vergleicht der Codierer 114 eine Ausgabe einer Funktion von Bitkosten und Fehler, die auf eine ICH-Codierung einer Pixelgruppe unter Verwendung von einem oder mehreren Einträgen der ICH 126 angewandt wird, gegen eine entsprechende Funktion von Bitkosten und Fehler, die auf eine Nicht-ICH-Codierung der Pixelgruppe angewandt wird. Anders ausgedrückt kann der Codierer 114 sowohl Bitkosten als auch Genauigkeit (z.B. wie durch eine Funktion des Fehlers angegeben) beim Bestimmen gewichten, ob ein ICH-Modus oder ein Nicht-ICH-Modus zum Codieren einer Pixelgruppe zu verwenden ist. Als ein besonderes Beispiel kann der Codierer die Ausgabe der folgenden Funktion vergleichen: „Bitkosten + 4 * Summe (Aufrundung (log2(maxAbsFehler + 1)))“, wobei sich maxAbsFehler auf einen maximalen Absolutfehler pro Komponente bezieht und die Summe über die Komponenten genommen wird. Der Codierer 114 kann ein ICH-Codierung auswählen, wenn die Funktionsausgabe für einen oder mehrere Einträge in der ICH 126 kleiner ist als die entsprechende Funktionsausgabe bei Verwendung einer Nicht-ICH-Codierung. Der Codierer 114 kann eine beliebige Abwandlung von Funktionen anwenden, um zwischen einer ICH-Codierung und einer Nicht-ICH-Codierung der Eingangspixelgruppe zu vergleichen, wobei Faktoren wie etwa Bitkosten, Fehler und/oder Genauigkeit, Durchsatz, Verarbeitungszeit, Energieverbrauch oder eine beliebige Anzahl anderer Parameter berücksichtigt werden.In some implementations, the encoder 114 compares an output of a bit cost and error function applied to ICH encoding of a pixel group using one or more entries of the ICH 126 against a corresponding bit cost and error function applied to a non - ICH coding of the pixel group is applied. In other words, encoder 114 can measure both bit cost and precision (e.g., as determined by a function of the error indicated) in determining whether to use an ICH mode or a non-ICH mode to encode a pixel group. As a particular example, the encoder can compare the output of the following function: "bit cost + 4 * sum (round up (log 2 (maxAbsError + 1)))" where maxAbsError refers to a maximum absolute error per component and the sum over the components is taken. The encoder 114 may select an ICH encoding if the function output for one or more entries in the ICH 126 is less than the corresponding function output using a non-ICH encoding. The encoder 114 may apply any variety of functions to compare between ICH encoding and non-ICH encoding of the input pixel group, taking into account factors such as bit cost, error and/or accuracy, throughput, processing time, power consumption, or any number other parameters are taken into account.

Der Codierer 114 kann eine andere Funktion auf die/den geschätzten Bitkosten und Fehler unter Verwendung einer ICH-Codierung im Vergleich zu den/dem geschätzten Bitkosten und Fehler unter Verwendung einer Nicht-ICH-Codierung anwenden. Zum Beispiel kann der Codierer bestimmen, ob eine ICH-Codierung oder eine Nicht-ICH-Codierung zu verwenden ist, indem er eine erste Funktion auf Bitkosten und Fehler unter Verwendung einer ICH-Codierung (oder jegliche zusätzliche oder alternative Eingaben an die erste Funktion) anwendet, eine zweite Funktion auf Bitkosten und Fehler unter Verwendung einer Nicht-ICH-Codierung (oder jegliche zusätzliche oder alternative Eingaben an die zweite Funktion) anwendet, und die Ausgaben vergleicht. Als weitere Option vergleicht der Codierer 114 jeweilige Funktionsausgaben für die/den geschätzten Bitkosten und Fehler unter Verwendung einer ICH-Codierung und unter Verwendung einer Nicht-ICH-Codierung, und bestimmt er, ein bestimmtes Codierungsverfahren zu verwenden, wenn die Funktionsausgaben um zumindest eine vorbestimmten Schwelle differieren.The encoder 114 may apply a different function to the estimated bit cost and error using ICH encoding compared to the estimated bit cost and error using non-ICH encoding. For example, the encoder can determine whether to use ICH encoding or non-ICH encoding by running a first function on bit cost and error using ICH encoding (or any additional or alternative inputs to the first function) applies a second function to bit cost and error using non-ICH encoding (or any additional or alternative inputs to the second function), and compares the outputs. As a further option, the encoder 114 compares respective function outputs for the estimated bit cost and error using ICH coding and using non-ICH coding, and determines to use a particular coding method if the function outputs differ by at least a predetermined threshold differ.

Wenn beide der vorgenannten Bedingungen erfüllt sind, kann der Codierer 114 eine ICH-Codierung zum Codieren der Gruppe auswählen. In einigen Abwandlungen kann der Codierer 114 die Anzahl von unter Verwendung eines Nicht-ICH-Modus aufgewendeten Bits basierend auf einem oder beiden der Eingangswerte in der gleichen Abtastzeile wie die Eingangspixel der Gruppe und der rekonstruierten Werte der vorhergehenden Abtastzeile schätzen. Zum Beispiel kann der Codierer 114 die Anzahl von Bits schätzen, die zum Codieren des Prädiktionsrests von jedem Pixel in der Gruppe verwendet würde, wobei die Prädiktion auf den eingegebenen und rekonstruierten Werten beruht.If both of the above conditions are met, the encoder 114 may select an ICH encoding to encode the group. In some variations, the encoder 114 may estimate the number of bits expended using a non-ICH mode based on one or both of the input values in the same scanline as the group's input pixels and the reconstructed values of the previous scanline. For example, the encoder 114 can estimate the number of bits that would be used to encode the prediction residual of each pixel in the group, where the prediction is based on the input and reconstructed values.

Bei einer Bestimmung, eine ICH-Codierung für eine Gruppe von Eingangspixel zu verwenden, kann der Codierer 114 einen jeweiligen Index in die ICH 126 auswählen, um die Eingangspixel darzustellen. In einigen Implementierungen kann der Codierer 114 das Eingangspixel als einen Index codieren, der den Eintrag in der ICH 126 identifiziert, der die Ähnlichkeitskriterien für das Eingangspixel erfüllt. Wenn die ICH 126 mehr als einen Eintrag umfasst, der die Ähnlichkeitskriterien mit Bezug auf ein Eingangspixel erfüllt, kann der Codierer 114 zusätzliche Kriterien bei der Auswahl eines bestimmten Eintrags aus den mehreren Einträgen anwenden, die die Ähnlichkeitskriterien erfüllen. Als eine Implementierung wählt der Codierer 114 den Eintrag in der ICH 126 aus, der die niedrigste Summe von Absolutdifferenzen von Fehlern pro Komponente erzeugt. In weiteren Implementierungen wählt der Codierer 114 den ICH-Eintrag aus, der den niedrigsten Absolutfehler in einer Komponente erzeugt, zum Beispiel der Y-Komponente eines YCbCr-Farbraums. Der Codierer 114 kann zusätzliche oder alternative Kriterien anwenden, die einen Vergleich von einer beliebigen Funktion eines Eingangspixels und Einträgen in der ICH 126 spezifizieren, und als zusätzliche Beispiele eine Auswahl des Eintrags mit der niedrigsten gewichteten Summe von Absolutdifferenzen von Fehlern pro Komponente oder einer niedrigsten Summe von quadrierten Fehlern pro Komponente spezifizieren.Upon determining to use ICH encoding for a group of input pixels, encoder 114 may select a respective index into ICH 126 to represent the input pixels. In some implementations, encoder 114 may encode the input pixel as an index that identifies the entry in ICH 126 that meets the similarity criteria for the input pixel. If the ICH 126 includes more than one entry that meets the similarity criteria with respect to an input pixel, the encoder 114 may apply additional criteria in selecting a particular entry from the multiple entries that meet the similarity criteria. As an implementation, the encoder 114 selects the entry in the ICH 126 that produces the lowest sum of absolute differences of errors per component. In further implementations, the encoder 114 selects the ICH entry that produces the lowest absolute error in a component, for example the Y component of a YCbCr color space. The encoder 114 may apply additional or alternative criteria specifying a comparison of any function of an input pixel and entries in the ICH 126, and as additional examples, selecting the entry with the lowest weighted sum of absolute differences of errors per component or a lowest sum specify squared errors per component.

In einigen Implementierungen kann der Codierer 114 einen anderen Satz von Ähnlichkeitskriterien anwenden, wenn er einen Index in die ICH 126 auswählt, um ein Eingangspixel darzustellen (wobei diese als Auswahlähnlichkeitskriterien bezeichnet werden können), als wenn er bestimmt, dass die ICH 126 zumindest einen Eintrag umfasst, der Ähnlichkeitskriterien mit Bezug auf ein Eingangspixel erfüllt (wobei diese als Einschluss-/Beinhaltungsähnlichkeitskriterien bezeichnet werden können). Somit kann der Codierer 114 einen ausgewählten Index in die ICH 126 zum Darstellen eines Eingangspixels (z.B. durch Anwendung von Auswahlähnlichkeitskriterien) getrennt von einer Bestimmung bestimmen, ob die ICH 126 zumindest einen Eintrag mit einem Farbwert umfasst, der ausreichend ähnlich zu dem Eingangspixel ist (z.B. innerhalb einer spezifizierten Ähnlichkeitsschwelle liegt, die durch die Einschluss-/Beinhaltungsähnlichkeitskriterien spezifiziert ist). Die Auswahlähnlichkeitskriterien und die Einschluss-/Beinhaltungsähnlichkeitskriterien können jeweils eine beliebige Kombination der vorstehend dargelegten Ähnlichkeitskriterien umfassen.In some implementations, the encoder 114 may apply a different set of similarity criteria when selecting an index into the ICH 126 to represent an input pixel (which may be referred to as selection similarity criteria) than when determining that the ICH 126 has at least one entry that satisfies similarity criteria with respect to an input pixel (which may be referred to as inclusion similarity criteria). Thus, the encoder 114 can determine a selected index into the ICH 126 to represent an input pixel (e.g., by applying selection similarity criteria) separately from a determination of whether the ICH 126 includes at least one entry with a color value sufficiently similar to the input pixel (e.g., is within a specified similarity threshold specified by the inclusion/inclusion similarity criteria). The selection similarity criteria and the inclusion/containment similarity criteria may each comprise any combination of the similarity criteria set forth above.

Der Codierer 114 kann einen ausgewählten Index oder ausgewählte Indizes in die ICH 126 zum Darstellen der jeweiligen Pixel einer Eingangspixelgruppe vor einer Bestimmung bestimmen, ob die Eingangspixelgruppe unter Verwendung einer ICH-Codierung oder einer Nicht-ICH-Codierung zu codieren ist. Um dies zu veranschaulichen, kann der Codierer 114 ausgewählte Indizes in die ICH 126 unter Verwendung von Auswahlähnlichkeitskriterien bestimmen, um die Eingangspixel der Gruppe jeweils zu codieren, und dann bestimmen, ob eine Codierung im ICH-Modus für eine Pixelgruppe auszuwählen ist, wenn die folgenden beiden Kriterien erfüllt sind:

  1. (1) für jedes Pixel in der Gruppe gibt es zumindest einen Eintrag in der ICH 126, der die Einschluss-/Beinhaltungsähnlichkeitskriterien erfüllt; und
  2. (2) für die ausgewählten Indizes in die ICH 126, die unter Verwendung der Auswahlähnlichkeitskriterien bestimmt sind, ist ein Ausgabewert einer Funktion der Bitkosten und des Fehlers unter Verwendung der ausgewählten Indizes kleiner als die Ausgabe der Funktion der Bitkosten und des Fehlers unter Verwendung einer Nicht-ICH-Codierung (oder um zumindest eine vorbestimmte Schwelle kleiner).
The encoder 114 can insert a selected index or indices into the ICH 126 for representing the respective pixels of an input pixel group before determining whether to encode the input pixel group using ICH coding or non-ICH coding. To illustrate, the encoder 114 may determine selected indices into the ICH 126 using selection similarity criteria to encode the input pixels of the group respectively, and then determine whether to select ICH mode encoding for a pixel group if the following both criteria are met:
  1. (1) for each pixel in the group, there is at least one entry in the ICH 126 that meets the inclusion/containment similarity criteria; and
  2. (2) for the selected indices into the ICH 126 determined using the selection similarity criteria, an output value of a function of bit cost and error using the selected indices is less than the output of the function of bit cost and error using a non -ICH coding (or smaller by at least a predetermined threshold).

Somit kann der Codierer 114 in einigen Implementierungen die ausgewählten Indizes in die ICH 126 bestimmen, die zum Darstellen von Eingangspixel bei einer ICH-Codierung verwendet würden, bevor er bestimmt, ob eine ICH-Codierung zu verwenden ist oder nicht. In diesem Fall kann der Codierer 114, wenn die beiden Bedingungen erfüllt sind, die Pixelgruppe durch Darstellung der Eingangspixel als die ausgewählten Indizes codieren. In weiteren Abwandlungen kann der Codierer 114 die ausgewählten Indizes in die ICH 126 zur Darstellung einer Eingangspixelgruppe unter Verwendung der Auswahlähnlichkeitskriterien parallel zu oder nach einer Bestimmung bestimmen, ob die Eingangspixelgruppe unter Verwendung einer ICH-Codierung zu codieren ist, z.B. wie vorstehend beschrieben.Thus, in some implementations, encoder 114 may determine the selected indices into ICH 126 that would be used to represent input pixels in ICH encoding before determining whether or not to use ICH encoding. In this case, if the two conditions are met, the encoder 114 can encode the pixel group by representing the input pixels as the selected indices. In further variations, the encoder 114 may determine the selected indices into the ICH 126 to represent an input pixel group using the selection similarity criteria in parallel with or after a determination as to whether to encode the input pixel group using ICH encoding, e.g., as described above.

3 zeigt eine beispielhafte Darstellung 300 der ICH 126, die der Codierer 114 implementieren kann. Die in 3 gezeigte ICH 126 umfasst Einträge mit einem Indexwert 302 und einem Farbwert 304. Gemäß 3 umfasst die ICH 126 32 Einträge und sind Einträge mit einem jeweiligen Indexwert 302 identifiziert. Anders ausgedrückt zeigt ein Indexwert 302 auf einen bestimmten Eintrag in der ICH 126 oder entspricht er diesem, egal ob er in dem Eintrag explizit gespeichert ist oder einen bestimmen Eintrag auf andere Weise identifiziert, z.B. als ein Versatz bzw. Abstand von dem ersten Eintrag in der ICH 126. 3 Figure 3 shows an example representation 300 of the ICH 126 that the encoder 114 may implement. In the 3 ICH 126 shown includes entries with an index value 302 and a color value 304. According to FIG 3 ICH 126 includes 32 entries and entries are identified with a respective index value 302. In other words, an index value 302 points to or corresponds to a particular entry in the ICH 126, whether explicitly stored in the entry or otherwise identifying a particular entry, e.g., as an offset from the first entry in the I 126

Der Codierer 114 kann die ICH 126 in Erwiderung auf eine Initialisierungsbedingung initialisieren, z.B. auf ein Auftreten von einem oder mehreren vorbestimmten Ereignissen hin. Beispiele von Initialisierungsbedingungen umfassen eine Erkennung des Beginns eines (komprimierten oder nicht komprimierten) Eingangsbilds, des Beginns eines Schnitts bzw. Teils eines Bilds, oder des Beginns einer Abtastzeile. Der Codierer 114 kann die ICH 126 in einen Anfangszustand setzen, z.B. derart, dass die ICH 126 keine gültigen Einträge speichert. Der Codierer 114 kann die Inhalte der ICH 126 bei einer Initialisierung leeren, oder der Codierer 114 kann die ICH 126 derart implementieren, dass Einträge ein Gültigkeitsbit 308 umfassen, wie es in 3 gezeigt ist. Das Gültigkeitsbit 308 eines bestimmten Eintrags kann angeben, ob der bestimmte Eintrag sich in einem gültigen Zustand oder einem ungültigen (z.B. unbenutzten) Zustand befindet. Während einer Initialisierung kann der Codierer 114, zusätzlich oder als Alternative zu einem Leeren eines vorhergehenden Inhalts in den Einträgen, das Gültigkeitsbit 308 von Einträgen in der ICH 126 löschen bzw. freigeben.The encoder 114 may initialize the ICH 126 in response to an initialization condition, eg, upon an occurrence of one or more predetermined events. Examples of initialization conditions include detection of the beginning of an input image (compressed or uncompressed), the beginning of a slice or portion of an image, or the beginning of a scan line. The encoder 114 may set the ICH 126 to an initial state, eg such that the ICH 126 does not store any valid entries. The encoder 114 may flush the contents of the ICH 126 upon initialization, or the encoder 114 may implement the ICH 126 such that entries include a valid bit 308, as described in FIG 3 is shown. The valid bit 308 of a particular entry may indicate whether the particular entry is in a valid state or an invalid (eg, unused) state. During initialization, the encoder 114 may clear the valid bit 308 of entries in the ICH 126, in addition to or as an alternative to flushing previous content in the entries.

Der Codierer 114 kann Farbwerte in die ICH 126 für Pixel eintragen, die unter Verwendung einer Nicht-ICH-Codierung codiert sind. Für diese Pixel kann der Codierer 114 den Farbwert des Pixels (z.B. einen rekonstruierten Pixelwert bei Verwendung einer prädiktiven Codierung) untersuchen und bestimmen, ob der Farbwert in die ICH 126 einzufügen ist, z.B. als ein Eintrag in die ICH 126. Dabei kann der Codierer eine beliebige Anzahl von Eintragungskriterien oder -bedingungen anwenden. Der Codierer 114 kann auf ein Einfügen des Farbwerts eines nicht-ICH-codierten Pixels verzichten, wenn die ICH 126 bereits einen gültigen Eintrag mit einem Farbwert 304 umfasst, der ein oder mehrere Ähnlichkeitskriterien mit Bezug auf den Farbwert des nicht-ICH-codierten Pixels erfüllt. Wenn es keine gültigen Einträge in der ICH 126 mit einem Farbwert 304 gibt, der Ähnlichkeitskriterien des Farbwerts des nicht-ICH-codierten Pixels erfüllt, kann der Codierer 114 den Farbwert des nicht-ICH-codierten Pixels in die ICH 126 einfügen. Beim Bestimmen, ob der Farbwert des nicht-ICH-codierten Pixels in die ICH 126 einzufügen ist, kann der Codierer 114 eine beliebige Kombination der Ähnlichkeits- oder Fehlerkriterien anwenden, wie etwa derjenigen, die vorstehend beschrieben sind. Der Codierer 114 kann die gleichen, teilweise überlappende oder unterschiedliche Ähnlichkeitskriterien anwenden, wenn er bestimmt, ob eine ICH-Codierung zu verwenden ist, und wenn er bestimmt, ob der Farbwert eines nicht-ICH-codierten Pixels in die ICH 126 einzufügen ist.The encoder 114 may enter color values into the ICH 126 for pixels encoded using non-ICH encoding. For these pixels, the encoder 114 may examine the pixel's color value (e.g., a reconstructed pixel value when using predictive coding) and determine whether to insert the color value into the ICH 126, e.g., as an entry in the ICH 126. In doing so, the encoder may use a apply any number of enrollment criteria or conditions. The encoder 114 may refrain from inserting the color value of a non-ICH encoded pixel if the ICH 126 already includes a valid entry with a color value 304 that meets one or more similarity criteria with respect to the color value of the non-ICH encoded pixel . If there are no valid entries in the ICH 126 with a color value 304 that meets similarity criteria of the color value of the non-ICH encoded pixel, the encoder 114 may insert the color value of the non-ICH encoded pixel into the ICH 126 . In determining whether to include the color value of the non-ICH encoded pixel in ICH 126, encoder 114 may apply any combination of the similarity or error criteria, such as those described above. The encoder 114 may apply the same, partially overlapping, or different similarity criteria when determining whether to use ICH encoding and when determining whether to insert the color value of a non-ICH encoded pixel into ICH 126 .

Wenn es unbenutzte (z.B. ungültige) Einträge in der ICH 126 gibt, kann der Codierer 114 den Farbwert des nicht-ICH-codierten Pixels einfügen, indem er einen unbenutzten Eintrag zuweist und diesem dem Farbwert des nicht-ICH-codierten Pixels zuordnet. Die ICH 126 kann einen mit dem neu zugeordneten Eintrag in Zusammenhang stehenden Wert einstellen, um anzugeben, dass der eingefügte Farbwert jüngst/zuletzt bzw. am aktuellsten verwendet wurde (MRU: „Most Recently Used“). In einer Abwandlung unter-/hält der Codierer 114 einen Zähler. Der Codierer 114 kann den Zähler bei definierten Ereignissen zurücksetzen, zum Beispiel zu Beginn eines Schnitts bzw. Teils oder des Beginns einer Abtastzeile. Der Zähler kann eine Anzahl von Bits aufweisen. Einträge in der ICH 126 können ein Zählerfeld umfassen, das einen Wert des Zählers speichert. Gemäß 3 umfassen Einträge in der ICH 126 einen jeweiligen Zählerwert, der als LRU-Zählerwert 306 (LRU: „Least Recently Used“) bezeichnet ist. Der Codierer 114 kann den Zähler für jedes durch den Codierer 114 codierte Pixel inkrementieren. Der Codierer kann den Zähler für jedes Pixel inkrementieren, das unter Verwendung einer ICH-Codierung codiert ist, oder mit einer beliebigen anderen konfigurierbaren Rate. Wenn ein Eintrag der ICH 126 mit den Ähnlichkeitskriterien übereinstimmt oder neu eingefügt wird, kann der Codierer den aktuellen Wert des Zählers als den LRU-Zählerwert 306 des Eintrags kopieren, um anzugeben, dass der Eintrag aktuell verwendet wurde.If there are unused (eg, invalid) entries in the ICH 126, the encoder 114 may insert the color value of the non-ICH encoded pixel by allocating an unused entry and mapping it to the color value of the non-ICH encoded pixel. The ICH 126 can do one with the Set the value associated with the newly mapped entry to indicate that the inserted color value was most recently used (MRU: Most Recently Used). In a variation, the encoder 114 maintains a counter. The encoder 114 can reset the counter on defined events, for example at the beginning of a cut or the beginning of a scan line. The counter can have a number of bits. Entries in the ICH 126 may include a counter field that stores a value of the counter. According to 3 Entries in the ICH 126 include a respective counter value referred to as LRU counter value 306 (Least Recently Used). The encoder 114 may increment the counter for each pixel encoded by the encoder 114 . The encoder can increment the counter for each pixel encoded using ICH encoding or at any other configurable rate. When an ICH 126 entry matches the similarity criteria or is newly inserted, the encoder may copy the current value of the counter as the entry's LRU counter value 306 to indicate that the entry was currently used.

Wenn alle Einträge der ICH 126 gültig sind, bevor der Farbwert eines nicht-ICH-codierten Pixels eingefügt wird, kann der Codierer 114 einen Eintrag in der ICH 126 ersetzen. Der Codierer 114 kann einen Ersetzungsalgorithmus einsetzen, wie etwa den LRU-Ersetzungsalgorithmus. Wenn der Codierer 114 bestimmt, einen neuen Farbwert in die ICH 126 einzufügen, kann der Codierer 114 den LRU-Eintrag als den Eintrag mit dem kleinsten Zählerwert identifizieren, wie er z.B. in dem LRU-Zählerwert 306 eines Eintrags gespeichert ist. Der Codierer 114 kann eine Anzahl von Bits an den Zähler derart zuweisen, dass der maximale Zählerwert größer oder gleich der Anzahl von Pixel zwischen aufeinanderfolgenden Zählerrücksetzungsereignissen ist. In einigen Implementierungen inkrementiert der Codierer 114 den Zähler für jede Gruppe (z.B. anstatt für jedes Pixel). In diesen Implementierungen kann der Codierer 114 eine Anzahl von Bits an den Zähler derart zuweisen, dass der maximale Zählerwert größer oder gleich der Anzahl von Gruppen zwischen aufeinanderfolgenden Zählerrücksetzungsereignissen ist.If all ICH 126 entries are valid before the color value of a non-ICH encoded pixel is inserted, the encoder 114 may replace an ICH 126 entry. The encoder 114 may employ a replacement algorithm, such as the LRU replacement algorithm. When the encoder 114 determines to insert a new color value into the ICH 126, the encoder 114 may identify the LRU entry as the entry with the smallest counter value, such as that stored in the LRU counter value 306 of an entry. The encoder 114 may allocate a number of bits to the counter such that the maximum counter value is greater than or equal to the number of pixels between consecutive counter reset events. In some implementations, encoder 114 increments the counter for each group (e.g., instead of for each pixel). In these implementations, the encoder 114 may allocate a number of bits to the counter such that the maximum counter value is greater than or equal to the number of groups between consecutive counter reset events.

Der Codierer 114 kann einen beliebigen Ersetzungsalgorithmus beim Bestimmen eines Eintrags zur Ersetzung in der ICH 126 einsetzen. Der Codierer 114 kann wechselnde bzw. alternative Ersetzungsalgorithmus nutzen, wie etwa nicht aktuell verwendet (NRU: „Not Recently Used“) oder den ältesten zuerst (FIFO: „First In First Out“). Der Codierer 114 kann LRU in anderen Abwandlungen außer einem Einbeziehen eines LRU-Zählerwerts für Einträge der ICH 126 implementieren.The encoder 114 may employ any replacement algorithm when determining an entry in the ICH 126 for replacement. The encoder 114 may utilize alternate replacement algorithms such as Not Recently Used (NRU) or First In First Out (FIFO). The encoder 114 may implement LRU in variations other than including an LRU counter value for ICH 126 entries.

4 zeigt eine weitere beispielhafte Darstellung 400 der ICH 126, in der der Codierer 114 die ICH 126 als einen geordnete Liste implementieren kann. Eine geordnete Liste kann basierend auf einer Position eines Eintrags in der geordneten Liste angeben, welche Farbwerte MRU und LRU sind. Die ICH 126 kann den eingefügten Farbwert als den am aktuellsten verwendeten Wert identifizieren, indem z.B. der Codierer 114 den Eintrag für den neuen Farbwert am Kopf der geordneten Liste einfügt, wobei ältere Einträge heruntergeschoben werden. Als eine beispielhafte Implementierung kann der Codierer 114 die ICH 126 als ein Schieberegister verwalten, wobei die jüngst/zuletzt bzw. am aktuellsten verwendeten Farbwerte oben sind und die am wenigsten aktuell verwendeten Farbwerte unten sind. Neue Einträge werden oben hinzugefügt, und alle anderen Einträge werden heruntergeschoben, wobei die unteren Einträge aus der ICH 126 herausfallen. 4 FIG. 4 shows another exemplary representation 400 of the ICH 126 in which the encoder 114 may implement the ICH 126 as an ordered list. An ordered list may indicate which color values are MRU and LRU based on a position of an entry in the ordered list. The ICH 126 can identify the inserted color value as the most recently used value, for example, by having the encoder 114 insert the entry for the new color value at the top of the ordered list, pushing down older entries. As an example implementation, the encoder 114 may manage the ICH 126 as a shift register with the most recently used color values at the top and the least recently used color values at the bottom. New entries are added at the top and all other entries are pushed down, with the bottom entries falling out of the ICH 126.

In einigen Abwandlungen fügt der Codierer 114 einen neuen Farbwert in die ICH 126 ein, ohne zu untersuchen, ob irgendwelche ähnlichen Farbwerte (z.B. solche, die Ähnlichkeitskriterien erfüllen) bereits in der ICH 126 vorhanden sind. Anderes ausgedrückt kann der Codierer 114 einen Eintrag für den Farbwert eines nicht-ICH-codierten Pixels in die ICH 126 bedingungslos einfügen, z.B. ohne Anwendung irgendwelcher Eintragungskriterien. Dadurch kann der Codierer 114 die Komplexität und/oder Latenz(-zeit) einer Einfügung von Farbwerten in die ICH 126 reduzieren, da Einfügungen in die ICH 126 ohne den Overhead einer Implementierung zusätzlicher Vergleichslogik und ohne die Latenz(-zeit) der Durchführung der Vergleiche vorgenommen werden können.In some variations, encoder 114 inserts a new color value into ICH 126 without examining whether any similar color values (e.g., those that meet similarity criteria) already exist in ICH 126. In other words, encoder 114 may insert an entry for the color value of a non-ICH encoded pixel into ICH 126 unconditionally, e.g., without applying any entry criteria. This allows the encoder 114 to reduce the complexity and/or latency (time) of inserting color values into the ICH 126, as inserts into the ICH 126 without the overhead of implementing additional comparison logic and without the latency (time) of performing the comparisons can be made.

In weiteren Abwandlungen fügt der Codierer 114 den neuen Farbwert des nicht-ICH-codierten Pixels in die ICH 126 ein und untersucht er ältere Einträge in der ICH 126, um zu bestimmen, ob ein Eintrag (oder Einträge) Ähnlichkeitskriterien mit Bezug auf den neuen Farbwert erfüllt (oder erfüllen). Wenn der Codierer 114 einen oder mehrere Einträge (z.B. Farbwerte) erkennt, die die Ähnlichkeitskriterien erfüllen, kann der Codierer 114 diese Einträge aus der ICH 126 entfernen. Wenn der Codierer 114 einen Farbwert aus der ICH 126 entfernt, können ältere Einträge in der geordneten Liste um eine Position nach vorne bewegt werden, z.B. in einer MRU-Richtung. Auf diese Art und Weise kann, wenn ein neuer Eintrag (z.B. ein neuer Farbwert) identisch zu einem älteren Eintrag (z.B. einem alten Farbwert) ist, das effektive Ergebnis eine Markierung bzw. Kennzeichnung des älteren Farbwerts als der am aktuellsten verwendete Farbwert sein, z.B. dadurch, dass der neue Eintrag nun am Kopf der geordneten Liste steht.In further variations, the encoder 114 inserts the new color value of the non-ICH encoded pixel into the ICH 126 and examines older entries in the ICH 126 to determine whether an entry (or entries) meet similarity criteria with respect to the new color value fulfilled (or fulfill). If the encoder 114 recognizes one or more entries (e.g., color values) that meet the similarity criteria, the encoder 114 can remove those entries from the ICH 126. When the encoder 114 removes a color value from the ICH 126, older entries in the ordered list may be moved forward by one position, e.g., in an MRU direction. In this way, if a new entry (e.g. a new color value) is identical to an older entry (e.g. an old color value), the effective result may be a marking of the older color value as the most recently used color value, e.g. because the new entry is now at the top of the ordered list.

In einer Abwandlung bestimmt der Codierer 114, ob ein existierender Eintrag in der ICH 126 Ähnlichkeitskriterien mit Bezug auf den neuen Farbwert eines nicht-ICH-codierten Pixels erfüllt. Wenn ein bestimmter Eintrag in der ICH 126 die Ähnlichkeitskriterien erfüllt, bezeichnet der Codierer 114 diesen bestimmen Eintrag als den am aktuellsten verwendeten Eintrag (z.B. durch Bewegung bzw. Verschiebung des bestimmten Eintrags an den Anfang der Listung der ICH 126), und fügt er den neuen Farbwert nicht in die ICH 126 ein. In Zusammenhang mit einer Bewegung bzw. Verschiebung des bestimmten Eintrags an den Anfang werden Einträge, die über dem bestimmten Eintrag (z.B. neuer als dieser) waren, um eine Position nach unten bewegt bzw. verschoben. In einer weiteren Abwandlung bestimmt der Codierer 114, ob ein existierender Eintrag in der ICH 126 Ähnlichkeitskriterien mit Bezug auf den neuen Farbwert eines nicht-ICH-codierten Pixels erfüllt. Wenn ein bestimmter Eintrag in der ICH 126 die Ähnlichkeitskriterien erfüllt, aktualisiert der Codierer 114 den Wert von diesem bestimmten Eintrag, so dass er dem neuen Farbwert entspricht, und bezeichnet er diesen bestimmten Eintrag als am aktuellsten verwendet (z.B. durch Bewegung bzw. Verschiebung des bestimmten Eintrags an den Anfang der Listung der ICH 126). In Zusammenhang mit einer Bewegung bzw. Verschiebung des bestimmten Eintrags an den Anfang werden Einträge, die über dem bestimmten Eintrag (z.B. neuer als dieser) waren, um eine Position nach unten bewegt bzw. verschoben.Alternatively, encoder 114 determines whether an existing entry in ICH 126 meets similarity criteria with respect to the new color value of a non-ICH encoded pixel. If a particular entry in the ICH 126 meets the similarity criteria, the encoder 114 designates that particular entry as the most recently used entry (eg, by moving the particular entry to the top of the ICH 126 listing), and adds the new one Color value not in the ICH 126. In connection with moving the particular entry to the top, entries that were above (eg, newer than) the particular entry are moved down one position. In a further variation, encoder 114 determines whether an existing entry in ICH 126 meets similarity criteria with respect to the new color value of a non-ICH encoded pixel. When a particular entry in the ICH 126 meets the similarity criteria, the encoder 114 updates the value of that particular entry to match the new color value and designates that particular entry as the most recently used (e.g., by moving the particular entry at the beginning of the listing of ICH 126). In connection with moving the particular entry to the top, entries that were above (eg, newer than) the particular entry are moved down one position.

Der Codierer 114 kann die ICH 126 bei Verwendung einer ICH-Codierung zum Codieren von Pixeldaten unter-/halten bzw. pflegen. Wenn der Codierer 114 eine Gruppe unter Verwendung einer ICH-Codierung codiert, nehmen die zum Codieren von Eingangspixel verwendeten Indizes auf Einträge in der ICH 126 Bezug. Wenn auf einen Eintrag der ICH 126 Bezug genommen wird und dieser zum Codieren eines Eingangspixels verwendet wird, kann der Codierer 114 den unter Bezug genommenen bzw. referenzierten Eintrag als MRU bezeichnen, z.B. durch Bewegung bzw. Verschiebung des unter Bezug genommenen bzw. referenzierten Eintrags an den Anfang der ICH 126 und Verschiebung der anderen Werte über der früheren Position des Eintrags um 1 nach unten. Der Codierer 114 kann diese Operation parallel für alle Einträge einer ICH-codierten Gruppe durchführen, wobei ein oder mehrere ICH-Einträge an den Anfang der Liste (z.B. eine MRU-Position) mit einer festgelegten relativen Reihenfolge bewegt bzw. verschoben werden. Der letzte Pixelwert der Gruppe kann zum Beispiel der MRU werden, wobei das nächstfrühere Pixel der gleichen Gruppe zu dem zweiten MRU wird, und so weiter, falls z.B. es mehr als 2 Pixel in einer Gruppe gibt. Das letzte Pixel der Gruppe kann das Pixel sein, das in einer syntaktischen Beschreibung als das Pixel ganz rechts dargestellt ist.The encoder 114 may maintain the ICH 126 when using ICH encoding to encode pixel data. When encoder 114 encodes a group using ICH encoding, the indices used to encode input pixels refer to entries in ICH 126 . When an ICH 126 entry is referenced and used to encode an input pixel, the encoder 114 may designate the referenced entry as an MRU, e.g., by moving the referenced entry to the beginning of the ICH 126 and shift the other values above the earlier position of the entry down by 1. The encoder 114 can perform this operation in parallel for all entries of an ICH encoded group, moving one or more ICH entries to the top of the list (e.g. an MRU position) with a fixed relative order. For example, the last pixel value of the group may become the MRU, with the next earlier pixel of the same group becoming the second MRU, and so on if, for example, there are more than 2 pixels in a group. The last pixel of the group may be the pixel represented as the rightmost pixel in a syntactical description.

Der Codierer 114 kann einen bestimmten Bereich der ICH 126 zuweisen, um Farbwerte für einen speziellen Satz von Pixel zu speichern, anstatt aktuell verwendete Farbwerte zu speichern. Eine Veranschaulichung für eine ICH 126 mit 32 Einträgen ist als Nächstes in 5 dargestellt. Für die erste Linie bzw. Zeile eines Schnitts bzw. Teils oder einen anderen vorbestimmten Anteil von Bilddaten kann der Codierer 114 die 32 Einträge der ICH 126 zur Speicherung der aktuell verwendeten Farbwerte behandeln bzw. nutzen, z.B. wie es vorstehend mit Bezug auf 4 beschrieben ist. Für Linien bzw. Zeilen nach der ersten Linie bzw. Zeile eines Schnitts bzw. Teils kann der Codierer 114 einen Satz von Indexwerten zur Speicherung von mit ausgewählten Pixelpositionen in Zusammenhang stehenden Farbwerten definieren. Zum Beispiel können dies Pixelpositionen nahe (z.B. innerhalb eines bestimmten Abstands von) dem aktuellen Pixel in der Linie bzw. Zeile über der aktuelle Linie bzw. Zeile sein. Dieser Satz von Indexwerten kann nicht als aktuell verwendete Einträge behandelt bzw. genutzt werden, die gemäß MRU und LRU geordnet sind. Dies ist für eine effiziente Codierung von Pixelwerten nützlich, die nicht in der ICH 126 sind, und es verbessert eine Codierung mit einem gewissen Inhalt.The encoder 114 can allocate a particular area of the ICH 126 to store color values for a particular set of pixels, rather than storing currently used color values. An illustration for a 32-entry ICH 126 is next in 5 shown. For the first line of a slice or other predetermined portion of image data, the encoder 114 may treat or use the 32 entries of the ICH 126 to store the currently used color values, eg as discussed above with reference to FIG 4 is described. For lines after the first line of a slice, encoder 114 may define a set of index values for storing color values associated with selected pixel locations. For example, these may be pixel positions close to (eg, within a certain distance from) the current pixel in the line above the current line. This set of index values cannot be treated as currently used entries ordered by MRU and LRU. This is useful for efficient encoding of pixel values that are not in the ICH 126 and improves encoding with some content.

5 zeigt eine beispielhafte Darstellung 500 von der ICH 126. Der Codierer 114 kann die ICH 126 in verschiedene Teile partitionieren, wobei Einträge in speziellen Teilen Farbwerte speichern, die mit einem speziellen Satz von Pixel in Zusammenhang stehen. Gemäß 5 weist der Codierer 114 einen ersten Teil der ICH 126 als eine Zuweisung für aktuelle Verwendung 502 und einen zweiten Teil der ICH 126 als eine Zuweisung für Nachbarpixel 504 zu. In einem besonderen Beispiel, das in 5 gezeigt ist, weist der Codierer 114 die unteren sieben Einträge in der ICH 126 als die Zuweisung für Nachbarpixel zu, um Farbwerte von ausgewählten Pixel zu speichern, die benachbart zu einer aktuellen zu codierenden Pixelgruppe sind, d.h. Indexwerte 25 bis 31. Der Codierer 114 kann die in diesen Nachbarpixeleinträgen gespeicherten Farbwerte aktualisieren, wenn der Codierer 114 nachfolgende Pixelgruppen codiert. Als ein Beispiel von Einträgen in der Zuweisung für Nachbarpixel 504 kann der Codierer 114 die Farbwerte der sieben Pixel in der Zeile über einer aktuellen Gruppe von drei Eingangspixel, z.B. der sieben Pixel in der darüber liegenden Zeile, die mit Bezug auf die aktuelle Gruppe zentriert sind, speichern. 5 Figure 5 shows an example representation 500 of the ICH 126. The encoder 114 may partition the ICH 126 into different parts, with entries in specific parts storing color values associated with a specific set of pixels. According to 5 the encoder 114 allocates a first part of the ICH 126 as a current use assignment 502 and a second part of the ICH 126 as a neighboring pixel assignment 504 . In a particular example found in 5 As shown, the encoder 114 allocates the lower seven entries in the ICH 126 as the neighbor pixel allocation to store color values of selected pixels that are adjacent to a current pixel group to be encoded, ie, index values 25 through 31. The encoder 114 can update the color values stored in these neighboring pixel entries as encoder 114 encodes subsequent groups of pixels. As an example of entries in neighbor pixel mapping 504, encoder 114 may include the color values of the seven pixels in the row above a current group of three input pixels, eg, the seven pixels in the row above centered with respect to the current group , save on computer.

Der Codierer 114 kann die ersten „n“ (z.B. bei diesem Beispiel 25) Einträge in der ICH 126 zur Implementierung der geordneten Liste von aktuell verwendeten Farbwerten einsetzen, z.B. Einträge der Zuweisung für aktuelle Verwendung 502, die Indexwerten 00 bis 24 in der ICH 126 gemäß 5 entsprechen. Beim Durchführen einer ICH-Codierung kann der Codierer 114 Pixel unter Verwendung von Indexwerten aus der Zuweisung für aktuelle Verwendung 502 (z.B. Einträgen für Indexwerte 00 bis 24) oder Indexwerten für Einträge in der Zuweisung für Nachbarpixel 504 der ICH 126 (z.B. Einträgen für Indexwerte 25 bis 31) codieren.The encoder 114 may use the first "n" (eg, 25 in this example) entries in the ICH 126 to implement the ordered list of currently used color values, eg entries the current use allocation 502, the index values 00 to 24 in the ICH 126 according to 5 are equivalent to. When performing ICH encoding, the encoder 114 may encode pixels using index values from the current use map 502 (e.g., entries for index values 00 through 24), or index values for entries in the ICH's 126 neighbor pixel map 504 (e.g., entries for index values 25 to 31).

Die ICH 126 kann unterschiedliche Farbwerte in partitionierten Teilen in der ICH 126 speichern. Zum Beispiel können die in der Zuweisung für aktuelle Verwendung 502 gespeicherten Farbwerte teilweise oder vollständig von den in der Zuweisung für Nachbarpixel 504 gespeicherten Farbwerten differieren. Bei einem Ausführungsbeispiel kann, wenn der Codierer 114 ein Pixel als einen Indexwert zu einem Eintrag in der Zuweisung für Nachbarpixel 504 der ICH 126 codiert, der Codierer 114 den Farbwert des angegebenen Nachbarpixels in die Zuweisung für aktuelle Verwendung 502 der ICH 126 als den MRU-Farbwert einfügen. Bei einem weiteren Ausführungsbeispiel kann der Codierer 114 auf ein Einfügen des Farbwerts des angegebenen Nachbarpixels verzichten, wenn der Codierer 114 ein Pixel durch Bezugnahme auf den Indexwert in der Zuweisung für Nachbarpixel 504 der ICH 126 codiert. Bei diesem Ausführungsbeispiel wird der Farbwert des angegebenen Nachbarpixels nicht in die Zuweisung für aktuelle Verwendung 502 der ICH 126 eingetragen.The ICH 126 can store different color values in partitioned parts in the ICH 126. For example, some or all of the color values stored in the current use mapping 502 may differ from the color values stored in the neighboring pixel mapping 504 . In one embodiment, when encoder 114 encodes a pixel as an index value to an entry in neighbor pixel map 504 of ICH 126, encoder 114 may include the color value of the specified neighbor pixel in current use map 502 of ICH 126 as the MRU Insert color value. In another embodiment, when the encoder 114 encodes a pixel by reference to the index value in the ICH 126 neighbor pixel assignment 504, the encoder 114 may omit including the color value of the specified neighbor pixel. In this embodiment, the color value of the specified neighboring pixel is not entered into the current use allocation 502 of the ICH 126 .

6 zeigt ein Beispiel einer Logik 600, die die Vorrichtung 100 zum Codieren von Bilddaten implementieren kann. Der Codierer 114 kann die Logik 600 als Hardware, Software oder beides, z.B. in Software als die Codierungsanweisungen 124, implementieren. 6 Figure 12 shows an example of logic 600 that device 100 may implement for encoding image data. The encoder 114 may implement the logic 600 in hardware, software, or both, eg, in software as the encoding instructions 124 .

Der Codierer 114 kann die ICH 126 initialisieren (602). Zum Beispiel kann der Codierer 114 die ICH 126 in Erwiderung auf eine Initialisierungsbedingung initialisieren, z.B. zu Beginn einer Codierung eines Eingangsbilds oder eines bestimmten Teils des Eingangsbilds. Um die ICH 126 zu initialisieren, kann der Codierer 114 die Inhalte der ICH 126 leeren oder die Einträge der ICH 126 als ungültig oder unbenutzt markieren. Als eine weitere Abwandlung kann der Codierer 114 die ICH 126 initialisieren, indem er die Inhalte (z.B. die Farbwerte) der ICH 126 auf eine vorbestimmte Konfiguration setzt. Der Codierer kann Eingangsdaten zur Codierung erhalten, wie etwa eine Gruppe von Eingangspixel zur Codierung (604).The encoder 114 may initialize the ICH 126 (602). For example, the encoder 114 may initialize the ICH 126 in response to an initialization condition, e.g., at the beginning of encoding an input image or a particular portion of the input image. To initialize the ICH 126, the encoder 114 may flush the contents of the ICH 126 or mark the ICH 126 entries as invalid or unused. As a further variation, encoder 114 may initialize ICH 126 by setting the contents (e.g., color values) of ICH 126 to a predetermined configuration. The encoder may receive input data for encoding, such as a set of input pixels for encoding (604).

Der Codierer 114 bestimmt, ob die Gruppe von Eingangspixel unter Verwendung einer ICH-Codierung oder einer Nicht-ICH-Codierung zu codieren ist (606). Eine ICH-Codierung kann pro Gruppe durch den Codierer 114 bestimmt werden, sowie gemäß einer beliebigen Anzahl von die Ähnlichkeit umfassenden Kriterien, geschätzte Bitkosten betreffenden Kriterien und/oder Fehlerkriterien, die vorstehend beschrieben sind. Zum Beispiel kann der Codierer 114 die Pixelgruppe unter Verwendung einer ICH-Codierung codieren, wenn: (i) für jedes Pixel in der Pixelgruppe die ICH 126 einen oder mehrere Einträge mit einem ausreichend ähnlichen Farbwert umfasst, z.B., wenn die Differenz in Farbwerten kleiner ist als ein Differenzschwellenwert, und (ii) eine Funktionsausgabe von der Anzahl von Bits zum Codieren der Gruppe und einem Fehler unter Verwendung einer ICH-Codierung kleiner ist als eine entsprechende Funktionsausgabe von der Anzahl von zum Codieren der Gruppe verwendet Bits und einem Fehler unter Verwendung einer Nicht-ICH-Codierung.The encoder 114 determines whether to encode the group of input pixels using ICH coding or non-ICH coding (606). ICH encoding may be determined by the encoder 114 per group, as well as according to any number of the similarity criteria, estimated bit cost criteria, and/or error criteria described above. For example, encoder 114 may encode the pixel group using ICH coding if: (i) for each pixel in the pixel group, ICH 126 includes one or more entries with a sufficiently similar color value, e.g., when the difference in color values is smaller as a difference threshold, and (ii) a function output of the number of bits to encode the group and an error using an ICH encoding is less than a corresponding function output of the number of bits used to encode the group and an error using a Non-ICH Encoding.

Bei einer Bestimmung zur Verwendung einer ICH-Codierung zum Codierung einer Pixelgruppe codiert der Codierer 114 die Pixel als jeweilige Indexwert in die ICH 126 (610). Der Codierer 114 kann für ein bestimmtes zu codierendes Pixel den Indexwert zu dem Eintrag in der ICH 126 mit einem identischen oder ähnlichen Farbwert auswählen, wie er gemäß den Ähnlichkeitskriterien bestimmt wird. Der Codierer 114 kann eine feste Anzahl von Bits verwenden, um den Indexwert in einem codierten Bitstrom anzugeben. Als ein Beispiel kann der Codierer 114 eine feste Anzahl von (z.B. 5) Bits zum Codieren eines Indexwerts für eine ICH 126 mit 32 Einträgen verwenden. In einigen Abwandlungen kann der Codierer 114 die Anzahl von Bits variieren oder reduzieren, die zum Angeben eines bestimmten Indexwerts in dem codierten Bitstrom verwendet wird, z.B. durch Nutzung von Techniken zur Codierung mit variabler Länge. Die Betriebsparameter 127 können eine Syntax zum Codieren von Pixelwerten in dem codierten Bitstrom unter Verwendung von Indexwerten spezifizieren, und zusätzliche Beispiel von Syntaxen umfassen eine Verwendung einer Entropiecodierung, einer Vektorcodierung oder einer arithmetischen Codierung, um einen Indexwert der ICH 126 in dem codierten Bitstrom darzustellen.Upon determining to use ICH encoding to encode a group of pixels, the encoder 114 encodes the pixels into the ICH 126 as a respective index value (610). For a particular pixel to be encoded, the encoder 114 may select the index value to the entry in the ICH 126 with an identical or similar color value as determined according to the similarity criteria. The encoder 114 may use a fixed number of bits to indicate the index value in an encoded bit stream. As an example, encoder 114 may use a fixed number of (e.g., 5) bits to encode an index value for a ICH 126 with 32 entries. In some variations, encoder 114 may vary or reduce the number of bits used to indicate a particular index value in the encoded bitstream, e.g., by utilizing variable length coding techniques. The operational parameters 127 may specify a syntax for encoding pixel values in the encoded bitstream using index values, and additional example syntaxes include using entropy encoding, vector encoding, or arithmetic encoding to represent an index value of the ICH 126 in the encoded bitstream.

Der Codierer 114 kann die ICH 126 aktualisieren (612), zum Beispiel zum Angeben bzw. Bezeichnen der Einträge des/der unter Bezug genommenen bzw. referenzierten Indexwerts/Indexwerte, die zum Codieren der Pixelgruppe verwendet werden, als am aktuellsten verwendet. Der Codierer 114 kann die ICH 126 mit einer beliebigen festgelegten Frequenz bzw. Häufigkeit aktualisieren, z.B. nach Codierung jedes Pixels, jedes zweiten Pixels, jedes dritten Pixels, usw. Bei Implementierung der ICH 126 als eine geordnete Liste kann der Codierer 114 die durch die ICH-codierten Pixel unter Bezug genommenen bzw. referenzierten Einträge an den Anfang der geordneten Liste bewegen bzw. verschieben. In einigen Abwandlungen kann, wenn der Codierer 114 ein Pixel unter Verwendung eines Indexwerts aus einem Teil der ICH 126 codiert, der für ausgewählte Nachbarpixel zugewiesen ist, der Codierer 114 auf eine Aktualisierung der ICH 126 verzichten, um den Farbwert des Nachbarpixels als aktuell verwendet zu bezeichnen. In weiteren Abwandlungen kann der Codierer 114 die ICH 126 aktualisieren, um den Farbwert des Nachbarpixels als aktuell verwendet zu bezeichnen, mit einer beliebigen festgelegten Frequenz bzw. Häufigkeit, z.B. bei jedem Codierungsereignis unter Verwendung eines ausgewählten Nachbarpixels, bei jedem zweiten solchen Ereignis, bei jedem dritten solchen Ereignis, usw.The encoder 114 may update the ICH 126 (612), for example, to indicate as most recently used the entries of the referenced index value(s) used to encode the pixel group. The encoder 114 may update the ICH 126 at any specified frequency, eg, after encoding every pixel, every other pixel, every third pixel, etc. When implementing the ICH 126 as an ordered list, the encoder 114 may update the ICH -move the encoded pixel among referenced entries to the top of the ordered list. In some variations, when the encoder is 114 encodes a pixel using an index value from a portion of the ICH 126 allocated for selected neighboring pixels, the encoder 114 refrains from updating the ICH 126 to designate the neighboring pixel's color value as currently in use. In further variations, the encoder 114 may update the ICH 126 to designate the neighboring pixel's color value as currently used at any specified frequency, eg, on every encoding event using a selected neighboring pixel, every other such event, every third such event, etc.

Der Codierer 114 kann einen Hinweis auf eine ICH-Codierung für die Pixelgruppe in dem codierten Bitstrom bereitstellen (614). Der Codierer 114 kann die Verwendung einer ICH-Codierung für eine Gruppe in dem codierten Bitstrom signalisieren, z.B. durch explizites Hinzufügen eines ICH-Codierung-Hinweises in den codierten Bitstrom, der für die ICH-codierte Pixelgruppe maßgeblich ist. Zum Beispiel können die Betriebsparameter 127 eine Syntax zum Hinweisen auf eine Auswahl einer ICH-Codierung für eine bestimmte Pixelgruppe spezifizieren.The encoder 114 may provide an indication of ICH encoding for the pixel group in the encoded bitstream (614). The encoder 114 may signal the use of ICH coding for a group in the encoded bitstream, e.g., by explicitly adding an ICH coding hint in the encoded bitstream relevant to the ICH encoded pixel group. For example, the operational parameters 127 may specify syntax for indicating a selection of ICH encoding for a particular pixel group.

In Zusammenhang mit einer DSU-VLC-Codierung codiert der Bitstrom einen Größenprädiktionswert als ein Delta mit Bezug auf einen vorhergesagten Grö-ßenwert und wird das Delta in dem Präfix einer Einheit codiert. In diesem beispielhaften Zusammenhang kann der Codierer 114 eine Auswahl einer ICH-Codierung für eine Pixelgruppe durch Codierung eines Escape- bzw. Ausstiegs-/ Wechselcodewerts in dem Präfix von dieser Gruppe bezeichnen, z.B. einem Präfix für eine Y-Einheit der Pixelgruppe. Ein Escape- bzw. Ausstiegs-/Wechselwert kann anstelle eines Deltagrößenwerts verwendet werden.In the context of DSU-VLC coding, the bit stream encodes a magnitude prediction value as a delta with respect to a predicted magnitude value and the delta is encoded in the prefix of a unit. In this example context, the encoder 114 may designate a selection of an ICH encoding for a pixel group by encoding an escape code value in the prefix of that group, e.g., a prefix for a Y-unit of the pixel group. An escape or exit/exchange value can be used in place of a delta size value.

Als eine Option kann, wenn der Codierer 114 eine erste Gruppe von Pixel unter Verwendung einer ICH-Codierung codiert, der Codierer 114 einen modifizierten Präfix- und Escape- bzw. Ausstiegs-/Wechselcode für eine zweite Gruppe von Pixel, die auf die erste Gruppe folgt, anwenden. Zum Beispiel kann der Codierer 114 das Präfix einer ersten Einheit der zweiten Gruppe derart definieren, dass ein bestimmter verkürzter Präfixcode als ein Escape- bzw. Ausstiegs-/Wechselcode interpretiert wird, der eine ICH-Codierung der zweiten Gruppe bezeichnet, und ein längeres Präfix als ein Nicht-Escape- bzw. Ausstiegs-/Wechselcode interpretiert wird, der eine Nicht-ICH-Codierung der zweiten Gruppe bezeichnet. In diesem Beispiel kann der Codierer 114 ein Präfix der ersten Einheit einer zweiten Gruppe als ein Präfix 0 spezifizieren, das als ein Bit „1“ codiert wird, um anzugeben, dass die zweite Gruppe unter Verwendung einer ICH-Codierung codiert wird/ist. Jeder Präfixwert größer als 0, der z.B. mit einem oder mehreren Bits „0“, gefolgt von einem Bit „1“, codiert wird, kann angeben, dass die zweite Gruppe unter Verwendung einer Nicht-ICH-Codierung codiert wird/ist. In diesem Beispiel kann eine Präfixwert größer als 0 durch Subtraktion von 1 von dem Präfixwert aufgefasst werden, um den Wert eines Präfix einer Gruppe zu bilden, der keine Gruppe vorangegangen war, die nicht unter Verwendung einer ICH-Codierung codiert wird/ist, z.B., wenn die erste Gruppe unter Verwendung einer Nicht-ICH-Codierung codiert wird/ist.As an option, if the encoder 114 encodes a first group of pixels using ICH encoding, the encoder 114 may use a modified prefix and escape code for a second group of pixels that is based on the first group follows, apply. For example, the encoder 114 may define the prefix of a first unit of the second group such that a particular shortened prefix code is interpreted as an escape code denoting an ICH encoding of the second group, and a longer prefix as a non-escape or exit/switching code is interpreted, which designates a non-ICH coding of the second group. In this example, the encoder 114 may specify a prefix of the first unit of a second group as a prefix 0 encoded as a "1" bit to indicate that the second group is/is encoded using ICH encoding. Any prefix value greater than 0, encoded, for example, with one or more "0" bits followed by a "1" bit, may indicate that the second group is/is encoded using non-ICH encoding. In this example, a prefix value greater than 0 can be construed by subtracting 1 from the prefix value to form the value of a prefix of a group that was not preceded by a group that is/is not encoded using an ICH encoding, e.g., if the first group is/is encoded using a non-ICH encoding.

Um dies zu veranschaulichen kann der Codierer 114 eine nachfolgende Pixelgruppe unter Verwendung einer Nicht-ICH-Codierung codieren, die unmittelbar auf eine vorhergehende Pixelgruppe folgt, die unter Verwendung einer ICH-Codierung codiert wird. Der Codierer 114 kann bestimmen, dass die nachfolgende Gruppe eine erste Einheit mit einem Präfixwert gleich 2 hat, wenn die vorhergehende Gruppe nicht unter Verwendung einer ICH-Codierung codiert wurde. Wenn der Codierer 114 jedoch die vorhergehende Gruppe unter Verwendung einer ICH-Codierung codiert, kann der Codierer 114 bestimmen, dass das Präfix der ersten Einheit der nachfolgenden Gruppe einen Wert von 2 + 1 = 3 hat. Der Präfixwert 3 kann als „0001“ codiert werden. Der Präfixwert 3, der größer ist als 0, bezeichnet einen Präfixwert von 3 - 1 = 2, und keinen Escape- bzw. Ausstiegs-/Wechselcode. Als solches kann, wenn mehrere aufeinanderfolgende Pixelgruppen unter Verwendung einer ICH-Codierung codiert werden, die Anzahl von Bits in den Präfixen der zweiten und anschließenden aufeinanderfolgenden ICH-codierten Blöcken reduziert werden. Das Ergebnis kann darin bestehen, die Anzahl von Bits zu reduzieren, die zum Codieren eines Bilds oder eines Teils eines Bilds verwendet wird.To illustrate, encoder 114 may encode a subsequent group of pixels using non-ICH encoding that immediately follows a previous group of pixels encoded using ICH encoding. The encoder 114 may determine that the subsequent group has a first unit with a prefix value equal to 2 if the previous group was not encoded using ICH encoding. However, if the encoder 114 encodes the previous group using ICH encoding, the encoder 114 may determine that the prefix of the first unit of the subsequent group has a value of 2+1=3. The prefix value 3 can be encoded as "0001". A prefix value of 3 greater than 0 denotes a prefix value of 3 - 1 = 2, and no escape code. As such, when multiple consecutive pixel groups are encoded using ICH coding, the number of bits in the prefixes of the second and subsequent consecutive ICH encoded blocks can be reduced. The result can be to reduce the number of bits used to encode an image or part of an image.

Ein Größenprädiktionswert, der für eine Gruppe gilt, die einen Escape- bzw. Ausstiegs-/Wechselcode aufweist, kann bis zu einer nachfolgenden Gruppe fortbestehen, wo er durch den Codierer 114 wiederum als der Prädiktionswert angewandt wird. Die Größenprädiktion kann fortbestehen, bis der Codierer 114 bestimmt, eine nachfolgende Gruppe unter Verwendung von DSU-VLC, z.B. unter Verwendung einer Nicht-ICH-Codierung, zu codieren, woraufhin der Codierer 114 diese nachfolgende Gruppe zum Erzeugen des nächsten Größenprädiktionswerts verwendet.A magnitude prediction value that applies to a group that has an escape code may persist to a subsequent group where it is again applied by the encoder 114 as the prediction value. Size prediction may persist until encoder 114 determines to encode a subsequent group using DSU-VLC, e.g., using non-ICH coding, whereupon encoder 114 uses this subsequent group to generate the next size prediction value.

Der Codierer 114 kann bestimmen, die Pixelgruppe unter Verwendung einer Nicht-ICH-Codierung zu codieren (616). In einigen Abwandlungen kann der Codierer 114 ein Pixel als einen unkomprimierten Farb- oder Pixelwert in einem Ausgangsbitstrom codieren. Der Codierer 114 kann auch die Farbwerte der nicht-ICH-codierten Pixel in die ICH 126 einfügen (618), z.B. in einer beliebigen der vorstehend beschriebenen Arten. Der Codierer 114 kann die eingefügten Farbwerte als am aktuellsten verwendet bezeichnen und die Aktualitätsbezeichnungen von anderen Einträgen in der ICH 126 aktualisieren, z.B. durch Schieben von älteren Einträgen nach unten in einer Schieberegisterimplementierung. Der Codierer 114 kann diese Einfügungen und Aktualisierungen mit einer beliebigen festgelegten Frequenz bzw. Häufigkeit durchführen, z.B. nach Codierung eines Pixels, nach Codierung jedes zweiten Pixels, nach Codierung einer Gruppe, nach Codierung von mehreren Gruppen usw. Der Codierer 114 kann auch in dem codierten Bitstrom eine Codierung der Pixelgruppe unter Verwendung einer Nicht-ICH-Codierung signalisieren, z.B. durch Nichthinzufügung eines Escape- bzw. Ausstiegs-/Wechselcodes in den codierten Bitstrom. Der Codierer 114 kann fortfahren, nachfolgende Pixelgruppen zu verarbeiten (622).The encoder 114 may determine to encode the pixel group using non-ICH encoding (616). In some variations, encoder 114 may encode a pixel as an uncompressed color or pixel value in an output bitstream. The encoder 114 can also convert the color values of the non-ICH encoded pixels into the ICH Insert 126 (618), eg in any of the ways described above. The encoder 114 may designate the inserted color values as most recently used and update the recency designations of other entries in the ICH 126, eg, by shifting older entries down in a shift register implementation. The encoder 114 may perform these insertions and updates at any specified frequency, eg, after one pixel is encoded, after every other pixel is encoded, after one group is encoded, after multiple groups are encoded, and so on Bitstream signal coding of the pixel group using non-ICH coding, e.g. by not adding an escape code to the coded bitstream. The encoder 114 may continue to process subsequent groups of pixels (622).

7 zeigt ein Beispiel eines Systems für eine Bildverarbeitung. Gemäß 7 kann eine Vorrichtung 702 Bilddaten decodieren, die unter Verwendung einer ICH- und einer Nicht-ICH-Codierung codierte Bilddaten umfassen. In dieser Hinsicht kann die Vorrichtung 702 einen codierten Bitstrom von einer Vorrichtung 100 empfangen, die einen Codierer 114 implementiert, zum Beispiel über eine Kommunikationsstrecke 706. 7 shows an example of a system for image processing. According to 7 For example, a device 702 may decode image data that includes image data encoded using ICH and non-ICH encoding. In this regard, device 702 may receive an encoded bitstream from a device 100 that implements an encoder 114, for example over a communications link 706.

In dem in 7 gezeigten Beispiel umfasst die Vorrichtung 702 eine Kommunikationsschnittstelle 710, eine Systemlogik 712 und eine Benutzerschnittstelle 716, z.B. eine Anzeige. Die Systemlogik 712 kann einen Decodierer 714 implementieren. In einigen Implementierungen umfasst die Systemlogik 712 einen oder mehrere Prozessoren 720 und Speicher 721. Der Speicher 721 speichert zum Beispiel Systemanweisungen 722, die Decodierungsanweisungen 724 umfassen, eine indizierte Farbhistorie 726, Betriebsparameter 727 und zu decodierende Daten, z.B. codierte Pixeldaten 728. In einigen Implementierungen implementiert die Vorrichtung 702 den Decodierer 714 und die ICH 726 in Hardware, z.B. als dedizierte Bildverarbeitungsschaltungen.in the in 7 In the example shown, device 702 includes a communication interface 710, system logic 712, and a user interface 716, eg, a display. The system logic 712 can implement a decoder 714 . In some implementations, the system logic 712 includes one or more processors 720 and memory 721. The memory 721 stores, for example, system instructions 722, which include decoding instructions 724, an indexed color history 726, operating parameters 727, and data to be decoded, eg, encoded pixel data 728. In some implementations For example, device 702 implements decoder 714 and ICH 726 in hardware, eg, as dedicated image processing circuits.

Der Decodierer 714 kann Bilddaten decodieren, die vorher unter Verwendung einer ICH-Codierung oder einer Nicht-ICH-Codierung codiert wurden. In dieser Hinsicht kann der Decodierer 714 die ICH 726 implementieren und unter-/halten, und zwar in einer Art und Weise, die konsistent dazu ist, wie der Codierer 114 die ICH 126 implementiert und unter-/hält. Dementsprechend kann der Decodierer 714 eine beliebige Funktionalität des Codierers 114 implementieren, die vorstehend beschrieben ist, obgleich der Decodierer 714 in einigen Implementierungen die Auswahlalgorithmen oder die -logik, die durch den Codierer 114 verwendet werden oder wird, um zu bestimmen, ob Daten unter Verwendung einer ICH-Codierung oder einer Nicht-ICH-Codierung zu codieren sind, nicht implementieren kann.Decoder 714 may decode image data previously encoded using ICH encoding or non-ICH encoding. In this regard, decoder 714 may implement and maintain ICH 726 in a manner consistent with how encoder 114 implements and maintains ICH 126 . Accordingly, the decoder 714 may implement any functionality of the encoder 114 described above, although in some implementations the decoder 714 may use the selection algorithms or logic used by the encoder 114 to determine whether data using to be coded with an ICH coding or a non-ICH coding cannot implement.

In einigen Abwandlungen führen der Codierer 114 und der Decodierer 714 identische oder konsistente Operationen durch, um die ICH 126 bzw. die ICH 726 zu aktualisieren. Die Aktualisierungen können zu Einträgen in der ICH 126 und der ICH 726 führen, die nach einer Decodierung eines Pixels in dem Decodierer 714 bzw. einer Codierung des Pixels in dem Codierer 114 konsistente Attribute teilen bzw. gemeinsam benutzen. Konsistente Attribute können sich auf identische Attribute oder Attribute beziehen, die um nicht mehr als eine festgelegte Distanzschwelle variieren. Konsistente Attribute können ein Teilen bzw. gemeinsames Benutzen der gleichen Farbwerte, der gleichen Indexwerte und der gleichen Hinweiswerte für eine aktuelle Verwendung, z.B. LRU, MRU, Zählerwerte oder eine Ordnung von Einträgen, umfassen.In some variations, encoder 114 and decoder 714 perform identical or consistent operations to update ICH 126 and ICH 726, respectively. The updates may result in entries in the ICH 126 and ICH 726 that share consistent attributes after decoding a pixel in decoder 714 and encoding the pixel in encoder 114, respectively. Consistent attributes can refer to identical attributes or attributes that vary by no more than a specified distance threshold. Consistent attributes may include sharing the same color values, the same index values, and the same hint values for current usage, e.g., LRU, MRU, counter values, or an ordering of entries.

Der Codierer 114 und der Decodierer 714 können die ICH 126 bzw. die ICH 726 gemäß konsistenten Initialisierungskriterien initialisieren. Der Codierer 114 und der Decodierer 714 können konsistente Kriterien beim Bestimmen anwenden, ob der Farbwert für ein nicht-ICH-codiertes Pixel in die ICH 126 bzw. 726 einzufügen ist, z.B. durch Anwendung der gleichen Ähnlichkeitskriterien. Der Codierer 114 und der Decodierer 714 können Inhaltsverarbeitungsalgorithmen verwenden, die sich im Hinblick auf eine Unterhaltung bzw. Pflege ihrer jeweiligen ICH-Einträge konsistent verhalten, ungeachtet dessen, wie der Codierer 114 und der Decodierer 714 implementiert sind.The encoder 114 and the decoder 714 may initialize the ICH 126 and the ICH 726, respectively, according to consistent initialization criteria. The encoder 114 and the decoder 714 can apply consistent criteria in determining whether to insert the color value for a non-ICH encoded pixel into the ICH 126 and 726, respectively, e.g., by applying the same similarity criteria. The encoder 114 and the decoder 714 may use content processing algorithms that behave consistently in terms of maintaining their respective ICH entries, regardless of how the encoder 114 and the decoder 714 are implemented.

Während das System 700 getrennte Vorrichtungen 100 und 702 zeigt, die einen Codierer 114 bzw. einen Decodierer 714 implementieren können, können der Codierer 114 und der Decodierer 714 in einer einzigen Vorrichtung implementiert sein. Zum Beispiel kann die Systemlogik 112 sowohl den Codierer 114 als auch den Decodierer 714 implementieren.While system 700 shows separate devices 100 and 702 that may implement encoder 114 and decoder 714, respectively, encoder 114 and decoder 714 may be implemented in a single device. For example, system logic 112 may implement both encoder 114 and decoder 714 .

8 zeigt ein Beispiel einer Logik 800, die eine Vorrichtung 702 zum Decodieren von Bilddaten implementieren kann. Der Decodierer 714 kann die Logik 800 als Hardware, Software oder beides z.B. in Software als die Decodierungsanweisungen 724, implementieren. 8th Figure 8 shows an example of logic 800 that an apparatus 702 for decoding image data may implement. The decoder 714 may implement the logic 800 in hardware, software, or both in software as the decode instructions 724, for example.

Der Decodierer 714 kann die ICH 726 gemäß konsistenten Initialisierungskriterien, die durch den Codierer 114 angewandt werden, initialisieren (802). Der Decodierer 714 kann zu decodierende Daten erhalten (804). In dieser Hinsicht kann der Decodierer 714 einen codierten Bitstrom (z.B. komprimierte Bilddaten) erhalten, der vorher durch den Codierer 114 codiert wurde.The decoder 714 may initialize the ICH 726 according to consistent initialization criteria applied by the encoder 114 (802). Decoder 714 may receive (804) data to be decoded. In this regard, the decoder 714 may receive an encoded bit stream (e.g., com primed image data) previously encoded by the encoder 114 is obtained.

Der Decodierer 714 bestimmt, ob Bilddaten für eine Pixelgruppe unter Verwendung einer ICH-Codierung codiert wurden (806). Zu diesem Zweck kann der Decodierer 714 den codierten Bitstrom pro Gruppe und gemäß den Betriebsparametern 727 analysieren. Die Betriebsparameter 727 können eine konsistente oder identische Syntax spezifizieren, die durch den Codierer 114 verwendet wird, um eine Verwendung einer ICH-Codierung für eine Pixelgruppe anzugeben. In dieser Hinsicht kann der Decodierer 714 das Präfix für eine erste Einheit einer Gruppe decodieren und in Erwiderung auf eine Erkennung eines Escape- bzw. Ausstiegs-/Wechselcodes in dem Präfix bestimmten, dass die Pixelgruppe unter Verwendung einer ICH-Codierung codiert wurde.The decoder 714 determines whether image data for a pixel group has been encoded using ICH encoding (806). For this purpose, the decoder 714 can analyze the encoded bit stream per group and according to the operating parameters 727 . Operating parameters 727 may specify consistent or identical syntax used by encoder 114 to indicate use of ICH encoding for a pixel group. In this regard, decoder 714 may decode the prefix for a first unit of a group and, in response to detecting an escape code in the prefix, determine that the pixel group was encoded using ICH encoding.

In einigen Implementierungen kann, wenn eine erste Gruppe unter Verwendung einer ICH-Codierung codiert ist, der Decodierer 714 das Präfix der ersten Einheit einer unmittelbar folgenden Gruppe verschieden von der Interpretation interpretieren, die der Decodierer 714 erhalten würde, wenn die erste Gruppe unter Verwendung einer Nicht-ICH-Codierung codiert wäre. Zum Beispiel kann der Decodierer 714 bestimmen, dass ein Präfix der ersten Einheit einer zweiten Gruppe, das einen Präfixwert von 0 darstellt, der als Bit „1“ codiert ist, bezeichnet, dass die zweite Gruppe unter Verwendung einer ICH-Codierung codiert ist, und bestimmen, dass jeder Präfixwert größer als 0, der mit einem oder mehreren Bits „0“, gefolgt von einem Bit „1“, codiert ist, bezeichnet, dass die zweite Gruppe unter Verwendung einer Nicht-ICH-Codierung codiert ist. Dementsprechend kann der Decodierer 714 einen Präfixwert größer als 0 durch Subtraktion von 1 von dem Präfixwert verarbeiten, um den Wert von einem Präfix einer Einheit einer Gruppe zu bilden, der keine vorhergehende Gruppe vorangegangen war, die unter Verwendung einer ICH-Codierung codiert ist.In some implementations, when a first group is encoded using an ICH encoding, the decoder 714 may interpret the prefix of the first unit of an immediately following group differently from the interpretation that the decoder 714 would receive if the first group was encoded using an Non-ICH encoding would be encoded. For example, decoder 714 may determine that a prefix of the first unit of a second group representing a prefix value of 0 encoded as bit "1" indicates that the second group is encoded using ICH encoding, and determine that any prefix value greater than 0 encoded with one or more "0" bits followed by a "1" bit indicates that the second group is encoded using non-ICH encoding. Accordingly, decoder 714 may process a prefix value greater than 0 by subtracting 1 from the prefix value to form the value of a prefix of a unit of a group that was not preceded by a previous group encoded using ICH coding.

Für Bilddaten für eine unter Verwendung einer ICH-Codierung codierten Pixelgruppe kann der Decodierer 714 die Daten für die Pixelgruppe als Indexwerte in die ICH 726 interpretieren. Dementsprechend kann der Decodierer 714 die Pixel unter Verwendung der Indexwerte decodieren (810), wodurch Farbwerte erhalten werden, die in dem codierten Bitstrom durch die jeweiligen Indexwerte spezifiziert sind. Der Decodierer 714 kann einen Indexwert so interpretieren, dass er auf einen Eintrag der ICH 726 zeigt, z.B. auf einen ersten Teil der ICH 726, der aktuell verwendete Farbwerte bezeichnet, oder auf einen zweiten Teil der ICH 726, der zur Speicherung von Farbwerten von ausgewählten rekonstruierten Pixel zugewiesen ist. Die ausgewählten rekonstruierten Pixel können Nachbarpixel sein, oder sie können andere festgelegte Positionen oder Beziehungen zu den aktuellen Pixel aufweisen. Der Decodierer 714 kann die entsprechenden Einträge in der ICH 726 in einer Art und Weise, die konsistent zu dem Codierer 114 ist, aktualisieren (812).For image data for a group of pixels encoded using ICH encoding, the decoder 714 may interpret the data for the group of pixels into the ICH 726 as index values. Accordingly, decoder 714 may decode (810) the pixels using the index values, thereby obtaining color values specified in the encoded bitstream by the respective index values. The decoder 714 may interpret an index value as pointing to an entry of the ICH 726, e.g assigned to reconstructed pixels. The selected reconstructed pixels can be neighboring pixels, or they can have other fixed positions or relationships to the current pixels. The decoder 714 may update the corresponding entries in the ICH 726 in a manner consistent with the encoder 114 (812).

Wenn der Decodierer 714 bestimmt, dass Pixelgruppendaten nicht unter Verwendung einer ICH-Codierung codiert wurden, decodiert der Decodierer 714 die Pixeldaten gemäß einem Nicht-ICH-Decodierungsverfahren (814), um die Pixeldaten zu rekonstruieren. Der Decodierer 714 kann den Farbwert von rekonstruierten Pixel in einer Eintragseinfügungs- und/oder Ersetzungsweise, die konsistent zu dem Codierer 114 ist, in die ICH 726 einfügen (816). Der Decodierer 714 kann fortfahren, nachfolgende Pixelgruppendaten zu decodieren (818).If decoder 714 determines that pixel group data was not encoded using ICH encoding, decoder 714 decodes the pixel data according to a non-ICH decoding method (814) to reconstruct the pixel data. The decoder 714 may insert the color value of reconstructed pixels into the ICH 726 in an entry insertion and/or replacement manner consistent with the encoder 114 (816). Decoder 714 may continue to decode subsequent pixel group data (818).

Die Verfahren, die Vorrichtungen und die Logik, die vorstehend beschrieben sind, einschließlich des Codierers 114 und des Decodierers 714, können in vielen verschiedenen Weisen in vielen verschiedenen Kombinationen von Hardware, Software oder sowohl Hardware als auch Software implementiert werden. Zum Beispiel kann das gesamte System oder können Teile von diesen Schaltungen in einer Steuereinheit, einem Mikroprozessor oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfassen, oder mit diskreter Logik oder diskreten Komponenten oder einer Kombination von anderen Typen von analogen oder digitalen Schaltungen, die auf einer einzelnen integrierten Schaltung kombiniert sind oder zwischen mehreren integrierten Schaltungen verteilt sind, implementiert werden. Die gesamte Logik oder ein Teil von dieser, die vorstehend beschrieben ist, kann als Anweisungen zur Ausführung durch einen Prozessor, eine Steuereinheit oder eine andere Verarbeitungsvorrichtung implementiert werden, und kann in einen dinglichen oder nicht-vorübergehenden maschinenlesbaren oder computerlesbaren Medium gespeichert sein, wie etwa einem Flashspeicher, einem Direktzugriffsspeicher (RAM) oder einem Festwertspeicher (ROM), einem lösch- und programmierbaren Festwertspeicher (EPROM) oder einem anderen maschinenlesbaren Medium wie etwa einem Compact-Disc-Festwertspeicher (CDROM) oder einer magnetischen oder optischen Platte. Somit kann ein Produkt, wie etwa ein Computerprogrammprodukt, ein Speichermedium und auf dem Medium gespeicherte computerlesbare Anweisungen umfassen, die, wenn sie in einem Endpunkt, einem Computersystem oder einer anderen Vorrichtung ausgeführt werden, die Vorrichtung dazu veranlassen, Vorgänge bzw. Betriebe gemäß einer der vorstehenden Beschreibungen durchzuführen.The methods, apparatus, and logic described above, including encoder 114 and decoder 714, can be implemented in many different ways in many different combinations of hardware, software, or both hardware and software. For example, the entire system, or portions of these circuits, may be contained in a control unit, microprocessor, or application specific integrated circuit (ASIC), or with discrete logic or discrete components, or a combination of other types of analog or digital circuitry running on a combined in a single integrated circuit or distributed between multiple integrated circuits. All or a portion of the logic described above may be implemented as instructions for execution by a processor, controller, or other processing device, and may be embodied in a tangible or non-transitory machine-readable or computer-readable medium, such as flash memory, random access memory (RAM), or read-only memory (ROM), erasable programmable read-only memory (EPROM), or other machine-readable medium such as compact disc read-only memory (CDROM), or magnetic or optical disk. Thus, a product, such as a computer program product, may include a storage medium and computer-readable instructions stored on the medium that, when executed on an endpoint, computer system, or other device, cause the device to perform operations in accordance with any of the carry out the above descriptions.

Die Verarbeitungsfähigkeit des Codierers 114 oder des Decodierers 714 kann zwischen mehreren Systemkomponenten verteilt sein, wie etwa zwischen mehreren Prozessoren und Speichern, optional umfassend mehrere verteilte Verarbeitungssysteme. Parameter, Datenbanken und andere Datenstrukturen können separat gespeichert und verwaltet sein/werden, können in einem einzigen Speicher oder einer einzigen Datenbank eingebunden bzw. einbezogen sein/werden, können in vielen unterschiedlichen Arten logisch und physikalisch organisiert sein/werden, und können in vielen Arten implementiert sein/werden, was Datenstrukturen umfasst, wie etwa verlinkte Listen, Hash-Tabellen oder implizite Speichermechanismen. Programme können Teile (z.B. Subroutinen) eines einzelnen Programms, separate Programme, verteilt über mehrere Speicher und Prozessoren, sein oder in vielen unterschiedlichen Arten implementiert sein/werden, wie etwa in einer Bibliothek, wie etwa in einer geteilten bzw. gemeinsamen Bibliothek (z.B. DLL (Dynamic Link Library)). Die DLL kann zum Beispiel Code speichern, der jede der vorstehend beschriebenen Systemverarbeitungen durchführt.The processing capability of encoder 114 or decoder 714 may be distributed among multiple system components, such as between multiple processors and memories, optionally including multiple distributed processing systems. Parameters, databases and other data structures may be stored and managed separately, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may be organized in many ways implemented, which includes data structures such as linked lists, hash tables or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs distributed across multiple memories and processors, or implemented in many different ways, such as in a library, such as a shared library (e.g., DLL (Dynamic Link Library)). For example, the DLL may store code that performs any of the system processing described above.

Es wurden verschiedene Implementierungen im Speziellen beschrieben. Viele weitere Implementierungen sind jedoch ebenso möglich.Various implementations have been specifically described. However, many other implementations are also possible.

Ein Codierer kann eine indizierte Farbhistorie implementieren, die Farbwerte für vorher codierte Pixel speichert. Der Codierer kann ein aktuelles Pixel oder eine aktuelle Gruppe von Pixel zur Codierung erhalten und bestimmen, ob das aktuelle Pixel unter Verwendung der indizierten Farbhistorie zu codieren ist. Dabei kann der Codierer einen Farbwert des aktuellen Pixels mit Farbwerten der vorher codierten Pixel vergleichen, um zu bestimmen, ob das aktuelle Pixel ausreichend ähnlich zu einem vorher codierten Pixelfarbwert ist, z.B. durch Erfüllung von einem oder mehreren Ähnlichkeitskriterien. Wenn die Ähnlichkeitskriterien erfüllt sind, kann der Codierer das aktuelle Pixel als einen Indexwert codieren, der den Eintrag in der indizierten Farbhistorie referenziert, der einen Farbwert speichert, der die Ähnlichkeitskriterien erfüllt. Wenn die Ähnlichkeitskriterien nicht erfüllt sind, kann der Codierer das aktuelle Pixel unter Verwendung eines anderen Codierungsverfahrens oder einer anderen Codierungsmethode codieren.An encoder can implement an indexed color history that stores color values for previously encoded pixels. The encoder can obtain a current pixel or group of pixels for encoding and determine whether to encode the current pixel using the indexed color history. In doing so, the encoder may compare a color value of the current pixel to color values of previously encoded pixels to determine whether the current pixel is sufficiently similar to a previously encoded pixel color value, e.g., by meeting one or more similarity criteria. If the similarity criteria are met, the encoder can encode the current pixel as an index value that references the entry in the indexed color history that stores a color value that meets the similarity criteria. If the similarity criteria are not met, the encoder can encode the current pixel using a different encoding scheme or method.

Claims (15)

System mit: einem Speicher, der speichert: eine indizierte Farbhistorie mit einem Eintrag, der einen Farbwert eines vorher codierten Pixels speichert; einer Codierungslogik, die mit dem Speicher in Kommunikation steht und konfiguriert ist zum: Erhalten eines aktuellen Pixels zur Codierung; Bestimmen, ob das aktuelle Pixel durch Bezugnahme auf die indizierte Farbhistorie zu codieren ist, durch Bestimmen, wenn ein Farbwert des aktuellen Pixels innerhalb einer Differenzschwelle ausgehend von dem Farbwert des vorher codierten Pixels liegt; Zugreifen auf einen Quantisierungsparameter für das aktuelle Pixel; und Bestimmen der Differenzschwelle als eine Funktion des Quantisierungsparameters für das aktuelle Pixel; und wenn bestimmt wird, dass das aktuelle Pixel unter Verwendung der indizierten Farbhistorie zu codieren ist: Codieren des Pixels als ein Indexwert, welcher auf den Eintrag in der indizierten Farbhistorie Bezug nimmt; und wenn nicht bestimmt wird, dass das aktuelle Pixel unter Verwendung der indizierten Farbhistorie zu codieren ist: Codieren des aktuellen Pixels als ein unkomprimierter Farb- oder Pixelwert oder durch Einfügen in die indizierte Farbhistorie.System with: a memory that stores: an indexed color history having an entry storing a color value of a previously encoded pixel; an encoding logic in communication with the memory and configured to: obtaining a current pixel for encoding; determining whether to encode the current pixel by reference to the indexed color history by determining if a color value of the current pixel is within a difference threshold from the color value of the previously encoded pixel; accessing a quantization parameter for the current pixel; and determining the difference threshold as a function of the quantization parameter for the current pixel; and if it is determined that the current pixel is to be encoded using the indexed color history: encoding the pixel as an index value that references the entry in the indexed color history; and if not determining that the current pixel is to be encoded using the indexed color history: Encoding the current pixel as an uncompressed color or pixel value or by inserting it into the indexed color history. System gemäß Anspruch 1, wobei die Codierungslogik konfiguriert ist zum Bestimmen der Differenzschwelle als ein maximaler Quantisierungsfehler für den Quantisierungsparameter für das aktuelle Pixel.system according to claim 1 , wherein the coding logic is configured to determine the difference threshold as a maximum quantization error for the quantization parameter for the current pixel. System gemäß Anspruch 1, wobei die Codierungslogik konfiguriert ist zum Bestimmen der Differenzschwelle als: ein maximaler Quantisierungsfehler basierend auf dem Quantisierungsparameter für das aktuelle Pixel, wenn der maximale Quantisierungsfehler eine Fehlerschwelle nicht überschreitet; und ein Wert, der kleiner ist als der maximale Quantisierungsfehler für den Quantisierungsparameter für das aktuelle Pixel, wenn der maximale Quantisierungsfehler die Fehlerschwelle überschreitet.system according to claim 1 , wherein the coding logic is configured to determine the difference threshold as: a maximum quantization error based on the quantization parameter for the current pixel if the maximum quantization error does not exceed an error threshold; and a value less than the maximum quantization error for the quantization parameter for the current pixel if the maximum quantization error exceeds the error threshold. System gemäß Anspruch 1, wobei die Codierungslogik ferner konfiguriert ist zum expliziten Signalisieren, dass das aktuelle Pixel als der Indexwert in die indizierte Farbhistorie codiert ist, in einem codierten Bitstrom.system according to claim 1 , wherein the encoding logic is further configured to explicitly signal in an encoded bit stream that the current pixel is encoded as the index value in the indexed color history. System gemäß Anspruch 1, wobei die Codierungslogik ferner konfiguriert ist zum: Bestimmen, dass das aktuelle Pixel nicht unter Verwendung der indizierten Farbhistorie zu codieren ist, wenn kein Farbwert, der in der indizierten Farbhistorie gespeichert ist, ein Ähnlichkeitskriterium mit Bezug auf den Farbwert des aktuellen Pixels erfüllt; und Codieren des aktuellen Pixels ohne Bezugnahme auf die indizierte Farbhistorie.system according to claim 1 , wherein the encoding logic is further configured to: determine not to encode the current pixel using the indexed color history if no color value stored in the indexed color history meets a similarity criteria with respect to the color value of the current pixel; and encoding the current pixel without reference to the indexed color history. System gemäß Anspruch 5, wobei die Codierungslogik ferner konfiguriert ist zum: wenn bestimmt wird, dass das aktuelle Pixel nicht unter Verwendung der indizierten Farbhistorie zu codieren ist: Einfügen des Farbwerts des aktuellen Pixels in die indizierte Farbhistorie; und Bezeichnen des Farbwerts des aktuellen Pixels als einen am aktuellsten verwendeten Farbwert.system according to claim 5 , wherein the encoding logic is further configured to: when determining that the current pixel is not to be encoded using the indexed color history: inserting the color value of the current pixel into the indexed color history; and designating the color value of the current pixel as a most recently used color value. System gemäß Anspruch 6, wobei die Codierungslogik ferner konfiguriert ist zum Einfügen des Farbwerts des aktuellen Pixels in die indizierte Farbhistorie durch Entfernen eines am wenigsten aktuell verwendeten Farbwerts aus der indizierten Farbhistorie.system according to claim 6 , wherein the encoding logic is further configured to insert the color value of the current pixel into the indexed color history by removing a least recently used color value from the indexed color history. Verfahren mit: Erhalten von Bilddaten für ein aktuelles Pixel, wobei die Bilddaten einen Farbwert des aktuellen Pixels aufweisen; Bestimmen, dass das aktuelle Pixel durch Bezugnahme auf eine indizierte Farbhistorie zu codieren ist, wenn die indizierte Farbhistorie einen Historieneintrag umfasst, der einen Farbwert eines vorher codierten Pixels speichert, der ein Ähnlichkeitskriterium mit Bezug auf den Farbwert für das aktuelle Pixel erfüllt, wobei das Ähnlichkeitskriterium erfüllt ist, wenn der Farbwert des aktuellen Pixels innerhalb einer Differenzschwelle ausgehend von dem Farbwert des vorher codierten Pixels liegt; Zugreifen auf einen Quantisierungsparameter für das aktuelle Pixel; Bestimmen der Differenzschwelle als eine Funktion des Quantisierungsparameters für das aktuelle Pixel; und Codieren des aktuellen Pixels durch Bezugnahme auf den Historieneintrag in der indizierten Farbhistorie; und wenn nicht bestimmt wird, dass das aktuelle Pixel unter Verwendung der indizierten Farbhistorie zu codieren ist: Codieren des aktuellen Pixels als ein unkomprimierter Farb- oder Pixelwert oder durch Einfügen in die indizierte Farbhistorie.procedure with: obtaining image data for a current pixel, the image data having a color value of the current pixel; determining that the current pixel is to be encoded by reference to an indexed color history if the indexed color history includes a history entry storing a color value of a previously encoded pixel that satisfies a similarity criterion with respect to the color value for the current pixel, wherein the similarity criterion is met if the color value of the current pixel is within a difference threshold from the color value of the previously encoded pixel; accessing a quantization parameter for the current pixel; determining the difference threshold as a function of the quantization parameter for the current pixel; and encoding the current pixel by referencing the history entry in the indexed color history; and if not determining that the current pixel is to be encoded using the indexed color history: Encoding the current pixel as an uncompressed color or pixel value or by inserting it into the indexed color history. Verfahren gemäß Anspruch 8, wobei ein Codieren des aktuellen Pixels durch Bezugnahme auf den Historieneintrag ein Codieren des aktuellen Pixels als einen Indexwert umfasst, der dem Historieneintrag entspricht.procedure according to claim 8 wherein encoding the current pixel by referencing the history entry comprises encoding the current pixel as an index value corresponding to the history entry. Verfahren gemäß Anspruch 8, zusätzlich mit einem Unterhalten der indizierten Farbhistorie, um zu bezeichnen, dass der Historieneintrag ein am aktuellsten verwendeter Eintrag der indizierten Farbhistorie ist.procedure according to claim 8 , additionally maintaining the indexed color history to indicate that the history entry is a most recently used entry of the indexed color history. Verfahren gemäß Anspruch 8, zusätzlich mit: Signalisieren, dass das aktuelle Pixel durch Bezugnahme auf die indizierte Farbhistorie codiert wurde, in einem codierten Bitstrom.procedure according to claim 8 , additionally comprising: signaling that the current pixel has been encoded by reference to the indexed color history in an encoded bitstream. Verfahren gemäß Anspruch 11, wobei ein Signalisieren ein Codieren eines Escapecodes in ein Präfix umfasst, das dem aktuellen Pixel entspricht.procedure according to claim 11 , wherein signaling comprises encoding an escape code into a prefix corresponding to the current pixel. Produkt mit: einem nicht-vorübergehenden maschinenlesbaren Medium; und durch das Medium gespeicherten Anweisungen, die, wenn sie durch einen Prozessor ausgeführt werden, den Prozessor veranlassen zum: Erhalten eines aktuellen Pixels zur Codierung; Zugreifen auf eine indizierte Farbhistorie, um zu bestimmen, ob ein Eintrag in der indizierten Farbhistorie einen Farbwert für ein vorher codiertes Pixel speichert, der zumindest ein Kriterium erfüllt, das ein Ähnlichkeitskriterium mit Bezug auf einen Farbwert für das aktuelle Pixel umfasst, wobei das Ähnlichkeitskriterium erfüllt ist, wenn der Farbwert des aktuellen Pixels innerhalb einer Differenzschwelle ausgehend von dem Farbwert des vorher codierten Pixels liegt; Zugreifen auf einen Quantisierungsparameter für das aktuelle Pixel; Bestimmen der Differenzschwelle als eine Funktion des Quantisierungsparameters für das aktuelle Pixel; und wenn die indizierte Farbhistorie einen Eintrag umfasst, der das zumindest eine Kriterium erfüllt: Codieren des Pixels als einen Indexwert zu dem Eintrag; und wenn die indizierte Farbhistorie keinen Eintrag umfasst, der das Ähnlichkeitskriterium erfüllt: Codieren des Pixels ohne Bezugnahme auf die indizierte Farbhistorie als ein unkomprimierter Farb- oder Pixelwert oder durch Einfügen in die indizierte Farbhistorie.Product with: a non-transitory machine-readable medium; and instructions stored by the medium which, when executed by a processor, cause the processor to: obtaining a current pixel for encoding; accessing an indexed color history to determine whether an entry in the indexed color history stores a color value for a previously encoded pixel that meets at least one criterion that includes a similarity criterion with respect to a color value for the current pixel, the similarity criterion being met is if the color value of the current pixel is within a difference threshold from the color value of the previously encoded pixel; accessing a quantization parameter for the current pixel; determining the difference threshold as a function of the quantization parameter for the current pixel; and if the indexed color history includes an entry that meets at least one criterion: encoding the pixel as an index value to the entry; and if the indexed color history does not include an entry that satisfies the similarity criterion: Encoding the pixel as an uncompressed color or pixel value without reference to the indexed color history or by inserting it into the indexed color history. Produkt gemäß Anspruch 13, wobei die Anweisungen den Prozessor ferner veranlassen zum: Bestimmen, dass die indizierte Farbhistorie mehrere Einträge umfasst, die einen Farbwert speichern, der das Ähnlichkeitskriterium erfüllt, und in Erwiderung darauf: Auswählen eines Indexwerts von einem der mehreren Einträge als den Indexwert zum Codieren des Pixels.product according to Claim 13 , wherein the instructions further cause the processor to: determine that the indexed color history includes multiple entries storing a color value that satisfies the similarity criterion, and in response thereto: select an index value from one of the multiple entries as the index value for encoding the pixel . Produkt gemäß Anspruch 14, wobei die Anweisungen den Prozessor veranlassen zum Auswählen eines Indexwerts von einem der mehreren Einträge durch: Erkennen, welcher der mehreren Einträge einen Farbwert mit einer niedrigsten Summe von absoluten Differenzen von Farbkomponenten aufweist.product according to Claim 14 , wherein the instructions cause the processor to select an index value from one of the plurality of entries by: identifying which of the plurality of entries has a color value with a lowest sum of absolute differences of color components.
DE102014203560.0A 2013-02-28 2014-02-27 INDEXED COLOR HISTORY IN IMAGE ENCODING Active DE102014203560B4 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361770979P 2013-02-28 2013-02-28
US61/770,979 2013-02-28
US14/182,172 2014-02-17
US14/182,172 US9363517B2 (en) 2013-02-28 2014-02-17 Indexed color history in image coding

Publications (2)

Publication Number Publication Date
DE102014203560A1 DE102014203560A1 (en) 2014-08-28
DE102014203560B4 true DE102014203560B4 (en) 2023-03-16

Family

ID=51349707

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014203560.0A Active DE102014203560B4 (en) 2013-02-28 2014-02-27 INDEXED COLOR HISTORY IN IMAGE ENCODING

Country Status (1)

Country Link
DE (1) DE102014203560B4 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818032A (en) 1997-01-03 1998-10-06 Sun; Tsu-Hung Tom Encoded color halftone micro-dots for high density digital information storage
US6091850A (en) 1997-04-30 2000-07-18 Fujitsu Microelectronics, Inc. Method of compressing and decompressing graphic images
US6983074B1 (en) 2000-06-14 2006-01-03 Adobe Systems Incorporated Data compression system and technique
US20070041635A1 (en) 2005-08-18 2007-02-22 Dykes Don A Method and apparatus for graphical data compression
EP2373030A1 (en) 2010-03-09 2011-10-05 Arnold & Richter Cine Technik GmbH & Co. Betriebs KG Method for compressing image data
US8599214B1 (en) 2009-03-20 2013-12-03 Teradici Corporation Image compression method using dynamic color index

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818032A (en) 1997-01-03 1998-10-06 Sun; Tsu-Hung Tom Encoded color halftone micro-dots for high density digital information storage
US6091850A (en) 1997-04-30 2000-07-18 Fujitsu Microelectronics, Inc. Method of compressing and decompressing graphic images
US6983074B1 (en) 2000-06-14 2006-01-03 Adobe Systems Incorporated Data compression system and technique
US20070041635A1 (en) 2005-08-18 2007-02-22 Dykes Don A Method and apparatus for graphical data compression
US8599214B1 (en) 2009-03-20 2013-12-03 Teradici Corporation Image compression method using dynamic color index
EP2373030A1 (en) 2010-03-09 2011-10-05 Arnold & Richter Cine Technik GmbH & Co. Betriebs KG Method for compressing image data

Also Published As

Publication number Publication date
DE102014203560A1 (en) 2014-08-28

Similar Documents

Publication Publication Date Title
US9906817B2 (en) Indexed color values in image coding
DE69636150T2 (en) System for coding moving pictures, and system for variable length coding
DE102016125117B4 (en) Motion vector coding with dynamic reference motion vectors
KR100271722B1 (en) Data compression system including significance quantizer
DE60312620T2 (en) CODING AND DECODING METHOD WITH VARIABLE LENGTH
DE112010004109B4 (en) Method for decoding a bit stream
WO2010116869A1 (en) Video encoding device and video decoding device
DE112008002903T5 (en) Data sequence compression
DE112012005557B4 (en) Generating a code alphabet of symbols for generating codewords for words used with a program
EP3434015B1 (en) Data compression by means of adaptive subsampling
DE102007020292A1 (en) Method for compressing data using run-length coding, in particular for medical image data
DE102020108428A1 (en) Encoding video using two-step intra-search
EP2109993A1 (en) Device and method for encoding a block of transformation coefficients
US20190258619A1 (en) Data compression method, data compression device, computer program, and database system
DE102016200001B4 (en) Methods, systems and devices with an encoder for image processing
DE112014001649T5 (en) Synchronization method and apparatus for a radio broadband system in an interference environment
DE112008003626T5 (en) Low complexity coding in data compression systems
DE102016110417A1 (en) IMAGE PROCESSING DEVICE AND IMAGE PROCESSING METHOD
DE102016015996B3 (en) Adaptive tile data size encoding for video and image compression
DE60015755T2 (en) LOSS-FREE ADAPTIVE CODING OF DATA OF A FINAL ALPHABET
DE102016000145A1 (en) Method for improving low-cost video / image compression
DE102014203560B4 (en) INDEXED COLOR HISTORY IN IMAGE ENCODING
KR100439371B1 (en) Multimedia searching method using histogram
US7142235B2 (en) Opportunistic improvement of digital camera image quality
CN112106365A (en) Method and apparatus for adaptive context modeling in video encoding and decoding

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06K0009520000

Ipc: G06T0009000000

R012 Request for examination validly filed

Effective date: 20140704

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06K0009520000

Ipc: G06T0009000000

Effective date: 20140916

R082 Change of representative

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, DE

R081 Change of applicant/patentee

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE., SG

Free format text: FORMER OWNER: BROADCOM CORPORATION, IRVINE, CALIF., US

Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LT, SG

Free format text: FORMER OWNER: BROADCOM CORPORATION, IRVINE, CALIF., US

R082 Change of representative

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, DE

R081 Change of applicant/patentee

Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LT, SG

Free format text: FORMER OWNER: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE, SG

R082 Change of representative

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, DE

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102014020123

Country of ref document: DE

R020 Patent grant now final