DE69915725T2 - Datenkompression unter Verwendung von Primzahlexponenten - Google Patents

Datenkompression unter Verwendung von Primzahlexponenten Download PDF

Info

Publication number
DE69915725T2
DE69915725T2 DE69915725T DE69915725T DE69915725T2 DE 69915725 T2 DE69915725 T2 DE 69915725T2 DE 69915725 T DE69915725 T DE 69915725T DE 69915725 T DE69915725 T DE 69915725T DE 69915725 T2 DE69915725 T2 DE 69915725T2
Authority
DE
Germany
Prior art keywords
data
compression
compressed
parameter
prime
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69915725T
Other languages
English (en)
Other versions
DE69915725D1 (de
Inventor
Ronald Fink
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.)
NCR International Inc
Original Assignee
NCR International 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 NCR International Inc filed Critical NCR International Inc
Application granted granted Critical
Publication of DE69915725D1 publication Critical patent/DE69915725D1/de
Publication of DE69915725T2 publication Critical patent/DE69915725T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

  • Die vorliegende Erfindung betrifft Daten-Komprimierungs- und Dekomprimierungs-Techniken und spezieller ein Verfahren zur Komprimierung und/oder Dekomprimierung von Daten unter Verwendung einer Primzahlreihe.
  • Für die Übertragung und die Speicherung von Daten wird eine erhöhte Bandbreite benötigt. Die vermehrte Verwendung von Daten in Echtzeit erfordert jedoch maximale Transferraten mit minimalen Datenverlusten, die durch Verarbeitungsfehler bedingt sind. Diese Forderung führt vermehrt zu Anwendungen, die eine Datenkomprimierung verwenden.
  • Obwohl viele Fortschritte bei der Verarbeitungsgeschwindigkeit und bei den Datenkomprimierungstechniken gemacht wurden, haben die Verbesserungen bei der Verarbeitungsgeschwindigkeit die Verbesserungen in Verbindung mit der Datenkomprimierung weit abgehängt. Zusätzlich hat die begrenzte zur Datenübertragung in modernen Kommunikationssystemen zur Verfügung stehende Bandbreite ein kontinuierlich wachsendes Interesse an effektiven Datenkomprimierungstechniken geschaffen.
  • Zur Zeit gibt es zwei grundsätzliche Kategorien der Datenkomprimierung, nämlich verlustfreie und verlustbehaftete. Verlustfreie Datenkomprimierungstechniken sind konzipiert, um Datenredundanz ohne irgendeinen Datenverlust zu beseitigen. Im Gegensatz dazu entfernen verlustbehaftete Komprimierungstechniken sowohl redundante Daten als auch als unwesentlich eingestufte Daten anhand von speziell für die Datenanwendung vorbestimmten Kriterien.
  • Obwohl verlustlose Komprimierungstechniken zunehmend effizienter wurden, ist der mögliche Umfang der verlustfreien Komprimierung bei vielen Anwendungen limitiert. Bei Bildkomprimierung wird typischerweise eine maximale Komprimierungsrate von 2 : 1 oder weniger realisiert. Verlustbehaftete Datenkomprimierungstechniken ermöglichen wesentlich größere Komprimierungsraten bei Anwendungen, die eine Echtzeit-Serienwiedergabe von analogen Signalen (wie Sprache oder Musik) und von Datenfeldern, die zwei-dimensionale Bilder wiedergeben (Standbild oder Video), verwenden, wobei ein Teil der Daten vernichtet werden kann ohne bemerkbare Fehler bei der Rekonstruktion. Weitergehende Komprimierungserfolge können durch Variieren der Toleranzgrenze in Bezug auf in der Rekonstruktionsphase bemerkbare Fehler erreicht werden, abhängig von der einzelnen Anwendung.
  • Ein gemeinsames Merkmal von verlustfreien und verlustbehafteten Komprimierungstechniken ist die durch die verfügbare Bandbreite gesetzte Begrenzung. Bei den meisten Anwendungen, bei denen die Daten vor dem Übertragen komprimiert werden, ist die Übertragungszeit, die im allgemeinen eine Funktion der Bandbreite ist, der entscheidende Faktor. Sobald die Daten empfangen sind, ist die Dekomprimierung typischerweise eine einfache Aufgabe aufgrund der hohen Geschwindigkeit der gängigen Prozessoreinheiten, welche die Inverse der Datenkomprimierungsroutine ausführen. Konsequenterweise wird viel Zeit auf das Übertragen und Empfangen von Daten über begrenzte Bandbreiten verwendet. Deshalb wäre ein System zum Komprimieren und Dekomprimieren von Daten wünschenswert, das minimale Bandbreite verwendet unter Maximierung der Verwendung von Prozessorgeschwindigkeit.
  • US-A-4,588,985 offenbart eine Polynomzerlegungstechnik, die eine relativ kleine Anzahl an Zerlegefunktionen benötigt, um Daten einer bestimmten Domäne A einem bestimmten Bereich B zuzuordnen, wobei die Wahrscheinlichkeit, dass zwei verschiedene Datenpunkte in A demselben Punkt in B zugeordnet werden, minimiert wird. Das zu zerlegende Element x wird in Teilketten x1 ... xn zerlegt, jede k oder weniger Bits lang, wobei k die größte ganzzahlige Zahl ist, die kleiner oder gleich log2(b) ist, und b die Größe des Bereichs B ist und eine Primzahl sein kann oder nicht.
  • Demgemäss ist es ein grundlegendes Ziel der Erfindung, die in den beigefügten Ansprüchen dargelegt ist, ein Verfahren zur Datenkomprimierung bereitzustellen, das die benötigte Bandbreite minimiert, während es umfassend die modernen Verarbeitungsressourcen verwendet.
  • Es ist ein anderes Ziel der Erfindung, ein Verfahren zur Datenkomprimierung bereitzustellen, das die Bandbreite minimiert, während es die Verwendung von Prozessorgeschwindigkeit maximiert.
  • Es ist ein weiteres Ziel der Erfindung, eine Vorrichtung zur Übertragung von komprimierten Daten bereitzustellen.
  • Es ist noch ein weiteres Ziel der Erfindung, ein Verfahren zur Übertragung von komprimierten Daten in Echtzeit bereitzustellen.
  • Gemäß einem Ziel der Erfindung umfasst ein computerimplementiertes Verfahren zur Komprimierung von digitalen Daten für eine Übertragung und/oder für eine Speicherung folgende Schritte:
    Auswahl mindestens eines Komprimierungsparameters einschließlich eines Primzahlparameters entsprechend einer vorbestimm ten Anzahl von Primzahlfaktoren, die beim Codieren jedes Datenwertes während der Komprimierung und Dekomprimierung der Daten in einen komprimierten Datenblock basierend auf mindestens einem Komprimierungsparameter zu verwenden sind. Die Komprimierung des Datenstroms verwendet Primzahlreihen und deren Exponenten, um verlustfreie Datenkomprimierung mit einer hohen Komprimierungsrate zu bieten.
  • Gemäß einem bevorzugten Merkmal der Erfindung wird ein Header erzeugt, der die Komprimierungsparameter enthält, der Header wird an einen Komprimierungspuffer übertragen und der Datenstrom wird an den Komprimierungspuffer übertragen. Gemäß einem weiteren bevorzugten Merkmal wird der Header an den komprimierten Datenblock angefügt.
  • Der resultierende komprimierte Datenblock und der Header enthalten Initialisierungsparameter, die zur Rekonstruktion des Datenstroms ausreichend sind. Demzufolge wird die zur Datenübertragung benötigte Bandbreite minimiert, während die Rechenanforderungen erhöht werden.
  • Falls die zu komprimierenden Daten nicht in dem Komprimierungspuffer gespeichert werden können, umfasst ein weiteres bevorzugtes Merkmal eine Segmentierung des Datenstroms vor dem Schritt des Übertragens in einen oder mehrere Datenblöcke gemäß den Komprimierungsparametern und ein Zusammensetzen des einen oder der mehreren komprimierten Datenblöcke nachfolgend auf den Komprimierungsschritt in einen komprimierten Datenstrom.
  • Gemäß einem anderen Ziel der Erfindung umfasst ein Verfahren zur Dekomprimierung komprimierter digitaler Daten die Schritte: Abfragen mindestens eines Komprimierungsparameters aus einem mit den komprimierten Daten verknüpften Header ein schließlich eines Primzahlparameters, der sich auf eine vorbestimmte Anzahl an Primzahlfaktoren bezieht, die beim Codieren von Daten während der Komprimierung der Daten und der Dekomprimierung der Daten in einen dekomprimierten Datenblock entsprechend mindestens einem Komprimierungsparameter zu verwenden sind. Entsprechend einem bevorzugten Merkmal umfasst das Verfahren weiterhin ein Übertragen des komprimierten Datenblocks in einen Auswertepuffer. Das Abfragen von während der Datenkomprimierungsphase generierter Komprimierungsparameter erlaubt eine verlustfreie Rekonstruktion der Originaldaten ohne große Anforderungen an die Bandbreite während der Übertragung. Falls die Daten in der Form eines komprimierten Datenstroms sind, der vor der Komprimierung segmentiert wurde, kann das Verfahren weiterhin eine Segmentierung der komprimierten Daten in einen oder mehrere komprimierte Datenblöcke gemäß den von dem Header angefragten Komprimierungsparametern umfassen und ein Zusammensetzen eines oder mehrerer komprimierter, aus dem Schritt der Dekomprimierung resultierender Datenblöcke in einen Datenstrom.
  • Gemäß einem anderen Ziel der Erfindung wird eine Vorrichtung zur Übertragung komprimierter Daten bereitgestellt, die umfasst:
    einen Codierer zum Empfang eines zu übertragenden Datenstroms, wobei der Codierer konfiguriert ist zum:
    Konstruieren eines Headers, der einen Komprimierungsparameter umfasst einschließlich eines Primzahlparameters, der einer vorbestimmten Anzahl von Primfaktoren entspricht, die beim Codieren jedes Datenwerts während einer Komprimierung zu verwenden sind, eines Limitparameters, der einem vorbestimmten Exponentenwert entspricht und einem Größenparameter, der dem größten Satz von Bytes entspricht, die während eines Zyklus zu komprimieren sind,
    Segmentieren des Datenstroms in einen oder mehrere Datenblöcke vorbestimmter hänge gemäß dem Größenparameter nach Feststellung, dass die Größe des Datenstroms den Größenparameter übersteigt,
    Komprimieren des einen oder der mehreren Datenblöcke gemäß den Komprimierungsparametern, um einen oder mehrere komprimierte Datenblöcke zu bilden,
    Generieren eines Exponentialparameters für jeden der einen oder der mehreren komprimierten Datenblöcke,
    Zusammensetzen des einen oder der mehreren komprimierten Datenblöcke in einen komprimierten Datenstrom;
    eine Datenübertragungseinrichtung zum Übertragen des Headers und des komprimierten Datenstroms;
    eine Datenempfangseinrichtung zum Empfang des Headers und des komprimierten Datenstroms von der Datenübertragungseinrichtung; und
    einen Decoder zum Auslesen des Headers und des komprimierten Datenstroms aus der Empfangseinrichtung, wobei der Decoder konfiguriert ist zum:
    Auslesen der Kompressionsparameter aus dem Header,
    Segmentieren des komprimierten Datenstroms in einen oder mehrere komprimierte Datenblöcke gemäß den empfangenen Komprimierungsparametern,
    Dekomprimieren des einen oder der mehreren komprimierten Datenblöcke, um einen oder mehrere dekomprimierte Datenblöcke zu erhalten, und
    Wiederzusammensetzen des einen oder der mehreren dekomprimierten Datenblöcke in den vom Codierer empfangenen Datenstrom.
  • Die vorliegende Erfindung umfasst auch eine Kommunikationsvorrichtung, die im beiliegenden Anspruch 14 dargelegt ist.
  • Die vorliegende Kommunikationsvorrichtung stellt eine verlässliche verlustfreie Datenkomprimierung bereit, minimiert die Bandbreite und nützt den Vorteil der gängigen Verarbeitungseinheiten aus. Die Vorrichtung kann bei einer Vielzahl von Kommunikationsnetzwerken eingesetzt werden einschließlich leitungsvermittelnden Netzen, Paketvermittlungsnetzen, drahtgebundenen Netzen und drahtlosen Netzen. Weiterhin kann die Vorrichtung in Echtzeit unter Verwendung von Halbleiterbauelementen verwendet werden, um die Komprimierungs- und Dekomprimierungsalgorithmen zu implementieren.
  • Für ein umfassenderes Verständnis der vorliegenden Erfindung und ihrer Vorteile wird nun auf die folgende Beschreibung Bezug genommen in Verbindung mit den beiliegenden Zeichnungen, in denen gleiche Nummern gleiche Teile bezeichnen und von denen:
  • 1 ein Blockdiagramm ist, das ein Computersystem zeigt, das zur Implementierung der vorliegenden Erfindung verwendet werden kann.
  • 2A bis 2E Flussdiagramme sind, die den detaillierten Computerprozess zum Komprimieren von Daten gemäß der vorliegenden Erfindung zeigen.
  • 3A bis 3B Flussdiagramme sind, die den detaillierten Computerprozess zum Dekomprimieren von Daten gemäß der vorliegenden Erfindung zeigen.
  • 4 ein Blockdiagramm ist, das die Ergebnisse der verschiedenen Schritte während der Komprimierung und Dekomprimierung von Daten gemäß der vorliegenden Erfindung zeigt.
  • 5 ein Blockdiagramm ist, das eine Vorrichtung zum Übertragen von komprimierten Daten gemäß der vorliegenden Erfindung zeigt.
  • Die vorliegende Erfindung wird nun mit einem veranschaulichendem Beispiel der Komprimierung und Dekomprimierung eines Datenstroms beschrieben. Zuerst wird eine Beschreibung einer allgemeinen Computer-Hardware angegeben, die fähig ist, die Erfindung zu implementieren, gefolgt von der allgemeinen Prozedur zum Komprimieren und Dekomprimieren von Daten. Es wird jedoch offensichtlich werden, dass die vorliegende Erfindung auch bei verschiedenen Datenübertragungs- und Kommunikationsvorrichtungen anwendbar ist.
  • COMPUTER-HARDWARE-ÜBERSICHT
  • In 1 ist ein Computersystem 10 gezeigt, auf dem eine Ausführungsform der vorliegenden Erfindung implementiert werden kann. Das Computersystem 10 weist einen Bus oder andere Kommunikationsmittel zur Informationskommunikation auf. Das Computersystem 10 umfasst weiterhin einen Arbeitsspeicher (RAM) oder eine andere dynamische Speichereinrichtung 16 (als Hauptspeicher bezeichnet), der mit dem Bus 12 zum Abspeichern von Information und von auf einem Prozessor 14 auszuführenden Befehlen verbunden ist. Der Hauptspeicher 16 kann auch zum Abspeichern temporärer Variablen oder anderer Zwischenergebnis-Informationen während des Ausführens der Befehle durch den Prozessor 14 verwendet werden. Das Computersystem 10 umfasst auch einen Festspeicher (ROM) und/oder ein anderes statisches Speichergerät 18, das an den Bus 12 zum Speichern von statischen Informationen und Befehlen für den Prozessor 14 verbunden ist. An den Bus 12 ist eine Datenspeichereinrichtung 20 zum Speichern von Informationen und Befehlen angeschlossen.
  • An das Computersystem 10 kann eine Datenspeichereinrichtung wie eine Magnetplatte oder eine optische Platte und ihr dazugehöriges Laufwerk angeschlossen sein. Das Computersystem 10 kann auch über den Bus 12 an eine Anzeigeeinrichtung 22 angeschlossen sein, wie eine Bildröhre (cathode ray tube, CRT), zur Anzeige von Informationen für einen Computerbenutzer. Eine alphanumerisches Eingabeeinrichtung 24 einschließlich alphanumerischer und anderer Tasten ist typischerweise an den Bus 12 zur Übertragung von Information und von Kommandoselektionen für den Prozessor 14 angeschlossen. Ein anderer Typ einer Eingabeeinrichtung ist eine Cursor-Kontrolle 26, wie eine Maus, ein Trackball oder Cursor-Richtungstasten zum Übertragen von Richtungsinformationen und von Kommandoselektionen an den Prozessor 14 und zum Kontrollieren der Cursor-Bewegung auf der Anzeige 22. Das Eingabegerät weist typischerweise zwei Freiheitsgrade in zwei Achsen auf, einer ersten Achse (beispielsweise x) und einer zweiten Achse (beispielsweise y), die es dem Gerät erlauben, Positionen in einer Ebene zu bestimmen.
  • Alternativ können andere Eingabegeräte wie ein Schreiber oder ein Stift verwendet werden, um mit der Anzeige 22 zu interagieren. Ein Anzeigeobjekt auf einem Computer-Bildschirm kann durch Verwendung eines Schreibers oder eines Stifts, der das angezeigte Objekt berührt, ausgewählt werden. Der Computer erfasst die Auswahl durch die Implementierung eines berührungsempfindlichen Bildschirms. Ebenso kann zum Auswählen eines angezeigten Objekts ein Lichtstift und ein lichtempfindlicher Bildschirm verwendet werden. Solche Geräte können daher die Positionsauswahl und die Auswahl als eine einzige Tätigkeit vornehmen anstelle des "Zeigens und Klickens" bei einem System, das eine Maus oder einen Trackball verwendet. Schreiber- und Stift-basierte Eingabegeräte wie auch berührungs- und lichtempfindliche Bildschirme sind bekannt aus dem Stand der Technik. Ein solches System kann auch eine Tastatur wie die alphanumerische Eingabeeinrichtung 24 entbehren, wobei jede Interaktion über den Schreiber als Schreibinstrument (wie ein Stift) bereitgestellt wird und der geschriebene Text unter Verwendung von optischen Zeichenerkennungs-(OCR-)Techniken ausgewertet wird.
  • Die vorliegende Erfindung bezieht sich auf die Verwendung des Computersystems 10 zum Komprimieren und De komprimieren von Daten. Gemäß einer Ausführungsform werden die Komprimierung und die Dekomprimierung von Daten durch das Computersystem 10 als Antwort auf den Prozessor 14 ausgeführt, der in dem Speicher 16 enthaltene Sequenzen von Befehlen ausführt. Das Ausführen von in dem Speicher 16 enthaltenen Sequenzen von Befehlen veranlasst den Prozessor 14 dazu, verschiedene Berechnungen und Veränderungen von Daten auszuführen, wie später hier beschrieben wird. Bei alternativen Ausführungsformen können Halbleiterbaugruppen oder Mikrochips anstelle von oder in Kombination mit den Software-Befehlen verwendet werden, um die vorliegende Erfindung zu implementieren. Daher ist die vorliegende Erfindung nicht auf irgendeine spezifische Kombination von Hardware-Schaltung und Software beschränkt.
  • DATENKOMPRIMIERUNG
  • In den 2A bis 2E ist ein Verfahren zum Komprimieren von Daten gemäß der vorliegenden Erfindung gezeigt. Im Schritt S10 beginnt die Initialisierung des Systems durch Auswahl der Maximalanzahl von Primzahlen (Schlüsselparameter), die in dem Komprimierungsalgorithmus zu verwenden sind. Im Schritt S12 wird der maximale Wert für die Exponenten der Primzahlen (Exponentenparameter) ausgewählt. Die Größe des größten Satzes an Bytes, die in einem bestimmten Zyklus komprimiert werden, wird im Schritt S14 ausgewählt. Die verschiedenen Initialisierungsparameter (oder Komprimierungsparameter) können eine Eingabe des Benutzers sein oder können basierend auf vorbestimmten Bedingungen automatisch ausgewählt sein.
  • Nachdem die Initialisierungsparameter ausgewählt wurden, wird ein Header im Schritt S16 erzeugt. Daher umfasst der Header vorteilhafterweise drei Parameter, die dazu verwendet werden, die Daten zu komprimieren und richtig zu dekomprimieren. Der für die Initialisierungs-(Komprimierungs-)Parameter ausgewählte Wert kann von System zu System variieren, abhängig von der zur Verfügung stehenden Verarbeitungsgeschwindigkeit. Im Schritt S18 wird der erstellte Header übertragen. Abhängig von dem Typ des Kommunikationsnetzes, das verwendet wird, kann eine Antwort vor dem Fortfahren mit der Datenkomprimierungssequenz erwünscht sein. Alternativ kann der Header mit den komprimierten Daten später zusammengesetzt werden und übertragen werden.
  • Im Schritt S20 bestätigt der Empfänger den Empfang des Headers. Der Komprimierungszyklus ist jetzt initialisiert. Im Schritt S22, der in der 2B gezeigt ist, wird eine Zeichenfolge erstellt, die die Primzahlen umfasst, die in dem Komprimierungsalgorithmus verwendet werden. Gemäß der Erfin dung hat die Primzahlzeichenfolge eine Länge von 5, falls der Primzahlparameter 5 ausgewählt ist und die Werte der Elemente, welche die Zeichenfolge enthält, sind [2, 3, 5, 7, 11].
  • Im Schritt S24 werden die Initialisierungs-(Komprimierungs-)Parameter in den Speicher des Computers oder des Systems, das zum Komprimieren des Datenstroms verwendet wird, geladen und der Wert eines Zählers (I) wird zu 0 gesetzt. Abhängig von der Größe des zu komprimierenden Datenstroms kann es notwendig sein, den Datenstrom entsprechend dem Größenparameter in mehrere Datenblöcke zu segmentieren. Dies stellt sicher, dass die Größe der Daten nicht die Limits eines Komprimierungspuffers überschreitet, der dazu verwendet wird, die Daten während des Komprimierungsprozesses zu speichern. Im Schritt S26 wird der Datenstrom in einem Empfangspuffer empfangen. Der Datenstrom oder alternativ der erste segmentierte Datenblock wird in den Komprimierungspuffer übertragen. Nachdem der Komprimierungspuffer gefüllt ist, beginnt der Datenkomprimierungszyklus. Im Schritt S28 in 2C werden die Daten in dem Komprimierungspuffer durch die erste Primzahl geteilt. Die erste Primzahl entspricht dem ersten Element in der Primzahlzeichenfolge.
  • Im Schritt S30 wird das Ergebnis des Divisionsprozesses berechnet. Falls der Rest gleich 0 ist, wird die Exponentenzahl der für die Division verwendeten Primzahl um 1 erhöht. Falls der Rest nicht gleich 0 ist, wird der Zähler um 1 im Schritt S34 erhöht. Im Schritt S36 wird der Wert des Zählers geprüft. Falls der Wert des Zählers gleich der ausgewählten Maximalanzahl an Primzahlen (Schlüsselparameter) ist, wird ein Fehlerwert um 1 erhöht und der Wert des Zählers wird reinitialisiert. Der Wert der Daten im Komprimierungspuffer wird mit einem Anpassungsalgorithmus angepasst. Der Anpassungsalgorithmus wird vor der Initialisierung festgelegt. Er kann eine Vielfalt an Tätigkeiten umfassen. Für Diagramme wird ein einfaches Dekrement verwendet. Das Programm kehrt zum Schritt S28 zurück, wo der Inhalt des Komprimierungspuffers wiederum durch das erste Element der Primzahlzeichenkette geteilt wird, d. h. durch die erste Primzahl. Falls der Zähler nicht gleich dem für die Maximalanzahl an Primzahlen (Schlüsselparameter) ausgewählten Wert ist, kehrt das Programm zum Schritt S28 zurück, wo die Inhalte des Komprimierungspuffers durch das nächste nachfolgende Element der Primzahlzeichenfolge dividiert werden, d. h. durch die nächste Primzahl.
  • Im Schritt S40 wird der Quotient des Divisionsprozesses ausgewertet. Ist der Quotient kleiner als der Wert der größten Primzahl, fährt das Programm mit dem Schritt S46 fort. Falls der Quotient größer ist als der Wert der größten Primzahl, wird der Wert des Zählers ausgewertet. Falls der Wert des Zählers gleich dem für den Primzahlparameter gewählten Wert minus 1 ist, wird der Fehlerwert erhöht und der Zähler wird zu 0 gesetzt. Das Programm wendet den Anpassungsalgorithmus auch auf den Komprimierungspuffer an. Das Programm kehrt zum Schritt S28 zurück und wiederholt die Divisionssequenz. Falls der Zähler nicht gleich der Maximalanzahl an Primzahlen (Primzahlparameter) ist, führt das Programm die Divisionssequenz ohne Erhöhen des Fehlerwertes fort. Der Wert des Komprimierungspuffers wird durch den Quotienten des Divisionsprozesses jedes Mal ersetzt, wenn der Rest gleich 0 ist.
  • Im Schritt S46, 2D, wird der Wert des Komprimierungspuffers ausgewertet. Falls der Wert gleich 1 ist, springt das Programm zum Schritt S64. Falls der Wert des Komprimierungspuffers nicht gleich 1 ist, wird er mit den Elementen der Primzahlzeichenkette im Schritt S48 verglichen. Demnach wird der Wert des Komprimierungspuffers mit jeder in dem Komprimierungsalgorithmus verwendeten Primzahl verglichen. Falls der Wert des Komprimierungspuffers gleich einer der Primzahlen ist, wird eine 1 zu der Exponentenzahl der Primzahl im Schritt S50 addiert. Das Programm wird dann zum Schritt S64 weitergeleitet. Falls der Wert des Komprimierungspuffers nicht gleich einem der Primzahlen ist, wird der Zähler im Schritt S52 zu 0 gesetzt.
  • Der Wert des Komprimierungspuffers wird durch die erste Primzahl im Schritt S54 dividiert. Im Schritt S56 wird das Ergebnis der Division ausgewertet. Falls der Rest 0 ist, wird im Schritt S58 eine 1 zu der Exponentenzahl der für die Division verwendeten Primzahl addiert. Das Programm kehrt zum Schritt S54 zurück, wo der Inhalt des Komprimierungspuffers wiederum durch dieselbe Primzahl dividiert wird. Falls der Rest 0 ist, wird der Inhalt des Komprimierungspuffers im Schritt S60 ausgewertet. Falls der Inhalt des Komprimierungspuffers gleich 1 ist, springt das Programm zum Schritt S64. Falls der Inhalt des Komprimierungspuffers nicht gleich 1 ist, wird der Zähler um 1 erhöht und das Programm springt im Schritt S62 zum Schritt S54 zurück. Der Divisionsprozess wird erneut wiederholt.
  • Der Prozess dauert fort bis der Wert des Komprimierungspuffers gleich 1 ist und es dem Programm erlaubt ist, mit dem Schritt S64, 2E, fortzufahren. Der Körper des Datenblocks wird im Schritt S64 in einen komprimierten Datenstrom zusammengesetzt und an den Empfänger im Schritt S66 übertragen, um den Komprimierungsprozess zu vervollständigen. Der komprimierte Datenstrom ist in der Form einer Zeichenkette, welche die Exponentenwerte für jede der Primzahlen und die Fehlerwerte umfasst, die während des Komprimierungszyklus bestimmt wurden. Wie zuvor beschrieben, kann der komprimierte Datenstrom auch den Header einschließen. Falls gewünscht, kann eine Bestätigung von dem Empfänger erhalten werden, um den Empfang des komprimierten Datenstroms zu bestätigen.
  • DATENDEKOMPRIMIERUNG
  • In den 3A und 3B ist ein Verfahren zur Dekomprimierung von Daten gemäß der vorliegenden Erfindung gezeigt. Im Schritt S70 wird ein Komprimierungsparameter umfassender Header von einer Empfangsstation empfangen. Im Schritt S72 kann eine Bestätigung für den Header an die Übertragungsstation zurück übertragen werden. Im Schritt S74 wird die Body-Länge des Datenstroms basierend auf den aus dem Header ausgelesenen Komprimierungsparametern berechnet. Der Empfänger erwartet nun die Übertragung der Datenblöcke im Schritt S76.
  • Der im Schritt S76 übertragene Datenblock wird in einen Konstruktionspuffer eingetragen, bis er in seinem Gesamtumfang empfangen ist. Im Schritt S78, 3B, werden die Inhalte der Datenblöcke in einen Auswertepuffer zur Dekomprimierung übertragen. Im Schritt S80 werden die Daten dekomprimiert, indem zuerst jede Primzahl mit der in der Komprimierungsphase bestimmten Exponentenzahl potenziert wird. Die Ergebniszahlen der Potenzrechnung werden dann miteinander multipliziert und in dem Konstruktionspuffer gespeichert. Im Schritt S82 wird der Wert des Fehlerparameters zu dem Inhalt des Konstruktionspuffers addiert. Grundsätzlich wird der Anpassungsalgorithmus so oft invertiert angewendet, wie durch den Fehlerparameter bestimmt. Falls der Anpassungsalgorithmus ein "Dekrement" ist, kann der Fehlerparameter einfach addiert werden. An diesem Punkt ist der originale Datenstrom rekonstruiert worden.
  • Beispielsweise soll angenommen werden, dass die Primzahlen, die aus dem Header ausgelesen wurden [2, 3, 5] sind, die generierten Exponentenzahlen sind [3, 5, 2] und der Fehlerpara meter ist 3. Die dekomprimierten Daten wären (23)*(35)*(52) + 3, oder 48603. Im Schritt S84 können die Daten in binärer Form an den Computer oder ein geeignetes System zur Auswertung übertragen werden. Falls weitere zu dekomprimierende Blöcke vorhanden sind, springt das Programm zum Schritt S76 zurück und wiederholt den Dekomprimierungsprozess.
  • ERLÄUTERNDES BEISPIEL
  • 4 zeigt die Ergebnisse verschiedener Schritte während der Komprimierung eines Datenstroms gemäß der vorliegenden Erfindung. Die zu übertragenden Daten werden zuerst im Schritt S100 ausgelesen. Die Daten entsprechen einer binären oder einer Text-Datei, die in einem System gespeichert ist, digital gesampelten Signalen, etc. In diesem Schritt werden die Daten als ein großer Strom binärer Zahlen behandelt. Die Daten werden im Schritt S110 in ihren gleichwertigen Dezimalwert konvertiert, so dass sie komprimiert werden können. Davon werden die Anzahl der in dem Algorithmus zu verwendenden Primzahlen (Schlüsselbeispiel) und der maximale Exponent (Exponentenparameter) für jede Primzahl im Schritt S112 ausgewählt. Gemäß dem Beispiel wird ein Byte reserviert, um den Wert des Fehlerparameters zu speichern. Dies kann bei realen Anwendungen unzureichend sein und die Länge des Fehlerfeldes in der Definition des Headers ist auf alle Fälle ein angenommener Wert. Die Initialisierungsparameter entsprechen den Werten, die typischerweise in dem an die Empfangsstation übermittelten Header codiert werden. Außerdem wird angenommen, dass der numerische Wert der zu übertragenden Daten innerhalb der Grenzen des Komprimierungspuffers liegt, daher ist eine Segmentierung nicht nötig.
  • Das Programm fährt im Schritt S114 mit dem Komprimierungsalgorithmus fort und dividiert die Daten durch alle Primzahlen. Der erste Zyklus ergibt im Schritt S116 eine 1 für die Expo nentenzahl der ersten Primzahl. Der Wert im Komprimierungspuffer enthaltenen Daten kann nicht ohne Rest durch die verbleibenden Primzahlen geteilt werden. Deshalb wird eine Fehlersituation ausgelöst. Im Schritt S118 wird der Wert der Daten des Komprimierungspuffers um 1 erniedrigt und der Fehlerparameter wird um 1 erhöht. Im Schritt S120 wird der Komprimierungsalgorithmus wieder angewendet und die Daten werden durch alle Primzahlen geteilt.
  • Die Ergebnisse des zweiten Zyklus sind im Schritt S122 dargestellt. Für die erste Primzahl wurde kein Exponentialwert generiert. Die zweite Primzahl generiert einen Exponenten von 4, die dritte Primzahl generiert den Exponenten 5; die vierte Primzahl generiert den Exponenten 4; die fünfte und die sechste Primzahl generieren beide den Exponenten 3; die siebte und die achte Primzahl generieren beide den Exponenten 4; und die neunte Primzahl generiert den Exponenten 5. Die Werte für die Exponenten liegen alle unterhalb des Wertes, der als maximaler Exponent in der Initialisierungsphase ausgewählt wurde. Resultierend aus dem Komprimierungszyklus sind die zu übertragenden komprimierten Daten in der Form einer 1, was der Anzahl der während des Komprimierungszyklus gezählten Fehler entspricht, und neun Zahlen entsprechend den Exponentenwerten für jede der in dem Komprimierungszyklus verwendeten Primzahlen.
  • Diese Daten werden im Schritt S124 in eine binäre Form gebracht, wobei die ersten acht Bits dem Fehlerwert entsprechen und der nachfolgende Satz von neun 3-Bit-Werten den Exponenten entspricht, die für jede Primzahl erhalten wurden. Die zu übertragenden komprimierten Daten weisen eine Länge von 35 Bit auf, wie im Block R gezeigt. Der originale Datenstrom entspricht einem 103-Bit-Binär-Strom. Ein Vergleich der zwei binären Datenströme ergibt ein 2,94-zu-1-Komprimierungs verhältnis. Die Dekomprimierung der Daten durch die Empfangsstation wird unter Verwendung des folgenden mathematischen Ausdrucks erreicht:
    (20)*(34)*(55)*(74)*(113)*(133)*(174)*(194)*(235) + 1.
  • KOMMUNIKATIONSVORRICHTUNG
  • In 5 ist eine Vorrichtung zur Übermittlung komprimierter Daten gezeigt. Die Vorrichtung umfasst eine erste Station 30 und eine zweite Station 40. Jede Station 30, 40 umfasst einen Codierer, eine Datenübertragungseinrichtung, eine Datenempfangseinrichtung und einen Decoder. Der Codierer und der Decoder können Standard-Hardware oder Übertragungseinrichtungen für Datenübertragung und -empfang wie ein Sender/Empfänger sein, oder sie können ein digitaler Computer sein, der eine Folge von Programmbefehlen ausführt, die einen Prozessor dazu veranlassen, die notwendigen Übertragungs- und Empfangsfunktionen auszuführen.
  • Der Codierer ist konfiguriert, um einen Header zu erstellen, der die für den Komprimierungszyklus zu verwendenden Komprimierungsparameter aufweist. Deshalb umfasst der Header einen Schlüsselparameter entsprechend der Anzahl der in der Komprimierungsroutine verwendeten Primzahlen, einen Limitparameter entsprechend dem größten Wert der Exponenten, einen Größenparameter entsprechend dem größten Satz an Bytes, die in einem einzelnen Zyklus zu komprimieren sind, und einen Fehlerparameter entsprechend der Anzahl, wie oft die Komprimierungsroutine versagt. Der Codierer ist auch konfiguriert, um den Datenstrom, falls nötig, in einen oder mehrere Datenblöcke entsprechend des Wertes des Größenparameters zu segmentieren.
  • Der Codierer weist einen Komprimierungspuffer auf, um den Wert der Daten zu speichern. Der Komprimierungspuffer kann ein Schreib/Lese-Speicher (RAM), ein magnetisches Speicherme dium, etc. sein. Der Codierer komprimiert die Datenblöcke durch aufeinanderfolgendes Dividieren des Wertes des Komprimierungspuffers durch die Primzahlen und generiert danach einen Exponentenparameter, der mit jeder der Primzahlen verknüpft ist. Falls mehrere Datenblöcke verwendet werden, setzt der Codierer die Datenblöcke auch wieder zusammen, um einen einzelnen komprimierten Datenstrom zu erzeugen. Zusätzlich erledigt der Codierer eine geeignete Übertragung der Daten von der binären in die dezimale Form und umgekehrt. Der Datenstrom wird dann durch die Übertragungseinrichtung an die Empfangseinrichtung über eine Kommunikationsverbindung übertragen. Das Datenübertragungsgerät kann ein Sender 32, eine Mikrowellenantenne 34, ein Modem (nicht gezeigt), das an die Computervorrichtung angeschlossen ist, um mit einer konventionellen Telefonleitung 36 betrieben zu werden, eine Satellitenübertragung 38, etc. sein. Demgemäss kann die Datenübertragung drahtlos, optisch, drahtgebunden, etc. sein.
  • Nachdem die Daten von der Empfangseinrichtung der zweiten Station 40 empfangen wurden, ruft der Decoder den Header und den komprimierten Datenstrom ab. Die Komprimierungsparameter des Headers werden decodiert und der Dekomprimierungszyklus beginnt. Der Decoder segmentiert den komprimierten Datenstrom in einen oder mehrere komprimierte Datenblöcke basierend auf den Informationen, die er aus dem Größenparameter erhalten hat. Der Decoder umfasst einen Konstruktionspuffer und einen Auswertepuffer, die verwendet werden, um die Daten zu dekomprimieren. Wie der Komprimierungspuffer können der Konstruktionspuffer und der Auswertepuffer in der Form eines RAMs, eines magnetischen Datenträgers, etc. sein.
  • Jeder komprimierte Datenblock wird in den Auswertepuffer verschoben und dekomprimiert, indem jede Primzahl mit dem Exponentenwert potenziert wird, der während des Komprimierungs zyklus erhalten wurde und indem das Produkt gebildet wird. Das Ergebnis dieses Prozesses ist eine Mehrzahl von dekomprimierten Datenblöcken. Der Decoder setzt dann die dekomprimierten Datenblöcke in den originalen Datenstrom ohne irgendwelche Verluste zusammen.
  • Die in 5 gezeigte Vorrichtung ist zum Betrieb mit verschiedenen Kommunikationsnetzen einschließlich paketvermittelten und leitungsvermittelten Netzen geeignet. Außerdem kann die Vorrichtung in Echtzeit für interaktive Datenübertragung und Kommunikation verwendet werden. In einer solchen Konfiguration werden wieder eine erste und eine zweite Station verwendet. Jede Station umfasst einen Codierer, eine Datenübertragungseinrichtung, eine Datenempfangseinrichtung und einen Decoder. Die erste Station erstellt einen ersten Header, der zur zweiten Station übertragen wird. Der Decoder der zweiten Station fragt die Komprimierungsparameter von dem ersten Header ab und sendet eine Bestätigung an die erste Station. Die Bestätigung kann auch einen zweiten Header umfassen, der von der zweiten Station erstellte Komprimierungsparameter enthält, falls bidirektionale Kommunikation gewünscht ist. Nachdem die Bestätigung empfangen wurde, beginnt die erste Station damit, Datenblöcke zu komprimieren und an die zweite Station zu übertragen. Die erste Station kann auch von der zweiten Station empfangene Datenblöcke empfangen und dekomprimieren. Ebenso empfängt und dekomprimiert die zweite Station Datenblöcke von der ersten Station und komprimiert und überträgt Datenblöcke an die erste Station. Der Betrieb der Kommunikationsvorrichtung in Echtzeit kann voll- oder halbduplex sein.
  • Dieselbe Technik kann in Anwendungen, bei denen das Übertragungsmedium ein Bus ist, bspw. zwischen einer CPU und einer Platte, eingesetzt werden, so dass der Speicherplatz auf der Platte reduziert wird.
  • Die vielen Merkmale und Vorteile der Erfindung offenbaren sich in der detaillierten Beschreibung und folglich ist es mit den beigefügten, die Erfindung darstellenden Ansprüchen beabsichtigt, all die Merkmale und Vorteile der Erfindung abzudecken, die in den Bereich der Erfindung fallen. Weiterhin ist es nicht beabsichtigt, die Erfindung auf die exakte Ausführungsform und Betriebsweise zu beschränken, die dargestellt und beschrieben ist, da dem Fachmann viele Modifikationen und Variationen einfallen werden und demgemäss fallen solche Modifikationen und Äquivalente in den Bereich der beanspruchten Erfindung.

