DE4133460C2 - Verfahren zum Verdichten von Bildern - Google Patents

Verfahren zum Verdichten von Bildern

Info

Publication number
DE4133460C2
DE4133460C2 DE19914133460 DE4133460A DE4133460C2 DE 4133460 C2 DE4133460 C2 DE 4133460C2 DE 19914133460 DE19914133460 DE 19914133460 DE 4133460 A DE4133460 A DE 4133460A DE 4133460 C2 DE4133460 C2 DE 4133460C2
Authority
DE
Germany
Prior art keywords
transformation
values
vectors
picture
transformations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19914133460
Other languages
English (en)
Other versions
DE4133460A1 (de
Inventor
Steven M Blonstein
James D Allen
Martin P Boliek
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US07/743,517 priority Critical patent/US5319724A/en
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of DE4133460A1 publication Critical patent/DE4133460A1/de
Application granted granted Critical
Publication of DE4133460C2 publication Critical patent/DE4133460C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N11/00Colour television systems
    • H04N11/04Colour television systems using pulse code modulation
    • H04N11/042Codec means
    • H04N11/044Codec means involving transform coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements 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, LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift register stack stores, push-down stores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selections, chip selection, array selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

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.

Tabelle 1

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.

Chen-Algorithmus

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.

Achtpunkt-(N=8)-1D-Chen-Transformationsbeispiel

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).

Chen-Wu (modifizierte) oder parametrisierte Transformation

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)

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:

Verallgemeinerte Transformation

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.

Chen-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.

(Modifizierter) Chen-Wu-Algorithmus

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.

Wahl von Parameterwerten

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.

Alternative Algorithmen

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.
Erörterung der Erfindung

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)

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)

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.

Ausführliche Beschreibung des (Haupt-)Verfahrens

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.
Beispiel einer Pseudocode-Ausführungsform

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

Da = 1
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.

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

g(i,j) = 0.9, k(i,j) in {1,3,5}
für i + j < 4

g(i,j) = 0.7, k(i,j) = 1
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

Hierbei sollen die Faktoren g(i,j) unabhängig von der Wahlgröße die Quantisierung-Abweichung (bias) bilden.

5. Ausführung der Vorwärts-GCT

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

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

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

(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

(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

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)

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

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)

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

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

E(i,j) = L(i,j) * m(i,j)- A(i,j)
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.

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)

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)

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)

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

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.

(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

(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.

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

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

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.

Diskussion von Sekundärprozessen

Ü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.

Beispiel für ein verdichtetes (komprimiertes) Dateiformat

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.

128-Punkt- und 256-Punkt-Transformationen

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

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.

Beispiel: Matrizen Transponierte der Matrix TP

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)

Beschreibung einer Einrichtung

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.
DE19914133460 1990-04-19 1991-10-09 Verfahren zum Verdichten von Bildern Expired - Fee Related DE4133460C2 (de)

Priority Applications (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
DE19914133460 Expired - Fee Related DE4133460C2 (de) 1990-04-19 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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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次元変換装置及び静止画像データの圧縮システム
US5835792A (en) * 1993-06-24 1998-11-10 Discovision Associates Token-based adaptive video processing arrangement
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
US5748763A (en) 1993-11-18 1998-05-05 Digimarc Corporation Image steganography system featuring perceptually adaptive and globally scalable signal embedding
US6408331B1 (en) * 1995-07-27 2002-06-18 Digimarc Corporation Computer linking methods using encoded graphics
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
US6424725B1 (en) 1996-05-16 2002-07-23 Digimarc Corporation Determining transformations of media signals with embedded code signals
US6381341B1 (en) 1996-05-16 2002-04-30 Digimarc Corporation Watermark encoding method exploiting biases inherent in original signal
US6122403A (en) 1995-07-27 2000-09-19 Digimarc Corporation Computer system linked by using information in data objects
US5768426A (en) 1993-11-18 1998-06-16 Digimarc Corporation Graphics processing system employing embedded code signals
US6408082B1 (en) 1996-04-25 2002-06-18 Digimarc Corporation Watermark detection using a fourier mellin transform
US5862260A (en) 1993-11-18 1999-01-19 Digimarc Corporation Methods for surveying dissemination of proprietary empirical data
US6411725B1 (en) 1995-07-27 2002-06-25 Digimarc Corporation Watermark enabled video objects
US5841886A (en) 1993-11-18 1998-11-24 Digimarc Corporation Security system for photographic identification
US6744906B2 (en) 1995-05-08 2004-06-01 Digimarc Corporation Methods and systems using multiple watermarks
ES2156456T3 (es) 1993-11-18 2001-06-16 Digimarc Corp Control de copia de video con varias señales incrustadas.
US6560349B1 (en) 1994-10-21 2003-05-06 Digimarc Corporation Audio monitoring using steganographic information
US6611607B1 (en) 1993-11-18 2003-08-26 Digimarc Corporation Integrating digital watermarks in multimedia content
US6983051B1 (en) 1993-11-18 2006-01-03 Digimarc Corporation Methods for audio watermarking and decoding
US5832119C1 (en) 1993-11-18 2002-03-05 Digimarc Corp Methods for controlling systems using control signals embedded in empirical data
US6614914B1 (en) 1995-05-08 2003-09-02 Digimarc Corporation Watermark embedder and reader
US5841978A (en) 1993-11-18 1998-11-24 Digimarc Corporation Network linking method using steganographically embedded data objects
US6804376B2 (en) 1998-01-20 2004-10-12 Digimarc Corporation Equipment employing watermark-based authentication function
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
JPH07152730A (ja) * 1993-11-30 1995-06-16 Toshiba Corp 離散コサイン変換装置
US5973731A (en) * 1994-03-03 1999-10-26 Schwab; Barry H. Secure identification system
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
US5659362A (en) * 1994-09-07 1997-08-19 University Of South Florida VLSI circuit structure for implementing JPEG image compression standard
US6169820B1 (en) * 1995-09-12 2001-01-02 Tecomac Ag Data compression process and system for compressing data
US5710834A (en) 1995-05-08 1998-01-20 Digimarc Corporation Method and apparatus responsive to a code signal conveyed through a graphic image
US5748783A (en) 1995-05-08 1998-05-05 Digimarc Corporation Method and apparatus for robust information coding
US6804377B2 (en) 2000-04-19 2004-10-12 Digimarc Corporation Detecting information hidden out-of-phase in color channels
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
US6522770B1 (en) 1999-05-19 2003-02-18 Digimarc Corporation Management of documents and other objects using optical devices
US6829368B2 (en) 2000-01-26 2004-12-07 Digimarc Corporation Establishing and interacting with on-line media collections using identifiers in media signals
JP2827997B2 (ja) * 1995-12-28 1998-11-25 日本電気株式会社 画像信号のアダマール変換符号化装置および復号装置
US5822436A (en) 1996-04-25 1998-10-13 Digimarc Corporation Photographic products and methods employing embedded information
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
US5751865A (en) * 1996-09-26 1998-05-12 Xerox Corporation Method and apparatus for image rotation with reduced memory using JPEG compression
US5867598A (en) * 1996-09-26 1999-02-02 Xerox Corporation Method and apparatus for processing of a JPEG compressed image
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
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
US6577746B1 (en) 1999-12-28 2003-06-10 Digimarc Corporation Watermark-based object linking and embedding
US6625297B1 (en) 2000-02-10 2003-09-23 Digimarc Corporation Self-orienting watermarks
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
US6788800B1 (en) 2000-07-25 2004-09-07 Digimarc Corporation Authenticating objects using embedded data
US6882685B2 (en) 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
PT1456810E (pt) 2001-12-18 2011-07-25 L 1 Secure Credentialing Inc Características de segurança com imagens múltiplas para documentos de identificação e processo para as efectuar
US7712673B2 (en) 2002-12-18 2010-05-11 L-L Secure Credentialing, Inc. Identification document with three dimensional image of bearer
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
EP1459239B1 (de) 2001-12-24 2012-04-04 L-1 Secure Credentialing, Inc. Verdeckte variableninformationen auf id-dokumenten und verfahren zu ihrer herstellung
US7694887B2 (en) 2001-12-24 2010-04-13 L-1 Secure Credentialing, Inc. Optically variable personalized indicia for identification documents
CA2470600C (en) 2001-12-24 2009-12-22 Digimarc Id Systems, Llc Systems, compositions, and methods for full color laser engraving of id 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
CA2522551C (en) 2003-04-16 2009-12-22 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)

* Cited by examiner, † Cited by third party
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.
AT107111T (de) * 1989-09-29 1994-06-15 Alcatel Nv 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

Cited By (1)

* Cited by examiner, † Cited by third party
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
DE4133460A1 (de) 1993-04-15
GB9121439D0 (en) 1991-11-20
US5319724A (en) 1994-06-07
GB2259215B (en) 1995-05-17

Similar Documents

Publication Publication Date Title
DE60302602T2 (de) Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation
DE69725487T2 (de) Gitternetze mit veränderbarer Auflösung
DE60014444T2 (de) Verfahren und vorrichtung zur bewegungsschätzung unter verwendung von nachbarmacroblöcken
DE69727206T2 (de) Verfahren zum Intergrieren/Extrahieren von Wasserzeichenidentifikationsinformation in/aus Bilddaten und Vorrichtung dafür sowie rechnerlesefähiges Medium
DE19506164C2 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
DE69534558T2 (de) Effizientes Verfahren, Gerät und Rechnerprogramm zur Auswertung graphischer Programmiersprache
DE69633039T2 (de) Vorrichtung und Verfahren zur Umwandlung eines Signals
DE19983600B4 (de) Ein neuer Skalierungsalgorithmus für eine effiziente Farbdarstellung / Wiederherstellung bei Video
DE60022237T2 (de) Bidverarbeitungsverfahren und -System und Aufzeichnungsmedium zur Durchfürung des Verfahrens
EP1648174B1 (de) Verfahren und Anordnung zur Reduktion von Codierungsartefakten von blockbasierten Bildcodierungsverfahren und objektbasierten Bildcodierungsverfahren
DE3639026C2 (de) Hochauflösendes Bildübertragungsverfahren
US7903889B2 (en) System and computer readable medium for the scaling down of data
DE3348093C2 (de)
CN100373948C (zh) 一种为压缩准备图象的方法
DE3735349C2 (de)
DE19544094B4 (de) Progressive Bildübertragung mittels diskreter Wellentransformationen
US7454084B2 (en) Method of generating matrix factors for a finite-dimensional linear transform
DE69735679T2 (de) Verfahren zur Bilddecodierung
DE69532640T2 (de) Adaptives mehrpunktvideogestaltungs- und überbrückungssystem
DE4034535C2 (de) Vorrichtung und Verfahren zur Codierung von Bilddaten, sowie hiermit ausgestattete elektronische Stehbildkamera
US5189526A (en) Method and apparatus for performing image compression using discrete cosine transform
DE69635055T2 (de) Kodierung von zerotree-informationen in einem bildkodierungssystem mit wavelettransformation
DE69533870T2 (de) Vorrichtung zur Bilddekodierung
DE69813230T2 (de) Verfahren zur markierung eines komprimierten digitalvideosignals
DE69831961T2 (de) Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten

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