DE69730754T2 - Datenkonvertierung von verschachtelt nach planar - Google Patents

Datenkonvertierung von verschachtelt nach planar Download PDF

Info

Publication number
DE69730754T2
DE69730754T2 DE69730754T DE69730754T DE69730754T2 DE 69730754 T2 DE69730754 T2 DE 69730754T2 DE 69730754 T DE69730754 T DE 69730754T DE 69730754 T DE69730754 T DE 69730754T DE 69730754 T2 DE69730754 T2 DE 69730754T2
Authority
DE
Germany
Prior art keywords
path
frame buffer
index
cycle
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69730754T
Other languages
English (en)
Other versions
DE69730754D1 (de
Inventor
G. Bernard JACKSON
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.)
Electronics for Imaging Inc
Original Assignee
Electronics for Imaging Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Electronics for Imaging Inc filed Critical Electronics for Imaging Inc
Application granted granted Critical
Publication of DE69730754D1 publication Critical patent/DE69730754D1/de
Publication of DE69730754T2 publication Critical patent/DE69730754T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • H04N1/648Transmitting or storing the primary (additive or subtractive) colour signals; Compression thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Description

  • Technisches Gebiet
  • Die Erfindung bezieht sich auf die Umwandlung von Daten aus einem Format in ein anderes Format. Insbesondere bezieht sich die Erfindung auf die Umwandlung von verschachtelten Daten in ein planares Datenformat, z. B. die Umwandlung von verschachtelten CMYK-Bilddaten in planare Bilddaten.
  • Beschreibung des Stands der Technik
  • Eine Farbtrennung wird verwendet, z. B. beim Farbdrucken, wo jede der drei Farben (d. h. Cyan, Magenta, Gelb) und Schwarz aus getrennten Druckköpfen gedruckt werden. Jeder Druckkopf empfängt Daten von einem separaten Abschnitt des Druckerspeichers, derart, dass vier Kopien eines Bildes in dem Speicher gehalten werden. Das heißt, eine separate Kopie des Bildes, das gedruckt werden soll, wird in dem Speicher für jede Farbe gehalten, wobei jede Kopie nur die Informationen enthält, die notwendig sind, um eine bestimmte Schicht des Bildes zu drucken. Diese Technik wird als CMYK- oder planares Drucken bezeichnet, da jede Farbschicht eine separate Ebene des resultierenden Bildes aufweist.
  • Eine Farbtrennung kann ebenfalls bewirkt werden, durch Erzeugen eines Wortes aus Daten für jedes Pixel in dem Bild, wobei ein solches Datenwort alle vier Schichten aus Farbinformationen für dieses Pixel enthält. Diese Technik wird als ein verschachteltes Drucken bezeichnet, da jede Farbschicht mit jeder anderen Farbschicht verschachtelt ist, um ein Wort aus zusammengesetzten Farbinformationen für jedes Pixel zu erzeugen.
  • Jeder der obigen Lösungsansätze erzeugt Daten, die einem Farbbild entsprechen, das in einem Speicher gespeichert werden kann.
  • Häufig werden Farbbilder Pixel für Pixel eingegeben, d. h. verschachtelt. Das heißt, wenn ein Bild abgetastet wird, werden alle Informationen für jedes Pixel gleichzeitig abgetastet, da die Abtasteinrichtung physisch ein Pixel zuerst sieht und dann das nächste Pixel in sequentieller Reihenfolge sieht. Somit besteht eine physische Motivation zum Verwenden des verschachtelten Formats.
  • Andererseits ist eine offensichtliche Möglichkeit zum Speichern eines Bildes für ein Mehrdurchlaufdrucken durch Trennen der unterschiedlichen Farben über vier unterschiedliche Farbebenen, z. B. Cyan, Magenta, Gelb und Schwarz. Zum Beispiel druckt ein Farblaserdrucker in mehreren Durchläufen, wobei ein Druckdurchlauf für jede Farbebene vorliegt. Somit kann der Drucker einen ersten Durchlauf in Cyan drucken. Er druckt einen nächsten Durchlauf in Magenta und dann in Gelb.
  • Somit ist ersichtlich, dass eine Abtasteinrichtung häufig Bildinformationen in einem verschachtelten Format erzeugt, während ein Vierdurchlauf-Laserdrucker solche Informationen in einem planaren Format bevorzugt.
  • Entsprechend besteht bei solchen Vorrichtungen wie Farbkopierern, die sowohl eine Farbabtasteinrichtung zum Erfassen eines Farbbildes und als auch Farbdrucker zum Aufzeichnen des Bildes auf Papier aufweisen, ein Bedarf zum effizienten und schnellen Umwandeln eines verschachtelten Formates in ein planares Format. Es ist daher wünschenswert, eine Technik bereitzustellen, um die zwei Vierfarben-Datenformate zu verarbeiten, während die Formatbedürfnisse verschiedener Eingabe- und Ausgabe-Vorrichtungen erfüllt werden, wo solche Eingabe- und Ausgabe-Vorrichtungen eine Kombination dieser zwei Formate verwenden.
  • Eine Möglichkeit zum Durchführen einer solchen Umwandlung ist das Bereitstellen von zusätzlichem Speicherungsraum, d. h. mehr Speicher, wo ein angemessener Puffer für jede Ebene verfügbar ist. Somit werden die verschachtelten Daten einfach in sequentieller Reihenfolge sortiert, z. B. in einem verschachtelten CMYK-Farbsystem, in vier separate Puffer, wobei ein Puffer für jede Farbebene vorliegt. Während dieser Lösungsansatz einfach ist, liefert ein System mit 128 MB Gesamt-RAM-Speicherungskapazität, in dem ein Bild 117 MB solcher Speicherung erfordert, nicht ausreichend Kapazität, um die vorangehende Berechnung durchzuführen. Die Kosten und der Raum, die erforderlich sind, um zusätzlichen Speicher für eine solche Berechnung hinzuzufügen, z. B. zusätzlich 117 MB eines RAM, machen die Implementierung eines solchen einfachen Schemas unerschwinglich teuer.
  • Cunningham u. a., U.S.-Patent Nr. 5,283,671, beschreibt ein System zum Bewirken einer Datenformatumwandlung von verschachtelt zu planar und umgekehrt.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Schema zu schaffen, das eine Datenformatumwandlung ermöglicht, z. B. zwischen einem verschachtelten Datenformat und einem Planaren Datenformat, ohne den Formfaktor, die Prozessorgeschwindigkeit oder die RAM-Speicheranforderungen der Zielvorrichtung bedeutend zu erhöhen, z. B. eines Farbkopierers oder eines Farblaserdruckers.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 3 und durch ein System gemäß den Ansprüchen 13 oder 14 gelöst.
  • Zusammenfassung der Erfindung
  • Die Erfindung schafft eine Technik zum Umwandeln von verschachtelten Daten in ein planares Format. Die hierin offenbarte Technik erfordert minimale Verarbeitungsleistung und nur eine geringe Menge von zusätzlichem Speicher. Die Erfindung weist einen Algorithmus auf, der „Abbildungszyklen" durch einen Rahmenpuffer folgt. Solche Abbildungszyklen resultieren aus dem Wiederholen einer Funktion, die planare Adressen auf CMYK-Adressen wie folgt abbildet:
    Es sei i = Index eines planaren Byte in dem Rahmenpuffer, dann:
    C(i) = Index des CMYK-Werts, der zu dem planaren Byte i gehört
    = 4i, für 0 <= i < N,
    = 4 (i – N) + 1, für N <= i < 2 N,
    = 4(i – 2 N) + 2, für 2 N <= i < 3 N,
    = 4(i – 3 N) + 3, für 3 N <= i < 4 N,
    wobei N = die Anzahl von Pixeln in dem Rahmenpuffer (4 N = Anzahl von Bytes).
  • Das bevorzugte Verfahren zum Planarisieren des Rahmenpuffers ist:
    • 1. Beginnen bei einem Index n, der noch nicht umgewandelt wurde. Setzen eines anderen Index i gleich dem Index n.
    • 2. Speichern des Werts bei i.
    • 3. Kopieren des Werts von C(i) zu i.
    • 4. Setzen des Index i auf den nächsten Index in dem Zyklus, der C(i) ist.
    • 5. Wenn der neue Index i nicht derselbe ist wie der Index n (aus 1.), dann gehe zu 3.
    • 6. Kopieren des gespeicherten Werts (aus 2.) zu dem letzten i (aus 5.), das nicht gleich n war.
    • 7. Der Zyklus beginnend bei n ist nun planarisiert.
    • 8. Gehe zu 1., außer die gesamte Datei ist fertiggestellt. Ein Zyklus ist beendet, wenn 4 N Kopien gemacht wurden.
  • Ein Schlüsselaspekt der Erfindung umfasst das Finden des nächsten i bei Schritt 1. Somit wird C(i) geschrieben als:
    C(i) = (4i) mod Q, wobei Q = 4 N – 1 (und die Umkehrung ist C–1 (i) = (Ni) mod Q)
  • Unter Verwendung dieser Formel kann folgendes bewiesen werden:
    • • Alle Zykluslängen teilen die Länge des 1-Zyklus gleichmäßig (und daher ist kein Zyklus länger als der 1-Zyklus);
    • • wenn ein Zyklus kürzer ist als der 1-Zyklus, dann ist der niedrigste Index ein Mehrfaches eines Faktors von Q; und
    • • wenn der 1-Zyklus den Index i umfasst, dann umfasst jeder j-Zyklus den Index (ij mod Q);
    wobei ein i-Zyklus der Zyklus ist, der den Index i enthält, und die Länge eines Zyklus gleich der Anzahl von einzelnen Indizes in dem Zyklus ist.
  • Andere berücksichtigte Faktoren umfassen:
    • • Indizes 0 und 4 N – 1 sind stationär (C (i) = i);
    • • Indizes Q/3 und 2Q/3 sind stationär, wenn 3 Q teilt;
    • • wenn {Q/(4n) <= i <= Q/((4n) – 1)}, dann Cn (i) <= i, und i ist nicht der niedrigste Index bei diesem Zyklus.
  • Da keine schnellen Möglichkeiten existieren, zu bestimmen, ob ein neuer Index i Teil eines Zyklus ist, der bereits umgewandelt wurde, muss die Formel oben im Hinblick auf Cn(i) für jedes n bewertet werden, derart, dass es nichts anderes ist als ein direktes Iterieren von C(i). Ferner variiert die Struktur dieser Zyklen chaotisch mit N. Ein Puffer der Größe Letter weist nur sechs Zyklen auf, jeder mit einer Länge von 10 Millionen. Wenn N eine reine Viererpotenz ist, weist es die kürzest möglichen Zyklen und die größte Anzahl von Zyklen auf. Werte von N nur Eins entfernt von einer Viererpotenz neigen dazu, nur wenige Zyklen zu haben. Vorteilhafterweise neigen typische Seitengrößen dazu, wenig Zyklen aufzuweisen.
  • Algorithmen gemäß dieser Erfindung umfassen drei Phasen. Die ersten zwei Phasen sind von der Ordnung N, aber die dritte Phase nimmt eine nicht vorhersehbare Zeitmenge ein. Für einen großen Wert von N kann die dritte Phase üblicherweise übersprungen werden oder dauert nicht lange, da die pathologischen N-Werte, die bedeutende Mengen der Zeit von Phase III benötigen, immer weiter ausgebreitet werden, wenn sich N erhöht.
  • Bei Phase I wird der 1-Zyklus verarbeitet und alle seine Teilindizes, die <= MAX_HIT sind, werden in dem Array firstHit[] gespeichert.
  • Bei Phase II werden alle Indizes zwischen 1 und MAX_HIT besucht, wobei alle Indizes übersprungen werden, die bereits in einem Zyklus vorlagen (wie aufgezeichnet durch das Array firstHit[]). Wenn jeder Zyklus umgewandelt ist, werden jegliche Treffer bei Indizes zwischen 1 und MAX_HIT direkt in dem Array hit[] aufgezeichnet, so dass Indizes, die verwendet wurden, schnell übersprungen werden, wenn nach zukünftigen Zyklen gesucht wird.
  • Phase III wird übersprungen, außer es sind immer noch Kopien zum Verarbeiten übrig.
  • Bei Phase III ist kein Raum mehr zum individuellen Aufzeichnen jedes Treffers übrig, so dass die oben erwähnten Regeln gelten. Wenn nach neuen Zyklen gesucht wird, werden nur Indizes, die keine Mehrfachen von etwas in dem 1-Zyklus sind, berücksichtigt. Ferner, sobald die verbleibende Anzahl von nicht zyklisch durchlaufenen Bytes unter die Länge des 1-Zyklus abfällt, gehören alle verbleibenden Zyklen bekannterweise zu Faktoren von Q und die Suche wird nur auf diese Werte eingeschränkt. Wenn ein Index i gefunden wird, der nicht aus einem dieser Gründe abgelehnt werden kann, beginnt der Algorithmus mit dem Verarbeiten des Zyklus, aber wenn der Algorithmus jemals an einem kleineren Index endet als i, dann wurde dieser i-Zyklus bereits verarbeitet. In diesem Fall wird der i-Zyklus auf seinen vorangehenden Zustand wiederhergestellt, durch Kopieren in der Rückwärtsrichtung, und der Algorithmus springt zu dem nächsten Kandidaten für i.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Flussdiagramm, das eine Drei-Phasen-Datenformat-Umwandlungstechnik gemäß der Erfindung zeigt;
  • 2 ist ein Flussdiagramm, das Phase 1 der Datenformatumwandlungstechnik gemäß der Erfindung zeigt;
  • 3 ist ein schematisches Blockdiagramm eines Systems zum Bewirken einer Datenformatumwandlung gemäß der Erfindung;
  • 4 liefert ein Beispiel, das die Umwandlung von verschachtelten Daten in ein planares Format gemäß der Erfindung darstellt; und
  • 5a bis 5i schaffen ein Beispiel, das die Umwandlung der verschachtelten Daten in ein planares Format weiter darstellt, wie in 4 gezeigt ist.
  • Detaillierte Beschreibung der Erfindung
  • Die Erfindung schafft eine Technik zum Umwandeln von verschachtelten Daten in ein planares Format, wie nachfolgend offenbart wird. Die hierin offenbarte Technik erfordert minimale Verarbeitungsleistung und nur eine kleine Menge von zusätzlichem Speicher.
  • 1 ist ein Flussdiagramm, das eine Drei-Phasen-Datenformat-Umwandlungstechnik gemäß der Erfindung zeigt. Die Erfindung weist einen Algorithmus auf, der einem ersten Abbildungszyklus durch einen Rahmenpuffer während einer ersten Phase (100) folgt, zusätzliche Abbildungszyklen findet und durch den Rahmenpuffer während einer zweiten Phase (110) abbildet, und dann alle verbleibenden Zyklen während einer dritten Phase (120) abbildet.
  • Solche Abbildungszyklen resultieren aus dem iterativen Wiederholen einer Funktion, die planare Adressen auf CMYK-Adressen wie folgt abbildet:
    Es sei i = Index eines planaren Byte in dem Rahmenpuffer, dann:
    C(i) = Index des CMYK-Werts, der zu dem planaren Byte i gehört
    = 4i, für 0 <= i < N,
    = 4(i – N) + 1, für N <= i < 2 N,
    = 4(i – 2 N) + 2, für 2 N <= i < 3 N,
    = 4(i – 3 N) + 3, für 3 N <= i < 4 N,
    wobei N = die Anzahl von Pixeln in dem Rahmenpuffer (4 N = Anzahl von Bytes).
  • 2 ist ein Flussdiagramm, das Phase 1 der Datenformat-Umwandlungstechnik gemäß der Erfindung zeigt. 2 zeigt die acht unterschiedlichen Schritte, die durchgeführt werden, um einen Datenzyklus von einem verschachtelten Format in ein planares Format umzuwandeln. Durch Verfolgen dieser acht Schritte läuft der Algorithmus durch den gesamten Datenzyklus und kehrt dann zurück zu dem ersten Pixel in dem Rahmenpuffer, mit dem der Zyklus begonnen hat. Die bevorzugte Technik zum Planarisieren des Rahmenpuffers während einem gegebenen i-Zyklus ist wie folgt:
    • 1. Beginnen bei einem Index n, der noch nicht umgewandelt wurde (200). Setzen eines anderen Index i gleich dem Index n.
    • 2. Speichern des Werts bei i (210).
    • 3. Kopieren des Werts von C(i) zu i (220).
    • 4. Setzen des Index i auf den nächsten Index in dem Zyklus, der C(i) ist (230).
    • 5. Wenn der neue Index i nicht derselbe ist wie der Index n (aus 1.), dann gehe zu 3 (240).
    • 6. Kopieren des gespeicherten Werts (aus 2.) zu dem letzten i (aus 5.), das nicht gleich n war (250).
    • 7. Der Zyklus beginnend bei n ist nun planarisiert (260).
    • 8. Gehe zu 1. (270), außer die gesamte Datei ist fertiggestellt. Ein Zyklus ist beendet, wenn 4 N Kopien gemacht wurden.
  • Ein Schlüsselaspekt der Erfindung umfasst das Finden des nächsten i bei Schritt 1. Somit wird C(i) geschrieben als:
    C(i) = (4i) mod Q, wobei Q = 4 N – 1 (und die Umkehrung ist C–1 (i) = (Ni) mod Q)
  • Unter Verwendung dieser Formel kann folgendes bewiesen werden:
    • • Alle Zykluslängen teilen die Länge des 1-Zyklus gleichmäßig (und daher ist kein Zyklus länger als der 1-Zyklus);
    • • wenn ein Zyklus kürzer ist als der 1-Zyklus, dann ist der niedrigste Index ein Mehrfaches eines Faktors von Q; und
    • • wenn der 1-Zyklus den Index i umfasst, dann umfasst jeder j-Zyklus den Index (ij mod Q);
    wobei ein i-Zyklus der Zyklus ist, der den Index i enthält, und die Länge eines Zyklus gleich der Anzahl von einzelnen Indizes in dem Zyklus ist.
  • Andere berücksichtigte Faktoren umfassen:
    • • Indizes 0 und 4 N – 1 sind stationär (C (i) = i);
    • • Indizes Q/3 und 2Q/3 sind stationär, wenn 3 Q teilt;
    • • wenn {Q/(4n) <= i <= Q/((4n) – 1)}, dann Cn(i) <= i, und i ist nicht der niedrigste Index bei diesem Zyklus.
  • Da keine schnellen Möglichkeiten existieren, zu bestimmen, ob ein neuer Index i Teil eines Zyklus ist, der bereits umgewandelt wurde, muss die Formel oben im Hinblick auf Cn(i) für jedes n bewertet werden, derart, dass es nichts anderes ist als ein direktes Iterieren von C(i). Ferner variiert die Struktur dieser Zyklen chaotisch mit N. Ein Puffer der Größe Letter weist nur sechs Zyklen auf, jeder mit einer Länge von 10 Millionen. Wenn N eine reine Viererpotenz ist, weist es die kürzest möglichen Zyklen und die größte Anzahl von Zyklen auf. Werte von N nur Eins entfernt von einer Viererpotenz neigen dazu, nur wenige Zyklen zu haben. Vorteilhafterweise neigen typische Seitengrößen dazu, wenig Zyklen aufzuweisen.
  • 3 ist ein schematisches Blockdiagramm eines Systems zum Bewirken einer Datenformatumwandlung gemäß der Erfindung. Eine Systemverarbeitung wird bewirkt durch eine CPU 10. Die CPU hat Zugriff auf den Rahmenpuffer, d. h. den Bildspeicher 12. Das System umfasst eine 1-Zyklus-Tabelle 14, eine Phase-2-Tabelle 16 und eine Q-Faktorisierungstabelle 18, die verwendet werden, um den Algorithmus zu implementieren, der hierin beschrieben ist (wie nachfolgend detaillierter erörtert wird). Die CPU verwendet ein aktuelles Adressregister 32 beim Abbilden eines Zyklus durch den Rahmenpuffer, sowie die C(i)-Funktion 34, um die Inhalte eines nächsten Adressregisters 38 zu bestimmen, und eine C–1)-Funktion 36, um die Inhalte eines vorangehenden Adressregisters 40 zu bestimmen.
  • Register werden ebenfalls bereitgestellt, um einen Wert Q = 4 N – 1 (Register 20), die Bildgröße 22, die Anzahl von stationären Bytes 24, einen Byte-Zähler 26, die 1-Zyklus-Länge 28 und einen Zykluskeim 30 zu speichern. Die Werte in verschiedenen Registern werden durch das System verwendet, um nach verschiedenen Bedingungen während der Ausführung des Algorithmus zu testen. Somit werden die Inhalte des Anzahl der stationären Bytes Registers 24 von den Inhalten des Bildgrößenregisters 22 bei einem Subtrahierer 42 abgezogen und ein resultierender Wert weist die Inhalte des Bytezählers 26 subtrahiert von demselben bei einem Subtrahierer 44 auf, um zu bestimmen, ob Null Bytes übrig sind, über den Ausgang 48, wobei in diesem Fall das Verarbeiten eines Bildes abgeschlossen ist. Die Ausgabe des Subtrahierers 44 weist die Inhalte des 1-Zyklus-Länge-Registers 28 subtrahiert von demselben bei einem Subtrahierer 48 auf, um zu bestimmen, ob die Anzahl von übrigen Bytes geringer ist als die 1-Zyklus-Länge, wobei an diesem Punkt der Algorithmus in die Q-Faktorisierungsstufe eintritt (wird nachfolgend detaillierter erörtert), wie über Ausgang 50 angezeigt wird.
  • Wie oben erörtert wurde, gibt es drei Phasen für den bevorzugten Algorithmus gemäß der Erfindung. Die ersten zwei Phasen können in einer Zeit der Größenordnung N berechnet werden, aber die dritte Phase benötigt eine unvorhersehbare Zeitmenge. Für einen großen Wert von N kann die dritte Phase üblicherweise übersprungen werden oder braucht nicht lange, da die pathologischen N-Werte, die bedeutende Zeitmengen der Phase III erfordern, immer weiter ausgebreitet werden, wenn sich N erhöht.
  • Bei Phase I wird der 1-Zyklus verarbeitet und all seine Teilindizes, die <= MAX_HIT sind, werden in dem Array firstHit[] gespeichert.
  • Bei Phase II werden alle Indizes zwischen 1 und MAX_HIT besucht, wobei alle Indizes übersprungen werden, die bereits in einem Zyklus waren. Da jeder Zyklus umgewandelt wird, werden alle Treffer bei den Indizes zwischen 1 und MAX_HIT direkt in dem Array hit[] aufgezeichnet, so dass Indizes, die verwendet wurden, schnell übersprungen werden.
  • Phase III wird übersprungen, außer es sind noch Kopien zu verarbeiten übrig.
  • Bei Phase III ist kein Raum zum individuellen Aufzeichnen jedes Treffers mehr übrig, so dass die oben erwähnten Regeln zutreffen. Wenn nach neuen Zyklen gesucht wird, werden nur Indizes berücksichtigt, die keine Mehrfachen von etwas in dem 1-Zyklus sind. Ferner, sobald die verbleibende Anzahl von nicht zyklisch durchlaufenen Bytes unter die Länge des 1-Zyklus fällt, gehören alle verbleibenden Zyklen Bekannterweise zu Faktoren von Q und die Suche wird auf ausschließlich diese Werte eingeschränkt.
  • Wenn ein Index i gefunden wird, der aus einem dieser Gründe nicht abgelehnt werden kann, beginnt der Algorithmus mit dem Verarbeiten des Zyklus, aber wenn der Algorithmus bei einem Index kleiner als i endet, dann wurde dieser i-Zyklus bereits verarbeitet. In diesem Fall wird der i-Zyklus auf seinen vorherigen Zustand wieder hergestellt, durch Kopieren in der Rückwärtsrichtung, und der Algorithmus springt zu dem nächsten Kandidaten für i.
  • Sobald die acht Schritte, die in 2 gezeigt sind, verfolgt wurden, um einen Zyklus abzuschließen, kehrt der Algorithmus zu dem ersten Schritt zurück und beginnt die Arbeit an einem nächsten Zyklus. Diese acht Schritte bestimmen jedoch nicht die Position in dem Rahmenpuffer, an der der Startpunkt für einen nächsten Zyklus vorliegt, wenn ein vorangehender Zyklus, z. B. der erste Zyklus, abgeschlossen ist. Die Erfindung hierin verwendet verschiedene Heuristiken, wie z. B. die nachfolgenden Schlüsselfakten, um die Position eines solchen Startpunktes zu bestimmen (es wird darauf hingewiesen, dass die nachfolgenden Fakten bereitgestellt werden, um das momentan bevorzugte Ausführungsbeispiel der Erfindung darzustellen, aber nicht vorgesehen sind, um die Verwendung von anderen Fakten bei unterschiedlichen Ausführungsbeispielen der Erfindung einzuschränken).
  • Die primäre Anwendung der Erfindung ist zum Umwandeln von verschachtelten Daten in planare Daten, d. h. wenn Daten in der Form von 1 2 3 4, 1 2 3 4, 1 2 3 4, ... umgewandelt werden zu 1 1 1 1 1, 2 2 2 2 2, ...
  • Ein Zyklus kann als ein Weg durch die Daten betrachtet werden. Zum Beispiel, wenn N Pixel in einem Bild sind, dann sind für eine Vierfarbentrennung 4 N Bytes vorhanden. Zu Zwecken der Erörterung hierin ist „Adresse 0" das erste Byte in einer Bilddatendatei und „Adresse 4 N – 1" ist das letzte Byte in der Bilddatendatei. Somit ist Vier eine Schlüsselzahl bei diesem Ausführungsbeispiel der Erfindung, da die CMYK-Farbe vier unterschiedliche Ebenen aufweist.
  • Ein Zyklus ist der Weg, der durch die Daten überquert wird, wenn der Algorithmus bei einer gegebenen Adresse beginnt. Die Verarbeitung beginnt bei dieser ersten Adresse in dem Rahmenpuffer, und dann wird die Adresse mit Vier multipliziert, um eine neue Adresse zu finden. Schließlich trifft der Prozess auf eine Zahl, die über dem Bereich des Systems liegt, d. h. dem Bereich von 0 bis 4 N – 1. Vorteilhafterweise gibt es keine Grenze, wie oft eine Adresse mit Vier multipliziert werden kann, da sich der Zyklus um den Rahmenpuffer von dem Ende des Puffers bis zu dem Anfang des Puffers wickelt, wenn die Grenze von 4 N – 1 überschritten wird. Das heißt, das System ist eingestellt für modulo Vier. Somit betrachtet das System eine Anzahl Q, die gleich 4 N – 1 ist, wobei Q die höchste Adresse ist, die existiert. Obwohl der Rahmenpuffer von endlicher Größe ist, findet das Zählen mal Vier Adressen, die über dem Ende des Rahmenpuffers liegen, und der Zyklus wickelt sich dann um dieselben, um an Anfang des Rahmenpuffers fortzufahren.
  • Ein Zyklus ist abgeschlossen, wenn die nächste gefundene Adresse die Adresse ist, bei der der Zyklus begonnen hat. Dies kann auftreten, nachdem sich die Adresse mehrere Male herumgewickelt hat. Alle Adressen, die während des Durch querens der Daten besucht wurden, um zu diesem Startpunkt zurückzukehren, werden als Teil des Zyklus betrachtet.
  • Wenn alle Daten nicht während eines Zyklus adressiert werden, dann ist es notwendig, eine zweite Phase durchzuführen, um jede Adresse der Daten zu durchqueren, so dass alle Daten von einem verschachtelten Format in ein planares Format umgewandelt werden.
  • Die Erfindung schafft eine Technik, die es dem Algorithmus ermöglicht, verschiedenen Heuristiken zu folgen, um einen nächsten Zyklus zu finden. Zu diesem Zweck schafft die Erfindung zumindest eine Teilliste der Adressen, die während vorangehender Zyklen besucht wurden.
  • Am Anfang eines ersten Zyklus ist es notwendig, eine Anfangsöffnung in dem Rahmenpuffer bereitzustellen, vorzugsweise an der ersten Adresse in dem Zyklus, die es dem Algorithmus ermöglicht, die Inhalte jeder besuchten Adresse zu einer vorangehenden Adresse zu bewegen. In diesem Sinn arbeitet die Erfindung auf eine ähnliche Weise zu der eines Puzzles, in dem Puzzlestücke um eine Matrix bewegt werden müssen, die einen einzelnen offenen Punkt hat.
  • In Betrieb beginnt ein Zyklus bei Adresse 1. Der Algorithmus betrachtet den Wert, der momentan in Adresse 4 ist (modulo Q), und bewegt diesen Wert zu Adresse 1. Obwohl noch nicht bestimmt wurde, wo die Inhalte von Adresse 1 hingehen müssen, ist bekannt, dass die Inhalte von Adresse 4 zu Adresse 1 gehören. Die Inhalte von Adresse 1 werden entfernt, um eine Öffnung herzustellen, in die die Inhalte von Adresse 4 platziert werden. Es ist nun ein Loch bei Adresse 4 vorhanden.
  • Der Wert von Adresse 1 ist anderswo gespeichert. Wenn die Inhalte bei Adresse 4 in Adresse 1 kopiert werden, dann gibt es zwei Kopien der Zahl, die bei Adresse 4 war. Eine derselben ist immer noch bei Adresse 4, wo es begonnen hat, und die andere ist bei Adresse 1, die ihr korrekter abschließender Zielort ist. Dementsprechend kann Adresse 4 nun als eine Öffnung betrachtet werden, da die Zahl dort nicht mehr benötigt wird. Von diesem Punkt an ist ein Zyklus eine einfache mechanische Operation, bei der immer eine Adresse vorliegt, die eine Zahl enthält, die nicht mehr benötigt wird.
  • Der Anfangspunkt, d. h. Adresse 1, wird in eine Tabelle eingegeben, die ein kleines Hardwarestück aufweisen kann, z. B. einen kleinen Abschnitt eines RAM. Wenn man sich die Öffnung vorstellt, die sich in dem Rahmenpuffer bewegt, dann wird der Zyklus ununterbrochen fortgesetzt, bis die Öffnung an der Position ankommt, an der der Zyklus begonnen hat. Wenn der Zyklus die gesamte Bilddatei abdeckt, dann ist die Umwandlung abgeschlossen.
  • Ein zweiter Teil des erfinderischen Algorithmus adressiert das Problem des Findens des Anfangs des nächsten Zyklus. Es ist notwendig, durch den Rahmenpuffer abzutasten und die erste Adresse zu finden, die während des vorangehenden Zyklus nicht verändert wurde, z. B. ein Byte in dem Bild, das noch nicht bewegt wurde.
  • Um dieses Problem zu lösen, ordnet die Erfindung einen kleinen Speicherabschnitt zu (z. B. die 1-Zyklus-Tabelle 14 aus 3), bei dem ein Flag für jedes Byte in der Nähe des Anfangs des Bildes erzeugt wird. Die Erfindung setzt das Flag jedes Mal, wenn eine Adresse in dem Speicher während eines Zyklus besucht wird. Durch Aufbauen eines Arrays aus solchen Flags in dem Speicher ist es dann möglich, durch das Array aus Flags zu gehen, um das erste Flag zu lokalisieren, das noch nicht gesetzt ist, d. h. die erste Adresse, die vor Fertigstellung des vorangehenden Zyklus nicht besucht wurde. Somit ist die erste Position, die kein gesetztes Flag hat, die Position des Anfangs für den nächsten Zyklus.
  • Ein solches Array erfordert nur ausreichend Speicher, um eine geringe Anzahl von Pixeln zu speichern, z. B. die ersten 256 Pixel bei dem bevorzugten Ausführungsbeispiel der Erfindung. Die erste Phase in dem Zyklus verwendet das Array als eine Abbildung der Adressen, die während des Zyklus besucht wurden oder nicht besucht wurden. Somit, wenn der Algorithmus durch einen Zyklus fortschreitet, liefert das Array einen Teilsatz des Zyklus, der die ersten 256 Adressen in dem Rahmenpuffer aufweist. Wenn der Zyklus abgeschlossen ist, liefert das Array ein Teilbild des Rahmenpuffers, das eine akzeptable Darstellung davon ist, was in dem Rahmenpuffer während des Zyklus geschehen ist.
  • Die Erfindung kann somit derart betrachtet werden, dass sie in Phasen fortschreitet, wobei:
    • • Phase 1 einen ersten Zyklus durchführt und ein Flag für jede Adresse setzt, die zu dem Zyklus gehört, innerhalb der ersten 256 Adressen.
    • • Phase 2 das Array der ersten 256 Adressen aufbaut, fortfährt, nach den Zyklen zu suchen, die während Phase 1 nicht besucht wurden. Sie planarisiert alle derartigen Zyklen, die an Indizes beginnen, zwischen 1 und MAX_HIT, und zeichnet alle Indizes zwischen 1 und MAX_HIT in dem Array hit[] für eine Bezugnahme während Phase 3 auf.
    • • Phase 3 fortscheitet, wenn das Array, das bei Phase 2 verwendet wurde, erschöpft ist, derart, dass das Array nicht mehr verwendet werden kann, um die Startadresse eines nächsten Zyklus zu identifizieren. Somit liefert Phase 3 alternative Verfahren zum Finden der Startadresse eines nächsten Zyklus. Es ist wichtig, darauf hinzuweisen, dass es in allen Phasen eine mathematische Gewissheit ist, dass der hierin offenbarte Algorithmus nicht zufällig einen Wert in dem Rahmenpuffer ersetzen kann, der bereits in einem vorangehenden Zyklus ersetzt wurde, da jeder Zyklus bestimmt wird durch iteratives Widerholen einer invertierbaren mathematischen Funktion. Da diese Funktion invertierbar ist, ist es nicht möglich, dass zwei unterschiedliche Zyklen gemeinsame Positionen enthalten. Wenn eine Position, die während des Verarbeitens des aktuellen Zyklus besucht wurde, zu dem Satz eines vorangehenden Zyklus gehört, dann kann eine solche Position laut Definition nicht während des aktuellen Zyklus durchquert werden. Somit gehört jede Adresse zu einem und nur einem Zyklus.
  • Die nachfolgende Erörterung betrifft die Operation der Erfindung, insbesondere im Hinblick auf Phase 3.
  • Phase 3 beginnt mit der ersten Adresse, die über der Grenze des Arrays ist. Der Algorithmus tastet von diesem Punkt ab vorwärts ab, bis eine Adresse gefunden wird, die kein Mehrfaches einer Adresse ist, die ein Teil des 1-Zyklus war, wobei der 1-Zyklus der Zyklus ist, der bei Adresse 1 beginnt.
  • Man stelle sich z. B. vor, dass der 1-Zyklus die Zahl 2 enthält. Somit liegt eine Adresse 1 vor und eine Adresse 2 liegt neben Adresse 1 vor. Bei diesem Beispiel, wenn Zyklus 1 durchgeführt wird, hat sich die Abbildung durch den Rahmenpuffer vollständig um Adresse 2 gewickelt und dieselbe getroffen. Die Abbildung wickelt sich dann wieder herum (und wieder, nach Bedarf) und kehrt schließlich zur Adresse 1 zurück. Entsprechend ist Adresse 2 ein Teil des 1-Zyklus. Bei diesem Beispiel, sobald Phase 3 beginnt, ignoriert der Algorithmus alle geradzahligen Adressen, da die Zahl 2 (d. h. Adresse 2) ein Teil des 1-Zyklus ist. Folglich zeigt der 1-Zyklus automatisch an, dass jede geradzahlige Adresse bereits Teil eines Zyklus war, zu der Zeit, zu der sie als ein Kandidat für den Anfang eines neuen Zyklus erreicht wird.
  • Somit, wenn der 1-Zyklus den Index I umfasst, dann umfasst ein beliebiger Zyklus J den Index I-J. Bei diesem Beispiel, wenn J der „5"-Zyklus ist, dann muss der 5-Zyklus den Index 10 umfassen, d. h. beginnend bei 5, wenn die Adresse oft genug mit Vier multipliziert wurde, umfasst der „5"-Zyklus schließlich 10.
  • Bei Phase 3 identifiziert die 1-Zyklus-Tabelle jene Zahlen, die nicht während des 1-Zyklus getroffen wurden. Jegliche Zahlen, die während des „1"-Zyklus getroffen wurden, und jegliche Mehrfache dieser Zahlen werden während Phase III ignoriert. Das heißt, wenn eine Zahl indexiert ist, wurde sie getroffen. Bei Phase III versucht der Algorithmus eine Zahl zu finden, die relativ primär ist, d. h. eine Zahl, die kein Mehrfaches von einer der Zahlen ist, die bereits getroffen wurden. Eine solche Zahl wird als ein Startpunkt ausgewählt, der einen neuen Zyklus beginnt. Während eines solchen Zyklus ist es möglich, dass der Algorithmus eine Adresse treffen kann, die einen niedrigeren Wert aufweist als die Adresse, bei der der Zyklus begonnen hat. Zum Beispiel, wenn der Zyklus bei 175 beginnt und, durch Multiplizieren mit Vier, sich schließlich um den Rahmenpuffer wickelt, um bei 100 zu enden, dann ist der Zyklus ein Zyklus, der bereits durchgeführt wurde, da der Zyklus von einer Position startet, die in einem vorangehenden Zyklus war. Das heißt, der Algorithmus hat eine Position getroffen, die bereits während des Verarbeitens eines vorangehenden Zyklus besucht wurde (d. h., beginnend bei der ersten verfügbaren Startposition 175 zu Position 100 führt, die bereits besucht wurde, und daher ist laut Definition die Position 175 Teil des Zyklus, der 100 umfasst).
  • Der Algorithmus stoppt dann, da der Zyklus, der die Position 175 enthält, durchgeführt wurde. Jede Datenbewegung, die während dieses Zyklus aufgetreten ist, wird dann aufgehoben, und der Algorithmus schreitet fort und sucht wieder nach einem Startpunkt für einen nächsten Zyklus.
  • Die nächste Stufe von Phase III schafft eine Optimierung an einem Punkt, wo die Anzahl von Positionen, die noch nicht besucht wurden, geringer ist als die Größe des 1-Zyklus. Dies wird bestimmt durch Betrachten des 1-Zyklus-Längenregisters 28 (3). Der Algorithmus betrachtet das Register, subtrahiert den Wert darin von dem Wert, der in dem Byte-Zähler 26 enthalten ist, und bestimmt, dass die Anzahl von übrigen Bytes geringer ist als die 1-Zyklus-Länge. Der Algorithmus tritt dann in die Q-Faktorisierungsstufe ein, die einen Vorteil aus der Tatsache zieht, dass der 1-Zyklus nicht nur der längste Zyklus ist, sondern dass ein beliebiger Zyklus, der kürzer ist als der 1-Zyklus, bei einem Mehrfachen eines Faktors der Länge des 1-Zyklus beginnen muss.
  • Wenn z. B. der 1-Zyklus von der Länge 15 ist, was bedeutet, dass 15 unterschiedliche Adressen innerhalb dieses Zyklus vorliegen, dann muss jeder andere Zyklus entweder von der Länge 15 sein oder etwas, das von 15 abweicht, so dass die einzigen Optionen 5 und 3 sind. Entsprechend sind alle Zyklen bei diesem Beispiel entweder von der Länge 15, der Länge 5 oder der Länge 3.
  • Der Algorithmus nutzt ferner die Tatsache, dass, wenn ein Zyklus kürzer ist als der 1-Zyklus, sein niedrigster Index ein Mehrfaches eines Faktors dieser Zahl Q ist, wobei Q die Zahl 4 n – 1 ist, die bei dem Beispiel hierin mit sieben Pixeln, 27 ist. So ist Q eins weniger als die Gesamtanzahl von Bytes, wie in dem Q = (Bildgröße) – 1 Register 20 enthalten ist. Somit, wenn der Algorithmus jemals bestimmt, dass weniger als der 1-Zyklus verbleibt und Q ein Wert ist, z. B. 27 bei diesem Beispiel, dann sind die einzigen möglichen verbleibenden Zyklen jene, die Faktoren von 27 sind, d. h. 3 und 9. An diesem Punkt stoppt der Algorithmus, da es nicht nur möglich ist, alle Mehrfachen von Positionen auszuschließen, die in dem 1-Zyklus vorliegen, sondern nun bekannt ist, dass die einzigen Positionen, die noch besucht werden sollen, Mehrfache von jenen sind, die sich in Q unterteilen. Dies schränkt die Suche noch mehr ein.
  • Somit umfasst das bevorzugte Ausführungsbeispiel der Erfindung eine Q-Faktorisierungstabelle 18 (siehe 3), die eine Liste aller Faktoren von Q enthält. Jedes Mal, wenn der Algorithmus eine neue Adresse während Phase III betrachtet, erfolgt eine Bestimmung, ob der Wert, der bei der Adresse gespeichert ist, ein Mehrfaches von einem der Faktoren von Q ist. Anstelle die Mehrfachen dieser Werte abzulehnen, akzeptiert der Algorithmus nur die Mehrfachen dieser Werte. Somit beseitigt Phase III sowohl Positionen als auch Mehrfache derselben, die bereits besucht wurden, und ist auf Positionen eingeschränkt, die in der Q-Faktorisierungstabelle gefunden werden.
  • 4 liefert ein Beispiel, das die Umwandlung von verschachtelten Daten in ein planares Format gemäß der Erfindung darstellt. Bei dem Beispiel sind N = 9 Pixel und eine Tabellengröße von fünf Bytes vorhanden (siehe Speicherabbildung 52). 4 zeigt eine Aufspaltung aller Zyklen und bezieht jeden Zyklus auf eine der drei Phasen des hierin beschriebenen Umwandlungsalgorithmus. Somit zeigt die Figur den 1-Zyklus während der Phase I, die 2-, 3- und 5-Zyklen während der Phase II und die 6- und 7-Zyklen während der Phase III, und die 14- und 15-Zyklen während einer Q-Faktorisierungsstufe (wird hierin nachfolgend detaillierter erörtert). In der Figur werden Zykluscodes bereitgestellt, um die Position zu identifizieren, die während der verschiedenen Zyklen besucht wird.
  • 5a5i liefern ein Beispiel, das die Umwandlung der verschachtelten Daten in ein planares Format, gezeigt in 4, weiter darstellt.
  • 5a liefert eine verschachtelte Startkonfiguration, bei der N = 9 und Q = 35. Die Pfeile in der Figur zeigen die Bytekopien, die erforderlich sind, um den 1-Zyklus zu planari- sieren. Teile des Zyklus umfassen 1, 4, 16, 29, 11 und 9, basierend auf 1 × 4 = 4, 4 × 4 = 16, 16 × 4 = 64 mod 35 = 29, 29 × 4 = 116 mod 35 = 11, und 11 × 4 = 44 mod 35 = 9.
  • Nach dem Planarisieren des 1-Zyklus, wo die Länge des 1-Zyklus L = 6 ist, ähnelt der Rahmenpuffer der Konfiguration, die in 5b gezeigt ist. Der Algorithmus macht die 1-Zyklus-Tabelle und startet die Phase-II-Tabelle, wobei die Tabellengröße 5 ist. Die 1-Zyklus-Tabelle zeigt an, dass die Adressen 1 und 4 planarisiert wurden. Die Phase-II-Tabelle wird so initialisiert, dass sie identisch zu der 1-Zyklus-Tabelle ist.
  • Phase II beginnt. Der erste nicht-planarisierte Eintrag in der 1-Zyklus-Tabelle ist Adresse 2, so dass der Algorithmus den 2-Zyklus planarisiert (siehe 5c). Der 2-Zyklus besteht aus 2, 8, 32, 23, 22 und 18 und hat ebenfalls eine Länge L = 6. Nach dem Planarisieren des 2-Zyklus zeigt die Phase-II-Tabelle an, dass die Adressen 1, 2 und 4 planarisiert wurden.
  • Die nächste nicht-planarisierte Adresse ist Adresse 3 (siehe 5d). Nach dem Planarisieren des 3-Zyklus zeigt die Phase-II-Tabelle an, dass 1, 2, 3 und 4 planarisiert wurden. Die nächste nicht-planarisierte Adresse ist 5, so dass der Algorithmus den 5-Zyklus planarisiert (5e). Der 5-Zyklus besteht aus 5, 20 und 10 und weist eine Länge L = 3 auf, die ein Faktor von 6 ist. Nach dem Planarisieren des 5-Zyklus zeigt die Phase-II-Tabelle an, dass 1, 2, 3, 4 und 5 planarisiert wurden.
  • Jetzt, wo die Phase-II-Tabelle voll ist, ist Phase II beendet. Der Algorithmus bestimmt dann, ob in Phase III eingetreten werden sollte. An diesem Punkt sind insgesamt 36 Bytes in dem Bild vorhanden. Es gibt zwei stationäre Bytes, d. h. Bytes, die nicht bewegt werden müssen. Insgesamt 21 Bytes wurden bisher bewegt. Daher liegen immer noch 13 Bytes vor (36 – 2 – 21 = 13), die bewegt werden müssen. Entsprechend muss in Phase III eingetreten werden.
  • In Phase III lokalisiert der Algorithmus die nächste Adresse, die kein Mehrfaches von einem Teil des 1-Zyklus ist. Die 1-Zyklus-Tabelle zeigt, dass 1 und 4 planarisiert wurden. Daher ignoriert Phase III alle Mehrfachen von Vier. Da die Phase-II-Tabelle bei Adresse 5 geendet hat, beginnt Phase III mit dem 6-Zyklus. Sechs ist kein Mehrfaches von Vier, so dass angenommen wird, dass der 6-Zyklus noch nicht planarisiert wurde. Entsprechend wird der 6-Zyklus planarisiert (siehe 5f).
  • Als nächstes wird der 7-Zyklus planarisiert. (siehe 5g), da Sieben nicht durch Vier teilbar ist. Nach dem 7-Zyklus sind fünf Bytes zum Bewegen übrig. Dies ist weniger als die 1-Zyklus-Länge (L = 6), so dass der Algorithmus in die Q-Faktorisierungsstufe von Phase III eintritt. Somit berücksichtigt der Algorithmus nur Adressen, die Mehrfache von Q-Faktoren sind. Bei diesem Beispiel sind die Q-Faktoren 5 und 7, da Q = 35 = 5 × 7. Der 7-Zyklus wurde bereits durchgeführt, so dass der nächste Zyklus, der berücksichtigt werden muss, der 10-Zyklus ist, da Zehn ein Mehrfaches von Fünf ist, was ein Faktor von Q ist.
  • Die 10-Zyklus-Planarisierung wird begonnen. Da jedoch 10 × 4 = 40 mod 35 = 5 und 10 > 5, ist der 10-Zyklus derselbe wie der 5-Zyklus. Somit muss der 10-Zyklus wiederhergestellt und übersprungen werden. Der 14-Zyklus wird als nächstes versucht, da 14 ein Mehrfaches von Sieben ist (siehe 5h). Dann wird der 15-Zyklus planarisiert, da 15 ein Mehrfaches von Fünf ist (siehe 5i). Die abschließenden drei Bytes des Bildes werden während des 15-Zyklus bewegt. Dementsprechend wurden 34 Bytes bewegt und es liegen keine Bytes mehr zum Bewegen vor, da 36 Bytes in dem Bild sind, wobei zwei derselben stationär sind und 34 derselben bewegt wurden. Daher ist die Planarisierung abgeschlossen.
  • Wie oben erörtert wurde, wird dieser Algorithmus einfach invertiert, um planare Bilder in verschachteltes Format umzuwandeln. Für diese Erörterung wird die Verschachtelt-zu-Planar-Form als der „Vorwärts-Algorithmus" bezeichnet und die Planar-zu-Verschachtelt-Form wird als der „Rückwärts-Algorithmus" bezeichnet. Dann ist der Rückwärts-Algorithmus annähernd identisch zu dem Vorwärts-Algorithmus. Die einzige notwendige Änderung ist das Austauschen aller Auftretungserscheinungen der Funktionen C(i) und C–1(i), die verwendet werden, um die „nächsten" und „vorangehenden" Adressen zu finden, die innerhalb eines Zyklus auftreten. Anders ausgedrückt, immer wenn der Vorwärts-Algorithmus die C(i)-Funktion aufruft, ruft der Rückwärts-Algorithmus C–1 (i) auf, und immer wenn der Vorwärts-Algorithmus die C–1(i)-Funktion aufruft, ruft der Rückwärts-Algorithmus C(i) auf. Konzeptionell bedeutet dies, dass die einzige Differenz zwischen den zwei Algorithmen die Richtung ist, in der sie jeden Abbildungszyklus durchqueren. Alle anderen Details, einschließlich dem Fortschreiten von Phase 1 bis Phase 3 und einschließlich der Beibehaltung von Tabellen, die aufzeichnen, welche Adressen in den vorangehenden Zyklen aufgetreten sind, sind zwischen dem Vorwärts- und Rückwärts-Algorithmus identisch.
  • Aus praktischen Gründen sollte die Software, die die Rückwärtsfunktion C–1(i) implementiert, nicht die Modulo-Form (C–1(i) = Ni mod Q) verwenden, da die Zahl N, die für die Anzahl von Pixeln in dem Bild steht, extrem groß ist. Statt dessen sollte eine Softwareimplementierung der Rückwärtsfunktion die einfacher berechnete Form verwenden: C–1(i) = j*N + (i – j)/4,bei der j = (i mod 4).
  • Dieser Ausdruck kann so effizient implementiert werden wie und vielleicht noch effizienter als der Originalausdruck C(i). Der Grund dafür ist, dass die Operationen Modulo-4 und Teilen-durch-4 beide einfache binäre Berechnungen sind, die an praktisch allen Mikroprozessoren oder anderen binären Rechenvorrichtungen atomar sind.
  • Um den Rückwärts-Algorithmus darzustellen, wird Bezug auf das Beispiel in 4 genommen. Wenn dieses Beispiel durch den Rückwärts-Algorithmus verarbeitet werden würde, dann wäre die Struktur und der Aufbau aller acht Zyklen immer noch identisch, und das Verfahren zum Finden all dieser Zyklen wäre identisch, aber die Bytes jedes Zyklus würden in der Rückwärtsrichtung kopiert werden. Wie in der Figur dargestellt ist, entspricht dies nur dem Umkehren der Richtungen der Pfeile, die für jeden Zyklus gezeigt sind. Zum Beispiel würde der 1-Zyklus von dem planaren zu dem verschachtelten Modus umgewandelt werden, durch Speichern des Werts bei Adresse 1 und dann Durchführen der nachfolgenden Sequenz von Kopien: kopiere Adresse 9 zu Adresse 1, 11 zu 9, 29 zu 11, 16 zu 29, 4 zu 16 und dann den vorangehend gespeicherten Wert von Adresse 1 zu Adresse 4.
  • Obwohl die Erfindung hierin Bezug nehmend auf das bevorzugte Ausführungsbeispiel beschrieben wurde, wird ein Fachmann auf dem Gebiet ohne weiteres erkennen, dass andere Anwendungen für die hierin Ausgeführten eingesetzt werden können, ohne von dem Schutzbereich der vorliegenden Erfindung abzuweichen. Dementsprechend sollte die Erfindung nur durch die Ansprüche eingeschränkt sein, die nachfolgend umfasst sind.

Claims (27)

  1. Ein Verfahren zum Umwandeln von Farbbilddaten in einem Rahmenpuffer aus einem verschachtelten Datenformat, in dem die Farbkomponenten jedes Pixels aufeinanderfolgend gespeichert sind, in ein planares Format, in dem die gleichen Farbkomponenten aller Pixel gemeinsam gespeichert sind, wobei das Verfahren folgende Schritte aufweist: Einrichten einer vorbestimmten Anzahl von Adressen nahe dem Anfang des Rahmenpuffers; Abbilden verschachtelter Daten auf planare Daten entlang eines ersten Pfads durch den Rahmenpuffer während einer ersten Phase, wobei der erste Pfad bei einer ersten Adresse beginnt, und Setzen eines Flags, das jeder besuchten Adresse in dem Rahmenpuffer zugeordnet ist, die sich innerhalb der vorbestimmten Anzahl von Adressen befindet; Abbilden verschachtelter Daten auf planare Daten entlang zusätzlicher Pfade durch den Rahmenpuffer während einer zweiten Phase, wobei jeder zusätzliche Pfad bei einer Adresse beginnt, die während der ersten Phase nicht abgebildet wurde, und Setzen eines Flags, das jeder besuchten Adresse in dem Rahmenpuffer zugeordnet ist, die innerhalb der vorbestimmten Anzahl von Adressen enthalten ist; und wenn jedes Flag, das der vorbestimmten Anzahl von Adressen zugeordnet ist, gesetzt wurde, Abbilden aller verbleibender verschachtelter Daten auf planare Daten entlang weiterer zusätzlicher Pfade durch den Rahmenpuffer während einer dritten Phase, wobei jeder weite re zusätzliche Pfad bei einer Adresse beginnt, die während eines vorherigen Pfades nicht abgebildet wurde, wobei jeder Pfad durch ein iteratives Wiederholen einer Funktion C (i) = 4i mod Q bestimmt wird, wobei i = Index eines planaren Bytes in dem Rahmenpuffer, N = die Anzahl von Pixeln in dem Rahmenpuffer, 4 N = die Anzahl von Bytes in dem Rahmenpuffer und Q = 4 N – 1.
  2. Das Verfahren gemäß Anspruch 1, bei dem das Abbilden folgende Schritte aufweist: (1) Beginnen bei einem Index n, der noch nicht umgewandelt wurde, und Setzen eines weiteren Index i gleich dem Index n; (2) Speichern des Werts bei i; (3) Kopieren des Werts von C(i) zu i; (4) Setzen des Index i auf den nächsten Index in dem Pfad, der C(i) ist; (5) wenn ein neuer Index i nicht der gleiche wie der Index n aus (1) ist, Gehen zu (3); und (6) Kopieren des gespeicherten Werts aus (2) zu dem jüngsten i Wert aus (5), der nicht gleich n war.
  3. Ein Verfahren zum Umwandeln von Farbbilddaten in einem Rahmenpuffer aus einem planaren Format, in dem die gleichen Farbkomponenten aller Pixel gemeinsam gespeichert sind, in ein verschachteltes Datenformat, in dem die Farbkomponenten jedes Pixels aufeinanderfolgend gespeichert sind, wobei das Verfahren folgende Schritte aufweist: Einrichten einer vorbestimmten Anzahl von Adressen an einem Anfang des Rahmenpuffers; Abbilden planarer Daten auf verschachtelte Daten entlang eines ersten Pfads durch den Rahmenpuffer während einer ersten Phase, wobei der erste Pfad bei einer ersten Adresse beginnt, und Setzen eines Flags, das jeder besuchten Adresse in dem Rahmenpuffer zugeordnet ist, die innerhalb der vorbestimmten Anzahl von Adressen ist; Abbilden planarer Daten auf verschachtelte Daten entlang zusätzlicher Pfade durch den Rahmenpuffer während einer zweiten Phase, wobei jeder zusätzliche Pfad bei einer Adresse beginnt, die während der ersten Phase nicht abgebildet wurde, und Setzen eines Flags, das jeder besuchten Adresse in dem Rahmenpuffer zugeordnet ist, die innerhalb der vorbestimmten Anzahl von Adressen enthalten ist; und wenn jedes Flag, das der vorbestimmten Anzahl von Adressen zugeordnet ist, gesetzt wurde, Abbilden aller verbleibender planarer Daten auf verschachtelte Daten entlang weiterer zusätzlicher Pfade durch den Rahmenpuffer während einer dritten Phase, wobei jeder weitere zusätzliche Pfad bei einer Adresse beginnt, die während eines vorherigen Pfades nicht abgebildet wurde, wobei jeder Pfad durch ein iteratives Wiederholen einer Funktion C–1(i) = j*N + (i – j)/4 bestimmt wird, wobei i = Index eines verschachtelten Bytes in dem Rahmenpuffer, N = die Anzahl von Pixeln in dem Rahmenpuffer, 4 N = die Anzahl von Bytes in dem Rahmenpuffer und j = i mod 4.
  4. Das Verfahren gemäß Anspruch 3, bei dem das Abbilden folgende Schritte aufweist: (1) Beginnen bei einem Index n, der noch nicht umgewandelt wurde, und Setzen eines weiteren Index i gleich dem Index n; (2) Speichern des Werts bei i; (3) Kopieren des Werts von C(i) zu i; (4) Setzen des Index i auf den nächsten Index in dem Pfad, der C (i) ist; (5) wenn ein neues i nicht das gleiche wie das ursprüngliche n aus (1) ist, Gehen zu (3); und (6) Kopieren des gespeicherten Werts aus (2) zu dem jüngsten Wert i aus (5), der nicht gleich n war.
  5. Das Verfahren gemäß Anspruch 2 oder 4, bei dem die zweite Phase ferner ein Finden eines nächsten i im Schritt (1) aufweist.
  6. Das Verfahren gemäß Anspruch 1 oder 3, bei dem alle Pfadlängen eine erste Pfadlänge gleichmäßig teilen, und bei dem kein Pfad länger als der erste Pfad ist, wobei ein i-Pfad ein Pfad ist, der einen Index i enthält, und die Länge eines Pfads gleich der Anzahl unterschiedlicher Indizes in dem Pfad ist.
  7. Das Verfahren gemäß Anspruch 1 oder 3, bei dem der niedrigste Index eines Pfads ein Faktor von Q ist, wenn ein Pfad kürzer als der erste Pfad ist, wobei ein i-Pfad ein Pfad ist, der einen Index i enthält, und die Länge eines Pfads gleich der Anzahl unterschiedlicher Indizes in dem Pfad ist.
  8. Das Verfahren gemäß Anspruch 1 oder 3, bei dem jeder j-Pfad einen Index (ij mod Q) umfaßt, wenn der erste Pfad einen Index i umfaßt, wobei ein i-Pfad ein Pfad ist, der einen Index i enthält, und die Länge eines Pfads gleich der Anzahl unterschiedlicher Indizes in dem Pfad ist.
  9. Das Verfahren gemäß Anspruch 1 oder 3, das ferner folgende Schritte aufweist: Verarbeiten des ersten Pfads und Speichern aller seiner Mitglieds-Indizes, die kleiner oder gleich MAX_HIT sind, in einem Array firstHit[]; Besuchen aller Indizes zwischen 1 und MAX_HIT während eines i-Pfads; Überspringen aller Indizes, die bereits in einem Pfad waren; und wenn jeder Pfad umgewandelt wird, direktes Aufzeichnen aller Treffer für Indizes zwischen 1 und MAX_HIT in einem Array hit[], so daß Indizes, die bereits verwendet wurden, schnell übersprungen werden.
  10. Das Verfahren gemäß Anspruch 9, bei dem nur Indizes, die keine Vielfache von etwas in dem ersten Pfad sind, berücksichtigt werden, wenn nach neuen Pfaden gesucht wird.
  11. Das Verfahren gemäß Anspruch 9, bei dem von allen verbleibenden Pfaden bekannt ist, daß sie zu Vielfachen von Faktoren von Q gehören, und die Suche auf nur diese Werte eingeengt wird, sobald eine verbleibende Anzahl unverarbeiteter Bytes unter die Länge des ersten Pfads fällt.
  12. Das Verfahren gemäß Anspruch 9, das ferner folgende Schritte aufweist: Verarbeiten eines i-Pfads, wenn es keine Basis zum Zurückweisen eines Index i gibt; wobei ein i-Pfad bereits verarbeitet wurde, wenn ein Index kleiner als i während einer Abbildung des i-Pfads resultiert; Überspeichern des i-Pfads in einen vorherigen Zustand durch ein Kopieren in einer Rückwärtsrichtung; und Überspringen zu einem nächsten Kandidaten für i.
  13. Ein System zum Umwandeln von Farbbilddaten in einem Rahmenpuffer aus einem verschachtelten Datenformat, in dem die Farbkomponenten jedes Pixels aufeinanderfolgend gespeichert sind, in ein planares Format, in dem die gleichen Farbkomponenten aller Pixel gemeinsam gespeichert sind, wobei das System folgende Merkmale aufweist: eine CPU, die ein Gegenwärtige-Adresse-Register zum Abbilden planarer Daten auf verschachtelte Daten entlang einer Mehrzahl von Pfaden durch den Rahmenpuffer, ein Nächste-Adresse-Register und ein Vorherige-Adresse-Register aufweist, wobei der Inhalt des Nächste-Adresse-Registers durch ein iteratives Wiederholen einer Funktion C(i) = 4i mod Q bestimmt wird und der Inhalt des Vorherige-Adresse-Registers durch ein iteratives Wiederholen einer Funktion C–1(k) = j*N + (k – j)/4 bestimmt wird, wobei i = Index eines planaren Bytes in dem Rahmenpuffer, k = Index eines verschachtelten Bytes in dem Rahmenpuffer, N = die Anzahl von Pixeln in dem Rahmenpuffer, 4 N = die Anzahl von Bytes in dem Rahmenpuffer, Q = 4 N – 1 und j = k mod 4; eine erste Tabelle zum Speichern von Daten, die Rahmenpufferadressen anzeigen, die während eines ersten Pfads durch den Rahmenpuffer besucht wurden; und eine zweite Tabelle zum Speichern von Daten, die Adressen anzeigen, die während nachfolgender Pfade durch den Rahmenpuffer besucht wurden.
  14. Ein System zum Umwandeln von Farbbilddaten in einem Rahmenpuffer aus einem planaren Format, in dem die gleichen Farbkomponenten aller Pixel gemeinsam gespeichert sind, in ein verschachteltes Datenformat, in dem die Farbkomponenten jedes Pixels aufeinanderfolgend gespeichert sind, wobei das System folgende Merkmale aufweist: eine CPU, die ein Gegenwärtige-Adresse-Register zum Abbilden planarer Daten auf verschachtelte Daten entlang einer Mehrzahl von Pfaden durch den Rahmenpuffer, ein Nächste-Adresse-Register und ein Vorherige-Adresse-Register aufweist, wobei der Inhalt des Nächste-Adresse-Registers durch ein iteratives Wiederholen einer Funktion C(i) = 4i mod Q bestimmt wird und der Inhalt des Vorherige-Adresse-Registers durch ein iteratives Wiederholen einer Funktion C–1(k) = j*N + (k – j)/4 bestimmt wird, wobei i = Index eines planaren Bytes in dem Rahmenpuffer, k = Index eines verschachtelten Bytes in dem Rahmenpuffer, N = die Anzahl von Pixeln in dem Rahmenpuffer, 4 N = die Anzahl von Bytes in dem Rahmenpuffer, Q = 4 N – 1 und j = k mod 4; eine erste Tabelle zum Speichern von Daten, die Rahmenpufferadressen anzeigen, die während eines ersten Pfads durch den Rahmenpuffer besucht wurden; und eine zweite Tabelle zum Speichern von Daten, die Adressen anzeigen, die während nachfolgender Pfade durch den Rahmenpuffer besucht wurden.
  15. Das System gemäß Anspruch 13 oder 14, bei dem die CPU ferner ein Register zum Speichern eines Werts Q aufweist.
  16. Das System gemäß Anspruch 13 oder 14, bei dem die CPU ferner folgende Merkmale aufweist: ein Register zum Speichern einer Größe der Farbbilddaten; ein Register zum Speichern einer Anzahl stationärer Bytes; einen Byte-Zähler; und ein Register zum Speichern einer Länge des ersten Pfads.
  17. Das System gemäß Anspruch 16, das ferner folgende Merkmale aufweist: einen ersten Subtrahierer zum Subtrahieren der Anzahl stationärer Registerbytes von dem Inhalt des Bildgrößenregisters und zum Erzeugen einer Ausgabe daraus; und einen zweiten Subtrahierer, bei dem von der Ausgabe des ersten Subtrahierers der Inhalt des Byte-Zählers subtrahiert wird, um zu bestimmen, ob 0 Bytes übrig sind, wobei in diesem Fall die Verarbeitung des Bilds abgeschlossen ist.
  18. Das System gemäß Anspruch 16, das ferner folgende Merkmale aufweist: einen ersten Subtrahierer zum Subtrahieren des Inhalts der Anzahl stationärer Registerbytes von dem Inhalt des Bildgrößenregisters und zum Erzeugen einer Ausgabe daraus; einen zweiten Subtrahierer, bei dem von der Ausgabe des ersten Subtrahierers der Inhalt des Byte-Zählers subtrahiert wird; einen dritten Subtrahierer zum Subtrahieren des Inhalts des Längenregisters des ersten Pfads von der Ausgabe des zweiten Subtrahierers, um zu bestimmen, ob die Anzahl übriger Bytes kleiner als die Länge des ersten Pfads ist, wobei in diesem Fall in eine Q-Faktorisierungsstufe eingetreten wird.
  19. Das System gemäß Anspruch 18, das ferner eine Q-Faktorisierungstabelle zum Speichern von Q-Faktoren aufweist.
  20. Das System gemäß Anspruch 13 oder 14, bei dem die CPU: Rahmenpufferadressen in dem ersten Pfad, die kleiner oder gleich MAX_HIT sind, in einem Array Hit[] speichert; alle Rahmenpufferadressen zwischen 1 und MAX_HIT während der nachfolgenden Pfade besucht, wobei die CPU alle Rahmenpufferadressen überspringt, die in vorherigen Pfaden bereits besucht wurden; und alle Besuche von Rahmenpufferadressen zwischen 1 und MAX_HIT in einem Array firstHit[] aufzeichnet.
  21. Das System gemäß Anspruch 20, bei dem: das Array firstHit[] die ersten 256 Rahmenpufferadressen enthält, die durch die CPU besucht wurden; und die CPU fortfährt, nach einer nächsten Rahmenpufferadresse zu suchen, die während eines vorherigen Pfads nicht besucht wurde, und einen nächsten Pfad durchführt, der bei der nächsten Rahmenpufferadresse beginnt, bis der Anfangsort des nächsten Pfads erneut besucht wird.
  22. Das System gemäß Anspruch 20, bei dem die CPU in eine nächste Operationsphase eintritt, wenn das firstHit[]-Array erschöpft ist, derart, daß das Array nicht mehr verwendet werden kann, um eine Anfangs-Rahmenpufferadresse eines nächsten Pfads zu identifizieren.
  23. Das System gemäß Anspruch 22, bei dem: der nächste Pfad bei einer ersten Rahmenpufferadresse beginnt, die jenseits der Grenze des firstHit[]-Arrays liegt; und die CPU von diesem Punkt nach vorne abtastet, bis eine Rahmenpufferadresse gefunden wird, die kein Vielfaches einer Rahmenpufferadresse ist, die ein Teil des ersten Pfads gewesen ist.
  24. Das System gemäß Anspruch 22, das ferner folgende Merkmale aufweist: einen Byte-Zähler; und ein Erster-Pfad-Längenregister, wobei die CPU den Wert in dem Erster-Pfad-Längenregister von dem Wert subtrahiert, der in dem Byte-Zähler enthalten ist, um zu bestimmen, ob die Anzahl von Rahmenpufferadressen, die noch nicht besucht wurden, kleiner als die Größe des ersten Pfads ist.
  25. Das System gemäß Anspruch 24, das ferner eine Q-Faktorisierungstabelle aufweist, die eine Liste aller Faktoren von Q enthält, wobei die CPU basierend darauf in eine Q-Faktorisierungsstufe eintritt, daß ein Pfad, der kürzer als der erste Pfad ist, ein Faktor der Länge des ersten Pfads ist.
  26. Das System gemäß Anspruch 25, bei dem die CPU bestimmt, ob der Wert, der bei einer Rahmenpufferadresse gespeichert ist, ein Vielfaches eines der Faktoren von Q ist, jedesmal, wenn die CPU eine neue Rahmenpufferadresse ansieht, wobei die CPU nur die Vielfachen dieser Werte akzeptiert.
  27. Das System gemäß Anspruch 25, bei dem die CPU sowohl Rahmenpufferadressen als auch Vielfache derselben, die bereits besucht wurden, beseitigt und auf Rahmenpufferadressen eingeschränkt ist, die in der Q-Faktorisierungstabelle zu finden sind.
DE69730754T 1996-12-31 1997-12-19 Datenkonvertierung von verschachtelt nach planar Expired - Fee Related DE69730754T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US775791 1985-09-13
US08/775,791 US5867179A (en) 1996-12-31 1996-12-31 Interleaved-to-planar data conversion
PCT/US1997/024152 WO1998032090A2 (en) 1996-12-31 1997-12-19 Interleaved-to-planar data conversion

Publications (2)

Publication Number Publication Date
DE69730754D1 DE69730754D1 (de) 2004-10-21
DE69730754T2 true DE69730754T2 (de) 2005-09-29

Family

ID=25105515

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69730754T Expired - Fee Related DE69730754T2 (de) 1996-12-31 1997-12-19 Datenkonvertierung von verschachtelt nach planar

Country Status (11)

Country Link
US (2) US5867179A (de)
EP (1) EP1025541B1 (de)
JP (1) JP2002516049A (de)
AT (1) ATE276556T1 (de)
AU (1) AU723974B2 (de)
BR (1) BR9714446A (de)
CA (1) CA2276325A1 (de)
DE (1) DE69730754T2 (de)
IL (1) IL130617A0 (de)
NZ (1) NZ336478A (de)
WO (1) WO1998032090A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010037303A1 (de) * 2010-09-03 2012-03-08 OCé PRINTING SYSTEMS GMBH Verfahren und Vorrichtung zum Sortieren von Pixeldaten in einem Druckdatenstrom

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8395630B2 (en) 2007-01-02 2013-03-12 Samsung Electronics Co., Ltd. Format conversion apparatus from band interleave format to band separate format
US20090015850A1 (en) * 2007-07-13 2009-01-15 Kenneth Edward Smith Rapid loading of interleaved RGB data into SSE registers
US20100318542A1 (en) * 2009-06-15 2010-12-16 Motorola, Inc. Method and apparatus for classifying content
CA2958626C (en) 2009-08-18 2021-03-30 Airway Limited Endoscope simulator
DE102011003724A1 (de) 2010-04-30 2011-11-03 Energybus E. V. Modulares Fahrzeugsystem, Elektrofahrzeug und Modul zur Verbindung mit einem Elektrofahrzeug
US10445962B2 (en) 2011-02-07 2019-10-15 Energybus E.V. Modular vehicle system, electric vehicle, and module for connection to an electric vehicle

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0334777A (ja) * 1989-06-30 1991-02-14 Nippon Denki Inf Technol Kk 画像信号符号化装置、画像信号復号化装置および画像信号表示装置
US5432906A (en) * 1990-09-28 1995-07-11 Eastman Kodak Company Color image processing system for preparing a composite image transformation module for performing a plurality of selected image transformations
US5283671A (en) * 1991-02-20 1994-02-01 Stewart John R Method and apparatus for converting RGB digital data to optimized CMYK digital data
US5168552A (en) * 1991-10-29 1992-12-01 Hewlett-Packard Company Color separation in ink jet color graphics printing
US5475800A (en) * 1991-10-29 1995-12-12 Hewlett-Packard Company Color separation in color graphics printing with limited memory
US5671440A (en) * 1994-08-08 1997-09-23 Eastman Kodak Company Color image data reorientation and format conversion system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010037303A1 (de) * 2010-09-03 2012-03-08 OCé PRINTING SYSTEMS GMBH Verfahren und Vorrichtung zum Sortieren von Pixeldaten in einem Druckdatenstrom
DE102010037303B4 (de) * 2010-09-03 2012-03-29 OCé PRINTING SYSTEMS GMBH Verfahren und Vorrichtung zum Sortieren von Pixeldaten in einem Druckdatenstrom
US8467097B2 (en) 2010-09-03 2013-06-18 OCé PRINTING SYSTEMS GMBH Method and device to sort pixel data in a print data stream

Also Published As

Publication number Publication date
WO1998032090A3 (en) 1998-10-08
CA2276325A1 (en) 1998-07-23
AU5904998A (en) 1998-08-07
NZ336478A (en) 2000-10-27
EP1025541A4 (de) 2002-10-24
ATE276556T1 (de) 2004-10-15
BR9714446A (pt) 2000-06-06
US5867179A (en) 1999-02-02
AU723974B2 (en) 2000-09-07
JP2002516049A (ja) 2002-05-28
EP1025541A2 (de) 2000-08-09
EP1025541B1 (de) 2004-09-15
US6341017B1 (en) 2002-01-22
IL130617A0 (en) 2000-06-01
DE69730754D1 (de) 2004-10-21
WO1998032090A2 (en) 1998-07-23

Similar Documents

Publication Publication Date Title
DE4133460C2 (de) Verfahren zum Verdichten von Bildern
DE69831133T2 (de) Konfiguriation einer Datenverarbeitungspipeline
DE69925805T2 (de) Skalierbare lösung für das wiederauffinden von bildern
DE19708265B4 (de) Verfahren zum Durchsuchen einer Dokument-Bilddatenbank und Dokumentbild-Durchstöberungssystem sowie Verfahren zum Extrahieren eines Merkmalsvektors aus einem elektronisch gespeicherten Bild
DE69829019T2 (de) Konfigurierbare Datenverarbeitungspipeline
DE602004009591T2 (de) Differenz-codierung durch verwendung eines 3d-graphikprozessors
DE69631457T2 (de) Vorrichtung und verfahren zum übertragbaren indexieren von dokumenten gemäss einer n-gram-wortzerlegung
DE3750860T2 (de) Verfahren und Vorrichtung zur Verarbeitung von Farbbildern.
DE69836432T2 (de) Bildcoder und -decoder
DE69814988T2 (de) Datenzusammenfügevorrichtung
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE3804938A1 (de) Bildverarbeitungseinrichtung
DE2905328A1 (de) Verfahren und vorrichtung zur assoziativen informationswiedergewinnung
DE3436282A1 (de) Bildspeichereinrichtung
DE69730754T2 (de) Datenkonvertierung von verschachtelt nach planar
DE69220190T2 (de) Rasterpufferspeicher mit aufgeteiltem Pegel
DE69629417T2 (de) System zur Bilddetektion
DE69822634T2 (de) Verfahren und system zum verändern des bildformats
DE3486075T2 (de) Bildverkleinerungsverfahren.
DE3826158A1 (de) Dateidaten-wiedergewinnungssystem
DE69731706T2 (de) Suchverfahren für Muster in Bildern einer Datenbank
DE69126353T2 (de) Bildlesevorrichtung mit ladungsgekoppelten linearen Sensoren
DE60001585T2 (de) Datenverarbeitungseinrichtung und -verfahren
DE3688737T2 (de) Kontextadressierbarer umlaufspeicher.
DE19958242A1 (de) Bildverarbeitungsapparat

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee