DE69609503T2 - Verfahren und vorrichtung zur kompression von farbvideodaten - Google Patents
Verfahren und vorrichtung zur kompression von farbvideodatenInfo
- Publication number
- DE69609503T2 DE69609503T2 DE69609503T DE69609503T DE69609503T2 DE 69609503 T2 DE69609503 T2 DE 69609503T2 DE 69609503 T DE69609503 T DE 69609503T DE 69609503 T DE69609503 T DE 69609503T DE 69609503 T2 DE69609503 T2 DE 69609503T2
- Authority
- DE
- Germany
- Prior art keywords
- color
- colors
- block
- pixel
- value
- 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
Links
- 238000000034 method Methods 0.000 title claims description 34
- 239000003086 colorant Substances 0.000 claims description 141
- 238000007906 compression Methods 0.000 description 29
- 230000006835 compression Effects 0.000 description 26
- 230000006837 decompression Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 4
- 238000012804 iterative process Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N9/00—Details of colour television systems
- H04N9/79—Processing of colour television signals in connection with recording
- H04N9/80—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
- H04N9/804—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
- H04N9/8042—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N11/00—Colour television systems
- H04N11/04—Colour television systems using pulse code modulation
- H04N11/042—Codec means
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/84—Television signal recording using optical recording
- H04N5/85—Television signal recording using optical recording on discs or drums
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Color Television Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Description
- Diese Erfindung betrifft das Komprimieren von Farbvideodaten im Allgemeinen sowie insbesondere das Verändern des Komprimierungsgrades als eine Funktion der Farbeigenschaften der Videodaten, welche gerade komprimiert werden.
- Farbvideoanimationen oder Videobänder von Bildern oder Szenen können verwendet werden, um die Wirklichkeitsnähe und/oder Nützlichkeit von computergenerierten Anzeigen und Grafiken zu verbessern. Diese Videobilder werden typischerweise als ein Strom von digitalen Farbvideodaten auf einer Speichervorrichtung, wie z. B. einer CD-ROM-Scheibe, in einem abrufbaren Format gespeichert. Wenn vom Betrachter gewünscht, oder wenn von dem Softwareprogramm gesteuert, werden die Farbvideodaten, welche das Videobild repräsentieren, von der Speichervorrichtung abgerufen und auf einer Anzeigevorrichtung, wie z. B. einen Videomonitor, angezeigt. In der Praxis werden die Videodaten nicht kontinuierlich angezeigt, sondern sind in eine Folge von Einzelbildern unterteilt. Jedes Einzelbild von Videodaten umfasst die nötige Information, um einen einzelnen Bildschirm oder "Schnappschuß" des Videos auf der Anzeigevorrichtung anzuzeigen. Das Anzeigen einer sequentiellen Reihe von Einzelbildern in schneller Aufeinanderfolge kann den Eindruck von sich bewegenden Bildern erzeugen.
- Die Qualität und Wirklichkeitsnähe des angezeigten Bildes ist eine Funktion der Auflösung der Anzeigevorrichtung und der Anzahl von Farben, welche die Anzeigevorrichtung anzeigen kann. Typischerweise kann eine vernünftige Bildauflösung mit einer Anzeigevorrichtung erreicht werden, welche ein Bild anzeigt, wobei das Bild aus 480 horizontalen Linien von 640 Pixeln, oder Bildelementen, pro Zeile besteht, obwohl Bilder, welche für einige Videospiele geeignet sind, an Vorrichtungen mit Auflösungen von lediglich 240 horizontalen Linien von 320 Pixeln angezeigt werden können. In jüngerer Vergangenheit wurden Anzeigevorrichtungen mit höherer Auflösung, welche in der Lage sind, 1024 Linien von 1280 Pixeln pro Linie anzuzeigen, allgemein erhältlich. Wo lediglich ein einfaches, Zweiton-Monochrom-Bild gewünscht ist, kann jedes Pixel durch ein einzelnes Bit von Videodaten repräsentiert werden, da das Pixel abhängig von dem Bild entweder erleuchtet oder dunkel ist. Typischerweise werden Monochrom-Bilder jedoch unter Verwendung von acht Datenbits zur Repräsentation jedes Pixels angezeigt, was jedem Pixel des Bildes gestattet, in einem von 256 möglichen Farbtönen einer einzigen Farbe angezeigt zu werden. In Farbe angezeigte Bilder sind weitaus aufregender und visuell ansprechender als monochrome Bilder, besonders wenn sie verwendet werden, um die Wirklichkeitsnähe von Videospielen und Simulationen zu verbessern. Es wird jedoch wesentlich mehr Information in der Form von digitalen Videofarbdaten benötigt, um Farbbilder wiederzugeben. Im einfachsten Fall müssen wenigstens dreimal so viele digitale Daten verwendet werden, um eine Farbe zu definieren, welche durch ein einzelnes Pixel angezeigt werden soll, da jede Farbe aus einer Kombination der Primärfarben Rot, Blau und Grün besteht, und jede dieser Farben durch digitale Daten definiert werden muß. Aktuelle Anzeigevorrichtungen, welche das RGB(Rot-Blau- Grün)-Format benutzen, sind in der Lage, 16.777.216 Farben bereitzustellen, indem sie 24 Farbvideodatenbits verwenden, um jedes Pixel zu definieren.
- Wo relativ statische Bilder angezeigt werden sollen, ist die Menge an benötigten Farbvideodaten kein kritischer Faktor in der Leistung des Softwareprogramms. Wo jedoch eine Videoanimation oder ein sich bewegendes Bild gewünscht ist, wird das Video ruckartig, unnatürlich und unrealistisch erscheinen, wenn die Videodaten nicht mit einer Rate von wenigstens 30 Einzelbildern pro Sekunde, dem NTSC-Fernsehstandard, angezeigt werden.
- Ein einzelner Videoclip, welcher 1 Minute dauert, muß somit aus wenigstens 1800 Einzelbildern von Videofarbdaten zusammengesetzt sein. Diese enorme Menge an Videofarbdaten muß gespeichert werden auf, und abgerufen werden von einer CD-ROM oder einer anderen Vorrichtung mit genug Speicherraum, um alle Videofarbdaten für den Videoclip zu fassen.
- Ein weiteres Problem besteht darin, dass Speichervorrichtungen, wie z. B. CD- ROMs, begrenzte Datenübertragungsraten, typischerweise von maximal etwa 600000 Bits pro Sekunde aufweisen. Wo die Daten nicht schnell genug abgerufen und angezeigt werden können, kann die Bildung des Videobildes für einen Augenblick steckenbleiben, während die Farbvideodaten von der Speichervorrichtung zur Anzeigevorrichtung übertragen werden und beeinträchtigt die Wirklichkeitsnähe der angezeigten Videobilder. Um die effektive Geschwindigkeit derartiger Speichervorrichtungen zu erhöhen und die Wartezeit zum Erzeugen einer sich bewegenden Farbvideoanzeige zu verringern, wurden zahlreiche Komprimierungs- und Dekomprimierungsmethoden vorgeschlagen, um die Menge an Farbvideodaten zu reduzieren, welche gespeichert und abgerufen werden muß. Einige Komprimierungsmethoden unterteilen ein Bild oder eine Abbildung in eine Matrix von Blöcken, von denen jede wiederum in eine Matrix von Bildelementen oder Pixeln unterteilt wird. Das Bild oder die Abbildung kann in digitale Daten umgewandelt werden, welche dann verwendet werden können, um eine Videoanzeige des Originalbildes zu erzeugen, wobei bestimmte Informationen für jedes Pixel eines jeden Blocks kodiert werden müssen. Die Menge an pro Pixel benötigten Daten und die Qualität in Einzelheiten des Bildes, welches aus den Daten erzeugt werden kann, sind wichtige Eigenschaften eines jeden Komprimierungssystems. In einigen Fällen werden die Daten in einer einheitlichen Weise Block für Block oder Einzelbild für Einzelbild komprimiert. Auf diese Art und Weise werden m Bits von komprimierten Daten verwendet, um jeden n · n- Block von Pixeldaten zu repräsentieren. Andere Systeme verwenden ein adaptives Komprimierungsverfahren, wobei Farbvideodaten Block für Block untersucht werden und wobei dann die Art der zu verwendenden Komprimierung für jeden Block bestimmt wird. In einem bekannten System werden zwei unterschiedliche Farben für jeden Block durch Ermitteln des Durchschnitts der Farben bestimmt, welche oberhalb und unterhalb der durchschnittlichen Bildleuchtdichte für den Block liegen. Diese zwei berechneten Farben können dann mit einem Schwellenwert verglichen werden, um die Anzahl von Farben zu bestimmen, die für den Block gespeichert werden sollen.
- Was in der Technik benötigt wird, ist ein Farbvideodatenkomprimierungsverfahren, so dass das wieder erzeugte Videobild die Farben des Originalvideobildes genau wiedergibt, während die Menge an notwendigen Daten reduziert wird, um sich bewegende Farbbilder in Echtzeit von Speichervorrichtungen mit einer festen Datenrate zu erzeugen. Durch Verringern der Menge an für ein Videoeinzelbild notwendigen Farbdaten kann auf die Farbdaten zum Herstellen des Bildes von der Speichervorrichtung zugegriffen werden, ohne hinter der Videoanzeige zurückzubleiben. Ein Verfahren und eine Vorrichtung zur verlustfreien Komprimierung und Dekomprimierung von Videobilddaten ist im US-Patent Nr. 5,408,542 offenbart. Jedes Videoeinzelbild wird in Pixelblöcken verarbeitet. Jede angetroffene Farbkombination wird in einem Farbcache gespeichert, welches nachfolgend als ein Farbkombinationsverzeichnis verwendet wird. Auf diese Art und Weise kann eine identische Farbkombination in einem späteren Pixelblock auf den Eintrag im Farbcache verweisen anstatt alle Farben in dem Pixelblock in den Datenstrom hineinzukodieren.
- Ein adaptives Komprimierungs-/Dekomprimierungsverfahren ist im US-Patent Nr. 5,046,119 offenbart, in welchem vom Benutzer einstellbare Schwellen verwendet werden können, um die verwendeten Komprimierungsarten zu verändern.
- Die vorliegende Erfindung ist auf ein Verfahren und eine Vorrichtung zum Komprimieren von Farbvideodaten zur Speicherung unter Verwendung der Farben des Originalvideobildes gerichtet.
- Gemäß einem ersten Gesichtspunkt der vorliegenden Erfindung ist ein Verfahren vorgesehen zum Komprimieren von Farbvideodaten, welche Farbvideoeinzelbilder an einer Anzeigevorrichtung definieren, wobei das Verfahren folgende Schritte umfasst:
- Vorsehen eines eine Mehrzahl von Pixeln umfassenden Farbvideoeinzelbildes, wobei jedes Pixel eine zugeordnete Farbe aufweist;
- Unterteilen des Farbvideoeinzelbildes in Pixelblöcke; sowie Bestimmen der Farben, welche in einem der Blöcke vorhanden sind,
- dadurch gekennzeichnet, dass das Verfahren weiterhin folgende Schritte umfasst:
- Berechnen einer Anzahl von Farben für den einen der Blöcke entsprechend einer Farbschwelle, wobei die Anzahl der Farben nicht grösser ist als eine vorbestimmte Anzahl; sowie
- Speichern von Farbvideodaten, welche jedes Pixel in dem Block repräsentieren, wobei der Schritt des Berechnens der Anzahl von Farben für den einen der Blöcke umfasst:
- Sortieren der bestimmten Farben, welche in dem Block vorhanden sind, nach der Häufigkeit des Auftretens einer jeden Farbe,
- Vergleichen einer jeden der bestimmten Farben mit jeder anderen bestimmten Farbe,
- Bestimmen von Farben als die gleichen oder vergleichsweise nahe Farben aus dem Vergleich der bestimmten Farben, wenn der Unterschied zwischen den Farben geringer ist als die Farbschwelle, sowie Ersetzen der weniger häufig auftretenden Farbe durch die häufiger auftretende Farbe von zwei vergleichsweise nahen Farben.
- Wenn die berechnete Anzahl an Farben größer als vier ist, dann kann die Farbschwelle vorzugsweise eingestellt werden und die Anzahl an Farben, welche für den Block nötig sind, kann erneut dementsprechend berechnet werden.
- Der Schritt des Bestimmens der im Block vorhandenen Farben kann weiterhin den Schritt des Pixel-für-Pixel-Vergleichens der Farben, welche in dem Block vorhanden sind, mit den Farben in einem entsprechenden Block in einem vorhergehenden Farbvideoeinzelbild umfassen, wobei der Farbe eines Pixels ein Null-Wert gegeben wird, wenn der Unterschied zwischen der Farbe des jeweiligen Pixels, welches in dem Block vorhanden ist, und der Farbe des entsprechenden Pixels in dem entsprechenden Block in dem vorhergehenden Farbvideoeinzelbild geringer ist als ein Transparenzschwellenwert.
- Beim Lesen von Daten von Speichervorrichtungen mit einer festen Datenrate können vollbewegte Videobilder ruckartig und unnatürlich erscheinen, wo das Einzelbild mehr Videodaten enthält als bei der festen Datenrate in der gegebenen Zeit, welche für das Anzeigen des Einzelbildes zugewiesen ist, gelesen werden können. Um ein ruckfreies Abspielen der sich bewegenden Videobilder zu erreichen, sollte die Menge an Daten verringert werden, welche von der Speichervorrichtung, wie z. B. einer CD-ROM, gelesen werden, um dem Prozessor zu gestatten, eine ausreichende Menge der Farbvideodaten zu erfassen, um ein vollbewegtes Video in Echtzeit wiederzugeben.
- Zusätzlich gibt es, selbst in Speichervorrichtungen mit hoher Dichte, noch eine praktische Grenze für die Menge an Daten, welche gespeichert werden kann. Eine Komprimierung von Farbvideodaten kann gestatten, dass eine erhöhte Anzahl an Videoeinzelbildern gespeichert wird, wodurch die Spielzeit der Vorrichtung erhöht wird.
- Gemäß einem zweiten Gesichtspunkt der vorliegenden Erfindung ist weiterhin eine Vorrichtung vorgesehen zum Komprimieren von Farbvideodaten, welche Farbvideoeinzelbilder an einer Anzeigevorrichtung definieren, wobei jedes der Einzelbilder eine Mehrzahl von Pixeln umfasst, wobei jedes Pixel eine zugeordnete Farbe aufweist, und wobei die Vorrichtung umfasst:
- einen Speicher;
- sowie einen Prozessor zum Unterteilen jedes Farbvideoeinzelbildes in Pixelblöcken und zum Bestimmen der in jedem Block vorhandenen Farben, dadurch gekennzeichnet, dass der Prozessor weiterhin ausgebildet ist zum Berechnen eines Farbwertes für jedes Pixel in dem Block, zum Zählen des Auftretens eines jeden Farbwertes in dem Block sowie zum vorübergehenden Speichern einer Tabelle umfassend jeden Farbwert in dem Block sowie die Anzahl des Auftretens für jeden Farbwert in dem Speicher;
- wobei der Prozessor weiterhin jeden Farbwert in der Tabelle, welche in dem Speicher gespeichert ist, mit jedem anderen Farbwert in der Tabelle vergleicht, welche in dem Speicher gespeichert ist, wobei dann, wenn der Unterschied zwischen zwei Farbwerten geringer ist als ein Farbschwellenwert, die Anzahl des Auftretens für den weniger häufig auftretenden Farbwert zu der Anzahl von häufiger auftretenden Farbwerten addiert wird und der weniger häufig auftretende Farbwert aus dem Speicher gelöscht wird, so dass der häufiger auftretende Farbwert den weniger häufig auftretenden Farbwert in dem Block ersetzt; sowie
- Mittel zum Speichern der verbleibenden Farbwerte in dem Block aus dem Speicher.
- Fig. 1 ist ein Diagramm, welches ein Datenstromformat darstellt, das für die komprimierten Daten für zwei Farben gemäß einer Ausführungsform der Erfindung verwendet wird.
- Fig. 2 ist eine Liste der Zwei-Bit-Wörter des TYP-Bytes, welche verwendet werden, um den Typ der Komprimierung oder Kodierung gemäß einer Aus führungsform der Erfindung anzuzeigen.
- Fig. 3a-3c sind Flussdiagramme, welche das Komprimierungsverfahren gemäß einer Ausführungsform der Erfindung beschreiben und umreissen.
- Fig. 4 stellt eine Farbreihe und einen entsprechenden Block von Farbpixeln dar, welche gemäß einer Ausführungsform der Erfindung kodiert werden.
- Fig. 5 stellt eine weitere Farbreihe und einen entsprechenden Block von Pixeldaten dar, welche gemäß einer Ausführungsform der Erfindung kodiert werden.
- Fig. 6 stellt noch eine weitere Farbreihe und einen entsprechenden Block von Pixeldaten dar, welche gemäß einer Ausführungsform der Erfindung kodiert werden.
- Fig. 7 ist ein Diagramm, welches das Verfahren darstellt, das verwendet wird, um die Nähe von Farben im RGB-Raum zu bestimmen.
- Fig. 8 stellt ein Computersystem zum Kodieren und Dekodieren von Farbvideodaten gemäß einer Ausführungsform der Erfindung dar.
- Die Erfindung betrifft ein Verfahren zum Komprimieren von Farbvideodaten, welche Einzelbilder von Farbvideobildern repräsentieren, um die Menge an Daten, welche für jedes Einzelbild gespeichert werden, zu reduzieren und die Geschwindigkeit zu erhöhen, mit welcher derartige Videobilder abgerufen und angezeigt werden können. Wie hierin beschrieben wird, wird auf zahlreiche spezielle Details Bezug genommen werden, wie z. B. die spezielle Anzahl an Bits in einem Datenstrom, die Anzahl an Pixeln in einem Block, usw., um Ausführungsformen der Erfindung vollständiger zu beschreiben. Jedoch sollte einem Fachmann klar sein, dass die vorliegende Erfindung nicht auf die speziellen Details begrenzt ist.
- In der vorliegenden Ausführungsform ist ein Videodatenstrom in eine Sequenz von Videoeinzelbildern unterteilt, wobei jedes Einzelbild Videodaten zum Anzeigen einer Mehrzahl von Pixeln umfasst, wobei jedes Pixel eine zugeordnete Farbe aufweist, um einen einzelnen Anzeigebildschirm oder "Schnappschuß" eines Farbvideos anzuzeigen, welches während des Betriebs eines Computerprogramms angezeigt werden soll. Jedes Einzelbild wird abgetastet und dann in eine Matrix von Pixelblöcken unterteilt. Jeder Block enthält eine Pixelmatrix, wobei ein 4 · 4-Pixelblock 16 Pixel enthält. Jedes Pixel kann adressiert werden, um eine unterschiedliche Farbe zu repräsentieren. Somit kann jedem Pixel in dem Block eine spezielle Farbe zugewiesen werden. Die Farbdaten in den Pixelblöcken werden dann in einen Datenstrom gespeichert und komprimiert. Von diesem Punkt an werden sich die Ausdrücke "komprimieren" und "kodieren" auf das Verfahren beziehen, durch welches die Farbvideodaten in dem Datenstrom gespeichert werden.
- Fig. 1 stellt einen Datenstrom von Farbvideodaten dar, welche gemäß der vorliegenden Ausführungsform komprimiert sind. In diesem Beispiel umfasst der Datenstrom Daten für zwei Farben. Das erste Byte des Datenstroms wird als TYP-Byte bezeichnet. Dieses Byte besitzt acht Bit, welche in vier Zwei-Bit- Worte unterteilt sind. Durch Unterteilen des ersten bzw. führenden Bytes auf diese Art und Weise, wird der Prozessor über das Farbschema informiert, welches für die nächsten vier Pixelblöcke verwendet wird und kann die Daten dementsprechend handhaben. Jeder Block ist vorzugsweise ein 4 · 4-Pixelblock für insgesamt 16 Pixel in einem Block.
- Dem TYP-Byte folgend sind die FARB-Bytes, welche verwendet werden, um die Farben der Pixel innerhalb des Pixelblocks zu identifizieren. Jedes FARB- Byte weist acht Bit auf. Das FARB-Byte kann deshalb bis zu 2&sup8; oder 256 Farben an einem im Speicher gespeicherten Farbkennfeld adressieren. Das Kodieren und Dekodieren von Farbvideodaten wird entsprechend diesem Farbkennfeldspeicher durchgeführt werden. Während des Dekodierens identifizieren die Speicheradressen die gewünschten Farben für die verschiedenen Pixel und die die Farben bestimmenden Daten werden mit den entsprechenden Speicherstellen ausgelesen. Jede Farbe umfasst die R-, G- und B-Komponentenwerte für eine Videoanzeige. In einer 24-Bit-Anzeige wird ein RGB- Tripel mit drei Farbkennfeldern entsprechend den R-, G- bzw. B-Komponentenwerten verwendet. Insbesondere werden acht Bit die Farbe Rot (R) repräsentieren, acht Bit werden die Farbe Grün (G) repräsentieren und acht Bit werden die Farbe Blau (B) repräsentieren. Somit wird das RGB-Tripel das Äquivalent eines 768-Bit-Kennfelds sein (d. h., 3 · 256). Jede Farbe des 256- Farb-Kennfelds kann auf das RGB-Tripel indiziert sein und jeder zu speichernde Farbwert weist einen R-, G- und B-Komponentenwert auf. Auf diese Art und Weise kann jedes FARB-Byte sein eigenes Farbkennfeld adressieren. Der Unterschied zwischen Farbwerten wird nach Massgabe dieser RGB-Komponentenwerte bestimmt werden, wie detaillierter in Verbindung mit Fig. 7 diskutiert werden wird.
- In dem in Fig. 1 gezeigten Datenstrom sind lediglich zwei FARB-Bytes für das 2-Farben-Datenschema (TYP 10) gezeigt. Den FARB-Bytes folgend sind zwei POINTER-Bytes, wobei jedes Byte in zwei Vier-Bit-Worte unterteilt ist. Diese Summe von vier Vier-Bit-Worten adressiert die Farben für den Pixelblock. Das erste Wort (d. h., Wort 1) enthält den Pointer (Zeiger) auf die Farbe für die erste Reihe (d. h., Reihe 1) des 4 · 4-Pixelblocks, wobei jedes Bit auf entweder die Farbe 1 oder Farbe 2 für die einzelnen Pixel in dieser Reihe zeigt. Wort 2, Wort 3 bzw. Wort 4 enthalten jeweils die Pointer für Reihe 2 bis Reihe 4. Wo vier Farben für den Block benötigt werden (d. h., TYP 11) werden vier Bytes für die Pixelpointer benötigt, da jedes Pixel einen Zwei-Bit-Pointer benötigen wird.
- Das TYP-Byte in dem Datenstrom umfasst vier Zwei-Bit-Wörter, welche die Struktur und die Anzahl der Farben für die kodierten Blöcke in diesem Datenstrom anzeigen. Vier Pixelblöcke sind in dem Datenstrom kodiert, welcher durch das TYP-Byte identifiziert wird. Jedes Zwei-Bit-Wort lässt die für einen Pixelblock zu verwendende Datenstruktur erkennen. Nach dem letzten in Fig. 1 gezeigten POINTER-Byte kann entsprechend dem zweiten Wort des TYP-Bytes ein weiterer Satz von FARB-Bytes und POINTER-Bytes erwartet werden, usw..
- Wie in Fig. 2 gezeigt, gibt es für die vorliegende Erfindung vorzugsweise vier verschiedene Typen von Farbkodierschemata. Diese Kodierschemata werden durch die Zwei-Bit-Wörter identifiziert. TYP-00-Kodierung zeigt an, dass in dem Datenstrom keine Farbdaten folgen, so dass die Blöcke in Bezug auf das vorhergehende Einzelbild transparent erscheinen werden und die Farben die gleichen bleiben werden. In der TYP-01-Kodierung umfasst der Datenstrom Informationen für eine Farbe. In der TYP-10-Kodierung werden Daten für zwei Farben vorhanden sein und für TYP-11-Kodierung werden Daten für vier Farben gefunden werden.
- Wo für den Block lediglich drei Farben benötigt werden, kann TYP-11-Kodierung (d. h. das Vier-Farb-Schema) verwendet werden, wobei das vierte FARB- Byte nicht verwendet wird. Das vierte FARB-Byte kann leer sein oder bloß überflüssige Farbdaten enthalten, welche durch die POINTER-Bytes nicht referenziert werden. Alternativ können die drei Farben für den Block in ein Zwei-Farb-Schema durch Eliminieren der dritten Farbe gezwungen werden. Gelegentlich kann praktisch keine Komprimierung für den Block durchgeführt werden und volle 16 FARB-Bytes werden (d. h., eine Farbe für jedes Pixel) dem TYP-Byte folgend benötigt werden. In dieser Situation wird ein TYP-01- Byte verwendet, wobei das FARB-Byte einen willkürlichen Wert, wie z. B. Null, aufweist. Diese Anordnung zeigt an, dass 16 FARB-Bytes in dem Datenstrom für den 4 · 4-Pixelblock (für insgesamt 17 Bytes) verwendet werden.
- In den meisten Fällen jedoch, kann die in einem Block vorhandene Anzahl an Farben auf vier oder weniger reduziert werden, ohne das Bild wesentlich zu verschlechtern.
- Ein Vorteil dieser Anordnungen des Speicherns von Farbdaten ist, dass dann wenn das Wort in einem TYP-Byte für einen speziellen Block 00 ist, was anzeigt, dass kein Wechsel in einer Farbe vom vorhergehenden Einzelbild aufgetreten ist, keine zusätzlichen Daten für diesen Pixelblock notwendig sind, wodurch wenigstens vier Bytes eingespart werden. Kein FARB-Byte wird in einem TYP-00-Datenstrom verwendet. Dann wenn lediglich eine Farbe für den Block nötig ist, ist lediglich das einzelne FARB-Byte notwendig (d. h., TYP 01), was drei Bytes einspart. Wo zwei Farben für den Block benötigt werden, wie in dem TYP-10-Datenstrom der Fig. 1 gezeigt ist, werden zwei Bytes eingespart. Wo fünf oder mehr Farben in dem Block vorhanden sind, werden höchstens lediglich vier dieser Farben in dem entsprechenden TYP- 11-Datenstrom vorhanden sein. Farbkomprimierung wird erreicht durch Reduzieren der Anzahl der Farben, welche für einen Block erhalten werden. Wenn beispielsweise zwei Farben einander ausreichend ähnlich sind, dann werden diese zwei Farben als die gleiche Farbe betrachtet. Lediglich eine dieser zwei Farben wird in einem TYP-01-Datenstrom anstelle eines TYP-10- Datenstroms verwendet werden. Die genaue Struktur des Datenstroms, der gespeichert wird, ist abhängig von der Anzahl an Farben, die gespeichert werden und der Größe der Pixeldatenblöcke.
- Fig. 3a-3c zeigen Blockdiagramme der Schritte, die verwendet werden, um den für die Blöcke eines Videobildes zu verwendenden Kodierungstyp zu bestimmen. Die Farben des Videoeinzelbildes entsprechen jenen, die in dem 256-Farbspeicherkennfeld vorhanden sind. Wo das zu kodierende Videoeinzelbild jedoch Farben enthält, weiche in dem Farbvideokennfeld nicht identisch vorhanden sind, kann dann die näheste erhältliche Näherung der Farbe in dem Videoeinzelbild verwendet werden. Jedes neue Einzelbild in einer Aufeinanderfolge von Einzelbildern wird abgetastet und in einen 4 · 4-Pixelblock unterteilt. Die Farben eines jeden Pixel in jedem 4 · 4-Block des Videoeinzelbildes werden analysiert und dann in einen Datenstrom gemäß dem in Fig. 2 gezeigten Kodierschema kodiert. Die Analyse und das Kodieren des Farbvideos, wie in den Fig. 3a-3c gezeigt, wird im allgemeinen in drei Stufen voranschreiten, wobei die Farbwerte zuerst berechnet werden, dann entsprechend ihrer Häufigkeit des Auftretens sortiert werden, und dann miteinander verglichen werden, um die minimale Anzahl an Farben zu bestimmen, welche für das Kodieren des Blocks notwendig sind.
- In der ersten Stufe, wie in Fig. 3a gezeigt, werden Farbwerte für jedes Pixel des Blocks im aktuellen Einzelbild bestimmt. Dieser Farbwert kann aus den RGB-Signalen für jedes einzelne Pixel bestimmt werden. Nachdem der Farbwert für jedes Pixel in dem Block bestimmt ist, wird jedes Pixel des Blocks im aktuellen Einzelbild mit seinem entsprechenden Pixel im vorhergehenden Videoeinzelbild verglichen. Wenn die Farben der entsprechenden Pixel die gleichen sind, oder wenn der Unterschied in deren Farbwerten geringer ist als ein Transparenzschwellenwert, wird der Farbwert dieses Pixels auf Null gesetzt. Dieses besondere Pixel sollte "transparent" in Bezug auf die Pixelfarbe des vorhergehenden Einzelbildes sein. Dieser "Transparenz"-Farbwert wird als Farbe erachtet und wird als solche in dem Kodierprozeß gezählt, welcher später ausführlicher diskutiert wird. Dann wenn alle Pixel in dem Block "transparent" sind, wird dieser Block Gegenstand des TYP-00-Kodierens. Somit annulliert die Verwendung eines "Transparenz"-Farbwertes den Bedarf an FARB-Bytes in dem Datenstrom, in dem alle Pixel des Blocks gegenüber dem vorhergehenden Einzelbild unverändert sind.
- Der Transparenzschwellenwert zum Bestimmen der Ähnlichkeit in den Farben von entsprechenden Pixeln kann entweder ein fest eingestellter Wert oder ein durch den Benutzer gewählter sein. Der Farbwert des Pixels des aktuellen Einzelbildes wird als "ausreichend unterschiedlich" vom Farbwert eines entsprechenden Pixels des vorhergehenden Einzelbildes erachtet, wo der Unterschied zwischen den Farbwerten der entsprechenden Pixel grösser ist als die Transparenzschwelle. Der "ausreichend unterschiedliche" Farbwert des aktuellen Pixels wird dann im Pufferspeicher gespeichert und das nächste Pixel wird dann analysiert. Jedes Pixel in dem Block wird auf diese Art und Weise analysiert und ein laufender Zähler oder eine Reihe wird für die Farbwerte (Cx) und deren entsprechender Häufigkeit des Auftretens (N) innerhalb des Pixelblocks erhalten.
- Die zweite Stufe der Analyse, wie in Fig. 3b dargestellt, beginnt nachdem jedes der 16 Pixel in einem 4 · 4-Pixelblock mit seinem entsprechenden Pixel in dem vorhergehenden Einzelbild verglichen worden ist. Die Reihe von Farbwerten wird in absteigender Reihenfolge der Anzahl oder Häufigkeit des Auftretens für jede Farbe sortiert. Der Farbwert für jede Farbe wird in Bezug auf die Häufigkeit des Auftretens für diese Farbe in dem Block gespeichert. Diese Werte können durch beliebige im Stand der Technik bekannte Mittel, wie z. B. eine Tabelle, im Speicher abgespeichert werden.
- In der dritten Stufe dieser Analyse, dargestellt in Fig. 3b und 3c, wird die Anzahl (D) der augenblicklich in dem Pixelblock vorhandenen Farben auf eine Minimalanzahl (Dmin) an Farben reduziert, welche für jeden Block von Pixeln notwendig sind, indem jeder Farbwert mit jedem anderen Farbwert in der Reihe verglichen wird. Die minimale Anzahl an Farben kann durch den Benutzer auf 1, 2, 3 oder 4 eingestellt werden; oder kann durch einen vorprogrammierten Prozessor adaptiv bestimmt werden. Vorzugsweise wird jeder Farbwert (Cm) sequentiell mit den anderen Farbwerten (Cn) verglichen, beginnend mit dem am häufigsten auftretenden Farbwert. Dieser in Fig. 3c gezeigte iterative Prozeß bestimmt die minimale Anzahl an Farben für jeden Pixelblock. Farben werden als gleich oder vergleichsweise nahe erachtet, wo der Unterschied in dem Farbwert zwischen zwei Pixeln geringer als ein Farbschwellenwert (CT) ist. Dieser Farbschwellenwert kann festgelegt oder ansonsten durch den Benutzer eingestellt sein, oder kann durch das System adaptiv bestimmt sein. Das Komprimierungsschema wird zu größerem Kontrast führen, wo der Farbschwellenwert auf ein höheres Niveau eingestellt ist. Eine größere Komprimierung kann auf Kosten eines höheren Kontrastes erreicht werden. Wenn bestimmt wird, dass die weniger häufig auftretende Farbe ausreichend nahe an der häufiger auftretenden Farbe ist, wie durch den Farbschwellenwert bestimmt wird, wird die Zählung oder Anzahl an Auftreten für die weniger häufig auftretende Farbe zu der Zählung der häufiger auftretenden Farbe addiert. Auf diese Art und Weise erhalten die Pixel mit dem weniger häufig auftretenden Farbwert nun den häufiger auftretenden Farbwert. Die weniger häufig auftretende Farbe wird dann aus der Reihe gelöscht oder entfernt. Diese Konsolidierung von vergleichsweise nahen Farben reduziert die benötigte Datenmenge wesentlich, welche für jeden Block zu speichern ist. Wenn die zwei verglichenen Farben einen Unterschied im Farbwert größer als die Farbschwelle aufweisen, wird die Zählung des Auftretens für jede Farbe beibehalten. Vorzugsweise werden "transparente" Farben niemals mit einer häufiger auftretenden Farbe konsolidiert. Beispielsweise können die Schwellen und Parameter des Systems derart eingestellt sein, dass "transparente" Farben stets als ausreichend unterschiedlich von den anderen Farben erachtet werden.
- Dann wenn jede Farbe in der Reihe mit jeder anderen auftretenden Farbe in der Reihe verglichen worden ist, wird der Kodierungs- oder Datenspeicherungstyp bestimmt, welcher die effektive Komprimierung der Farbdaten repräsentiert. Dann wenn alle Farben einen "Transparenz"-Wert von Null aufweisen, hat keine beträchtliche oder merkliche Veränderung vom vorhergehenden Einzelbild stattgefunden und die TYP-00-Komprimierung wird verwendet. Wenn lediglich eine Farbe in der Reihe vorhanden bleibt, dann wird die TYP-01-Komprimierung verwendet, welche lediglich ein FARB-Byte benötigt. Wenn zwei Farben in der Reihe vorhanden bleiben, dann wird die TYP-10-Komprimierung verwendet, welche zwei FARB-Bytes erfordert. Wenn drei oder vier Farben vorhanden sind, wird die TYP-11-Komprimierung verwendet, welche vier FARB-Bytes in dem Datenstrom erfordert. Wo lediglich drei Farben vorhanden sind, wird auf eines der FARB-Bytes durch den Pixelpointer nicht Bezug genommen werden. Dieses nicht verwendete Byte kann auf einen Null-Wert gesetzt werden.
- Wie zuvor diskutiert, können, wo drei Farben in einem Block verbleiben, anstatt einem Byte zu gestatten, ungenutzt vorhanden zu sein, die drei Farben des Blocks durch Eliminieren der dritten Farbe in ein Zwei-Farben- Schema gezwungen werden. Dies würde durchgeführt werden durch Einstellen des Farbschwellenwerts und daraufhin Vergleichen der Anfangsfarben des Blocks unter Verwendung des eingestellten Schwellenwerts, um die neue Minimalanzahl von Farben auf zwei zu zwingen. Selbstverständlich kann der Farbschwellenwert auch eingestellt werden, um das ungenutzte FARB-Byte auszufüllen, indem der Prozeß gezwungen wird, die minimale Farbanzahl von vier anstatt von drei zu wählen. In beiden Fällen werden die Minimalfarben aus dem Satz von aktuellen Farbwerten ausgewählt, welche ursprünglich für jedes Pixel in dem Block bestimmt wurden.
- Dann wenn mehr als vier Farben in der Reihe vorhanden bleiben, wird der Farbschwellenwert adaptiv durch das System nach Massgabe der Anzahl der verbleibenden Farben eingestellt, um sicherzustellen, dass nicht mehr als vier Farben übrig bleiben. Die dritte Stufe des Bestimmens der minimalen Farbanzahl wird dann unter Verwendung des neu eingestellten Farbschwellenwertes erneut durchlaufen, um die Anzahl an in der Reihe verbleibender Farben weiter zu konsolidieren. In diesem Prozeß werden keine neuen Farbwerte berechnet. Nur die aktuellen Farbwerte, welche ursprünglich für jedes Pixel in dem 4 · 4-Block bestimmt wurden, werden kodiert und gespeichert. Die Farbwerte für bestimmte Pixel werden durch einen vergleichsweise nahen, aber häufiger auftretenden Farbwert ersetzt. Es geschieht durch dieses Ersetzen von Farbwerten, dass Farbvideodaten komprimiert werden, während sie entlang des Datenstroms gespeichert werden.
- Nachdem die Anzahl an unterschiedlichen Farben, welche in dem Block verbleiben, wesentlich verringert worden ist, werden die Farbdaten und die entsprechenden Pointerdaten für die verbleibenden Daten verwendet, um den Datenstrom zu kodieren. Der Datenstrom mit den kodierten Farbdaten für den aktuellen Block wird dann in die Speichermedien geschrieben. Dieser Typ von Speicherungskomprimierung erlaubt, dass eine ausreichende Datenmenge von Speichervorrichtungen, wie z. B. CD-ROMs, mit einer festen Datenrate gelesen werden, um eine ruckfreie Anzeige eines sich bewegenden Farbbildes in Echtzeit zu erzeugen.
- Fig. 4 stellt die Reihe von Farbwerten für einen 4 · 4-Pixelblock dar. Die Reihe kann in der Form einer Tabelle oder jedes anderen im Stand der Technik bekannten Mittels vorliegen. Die sieben Farbwerte A bis 6 repräsentieren verschiedene Farbwerte für die Pixel in dem Block, und die entsprechenden Zahlen zeigen die Zählung des Auftretens für jeden Farbwert in dem Block an. Die Farbwerte A bis G entsprechen im allgemeinen den Farbwerten (Cx), die in Verbindung mit Fig. 3 diskutiert wurden. Wie zuvor diskutiert, werden die Farbwerte in absteigender Reihenfolge gemäß der Zählung des Auftretens für jeden Farbwert sortiert.
- In dem dargestellten Beispiel wird angenommen, dass die sieben Farben nicht transparent sind und dass sie sich von den Farben in dem entsprechenden Block des vorhergehenden Videoeinzelbildes unterscheiden. Farbwert A wird mit jedem anderen Farbwert in der Reihe in absteigender Reihenfolge verglichen. Farbwert A wird verglichen mit Farbwert B, dann Farbwert C, usw. Der Prozeß wird wiederholt, während Farbwert A mit jeder nachfolgenden Farbe in der Reihe verglichen wird. In diesem Beispiel würde Farbwert A Farbe (Cm) und Farbe F würde Farbe (Cn) in Fig. 3 entsprechen. Dann wenn Farbwert A für ausreichend nahe an Farbwert F erachtet wird, d. h., wenn der Unterschied zwischen deren jeweiligen Farbwerten geringer ist als der Farbschwellenwert (CT), wird die Reihe dementsprechend aktualisiert. Da Farbwert A viermal auftritt, während Farbwert F zweimal auftritt, wird Farbwert F kollabiert bzw. mit Farbwert A konsolidiert. Die Reihe wird festhalten, dass Farbwert A sechsmal in dem Block auftritt, und Farbwert F wird aus der Reihe entfernt. Fig. 4 zeigt, dass Farbwert A tatsächlich die Stelle des Farbwerts F in dem Pixelblock einnimmt. Falls keine weitere Farbe gefunden wird, welche relativ nahe bei Farbwert A liegt, wird dann die nächste in absteigender Reihenfolge verbleibende Farbe verwendet. In dem erläuternden Beispiel wird Farbwert E später in Farbwert B kollabieren.
- Nach dem ersten Komprimierungsprozeß, wie durch die Pixelblöcke in Fig. 4 gezeigt ist, verbleiben fünf Farben von den anfänglich sieben Farben. Der Farbschwellenwert wird dann, vorzugsweise durch einen vorprogrammierten Prozessor, nach Massgabe der Anzahl der verbleibenden Farben in dem Pixelblock adaptiv eingestellt. Der Komprimierungsprozeß beginnt dann erneut mit dem eingestellten Farbschwellenwert. Der Prozessor hält vorzugsweise die Anfangsfarbreihe im Speicher zurück, so dass die anfänglichen sieben Farben des Blocks mit dem eingestellten Farbschwellenwert verwendet werden. Es wird angemerkt, dass am Ende dieses zweiten iterativen Prozesses lediglich die Farbwerte A und B in der Reihe verbleiben, die Zählung des Auftretens der Farben in dem Pixelblock verbleibt jedoch bei 16. Es sind keine neuen Farben für den Block berechnet worden. Es wurden jedoch bestimmte Farbwerte durch zuvor existierende Farben in dem Block ausgetauscht und ersetzt. Die drei in Fig. 4 gezeigten Pixelblöcke repräsentieren die Pixelfarben in der Reihe bei unterschiedlichen Komprimierungsniveaus.
- In dem erläuternden Beispiel verbleiben nach diesem zweiten Komprimierungsprozeß lediglich zwei Farben, A und B. Diese zwei Farben und deren jeweilige Positionspointer für den Pixelblock werden dann in einem TYP-10- Datenstrom, wie zuvor diskutiert und in Fig. 1 gezeigt, zur Speicherung in einer CD-ROM oder einer anderen geeigneten Speichervorrichtung kodiert. Diese Komprimierung und Speichermethode führt zu einem geringfügig höheren Kontrast, hält jedoch noch einige der ursprünglichen Farbelemente des Bildes zurück, welche aus dem Speicher gelesen werden können, um ein ruckfreies Abspielen von Vorrichtungen mit festen Datenraten bereitzustellen. Obwohl einige Zwischenfarbtöne in dem Kodierprozeß verlorengehen, kann eine Reihe von aufeinanderfolgenden Videobildern mit einer minimalen Menge an Hardware derart komprimiert und dekomprimiert werden, dass die Datenmenge, welche benötigt wird, um jedes Videoeinzelbild anzuzeigen, das durch Vorrichtungen mit festen Datenraten auferlegte Datenlimit, wie z. B. eine 300 Kb/Sek. CD-ROM, nicht überschreitet. Ein Kodieren der Farbvideodaten auf diese Art und Weise sorgt für die ruckfreie Abspielung aller gespeicherten Einzelbilder der Videobilder. Die Zunahme im Gesamtkontrastbild kann während der Dekomprimierung mit einem Unscharf-Filter (blur filter) korrigiert werden, während Daten von der CD-ROM gelesen werden.
- Fig. 5 stellt die Reihe von Farbwerten für einen weiteren Block dar. Wie in Fig. 4 repräsentieren die variablen Werte H bis L verschiedene Farbwerte und die entsprechenden Nummern zeigen die Anzahl des Auftretens für jeden Farbwert in dem Block an. Wie zuvor angezeigt wurde, sind die Farbwerte in absteigender Reihenfolge entsprechend der Anzahl des Auftretens für jeden Farbwert sortiert. In dem zweiten dargestellten Beispiel tritt Farbwert H fünfmal auf, während Farbwert I viermal auftritt. Wenn Farbwert H gemäß einem Farbschwellenwert für ausreichend nahe an Farbwert I erachtet wird, wird die Reihe aktualisiert werden, um zu zeigen, dass Farbwert H neunmal auftritt, und Farbwert I wird aus der Reihe entfernt werden. Der Prozeß verläuft weiter und, falls keine andere Farbe gefunden wird, die vergleichsweise nahe an Farbwert H liegt, würde dann die nächste verbleibende Farbe, welche Farbwert J ist, verwendet werden und mit den verbleibenden Farben in absteigender Reihenfolge verglichen werden.
- Sollten sich Farbwert J und Farbwert K als vergleichsweise nahe herausstellen, wird einer der Farbwerte ausgewählt werden und seine Anzahl des Auftretens in der Reihe wird um die Anzahl des Auftretens der anderen Farbe erhöht werden. Da beide Farben die gleiche Anzahl von Malen auftreten, wird ein sekundäres Kriterium verwendet, um zu bestimmen, welche Farbe in der Reihe verbleiben wird. Beispielsweise kann der Farbwert mit dem höheren Bildleuchtdichte-Wert ausgewählt werden. Alternativ könnten die Farben zusammen kollabiert werden, wenn die Unterschiede zwischen ihren jeweiligen Farbwerten unterhalb eines weiteren vorbestimmten Schwellenwerts liegen. Da die Farbwerte relativ nahe beieinander liegen, sollte die Auswahl einer Farbe zum Nachteil der anderen keinen wesentlichen Einfluß auf das Gesamtbild haben. Es könnte jedoch Situationen geben, in denen es wünschenswert wäre, die Farben zu einem höheren oder niedrigeren Farbwert zu zwingen. Lediglich zum Zwecke der Erläuterung wird das Auftreten der Farbwerte J und K zu Farbwert J kollabiert werden. Am Ende dieses iterativen Prozesses verbleiben lediglich Farbwerte H, J und L in der Reihe und die Zählung des Auftretens von Farben in dem Block bleibt 16. Diese drei verbleibenden Farbwerte können dann in einem TYP-11-Datenstrom kodiert werden.
- Fig. 6 stellt eine Reihe von Farben für einen Block dar, welcher einige Farben N, P, R, S und T enthält, von denen einige "transparent" in Bezug auf den entsprechenden Pixelblock im vorhergehenden Videoeinzelbild sind. Die eingekreisten Pixelfarben sind jene Pixel, deren Farbe die gleiche ist wie in dem vorhergehenden Einzelbild. In dem Pixelblock nach der Komprimierung sind diese erneut auftretenden Pixel mit einem -Symbol freigelassen, um deren "Transparenz"- oder Null-Wert zu repräsentieren. In dem dargestellten Beispiel befindet sich das verbleibende Auftreten der Farben N, P und T an Pixelstellen, welche jenen in dem vorhergehenden Einzelbild entsprechen. Somit verschwinden diese drei Farben tatsächlich als transparente Farben, und für diesen Pixelblock müssen keine speziellen Informationen bezüglich der Farben N, P und T gespeichert werden. Obwohl die Farben R und S an einigen alten Pixelstellen erneut auftreten, treten diese zwei Farben ebenso an einigen neuen Pixelstellen auf. Deshalb wird dieser Pixelblock in einem TYP-11-Datenstrom kodiert werden, obgleich keine zusätzlichen Farben in dem Block erscheinen, da zwei Farben an einigen Pixelstellen erscheinen, welche von ihren Stellen in dem vorhergehenden Einzelbild in dem Block verschieden sind. Wie zuvor bemerkt wurde, werden die "transparenten" Farben relativ zu dem vorherigen Einzelbild vorzugsweise als eine getrennte diskrete Farbe betrachtet. Deshalb ist in diesem Fall für den Pixelblock ein TYP-11-Kodieren und nicht ein TYP-10-Kodieren erforderlich.
- Wie zuvor diskutiert wurde, können die bestimmten Farbwerte (CX) R-, G- und B-Komponenten aufweisen. Fig. 7 stellt zwei Farbwerte C&sub0; und C&sub1; im RGB- Raum dar. Die Stellen der Farbwerte im RGB-Raum sind somit durch die R-, G- und B-Werte der Pixel definiert. In dieser Darstellung repräsentiert Farbwert C&sub1; den Farbwert eines Pixels in dem aktuellen Einzelbild und der Farbwert C&sub0; repräsentiert den Farbwert des entsprechenden Pixels in dem vorhergehenden Videoeinzelbild. Selbstverständlich ist diese Darstellung ebenso anwendbar auf die Bestimmung von vergleichsweise nahen Farben, wie in Fig. 3c gezeigt ist. Der Unterschied oder Abstand zwischen den Farbwerten des Pixels kann gemäß der folgenden Gleichung bestimmt werden:
- d = X²(R&sub1; - R&sub0;)² + Y²(G&sub1; - G&sub0;)² + Z²(B&sub1; - B&sub0;)²
- wobei X, Y und Z gewichtete Koeffizienten sind, welche eingestellt werden können, um wie gewünscht zu unterschiedlichen Graden der Nähe zwischen zwei Farbwerten zu gelangen. Unterschiedliche Werte für die Koeffizienten X, Y und Z können verwendet werden, um eine besondere Farbkomponente mehr oder weniger hervorzuheben. Somit kann der Abstand zwischen Pixelfarbwerten C&sub0; und C&sub1; im RGB-Raum verwendet werden, um beim Kodieren von Farbvideodaten deren relative Nähe zu bestimmen.
- Die oben beschriebene Komprimierungs-Speicherungsmethode kann in Verbindung mit Personalcomputern wie in Fig. 8 gezeigt verwendet werden. Personalcomputer, wie z. B. jene mit einem 486- oder einem anderen Mikroprozessor, können verwendet werden, um die Farbvideodaten zu kodieren und zu dekodieren. Der Mikroprozessor 21 kann die Farbwerte und Tabellen in seinem Random-Access-Speicher (RAM) 22 speichern, während er die Farben in einem Pixelblock identifiziert und zählt. Die Videodaten können durch eine E/A-Vorrichtung 35 bereitgestellt und auf einem Videomonitor 40 betrachtet werden. Der Mikroprozessor 21 manipuliert dann die Daten in dem RAM 22 entsprechend dem Kodierprozeß, wie zuvor diskutiert. Nachdem die Anzahl an unterschiedlichen Farbwerten in dem Pixelblock auf weniger als vier reduziert worden ist, werden die verbleibenden Farben des Pixelblocks in einem geeigneten Datenstrom kodiert und in einem Speichermedium mit großer Dichte, wie z. B. der CD-ROM 30, gespeichert. Der reduzierte Datenstrom kann später mit der festen Einzelbildrate der CD-ROM 30 gelesen werden, um ein ruckfreies Videoabspielen in Echtzeit auf dem Farbmonitor 140 zu erreichen. Jeder kompatible Mikroprozessor 121 mit Random-Access- Speicher 122 kann diesen Datenstrom von der CD-ROM 30 dekodieren. Es wird verstanden, dass getrennte oder unterschiedliche Mikroprozessoren 21 und 121 verwendet werden können, um den Datenstrom zu kodieren und zu dekodieren. Das Verwenden derartiger Hardware entsprechend der Lehren der Erfindung liegt innerhalb des gewöhnlichen Niveaus an im Stand der Technik vorgefundenen Fähigkeiten.
Claims (11)
1. Verfahren zum Komprimieren von Farbvideodaten, welche
Farbvideoeinzelbilder an einer Anzeigevorrichtung definieren, wobei das
Verfahren folgende Schritte umfasst:
Vorsehen eines eine Mehrzahl von Pixeln umfassenden
Farbvideoeinzelbildes, wobei jedes Pixel eine zugeordnete Farbe aufweist;
Unterteilen des Farbvideoeinzelbildes in Pixelblöcke; sowie
Bestimmen der Farben, welche in einem der Blöcke vorhanden sind,
dadurch gekennzeichnet, dass das Verfahren weiterhin folgende
Schritte umfasst:
Berechnen einer Anzahl von Farben für den einen der Blöcke
entsprechend einer Farbschwelle, wobei die Anzahl der Farben nicht grösser
ist als eine vorbestimmte Anzahl; sowie
Speichern von Farbvideodaten, welche jedes Pixel in dem Block
repräsentieren, wobei der Schritt des Berechnens der Anzahl von Farben
für den einen der Blöcke umfasst:
Sortieren der bestimmten Farben, welche in dem Block vorhanden
sind, nach der Häufigkeit des Auftretens einer jeden Farbe,
Vergleichen einer jeden der bestimmten Farben mit jeder anderen
bestimmten Farbe,
Bestimmen von Farben als die gleichen oder vergleichsweise nahe
Farben aus dem Vergleich der bestimmten Farben, wenn der
Unterschied zwischen den Farben geringer ist als die Farbschwelle, sowie
Ersetzen der weniger häufig auftretenden Farbe durch die häufiger
auftretende Farbe von zwei vergleichsweise nahen Farben.
2. Verfahren nach Anspruch 1, wobei der Schritt des Bestimmens der
Farben, welche in einem der Blöcke vorhanden sind, den Schritt des
Pixel-für-Pixel-Vergleichens der Farben, welche in dem Block
vorhan
den sind, mit den Farben in einem entsprechenden Block in einem
vorhergehenden Farbvideoeinzelbild umfasst, wobei der Farbe eines
Pixels ein Null-Wert gegeben wird, wenn der Unterschied zwischen der
Farbe des jeweiligen Pixels, welches in dem Block vorhanden ist, und
der Farbe des entsprechenden Pixels in dem entsprechenden Block in
dem vorhergehenden Farbvideoeinzelbild geringer ist als ein
Transparenzschwellenwert.
3. Verfahren nach Anspruch 1 oder Anspruch 2, wobei der Schritt des
Speicherns weiterhin folgende Schritte umfasst:
Zuweisen eines Typ-Parameters zu dem Pixelblock, wobei der Typ
bestimmt wird durch die Anzahl von Farben, welche in dem Block
verbleiben und wobei der Typ-Parameter durch ein Typ-Parameter-
Wort repräsentiert wird;
Bestimmen der Anzahl von Farbwörtern, welche notwendig sind, um
die Anzahl von verbleibenden Farben aus dem Typ-Parameter zu
definieren;
Zuweisen von Bit-Werten, weiche die in dem Block verbleibenden
Farben repräsentieren, zu den Farbwörtern;
Bestimmen der Anzahl von Pixelwörtern, welche durch den
Typ-Parameter benötigt werden;
Zuweisen von Bit-Werten, welche Pointer auf bestimmte Bit-Werte der
Farbwörter repräsentieren, zu den Pixelwörtern;
Erstellen einer Datenaufzeichnung für den Pixelblock umfassend das
Typ-Parameter-Wort, welches den Typ-Parameter repräsentiert, gefolgt
von der bestimmten Anzahl von Farbwörtern sowie der bestimmten
Anzahl von Pixelwörtern.
4. Verfahren nach einem der Ansprüche 1 bis 3, weiterhin umfassend
den Schritt des Einstellens der Farbschwelle und erneutes Berechnen
der Anzahl von Farben für den Block, wenn die berechnete Anzahl an
Farben größer ist als die vorbestimmte Anzahl.
5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die
vorbestimmte Anzahl vier ist.
6. Verfahren nach einem der vorhergehenden Ansprüche, wobei das
Farbvideoeinzelbild in 4 · 4-Pixelblöcke unterteilt wird.
7. Verfahren nach Anspruch 5, weiterhin umfassend den Schritt des
Einstellens der Farbschwelle und des erneuten Berechnens der Anzahl
von Farben für den Block, wenn die berechnete Anzahl an Farben drei
ist.
8. Verfahren nach Anspruch 7, wobei die Farbschwelle derart eingestellt
wird, dass die berechnete Anzahl an Farben zwei ist.
9. Verfahren nach Anspruch 1, wobei die Farben nach der absteigenden
Häufigkeit des Auftretens einer jeden Farbe sortiert sind.
10. Vorrichtung zum Komprimieren von Farbvideodaten, welche
Farbvideoeinzelbilder an einer Anzeigevorrichtung (40) definieren, wobei jedes
der Einzelbilder eine Mehrzahl von Pixeln umfasst, wobei jedes Pixel
eine zugeordnete Farbe aufweist, und wobei die Vorrichtung umfasst:
einen Speicher (22);
sowie einen Prozessor (21) zum Unterteilen jedes Farbvideoeinzelbildes
in Pixelblöcken und zum Bestimmen der in jedem Block vorhandenen
Farben, dadurch gekennzeichnet, dass der Prozessor weiterhin
ausgebildet ist zum Berechnen eines Farbwertes für jedes Pixel in dem Block,
zum Zählen des Auftretens eines jeden Farbwertes in dem Block sowie
zum vorübergehenden Speichern einer Tabelle umfassend jeden
Farbwert in dem Block sowie die Anzahl des Auftretens für jeden Farbwert
in dem Speicher (22);
wobei der Prozessor (21) weiterhin jeden Farbwert in der Tabelle,
welche in dem Speicher (22) gespeichert ist, mit jedem anderen
Farbwert in der Tabelle vergleicht, welche in dem Speicher (22)
gespeichert ist, wobei dann, wenn der Unterschied zwischen zwei
Farbwerten geringer ist als ein Farbschwellenwert, die Anzahl des
Auftretens für den weniger häufig auftretenden Farbwert zu der Anzahl
von häufiger auftretenden Farbwerten addiert wird und der weniger
häufig auftretende Farbwert aus dem Speicher (22) gelöscht wird, so
dass der häufiger auftretende Farbwert den weniger häufig
auftretenden Farbwert in dem Block ersetzt; sowie
Mittel zum Speichern der verbleibenden Farbwerte in dem Block aus
dem Speicher (22).
11. Vorrichtung nach Anspruch 10, wobei die verbleibenden Farbwerte
des Pixelblocks in einem Datenstrom kodiert und auf einer CD-ROM
(30) gespeichert sind.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/436,592 US5625759A (en) | 1995-05-08 | 1995-05-08 | Real-time video and animation playback process |
PCT/US1996/006462 WO1996037071A2 (en) | 1995-05-08 | 1996-05-07 | Method and apparatus for the compressing of colour video data |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69609503D1 DE69609503D1 (de) | 2000-08-31 |
DE69609503T2 true DE69609503T2 (de) | 2000-12-14 |
Family
ID=23733049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69609503T Expired - Fee Related DE69609503T2 (de) | 1995-05-08 | 1996-05-07 | Verfahren und vorrichtung zur kompression von farbvideodaten |
Country Status (5)
Country | Link |
---|---|
US (1) | US5625759A (de) |
EP (1) | EP0824830B1 (de) |
AU (1) | AU5732796A (de) |
DE (1) | DE69609503T2 (de) |
WO (1) | WO1996037071A2 (de) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237029B1 (en) * | 1996-02-26 | 2001-05-22 | Argosystems, Inc. | Method and apparatus for adaptable digital protocol processing |
US6101276A (en) * | 1996-06-21 | 2000-08-08 | Compaq Computer Corporation | Method and apparatus for performing two pass quality video compression through pipelining and buffer management |
US6775417B2 (en) | 1997-10-02 | 2004-08-10 | S3 Graphics Co., Ltd. | Fixed-rate block-based image compression with inferred pixel values |
US6373890B1 (en) * | 1998-05-05 | 2002-04-16 | Novalogic, Inc. | Video compression and playback process |
US6618363B1 (en) * | 1998-10-09 | 2003-09-09 | Microsoft Corporation | Method for adapting video packet generation and transmission rates to available resources in a communications network |
JP2000305822A (ja) * | 1999-04-26 | 2000-11-02 | Denso Corp | データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法 |
US6774916B2 (en) * | 2000-02-24 | 2004-08-10 | Texas Instruments Incorporated | Contour mitigation using parallel blue noise dithering system |
US7072521B1 (en) * | 2000-06-19 | 2006-07-04 | Cadwell Industries, Inc. | System and method for the compression and quantitative measurement of movement from synchronous video |
GB0022250D0 (en) * | 2000-09-12 | 2000-10-25 | Pace Micro Tech Plc | Bitmap graphics compression for image data |
GB2375447B (en) * | 2001-05-10 | 2005-06-08 | Amulet Electronics Ltd | Encoding digital video for transmission over standard data cabling |
JP2003009244A (ja) * | 2001-06-25 | 2003-01-10 | Fuji Photo Film Co Ltd | 画像データ送信装置およびその制御方法 |
US7457483B2 (en) * | 2004-02-09 | 2008-11-25 | Olympus Corporation | Image processing apparatus, image processing program and storage medium |
JP2006338226A (ja) * | 2005-06-01 | 2006-12-14 | Hitachi Ltd | リモート操作システム |
US20070046781A1 (en) * | 2005-08-29 | 2007-03-01 | Honeywell International Inc. | Systems and methods for processing digital video data |
US8154556B1 (en) * | 2007-11-06 | 2012-04-10 | Nvidia Corporation | Multiple simultaneous unique outputs from a single display pipeline |
US20110032272A1 (en) * | 2009-08-06 | 2011-02-10 | Panasonic Corporation | Video processing apparatus |
JP5501041B2 (ja) * | 2010-03-15 | 2014-05-21 | キヤノン株式会社 | 画像処理装置、画像処理方法、及びプログラム |
JP5393574B2 (ja) * | 2010-04-08 | 2014-01-22 | キヤノン株式会社 | 画像処理装置、画像処理方法、及びプログラム |
JP5595151B2 (ja) | 2010-07-13 | 2014-09-24 | キヤノン株式会社 | 画像処理装置、画像処理装置における圧縮方法、および、プログラム |
JP5643574B2 (ja) | 2010-08-26 | 2014-12-17 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
US9113115B2 (en) * | 2012-07-24 | 2015-08-18 | Hewlett-Packard Indigo B.V. | Color image data compression |
US9936858B2 (en) * | 2013-02-04 | 2018-04-10 | Orpheus Medical Ltd | Color reduction in images of an interior of a human body |
US11241297B2 (en) | 2016-12-12 | 2022-02-08 | Cadwell Laboratories, Inc. | System and method for high density electrode management |
US11517239B2 (en) | 2018-04-05 | 2022-12-06 | Cadwell Laboratories, Inc. | Systems and methods for processing and displaying electromyographic signals |
US11596337B2 (en) | 2018-04-24 | 2023-03-07 | Cadwell Laboratories, Inc | Methods and systems for operating an intraoperative neurophysiological monitoring system in conjunction with electrocautery procedures |
US11185684B2 (en) | 2018-09-18 | 2021-11-30 | Cadwell Laboratories, Inc. | Minimally invasive two-dimensional grid electrode |
US11517245B2 (en) | 2018-10-30 | 2022-12-06 | Cadwell Laboratories, Inc. | Method and system for data synchronization |
US11471087B2 (en) | 2018-11-09 | 2022-10-18 | Cadwell Laboratories, Inc. | Integrity verification system for testing high channel count neuromonitoring recording equipment |
US11317841B2 (en) | 2018-11-14 | 2022-05-03 | Cadwell Laboratories, Inc. | Method and system for electrode verification |
US11529107B2 (en) | 2018-11-27 | 2022-12-20 | Cadwell Laboratories, Inc. | Methods for automatic generation of EEG montages |
US11128076B2 (en) | 2019-01-21 | 2021-09-21 | Cadwell Laboratories, Inc. | Connector receptacle |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4319267A (en) * | 1979-02-16 | 1982-03-09 | Nippon Telegraph And Telephone Public Corporation | Picture coding and/or decoding equipment |
US4580134A (en) * | 1982-11-16 | 1986-04-01 | Real Time Design, Inc. | Color video system using data compression and decompression |
US4965845A (en) * | 1985-09-05 | 1990-10-23 | Harris Corporation | Compression and reconstruction of color aeronautical chart images |
US4743959A (en) * | 1986-09-17 | 1988-05-10 | Frederiksen Jeffrey E | High resolution color video image acquisition and compression system |
GB8708010D0 (en) * | 1987-04-03 | 1987-05-07 | Crosfield Electronics Ltd | Image reprocessing |
US4797729A (en) * | 1988-02-05 | 1989-01-10 | Eastman Kodak Company | System incorporating an error tolerant picture compression algorithm |
US4857991A (en) * | 1988-04-27 | 1989-08-15 | Universal Video Communications Corp. | Method and system for decompressing color video feature encoded data |
US4816901A (en) * | 1988-04-27 | 1989-03-28 | Universal Video Communications Corp. | Method and system for compressing color video data |
US5355447A (en) * | 1988-05-27 | 1994-10-11 | Wang Laboratories, Inc. | Method for color image reduction based upon determination of color components of pixels in neighboring blocks |
GB9004978D0 (en) * | 1990-03-06 | 1990-05-02 | Crosfield Electronics Ltd | Image compression |
US5046119A (en) * | 1990-03-16 | 1991-09-03 | Apple Computer, Inc. | Method and apparatus for compressing and decompressing color video data with an anti-aliasing mode |
JP2950346B2 (ja) * | 1991-03-25 | 1999-09-20 | ソニー株式会社 | 画像データのデコード方法及びそのデコーダ回路 |
US5164819A (en) * | 1991-04-03 | 1992-11-17 | Music John D | Method and system for coding and compressing color video signals |
US5408542A (en) * | 1992-05-12 | 1995-04-18 | Apple Computer, Inc. | Method and apparatus for real-time lossless compression and decompression of image data |
US5544286A (en) * | 1993-01-29 | 1996-08-06 | Microsoft Corporation | Digital video data compression technique |
US5585944A (en) * | 1994-05-10 | 1996-12-17 | Kaleida Labs, Inc. | Method for compressing and decompressing images by subdividing pixel color distributions |
-
1995
- 1995-05-08 US US08/436,592 patent/US5625759A/en not_active Expired - Fee Related
-
1996
- 1996-05-07 AU AU57327/96A patent/AU5732796A/en not_active Abandoned
- 1996-05-07 EP EP96915582A patent/EP0824830B1/de not_active Expired - Lifetime
- 1996-05-07 WO PCT/US1996/006462 patent/WO1996037071A2/en active IP Right Grant
- 1996-05-07 DE DE69609503T patent/DE69609503T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69609503D1 (de) | 2000-08-31 |
US5625759A (en) | 1997-04-29 |
WO1996037071A2 (en) | 1996-11-21 |
WO1996037071A3 (en) | 1997-02-06 |
EP0824830A2 (de) | 1998-02-25 |
AU5732796A (en) | 1996-11-29 |
EP0824830B1 (de) | 2000-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69609503T2 (de) | Verfahren und vorrichtung zur kompression von farbvideodaten | |
DE68928438T2 (de) | Verfahren und Vorrichtung zur Erzeugung von beweglichen Bildern | |
DE102018118362B4 (de) | Systeme und verfahren zur effizienten und verlustfreien komprimierung von erfassten rohbilddaten | |
DE69518641T2 (de) | Skalierbares pixelverteilungsbildkodierungssystem zur kompression und dekompression von bildern | |
US6373890B1 (en) | Video compression and playback process | |
DE68928923T2 (de) | Verfahren zum senkrechten Filtern einer nach einem Gitter abgetasteten Anzeige | |
DE69634962T2 (de) | Extrapolation von Pixelwerten eines in einem Block enthaltenen Videoobjektes | |
DE69831961T2 (de) | Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten | |
DE60017222T2 (de) | Verfahren und Gerät zur Steuerung von komprimierter Z-Information in einem Videographiksystem | |
DE69609141T2 (de) | Interaktive bildmanipulation | |
DE4309105C2 (de) | Verfahren zum Behandeln eines Teils eines verdichteten Bildes für eine Aufbereitung | |
DE69715136T2 (de) | Bilddatenkompression für interaktive anwendungen | |
DE69227360T2 (de) | Bildverarbeitungsverfahren und Vorrichtung dazu | |
DE112004002391B4 (de) | Räumlich-zeitliche Erzeugung von Bewegungsunschärfe | |
DE19531004A1 (de) | Verfahren und Vorrichtung zur wahrnehmungsoptimierten Übertragung von Video- und Audio-Daten | |
DE4341304A1 (de) | Verfahren und Vorrichtung zur Verwendung eines Videopuffers | |
DE68919669T2 (de) | Graphikbilddatenkompressionsverfahren. | |
DE69820148T2 (de) | Verfahren zur Kompression/Dekompression von Bilddaten | |
DE69513841T2 (de) | Paketiertes yuv9 format zur verschachtelten speicherung und effizienten bearbeitung von digitalen videodaten | |
DE69516109T2 (de) | Digitale bildkodierung | |
DE102006048432A1 (de) | Verfahren und Aufzeichnungsformat für Bildkomprimierung | |
DE19944213C1 (de) | Verfahren zum Komprimieren eines digitalen Bildes mit mehreren Bit-Ebenen | |
DE19600195C2 (de) | Bildsignalverarbeitungseinrichtung und Verfahren zur Verarbeitung digitaler Datensignale | |
EP0745310B1 (de) | Verfahren und vorrichtung zum erzeugen und wiedergeben von komprimierten farbigen videoszenen | |
DE69623502T2 (de) | Verfahren und vorrichtung zum erzeugen von bildschirmanzeigemeldungen mit echtfarbenmodus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |