DE4133460C2 - Verfahren zum Verdichten von Bildern - Google Patents
Verfahren zum Verdichten von BildernInfo
- Publication number
- DE4133460C2 DE4133460C2 DE4133460A DE4133460A DE4133460C2 DE 4133460 C2 DE4133460 C2 DE 4133460C2 DE 4133460 A DE4133460 A DE 4133460A DE 4133460 A DE4133460 A DE 4133460A DE 4133460 C2 DE4133460 C2 DE 4133460C2
- Authority
- DE
- Germany
- Prior art keywords
- transformation
- values
- vectors
- transformations
- multiplication
- 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
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)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Multimedia (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 ein Verfahren
zum Verdichten von Bildern gemäß dem Patentanspruch 1 und betrifft insbesondere
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 Übertra
gungsanforderungen 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 Trans
formation (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 Bildele
mentblock 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 in dem Transformations
raum durchgeführt werden, wozu bereits bestimmte Vorausset
zungen 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), Seiten 142-149,
beschrieben worden sind.
Aus der WO 88/07725 A1 ist ein Prozessor für zweidimensionale diskrete
Cosinustransformationen bekannt. Bei dieser wird eine
zweidimensionale Transformation auf zwei eindimensionale, ver
einfachte Operationen zurückgeführt, wobei die Bildelemente
eines zu verarbeitenden Bildes gedreht werden.
Dabei werden laut der WO 88/07725 A1 jedoch eine große Anzahl von
Multiplikationen durchgeführt, um die notwendigen Verarbei
tungsschritte vorzunehmen. Diese Multiplikationen werden mittels
Zugriffen auf ROM-Speicher durchgeführt, wobei eine Kon
stante verwendet und zur Berechnung der erforderlichen Daten
kompressionstransformation herangezogen wird. Die erforderlichen
Operationen sind jedoch derart komplex, daß eine
Bildkompression einen großen zeitlichen und operativen Aufwand
erfordert.
Gemäß der Erfindung soll ein
Verfahren zum Verdichten von Bildern geschaffen werden, welche
auch noch mit einer JPEG-Information kompatibel ist.
Gemäß der Erfindung ist dies bei einem Verfahren zum Verdichten
von Bildern durch die Merkmale im
Anspruch 1 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 Auf
bereitungswertigkeiten (Schritt E) kann auch als ein Deco
dierschritt (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), Seiten 1004-1009) 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 B₈ 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:
wobei aus Gl. 3 sich ergibt:
Cn = cos (nπ/16).
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 (7π/16),
b = C2/C6 = tan (6π/16),
c = C3/C5 = tan (5π/16),
r = C4 = cos (4π/16). (4)
b = C2/C6 = tan (6π/16),
c = C3/C5 = tan (5π/16),
r = C4 = cos (4π/16). (4)
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)X 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 entweder 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:
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 Transformation 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, B.G., "FCT-A Fast Cosine Transform", IEEE Intern. Conf. on ASSP, Vol. 2
(1984). 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 Berechnung. 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, H.R. and Paolin, F.J.
"A 2D Fast Cosine Transform", IEEE Trans. on Signal
Processing, Vol. 39, 1981, und Lee, B.G., 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) zu den aus [Q] abgeleiteten Vorwärtstrans
formation-Nachmultiplikatoren gefaltet bzw. kombiniert werden können. Ebenso
können die Schritte (H, I) in die inversen Transformationen-
Vormultiplikatoren gefaltet werden, und zwar deswegen, das
die Raten- bzw. Verhaltens- oder Anteils-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 Raten- bzw. Verhältnisscalar ist, r(i,j) psychoadaptiv ausge
wählte (oder sogar vom Benutzer ausgewählte) Quantisierungs
bewertungen sind, und u(i,j) Aufbereitungs-(deblurring-)Bewertungen
sind. In ähnlicher Weise können Schritte H und I ver
knüpft werden.
Dies bedeutet in Wirklichkeit, daß die Ratennormierung 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 1/2 für beeinflußte bzw. nicht-beeinflußte Terme
werden.
Bei dieser zuletzt erwähnten Überlegung erfordert ein Hand
haben des Parameters r=0,75 in dem unkomplizierten
Chen-Algorithmus 96 Multiplikationen mit 4 und 32 Multipli
kationen mit 3. Mit Hilfe des Wu-Paolini-Algorithmus in einer
2D-Implementierungs-Verbesserung ist die gesamte Multiplika
tionsstufe entfallen, und dies werden dann 36 Multiplikationen
mit 16, 24 Multiplikationen mit 12 und 4 Multiplika
tionen mit 9 (bei der inversen Transformation werden 36 Multi
plikationen mit 9, 24 Multiplikationen mit 6 und 4 Multi
plikationen 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)
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 "Raten- bzw. Verhältnis- oder Anteilsscaler" 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 Multi
plikators und das entsprechende Dekompressions-Multiplika
torelement (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"-Koeffi
zientenquantisierung 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 hinaus ist q=2 arithmetisch einfach 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 Gleichung 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 Eingabe
einrichtung 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 vor gegebene Hardware-Architektur ist unkompliziert.
Dieser Teil der Anmeldung ist eine Ausfüh
rungsform der Erfindung, welche in Text und Pseudocode er
lä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.
Die Gleichungen für die Zähler N und die Nenner D zeigen
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
Nb = 3
Nc = 1.5
Nrr = 1.75
Nrc = 4.25
Nrr′ = 1.25
Nrc′ = 3
Nb = 3
Nc = 1.5
Nrr = 1.75
Nrc = 4.25
Nrr′ = 1.25
Nrc′ = 3
Da = 1
Db = 1.25
Dc = 1
Drr = 2.5
Drc = 6
Drr′ = 1.75
Drc′ = 4.25
Db = 1.25
Dc = 1
Drr = 2.5
Drc = 6
Drr′ = 1.75
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 1/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) = 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) = 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(,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(,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
Nrc, wenn j = 5 oder 6
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 Nrc, wenn j = 5 oder 6
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)
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
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.
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
- - k(i,j) immer 1, 3, 5, 7 oder 9 und üblicherweise 1 ist
- - eine Multiplikation mit 2 (-s(i,j)) [Programmiersprache C] einfach eine Ver schiebung 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
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 "Ratennormierungsfaktor" (rate scaler) und die Komprimierungs
rate (deblurring weights) festgelegt sind, sind die
Werte m(i,j) und A(i,j) konstant. Der Faktor 2 S spiegelt
Präzisions-Zusatzbits wider, 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 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,
können 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(7,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)
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(7,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)
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.
Nrc′, wenn j = 5 oder 6
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′, Nrc′, wenn j = 5 oder 6
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′, Nrc′, wenn j = 5 oder 6
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)
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)
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 (v2-v1)/
max (2, 11 ) 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
L(i,j) = G(i,j) · K(i,j) · 2P-s(i,j)
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
- 1) 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:
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:
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-3).
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 64-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 Transfor
mation 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 zu
rückgehalten wird, bis der 8×8-Bildelementblock 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-Bildelementblock 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 ermöglicht eine Verschiebung in vier Richtungen.
Ein in vier Richtungen arbeitendes 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 Transfor
mationseinheit 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 Transformations
koeffizienten 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 VLSI-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ührungs
form 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. Verfahren zum Verdichten von Bildern, mit den folgenden Schritten:
- a) eingegebene Bildelemente werden in der Form wenigstens einer NxN-Matrix aufgenommen;
- b) N eindimensionale Transformationen werden auf originale Vektoren der wenigstens einen NxN-Matrix aus N Bildelementen angewandt, wobei Nährungswerte so ausgewählt werden, daß Transformationskoeffizienten der verwendeten Trans formationen vereinfacht werden, um mit den Näherungswerten die Transformationen durch Verschiebungen, Additionen und/oder Subtraktionen auszuführen;
- c) die sich ergebenden originalen N Vektoren mit jeweils N Werten in neue N Vektoren mit jeweils N Werten transportiert, wobei der erste neue Vektor sämtliche N ersten Werte der originalen N Vektoren aufweist, der zweite neue Vektor sämtliche N zweiten Werte der originalen N Vektoren aufweist, usw.;
- d) mit den neuen N Vektoren werden N eindimensionale Transformationen durch geführt, wobei Nährungswerte so ausgewählt werden, daß Transformations koeffizienten der verwendeten Transformationen vereinfacht werden, um mit den Näherungswerten die Transformationen durch Verschiebungen, Additionen und/oder Subtraktionen auszuführen, wobei die originalen Vektoren entweder horizontal oder vertikal oder im Hinblick auf das zu verdichtende Bild anders ausgerichtet sein können, während die neuen Vektoren senkrecht dazu ausgerichtet sind;
- e) die Transformation gemäß Schritt b) wirkt invers zu der Transformation gemäß Schritt d).
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Bilddaten
nur durch Additionen horizontal transformiert werden und die horizontal trans
formierten Bildelemente mit einem Transpositionsspeicher in die Vertikale gedreht
werden.
3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet,
daß die vertikalen Bildelemente nur mit den Addieren vertikal transformiert
werden und eine Multiplikationsfunktion an den transformierten, vertikalen
Bildelementen durchgeführt wird, um verdichtete Bildelementdaten zu schaffen,
welche die eingegebenen Bildelemente darstellen.
4. Verfahren nach einem der Ansprüche 2 oder 3, dadurch gekennzeichnet,
daß eine erste Hälfte der horizontalen und vertikalen Transformationen und eine
zweite Hälfte der horizontalen und vertikalen Transformationen umgearbeitet
wird, wobei jeweils zugeordnete erste und zweite Addierernetzwerke verwendet
werden.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß die erste und
die zweite Hälfte der Bildelemente in einer Zeit-Sharing-Anordnung horizontal
und vertikal transformiert werden.
6. Verfahren nach einem der Ansprüche 3 bis 5, dadurch gekennzeichnet,
daß die Multiplikationsfunktion in einer Zickzack-Reihenfolge vorgenommen
wird.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß bei der Aus
führung der Multiplikationsfunktion eine Rundung vornehmbar ist.
8. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Multiplika
tionsfunktion wenigstens teilweise mittels einer Multipliziertabelle vorgenommen
wird.
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 DE4133460A1 (de) | 1993-04-15 |
DE4133460C2 true 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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761290B2 (en) | 2007-06-15 | 2010-07-20 | Microsoft Corporation | Flexible frequency and time partitioning in perceptual transform coding of audio |
Families Citing this family (72)
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 |
JP3155383B2 (ja) * | 1992-02-28 | 2001-04-09 | 株式会社リコー | 2モード処理装置、2次元変換装置及び静止画像データの圧縮システム |
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 |
US6611607B1 (en) | 1993-11-18 | 2003-08-26 | Digimarc Corporation | Integrating digital watermarks in multimedia content |
US6614914B1 (en) | 1995-05-08 | 2003-09-02 | Digimarc Corporation | Watermark embedder and reader |
US6408082B1 (en) | 1996-04-25 | 2002-06-18 | Digimarc Corporation | Watermark detection using a fourier mellin transform |
US5636292C1 (en) | 1995-05-08 | 2002-06-18 | Digimarc Corp | Steganography methods employing embedded calibration data |
US5841886A (en) | 1993-11-18 | 1998-11-24 | Digimarc Corporation | Security system for photographic identification |
US5748783A (en) | 1995-05-08 | 1998-05-05 | Digimarc Corporation | Method and apparatus for robust information coding |
US5768426A (en) | 1993-11-18 | 1998-06-16 | Digimarc Corporation | Graphics processing system employing embedded code signals |
US5862260A (en) | 1993-11-18 | 1999-01-19 | Digimarc Corporation | Methods for surveying dissemination of proprietary empirical data |
US7171016B1 (en) | 1993-11-18 | 2007-01-30 | Digimarc Corporation | Method for monitoring internet dissemination of image, video and/or audio files |
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 |
EP0959621B1 (de) | 1993-11-18 | 2001-02-28 | Digimarc Corporation | Video-Kopiersteuerung mit verschiedenen eingebettenen Signalen |
US5832119C1 (en) | 1993-11-18 | 2002-03-05 | Digimarc Corp | Methods for controlling systems using control signals embedded in empirical data |
US6983051B1 (en) | 1993-11-18 | 2006-01-03 | Digimarc Corporation | Methods for audio watermarking and decoding |
US5841978A (en) | 1993-11-18 | 1998-11-24 | Digimarc Corporation | Network linking method using steganographically embedded data objects |
US6424725B1 (en) | 1996-05-16 | 2002-07-23 | Digimarc Corporation | Determining transformations of media signals with embedded code signals |
US5748763A (en) | 1993-11-18 | 1998-05-05 | Digimarc Corporation | Image steganography system featuring perceptually adaptive and globally scalable signal embedding |
US5710834A (en) | 1995-05-08 | 1998-01-20 | Digimarc Corporation | Method and apparatus responsive to a code signal conveyed through a graphic image |
US5822436A (en) | 1996-04-25 | 1998-10-13 | Digimarc Corporation | Photographic products and methods employing embedded information |
US6122403A (en) | 1995-07-27 | 2000-09-19 | Digimarc Corporation | Computer system linked by using information in data objects |
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 |
US5703793A (en) * | 1994-07-29 | 1997-12-30 | Discovision Associates | Video decompression |
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 |
US6728390B2 (en) | 1995-05-08 | 2004-04-27 | Digimarc Corporation | Methods and systems using multiple watermarks |
US6760463B2 (en) | 1995-05-08 | 2004-07-06 | Digimarc Corporation | Watermarking methods and media |
US6721440B2 (en) | 1995-05-08 | 2004-04-13 | Digimarc Corporation | Low visibility watermarks using an out-of-phase color |
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 |
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 |
US6408331B1 (en) * | 1995-07-27 | 2002-06-18 | Digimarc Corporation | Computer linking methods using encoded graphics |
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 |
US6804376B2 (en) | 1998-01-20 | 2004-10-12 | Digimarc Corporation | Equipment employing watermark-based authentication function |
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 |
US6882685B2 (en) | 2001-09-18 | 2005-04-19 | Microsoft Corporation | Block transform and quantization for image and video coding |
ATE509326T1 (de) | 2001-12-18 | 2011-05-15 | L 1 Secure Credentialing Inc | Mehrfachbildsicherheitsmerkmale zur identifikation von dokumenten und verfahren zu ihrer herstellung |
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 |
WO2003056500A1 (en) | 2001-12-24 | 2003-07-10 | Digimarc Id Systems, Llc | Covert variable information on id documents and methods of making same |
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 |
US7694887B2 (en) | 2001-12-24 | 2010-04-13 | L-1 Secure Credentialing, Inc. | Optically variable personalized indicia for identification documents |
US7242713B2 (en) * | 2002-05-02 | 2007-07-10 | Microsoft Corporation | 2-D transforms for image and video coding |
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 |
WO2004095348A2 (en) | 2003-04-16 | 2004-11-04 | Digimarc Corporation | Three dimensional data storage |
US7744002B2 (en) | 2004-03-11 | 2010-06-29 | L-1 Secure Credentialing, Inc. | Tamper evident adhesive and identification document including same |
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 |
Family Cites Families (9)
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 |
US4791598A (en) * | 1987-03-24 | 1988-12-13 | Bell Communications Research, Inc. | Two-dimensional discrete cosine transform processor |
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
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761290B2 (en) | 2007-06-15 | 2010-07-20 | Microsoft Corporation | Flexible frequency and time partitioning in perceptual transform coding of audio |
Also Published As
Publication number | Publication date |
---|---|
GB2259215A (en) | 1993-03-03 |
GB2259215B (en) | 1995-05-17 |
DE4133460A1 (de) | 1993-04-15 |
US5319724A (en) | 1994-06-07 |
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 | |
DE19983253B4 (de) | Die Kompression von Farbbildern auf der Grundlage einer zweidimensionalen diskreten Wavelet-Transformation, die ein scheinbar verlustloses Bild hervorbringt | |
DE69736329T2 (de) | Verschachtelte verteilte kodierung von spärlich bestückten datensätzen | |
DE2640140C2 (de) | Verfahren und Anordnung zur redundanzvermindernden Bildcodierung | |
DE69722601T2 (de) | Datenkompression mit hybrider verlustloser entropiekodierung von run-length codes | |
DE69838630T2 (de) | Prädiktive Digitalvideosignalkodierung- und Dekodierungsmethode unter Verwendung von Blockinterpolation | |
DE69836432T2 (de) | Bildcoder und -decoder | |
DE69833085T2 (de) | Verfahren und Vorrichtung für die reversible Farbumwandlung | |
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 | |
DE19744407C1 (de) | Verfahren zur mehrdimensionalen, diskreten Wavelet-Transformation und Transformationseinheit zur Durchführung des Verfahrens | |
WO2002015584A2 (de) | Verfahren zur ganzzahligen approximation von transformationskoeffizienten sowie coder und decoder | |
DE102005051723A1 (de) | Vorrichtung und Verfahren zur Bildverarbeitung | |
DE3545106C2 (de) | ||
DE4306010C2 (de) | Verfahren und Einrichtung zur digitalen Verarbeitung von Bilddaten | |
DE2460654A1 (de) | Verfahren und einrichtung zum codieren eines gegebenen informationssignals | |
EP0929975B1 (de) | Verfahren und anordnung zur vektorquantisierung und zur inversen vektorquantisierung eines digitalisierten bildes | |
DE2647774C3 (de) | Schaltungsanordnung zur Kodierung und Dekodierung von Bildern durch Matrizentransformation mit gewichtetem Beitrag mehrerer Bildpunkte zu einem transformierten Bildpunkt | |
EP1034511B1 (de) | Verfahren zur umsetzung digitaler daten im raster einer ersten auflösung in digitale zieldaten einer zweiten auflösung | |
EP0786186B1 (de) | Segmentadaptive zweidimensionale orthogonale transformationskodierung für ein digitales fernsehsystem | |
DE69929757T2 (de) | Farbumwandlung | |
DE10116204A1 (de) | Verfahren zur ganzzahligen Approximation von Transformationskoeffizienten sowie Coder und Decoder | |
EP0796016B1 (de) | Verfahren zur Bearbeitung von Bildpunkten eines Bildsegments durch einen Rechner | |
DE19712539C2 (de) | Verfahren zur Größenskalierung von digitalen Bildinformationen |
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 |