Claims (14)

  1. Computerimplementiertes Verfahren zur Komprimierung digitaler Daten für eine Übertragung und/oder eine Speicherung, das folgende Schritte umfasst: Auswahl mindestens eines Komprimierungsparameters einschließlich eines Primzahlparameters entsprechend einer vorbestimmten Anzahl an Primfaktoren, die beim Codieren jedes Datenwertes während der Komprimierung (S10–S14) zu verwenden sind; und Komprimieren der Daten in einen komprimierten Datenblock basierend auf dem mindestens einen Komprimierungsparameter (S24–64).
  2. Verfahren gemäß Anspruch 1, das ein Erstellen eines die Komprimierungsparameter (S16) enthaltenden Headers, ein Übertragen des Headers in einen Komprimierungspuffer (S26) und ein Übertragen des Datenstroms in den Komprimierungspuffer umfasst.
  3. Verfahren gemäß Anspruch 2, das weiterhin den Schritt eines Anfügens des Headers an den komprimierten Datenblock umfasst.
  4. Verfahren gemäß Anspruch 1, Anspruch 2 oder Anspruch 3, wobei der Schritt des Auswählens den Schritt einer Eingabe von mindestens einem Komprimierungsparameter durch einen Benutzer umfasst.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, wobei der Schritt des Auswählens den Schritt eines Bestimmens von mindestens einem Komprimierungsparameter basierend auf vorbestimmten Bedingungen durch eine Verarbeitungseinheit (14), die mit dem System verbunden ist, umfasst.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, wobei der Schritt des Auswählens weiterhin folgende Schritte umfasst: Auswählen eines Limitparameters entsprechend einem vorbestimmten, beim Komprimieren des Datenstroms (S12) zu verwendenden Exponentenwerts; und Auswählen eines Größenparameters entsprechend dem größten Satz von Bytes, die während jedes Zyklus (S14) komprimiert werden.
  7. Verfahren gemäß Anspruch 6, das weiterhin die folgenden Schritte umfasst: Segmentieren des Datenstroms in einen oder mehrere Datenblöcke entsprechend dem Größenparameter vor dem Übertragungsschritt; Übertragen des einen oder der mehreren Datenblöcke in den Komprimierungspuffer; und Zusammensetzen des einen oder der mehreren komprimierten Datenblöcke, die aus dem Komprimierungsschritt hervorgehen in einen komprimierten Datenstrom.
  8. Verfahren gemäß Anspruch 2, wobei der Komprimierungsschritt weiterhin die folgenden Schritte umfasst: wiederholtes Dividieren der Inhalte des Komprimierungspuffers durch jeden folgenden Primfaktor (S28) bis ein Rest erhalten wird oder der Quotient kleiner ist als der größte Primfaktor; Generieren eines Exponentialparameters für jeden Primfaktor, wobei der Exponentialparameter die Anzahl der mit jedem Primfaktor durchgeführten Wiederholungen während des Schritts des wiederholten Dividierens (S30–S64) anzeigt; Abgleichen der Inhalte des Komprimierungspuffers, um erfolgreich den Schritt des wiederholten Dividierens ohne Erhalten eines Rests durchzuführen basierend auf dem gewählten Primzahlparameter (S36); und Generieren eines Fehlerparameters, der die Anzahl des Durchführens des Abgleichschrittes anzeigt.
  9. Computerimplementiertes Verfahren zum Dekomprimieren komprimierter digitaler Daten, das die folgenden Schritte umfasst: Auslesen mindestens eines Komprimierungsparameters aus einem mit den komprimierten Daten verbundenen Headers einschließlich eines Primzahlparameters, der einer vorbestimmten Anzahl von Primfaktoren entspricht, die für jeden Datenwert bei einem Codieren von Daten während einer Komprimierung der Daten (S78–82) verwendet wurde; und Dekomprimieren der Daten in einen dekomprimierten Datenblock gemäß dem mindestens einen Komprimierungsparameter (S80–82).
  10. Verfahren gemäß Anspruch 9, das ein Übertragen der komprimierten Daten in einen Auswertepuffer (S78) umfasst.
  11. Verfahren gemäß Anspruch 9 oder 10, das weiterhin die folgenden Schritte umfasst: Segmentieren der komprimierten Daten in einen oder mehrere komprimierte Datenblöcke vor dem Übertragungsschritt in Übereinstimmung mit dem mindestens einen Komprimierungsparameter, der aus dem Header ausgelesen wurde; und Zusammensetzen eines oder mehrerer dekomprimierter Datenblöcke, die aus dem Dekomprimierungsschritt resultieren, in einen Datenstrom.
  12. Verfahren gemäß einem der Ansprüche 9 bis 11, wobei der Dekomprimierungsschritt weiterhin die folgenden Schritte umfasst: Generieren einer Mehrzahl von ausgewerteten Primfaktoren durch Potenzieren jedes Primfaktors mit einem Exponentialwert entsprechend Exponentialparametern, die für den momentan in dem Auswertepuffer gespeicherten Datenblock generiert wurden; Berechnen des Produkts der ausgewerteten Primfaktoren; Speichern des Produkts der ausgewerteten Primfaktoren in einem Konstruktionspuffer; und Addieren eines Wertes, der durch einen Fehlerparameter und einen Anpassungsalgorithmus angezeigt wird, der mit dem komprimierten Datenblock verknüpft ist, zu dem Produkt der ausgewerteten Primfaktoren.
  13. Vorrichtung zur Übertragung komprimierter digitaler Daten, die umfasst: einen Codierer zum Auslesen eines übermittelten Datenstroms, wobei der Codierer konfiguriert ist zum: Konstruieren eines Headers, der einen Komprimierungsparameter umfasst einschließlich eines Primzahlparameters, der einer vorbestimmten Anzahl von Primfaktoren entspricht, die beim Codieren jedes Datenwerts während einer Komprimierung zu verwenden sind, eines Limitparameters, der einem vorbestimmten Exponentenwert entspricht und einem Größenparameter, der dem größten Satz von Bytes entspricht, die während eines Zyklus zu komprimieren sind, Segmentieren des Datenstroms in einen oder mehrere Datenblöcke vorbestimmter Länge gemäß dem Größenparameter nach Feststellung, dass die Größe des Datenstroms den Größenparameter übersteigt, Komprimieren des einen oder der mehreren Datenblöcke gemäß den Komprimierungsparametern, um einen oder mehrere komprimierte Datenblöcke zu bilden, Generieren eines Exponentialparameters für jeden der einen oder der mehreren komprimierten Datenblöcke, Zusammensetzen des einen oder der mehreren komprimierten Datenblöcke in einen komprimierten Datenstrom; eine Datenübertragungseinrichtung zum Übertragen des Headers und des komprimierten Datenstroms; eine Datenempfangseinrichtung zum Empfang des Headers und des komprimierten Datenstroms von der Datenübertragungseinrichtung; und einen Decoder zum Auslesen des Headers und des komprimierten Datenstroms aus der Empfangseinrichtung, wobei der Decoder konfiguriert ist zum: Auslesen der Komprimierungsparameter aus dem Header, Segmentieren des komprimierten Datenstroms in einen oder mehrere komprimierte Datenblöcke gemäß den empfangenen Komprimierungsparametern, Dekomprimieren des einen oder der mehreren komprimierten Datenblöcke, um einen oder mehrere dekomprimierte Datenblöcke zu erhalten, und Wiederzusammensetzen des einen oder der mehreren dekomprimierten Datenblöcke in den vom Codierer empfangenen Datenstrom.
  14. Kommunikationsvorrichtung, die umfasst: mindestens zwei Stationen (30, 40), wobei jede Station umfasst: einen Codierer zum Empfang eines Datenstroms, wobei der Codierer konfiguriert ist zum: Konstruieren eines Headers, der eine Mehrzahl von Komprimierungsparametern umfasst einschließlich eines Primzahlparameters entsprechend einer vorbestimmten Anzahl von Primfak toren, die beim Codieren jedes Datenwertes während einer Komprimierung zu verwenden sind, einen Limitparameter entsprechend einem vorbestimmten Exponentenwert und einen Größenparameter entsprechend einem größten Satz von Bytes, die während eines Zyklus zu komprimieren sind, Segmentieren des Datenstroms in einen oder mehrere Datenblöcke von vorbestimmter Länge gemäß dem Größenparameter, Komprimieren des einen oder der mehreren Datenblöcke gemäß dem Primzahlparameter, eine Datenübertragungseinrichtung zum Übertragen des Headers und der komprimierten Datenblöcke zu einer anderen der mindestens zwei Stationen; eine Datenempfangseinrichtung zum Empfang des Headers und jedes komprimierten Datenblocks durch eine andere der mindestens zwei Stationen; und einen Decoder zum Auslesen des Headers und der komprimierten Datenblöcke aus dem Datenempfangsgerät, wobei der Decoder konfiguriert ist zum: Auslesen der Komprimierungsparameter aus dem Header, Dekomprimieren eines jeden des einen oder der mehreren komprimierten Datenblöcke, um einen oder mehrere entsprechende dekomprimierte Datenblöcke zu erhalten, und Konvertieren des einen oder der mehreren dekomprimierten Datenblöcke in einen Datenstrom.
DE69915725T 1998-04-08 1999-04-06 Datenkompression unter Verwendung von Primzahlexponenten Expired - Lifetime DE69915725T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/056,987 US6373986B1 (en) 1998-04-08 1998-04-08 Compression of data transmission by use of prime exponents
US56987 1998-04-08

Publications (2)

Publication Number Publication Date
DE69915725D1 DE69915725D1 (de) 2004-04-29
DE69915725T2 true DE69915725T2 (de) 2005-02-24

Family

ID=22007805

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69915725T Expired - Lifetime DE69915725T2 (de) 1998-04-08 1999-04-06 Datenkompression unter Verwendung von Primzahlexponenten

Country Status (4)

Country Link
US (1) US6373986B1 (de)
EP (1) EP0949589B1 (de)
JP (1) JP4812146B2 (de)
DE (1) DE69915725T2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000151974A (ja) * 1998-11-11 2000-05-30 Sony Corp 信号編集装置、信号編集方法
EP1601157B1 (de) * 1999-08-06 2020-01-15 Godo Kaisha IP Bridge 1 Datensende- und -empfangsgerät und verfahren
JP3797836B2 (ja) * 1999-12-09 2006-07-19 株式会社東芝 リモートメンテナンスシステム
CA2396369A1 (en) * 2000-01-03 2001-07-12 Caleb Avery Efficient and lossless conversion for transmission or storage of data
KR100449102B1 (ko) * 2002-03-19 2004-09-18 삼성전자주식회사 멀티미디어용 시스템온칩 프로세서
US7433527B2 (en) * 2004-02-26 2008-10-07 Mitsubishi Denki Kabushiki Kaisha Time series data dimensional compression apparatus
US7564874B2 (en) 2004-09-17 2009-07-21 Uni-Pixel Displays, Inc. Enhanced bandwidth data encoding method
KR100688522B1 (ko) 2005-01-18 2007-03-02 삼성전자주식회사 영상데이터 압축기 및 압축방법
US7710966B1 (en) * 2005-07-19 2010-05-04 Google Inc. Distributing packets more evenly over trunked network links
US20070030816A1 (en) * 2005-08-08 2007-02-08 Honeywell International Inc. Data compression and abnormal situation detection in a wireless sensor network
US20080301505A1 (en) * 2007-05-31 2008-12-04 Nathan John Harrington Computer performance monitoring method and system
US20140344486A1 (en) * 2013-05-20 2014-11-20 Advanced Micro Devices, Inc. Methods and apparatus for storing and delivering compressed data
US9608664B2 (en) * 2013-12-30 2017-03-28 International Business Machines Corporation Compression of integer data using a common divisor
US9628107B2 (en) 2014-04-07 2017-04-18 International Business Machines Corporation Compression of floating-point data by identifying a previous loss of precision
US9350384B2 (en) 2014-09-30 2016-05-24 International Business Machines Corporation Hierarchical data compression and computation
SE538512C2 (sv) 2014-11-26 2016-08-30 Kelicomp Ab Improved compression and encryption of a file
US9959299B2 (en) 2014-12-02 2018-05-01 International Business Machines Corporation Compression-aware partial sort of streaming columnar data
US10909078B2 (en) 2015-02-25 2021-02-02 International Business Machines Corporation Query predicate evaluation and computation for hierarchically compressed data
SE543293C2 (en) * 2015-04-17 2020-11-17 Kelicomp Ab Improved compression of a file
SE544304C2 (en) * 2015-04-17 2022-03-29 URAEUS Communication Systems AB Improved compression and encryption of a file
CN107644611B (zh) 2016-07-22 2020-04-03 京东方科技集团股份有限公司 Oled显示装置及其压力触控驱动方法
GB2607692B (en) * 2019-08-23 2023-08-02 Imagination Tech Ltd Random accessible image data compression

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4077034A (en) 1974-11-04 1978-02-28 Dell Harold R Data compression
US4068311A (en) 1976-12-03 1978-01-10 The United States Of America As Represented By The Secretary Of The Navy Discrete transform systems using permuter memories
US4588985A (en) 1983-12-30 1986-05-13 International Business Machines Corporation Polynomial hashing
US5140634A (en) 1987-09-07 1992-08-18 U.S Philips Corporation Method and apparatus for authenticating accreditations and for authenticating and signing messages
US5218637A (en) 1987-09-07 1993-06-08 L'etat Francais Represente Par Le Ministre Des Postes, Des Telecommunications Et De L'espace Method of transferring a secret, by the exchange of two certificates between two microcomputers which establish reciprocal authorization
US5790599A (en) * 1989-01-19 1998-08-04 Redband Technologies, Inc. Data compression system using source representation
US5095480A (en) * 1989-06-16 1992-03-10 Fenner Peter R Message routing system for shared communication media networks
US5842224A (en) * 1989-06-16 1998-11-24 Fenner; Peter R. Method and apparatus for source filtering data packets between networks of differing media
US5384725A (en) 1990-05-18 1995-01-24 Yale University Method and apparatus for encoding and decoding using wavelet-packets
US5257270A (en) * 1990-12-26 1993-10-26 Eastman Kodak Company Shift-correction code rate-enhancing parity encoding/decoding
IL106335A0 (en) 1992-08-03 1993-12-28 Redband Technologies Inc Data compression system using source representation
US5446726A (en) * 1993-10-20 1995-08-29 Lsi Logic Corporation Error detection and correction apparatus for an asynchronous transfer mode (ATM) network device
US5708659A (en) 1993-10-20 1998-01-13 Lsi Logic Corporation Method for hashing in a packet network switching system
US5864554A (en) * 1993-10-20 1999-01-26 Lsi Logic Corporation Multi-port network adapter
US5914955A (en) * 1993-10-20 1999-06-22 Lsi Logic Corporation Switched network hub on a chip
US5519780A (en) * 1993-12-03 1996-05-21 Scientific-Atlanta, Inc. System and method for providing compressed digital teletext services and teletext support services
US5548646A (en) 1994-09-15 1996-08-20 Sun Microsystems, Inc. System for signatureless transmission and reception of data packets between computer networks
US5663896A (en) * 1994-09-22 1997-09-02 Intel Corporation Broadcast key distribution apparatus and method using Chinese Remainder
EP0731583A1 (de) * 1995-03-08 1996-09-11 International Business Machines Corporation Verfahren und System zum Weglenken von Nachrichten in einem Mehrknoten-Datenkommunikationsnetz
US5526054A (en) * 1995-03-27 1996-06-11 International Business Machines Corporation Apparatus for header generation
JPH0981763A (ja) * 1995-07-07 1997-03-28 Oki Data:Kk 文字・イメージ混在データの圧縮方法及び装置
US5745392A (en) * 1995-10-05 1998-04-28 Chevron U.S.A. Inc. Method for reducing data storage and transmission requirements for seismic data
FR2743646B1 (fr) * 1996-01-12 1998-03-06 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comportant un circuit de division entiere
WO1998008323A1 (en) * 1996-08-19 1998-02-26 Ntru Cryptosystems, Inc. Public key cryptosystem method and apparatus
US5857025A (en) * 1996-09-09 1999-01-05 Intelligent Security Systems, Inc. Electronic encryption device and method
US5974151A (en) * 1996-11-01 1999-10-26 Slavin; Keith R. Public key cryptographic system having differential security levels
US6069572A (en) * 1997-03-31 2000-05-30 Seagate Technology, Inc. Apparatus and method to encode position information data on a recording medium
US5862452A (en) * 1997-10-20 1999-01-19 Motorola, Inc. Method, access point device and peripheral devices for low complexity dynamic persistence mode for random access in a wireless communication system
US6275587B1 (en) * 1998-06-30 2001-08-14 Adobe Systems Incorporated Secure data encoder and decoder

Also Published As

Publication number Publication date
EP0949589A3 (de) 2000-07-12
EP0949589A2 (de) 1999-10-13
JP4812146B2 (ja) 2011-11-09
US6373986B1 (en) 2002-04-16
JP2000031832A (ja) 2000-01-28
DE69915725D1 (de) 2004-04-29
EP0949589B1 (de) 2004-03-24

Similar Documents

Publication Publication Date Title
DE69915725T2 (de) Datenkompression unter Verwendung von Primzahlexponenten
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE69735680T2 (de) Verfahren zur Bilddecodierung
DE2264090C3 (de) Datenverdichtung
DE60109631T2 (de) Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE69838074T2 (de) Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE112012005557B4 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE19544761C2 (de) Verfahren zum Komprimieren eines eingegebenen Symbols
DE19534730B4 (de) Verfahren zum Codieren und Decodieren von Daten
EP2296282B1 (de) Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Nachschlagtabellen
DE10355760A1 (de) System und Verfahren zum Codieren von Daten
DE3800634A1 (de) Bildinformation-kompressionsvorrichtung
DE19635251A1 (de) Verfahren und Apparat zur Komprimierung beliebiger Daten
DE69936755T2 (de) Verfahren und Vorrichtung zur Analyse von Bilddaten um mehrere Umwandlungen für verbesserte Bilddatenübertragung durchzuführen
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE60118491T2 (de) Kodiergerät und Kodierverfahren für einen Orientierungsinterpolationsknoten
DE2340230A1 (de) Verfahren und vorrichtung zur vorhersage des signalpegelwertes eines nachrichtenelementes
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
DE69725280T2 (de) Kompressionsgerät mit arithmetischer Kodierung unter Verwendung eines kontextualen Models, das zu variablen Musterlängen in binären Bilddaten adaptiv ist
DE69627391T2 (de) Verfahren und system zum durchführen einer booleschen operation auf bitketten unter benutzung einer maximalen bitscheibe
EP3424200B1 (de) Kennungscodierungseinrichtung und kennungsdecodierungseinrichtung zur datenverteilung in netzwerken sowie derartige einrichtungen aufweisende netzwerkelemente
DE1283870B (de) Verfahren zur digitalen Kodierung einer flaechenhaften Abbildung
DE3545106C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition