DE4133460A1 - Einrichtung und verfahren zum verdichten von bildern - Google Patents
Einrichtung und verfahren zum verdichten von bildernInfo
- Publication number
- DE4133460A1 DE4133460A1 DE4133460A DE4133460A DE4133460A1 DE 4133460 A1 DE4133460 A1 DE 4133460A1 DE 4133460 A DE4133460 A DE 4133460A DE 4133460 A DE4133460 A DE 4133460A DE 4133460 A1 DE4133460 A1 DE 4133460A1
- Authority
- DE
- Germany
- Prior art keywords
- picture elements
- transformation
- vertical
- transformed
- gct
- 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.)
- Granted
Links
Classifications
-
- 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
- H04N11/044—Codec means involving transform coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/78—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C19/00—Digital stores in which the information is moved stepwise, e.g. shift registers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- 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
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
-
- 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
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- 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
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Die Erfindung betrifft eine Einrichtung und ein Verfahren
zum Verdichten von Bildern und betrifft insbesondere eine
Einrichtung und ein Verfahren zum Verdichten von Steh- bzw.
Einzelbildern, was mit einem JPEG (Joint Photographic Experts
Group) Steh- oder Einzelbild-Verdichtungsstandard kompatibel
ist.
Wenn hochqualitative Bilder verdichtet oder komprimiert
werden müssen, um Speicherplatz zu sparen oder um Übertragungsanforderungen
zu genügen, ist es in der Praxis allgemein
üblich, zuerst die Bilder an einen anderen Platz zu übertragen,
wo die Information kompakter dargestellt werden kann.
Hierzu wird üblicherweise Block für Block eine lineare Transformation
(eine Matrix-Multiplikation) vorgenommen; eine typische
Anordnung besteht darin, 8-Punkt-Transformationen an
Zeilensegmenten von 8 Bildelementen durchzuführen und dann
8-Punkt-Transformationen an den 8 Element-Spaltensegmenten
dieses zeilen-transformierten Bildes durchzuführen. Genauso
kann eine einzige 64-Punkt-Transformation an einem Bildelementblock
aus 64 Bildelementen (Pixels) durchgeführt werden,
welche in einem (8×8) Block angeordnet sind.
Eine gute Wahl für eine eindimensionale Transformation ist
die diskrete Chebychev-Transformation:
Bei dieser Transformation ergeben sich mehrere Vorteile,
nämlich a) die Verdichtung bzw. Kompression ist für einige
Maßnahmen beinahe optimal; b) es gibt schnelle Rechenalgorithmen,
um diese Transformation und deren Umkehr durchzuführen,
und c) es kann ein Aufbereiten (deblurring) (ein Verbessern
des Ausgangsbildes) ohne weiteres an dem Transformationsraum
durchgeführt werden, wozu bereits bestimmte Voraussetzungen
gegeben sind, die beispielsweise von
Acheroy, M., "Use of the DCT for the restoration of an image
sequence", SPIE Vol. 593, Medical Image Processing (1985),
beschrieben worden sind.
Gemäß der Erfindung sollen daher eine Einrichtung und ein
Verfahren zum Verdichten von Bildern geschaffen werden, welche
auch noch mit einer JPEG-Information kompatibel sind.
Gemäß der Erfindung ist dies bei einer Einrichtung zum Verdichten
von Bildern durch die Merkmale im kennzeichnenden
Teil des Anspruchs 1 erreicht. Ferner ist dies bei einem
Verfahren zum Verdichten von Bildern durch die Merkmale im
kennzeichnenden Teil des Anspruchs 2 erreicht. Vorteilhafte
Weiterbildungen sind Gegenstand der Unteransprüche.
Nachstehend wird die Erfindung anhand von bevorzugten Ausführungsformen
unter Bezugnahme auf die anliegenden Zeichnungen
im einzelnen erläutert. Es zeigt
Fig. 1A ein Blockdiagramm einer Verdichtungs- oder Kompressionseinrichtung
gemäß der Erfindung;
Fig. 1B eine Dekompressionseinrichtung gemäß der Erfindung;
Fig. 2A bis 2C eine Eingangsbildelement-Anordnung, eine zeitlich
richtige Block- bzw. Vektoreinteilung von
Daten gemäß der Erfindung;
Fig. 3A und 3B eine Dreipunkt-Transformation von RGB- in
XYZ-Daten;
Fig. 4A und 4B mögliche VLSI-Anordnungen gemäß
der Erfindung;
Fig. 5 ein Diagramm eines bei der Erfindung verwendeten
Schieberegisters;
Fig. 6A ein Diagramm eines Schiebe-Arrays gemäß der Erfindung;
Fig. 6B ein Beispiel des Schiebe-Arrays der Fig. 6A;
Fig. 7 ein Diagramm eines verknüpften Datenflusses;
Fig. 8A und 8B Diagramme von Vorwärts-Addier-Arrays gemäß
der Erfindung;
Fig. 9 ein Diagramm einer zweidimensionalen verallgemeinerten
Chen-Transformation gemäß der Erfindung und
Fig. 10 ein Blockdiagramm einer bevorzugten Ausführungsform
der Erfindung.
Ein vollständiges System für die Verdichtung und Wiederherstellung
von Bildern kann wie in der folgenden Tabelle 1
aussehen.
Die vorstehende Tabelle beschreibt die Erfindung und, wenn die
freigestellten Schritte (L, Z) weggelassen sind, ebenso die
augenblickliche Technologie. Die Multiplikation mit den Aufbereitungswertigkeiten
(Schritt E) kann auch als ein Decodierschritt
(beispielsweise nach dem Schritt I) durchgeführt
werden.
Das Aufbereiten (Verbessern) ist vorgesehen, um die Punkt-
Spreiz-(point-spread-)Funktion der Eingabeeinrichtung auszugleichen.
Dies muß an der Einrichtung abgestimmt oder weggelassen
werden, wenn das eingegebene Bild bereits verbessert
worden ist. Es gibt auch noch andere Wege, das Bild aufzubereiten;
die hier aufgezeigte Methode ist rechnerisch preiswert
und paßt zu einigen Anwendungsfällen, wie beispielsweise
zu einem Farbkopierer.
Die Berechnung der Vorwärts-Transformation (A, B) kann so
arrangiert werden, daß viel von der Rechenauslastung aus einer
Endmultiplizierstufe besteht. Durch Vorausberechnen der
Produkte dieser Multiplikationen und derjenigen bei den
Schritten (CE) kann der Verdichtungsprozeß beschleunigt
werden. In ähnlicher Weise kann die Berechnung der umgekehrten
Transformation (J, R) arrangiert werden, so daß viel von
der Rechenausnutzung aus der vorbereitenden Multiplizierstufe
besteht. Wiederum wird durch Vorausberechnen der Produkte die
Rechenbeanspruchung von Stufen (H, I) wirksam beseitigt.
Außerdem wird eine andere Transformation durch die 2-D-DCT-
Transformation ersetzt, wodurch sich eine weitere Rechenvereinfachung
ergibt.
Ferner können die psychoadaptiven Wertungen wahlweise geändert
werden, um die verknüpften Multiplikatoren für Schritte
(B,D) rechnerisch wirksam zu machen, beispielsweise Potenzen
von zwei. Kleine Änderungen in den psychoadaptiven Wertungen
der niederenergetischen Ausgangstransformationselemente haben
eine geringere Wirkung auf die Bildqualität oder Verdichtungsrate.
Schließlich wird die Aufmerksamkeit auf die Schritte (L, Z)
in Fig. 1, nämlich auf die Klassifizierung der Bildschwierigkeit
und das Glätten von Blockgrenzen gelenkt. Da diese Möglichkeiten
freigestellt und unabhängig von dem Grundprinzip der
Erfindung sind, wird auf sie in der vorliegenden Beschreibung
nur in sehr geringem Umfang eingegangen.
Der eindimensionale Chen-Algorithmus (siehe Chen, W., et al.,
"A fast Computational algorithm for the DCT", IEEE Trans.
Commun, Vol. COM-25 [1977]) drückt aus, daß
X = s/NANx (1)
wobei x ein Datenvektor ist, X ein transformierter Vektor
und AN das folgende bedeutet:
AN = c(k) cos ((2j + 1) kπ/2N);
j, k = 0, 1, 2, . . ., N - 1.
AN kann auf folgende Weise zerlegt werden
wobei RN/2 das folgende bedeutet:
RN/2 = c (2k + 1) cos (2j + 1) (2k + 1) π/2N;
j, k = 0, 1, 2, . . ., N/2 - 1. (3)
Hierbei ist die Matrix Z die Chen-Matrix P. Die Schreibweise
ist geändert worden, um in der vorliegenden Anmeldung eine
Verwechslung hinsichtlich der Matrix P zu vermeiden.
Für einen Achtpunkt-1D-Chen-Algorithmus wird Gl. (2) recursiv
zweimal verwendet. Bei der ersten Iteration werden die
Matrizen Z₈, R₄ und R₈ verwendet. Bei der zweiten Iteration
wird nach A₄ aufgelöst, und es werden die Matrizen Z₄, R₂,
A₂ und B₄ verwendet. Dies kann ohne weiteres aus den vorstehenden
Gleichungen oder aus den vorstehenden Veröffentlichungen
von Chen et al. abgeleitet werden.
wobei sind:
= RA₄ RB₄ RC₄ RD₄
wobei aus Gl. 3 sich ergibt:
Cn = cos (nπ/16).
Bisher ist alles, was getan worden ist, die Chen-Transformation.
Man könnte sie ausmultiplizieren und um unvernünftigerweise
eine Rechenersparnis zu realisieren, eine intensive
DCT-Implementierung multiplizieren. Dies ist jedoch nicht
das, was die Anmelderin vorgesehen hat. Um die Anzahl an
Multiplikationen auf das Minimum zu reduzieren, werden die
Matrizen folgendermaßen reparametrisiert. Dies ist es, was die
Anmelderin die (modifizierte) Chen-Wu-Transformation nennt,
welche von ihr geschaffen worden ist.
wobei gilt:
a = C1/C7 = cos (π/16)/cos (7π/16) = tan (2π/16),
b = C2/C6 = tan (6π/16),
c = C3/C5 = tan (5π/16),
r = C4 = cos (4π/16).
b = C2/C6 = tan (6π/16),
c = C3/C5 = tan (5π/16),
r = C4 = cos (4π/16).
Die Diagonalmatrix RF₄ enthält die Normalisierungsfaktoren
der unparametrisierten Matrix RA₄. Ebenso kann eine Diagonalmatrix
auch aus den Konstanten in R₂ und A₂ bestehen.
Bei einer Wiederherstellung der A₈-Matrix werden eindeutig
zwei Matrizen erhalten. Die Diagonalmatrizen werden gesondert
von der Hauptmatrix erhalten. Die Hauptmatrix wird mit den
BN-Termen multipliziert. Nach der entsprechenden Umordnung
und Multiplikation mit dem konstanten Term wird Gl. (1) auf
das folgende reduziert:
X = Q (a, b, c) P (a, b, c, r) x
wobei gilt:
Die verallgemeinerte 8-Punkt-DCT-Transformation ist durch
vier Parameter a, b, c, und r bestimmt, und kann geschrieben
werden als
T(a,b,c,r) = P(a,b,c,r) × Q(a,b,c)
wobei P(), Q() wie oben angegeben sind.
Die Bildtransformation erfordert zwei solcher Transformationen
T, nämlich Tv und Th, um das Bild vertikal bzw. horizontal
zu transformieren. Die vollständige zweidimensionale
Transformation wird dann dargestellt durch
[F] = [Tv] [f]t [Th]
wobei f der eingegebene Bildblock ist, F die ausgegebenen
Transformations-Koeffizienten sind und der tiefstehende
Buchstabe (t) ein Matrix-Transponieren bezeichnet. Hierbei
sind alle Matrizen 8 mal 8.
Da eine Diagonalmatrix (wie Q) ihre eigene Transponierte ist,
und
[A]t[B]t = ([E]t[A])
für alle Matrizen und
[Tv] = [Fv] [Q 1v],
[Th1] = [Ph] [Qh]
gilt,
kann geschrieben werden
[F] = [Qv] [Pv] [f] [Ph] [Qh]
was sich reduziert auf
F (i, j) = q (i, j) * g (i, j)
wobei gilt
[g] = [Fv] [f] [Ph t]
und
q (i, j) = Qv (i, i) * Qh (j, j) (7)
Zum Transformieren eines Bildblockes wird [g] mit Hilfe
des Chen-Wu-Algorithmus aufgelöst und dann mit den Faktoren
q (i, j) multipliziert. Wenn gegeben ist
Pv = P (a, b, c, rv)
und
Ph = P (a, b, c, rh)
wird die Umkehr der vorstehenden Transformation ausgedrückt
durch
[f] = [P′v] [Qv] [F] [Qh] [P′h t]
wobei ist:
P′v = P (a, b, c, 1/2 rv)
und
P′h = P (a, b, c, 1/2 rh).
Wieder gibt es eine Lösung über den Chen-Wu-Algorithmus.
Es sind mehrere Methoden gefunden worden, um die Berechnung
der 1-D- oder 2-D-Chebychev-Transformation und deren Umkehr
zu beschleunigen. Es gibt einen bekannten Algorithmus
(siehe Chen, W., et al. wie oben angegeben und Cooley and
Tukey, JW, "An algorithm for (fast Fourier series", _Math
Comput_, XIX, Nr. 90, Stn 296-301, 1965), bei welchem ein
beliebiger 8-Tuple mit der vorstehend wiedergegebenen Matrix
T multipliziert wird, wobei nur 16 Multiplikationen, 13
Additionen und 13 Subtraktionen angewendet werden. Dieser
Algorithmus ist nicht auf irgendwelche speziellen Verhältnisse
der Parameter a, b, c und r angewiesen.
Durch Zerlegen von [T]=[P] [Q], wie oben beschrieben, in Faktoren
wird der Chen-Algorithmus in zwei Stufen aufgeteilt, wobei
8 Multiplikationen bei der Multiplikation [Q], 8 Multiplikationen
und der Rest der Arithmetik bei der Multiplikation mit
[P] verwendet werden. Dies ist eine Folge der Wahl für [Q];
mehrere Elemente von [P] werden 1 oder -1, und eine Multiplikation
erübrigt sich.
Wie oben aufgezeigt, werden ähnliche Vereinfachungen bei der
inversen Transformation, der 2-D-Transformation und der inversen
2-D-Transformation angewendet. Für 8 mal 8 Blöcke
werden 128 Multiplikationen entwender für die Vorwärts- oder
die Umkehr-2-D-Transformation (ausgenommen die Multiplikationen
mit [q]) verwendet. Wenn der interne Datenfluß des Chen-
Algorithmus betrachtet wird, sind diese Multiplikationen in
eine Struktur von acht Addier-/Subtrahier-Stufen und vier
Multiplikations-Stufen eingebettet.
Es ist wichtig zu betonen, daß der Chen-Algorithmus ohne
Rücksicht auf die Parameter a, b, c und r arbeitet. Jedoch
hat die bisher angewendete 8-Punkte-Diskrete-Chebychev-
Transformation (DCT) die Parameter der "echten Cosinus-
Transformation" verwendet:
a = tang (7* π/16)
b = tang (6* π/16)
c = tang (5* π/I16)r = √ = 0,70710678 . . .
b = tang (6* π/16)
c = tang (5* π/I16)r = √ = 0,70710678 . . .
wobei die Wahl von r, welche für die Matrix T notwendig und
hinreichend ist, orthogonal ist.
Die Chen-Transformation arbeitet unabhängig von den Werten,
welche für die Parameter a, b, c und r ausgewählt worden sind,
und zwar deswegen, da die durch QP geschaffene Transformation
orthogonal ist. Es ist auch möglich, irgendwelche Zahlen zu
verwenden und eine Tranformation zu erhalten, welche die gewünschte
Dekorrelation der für eine Verdichtung notwendigen
Bilddaten durchführt. Diese Transformation ist keine
Diskrete-Cosinus-Transformation noch ist sie eine Annäherung
an eine DCT-Transformation. Es ist vielmehr eine eigene
Transformation.
Jedoch ist man sich für eine wirksame Dekorrelation des eingegebenen
Bildes und für eine Tranformation in verhältnismäßig
sinnvolle Raumfrequenz-Koeffizienten allgemein einig,
daß die DCT-Transformation sehr wünschenswert ist (siehe
Lee, BC, "A Fast Cosine Transform", IEEE ASSP, Vol. XXXIII,
1985). Folglich werden, um die Vorteile der DCT-Transformation
zu erreichen, die Parameter entsprechend gesetzt, um
sie denjenigen DCT-Transformationen anzunähern, welche in
Gl. (4) wiedergegeben sind. Der entgegengesetzte Faktor ist
die Effizienz einer Berechung. Da eine Addition preiswerter
durchzuführen ist als eine Multiplikation, werden die Parameter
entsprechend gewählt, um rechnerisch wirksam zu sein.
Statt der Diskreten Chebychev-Transformation sind andere
rechnerische Lösungen gefunden worden. Beispielsweise führt
ein Algorithmus, welcher Lee zuzuschreiben ist, die 8-Punkt-
1-D- und die 64-Punkt-2D-Transformationen mit 12 bzw. 144
Multiplikationen durch (siehe Wu, HR and Paolin, FJ,
"A 2D Fast Cosine Transform", IEEE Conf. on Image
Processing, Vol. I, 1989, und Lee, BC, wie oben angegeben).
Jedoch gibt es mehrere Nachteile dieser "schnelleren"
Algorithmen im Vergleich mit dem Chen-Algorithmus:
- a) Die Vereinfachung T=P×Q (und die entsprechende Zerlegung
in Faktoren für die umgekehrte Transformation) ist
nicht länger wirksam.
Ein Teilen der diagonalen Matrix Q ist wesentlich für die Vereinfachung. - b) Diese Algorithmen funktionieren nicht mit beliebigen Parametern a, b, c und r. Statt dessen verlassen sie sich auf verschiedene trigonometrische Identitäten, die insbesondere für die wahren Cosinusparameter gültig sind.
- c) Diese Algorithmen haben eine schwierige Struktur.
Dies kann die Ingenieurarbeit behindern und die Möglichkeit für eine numerische Instabilität vergrößern.
A) Unter Hinweis auf Tabelle 1 ist zu bemerken, daß die
Schritte (C, D, E) in die aus [Q] abgeleiteten Vorwärtstransformation-
Nachmultiplikatoren gefaltet werden können. Ebenso
können die Schritte (H, I) in die inversen Transformationen-
Vormultiplikatoren gefaltet werden, und zwar deswegen, das
die Raten-Scalar-Operation, die psychoadaptive Bewertungsoperation
(die im allgemeinen als Quantisierungswerte bekannt
sind), und die Aufbereitungsbewertungsoperationen alles Punkt-
Multiplikationsoperationen sind. Wenn b, c, d, e die Ausgangswerte
der Schritte B, C, D bzw. E sind, dann gilt
c (i,j) = b (i,j) * q (i,j)
d (i,j) = c (i,j) * r (i,j) = b (i,j) * q (i,j) * r (i,j)
e (i,j) = d (i,j) * u (i,j) = b (i,j) * q (i,j) * r (i,j) * u (i,j)
d (i,j) = c (i,j) * r (i,j) = b (i,j) * q (i,j) * r (i,j)
e (i,j) = d (i,j) * u (i,j) = b (i,j) * q (i,j) * r (i,j) * u (i,j)
oder
e (i,j) = b (i,j) * all (i,j)
wobei ist:
all (i,j) = q (i,j) * r (i,j) * u (i,j) (8)
und q (i, j) der Ratenscalar ist, r (i, j) psychoadaptiv ausgewählte
(oder sogar vom Benutzer ausgewählte) Quantisierungsbewertungen
sind, und u (i, j) Aufbereitungs-(deblurring-)Bewertungen
sind. In ähnlicher Weise können Schritte H und I verknüpft
werden.
Dies bedeutet in Wirklichkeit, daß die Ratenvormierung adaptive
Bewertungs- und Aufbereitungsfunktionen mit keinem zusätzlichen
Rechen-Overhead versehen sind. Wie vorstehend bereits
erwähnt, ist diese Lösung bei den "schnelleren" Algorithmen
wie dem von Lee, nicht anwendbar.
B) Da der Chen-Algorithmus mit irgendwelchen Parametern a,
b, c und r arbeitet, können Werte gewählt werden, welche eine
Qualität und Verdichtung ähnlich der DCT-Transformation bieten,
welche aber zu einer hochschnellen Multiplikation führen.
Die folgenden Parameter sind ziemlich nahe bei denjenigen
der DCT-Transformation gewählt, aber rechnerisch noch
viel wirksamer: a=5,0; b=2,5; c=1,5 und r=0,75. Eine
Multiplikation ist nunmehr durch eine viel einfachere Arithmetik
ersetzt. Ein Multiplizieren mit 5 wird beispielsweise
Kopieren; Verschieben nach links-2; Addieren. Ein Multiplizieren
mit 1,5 wird Kopieren; Verschieben nach rechts-1;
Addieren.
Umgekehrt kann der inverse Zähler eines rationalen Multiplikators
in den kombinierten Multiplikator [q] zerlegt werden.
Folglich kann das Multiplizieren mit 2,5 ein Multiplizieren
mit 5 und 2 für beeinflußte bzw. nicht-beeinflußte Terme
werden.
Bei dieser zuletzt erwähnten Überlegung erfordert ein Handhaben
des Parameters r=0,75 in dem unkomplizierten
Chen-Algorithmus 96 Multiplikationen mit 4 und 32 Multiplikationen
mit 3. Mit Hilfe des Wu-Paolini-Algorithmus in einer
2D-Implementierungs-Verbesserung ist die gesamte Multiplikationsstufe
entfallen, und dies werden dann 36 Multiplikationen
mit 16, 24 Multiplikationen mit 12 und 4 Multiplikationen
mit 9 (bei der inversen Transformation werden 36 Multiplikationen
mit 9, 24 Multiplikationen mit 6 und 4 Multiplikationen
mit 4 verwendet).
Auf Kosten der Rechengeschwindigkeit können Parameterwerte,
die sogar näher der Cosinus-Transformation sind, gewählt
werden. Die Substitutionen b=12/5 und/oder r=17/24 sind
möglich. Eine weitere interessante Alternative ist:
rZeile = 0,708333 (17/24)
rSpalte = 0,7 (7/10)
Hier werden leicht unterschiedliche Transformierte (verschiedene
Parameter r) für die Zeilen und Spalten verwendet. Dies
wird getan, um die Multiplikationen zu vereinfachen, die bei
der Wu-Paolini-Methode abgeleitet worden sind. Hier ergibt
dieses Verfahren 36 Multiplikationen mit 15, 12 Multiplikationen
mit 85/8, 12 Multiplikationen mit 21/2 und 4 Multiplikationen
mit 119/16. (Bei der inversen Transformation werden
36 Multiplikationen mit 119/16, 12 Multiplikationen mit
85/16, 12 Multiplikationen mit 24/4 und 4 Multiplikationen
mit 15/4 verwendet.)
Auf die gerade beschriebene Weise werden alle Multiplikationen
schnell und preiswert durchgeführt, außer für den kombinierten
Multiplikator [q] in dem Verdichter (Kompressor) und für
den kombinierten Multiplikator [q] in dem Dekompressor. Diese
erfordern jeweils eine Multiplikation pro Transformationselement.
Das letztere wird dadurch vereinfacht, daß die Mehrzahl
der Transformationskoeffizienten Null wird und die
meisten der Nicht-Null-Koeffizienten ganze Zahlen ziemlich
nahe bei Null sind, welche speziell gehandhabt werden können.
C) Eine weitere Methode wird angewendet, um die Rechenkosten
des kombinierten [q]-Multiplikators in dem Kompressor zu reduzieren.
Da der "Ratenscaler" tatsächlich ein beliebiger Wert
ist, wird er Punkt für Punkt eingestellt, um allen [q]-Matrix-
Elementen rechnerisch einfache Werte zu geben, z. B.
Potenzen von 2. Diese 64 Einstellungen müssen nur einmal
durchgeführt werden (nachdem die "Ratenscaler"- und Aufbereitungs-(deblurring-)Filter
spezifiziert werden).
Wenn beispielsweise ein Element (C) des kombinierten Multiplikators
und das entsprechende Dekompressions-Multiplikatorelement
(D) sich zu C=0,002773 und D=0,009367
ergeben, kann die Näherung C∼=3/1024=1024=0,002930 gefunden
und verwendet, um die Multiplikation zu vereinfachen.
Dies ergibt C′=3/1024 und D′=D * C/C′∼=0,008866.
Anmerkung:
- a) In dem quantisierten Transformationsraum ist es üblich
und wirksam, die Nicht-Null-Schritte der "AC"-Koeffizientenquantisierung
so zu nehmen, daß sie eine konstante
Breite (w) haben und den Null-Schritt so nehmen,
daß er eine Breite (w * q) hat.
Darüber ist q=2 arithmetisch üblich und ist beinahe optimal für Qualität über einen breiten Bereich von Kompressionsfaktoren. In der Beschreibung ist q=2 genommen ("Doppel-Breite Null"), obwohl die Erfindung alle möglichen q einschließt. - b) Der folgende Algorithmus ist ausgelegt für eine begrenzt-
präzise Zweierkompliment-Binär-Ganzzahl-
Arithmetik außer für die Zwischenbestimmungen in den
Stufen (2), (4) und (8), welche einmal mit hoher Präzisionsarithmetik
ausgeführt werden.
Ferner werden mit der zusätzlichen Ausnahme bei Schritt (9.1) die hier beschriebenen ganzzahligen Multiplikationen hinsichtlich der Kosten und der Geschwindigkeit optimiert. Beispielsweise sind die Multiplikationen zu berücksichtigen durch Nrr * Nrc = Drr′ * Drc′ = 1,75 * 4,25 = 7,4375Durch Wählen der Indentität 7,4375=(8-1) * (1=1/16) wird die Multiplikation mit Verschiebungen und Additionen wirksam durchgeführt. - c) Die Aufbereitungsmultiplikationen (deblurring multiplies)
sind hier beim Schritt 8 dargestellt, sie sollten
jedoch üblicherweise, wenn überhaupt, beim Schritt 4
vorgenommen werden. Bei vielen Anwendungen "weiß" der
Dekompressor nicht, wie und ob das Bild aufzubereiten
ist. Die besten Werte von Thr() hängen von der Eingabeeinrichtung
und dem Aufbereitungsverfahren ab.
Eine empfohlene Näherung muß für den Wert m(i,j) (siehe Schritt 8) in der Kompressionszeit (Schritt 4) berechnet und als Teil des verdichteten Bildes übertragen oder gespeichert werden. - d) Es gibt mehrere Wege, die Berechnungen, welche folgen, parallel bzw. zeitlich sequentiell durchzuführen oder zu verschachteln. Die bevorzugte Methode für eine vorgegebene Hardware-Architektur ist unkompliziert.
Dieser Teil der Anmeldung ist im wesentlichen eine Ausführungsform
der Erfindung, welche in Text und Pseudocode erläutert
wird. Es gibt mehrere Abschnitte, einschließlich einer
Parametrisierung, einer Berechnung von all(i,j) wie in
Gl. (8), eine Ausführung des Hauptteils der Vorwärts-GCT,
ein Berechnen der inversen all(i,j), eine Ausführung des
Hauptteils der inversen GCT.
1. Die Parameter a, b, c und r sind oben dargestellt. Hierbei
gibt es einen r-Wert sowohl für Zeilen und Spalten. Obwohl
die 2D-GCT eine abtrennbare Transformation ist und in zwei
Schritten durchgeführt werden kann, gibt es keine Beschränkung,
die es erfordert, daß sie symmetrisch ist. Daher können
die Nummierfaktoren, wie dargestellt, asymmetrisch sein.
mögliche Kombinationen von Zähler und Nenner, welche gleich den vorstehenden Werten sein können. Der Entwerfer der GCT- Realisierung hat einen Rückstand (leeway) in den tatsächlichen Werten, welche in Addiereranordnung verwendet worden sind. Die Wahlmöglichkeiten von Werten werden in der Endmultiplikationsstufe korrigiert.
mögliche Kombinationen von Zähler und Nenner, welche gleich den vorstehenden Werten sein können. Der Entwerfer der GCT- Realisierung hat einen Rückstand (leeway) in den tatsächlichen Werten, welche in Addiereranordnung verwendet worden sind. Die Wahlmöglichkeiten von Werten werden in der Endmultiplikationsstufe korrigiert.
Zu wählen sind
Als die Parameter der verallgemeinerten Chen-Transformation,
wie oben ausgeführt. Die "Zähler" N und die "Nenner" D müssen
nicht ganzzahlig sein, obwohl sie für ein bequemes Rechnen
so gewählt werden. Unter mehreren brauchbaren Möglichkeiten
ist:
Na = 5 | |
Da = 1 | |
Nb = 3 | Db = 1.25 |
Nc = 1.5 | Dc = 1 |
Nrr = 1.75 | Drr = 2.5 |
Nrc = 4.25 | Drc = 6 |
Nrr′ = 1.25 | Drr′ = 1.75 |
Nrc′ = 3 | Drc′ = 4.25 |
Die Erfindung weist jedoch wieder alle rationalen Näherungen
zu den vorstehenden Tangenswerten auf. Hierdurch werden dann
die benötigten Normierungsfaktoren berechnet.
2. Auch ist zu schreiben:
3. i soll ein Index bei {0,1,2,3,4,5,6,7} sein, die
eine vertikale Position (in dem Bildraum) oder
eine Folge einer vertikalen Änderung (in dem
Transformationsraum) anzeigen.
j soll ein Index bei {0,1,2,3,4,5,6,7} sein, welche eine horizontale Position (in dem Bildraum) oder eine Folge einer horizontalen Änderung (in dem Transformationsraum) anzeigen.
Debl(i,j) bezeichnen die Aufbereitungs-(deblurring-)Faktoren oder Debl()=1, wenn nicht aufbereitet wird.
Thr(i,j) bezeichnet die inversen psychoadaptiven Bewertungen, wie sie beispielsweise von CCITT empfohlen worden sind.
M bezeichnet den "Raten-Normierungsfaktor" (raten- scaler); hier ist M=1 (ungefähr) für typische Verdichtungsraten.
v(i,j) bezeichnet mehrere Luminanzwerte in dem Bildraum (räumlich).
L(i,j) bezeichnet die transformierten Luminanzwerte in dem Transformations-(verdichteten) Raum.
S ist eine beliebige kleine ganze Zahl, welche die arithmetische Präzision in der Rekonstruktion bezeichnet.
j soll ein Index bei {0,1,2,3,4,5,6,7} sein, welche eine horizontale Position (in dem Bildraum) oder eine Folge einer horizontalen Änderung (in dem Transformationsraum) anzeigen.
Debl(i,j) bezeichnen die Aufbereitungs-(deblurring-)Faktoren oder Debl()=1, wenn nicht aufbereitet wird.
Thr(i,j) bezeichnet die inversen psychoadaptiven Bewertungen, wie sie beispielsweise von CCITT empfohlen worden sind.
M bezeichnet den "Raten-Normierungsfaktor" (raten- scaler); hier ist M=1 (ungefähr) für typische Verdichtungsraten.
v(i,j) bezeichnet mehrere Luminanzwerte in dem Bildraum (räumlich).
L(i,j) bezeichnet die transformierten Luminanzwerte in dem Transformations-(verdichteten) Raum.
S ist eine beliebige kleine ganze Zahl, welche die arithmetische Präzision in der Rekonstruktion bezeichnet.
Die psychoadaptiven Wertungen i/Thr(i,j) sollten für jeden
Satz Parameter der verallgemeinerten Chen-Transformation
reoptimiert werden. Jedoch liegen die Parameter bei dem
vorstehend angeführten Schritt (1) hinreichend nahe bei den
CCITT-Parametern, so daß dieselbe Matrix Thr() optimal ist.
4. Im vorliegenden Fall ist g(i,j) äquivalent all(i,j). Es
ist über die 64-Transformationsstellen (i,j) zu iterieren,
um sie nach k(i,j) und s(i,j) aufzulösen, um folgendem zu
genügen:
wobei die rechte Seite so nahe wie möglich bei g(i,j) liegt,
s(i,j) eine ganze Zahl ist und wobei gilt:
g(i,j) = 1.0, k(i,j) in (1,3,5,7,9)
für i + j < 4
für i + j < 4
g(i,j) = 0.9, k(i,j) in (1,3,5)
für i + j < 4
für i + j < 4
g(i,j) = 0.7, k(i,j) = 1
für i + j < 4
für i + j < 4
Zr(i) = i, wenn i = 0, 1, 2 oder 3
Zr(i) = Drr, wenn i = 4, 5, 6 oder 7
Zc(j) = 1, wenn j = 0, 1, 2 oder 3
Zc(j) = Drc, wenn j = 4, 5, 6 oder 7
Zr′(i) = 1, wenn i = 0, 1, 2 oder 3
Zr′(i) = Drr′, wenn i = 4, 5, 6 oder 7
Zc′(j) = 1, wenn j = 0, 1, 2 oder 3
Zc′(j) = Drc, wenn j = 4, 5, 6 oder 7
Zr(i) = Drr, wenn i = 4, 5, 6 oder 7
Zc(j) = 1, wenn j = 0, 1, 2 oder 3
Zc(j) = Drc, wenn j = 4, 5, 6 oder 7
Zr′(i) = 1, wenn i = 0, 1, 2 oder 3
Zr′(i) = Drr′, wenn i = 4, 5, 6 oder 7
Zc′(j) = 1, wenn j = 0, 1, 2 oder 3
Zc′(j) = Drc, wenn j = 4, 5, 6 oder 7
Hierbei sollen die Faktoren g(i,j) unabhängig von der Wahlgröße
die Quantisierung-Abweichung (bias) bilden.
Schritt 5 ist die Pseudocode-Ausführung der Vorwärts-
Transformation. Bei den folgenden Schritten wird eine 2D-
Transformation in einer verschachtelten Form durchgeführt.
Hierbei ist das Bild zu iterieren, indem das Folgende an
jedem (8-mal-8-)Block von Luminanzwerten v(,) durchgeführt
wird:
5.1 Vorbereiten der Werte
M(i,0) = V(i,0) + V(i,7)
M(i,1) = V(i,1) + V(i,6)
M(i,2) = V(i,2) + V(i,5)
M(i,3) = V(i,3) + V(i,4)
M(i,4) = V(i,3) - V(i,4)
M5(i) = V(i,2) - V(i,5)
M6(i) = V(i,1) - V(i,6)
M(i,5) = M6(i) + M5(i)
M(i,6) = M6(i) - M5(i)
M(i,7) = v(i,0) - v(i,7)
für l = 0, 1, 2, . . ., 7
M(i,1) = V(i,1) + V(i,6)
M(i,2) = V(i,2) + V(i,5)
M(i,3) = V(i,3) + V(i,4)
M(i,4) = V(i,3) - V(i,4)
M5(i) = V(i,2) - V(i,5)
M6(i) = V(i,1) - V(i,6)
M(i,5) = M6(i) + M5(i)
M(i,6) = M6(i) - M5(i)
M(i,7) = v(i,0) - v(i,7)
für l = 0, 1, 2, . . ., 7
5.2 Vorbereiten der Werte
H(0,j) = M(0,j) + M(7,j)
H(1,j) = M(1,j) + M(6,j)
H(2,j) = M(2,j) + M(5,j)
H(3,j) = M(3,j) + M(4,j)
H(4,j) = M(3,j) - M(4,j)
H5(j) = M(2,j) - M(5,j)
H6(j) = M(1,j) - M(6,j)
H(5,j) = H6(j) + H5(j)
H(6,j) = H6(j) = H5(j)
H(7,j) = M(0,j) - M(7,j)
für j = 0, 1, 2, . . ., 7
H(1,j) = M(1,j) + M(6,j)
H(2,j) = M(2,j) + M(5,j)
H(3,j) = M(3,j) + M(4,j)
H(4,j) = M(3,j) - M(4,j)
H5(j) = M(2,j) - M(5,j)
H6(j) = M(1,j) - M(6,j)
H(5,j) = H6(j) + H5(j)
H(6,j) = H6(j) = H5(j)
H(7,j) = M(0,j) - M(7,j)
für j = 0, 1, 2, . . ., 7
5.3 Jedes H(i,j) multiplizieren mit
(wenn i = 0, 2, 3 oder 4:)
Nrc, wenn j = 5 oder 6
Drc, wenn j = 4 oder 7
1 (keine Aktion), wenn j = 0, 1, 2 oder 3
Drc, wenn j = 4 oder 7
1 (keine Aktion), wenn j = 0, 1, 2 oder 3
(wenn i = 4 oder 7:)
Drr Nrc, wenn j = 5 oder 6
Drr Drc, wenn j = 4 oder 7
Drr, wenn j = 0, 1, 2 oder 3
Drr Drc, wenn j = 4 oder 7
Drr, wenn j = 0, 1, 2 oder 3
(wenn i = 5 oder 6:)
Nrr Nrc, wenn j = 5 oder 6
Nrr Drc, wenn j = 4 oder 7
Nrr, wenn j = 0, 1, 2 oder 3
Nrr Nrc, wenn j = 5 oder 6
Nrr Drc, wenn j = 4 oder 7
Nrr, wenn j = 0, 1, 2 oder 3
5.4 Vorbereiten der Werte
E(0,j) = H(0,j) + H(3,j)
E(1,j) = H(7,j) + H(5,j)
E(2,j) = H(0,j) - H(3,j)
E(3,j) = H(7,j) - H(5,j)
E(4,j) = H(I,j) + H(2,j)
E(5,j) = H(6,j) - H(4,j)
E(6,j) = H(I,j) - H(2,j)
E(7,j) = H(6,j) + H(4,j)
E(1,j) = H(7,j) + H(5,j)
E(2,j) = H(0,j) - H(3,j)
E(3,j) = H(7,j) - H(5,j)
E(4,j) = H(I,j) + H(2,j)
E(5,j) = H(6,j) - H(4,j)
E(6,j) = H(I,j) - H(2,j)
E(7,j) = H(6,j) + H(4,j)
F(0,j) = E(4,j) + E(0,j)
F(4,j) = E(0,j) + E(4,j)
F(2,j) = Db * E(6,j) + Nb * E(2,j)
F(6,j) = Db * E(2,j) - Nb * E(6,j)
F(1,j) = Da * E(7,j) + Na * E(1,j)
F(7,j) = Da * E(1,j) - Na * E(7,j)
F(3,j) = Dc * E(5,j) + Nc * E(3,j)
F(5,j) = Dc * E(3,j) - Nc * E(5,j)
für j = 0, 1, 2, . . ., 7
F(4,j) = E(0,j) + E(4,j)
F(2,j) = Db * E(6,j) + Nb * E(2,j)
F(6,j) = Db * E(2,j) - Nb * E(6,j)
F(1,j) = Da * E(7,j) + Na * E(1,j)
F(7,j) = Da * E(1,j) - Na * E(7,j)
F(3,j) = Dc * E(5,j) + Nc * E(3,j)
F(5,j) = Dc * E(3,j) - Nc * E(5,j)
für j = 0, 1, 2, . . ., 7
5.5 Vorbereiten der Werte
Z (i,0) = F(i,0) + F(i,e)
Z (i,2) = F(i,0) - F(i,3)
Z (i,4) = F(i,1) + F(i,2)
Z (i,6) = F(i,1) + F(i,2)
Z (i,1) = F(i,7) + F(i,5)
Z (i,3) = F(i,7) - F(i,5)
Z (i,5) = F(i,6) - F(i,4)
Z (i,7) = F(i,6) + F(i,4)
Z (i,2) = F(i,0) - F(i,3)
Z (i,4) = F(i,1) + F(i,2)
Z (i,6) = F(i,1) + F(i,2)
Z (i,1) = F(i,7) + F(i,5)
Z (i,3) = F(i,7) - F(i,5)
Z (i,5) = F(i,6) - F(i,4)
Z (i,7) = F(i,6) + F(i,4)
G(i,0) = Z(i,4) + Z(i,0)
G(i,4) = Z(i,0) - Z(i,4)
G(i,2) = Db * Z(i,6) + Nb * Z(i,2)
G(i,6) = Db * Z(i,2) - Nb * Z(i,6)
G(i,1) = Da * Z(i,7) + Na * Z(i,1)
G(i,7) = Da * Z(i,1) - Na * Z(i,7)
G(i,3) = Dc * Z(i,5) + Nc * Z(i,3)
G(i,5) = Dc * Z(i,3) - Nc * Z(i,5)
für i = 0, 1, 2, . . ., 7
G(i,4) = Z(i,0) - Z(i,4)
G(i,2) = Db * Z(i,6) + Nb * Z(i,2)
G(i,6) = Db * Z(i,2) - Nb * Z(i,6)
G(i,1) = Da * Z(i,7) + Na * Z(i,1)
G(i,7) = Da * Z(i,1) - Na * Z(i,7)
G(i,3) = Dc * Z(i,5) + Nc * Z(i,3)
G(i,5) = Dc * Z(i,3) - Nc * Z(i,5)
für i = 0, 1, 2, . . ., 7
Andernfalls kann die Transformation durch eine eindimensionale
Transformation in zwei Schritten aufgeteilt werden. Das
Folgende ist ein Beispiel eines eindimensionalen Transformationsschrittes.
In Fig. 8 sind diese Schritte dargestellt.
Alle Vielfachen in diesen Gleichungen werden mit Schiebe-
und Addieroperationen durchgeführt.
Um dies zu der Matrixform der GCT in Beziehung zu bringen,
wird ein Beispiel an dem Vektorpunkt Y6 demonstriert.
Y6 = C1 - C4 = (1,25 B1) - (3 B4) = 1,25 (A1-A2) - 3 (A4-A3)
= 1,25 ((X0+X7) - (X3+X4)) - 3 ((X1+X6) - (X2+X5))
= 1,25 X0 - 3 X1 + 3 X2 - 1,25 X3 + 1,25 X4 + 3 X5 - 3 X6 + 1,25 X7
Y6/1,25 = X0 - 2,4 X1 + 2,4 X2 - X3 + X4 + 2,4 X5 - 2,4 X6 + X7
= |1 -b b -1 1 b -b 1| x
wobei b = 2,4 ist. Dies ist die sechste Zeile der Matrix P
in der Gleichung. Das Teilen durch 1,25 ist ein Normierungsfaktor,
welcher in der Ratennormier-(rate scaler)Matrix gesammelt
wird.
Die Zeilendaten eines 8×8-Bildelementblocks durchlaufen
diese Addieranordnung. Die sich ergebenden eindimensionalen
Häufigkeitskomponenten werden umgestellt und durchlaufen
wieder dieselbe Anordnung.
6. Nach dem Schritt 5.5 in jedem Bild-Unterblock und für jede
der 64 Stellen (i,j), wobei k(i,j) und s(i,j) aus Schritte
(4) verwendet werden, wird der folgende Wert vorbereitet:
L(i,j) = G(i,j) * k(i,j) * 2-s(i,j)
wenn aber dies negativ ist (oder i=j=0), ist 1 dazu zu
addieren. Dies Ergebnis ist dann der Transformationskoeffizient
L(i,j).
Anmerkung zu Schritt 6:
Die hier durchgeführten Berechnungen sind einfach, da
Die hier durchgeführten Berechnungen sind einfach, da
- - k(i,j) immer 1, 3, 5, 7 oder 9 und üblicherweise 1 ist
- - eine Multiplikation mit 2 (-s(i,j)) einfach eine Verschiebung nach rechts ist (oder vielleicht eine Verschiebung nach links, wenn M sehr groß gewählt wurde).
Bei Stellenverschiebungen nach rechts wird immer nach unten
gerundet. Tatsächlich wird ein Runden gegen Null gewünscht.
Daher die Klausel "wenn (negativ) 1 hinzuaddieren". Bei der
Addition von 1 wird, wenn i=j=0 ist, auf v(i,j)≧0
vertraut, und es gibt gerade eine Einrichtung, um die Anweisung
von Schritt (9.1) zu vereinfachen.
7. Die Werte L(i,j) sind zu codieren, zu speichern und/oder
zu übertragen. Schließlich werden sie wieder gewonnen und
das Bild wird durch die folgenden Schritte rekonstruiert.
8. Dies ist die Umkehrversion von all(i,j). Dann ist über die
64 Transformationsstellen (i,j) zu iterieren und nach m(i,j)
als der nächstgelegenen ganzen Zahl aufzulösen:
wobei s(i,j) und k(i,j) bei dem Schritt (4) gelöst werden,
und wobei die Ausdrücke "Z" beim Schritt (4) definiert sind.
Ebenso ist A(i,j) als die nächstliegende ganze Zahl zu
wählen:
A(i,j) = m(i,j) * (25-i-j)/64
für i=0 oder j=0
für i=0 oder j=0
Anmerkungen zu Schritt 8:
Die Werte m(i,j) können beim Schritt (4) vorausberechnet und zusammen mit dem verdichteten Bild übertragen worden sein. Dies ist für A(i,j) nicht notwendig, welches nur von Konstanten und m(i,j) abhängt. Bei Anwendungen, bei welchen der "Ratenormierungsfaktor" (rate scaler) und die Aufbereitungsgewichte (deblurring weights) festgelegt sind, sind die Werte m(i,j) und A(i,j) konstant. Der Faktor 2S spiegelt Präzisions-Zusatzbits wieder, welche später durch Stellenverschiebungen nach rechts in den Schritten (9.2) und (10) entfernt werden.
Die Werte m(i,j) können beim Schritt (4) vorausberechnet und zusammen mit dem verdichteten Bild übertragen worden sein. Dies ist für A(i,j) nicht notwendig, welches nur von Konstanten und m(i,j) abhängt. Bei Anwendungen, bei welchen der "Ratenormierungsfaktor" (rate scaler) und die Aufbereitungsgewichte (deblurring weights) festgelegt sind, sind die Werte m(i,j) und A(i,j) konstant. Der Faktor 2S spiegelt Präzisions-Zusatzbits wieder, welche später durch Stellenverschiebungen nach rechts in den Schritten (9.2) und (10) entfernt werden.
Durch die Einstellung auf A(0,0) wird eine Rundungsabweichung
korrigiert, damit die Ausgangswerte darunter ohne eine Rundungskorrektur
verwendet werden können. Wie hier angegeben,
beruht A(0,0) auf der Addition von 1 zu L(0,0) beim Schritt
(6). Die Interpolation "(25-i-j)/64" ist heuristisch,
ist aber annähernd optimal im Sinne eines mittleren quadratischen
Fehlers. Nach einmal, die 20 verschachtelte Version.
9. Über das transformierte Bild wird iteriert, indem das
Folgende an jedem (8×8)-Block von transformierten Luminanzwerten
L(_,_) durchgeführt wird, was beim Schritt (5) hergeleitet
worden ist.
9.1 Vorbereiten der Werte
E(i,j) = L(i,j) * m(i,j) + A(i,j)
für L(i,j) < 0
für L(i,j) < 0
E(i,j) = L(i,j) * m(i,j)- A(i,j)
für L(i,j) < 0
für L(i,j) < 0
E(i,j) = 0
für L(i,j) = 0
für jeweils (i,j), i = 0, 1, 2, . . ., 7 und j = 0, 1, 2, . . ., 7.
für L(i,j) = 0
für jeweils (i,j), i = 0, 1, 2, . . ., 7 und j = 0, 1, 2, . . ., 7.
A(0,0) muß immer hinzuaddiert werden. Durch die Erfindung ist
auch der Fall abgedeckt, bei welchem der Test L(0,0)<0 nicht
gemacht wird und die Schritte (6) und (8) (was freigestellt
ist) vereinfacht werden. In der Praxis sollten kleine Multiplikationen,
z. B. -11<L(i,i)<11 als Spezialfälle erkannt
werden, um den Rechenaufwand einer Multiplikation zu sparen.
9.2 (Um gegebenenfalls die Kosten der Halbleitereinrichtung
zu verringern, sind die Zahlen E(i,j) um eine beliebige Anzahl
von Positionen S1 nach rechts zu verschieben. Diese Verschiebungen
sind in einigen Ausführungen des Verfahrens
"frei". Bei Ausführungen, wo das Verschieben nicht frei ist,
wenn sie wahlweise weggelassen werden, wenn E(i,j) null ist,
oder es können alle Verschiebungen wahlweise ausgeschlossen
werden, indem S1=0 gesetzt wird).
9.3 In der zweidimensionalen Form sind noch einmal die Werte
aufzubereiten:
F(0,j) = E(4,j) + E(0,j)
F(4,j) = E(0,j) - E(4,j)
F(2,j) = Db * E(6,j) + Nb * E(2,j)
F(6,j) = Db * E(2,j) - Nb * E(6,j)
F(1,j) = Da * E(7,j) + Na * E(1,j)
F(7,j) = Da * E(1,j) - Na * E(7,j)
F(3,j) = Dc * E(5,j) + Nc * E(3,j)
F(5,j) = Dc * E(3,j) - Nc * E(5,j)
F(4,j) = E(0,j) - E(4,j)
F(2,j) = Db * E(6,j) + Nb * E(2,j)
F(6,j) = Db * E(2,j) - Nb * E(6,j)
F(1,j) = Da * E(7,j) + Na * E(1,j)
F(7,j) = Da * E(1,j) - Na * E(7,j)
F(3,j) = Dc * E(5,j) + Nc * E(3,j)
F(5,j) = Dc * E(3,j) - Nc * E(5,j)
H(0,j) = F(0,j) + F(2,j)
H(1,j) = F(4,j) + F(6,j)
H(2,j) = F(4,j) - F(6,j)
H(3,j) = F(0,j) - F(2,j)
H(4,j) = F(7,j) - F(5,j)
H5(j) = F(1,j) + F(5,j)
H6(j) = F(1,j) - F(3,j)
H(5,j) = H6(j) + H5(j)
H(7,j) = F(1,j) + F(3,j)
für j = 0, 1, 2, . . ., 7
H(1,j) = F(4,j) + F(6,j)
H(2,j) = F(4,j) - F(6,j)
H(3,j) = F(0,j) - F(2,j)
H(4,j) = F(7,j) - F(5,j)
H5(j) = F(1,j) + F(5,j)
H6(j) = F(1,j) - F(3,j)
H(5,j) = H6(j) + H5(j)
H(7,j) = F(1,j) + F(3,j)
für j = 0, 1, 2, . . ., 7
9.4 Aufbereiten der Werte:
G(i,0) = H(i,4) + H(i,0)
G(i,4) = H(i,0) - H(i,4)
G(i,2) = Db * H(i,6) + Nb * H(i,2)
G(i,6) = Db * H(i,2) - Nb * H(i,6)
G(i,1) = Da * H(i,7) + Na * H(i,1)
G(i,7) = Da * H(i,1) - NA * H(i,7)
G(i,3) = Dc * H(i,5) + Nc * H(i,3)
G(i,5) = Dc * H(i,3) - Nc * H(i,5)
G(i,4) = H(i,0) - H(i,4)
G(i,2) = Db * H(i,6) + Nb * H(i,2)
G(i,6) = Db * H(i,2) - Nb * H(i,6)
G(i,1) = Da * H(i,7) + Na * H(i,1)
G(i,7) = Da * H(i,1) - NA * H(i,7)
G(i,3) = Dc * H(i,5) + Nc * H(i,3)
G(i,5) = Dc * H(i,3) - Nc * H(i,5)
M(i,0) = G(i,0) + G(i,2)
M(i,1) = G(i,4) + G(i,6)
M(i,2) = G(i,4) - G(i,6)
M(i,3) = G(i,0) - G(i,2)
M(i,4) = G(i,7) - G(i,5)
M5(i) = G(i,7) + G(i,5)
M6(i) = G(i,1) - G(i,3)
M(i,5) = M6(i) - m5(i)
M(i,6) = M6(i) + M5(i)
M(i,7) = G(i,1) + G(i,3)
für i = 0, 1, 2, . . ., 7
M(i,1) = G(i,4) + G(i,6)
M(i,2) = G(i,4) - G(i,6)
M(i,3) = G(i,0) - G(i,2)
M(i,4) = G(i,7) - G(i,5)
M5(i) = G(i,7) + G(i,5)
M6(i) = G(i,1) - G(i,3)
M(i,5) = M6(i) - m5(i)
M(i,6) = M6(i) + M5(i)
M(i,7) = G(i,1) + G(i,3)
für i = 0, 1, 2, . . ., 7
9.5 Jedes M(i,j) multiplizieren mit
(falls i = 0, 2, 3 oder ist:)
Nrc′, wenn j = 5 oder 6
Drc′, wenn j = 4 oder 7
1 (keine Aktion) wenn j = 0, 1, 2 oder 4.
Drc′, wenn j = 4 oder 7
1 (keine Aktion) wenn j = 0, 1, 2 oder 4.
(falls i = 4 oder 7 ist)
Drr′, Nrc′, wenn j = 5 oder 6
Drr′, DRC′, wenn j = 4 oder 7
Drr′, wenn j = 0, 1, 2 oder 3
Drr′, DRC′, wenn j = 4 oder 7
Drr′, wenn j = 0, 1, 2 oder 3
(falls i = 5 oder 6:)
Nrr′, Nrc′, wenn j = 5 oder 6
Nrr′, Drc′, wenn j = 4 oder 7
Nrr′, wenn j = 0, 1, 2 oder 3.
Nrr′, Drc′, wenn j = 4 oder 7
Nrr′, wenn j = 0, 1, 2 oder 3.
9.6 Aufbereiten der Werte:
Z(i,0) = M(i,0) + M(i,7)
Z(i,1) = M(i,1) + M(i,6)
Z(i,2) = M(i,2) + M(i,5)
Z(i,3) = M(i,3) + M(i,4)
Z(i,4) = M(i,3) - M(i,4)
Z(i,5) = M(i,2) - M(i,5)
Z(i,6) = M(i,1) - M(i,6)
Z(i,7) = M(i,0) - M(i,7)
für i = 0, 1, 2, . . ., 7
Z(i,1) = M(i,1) + M(i,6)
Z(i,2) = M(i,2) + M(i,5)
Z(i,3) = M(i,3) + M(i,4)
Z(i,4) = M(i,3) - M(i,4)
Z(i,5) = M(i,2) - M(i,5)
Z(i,6) = M(i,1) - M(i,6)
Z(i,7) = M(i,0) - M(i,7)
für i = 0, 1, 2, . . ., 7
9.7 Aufbereiten der Werte
Y(0,j) = Z(0,j) + Z(7,j)
Y(1,j) = Z(1,j) + Z(6,j)
Y(2,j) = Z(2,j) + Z(5,j)
Y(3,j) = Z(3,j) + Z(4,j)
Y(4,j) = Z(3,j) - Z(4,j)
Y(5,j) = Z(2,j) - Z(5,j)
Y(6,j) = Z(1,j) - Z(6,j)
Y(7,j) = Z(0,j) - Z(7,j)
für j = 0, 1, 2, . . ., 7
Y(1,j) = Z(1,j) + Z(6,j)
Y(2,j) = Z(2,j) + Z(5,j)
Y(3,j) = Z(3,j) + Z(4,j)
Y(4,j) = Z(3,j) - Z(4,j)
Y(5,j) = Z(2,j) - Z(5,j)
Y(6,j) = Z(1,j) - Z(6,j)
Y(7,j) = Z(0,j) - Z(7,j)
für j = 0, 1, 2, . . ., 7
10. Nach dem Schritt 9.7 in jedem Bild-Unterblock und für
jede der 64 Stellen (i,j) ist der Wert aufzubereiten.
V(i,j) = Y(i,j) * 2S1-S
wobei S und S1 beliebige ganze Zahlen sind, welche bei den
Schritten (7) und (9.2) definiert sind. Die Multiplikation
ist in Wirklichkeit eine Verschiebung nach rechts.
11. In Abhängigkeit von Systembesonderheiten kann nunmehr
eine Bereichüberprüfung notwendig sein. Wenn beispielsweise
der zulässige Luminanzbereich 0≦v(i,j)≦255 ist, dann
sollten Werte von v(i,j), welche kleiner als 0 und größer
als 255 sind, durch 0 bzw. 255 ersetzt werden. Die Werte
v(i,j) sind die nunmehr rekonstruierten Bildluminanzwerte.
Üblicherweise wird der Primärprozeß durch zusätzliche Maßnahmen
ergänzt, um die Verdichtung oder Bildqualität zu
verbessern. Nach dem Schritt 10 kann die Bildgenauigkeit dadurch
verbessert werden, daß alle Bildelementpaare
V(8I+7,j), V(8I+8,j) und alle Bildelementpaare
V(k, 8J+7), v(i, 8J+8) (d. h. benachbarte Bildelemente,
welche auf gesonderte Bildblöcke aufgeteilt wurden) iteriert
werden bzw. ihre Werte v1, v2 beispielsweise um
inkrementiert bzw. dekrementiert
werden, wobei M der Raten-Normierfaktor ist, welcher beim
Schritt (4) verwendet worden ist und wobei der Ausdruck in
dem Nenner wieder eine geeignete Annäherung an das Optimale
ist.
Vor einem Durchführen des Schritts (6) kann die subjektive
Schwierigkeit des lokalen Bildbereichs vorzugsweise in einen
von drei Typen, nämlich eine einfache, eine doppelte oder
eine vierfache Genauigkeit mit dem Vorsatzcode ′0′, ′10′,
bzw. ′11′ klassifiziert werden. Die Rechnung beim Schritt
(6) wird nunmehr ersetzt durch
wobei p=0, 1 oder 2 für eine einfache, doppelte bzw. vierfache
Genauigkeit steht. Dies wird später beim Schritt 9.2
kompensiert, bei welchem die zusätzliche Genauigkeit mit
einer (größeren) Verschiebung nach rechts entfernt werden
muß.
Leider ist kein sehr effektives, einfaches Klassifikationsschema
gefunden worden. Gegenwärtig wird ein beschwerliches
Schema verwendet, bei welchem die Schwierigkeits-Maßnahme
P von vier Quellen abgeleitet wird:
- a) P_links und P_oben, die Schwierigkeitsmaßnahmen von benachbarten Bildbereichen;
- b) sum(i+j)G(i,j)′2)/sum(G(i,j)′2, der Transformations- Energie-Bitversatz (transform energy skew)
- c) -G(0,0), die inverse mittlere Luminanz, und
- d) max(Summe über festgelegte Breite (sum_over_fixed_with) (Histogramm (v(i,j)))), die Einheitlichkeit.
Beim Schritt (7) können die Transformationsdaten L(,), welche
zu speichern oder zu übertragen sind, mit Hilfe einer Entropie-
Codiermethode weiter reduziert werden. Die Anmelderin verwendet
und empfiehlt eine Ausarbeitung des CCITT-Zick-Zack-
Run-and-Template-Code mit mehreren vorgegebenen Huffman-Tabellen
in Abhängigkeit von der Bitrate. Im folgenden Abschnitt
wird ein derartiges Beispiel ausführlich behandelt.
Ein verdichtetes Bild wird dargestellt durch
- ) Vorwort bzw. -spann (Bildbreite, -höhe, Ratennormierfaktor M, usw.)
- 2) Bildelementblock 0
Bildelementblock 1
Bildelementblock 2
. . .
Bildelementblock N-1 - 3) Nachwort bzw. -spann (wenn überhaupt)
wenn jeder Bildelementblock dargestellt ist durch
- 1) einen Präzisionscode (welcher durch einen Zusatzschritt Z festgelegt worden ist)
- 2) einen Gleichstrom-Koeffizienten-Deltacode
- 3) einen Wechselstrom-Koeffizientencode (der null- oder mehrmals wiederholt wird)
- 4) einen Endblock-Code,
wobei jeder Wechselstrom-Koeffizientencode dargestellt ist
durch
- 1) eine Neun-Null-Dehnung (die E-mal wiederholt worden ist, E 0)
- 2) einen Run-Template-Code, der (R, T) anzeigt
- 3) ein Vorzeichen eines Koeffizientenwerts (1 Bit)
- 4) einen Absolutwert des Koeffizienten, wobei das höchstwertige Bit gelöscht ist (T Bits)
wobei R+(*E die Anzahl an nullwertigen Koeffizienten ist,
welche dieser Eins in einer "Zickzack"-Reihenfolge vorangehen
(eine Folge, die auf der Summe i+j basiert) und wobei T
die Bit-Position des höchstwertigen Bits (MSB) des Absolutwerts
des Koeffizienten beispielsweise T=3 ist, wenn der
Koeffizient 11 oder -11 ist:
Bitposition: 876543210
11 = 000001011 (Binär)
- höchstwertiges Bit
11 = 000001011 (Binär)
- höchstwertiges Bit
Eine Wahl oder ein Kodieren des Gleichstrom-Koeffizienten-
Deltacodes
wird im einzelnen nicht erläutert; jedoch wird
ein Beispiel eines Huffman-Codes gegeben, welcher bei höheren
Bitraten für den Wechselstrom-Run-And-Template-Code brauchbar
ist.
wobei (0) n aufeinanderfolgende Nullen, n=0, 1, 2, 3 . . . bezeichnet,
xx 2 Bits bezeichnet, die als w = 0, 1, 2 oder 3 interpretiert
werden, und x ein 1-Bit bezeichnet, das als w=0 oder 1 interpretiert
wird.
Die vorhergehende Methode kann bei einer größeren, verallgemeinerten
Chen-Transformation, nämlich bei 8 mal 16 oder
16 mal 16, angewendet werden. Bei der Methode, die Chen-Transformation
weiter zu verallgemeinern, sollte klar sein, daß
die 1D-16-Punkt-GCT-Transformation (mit Reihen in "Schmetterlings-
Ordnung" und ohne die notwendigen Normier-Nachmultiplikationen)
gegeben ist durch:
GCT_16 (a, b, c, e, f, g, h, r, s, t) =
wobei
GCT8 (a, b, c, r) =
und wobei GQ8 (e, f, g, h, r, s, t) =
Hierbei sind die "wahren Cosinus"-Parameter:
g = tan 15pi/32 ≅ 10,1532
a = tan 14pi/32 ≅ 5,0273
f = tan 13pi/32 ≅ 3,2966
b = tan 12pi/32 ≅ 2,4142
g = tan 11pi/32 ≅ 1,8709
c = tan 10pi/32 ≅ 1,4966
h = tan 9pi/32 ≅ 1,2185
r = cos 8pi/32 ≅ 0,7071
t = cos 12pi/32 ≅ 0,3827
s = cos 4pi/32 = t * b
a = tan 14pi/32 ≅ 5,0273
f = tan 13pi/32 ≅ 3,2966
b = tan 12pi/32 ≅ 2,4142
g = tan 11pi/32 ≅ 1,8709
c = tan 10pi/32 ≅ 1,4966
h = tan 9pi/32 ≅ 1,2185
r = cos 8pi/32 ≅ 0,7071
t = cos 12pi/32 ≅ 0,3827
s = cos 4pi/32 = t * b
Die verwendeten Parameter sind:
e = 10
a = 5
f = 3,25
b = 2,4
g = 1,875
c = 1,5
h = 1,25
r = 17/240,708333
r = 17/240,708333
t = 5/13 ≅ 0,384615
s = t * b = 12/13
a = 5
f = 3,25
b = 2,4
g = 1,875
c = 1,5
h = 1,25
r = 17/240,708333
r = 17/240,708333
t = 5/13 ≅ 0,384615
s = t * b = 12/13
Die Umkehr von GQ8 (e, f, g, h, r, s, t) ist die Transponierte
von GQ8 (e, f, g, h, 1/2r, t′ b, t′)
wobei b = s/t und t′ = 1/t+t*b*b) ist.
wobei b = s/t und t′ = 1/t+t*b*b) ist.
Die Cosinus-Transformation (a = 5,02734, b = 2,41421,
c = 1,49661, r = 0,70711):
Diesbezügliche Chen-Transformation (a = 5,0; b = 2,4;
c = 1,5; r = 0,7)
Nunmehr wird eine erfindungsgemäße Einrichtung im einzelnen
beschrieben. Im folgenden wird der Ausdruck "Punkt" (point)
verwendet, um ein Normier-(Scaler)Register oder einen Datenweg
beliebiger Präzision, üblicherweise 8 bis 12 Bits zu
bezeichnen. Ein Verfahren, um eine entsprechende Präzision
festzusetzen, ist bekannt (siehe Jalali and Rao "Limited
Wordlength and FDCT Processing Accuracy", "IEEE ASSP-81",
Vol. III, Stn 1180-2).
Bei der Software-Methode werden die Transformationsstufen
kombiniert, und die Wu-Paolini-Verbesserung wurde angewendet.
Für die Halbleiter-Einrichtung ist es einfach bequemer,
zwei 8-Punkt-Transformationseinheiten vorzusehen, und zwar
jeweils eine für die vertikalen und die horizontalen Richtungen.
Es ist eine 6-Punkt-Schiebeanordnung zwischen den
vertikalen und horizontalen Transformationen vorzusehen und
eine entsprechende Pufferung zwischen dem Transformationsabschnitt
und dem Codierabschnitt.
Obwohl die Erfindung eine monochromatische Einrichtung und/
oder gesonderte Einrichtungen für die Kompression und Dekompression
vorsieht, hat eine bevorzugte Ausführungsform
(Fig. 7) einen Kompressor-Verdichter (Fig. 1A) und einen
Dekompressor (Fig. 1B), welche mit dreifarbigen Daten arbeiten.
Daten werden dem Verdichter (Fig. 2A) in Vektoren von
8 Bildelementen zugeführt, welche ferner in einer lexikographischen
Reihenfolge in Blöcken von 64 Bildelementen angeordnet
sind. Die Blöcke werden einer Pipeline-Verarbeitung unterzogen
(Fig. 2B).
Ein Bildelement-Eingang an dem Verdichter weist "R"-(Rot-),
"G"-(Grün-) und "B"-(Blau-)Normierungsfaktoren (Scalers)
auf. Diese werden unmittelbar in einem Luminanz-Chrominanz-
Raum transformiert (die Gründe für eine derartige Transformation
sind bekannt).
Bei der Transformation können willkürliche fest oder programmierbare
Koeffizienten (Fig. 3A) verwendet werden, oder es
kann in einfachen Werten in einer dedizierten Anwendung (Fig. 3B)
"fest verdrahtet" werden. Der Transformationsraum ist
hier als XYZ bezeichnet; es kann auch irgendeine lineare
Form der dreifarbigen Eingabe, vielleicht der CCITT-Standard:
(Y, R-Y, B-Y), verwendet werden. Die drei Werte X, Y, Z sind
dann jeweils gesonderten Schwarzweiß-(monochromen)Verdichtern
zugeführt. Der Dekompressor benutzt dieselbe oder eine ähnliche
Schaltungsanordnung wie in Fig. 3, außer daß nunmehr
ein XYZ-Vektor in einen RGB-Vektor transformiert wird.
Die Werte Y, X und Z werden dann in drei Schieberegister
(Fig. 5) eingegeben, um auf die Abgabe an die erste Transformationseinheit
zu warten. Die Transformationseinheit wirkt
auf 2,6 Bildelemente, so daß einige der Daten, wie dargestellt,
stark verzögert werden. Die Bezeichnung "XYZ" ist
ein bißchen unglücklich; bei optimierten Codierverfahren
muß die Luminanz ("Y") zuerst verarbeitet werden.
Während des Dekomprimierens ist das Problem bei dem XYZ-
Versatz umgekehrt. In der bevorzugten Ausführungsform werden
dadurch, daß während des Dekomprimierens die Benutzung von
Y- und Z-Schieberegistern umgekehrt wird, 5 Registerstellen
gespart.
In Fig. 1A weisen die Hauptabteilungen des Verdichters einen
Eingabeabschnitt (1, 2) auf, welcher die Eingangswerte in den
XYZ-Raum transformiert und ihn für einen anschließenden
Transfer an die Transformationseinheit 3 puffert. Für jeweils
acht Bildelement-Zeiten muß die Transformationseinheit dreimal
zyklisch durchlaufen werden (einmal für jeden X-, Y-
und Z-Datenwert). Der Ausgangswert von der Transformationseinheit
3 wird an das Schiebearray 4 angelegt, wo es zurückgehalten
wird, bis der 8×8-Bildelementenblock vollständig
gelesen worden ist. Die zweite Transformationseinheit (5, 6)
verarbeitet den vorher gelesenen Bildelementblock, der sie
wieder dreimal zyklisch durchläuft und liefert Daten an den
Codierer-Eingabepuffer (7, 8). Der Codierer (9, 10, 11) wird
für die drei Farbkoordinaten gemeinsam benutzt; jedoch wird
der gesamte Luminanzblock ohne Unterbrechung codiert. Anschließend
wird jeder der Chrominanzblöcke verarbeitet. Wenn
die Verarbeitung dieser drei Blöcke innerhalb von 64 Bildelement-
Zeiteinheiten nicht beendet werden kann, hält eine
Synchronisier- und Steuerlogik den Bildelementtakt an der
externen Eingabeschaltung an. Die Speicherbereiche (in dem
Eingangsschieberegister 2, dem Schiebearray 4 und den Codierer-
Eingabepuffern (7, 8) muß für die drei Farben verdreifacht
werden; die Recheneinheiten (3, 5, 6, 9, 10, 11) werden
(im Zeitmultiplex) von den Y-, X- und Z-Daten gemeinsam genutzt.
Der Codierer (9, 10, 11), der Codierer Eingabepuffer (7, 8),
die Code-Programmiereinheiten (12, 13, 14) und eine (nicht
dargestellte) Synchronisier- und Steuerlogik können gemäß dem
bestehenden Stand der Technik folgen. Genauso ist das Verfahren
für ein Zeit-Multiplexen von drei Farben durch eine
einzige Schaltung bekannt. Ebenso sind der 3-Stellen-Transformationsabschnitt
(1; Fig. 3) und die Schieberegister
(2; Fig. 5) bekannt.
Die Normiereinheit (Scaler) 6 benutzt einen programmierten
RAM oder ROM und ein System von (impliziten) Schiebeeinheiten,
Multiplexern und Addierern. Dies ergibt eine unkomplizierte
Realisierung. Aufgrund der Definition der verallgemeinerten
Chen-Transformation und der entsprechenden Parameter
ist auch die Ausführung des 8-Stellen-Transformators
(Fig. 8) unkompliziert.
Das Schiebe-Array (Fig. 6A) wird nachstehend im einzelnen
erläutert. Vertikale (transformierte) Vektoren aus dem laufenden
Eingabe-Bildelementeblock werden zusammengesetzt,
während horizontale Vektoren aus dem vorherigen Bildelementblock
an den horizontalen Transformator oder Wandler übergeben
werden. Ohne eine spezielle Ausführung würde dies
128 Register erfordern (und zwar jeweils 64 für den augenblicklichen
und den vorherigen Block), da die Punkte in
einer Reihenfolge verwendet werden, welche sich von der
empfangenen Reihenfolge unterscheidet. Dies ist jedoch nicht
notwendig, da die Daten während der geradzahligen Bildelement-
Blöcke von links nach rechts und während der ungradzahligen
Bildelement-Blöcke von oben nach unten geschoben
werden. Das beschriebene Shift-Array ist zwei-gerichtet.
Ein vier-gerichtetes Schiebearray wird in einigen Ausführungsformen
bevorzugt.
In Fig. 6B ist im einzelnen das Schiebe-Array der Fig. 6A
dargestellt. In Fig. 6B werden Vektoren aus dem Schiebe-Array
an dessen Unterseite einzeln entnommen und an den DCT8-Abschnitt
der Fig. 1A abgegeben. Inzwischen werden vertikale
Vektoren von dem anderen DCT8-Abschnitt von oben in das
Schiebe-Array eingegeben. Allmählich werden dadurch die
alten Vektoren aus dem Schiebe-Array entfernt und das Schiebe-
Array wird vollständig mit vertikalen Vektoren von dem nächsten
Bildelementblock gefüllt.
Für den nächsten Bildelementblock unterscheidet sich die
Datenflußrichtung um 90° bezüglich der Datenflußrichtung in
einem vorhergehenden Bildelementblock. Auf diese Weise werden
die horizontalen Vektoren auf der rechten Seite der
Schiebe-Anordnung entnommen und an den DCT8-Abschnitt abgegeben,
während die neuen vertikalen Vektoren der linken
Seite hereinkommen. Bei einem Block N+2 wird durch eine
weitere 90°-Drehung zu der Ausgangsform zurückgekehrt usw.
Der Dekompressor (Fig. 1B) hat einen Aufbau, welcher demjenigen
des Verdichters (in Fig. 1A) ziemlich entspricht, außer
daß die Datenflußrichtung umgekehrt wird. In einer bevorzugten
Ausführungsform arbeitet eine einzige Einrichtung in
zwei Betriebsarten, nämlich entweder als Verdichter bzw.
Kompressor oder als ein Dekompressor.
Mögliche VLSI-Auslegungen (Fig. 4A, 4B) führen zu verschiedenen
Datenflüssen für eine Verdichtung (Fig. 4A, 4B) und
für eine Dekompression (Fig. 4A, 4B). Der Betrieb der
Transformations- und Schiebe-Array-Einheiten hat dieselbe
Richtung für die Kompression und für die Dekompression in
der einen Auslegung (Fig. 4B), aber nicht in der anderen Auslegung
(Fig. 4A). Dies ist deutlicher zu sehen, wenn der kombinierte
Kompressor-/Dekompressor-Datenfluß (Fig. 7) in Betracht
gezogen wird. Wenn die zwei Transformationseinheiten
den RGB- bzw. verdichteten Daten zugeordnet werden, ergeben
sich bei der Auslegung Schwierigkeiten, wenn nicht ein vier-
gerichtetes Schiebe-Array verwendet wird. Folglich sind die
zwei Transformationseinheiten mit den Eingangs- bzw. Ausgangsabschnitten
des Schiebe-Array verbunden.
In einer Ausführungsform benutzt die Transformationseinheit,
welche in dem Kompressor verwendet ist (Fig. 8A), 38 Addierereinheiten.
Ein Verschieben nach rechts um eine ("R1")-, zwei
("R2")- oder vier ("R4")-Positionen oder nach links um eine
("L1")-Position ist leicht zu machen. Die beschriebene Schaltung
verwendet die Parameter (a, b, c, r) = (5, 2, 4, 1, 5,
17/24). Eine Ausführung mit b=2,5 würde in einer anderen
Ausführungsform nur 36 Addierglieder erfordern.
Eine entsprechende Schaltung ist für die inverse Transformationseinheit
in dem Dekompressor erforderlich. Bei einer
sorgfältigen Benutzung einer 'Ausgabe-Freigabe'-Signalisierung
können die meisten der Addierglieder in dem Vorwärts-
Transformator wieder verwendet werden. Eine solche
Realisierung ist für einen Fachmann einfach.
Die Normiereinheit (Scaler) benutzt einen programmierten
RAM oder ROM und ein System von impliziten Schiebeeinheiten,
Multiplexern und Addierern. Auch dies ist einfach realisierbar.
Die sogenannte Denormiereinheit (descaler) kann auf verschiedene
Weise realisiert werden, vorzugsweise als eine
kleine festverdrahtete Multipliziereinheit mit RAM, Akkumulator,
Synchronisier- und Steuerlogik usw. In einer dedizierten
preiswerten Anwendung kann die sogenannte Denormiereinheit
(descaler) dadurch vereinfacht werden, daß Aufbereitungs-
(deblurring)Gewichte bzw. Wertigkeiten über einen
breiten Bereich nahezu optimal sind; folglich kann eine
einfache Normierung, wie in der Normiereinheit verwendet
werden. Die Denormiereinheit (descaler) kann entweder zwischen
dem Codierer und seinem Ausgangspuffer oder zwischen dem
Ausgangspuffer und einem Transformator angeordnet sein, wie
in Fig. 1 und 7 dargestellt ist. Der Codierer-Eingangspuffer
kann auf verschiedene Weise realisiert werden, so beispielsweise
als eine Register-Reduzieranordnung mit einem zyklischen
Sharing, was dem Schiebe-Array entspricht. Bei einer
unkomplizierten Ausführung ist ein 384 mal 10-Bit-RAM
mit einem 64 mal 7-Bit-ROM verwendet, um die RAM-Adressen zu
schaffen.
Ein Beispiel eines Betriebszyklus wird nunmehr in Verbindung
Fig. 1A und 1B beschrieben. In Fig. 1A werden Daten in den
Verdichter als eine Dreifarben-Information, d. h. als rot, grün
und blau eingegeben. Sie werden unmittelbar in einem Ausweichraum
transformiert, welcher als XYZ bezeichnet ist. Die
drei Elemente X, Y und Z werden jeweils in ihr eigenes Schieberegister
eingegeben.
Von dem Schieberegister (Schritt 2) gehen sie in eine 8-
Stellen-DCT-Einheit. Dies könnte entweder eine 8-Stellen-
DCT-Einheit sein, welche unter den drei Farben X, Y und Z
multiplex betrieben wird, oder sie können jeweils ihre eigene,
individuelle DCT-8-Einheit haben.
Information wird dann in das 64-Stellen-Schiebe-Array 4
eingegeben. Dies ist ein individuelles Schiebe-Array für jede
Farbe. Von dem Schiebe-Array (Block 4) geht es in eine andere
DCT-Einheit (Block 5), welche dem Block 3 entspricht. Die
Information ist dann so normiert, daß sie eine zusätzliche
Schicht einer zusätzlichen Verschiebung ist. Die Information
ist nur sowohl horizontal als auch vertikal transformiert.
Das Schiebe-Array dreht die Daten begrifflich tatsächlich
um 90°, so daß sie nunmehr in die andere Richtung transformiert
werden können. Nachdem die Daten normiert sind, gehen
sie in einen weiteren Puffer, welcher mit Blöcken 7 und 8
(Z1 und Z2) bezeichnet ist, um die Daten zu halten, so daß
sie schließlich decodiert und von dem Chip aus ausgegeben
werden können (wobei Z1, Z2 einem Zickzack gleichkommt).
Begrifflich entspricht dies dem Shift-Array (Block 4),
außer daß nunmehr die Daten nicht um 90° gedreht werden.
Statt dessen werden sie in eine Zickzack-Reihenfolge umgewandelt, welche
üblicherweise für diese Dinge verwendet
wird, und wird dann der CCITT-Standard benutzt. Die Information
wird dann in dem "Run And Template"-Steuerblock
dargestellt, welcher Nullen feststellt und Durchläufe für
die Nullen erzeugt, welcher Nicht-Nullen feststellt und eine
Schätzung des Logarithmus des Wertes erzeugt, welcher als
Schablone (template) bezeichnet wird. Die Kombination
"Run and Template" wird in einem RAM oder einem ROM abgelegt,
was als der RT-Code bezeichnet wird, und wird dann
von dem Chip aus ausgegeben.
Die Mantisse, welche den signifikanten Bits der Transferkoeffizienten
entspricht, wird ebenfalls von dem Chip aus
abgegeben. Da die Mantisse und der "Run And Template"-Code
beliebig lang sind, ein Bit, zwei Bits, was auch immer, und
der Ausgang von dem Chip immer 16 Bits oder 8 Bit, 32 Bit,
was auch immer, sind, erleichtert dies ein (Ausricht-)Block
11.
Die anderen in Fig. 1A dargestellten Blöcke, (wahlweise)
Programmierblöcke 12, 13 und 14 sind vorgesehen, um eine
beliebige RGB- in eine XYZ-Transformation, beliebige Raten-
Normierungen und psychoadaptive Wertungen sowie einen beliebigen,
modifizierten Huffman-Code für den "Run And Template"-
Prozeß durchzuführen. Fig. 1B ist der Fig. 1A sehr ähnlich.
Der "Run And Template"-Code muß nunmehr in eine "Run And
Template"-Kombination decodiert werden, und die notwendige
Anzahl Nullen ist wegzulassen. In Fig. 1A ist die Normiereinheit
eine sehr einfache Anordnung von Addierern und Schieberegistern.
In Fig. 1B ist die Denormiereinheit (descaler) als
eine sehr kleine Multipliziereinheit in Hardware ausgeführt.
In Fig. 9 ist ein Diagramm für eine zweidimensionale, verallgemeinerte
Chen-Transformation hergestellt. Bildelemente
kommen von oben herein und sind üblicherweise 8 Bits groß.
Die Bildelemente durchlaufen eine große Anordnung von Addierern
in dem horizontalen Umformblock 10 mit einer Datenbreite
von üblicherweise 128 Bits; die Ausgangsdaten von dem horizontalen
Umformblock 10 durchlaufen ein Transpositions-RAM 12,
um die Information von horizontal in vertikal zu drehen. Die
Daten laufen dann wieder in den vertikalen Umformblock 16,
welcher wiederum nur Addierer (üblicherweise 128 Bits groß)
aufweist. Die Ausgangskoeffizienten werden schließlich in
ihrer Breite auf ungefähr 16 Bit reduziert und durchlaufen
dann eine einzige Multipliziereinheit 20, welche gemäß der
Erfindung JPEG-kompatibel ist.
In Fig. 10 ist ein Blockdiagramm für eine VLST-Ausführung
gemäß der Erfindung dargestellt. In Fig. 10 kommen die Daten
an einem Block 40 an und werden in dem Eingangs-Signalspeicher
42 gehalten und gelangen über einen Multiplexer 44 in
die erste Hälfte eines GCT-Transformationsblocks 50 (welcher
ein Addierernetz ist). Die zweite Hälfte des Addierernetzes
60 ist rechts von den Mittelstufen-Haltegliedern (midstage
latches) 54. Deren Ausgangsdaten laufen über ein MUX 62 in
den Transpositions-RAM 66, in welchem die horizontale in die
vertikale Transformation durchgeführt wird. Der Ausgang des
Transpositions-RAM 66 ist um die erste Stufe des GCT-Blocks
50 herum rückgekoppelt, um die erste Hälfte der vertikalen
Transformation in einer Zeit-Sharing- oder einer Zeitschachtelungs-
Anordnung durchzuführen. Die Ausgangsdaten des GCT-
Blocks werden an den Eingang der zweiten Stufe der vertikalen
Transformationseinheit 60 angelegt. Schließlich werden die
Ausgangsdaten des GCT-Blockes durch den Multiplexer 70
geleitet und laufen über eine Multipliziereinheit 74 und
eine Rundungseinheit 76 in eine Arrangiereinheit 80 zur
Bildung der Zickzack-Reihenfolge; an deren Ausgang wird ein
12-Bit-Koeffizient 84 abgegeben.
Anhand von Fig. 10 wird nunmehr der inverse Transformationsprozeß
gemäß der Erfindung kurz beschrieben. In Fig. 10 werden
die 12-Bit-Koeffizienten über einen Block 87 an den
Y-Eingang der die Zickzack-Reihenfolge arrangierenden Einheit
80 eingegeben. Die Ausgangssignale der Arrangiereinheit 80
durchlaufen die Multipliziereinheit 74 und die Rundungseinheit
76, in welchem ein inverser Quantisierungsprozeß durchgeführt
wird, welcher dem Prozeß entspricht, welcher bei
dem Vorwärtsprozeß durchgeführt worden ist. Die Ausgangssignale
der Multipliziereinheit 74 werden in den Signalspeicher
42 eingegeben, welcher die erste Stufe des inversen
Transformationsprozesses ist. Von dem Signalspeicher 42 folgt
der inverse Transformationsprozeß demselben Zweistufen-Zeitmultiplexweg,
welchem bei dem Vorwärtsprozeß gefolgt worden
ist. Die Ausgangssignale erscheinen an den Ausgabe-Haltegliedern
70, deren Ausgang Bildelemente sind, welche durch
die Rundiereinheit 76 gerundet werden, deren Ausgang dem
Block 40 zugeführt wird.
Vorstehend ist nur eine bevorzugte Ausführungsform der Erfindung
beschrieben. Die Erfindung ist auch mit vorhandenen
Standards, wie JPEG kompatibel. Die bevorzugte Ausführungsform
wurde gewählt und beschrieben, um so das Prinzip
der Erfindung und deren praktische Anwendungsmöglichkeiten
zu erläutern, um dadurch anderen Fachleuten eine bestmögliche
Benutzung der Erfindung aufzuzeigen.
Claims (8)
1. Einrichtung zum Verdichten von Bildern, gekennzeichnet
durch
eine horizontale Transformations-Einrichtung, um eingegebene Bildelemente mit einer bestimmten Bitbreite aufzunehmen und um die eingegebenen Bildelemente nur mit einer Addierer- Anordnung horizontal zu transformieren;
einen Transpositionsspeicher, um die horizontalen, transformierten Bildelemente in vertikale zu drehen und
eine einzige Multipliziereinheit, um die transformierten, vertikalen Bildelemente aufzunehmen und um eine einzige Multiplikation an den transformierten vertikalen Bildelementen durchzuführen, um so verdichtete Bildelementdaten zu schaffen, welche die eingegebenen Bildelemente darstellen.
eine horizontale Transformations-Einrichtung, um eingegebene Bildelemente mit einer bestimmten Bitbreite aufzunehmen und um die eingegebenen Bildelemente nur mit einer Addierer- Anordnung horizontal zu transformieren;
einen Transpositionsspeicher, um die horizontalen, transformierten Bildelemente in vertikale zu drehen und
eine einzige Multipliziereinheit, um die transformierten, vertikalen Bildelemente aufzunehmen und um eine einzige Multiplikation an den transformierten vertikalen Bildelementen durchzuführen, um so verdichtete Bildelementdaten zu schaffen, welche die eingegebenen Bildelemente darstellen.
2. Verfahren zum Verdichten von Bildern, dadurch gekennzeichnet,
daß eingegebene Bildelemente mit
einer bestimmten Bitbreite aufgenommen und nur mit einer
Addiereranordnung horizontal transformiert werden;
die horizontal transformierten Bildelemente in vertikale gedreht werden;
die vertikalen Bildelemente aufgenommen und nur mit einer zweiten Addiereranordnung vertikal transformiert werden, und
die transformierten, vertikalen Bildelemente aufgenommen und an den transformierten, vertikalen Bildelementen eine einzige Multiplikations-Funktion durchgeführt wird, um verdichtete Bildelementdaten zu schaffen, welche die eingegebenen Bildelemente darstellen.
die horizontal transformierten Bildelemente in vertikale gedreht werden;
die vertikalen Bildelemente aufgenommen und nur mit einer zweiten Addiereranordnung vertikal transformiert werden, und
die transformierten, vertikalen Bildelemente aufgenommen und an den transformierten, vertikalen Bildelementen eine einzige Multiplikations-Funktion durchgeführt wird, um verdichtete Bildelementdaten zu schaffen, welche die eingegebenen Bildelemente darstellen.
3. Bildverdichtungssystem, gekennzeichnet
durch
eine Einrichtung zum Aufnehmen von eingegebenen Bildelementdaten, welche ein Bild darstellen, und
eine Einrichtung zum Durchführen einer verallgemeinerten Chen-Transformation (GCT), um die Bilddaten zu verdichten,
wobei die GCT-Einrichtung eine GCT-Addiereinrichtung, um die Bilddaten nur mit Addierern horizontal zu transformieren, und einen Transpositionsspeicher aufweist, um die horizontal transformierten Bildelemente in vertikale zu drehen,
wobei die GCT-Addiereinrichtung eine Einrichtung, um die vertikalen Bildelemente nur mit Addierern vertikal zu transformieren, und eine Multipliziereinheit aufweist, um eine Multiplikationsfunktion an den transformierten, vertikalen Bildelementen durchzuführen, um verdichtete Bildelementdaten zu schaffen, welche die eingegebenen Bildelemente darstellen.
eine Einrichtung zum Aufnehmen von eingegebenen Bildelementdaten, welche ein Bild darstellen, und
eine Einrichtung zum Durchführen einer verallgemeinerten Chen-Transformation (GCT), um die Bilddaten zu verdichten,
wobei die GCT-Einrichtung eine GCT-Addiereinrichtung, um die Bilddaten nur mit Addierern horizontal zu transformieren, und einen Transpositionsspeicher aufweist, um die horizontal transformierten Bildelemente in vertikale zu drehen,
wobei die GCT-Addiereinrichtung eine Einrichtung, um die vertikalen Bildelemente nur mit Addierern vertikal zu transformieren, und eine Multipliziereinheit aufweist, um eine Multiplikationsfunktion an den transformierten, vertikalen Bildelementen durchzuführen, um verdichtete Bildelementdaten zu schaffen, welche die eingegebenen Bildelemente darstellen.
4. Bildverdichtungssystem nach Anspruch 3, dadurch gekennzeichnet,
daß die GCT-Addiereinrichtung eine
erste GCT-Addierer-Netzwert-Stufe, um die erste Hälfe der
horizontalen und vertikalen Transformationen umzuarbeiten,
und eine zweite GCT-Addierer-Netzwerk-Stufe aufweist, um
die zweite Hälfte der horizontalen und vertikalen Transformationen
umzuarbeiten.
5. Bildverdichtungssystem nach Anspruch 4, dadurch
gekennzeichnet, daß die ersten und zweiten
Einrichtungen die Bildelemente in einer Zeit-Sharing-Anordnung
horizontal und vertikal transformieren.
6. Bildverdichtungssystem nach Anspruch 5, dadurch
gekennzeichnet, daß die Multipliziereinheit
eine Zickzack-Reihenfolge arrangierende Einrichtung aufweist.
7. Bildverdichtungssystem nach Anspruch 6, dadurch
gekennzeichnet, daß die Multipliziereinheit eine
Rundungseinrichtung aufweist.
8. Bildverdichtungssystem nach Anspruch 7, dadurch
gekennzeichnet, daß die Multipliziereinheit
eine Multipliziertabellen-Einrichtung aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/743,517 US5319724A (en) | 1990-04-19 | 1991-08-09 | Apparatus and method for compressing still images |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4133460A1 true DE4133460A1 (de) | 1993-04-15 |
DE4133460C2 DE4133460C2 (de) | 1997-04-30 |
Family
ID=24989089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4133460A Expired - Fee Related DE4133460C2 (de) | 1991-08-09 | 1991-10-09 | Verfahren zum Verdichten von Bildern |
Country Status (3)
Country | Link |
---|---|
US (1) | US5319724A (de) |
DE (1) | DE4133460C2 (de) |
GB (1) | GB2259215B (de) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4306010A1 (de) * | 1992-02-28 | 1993-09-23 | Ricoh Kk | |
EP1359546A1 (de) * | 2002-05-02 | 2003-11-05 | Microsoft Corporation | 2D-Transformationen zur Bild- und Videokodierung |
US7106797B2 (en) | 2001-09-18 | 2006-09-12 | Microsoft Corporation | Block transform and quantization for image and video coding |
US7487193B2 (en) | 2004-05-14 | 2009-02-03 | Microsoft Corporation | Fast video codec transform implementations |
US7546240B2 (en) | 2005-07-15 | 2009-06-09 | Microsoft Corporation | Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition |
US7689052B2 (en) | 2005-10-07 | 2010-03-30 | Microsoft Corporation | Multimedia signal processing using fixed-point approximations of linear transforms |
US8942289B2 (en) | 2007-02-21 | 2015-01-27 | Microsoft Corporation | Computational complexity and precision control in transform-based digital media codec |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594812A (en) * | 1990-04-19 | 1997-01-14 | Ricoh Corporation | Apparatus and method for compressing still images |
US5539836A (en) * | 1991-12-20 | 1996-07-23 | Alaris Inc. | Method and apparatus for the realization of two-dimensional discrete cosine transform for an 8*8 image fragment |
US5721788A (en) | 1992-07-31 | 1998-02-24 | Corbis Corporation | Method and system for digital image signatures |
US6195461B1 (en) * | 1992-12-17 | 2001-02-27 | Sony Corporation | Dynamic image processing apparatus and method |
US5832119C1 (en) | 1993-11-18 | 2002-03-05 | Digimarc Corp | Methods for controlling systems using control signals embedded in empirical data |
US5841978A (en) | 1993-11-18 | 1998-11-24 | Digimarc Corporation | Network linking method using steganographically embedded data objects |
US5841886A (en) | 1993-11-18 | 1998-11-24 | Digimarc Corporation | Security system for photographic identification |
US6614914B1 (en) | 1995-05-08 | 2003-09-02 | Digimarc Corporation | Watermark embedder and reader |
US5748763A (en) | 1993-11-18 | 1998-05-05 | Digimarc Corporation | Image steganography system featuring perceptually adaptive and globally scalable signal embedding |
US6611607B1 (en) | 1993-11-18 | 2003-08-26 | Digimarc Corporation | Integrating digital watermarks in multimedia content |
US5862260A (en) | 1993-11-18 | 1999-01-19 | Digimarc Corporation | Methods for surveying dissemination of proprietary empirical data |
US6983051B1 (en) | 1993-11-18 | 2006-01-03 | Digimarc Corporation | Methods for audio watermarking and decoding |
US5748783A (en) | 1995-05-08 | 1998-05-05 | Digimarc Corporation | Method and apparatus for robust information coding |
US6424725B1 (en) | 1996-05-16 | 2002-07-23 | Digimarc Corporation | Determining transformations of media signals with embedded code signals |
US7171016B1 (en) | 1993-11-18 | 2007-01-30 | Digimarc Corporation | Method for monitoring internet dissemination of image, video and/or audio files |
US5768426A (en) | 1993-11-18 | 1998-06-16 | Digimarc Corporation | Graphics processing system employing embedded code signals |
US5822436A (en) | 1996-04-25 | 1998-10-13 | Digimarc Corporation | Photographic products and methods employing embedded information |
ATE387807T1 (de) | 1993-11-18 | 2008-03-15 | Digimarc Corp | Einbetten eines steganographischen kodes in ein bildsignal |
US5710834A (en) | 1995-05-08 | 1998-01-20 | Digimarc Corporation | Method and apparatus responsive to a code signal conveyed through a graphic image |
US6580819B1 (en) | 1993-11-18 | 2003-06-17 | Digimarc Corporation | Methods of producing security documents having digitally encoded data and documents employing same |
US6516079B1 (en) | 2000-02-14 | 2003-02-04 | Digimarc Corporation | Digital watermark screening and detecting strategies |
US5636292C1 (en) | 1995-05-08 | 2002-06-18 | Digimarc Corp | Steganography methods employing embedded calibration data |
US6122403A (en) | 1995-07-27 | 2000-09-19 | Digimarc Corporation | Computer system linked by using information in data objects |
US6408082B1 (en) | 1996-04-25 | 2002-06-18 | Digimarc Corporation | Watermark detection using a fourier mellin transform |
JPH07152730A (ja) * | 1993-11-30 | 1995-06-16 | Toshiba Corp | 離散コサイン変換装置 |
US5973731A (en) * | 1994-03-03 | 1999-10-26 | Schwab; Barry H. | Secure identification system |
US6522770B1 (en) | 1999-05-19 | 2003-02-18 | Digimarc Corporation | Management of documents and other objects using optical devices |
US5825420A (en) * | 1994-05-06 | 1998-10-20 | National Science Council | Processor for performing two-dimensional inverse discrete cosine transform |
US5719961A (en) * | 1994-07-22 | 1998-02-17 | Apple Computer, Inc. | Adaptive technique for encoder and decoder signal transformation |
US6217234B1 (en) * | 1994-07-29 | 2001-04-17 | Discovision Associates | Apparatus and method for processing data with an arithmetic unit |
US5659362A (en) * | 1994-09-07 | 1997-08-19 | University Of South Florida | VLSI circuit structure for implementing JPEG image compression standard |
US6560349B1 (en) | 1994-10-21 | 2003-05-06 | Digimarc Corporation | Audio monitoring using steganographic information |
US6744906B2 (en) | 1995-05-08 | 2004-06-01 | Digimarc Corporation | Methods and systems using multiple watermarks |
US6721440B2 (en) | 1995-05-08 | 2004-04-13 | Digimarc Corporation | Low visibility watermarks using an out-of-phase color |
US6760463B2 (en) | 1995-05-08 | 2004-07-06 | Digimarc Corporation | Watermarking methods and media |
US6577746B1 (en) | 1999-12-28 | 2003-06-10 | Digimarc Corporation | Watermark-based object linking and embedding |
US6788800B1 (en) | 2000-07-25 | 2004-09-07 | Digimarc Corporation | Authenticating objects using embedded data |
US6408331B1 (en) * | 1995-07-27 | 2002-06-18 | Digimarc Corporation | Computer linking methods using encoded graphics |
US6829368B2 (en) | 2000-01-26 | 2004-12-07 | Digimarc Corporation | Establishing and interacting with on-line media collections using identifiers in media signals |
US6411725B1 (en) | 1995-07-27 | 2002-06-25 | Digimarc Corporation | Watermark enabled video objects |
US6169820B1 (en) * | 1995-09-12 | 2001-01-02 | Tecomac Ag | Data compression process and system for compressing data |
JP2827997B2 (ja) * | 1995-12-28 | 1998-11-25 | 日本電気株式会社 | 画像信号のアダマール変換符号化装置および復号装置 |
US6381341B1 (en) | 1996-05-16 | 2002-04-30 | Digimarc Corporation | Watermark encoding method exploiting biases inherent in original signal |
US5781239A (en) * | 1996-06-20 | 1998-07-14 | Lsi Logic Corporation | System and method for performing an optimized inverse discrete cosine transform with improved efficiency |
US5867598A (en) * | 1996-09-26 | 1999-02-02 | Xerox Corporation | Method and apparatus for processing of a JPEG compressed image |
US5751865A (en) * | 1996-09-26 | 1998-05-12 | Xerox Corporation | Method and apparatus for image rotation with reduced memory using JPEG compression |
US6094453A (en) * | 1996-10-11 | 2000-07-25 | Digital Accelerator Corporation | Digital data compression with quad-tree coding of header file |
US6009192A (en) * | 1996-12-19 | 1999-12-28 | Xerox Corporation | Color correction of a compressed image |
US6850626B2 (en) | 1998-01-20 | 2005-02-01 | Digimarc Corporation | Methods employing multiple watermarks |
US6298166B1 (en) * | 1998-03-30 | 2001-10-02 | Seiko Epson Corporation | Image transformations in the compressed domain |
US6697525B1 (en) | 1998-10-02 | 2004-02-24 | Parthusceva Ltd. | System method and apparatus for performing a transform on a digital image |
US6625297B1 (en) | 2000-02-10 | 2003-09-23 | Digimarc Corporation | Self-orienting watermarks |
US6804377B2 (en) | 2000-04-19 | 2004-10-12 | Digimarc Corporation | Detecting information hidden out-of-phase in color channels |
US6876703B2 (en) * | 2000-05-11 | 2005-04-05 | Ub Video Inc. | Method and apparatus for video coding |
US6868186B1 (en) | 2000-07-13 | 2005-03-15 | Ceva D.S.P. Ltd. | Visual lossless image compression |
ATE509326T1 (de) | 2001-12-18 | 2011-05-15 | L 1 Secure Credentialing Inc | Mehrfachbildsicherheitsmerkmale zur identifikation von dokumenten und verfahren zu ihrer herstellung |
US7793846B2 (en) | 2001-12-24 | 2010-09-14 | L-1 Secure Credentialing, Inc. | Systems, compositions, and methods for full color laser engraving of ID documents |
US7728048B2 (en) | 2002-12-20 | 2010-06-01 | L-1 Secure Credentialing, Inc. | Increasing thermal conductivity of host polymer used with laser engraving methods and compositions |
AU2002364255A1 (en) | 2001-12-24 | 2003-07-15 | Digimarc Id Systems, Llc | Covert variable information on id documents and methods of making same |
US7694887B2 (en) | 2001-12-24 | 2010-04-13 | L-1 Secure Credentialing, Inc. | Optically variable personalized indicia for identification documents |
US7824029B2 (en) | 2002-05-10 | 2010-11-02 | L-1 Secure Credentialing, Inc. | Identification card printer-assembler for over the counter card issuing |
US7804982B2 (en) | 2002-11-26 | 2010-09-28 | L-1 Secure Credentialing, Inc. | Systems and methods for managing and detecting fraud in image databases used with identification documents |
US7712673B2 (en) | 2002-12-18 | 2010-05-11 | L-L Secure Credentialing, Inc. | Identification document with three dimensional image of bearer |
EP1614064B1 (de) | 2003-04-16 | 2010-12-08 | L-1 Secure Credentialing, Inc. | Dreidimensionale datenspeicherung |
US7744002B2 (en) | 2004-03-11 | 2010-06-29 | L-1 Secure Credentialing, Inc. | Tamper evident adhesive and identification document including same |
US7761290B2 (en) | 2007-06-15 | 2010-07-20 | Microsoft Corporation | Flexible frequency and time partitioning in perceptual transform coding of audio |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1988007725A1 (en) * | 1987-03-24 | 1988-10-06 | Bell Communications Research, Inc. | Two-dimensional discrete cosine transform processor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4449194A (en) * | 1981-09-25 | 1984-05-15 | Motorola Inc. | Multiple point, discrete cosine processor |
US4507676A (en) * | 1982-10-28 | 1985-03-26 | Rca Corporation | Digital matrixing system |
US4835559A (en) * | 1988-03-07 | 1989-05-30 | Mark Hattan | Box camera |
US5128758A (en) * | 1989-06-02 | 1992-07-07 | North American Philips Corporation | Method and apparatus for digitally processing a high definition television augmentation signal |
IT8921420V0 (it) * | 1989-07-13 | 1989-07-13 | Telettra Spa | Sistema e circuito per il calcolo di trasformata discreta bidimensionale. |
DE68916038T2 (de) * | 1989-09-29 | 1994-10-27 | Bell Telephone Mfg | Adaptives transformationskodierungssystem. |
US5021891A (en) * | 1990-02-27 | 1991-06-04 | Qualcomm, Inc. | Adaptive block size image compression method and system |
US5129015A (en) * | 1990-04-19 | 1992-07-07 | Ricoh Company Ltd. | Apparatus and method for compressing still images without multiplication |
-
1991
- 1991-08-09 US US07/743,517 patent/US5319724A/en not_active Expired - Lifetime
- 1991-10-08 GB GB9121439A patent/GB2259215B/en not_active Expired - Fee Related
- 1991-10-09 DE DE4133460A patent/DE4133460C2/de not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1988007725A1 (en) * | 1987-03-24 | 1988-10-06 | Bell Communications Research, Inc. | Two-dimensional discrete cosine transform processor |
Non-Patent Citations (5)
Title |
---|
IEEE Intern.Conf. on ASSP, March 19-21, 1984, San Diego, Proc., Vol. 2, S. 28A.3.1-28A.3.4 * |
IEEE Trans. on ASSP, Vol. III, 1981, S. 1180-1183 * |
IEEE Trans. on Commun., Vol. COM-25, No. 9, Sept. 1977, S. 1004-1009 * |
IEEE Trans. on Signal Processing, Vol. 39, N. 2, Feb. 1991, S. 544-546 * |
Proc. SPIE, Vol. 593 Medical Image Processing (1985), S. 142-149 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4306010A1 (de) * | 1992-02-28 | 1993-09-23 | Ricoh Kk | |
US7773671B2 (en) | 2001-09-18 | 2010-08-10 | Microsoft Corporation | Block transform and quantization for image and video coding |
US8971405B2 (en) | 2001-09-18 | 2015-03-03 | Microsoft Technology Licensing, Llc | Block transform and quantization for image and video coding |
US7106797B2 (en) | 2001-09-18 | 2006-09-12 | Microsoft Corporation | Block transform and quantization for image and video coding |
US7881371B2 (en) | 2001-09-18 | 2011-02-01 | Microsoft Corporation | Block transform and quantization for image and video coding |
US7839928B2 (en) | 2001-09-18 | 2010-11-23 | Microsoft Corporation | Block transform and quantization for image and video coding |
US7242713B2 (en) | 2002-05-02 | 2007-07-10 | Microsoft Corporation | 2-D transforms for image and video coding |
CN100379292C (zh) * | 2002-05-02 | 2008-04-02 | 微软公司 | 对具有n和m维数的媒体数据块进行转换的方法和装置 |
EP1359546A1 (de) * | 2002-05-02 | 2003-11-05 | Microsoft Corporation | 2D-Transformationen zur Bild- und Videokodierung |
US7487193B2 (en) | 2004-05-14 | 2009-02-03 | Microsoft Corporation | Fast video codec transform implementations |
US7546240B2 (en) | 2005-07-15 | 2009-06-09 | Microsoft Corporation | Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition |
US7689052B2 (en) | 2005-10-07 | 2010-03-30 | Microsoft Corporation | Multimedia signal processing using fixed-point approximations of linear transforms |
US8942289B2 (en) | 2007-02-21 | 2015-01-27 | Microsoft Corporation | Computational complexity and precision control in transform-based digital media codec |
Also Published As
Publication number | Publication date |
---|---|
GB2259215B (en) | 1995-05-17 |
DE4133460C2 (de) | 1997-04-30 |
US5319724A (en) | 1994-06-07 |
GB2259215A (en) | 1993-03-03 |
GB9121439D0 (en) | 1991-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4133460C2 (de) | Verfahren zum Verdichten von Bildern | |
DE19819198B4 (de) | Reversible DCT für verlustfreie/verlustbehaftete Kompression | |
DE69425847T2 (de) | Rechner für die inverse diskrete Cosinus-Transformation | |
DE69525127T2 (de) | Gerät und Verfahren zur Kodierung und Dekodierung von Bildern unter Verwendung einer Kantensynthese und einer Wavelet-Rücktransformation | |
DE19983253B4 (de) | Die Kompression von Farbbildern auf der Grundlage einer zweidimensionalen diskreten Wavelet-Transformation, die ein scheinbar verlustloses Bild hervorbringt | |
DE2640140C2 (de) | Verfahren und Anordnung zur redundanzvermindernden Bildcodierung | |
DE69029976T2 (de) | Verfahren und Einrichtung zur Bilddatenkompression durch mathematische Transformation | |
DE69322351T2 (de) | Verbesserte Dekomprimierung von Standard ADCT-komprimierten Bildern | |
DE69406306T2 (de) | Verfahren zur bildskalierung und zum filtern mit diskreter cosinustransformation | |
DE69922486T2 (de) | Nachbearbeitung von dekomprimierten bildern | |
DE69736329T2 (de) | Verschachtelte verteilte kodierung von spärlich bestückten datensätzen | |
DE69801209T2 (de) | Hierarchischer rekursiver Bewegungsschätzer für Bewegtbildkodierer | |
DE69018976T2 (de) | Verfahren zur verringerung des quantisierungsfehlers in hierarchischen zerlegungs- und wiederaufbauschemen. | |
DE4239126A1 (de) | ||
DE60203850T2 (de) | System und Verfahren zum Verarbeiten von Bildern mit aufgelöster Mosaikstruk- tur, um durch Farb-Aliasing hervorgerufenen Artefakte zu verringern. | |
DE4038240A1 (de) | Prozessor zum durchfuehren einer orthogonaltransformation | |
DE60119904T2 (de) | Vorrichtung und Verfahren zur Entfernung des Mosaikeffekts in Rohbilddaten im Hinblick auf die Datenkompression | |
DE69818751T2 (de) | Dekompression von interpolierten Bildern | |
DE3486075T2 (de) | Bildverkleinerungsverfahren. | |
DE69802269T2 (de) | Vorrichtung und verfahren zum vergleichen von pixelblöcken | |
WO2002015584A2 (de) | Verfahren zur ganzzahligen approximation von transformationskoeffizienten sowie coder und decoder | |
DE69128054T2 (de) | Bilddatenverarbeitungsverfahren und -gerät | |
DE3545106C2 (de) | ||
DE4306010C2 (de) | Verfahren und Einrichtung zur digitalen Verarbeitung von Bilddaten | |
DE2647774C3 (de) | Schaltungsanordnung zur Kodierung und Dekodierung von Bildern durch Matrizentransformation mit gewichtetem Beitrag mehrerer Bildpunkte zu einem transformierten Bildpunkt |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8125 | Change of the main classification |
Ipc: G06T 9/00 |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |