DE69835333T2 - Tetraheaedrische und geschnitten-tetrahaedrische Interpolationsvorrichtung - Google Patents

Tetraheaedrische und geschnitten-tetrahaedrische Interpolationsvorrichtung Download PDF

Info

Publication number
DE69835333T2
DE69835333T2 DE69835333T DE69835333T DE69835333T2 DE 69835333 T2 DE69835333 T2 DE 69835333T2 DE 69835333 T DE69835333 T DE 69835333T DE 69835333 T DE69835333 T DE 69835333T DE 69835333 T2 DE69835333 T2 DE 69835333T2
Authority
DE
Germany
Prior art keywords
values
interpolation
value
color space
order bits
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
DE69835333T
Other languages
English (en)
Other versions
DE69835333D1 (de
Inventor
Jr. Gary L. Winchester Vondran
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE69835333D1 publication Critical patent/DE69835333D1/de
Application granted granted Critical
Publication of DE69835333T2 publication Critical patent/DE69835333T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)
  • Facsimile Image Signal Circuits (AREA)

Description

  • Gebiet der Erfindung
  • Diese Erfindung bezieht sich auf die Transformation von Daten und insbesondere auf die Transformation von Daten von einem ersten Raum zu einem zweiten Raum, wie z. B. bei der Umwandlung von einem ersten Farbraum zu einem zweiten Farbraum.
  • Hintergrund der Erfindung
  • Die Kolorimetrie bzw. Farbmessung ist seit langem als eine komplexe Wissenschaft anerkannt. Im allgemeinen hat es sich als möglich und praktisch herausgestellt, Farbstimulivektoren in einem dreidimensionalen Raum darzustellen, der als Tristimulusraum bezeichnet wird. Wie es 1931 durch die CIE (Commission Internationale L'Eclairage) definiert wurde, können im wesentlichen drei Primärfarben (X, Y, Z) kombiniert werden, um alle Lichtwahrnehmungen zu definieren, die wir mit unseren Augen erfahren (d. h. die Farbübereinstimmungseigenschaften eines idealen Dreifarbenbetrachters definiert durch Spezifizieren von drei unabhängigen Funktionen der Wellenlänge, die durch die Farbübereinstimmungsfunktionen des idealen Beobachters identifiziert werden, bilden einen internationalen Standard zum Spezifizieren von Farbe). Die Grundlagen solcher dreidimensionaler Aufbauten sind in der Literatur erörtert, wie z. B. Principles of Color Technology von Billmeyer und Saltzman, veröffentlicht von John Wiley & Sons, Inc., NY, Copyright 1981 (2. Ausg.), und Color Science: Concepts and Methods, Quantitative Data and Formulae, von Wyszecki und Stiles, veröffentlicht von John Wiley & Sons., Inc., Copyright 1982 (2. Ausg.), insbesondere Seiten 119–130.
  • Trichromatische Modellsysteme – wie z. B. Rot, Grün, Blau (RGB); Cyan, Magenta, Gelb (CMY), Farbton, Sättigung, Wert (HSV); Farbton, Helligkeit, Sättigung (HLS); Luminanz, Rot-Gelb-Skala, Grün-Blau-Skala (La*b*); Luminanz, Rot-Grün-Skala, Gelb-Blau-Skala (Luv); YIQ, verwendet bei kommerziellem Farbfernsehrundfunk; und dergleichen – liefern Alternativen für den Systementwickler. Siehe z. B. Arbeiten wie Fundamentals of Interactive Computer Graphics, von Foley und Van Dam, Addison-Wesley Publishing Company, insbesondere Seiten 606–621, die eine Vielzahl von trivariablen Farbmodellen beschreiben.
  • Die Farbtransformation zwischen Modellsystemen bei der digitalen Datenverarbeitung stellt den Originalausrüstungshersteller vor viele Probleme. Die Übertragung von Daten von einem System zu einem anderen System ist schwierig, weil die Beziehung zwischen den Systemen im allgemeinen nichtlinear ist. Daher ist ein wesentliches Problem das Beibehalten der Farbintegrität zwischen einem Originalbild von einem Eingabegerät (wie z. B. einem Farbscanner, einer CRT-Anzeige, einer Digitalkamera, einer Computersoftware/Firmware-Generation und dergleichen) und einer übersetzten Kopie in einem Ausgabegerät (wie z. B. einer CRT-Anzeige, einem Farblaserdrucker, einem Farbtintenstrahldrucker und dergleichen).
  • Beispielsweise möchten Computerkünstler die Fähigkeit zum Erzeugen eines Farbbildes auf einem Computervideo und einem Drucker, der die gleiche Farbe in der Druckkopie liefert. Oder ein Originalfarbfoto kann mit einem Scanner digitalisiert werden, die resultierenden Daten können für die Anzeige auf einem Videobildschirm transformiert werden oder als eine Druckkopie durch einen Laser-, Tintenstrahl- oder thermischen Übertragungsdrucker reproduziert werden. Wie es in den zitierten Referenzmaterialien erörtert wird, können Farben als Aufbereitungen der additiven Primärfarben Rot, Grün und Blau (RGB) oder der subtraktiven Primärfarben Cyan, Magenta, Gelb und Schwarz (CMYK) aufgebaut werden.
  • Eine Transformation kann es erfordern, von einem RGB-Farbraum, beispielsweise einem Computervideobildschirm, zu einem CMYK-Farbraum zu gehen, beispielsweise einer Laserdruckerdruckkopie. Eine Transformation von einem Farbraum zu einem anderen erfordert komplexe nichtlineare Berechnungen in mehreren Dimensionen. Einige Transformationsoperationen könnten durch Matrixmultiplikation erreicht werden.
  • Eine Schwierigkeit bei diesem Verfahren der Farbraumumwandlung ergibt sich jedoch von Unvollkommenheiten bei den Farbstoffen, Phosphoren und Tonern, die für die Erzeugung der Farben verwendet werden. Eine zusätzliche Komplikation ist, daß unterschiedliche Medientypen unterschiedliche Farbantworten beim Drucken mit den gleichen Farbmittelmischungen erzeugen. Als Folge liefert ein rein mathematisches Farbraumumwandlungsverfahren keine annehmbare Farbreproduktion.
  • Es wurde erkannt, daß bei der Farbraumumwandlung hervorragende Ergebnisse erzielt werden unter Verwendung eines Nachschlagtabellenschemas auf der Basis eines Satzes von empirisch abgeleiteten Werten. Typischerweise verwendet der RGB-Farbraum, der für Videoanzeigen verwendet wird, acht Bits, um jede der Primärfarben Rot, Grün und Blau darzustellen. Daher sind 24 Bits erforderlich, um jedes Bildelement darzustellen. Mit dieser Auflösung würde der RGB-Farbraum aus 224 oder 16.777.216 Farben bestehen. Das Durchführen einer Farbraumumwandlung von jedem dieser Punkte in dem RGB-Farbraum zum Erzeugen der vier CMYK-Farbraumkomponenten (zum Beibehalten der Schwarzfarbreinheit beim Drucken ist normalerweise ein getrenntes Schwarz vorgesehen, anstatt mit allen drei Cyan-, Magenta- und Gelbfarbmitteln zu drucken, um zu erzeugen, was im allgemeinen als Prozeßschwarz bekannt ist) würden eine Nachschlagtabelle mit 4 × 224 oder 67.108.864 Datenbytes erfordern. Der empirische Aufbau einer Nachschlagtabelle mit dieser Anzahl von Einträgen ist zu aufwendig.
  • Beim Durchführen der Transformation von einem Farbraum zu einem anderen kann eine Anzahl von Interpolationsschemata verwendet werden, die auf dem Gebiet der Farbraumumwandlung bekannt sind. Verfahren zum Durchführen von Farbraumumwandlung unter Verwendung von trilinearer Interpolation, Prismainterpolation und vierflächiger Interpolation sind in dem veröffentlichten Artikel PERFORMING COLOR SPACE CONVERSIONS WITH THREE DIMENSIONAL LINEAR INTERPOLATION, JOURNAL OF ELECTRONIC IMAGING, Juli 1995, Bd. 4(3), offenbart. Das U.S.-Patent Nr. 3,893,166, erteilt an Pugsley, offenbart ein Schema für eine Translation zwischen Farbräumen, das eine Nachschlagtabelle verwendet, um auf Werte zuzugreifen, die in einer Interpolation verwendet werden.
  • Die Umwandlung großer Datenmengen zwischen Farbräumen, wie es für Farbdrucken erforderlich ist, ist eine zeitaufwendige Operation, die herkömmliche Verfahren der Interpolation verwendet. Die Verwendung der rechenmäßig intensiven herkömmlichen Verfahren der Interpolation für den Farbraumumwandlungsprozeß macht es schwierig, hohe Datendurchsatzraten zu erreichen. Es besteht ein Bedarf an einem Interpolationsverfahren und einer Interpolationsvorrichtung, die eine Reduktion bei den Berechnungen ermöglicht, die zum Durchführen einer Umwandlung zwischen Farbräumen erforderlich sind.
  • Die US-A-5,390,035 offenbart ein Verfahren und eine Einrichtung für Tetraeder/Oktaederverdichten und Tetraederextraktion für Funktionsapproximation. Die Offenbarung bezieht sich auf die Umwandlung einer Eingangsfarbe in eine Ausgangsfarbe unter Verwendung einer multivariablen Funktion mit einem Eingangsbereich in einem ersten dreidimensionalen Farbraum und einem Ausgangsbereich in einem zweiten m-dimensionalen Farbraum. Die Umwandlung von Eingangs- zu Ausgangsfarbe unterteilt den Eingangsbereich in Polyeder, die durch planare Gitter von Punkten definiert sind, die verbunden sind, um eine Mehrzahl von Dreiecken zu bilden. Die planaren Gitter werden in die verbleibende Dimension der Funktionsbereiche projiziert. Wenn ein Eingangsfarbwert präsentiert wird, wird die multivariable Funktion verwendet, um den Eingangswert zu nähern, durch Berechnen einer Approximation der mehrvariablen Funktion, die einen Wert in dem Ausgangsbereich liefert. Ein Tetraeder, der den Eingangsfarbraum enthält, wird von dem Funktionsbereich extrahiert. Die Werte der multivariablen Funktion an den Tetraederscheiteln werden durch Interpolation erhalten. Der Tetraeder wird in Subtetraeder unterteilt. Die Volumen der Subtetraeder werden durch die Funktionswerte berechnet und multipliziert. Die Produkte werden addiert und normiert zu dem Volumen des extrahierten Tetraeders, um eine Approximation der Eingangsfarbe zu erzeugen. Die Approximation wird als der Wert der Ausgangsfarbe geliefert.
  • Die US-A-5,475,510 offenbart ein Verfahren zum Umwandeln von Farbsignalen, um einen Ton auf einem Originaldokument originalgetreu wiederzugeben, und eine Vorrichtung zum Ausführen des Verfahrens. Das Farbsignalumwandlungsverfahren umfasst die Schritte des Teilens von drei Eingangssignalen, die Farben darstellen, in die höheren Bits und die niedrigeren Bits, das Kombinieren der höheren Bits, um Grunddaten zu bilden, das Kombinieren der höheren und niedrigeren Bits, um Interpolationsdaten zu bilden, und das Addieren der Grunddaten und der Interpolationsdaten, wodurch Ausgangssignale gebildet werden, in denen der Hexaeder eines Objekts, das zu interpolieren ist, in sechs Tetraeder unterteilt wird, die jeweils durch einen von acht Gitterpunkten verlaufen, die den Hexaeder des interpolierten Objekts bilden, und die unterschiedlichen Kombinationen von Interpolationsdaten werden dem Tetraeder in einer Eins-zu-Eins-Entsprechungsweise zugewiesen.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Interpolationsverfahren und eine Interpolationsvorrichtung zu schaffen, die eine Reduktion bei den Berechnungen ermöglichen, die zum Durchführen einer Umwandlung zwischen Farbräumen erforderlich sind.
  • Diese Aufgabe wird durch einen beschnittenen vierflächigen Interpolator gemäß Anspruch 1, einen vierflächigen Interpolator gemäß Anspruch 8, ein Verfahren der vierflächigen Interpolation gemäß Anspruch 9 sowie ein Verfahren der beschnittenen vierflächigen Interpolation gemäß Anspruch 10 gelöst.
  • Zusammenfassung der Erfindung
  • Folglich verwendet ein beschnittener vierflächiger Interpolator zum Interpolieren zwischen Interpolationsdatenwerten Eingangsdatenwerte, die jeweils d Komponenten aufweisen, um Ausgangsdatenwerte zu erzeugen. Die d Komponenten sind durch d Sätze von Bits dargestellt, die jeweils unterteilt sind, um d Sätze von Bits höherer Ordnung und d Sätze von Bits niedrigerer Ordnung zu bilden. Die d Sätze von Bits höherer Ordnung werden verwendet, um 2d der Interpolationsdatenwerte auszuwählen. Der beschnittene vierflächige Interpolator umfasst einen ersten Multiplexer mit einem ersten Multiplexausgang und einem ersten Steuereingang. Der erste Multiplexer ist konfiguriert zum Empfangen der 2d der Interpolationsdatenwerte. Der erste Steuereingang ist konfiguriert zum Empfangen eines ersten Werts, der von den d Sätzen von Bits niedrigerer Ordnung bestimmt wird. Der beschnittene vierflächige Interpolator umfasst ferner einen ersten Addierer mit einem ersten Eingang, einem zweiten Eingang und einem Ausgang. Der erste Eingang ist mit dem ersten Multiplexerausgang gekoppelt und der zweite Eingang ist konfiguriert, um einen der 2d der Interpolationsdatenwerte zu empfangen.
  • Ein vierflächiger Interpolator zum Interpolieren zwischen Interpolationsdatenwerten verwendet Eingangsdatenwerte, die jeweils d Komponenten aufweisen, um Ausgangsdatenwerte zu erzeugen. Die d Komponenten sind entsprechend dargestellt durch d Sätze von Bits, die unterteilt sind, um d Sätze von Bits höherer Ordnung und d Sätze von Bits niedrigerer Ordnung zu bilden. Die d Sätze von Bits höherer Ordnung werden verwendet zum Auswählen von 2d der Interpolationsdatenwerte. Der vierflächige Interpolator umfasst einen Satz von 2 × 2d Multiplexern, wobei jeder der Multiplexer einen Multiplexerausgang aufweist und konfiguriert ist, um die 2d der Interpolationsdatenwerte zu empfangen. Jeder der Multiplexer wird verwendet zum Auswählen eines der 2d der Interpolationsdatenwerte, der auf einen von 2 × 2d Werten anspricht, die von den d Sätzen von Bits niedrigerer Ordnung bestimmt werden. Der vierflächige Interpolator umfasst ferner einen Satz von 2d Addierern, wobei jeder der Addierer einen ersten Eingang, einen zweiten Eingang und einen Ausgang aufweist. Jeder einer ersten Gruppe von 2d der Multiplexer hat den entsprechenden der Multiplexerausgänge mit einem der ersten Eingänge gekoppelt. Jeder einer zweiten Gruppe von 2d der Multiplexer hat den entsprechenden der Multiplexerausgänge mit einem der zweiten Eingänge gekoppelt. Der Satz von 2 × 2d Multiplexern und der Satz von 2d Addierern bilden eine Stufe.
  • Ein Verfahren der vierflächigen Interpolation verwendet Interpolationsdatenwerte für die Auswahl unter Verwendung von Eingangsdatenwerten, die jeweils d Komponenten aufweisen. Die d Komponenten sind durch d Sätze von Bits dargestellt, die jeweils unterteilt sind, um d Sätze von Bits höherer Ordnung und d Sätze von Bits niedrigerer Ordnung zu bilden, wobei jeder d Sätze von Bits niedrigerer Ordnung n Bits aufweist. Die d Sätze von Bits niedrigerer Ordnung sind als lb1, lb2, ..., lbd bezeichnet, wobei die Bitposition jedes Bits von d Sätze von Bits niedrigerer Ordnung bestimmt wird von dem Höchstwertigsten der Bits niedrigerer Ordnung zu dem Niedrigstwertigsten der Bits niedrigerer Ordnung, durch einen Wert von i, der entsprechend von n – 1 bis 0 reicht. Das Verfahren der vierflächigen Interpolation umfasst den Schritt des Berechnens eines ersten Werts gemäß v[i] = 2d-1 × lb1[i] + 2d-2 × lb2[i] + ... + 2d-d × lbd [i] für den Wert von i gleich (n – 1). Das Verfahren der vierflä chigen Interpolation umfasst ferner den Schritt des Berechnens eines ersten Satzes von UND-Werten gemäß v[n – 1] & k für den Wert von k, der von 2d-1 bis 0 reicht. Das Verfahren der vierflächigen Interpolation umfasst ferner den Schritt des Berechnens eines ersten Satzes von ODER-Werten gemäß v[n – 1]|k, für den Wert von k, der von 2d-1 bis 0 reicht. Das Verfahren der vierflächigen Interpolation umfasst ferner den Schritt des Auswählens eines ersten Satzes von 2d Paaren der Interpolationsdatenwerte, unter Verwendung des ersten Satzes der UND-Werte und des ersten Satzes der ODER-Werte. Jedes des ersten Satzes von 2d Paaren wird ausgewählt unter Verwendung von einem des ersten Satzes der UND-Werte und einem des erstens Satzes der ODER-Werte, die jeweils berechnet werden unter Verwendung des gleichen Wertes von k. Das Verfahren der vierflächigen Interpolation umfasst ferner den Schritt des Berechnens eines ersten Satzes von 2d Summen, durch Summieren jedes des ersten Satzes von 2d Paaren der Interpolationsdatenwerte.
  • Ein Verfahren der beschnittenen vierflächigen Interpolation verwendet Interpolationsdatenwerte für die Auswahl unter Verwendung von Eingangsdatenwerten, die jeweils d Komponenten aufweisen. Die d Komponenten werden dargestellt durch d Sätze von Bits, die jeweils unterteilt sind, um d Sätze von Bits höherer Ordnung und d Sätze von Bits niedrigerer Ordnung zu bilden, wobei jeder der d Sätze von Bits niedrigerer Ordnung n Bits aufweist. Die d Sätze von Bits niedrigerer Ordnung sind als lb1, lb2, ..., lbd bezeichnet, wobei die Bitposition jedes Bits der d Sätze von Bits niedrigerer Ordnung gekennzeichnet ist von dem höchstwertigsten der Bits niedrigerer Ordnung zu dem niedrigstwertigen der Bits niedrigerer Ordnung, durch einen Wert von i, der entsprechend von n – 1 bis 0 reicht. Das Verfahren der beschnittenen vierflächigen Interpolation umfasst einen Schritt des Berechnens eines ersten Satzes von 2n – 2 Werten unter Verwendung von bitweisen UND-Operationen und bitweisen ODER-Operationen, die mit v[i] arbeiten. Wo v[i] gleich 2d-1 × lb1[i] + 2d-2 × lb2[i] + ... + 2d-d × lbd[i] ist, für den Wert von i, der von (n – 1) bis 0 reicht. Das Verfahren der beschnittenen vierflächigen Interpolation umfasst ferner einen Schritt des Auswählens von zumindest dem Minimum von 2n und 2d der Interpolationsdatenwerte unter Verwendung eines des ersten Satzes von 2n – 2 Werten, v[i] für einen der Werte i gleich n – 1, und den d Sätzen von Bits höherer Ordnung. Das Verfahren der beschnittenen vierflächigen Interpolation umfasst ferner einen Schritt des Addierens eines zweiten Satzes der Interpolationsdatenwerte, die von den Interpolationsdatenwerten gebildet werden, von dem Schritt des Auswählens, um eine Summe zu erzeugen.
  • Ein beschnittener vierflächiger Interpolator zum Interpolieren zwischen Interpolationsdatenwerten verwendet Eingangsdatenwerte, die jeweils d Komponenten haben, um Ausgangsdatenwerte zu erzeugen. Die d Komponenten sind dargestellt durch die d Sätze von Bits, die unterteilt sind, um d Sätze von Bits niedrigerer Ordnung zu bilden, wobei jedes der d Sätze von Bits niedrigerer Ordnung n der Bits aufweist. Der beschnittene vierflächige Interpolator umfasst einen ersten Satz von 2n-1 Multiplexern, die jeweils konfiguriert sind zum Empfangen eines eines Satzes von Steuereingangssignalen und einen Multiplexerausgang aufweisen. Jeder der Multiplexer des ersten Satzes zum Auswählen von Interpolationsdatenwerten spricht auf das eine des Satzes von Steuereingangssignalen an. Der beschnittene vierflächige Interpolator umfasst ferner eine Einrichtung zum Addieren, die konfiguriert ist zum Empfangen des Multiplexerausgangssignals des Satzes von Multiplexern.
  • Beschreibung der Zeichnungen
  • Ein tieferes Verständnis der Erfindung wird durch die Betrachtung der folgenden detaillierten Beschreibung in Verbindung mit den beiliegenden Zeichnungen erhalten.
  • 1a ist eine Darstellung von Ausgangsfarbraumwerten, die für die Interpolation in einem Würfelgitter verwendet werden. Die Scheitel von jedem der Würfel, die das Würfelgitter bilden, stellen Werte des Ausgangsfarbraums dar.
  • 1b ist eine graphische Darstellung eines Farbraumumwandlungsprozesses von einer Farbe, die in einer zylindrischen Koordinate ausgedrückt ist, zu einer Farbe, die in einer rechteckigen Koordinate ausgedrückt ist.
  • 2a bis 2d sind graphische Darstellungen der Auswahl eines einzelnen Unterwürfels unter Verwendung der entsprechenden Bits von den Bits niedrigerer Ordnung des Eingangsfarbraumwerts.
  • 3a bis 3h zeigen die drei möglichen Unterwürfel, die von einem Würfel unter Verwendung der entsprechenden Bits niedrigerer Ordnung des Eingangsfarbraumwerts ausgewählt werden.
  • 4 zeigt die Numerierung der Scheitel des Würfels zum Zweck des Auswählens des Unterwürfels, der das Ergebnis der Interpolation enthält, unter Verwendung der entsprechenden Bits der Bits niedrigerer Ordnung.
  • 5 ist eine graphische Darstellung des radialen Unterwürfelerzeugungsprozesses.
  • 6a bis 6e zeigen eine graphische Darstellung mehrerer Ite rationen des Würfelunterteilungsprozesses, der bei der radialen Interpolation verwendet wird.
  • 7 zeigt eine Hardwareimplementierung eines radialen Interpolators.
  • 8 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer radialen Interpolation.
  • 9 ist eine schematische Darstellung der Berechnungen, die für die Erzeugung der Unterwürfel bei der beschnittenen radialen Interpolation erforderlich sind.
  • 10 zeigt eine Hardwareimplementierung einer beschnittenen radialen Interpolation.
  • 11 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer beschnittenen radialen Interpolation.
  • 12 ist ein Flußdiagramm hoher Ebene eines Verfahrens, das in Software implementiert ist, zum Durchführen einer beschnittenen radialen Interpolation.
  • 13 ist eine Darstellung der äußeren Grenzen eines CMY- und eines RGB-Farbraums, die die Farben an den äußeren Grenzen der Farbräume zeigt.
  • 14 ist eine graphische Darstellung der Erzeugung eines Unterwürfels von zwei Tetraedern.
  • 15 ist eine schematische Darstellung der Berechnungen, die für die Erzeugung der Unterwürfel bei der beschnittenen vierflächigen Interpolation erforderlich sind.
  • 16 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer vierflächigen Interpolation.
  • 17 zeigt eine Hardwareimplementierung einer vierflächigen Interpolation.
  • 18 zeigt eine Hardwareimplementierung einer beschnittenen vierflächigen Interpolation.
  • 19 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer beschnittenen vierflächigen Interpolation.
  • 20 ist ein Flußdiagramm hoher Ebene eines Verfahrens zum Implementieren in Software zum Durchführen einer beschnittenen vierflächigen Interpolation.
  • 21 ist eine schematische Darstellung einer allgemeinen radialen Interpolation und einer beschnittenen vierflächigen Interpolationsimplementierung.
  • 22 zeigt eine Hardwareimplementierung einer allgemeinen beschnittenen radialen und beschnittenen vierflächigen Interpolation.
  • 23a bis 23e zeigen eine graphische Darstellung eines nicht symmetrischen Interpolationsprozesses.
  • 24 zeigt eine graphische Darstellung der Erzeugung eines Unterwürfels von einem Würfel unter Verwendung einer nichtsymmetrischen Unterwürfelerzeugung.
  • 25 ist eine schematische Darstellung des nichtsymmetrischen radialen Interpolationsprozesses.
  • 26 ist ein Flußdiagramm hoher Ebene eines Verfahrens zum Durchführen einer nichtsymmetrischen radialen Interpolation.
  • 27 ist ein Flußdiagramm hoher Ebene eines Verfahrens, das in Software implementiert ist, zum Durchführen einer nichtsymmetrischen beschnittenen radialen Interpolation.
  • 28 zeigt eine Hardwareimplementierung einer nichtsymmetrischen beschnittenen radialen Interpolation.
  • 29 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer nichtsymmetrischen radialen Interpolation.
  • 30 zeigt eine Hardwareimplementierung einer nichtsymmetrischen radialen Interpolation.
  • 31 ist eine schematische Darstellung des nichtsymmetrischen beschnittenen vierflächigen Interpolationsprozesses.
  • 32 zeigt ein Flußdiagramm hoher Ebene eines Verfahrens zum Durchführen einer nichtsymmetrischen beschnittenen vierflächigen Interpolation.
  • 33 ist ein Flußdiagramm hoher Ebene eines Verfahrens, das in Software implementiert ist, um eine nichtsymmetrische beschnittene vierflächige Interpolation durchzuführen.
  • 34 zeigt eine Hardwareimplementierung einer nichtsymmetrischen beschnittenen vierflächigen Interpolation.
  • 35 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Implementieren einer nichtsymmetrischen vierflächigen Interpolation.
  • 36 zeigt eine Hardwareimplementierung eines nichtsymmetrischen vierflächigen Interpolators.
  • 37 zeigt eine Hardwareimplementierung eines allgemeinen nichtsymmetrischen beschnittenen radialen und nichtsymmetrischen beschnittenen vierflächigen Interpolators.
  • 38 umfaßt eine C-Codeauflistung eines Verfahrens zum Implementieren einer beschnittenen radialen Interpolationssoftware.
  • 39 umfaßt eine VHDL-Auflistung, die zum Erzeugen einer Hardwareimplementierung einer beschnittenen radialen Interpolation verwendet wird.
  • 40 umfaßt eine C-Codeauflistung eines Verfahrens zum Implementieren einer beschnittenen vierflächigen Interpolation in Software.
  • 41 umfaßt eine VHDL-Auflistung, die zum Erzeugen einer Hardwareimplementierung einer beschnittenen vierflächigen Interpolation verwendet wird.
  • 42 umfaßt eine VHDL-Auflistung, die zum Erzeugen einer Hardwareimplementierung einer allgemeinen beschnittenen radialen Interpolation und einer beschnittenen vierflächigen Interpolation verwendet wird.
  • 43 umfaßt eine C-Codeauflistung eines Verfahrens zum Implementieren einer nichtsymmetrischen beschnittenen radialen Interpolation in Software.
  • 44 umfaßt eine VHDL-Auflistung, die zum Erzeugen einer Hardwareimplementierung einer nichtsymmetrischen beschnittenen radialen Interpolation verwendet wird.
  • 45 umfaßt eine C-Codeauflistung eines Verfahrens zum Implementieren einer nichtsymmetrischen beschnittenen vierflächigen Interpolation in Software.
  • 46 umfaßt eine VHDL-Auflistung, die zum Erzeugen einer Hardwareimplementierung einer nichtsymmetrischen beschnittenen vierflächigen Interpolation verwendet wird.
  • 47 umfaßt eine VHDL-Auflistung, die zum Erzeugen einer Hardwareimplementierung einer allgemeinen nichtsymmetrischen beschnittenen radialen und einer nichtsymmetrischen beschnittenen vierflächigen Interpolation verwendet wird.
  • Detaillierte Beschreibung des bevorzugten Ausführungsbeispiel
  • Die vorliegende Erfindung ist nicht auf die hierin dargestellten spezifischen beispielhaften Ausführungsbeispiele beschränkt sind. Außerdem, obwohl mehrere Ausführungsbeispiele der Unterwürfelinterpolation in dem Zusammenhang eines Farblaserdruckers erörtert werden, wird ein Durchschnittsfachmann auf diesem Gebiet nach dem Verstehen dieser Beschreibung erkennen, daß die offenbarten Ausführungsbeispiele der Unterwürfelinterpolation bei jeder interpolativen Datentransformation zwischen Räumen anwendbar sind. Beispielsweise könnten die Interpolationen, die für das Aufbereiten dreidimensionaler Graphiken erforderlich sind, die offenbarten Interpolationstechniken vorteilhaft verwenden.
  • Eine Unterwürfelinterpolation, die eine vierflächige Interpolation verwendet, um jeden der Scheitelpunkte der aufeinanderfolgenden Unterwürfel zu erzeugen, wird in dem Dokument US-A-5748176 gelehrt. Das Verfahren für die Erzeugung der Unterwürfelscheitelwerte, das in dieser mitanhängigen Anmeldung offenbart ist, erfordert jedoch eine große Anzahl von Berechnungen. Es besteht ein Bedarf nach einem Verfahren zum Erzeugen der Unterwürfelscheitelwerte, das rechentechnisch effizienter ist.
  • In 1a ist ein Würfelgitter 1 gezeigt. Das Würfelgitter ist aus einer Mehrzahl von Würfeln gebildet, wobei die Scheitel der Würfel Werte in dem Ausgangsfarbraum darstellen. Die Eingangsfarbraumwerte sind jeweils in einen oberen Abschnitt und einen unteren Abschnitt unterteilt. Der obere Abschnitt von jedem der Eingangsfarbraumwerte dient als ein Index zum Adressieren der Scheitelwerte des Würfelgitters 1, der für Interpolation verwendet wird. Der untere Teil von jedem der Eingangsfarbraumwerte wird verwendet, um zwischen den Ausgangsfarbraumwerten zu interpolieren, auf die unter Verwendung des unteren Teils des Eingangsfarbraumwerts zugegriffen wird. Jede der Abmessungen des Würfelgitters 1 entspricht einer der Komponenten des Eingangsfarbraumwerts. Die Werte, die den Scheiteln des Würfelgitters 1 zugeordnet sind, werden verwendet, um Ausgangsfarbraumwerte zu erzeugen.
  • Jeder der Ausgangsfarbraumwerte hat mehrere Komponenten, die den Abmessungen des Ausgangsfarbraums entsprechen. Die Umwandlung wird von Eingangsfarbraumwerten zu Komponenten der Ausgangsfarbraumwerte durchgeführt. Die Umwandlung zu jeder Ausgangsfarbraumwertkomponente verwendet einen bestimmten Satz von Scheitelwerten. Für den Fall, in dem es drei Komponenten für jeden der Ausgangsfarbraumwerte gibt, gibt es drei Sätze von Scheitelwerten, die für die Farbraumumwandlung verwendet werden. Für diesen Fall wäre es möglich, jeden Scheitelwert als aus drei Werten gebildet anzusehen, wobei jeder der drei Werte von einem der drei Sätze ausgewählt ist. Wenn die Scheitelwerte auf diese Weise betrachtet werden, würde die Umwandlung zu jeder der Komponenten der Ausgangsfarbraumwerte parallel durchgeführt werden. Es ist auch möglich, die Umwandlung zu jeder der Ausgangsfarbraumkomponenten seriell durchzuführen. Wenn dieselbe auf diese Weise durchgeführt wird, kann die Umwandlung so betrachtet werden, daß sie drei getrennte Würfelgitter verwendet, wobei eines jedem Satz von Scheitelwerten entspricht.
  • In 1b ist eine allgemeine graphische Darstellung des Interpolationsprozesses gezeigt. Man betrachte beispielsweise die Umwandlung eines Eingangsfarbraumwerts (a, b, c) 10, der eine Farbe in einem zylindrischen Farbraum darstellt, zu einem Ausgangsfarbraumwert (x, y, z) 11, der die gleiche Farbe in einem kartesischen Farbraum darstellt. Bei diesem Beispiel sind sowohl a, b als auch c durch acht Bits dargestellt. Jede der drei Gruppen von acht Bits kann unterteilt werden, beispielsweise in vier obere Bits 10a (dargestellt durch au, bu und cu) und vier untere Bits 10b (dargestellt durch al, bl und cl). Die drei Gruppen von vier oberen Bits 10a werden als ein Index in das Würfelgitter 1 verwendet, um die acht Werte wiederzugewinnen, die den Scheiteln eines Würfels in dem Würfelgitter 1 entsprechen, das als Interpolationsdatenwerte verwendet werden. Die drei Gruppen von vier unteren Bits 10b werden dann verwendet, um zwischen den acht Interpolationsdatenwerten, die den Scheiteln des Würfelgitters 1 entsprechen, zu interpolieren, um eine Komponente des Ausgangsfarbraumwerts 11 zu erzeugen.
  • Ein Durchschnittsfachmann auf diesem Gebiet wird erkennen, daß andere Unterteilungen der Bits des Eingangsfarbraumwerts 10 möglich sind. Die spezielle Unterteilung der Bits hängt von Dingen ab, wie z. B. der Speichergröße, die verfügbar ist, um die Werte des Ausgangsfarbraums zu speichern, der für die Interpolation verwendet wird, und der Änderungsbetrag bei dem Ausgangsfarbraumwert, der zwischen Scheiteln des Würfelgitters 1 erscheint. Es gibt einen Kompromiß zwischen der Genauigkeit der Interpolation und der Speichergröße, die verwendet wird, um die Ausgangsfarbraumwerte zu speichern, die als die Interpolationsdatenwerte verwendet werden. Falls die Charakteristika des Aus gangsfarbraums derart sind, daß derselbe sich relativ linear durch den Farbraum ändert, dann sind weniger Scheitel in dem Würfelgitter 1 notwendig, um einen annehmbaren Interpolationsgenauigkeitspegel zu liefern.
  • Der Index, der durch au, bu und cu gebildet wird, dient als ein Eintrittspunkt in das Würfelgitter. Der Index adressiert einen Scheitel der acht Scheitel des Würfels, die als die Interpolationsdatenwerte verwendet werden. Jeder der Scheitel des Würfels entspricht einem Wert, der zum Interpolieren verwendet wird, um eine Komponente des Ausgangsfarbraumwerts 11 zu erzeugen. Die acht zugeordneten Scheitel eines Würfels in dem Würfelgitter 1 haben die folgenden relativen Adressen:
    • (au, bu, cu)
    • (au + 1, bu, cu)
    • (au, bu + 1, cu)
    • (au, bu, cu + 1)
    • (au + 1, bu + 1, cu)
    • (au + 1, bu, cu + 1)
    • (au, bu + 1, cu + 1)
    • (au + 1, bu + 1, cu + 1)
  • Das Würfelunterteilungsinterpolationsverfahren, das in dem Dokument US-A-5748176 offenbart ist, führt eine Interpolation durch Erzeugen eines Unterwürfels unter Verwendung der Werte durch, die den Scheiteln des vorher erzeugten Unterwürfels zugeordnet sind. Der Anfangswürfel, der durch die Scheitelwerte gebildet wird, die den drei Gruppen von Bits höherer Ordnung (au, bu, cu) 10a zugeordnet sind, wird verwendet, um den ersten Unterwürfel zu erzeugen. Dieser Anfangswürfel kann in acht Unterwürfel unterteilt werden. Diese drei Gruppen von Bits niedrigerer Ordnung 10b (al, bl, cl) werden verwendet, um einen der acht möglichen Unterwürfel auszuwählen, die für die nächste Iteration der Unterwürfeldivision gebildet werden. Diese drei Gruppen von Bits niedrigerer Ordnung 10b identifizieren, in welchem der acht möglichen Unterwürfel das Ergebnis der Interpolation positioniert sein wird. Wenn der Unterwürfel, der das Ergebnis der Interpolation enthält, identifiziert ist, wird dieser Unterwürfel verwendet, um den nächsten Unterwürfel zu erzeugen, der das Ergebnis der Interpolation enthält. Dieser Prozeß wird nachfolgend wiederholt, bis der letzte Unterwürfel, der das Ergebnis der Interpolation enthält, erzeugt wird. Einer der Werte, der einem Scheitel dieses letzten erzeugten Unterwürfels zugeordnet ist, wird als das Ergebnis der Interpolation verwendet.
  • 2a bis 2d stellen graphisch die Auswahl eines Unterwürfels dar, unter Verwendung der drei Gruppen von Bits niedrigerer Ordnung 10b (al, bl, cl). Zum Zweck der Erklärung der Unterwürfelauswahl betrachte man den Fall, in dem die Bits niedrigerer Ordnung 10b für jede Komponente des Eingangsfarbraumwerts aus vier Bits bestehen. In jeder der 2a bis 2d sind die Achsen gezeigt, die der a-, b- und c-Komponente des Eingangsfarbraumwerts entsprechen. Jede dieser Achsen entspricht einer Abmessung des Eingangsfarbraums. Unterwürfel werden unter Verwendung eines entsprechenden Bits (entsprechend in dem Sinne, daß dieselben Koeffizienten der gleichen Potenz von 2 sind) von den Bits niedrigerer Ordnung 10b von jeder Komponente des Eingangsfarbraumwerts bestimmt. Jede Bitposition der Bits niedrigerer Ordnung 10b von jeder Komponente kann so gesehen werden, daß sie den Würfel entlang der Abmessung, die dieser Komponente entspricht, halbiert. Der Wert des Bits für jede Komponente bestimmt, welche Hälfte des Würfels in der entsprechenden Abmessung ausgewählt wird, zum Zweck der Bestimmung, in welchem Unterwürfel das Ergebnis der Interpolation positioniert ist. Der ausgewählte Unterwürfel ist das Volumen, definiert durch die Schnittstelle der Würfelhälften, die durch die entsprechenden Bits jeder Komponente der Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts ausgewählt werden. Falls das Bit der Bits niedrigerer Ordnung 10b für die Komponente eine „1" ist, wird eine Ecke der ausgewählten Würfelhälfte entlang der entsprechenden Achse von dem Ursprung des Würfels um die Hälfte der Länge verschoben. Falls das Bit der Komponente eine „0" ist, umfaßt die Ecke der ausgewählten Würfelhälfte den Ursprung des Würfels. In 3a bis 3h sind die acht möglichen Unterwürfel gezeigt, die durch die gemeinsame Schnittstelle der Würfelhälften definiert sind, die durch das entsprechende Bit von al, bl und cl bestimmt sind.
  • Durch Numerieren der Scheitel der Würfel auf eine Weise, die der Zuweisung der Gruppen von Bits niedrigerer Ordnung 10b der Komponenten der Eingangsfarbraumwerte zu den Achsen entspricht, wird der Scheitel des Würfels, der zum Erzeugen des Unterwürfels verwendet wird, der einem Scheitel des Unterwürfels zugeordnet ist, der erzeugt werden soll, durch den binären Wert bestimmt, der durch Kombinieren der entsprechenden Bits von jeder der Gruppen von Bits niedrigerer Ordnung 10b der Komponenten gebildet wird. In 4 ist ein Würfel gezeigt, mit den Achsen gekennzeichnet und mit den Scheiteln numeriert. Der Würfel, der zum Erzeugen eines Unterwürfels verwendet wird, und der erzeugte Unterwürfel haben einen Scheitel gemeinsam. Mit dieser Zuweisung der Scheitelnummern ist die Nummer des Scheitels des Würfels, der zum Erzeugen des Unterwürfels verwendet wird, der in dem erzeugten Unterwürfel enthalten ist, der binäre Wert, der von den entsprechenden Bits von al, bl und cl für eine gegebene Bitposition gebildet wird.
  • Ein Beispiel wird erklärt, um die Interpolation darzustellen, die die Unterwürfelerzeugung verwendet. Angenommen, die folgenden Werte werden für al, bl und cl verwendet:
  • Tabelle 1
    • al = 1010
    • bl = 1110
    • cl = 0011
  • Wenn diese Werte al, bl und cl zugewiesen sind, ist der Scheitel Nummer 6 (berechnet durch Auswählen des höchstwertigsten Bits von al, bl und cl und Verketten derselben in einen binären Wert) des Würfels, der zum Erzeugen des ersten Unterwürfels verwendet wird, auch ein Scheitel des ersten Unterwürfels. Der Scheitel des ersten Unterwürfels, der in dem erzeugten zweiten Unterwürfel enthalten ist, ist der Scheitel Nummer 2 (berechnet durch Auswählen des zweithöchstwertigsten Bits von jeweils al, bl und cl und Verketten derselben in einen binären Wert). Der Scheitel des zweiten Unterwürfels, der in dem dritten erzeugten Unterwürfel enthalten ist, ist Scheitel Nummer 7 (berechnet durch Auswählen des dritthöchstwertigsten Bits von jeweils al, bl und cl und Verketten derselben in einen binären Wert). Der Scheitel des dritten Unterwürfels, der in dem vierten erzeugten Unterwürfel enthalten ist, ist Scheitel Nummer 1 (berechnet durch Auswählen des vierthöchstwertigsten Bits von jeweils al, bl und cl und Verketten derselben in einen binären Wert). Die Scheitelwerte des ersten Unterwürfels werden mit den Scheitelwerten erzeugt, auf die unter Verwendung der Bits höherer Ordnung (au, bu, cu) 10a der Komponenten des Eingangsfarbraumwerts zugegriffen wird. Die Scheitelwerte des zweiten Unterwürfels werden unter Verwendung der Scheitelwerte erzeugt, die für den ersten Unterwürfel erzeugt werden. Die Scheitelwerte des dritten Unterwürfels werden unter Verwendung der Scheitelwerte erzeugt, die für den zweiten Unterwürfel erzeugt werden. Schließlich werden die Scheitelwerte des vierten Unterwürfels unter Verwendung der Scheitelwerte erzeugt, die für den dritten Unterwürfel erzeugt werden. Bei der Unterwürfelinterpolation ist der Wert, der dem Scheitel Nummer 0 des letzten erzeugten Unterwürfels zugeordnet ist, der Wert, der als das Ergebnis der Interpolation verwendet wird. Dieses Ergebnis ist eine Komponente des Ausgangsfarbraumwerts. Diese Unterwürfelerzeugungsprozedur könnte mit einer beliebigen Anzahl von Bits angewendet werden, die verwendet werden, um jede Komponente der Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts zu spezifizieren.
  • Bisher wurden eine Vielzahl von Verfahren für die Erzeugung der Unterwürfelwerte verwendet. Diese Verfahren umfassen Tetraeder, Pyramide, Prisma und trilinear. Die radiale Unterwürfelerzeugung ist ein neues Verfahren der Unterwürfelerzeugung, das eine wesentliche Reduktion bei der Rechenkomplexität erreicht, die erforderlich ist, um die Unterwürfel zu erzeugen. Es sollte klar sein, daß jedes Interpolationsverfahren unterschiedliche Ergebnisse erzeugen kann, weil der Interpolationsprozeß eine Näherung der Farbraumumwandlung ist. Abhängig von der Position in dem Farbraum, wo die Umwandlung durchgeführt wird, und den bevorzugten Charakteristika des Ergebnisses, kann ein Verfahren wünschenswertere Ergebnisse erzielen als ein anderes.
  • In 5 ist eine graphische Darstellung des radialen Unterwürfelerzeugungsverfahrens gezeigt. Das deutliche Erklären des radialen Unterwürfelerzeugungsprozesses erfordert eine gewisse Notationsdefinition. Wie es vorher der Fall war, bezeichnen al, bl und cl die Bits niedrigerer Ordnung 10b der jeweiligen Komponenten a, b und c des Eingangsfarbraumwerts. Der Wert der Variable i wird verwendet, um die Bitposition in den Bits niedrigerer Ordnung 10b (al, bl, cl) zu bestimmen, wie es nachfolgend gezeigt ist, für den Fall, in dem vier Bits verwendet werden, um jede Komponente der Bits niedrigerer Ordnung 10b zu bestimmen. Der maximale Wert von i (ein Wert von 3) entspricht der höchstwertigsten Bitposition der Bits niedrigerer Ordnung 10b. Der minimale Wert von i (ein Wert von 0) entspricht der niedrigstwertigsten Bitposition der Bits niedrigerer Ordnung 10b. Wie es für einen Durchschnittsfachmann auf diesem Gebiet offensichtlich ist, kann diese Notation ohne weiteres an eine unterschiedliche Anzahl von Bits angepaßt werden, die für jede Komponente der Bits niedrigerer Ordnung 10b verwendet wird. Für n Bits, die verwendet werden, um die Bits niedrigerer Ordnung 10b darzustellen, reicht der Wert von i von n – 1 bis 0.
  • Figure 00230001
    Tabelle 2
  • Unter Verwendung dieser Notation zeigt der Wert von i indirekt die Iteration der Unterwürfelerzeugung an. Ein Wert von i = 3 entspricht der Erzeugung des ersten Unterwürfels. Der erste Unterwürfel umfaßt den Scheitel Nummer 6 von dem Würfel, der durch Zugreifen auf die Werte des Würfelgitters 1 unter Verwendung der Bits höherer Ordnung 10a gebildet wird. Für den Wert von i = 0 wird der vierte Unterwürfel erzeugt. Dieser vierte Unterwürfel umfaßt den Scheitel Nummer 1 von dem dritten erzeugten Unterwürfel. Um die Scheitelnummer des Würfels zu bestimmen, der zum Erzeugen des Unterwürfels verwendet wird, der in dem Unterwürfel enthalten ist, wird die folgende Gleichung verwendet: v(i) = 4al(i) + 2bl(i) + cl(i) Gl. 1a
  • In der Gleichung 1a stellt v(i) die Scheitelnummer des Würfels dar, der in dem erzeugten Unterwürfel enthalten ist. al(i), bl(i) und cl(i) stellen jeweils den binären Wert dar, der der „i-ten" Position in der jeweiligen Komponente der Bits niedrigerer Ordnung 10b zugeordnet ist. Für jeden Wert von i ergibt die Gleichung 1a die korrekte Nummer des Scheitels des Würfels, der verwendet wird, um den Unterwürfel zu erzeugen, der in dem gewünschten Unterwürfel enthalten sein wird. Die Werte, die i annehmen kann, umfassen die Ganzzahl von n – 1 bis einschließlich 0, wobei n die Anzahl von Bits ist, die verwendet werden, um jede der Komponenten der Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts zu spezifizieren. Der Wert des Scheitels mit der Nummer v(i) wird durch P[v(i)] bestimmt. Die Gleichung 1a kann für den Eingangsfarbraumwert 10 verallgemeinert werden, der aus d Komponenten gebildet ist. Nachfolgend ist ein verallgemeinerter Ausdruck für v[i] gegeben: v[i] = 2d-1 × lbl[i] + 2d-2 × lb2[i] + 2d-3 × lb3[i] + ... + 2d-d × lbd[i] Gl. 1b
  • Bei der Gleichung 1b stellen jedes der „lb" die Bits niedrigerer Ordnung 10b von einer der d Komponenten des Eingangsfarbraumwerts 10 dar. Wie bei der Gleichung 1a umfassen die Werte von i die Ganzzahlen von n – 1 bis einschließlich 0.
  • Die Werte, die den acht Scheiteln des Unterwürfels zugeordnet sind, werden von dem Würfel erzeugt, wie es in Tabelle 3 gezeigt ist. Diese Scheitelwerte, die durch P' bezeichnet sind [Unterwürfelscheitelnummer], stellen Unterwürfelscheitelwerte dar, und die Scheitelwerte, die durch P bezeichnet sind [Würfelscheitelnummer], stellen die Scheitelwerte des Würfels dar, die verwendet werden, um die Unterwürfelscheitelwerte zu erzeugen. Ein gegebener Wert eines Unterwürfelscheitels wird erzeugt durch Mitteln des entsprechenden Scheitelwerts des Würfels, von dem der Unterwürfel erzeugt wird, mit dem Wert des Scheitels des Würfels, der verwendet wird, um den Unterwürfel zu erzeugen, der in dem Unterwürfel enthalten ist (dieser Wert ist mit P[v(i)] bezeichnet).
  • Tabelle 3
    • P'[7] = (P[7] + P[v(i)]) ÷ 2
    • P'[6] = (P[6] + P[v(i)]) ÷ 2
    • P'[5] = (P[5] + P[v(i)]) ÷ 2
    • P'[4] = (P[4] + P[v(i)]) ÷ 2
    • P'[3] = (P[3] + P[v(i)]) ÷ 2
    • P'[2] = (P[2] + P[v(i)]) ÷ 2
    • P'[1] = (P[1] + P[v(i)]) ÷ 2
    • P'[0] = (P[0] + P[v(i)]) ÷ 2
  • In 6a bis 6e ist eine graphische Darstellung mehrerer Iterationen des Unterwürfeldivisionsprozesses gezeigt, der bei der radialen Interpolation verwendet wird. Die Werte, die für die Komponenten der Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts in dem Beispiel von 6 verwendet werden, sind die gleichen wie diejenigen, die in Tabelle 2 gezeigt sind. Die Werte der Scheitel des Würfels, der für die Erzeugung des ersten Unterwürfels verwendet wird (auf diese Werte wird unter Verwendung der Bits höherer Ordnung 10a des Eingangsfarbraumwerts zugegriffen), werden von einer Farbtabelle geladen, die in dem Speicher gespeichert ist. Nach der letzten Iteration der Unterwürfeldivision wird der Scheitel Nummer 0 des letzten Unterwürfels als das Ergebnis des Interpolationsprozesses verwendet. Um die Akkumulation von Rundungsfehlern während der tatsächlichen Berechnung der Unterwürfelscheitelwerte zu verhindern, wird die erforderliche Division durch 2 für jede Iteration der Unterwürfelerzeugung nur an den Werten der Scheitel des erzeugten letzen Unterwürfels durchgeführt. Wenn die Division auf diese Weise durchgeführt wird, ist der verwendete Divisor 2n, wobei n die Anzahl von Bits ist, die jeder Komponente der Bits niedrigerer Ordnung 10b zugewiesen sind. Eine Division durch 2n kann ohne weiteres durchgeführt werden durch Durchführen einer Verschiebeoperation nach rechts. Für den Fall, in dem n = 4 ist, ist dieser Divisor 16. Wenn die Divisionsoperation bis nach der Erzeugung der Scheitelwerte des letzen Unterwürfels nicht durchgeführt wird, reduziert sich der Unterwürfelgenerationsprozeß auf eine Reihe von Additionen von ausgewählten Scheitelwerten der erzeugten Unterwürfel.
  • In 7 ist eine Hardwareimplementierung eines radialen Interpolators 100 gezeigt. Außerdem stellt 7 den Fortschritt der radialen Interpolation durch den radialen Interpolator 100 unter Verwendung von Werten für v[i] dar, die den Bits niedrigerer Ordnung 10b der Tabelle 2 entsprechen. Jeder der Werte (P[0] bis P[7]), der den acht Schei teln zugeordnet ist, die unter Verwendung der Bits höherer Ordnung 10a ausgewählt wurde, ist zu einem Multiplexereingang des ersten Multiplexers 101 gekoppelt. Der Wert von v[i] für i = 3 ist zu dem Steuereingangssignal des ersten Multiplexers 101 gekoppelt. Der Wert von v[i] für i = 3 wird verwendet, um den Wert auszuwählen, der dem Scheitel des Würfels zugeordnet ist, der unter Verwendung der Bits höherer Ordnung 10a ausgewählt wurde, die in dem ersten erzeugten Unterwürfel enthalten sind. Das Ausgangssignal des ersten Multiplexers 101 ist zu einem ersten Eingangssignal jedes Addierers eines ersten Satzes von Addierern 102 gekoppelt, der aus acht Addierern besteht. Das zweite Eingangssignal jedes Addierers des ersten Satzes von Addierern 102 ist zu einem der Werte gekoppelt, die unter Verwendung der Bits höherer Ordnung 10a ausgewählt wurden. Der erste Multiplexer 101 und der erste Satz von Addierern 102 bilden eine erste Stufe des radialen Interpolators 100. Es ist ersichtlich, daß bei dieser Konfiguration des Multiplexers 101 und des ersten Satzes von Addierern 102 die Mittelwertbildungsoperationen von Tabelle 3 (ohne die Division durch 2, die, wie vorher erwähnt wurde, verzögert wird, bis alle Iterationen der radialen Interpolation abgeschlossen sind) für eine einzige Iteration der radialen Interpolation abgeschlossen sind. Eine zweite, dritte und vierte Stufe des radialen Interpolators 100 sind jeweils aus einem zweiten Multiplexer 103 und einem zweiten Satz von Addierern 104, einem dritten Multiplexer 105 und einem dritten Satz von Addierern 106 und einem vierten Multiplexer 107 und einem vierten Satz von Addierern 108 gebildet. Die Steuereingangssignale des zweiten 103, dritten 105 und vierten 107 Multiplexereingangssignals sind jeweils gekoppelt zu v[i = 2], v[i = 1] und v[i = 0]. Die zweite, dritte und vierte Stufe des radialen Interpolators führen aufeinanderfolgende Iterationen der radialen Interpolation durch, wobei jede Iteration die Beziehungen von Tabelle 3 verwendet (erneut durch Verzögern der Division durch 2 bis zum Abschluß aller Iterationen).
  • In 8 ist ein Flußdiagramm hoher Ebene eines Verfahrens zum Durchführen einer einzigen Iteration einer radialen Interpolation gezeigt. Zunächst werden 2d Interpolationsdatenwerte unter Verwendung Bits höherer Ordnung 10a ausgewählt 200. Für den Fall, in dem die radiale Interpolation für eine Farbraumumwandlung verwendet wird, entsprechen die Interpolationsdatenwerte den Scheitelwerten des ausgewählten Würfels. Außerdem ist für eine Farbraumumwandlung d typischerweise gleich 3, der Anzahl von Komponenten des Eingangsfarbraumwerts 10. Nachdem Scheitelwerte ausgewählt sind 200, wird die Scheitelnummer des Scheitelwerts, der für diese Iteration erforderlich ist, berechnet 201. Für d = 3 wird die Gleichung 1a verwendet, um die erforderliche Scheitelnummer zu berechnen 201. Abhängig von der Iteration der radialen Interpolation kann der Wert von i, der verwendet wird, um v[i] zu berechnen, von i = 3 bis i = 0 reichen. Nach der Berechnung 201 der Scheitelnummer wird einer der 2d Interpolationsdatenwerte unter Verwendung der berechneten Scheitelnummer ausgewählt 202. Schließlich wird ein Satz von 2d Mittelwerten gemäß den Beziehungen von Tabelle 3 berechnet 203. Um Rundungsfehler zu vermeiden, werden die erforderlichen Divisionen durch 2 zum Mittelwertbilden verzögert, bis alle Iterationen der Interpolation durchgeführt sind.
  • Es wurde erkannt, daß die Anzahl von Berechnungen, die erforderlich sind, um eine radiale Interpolation durchzuführen, wie es in 7 gezeigt ist, wesentlich reduziert werden könnten. Die Untersuchung des radialen Interpolationsprozesses von 7 offenbart, daß die Bestimmung des Interpolationsergebnisses nicht die Verwendung aller acht Scheitelwerte erfordert, auf die durch die Bits höherer Ordnung 10a zugegriffen wird, noch die Verwendung aller in 7 gezeigten Addierer erfordert. In 9 ist eine schematische Darstellung der beschnittenen radialen Interpolation gezeigt. 9 ist verständlich durch Zurückarbeiten von dem in 7 gezeigten Interpolationsergebnis, um die Werte der Scheitel (auf die unter Verwendung der Bits höherer Ordnung 10a zugegriffen wird) zu bestimmen, die erforderlich sind, um das Ergebnis zu erzeugen. Wie es vorher erwähnt wurde, wird der Wert des Scheitels Nummer 0 (P[0]) des letzten Unterwürfels, der erzeugt wird, als das Ergebnis der Interpolation verwendet. Unter Verwendung der in Tabelle 3 aufgelisteten Gleichungen (ohne die Division durch 2) können die Scheitel des Unterwürfels unmittelbar vor dem letzen Unterwürfel, die verwendet werden, um den Wert der Scheitelnummer 0 des letzten Unterwürfels zu berechnen, bestimmt werden. Gleichartig dazu können die Gleichungen, die in Tabelle 3 aufgelistet sind, verwendet werden, um die Scheitel des Unterwürfels zwei vor dem letzen Unterwürfel zu bestimmen, die notwendig sind, um die benötigten Scheitel des Unterwürfels unmittelbar vor dem letzen Unterwürfel zu bestimmen.
  • Dieses Verfahren zum Bestimmen der Scheitel von jedem der Unterwürfel, die notwendig sind, um P[0] des letzen Unterwürfels zu berechnen, wird mit jedem Wert von i von 0 bis 3 für den Fall durchgeführt, in dem n = 4 ist. Wenn dies durchgeführt wird, zeigt das Ergebnis, daß die Werte, die verwendet werden, um P[0] des letzen Unterwürfels zu berechnen, aus nur einigen der Werten bestehen, die den Scheiteln des Würfels entsprechen, auf den durch die Bits höherer Ordnung 10a des Eingangsfarbraumwerts zugegriffen wird. Als Folge werden nur 10 der 32 Addierer von 7 zum Berechnen eines Interpolationsergebnisses von einem gegebenen Eingangsfarbraumwert 10 verwendet. Für die Werte der Bits niedrigerer Ordnung 10b, die in Tabelle 2 gezeigt sind, sind die Scheitelnummern des Würfels, auf die durch die Bits höherer Ordnung 10a zugegriffen wird, denen die Werte entsprechen, die verwendet werden, um P[0] des letzen Unterwürfels zu berechnen: 0, 6, 2, 7 und 1. Die Werte der Scheitel des Würfels, auf die durch die Bits höherer Ordnung 10b zugegriffen wird, die dem entsprechen, sind: P[0], P[6], P[2], P[7] und P[1]. Im allgemeinen sind die Werte der Scheitel des Würfels, auf die unter Verwendung der Bits höherer Ordnung 10a zugegriffen wird, die verwendet werden, um P[0] des letzten Unterwürfels zu berechnen: P[0], P[v(i = 3)], P[v(i = 2)], P[v(i = 1)], P[v(i = 0)]. Der allgemeine Ausdruck, der für n = 4 abgeleitet werden kann, ist: P[0]letzter Unterwürfel = ({8 × P[v(i = 3)]} + {4 × P[v(i = 2)]} + {2 × P[v(i = 1)]} + P[v(i = 0)] + P[0] ÷ 16 Gl. 2
  • Die Gleichung 2 ist ein Ausdruck zum Berechnen eines Ergebnisses unter Verwendung einer beschnittenen radialen Interpolation mit n = 4. Ein verallgemeinerter Ausdruck für die beschnittene radiale Interpolation ist:
    Figure 00290001
  • Die Gleichung 3 kann verwendet werden, um die Berechnung des beschnittenen radialen Interpolationsergebnisses zu verallgemeinern. Es sollte angemerkt werden, daß in Gleichung 2 und dem verallgemeinerten Ausdruck in Gleichung 3 der Wert, der der Scheitelnummer 0 des Würfels zugeordnet ist, der unter Verwendung der Bits höherer Ordnung 10a ausgewählt wird, immer verwendet wird. Würde der Wert einer anderen Scheitelnummer als der Scheitelnummer 0 des letzen Unterwürfels, der erzeugt wurde, als das Ergebnis der Interpolation verwendet, würde der Wert dieser Scheitelnummer des ursprünglich ausgewählten Würfels statt P[0] verwendet werden.
  • Die Hardwarefunktionsblöcke, die erforderlich sind, um die beschnittene radiale Interpolation durchzuführen, umfassen Addierer und Multiplexer. Mit D Abmessungen in dem Ausgangsfarbraum und n Bits, die jede Gruppe von Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts darstellen, können die Anforderungen der Hardwareimplementierung der beschnittenen radialen Interpolation wie folgt berechnet werden: Anzahl von Addierern = D × (n + 1) Gl. 4 Anzahl von Multiplexern = D × n Gl. 5
  • Es sollte angemerkt werden, daß der zusätzliche Addierer, der in Gleichung 4 spezifiziert ist, zum Zweck des Rundens verwendet wird. Zusätzliche Operationen, die durch die Hardware durchgeführt werden müssen, umfassen Multiplikation, Division und Verkettung. Die Multiplikations- und Divisionsoperationen mit einer Potenz von 2 können durch Verschieben von Bitpositionen durchgeführt werden. In Hardware wird dieses Verschieben erreicht durch Verbinden einer Leitung, die einem Bit entspricht, mit einer Position höherer Ordnung für die Multiplikation oder mit einer Position niedrigerer Ordnung für die Division. In Hardware wird eine Verkettung erreicht durch Gruppieren von Leitungen, die Bitpositionen entsprechen. Daher können die Multiplikations-, Divisions- und Verkettungsoperationen durchgeführt werden, ohne daß zusätzliche Hardware hinzugefügt werden muß.
  • Um den Gatterpegelentwurf zu erzeugen, der notwendig ist, um die beschnittene radiale Interpolation in Hardware zu implementieren, kann eine üblicherweise verwendete Hardwarebeschreibungssprache, wie z. B. VHDL, verwendet werden. In 39 ist eine Auflistung des VHDL-Codes enthalten, der eine Hardwareimplementierung einer beschnittenen radialen Interpolation erzeugen kann.
  • In 10 ist eine Hardwareimplementierung eines beschnittenen radialen Interpolators 300 für n = 4 gezeigt. Es sollte klar sein, daß die in 10 gezeigte Hardwareimplementierung verwendet werden kann, um eine einzige Komponente des Ausgangsfarbraumwerts 11 zu erzeugen. Diese gleiche Hardware könnte wiederholt für zusätzliche (D-1) Durchläufe verwendet werden, um die verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11 zu erzeugen. Oder es könnte zusätzliche (D-1) Duplikationen der in 9 gezeigten Hardwareimplementierung geben, um jede der D Komponenten gleichzeitig zu erzeugen. Der beschnittene radiale Interpolator 300 ist eine Hardwareimplementierung der Gleichung 2 ohne die Division durch 16. Die Division durch 16 könnte durch Bitverschiebung des Ergebnisses der Additionen erreicht werden. Die Auswahl von vier der fünf Scheitelwerte (P[6], P[2], P[7] und P[1]), die verwendet werden, um das Interpolationsergebnis zu berechnen, erfordert vier Multiplexer 301304.
  • Die vier erforderlichen Additionen werden unter Verwendung von vier Addierern 305308 erreicht. Der fünfte Scheitelwert, der für die Berechnung des Interpolationsergebnisses P[0] erforderlich ist, ist in die Eingänge von einem der Addierer fest verdrahtet. Es sollte angemerkt werden, daß aufgrund der assoziativen Eigenschaft der Addition die Hardwareimplementierung von 10 implementiert werden kann, so daß die Additionen in einer Anzahl von unterschiedlichen Reihenfolgen durchgeführt werden. Die in 1 gezeigte Reihenfolge minimiert die Ausbreitungsverzögerung durch den Addierer. Ferner können andere Einrichtungen zum Addieren verwendet werden. Beispielsweise könnte ein einzelner Addierer, der eine ausreichende Anzahl von Eingängen aufweist, verwendet werden. Oder ein Mikroprozessor könnte verwendet werden, um die Additionen zu erreichen.
  • Die drei Multiplikationsoperationen 309311 entsprechen der Multiplikation mit den Koeffizienten 8, 4 und 2 der ersten drei Terme auf der rechten Seite der Gleichung 2. Es sollte angemerkt werden, daß die Multiplikationsoperationen 309311 in Hardware erreicht werden durch Führen der Leitungen entsprechend den Bitpositionen auf jeden der entsprechenden Multiplexerausgangssignale. Daher werden diese Multiplikationen ohne zusätzliche Hardwarekosten implementiert. Es ist möglich, die Multiplikationen durch das Führen von Leitungen zu implementieren, weil alle Koeffizienten Potenzen von 2 sind.
  • Ein Durchschnittsfachmann auf diesem Gebiet erkennt, daß die in 10 gezeigte Hardwareimplementierung für Werte von n größer 4 oder kleiner als 4 angepaßt werden kann. Man betrachte die Hardwareimplementierung eines beschnittenen radialen Interpolators für n = 1. Diese Hardwareimplementierung einer beschnittenen radialen Interpolation wäre sinnvoll für eine Interpolation, die eine einzelne Iteration von Würfelunterteilung durchführt, und dann einen der Scheitelwerte des erzeugten Unterwürfels als das Interpolationsergebnis auswählt. Diese Hardwareimplementierung der beschnittenen radialen Interpolation erfordert nur einen einzigen Multiplexer und einen einzigen Addierer (selbstverständlich erfordert das Runden am Ende einen zusätzlichen Addierer, aber dieser zusätzliche Addierer ist in 10 nicht gezeigt).
  • In 11 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens für eine beschnittene radiale Interpolation für die Eingangsfarbraumwerte 10 mit d Komponenten mit jedem Satz von Bits niedrigerer Ordnung 10b mit n Bits gezeigt. Zunächst werden n Werte unter Verwendung der Gleichung 1b berechnet 400, danach werden n + 1 Interpolationsdatenwerte (die den Scheitelwerten in einer Farbraumumwandlung entsprechen) unter Verwendung der berechneten n Werte und Bits höherer Ordnung 10a ausgewählt 401. Schließlich wird das Interpolationsergebnis durch Multiplizieren und Addieren der ausgewählten n + 1 Interpolationsdatenwerte gemäß Gleichung 3 berechnet 402.
  • Eine Softwareimplementierung der beschnittenen radialen Interpolation ist rechentechnisch sehr effizient. Mit d Eingangsabmessungen, D Ausgangsabmessungen und 2n Werten zwischen Scheiteln des Würfelgitters 1 kann die Anzahl von Berechnungen, die erforderlich, sind, um ein Interpolationsergebnis zu erzeugen, berechnet werden als: Anzahl von ALU-Operationen = 2 × n × (d + D – 1) + D Gl. 6
  • Die Anzahl von Speicherzugriffen, die erforderlich sind, um das Interpolationsergebnis zu erzeugen, können berechnet werden als: Anzahl von Speicherzugriffen = D × (n + 1) Gl. 7
  • Es sollte angemerkt werden, daß anders als viele Interpolationsverfahren, sowohl die Anzahl der ALU-Operationen als auch die Anzahl von Speicherzugriffen bei D, d und n linear sind, was zu der relativen Recheneffizienz der beschnittenen radialen Interpolation führt.
  • In 12 ist ein Flußdiagramm hoher Ebene eines Verfahrens gezeigt, das in Software implementiert ist, um die beschnittene radiale Interpolation durchzuführen. Zunächst wird eine Bestimmung 500 durchgeführt, ob irgendeine der Komponenten des Eingangsfarbraumwerts (a, b, c) 10 einer Position an einer äußeren Grenze des Würfelgitters 1 entspricht. Dies ist der Fall, falls eine oder mehrere der Komponenten des Eingangsfarbraumwerts einen hexadezimalen Wert von FF aufweist. Falls dies der Fall ist, dann wird den Komponenten des Eingangsfarbraumwerts 10, die einen hexadezimalen Wert von FF aufweisen, zum Zweck des Erzeugens des Index in das Würfelgitter 1 zum Wiedergewinnen der notwendigen Scheitelwerte ein hexadezimaler Wert von 100 zugewiesen 501.
  • Das Zuweisen eines hexadezimalen Werts von 100 zu den hexadezimalen Eingangsfarbraumwerten von FF wird durchgeführt zum Adressieren eines speziellen Falles in der Interpolation. Um diesen speziellen Fall darzustellen, betrachte man die Darstellung der Eingangsfarbraumwerte 10 durch acht Bits für jede Komponente, wobei jede Komponente in vier Bits höherer Ordnung und vier Bits niedrigerer Ordnung unterteilt ist. Mit dieser Unterteilung können die Bits höherer Ordnung die hexadezimalen Indexwerte 00, 10, 20, 30, ... F0 für jede Komponente bilden. Die vier Bits niedrigerer Ordnung für jede Komponente werden verwendet, um zwischen den Ausgangsfarbraumwerten 11 zu interpolieren, auf die unter Verwendung der Indexwerte zugegriffen wird. Die Differenz zwischen dem Paar von Ausgangsfarbraumwerten 11, auf die unter Verwendung aufeinanderfolgender hexadezimaler Indexwerte von 00 bis F0 zugegriffen wird, wird in 16 gleichen Inkrementen gespannt. Mit jedem aufeinanderfolgenden Inkrement wird der zugeordnete Wert um 1/16 der Differenz zwischen dem zugegriffenen Paar von Ausgangsfarbraumwerten 11 erhöht, wenn von dem niedrigen Ausgangsfarbraumwert zu dem höheren Ausgangsfarbraumwert gegangen wird. Beispielsweise ist der zugeordnete Wert nach fünf Inkrementen 5/16 der Differenz zwischen dem zugegriffenen Paar von Ausgangsfarbraumwerten 11. Unter Verwendung der vier Bits niedrigerer Ordnung wird der Wert, der der entsprechenden Anzahl von Inkrementen zugeordnet ist, zu dem Ausgangsfarbraumwert 11 addiert, der unter Verwendung der Bits höherer Ordnung, zum Erzeugen des Interpolationsergebnisses ausgewählt wurde. Es ergibt sich jedoch ein Problem zwischen den Indexwerten F0 und FF (Indexwert 100 existiert nicht in der Tabelle) für jede Komponente des Eingangsfarbraumwerts 10. Zwischen F0 und FF gibt es nur 15 Inkremente und der Ausgangsfarbraumwert 11, auf den durch FF zugegriffen wird, entspricht einer äußeren Grenze des Ausgangsfarbraums. Der Interpolationsprozeß ist jedoch entworfen, um auf 16 Inkrementen zwischen den Ausgangsfarbraumwerten 11 zu arbeiten, auf die unter Verwendung der Indexwerte zugegriffen wird. Um dieses Problem zu adressieren, werden die Ausgangsfarbraumwerte 11, die dem Indexwert FF entsprechen, auf eine Position abgebildet, die eine hexadezimale Adresse von 100 aufweist. Diese Abbildung verteilt die Differenz bei den Ausgangsfarbraumwerten 11, die den hexadezimalen Indexwerten F0 und FF entsprechen, effektiv über 16 Inkremente anstatt 15. Deswegen wird es leichte Fehler geben, die sich von der Interpolation zwischen den Indexwerten F0 und FF ergeben. Obwohl dies in den Hardwareblockdiagrammen nicht gezeigt ist, wird die Handhabung dieses speziellen Falls in der Interpolation in den Hardwareimplementierungen der verschiedenen Interpolatorausführungsbeispiele durchgeführt.
  • Nach jeder notwendigen Neuzuweisung des Eingangsfarbraumwerts 10 werden die Indizes, die verwendet werden, um auf die Werte zuzugreifen, die den erforderlichen Scheiteln des ausgewählten Würfels in dem Würfelgitter 1 entsprechen, berechnet 502. Schließlich werden die Werte für jede Komponente des Ausgangsfarbraumwerts (x, y, z) 11 berechnet 503. In 38 dieser Beschreibung wird der Code einer Implementierung in C für n = 4 des Verfahrens hoher Ebene der in 12 gezeigten beschnittenen radialen Interpolation geliefert.
  • Es sollte klar sein, daß eine Anzahl möglicher prozessorspezifischen Optimierungen der Software zum Durchführen einer beschnittenen radialen Interpolation durchgeführt werden können. Beispielsweise kann durch Kombinieren aller Komponenten jedes Ausgangsfarbraumwerts 11 in ein einziges Wort die Anzahl von Speicherzugriffen, die erforderlich sind, um die Umwandlung zu dem Ausgangsfarbraumwert 11 durchzuführen, reduziert werden. Eine weitere mögliche Optimierung nutzt die Fähigkeit des ALU aus, 32-Bit-Operationen durchzuführen. Durch Zuweisen der Bits 0–7 eines ALU-Worts zum Handhaben der Berechnung der y-Komponente des Ausgangsfarbraumwerts und der Bits 16–23 zum Handhaben der Berechnung der x-Komponente des Ausgangsfarbraumwerts kann eine einzige Sequenz von Verschiebungen und Additionen verwendet werden, um die x- und y-Komponenten parallel zu erzeugen. Es ist auch möglich, eine beschnittene radiale Interpolation in Hardware zu implementieren. Die Recheneffizienzen, die in der Softwareimplementierung der beschnittenen radialen Interpolation vorlagen, bestehen in der Hardwareimplementierung als reduzierte Hardwareerfordernisse.
  • Die vierflächige Interpolation unterteilt den Würfel, auf den durch die Bits höherer Ordnung 10a des Farbraumein gangswerts zugegriffen wird, in eine Anzahl von Tetraedern, die für die Erzeugung des Unterwürfels verwendet werden, der das Ergebnis der Interpolation enthält. Der resultierende Unterwürfel wird dann in Tetraeder unterteilt. Zwei dieser Tetraeder werden dann verwendet, um noch einen weiteren Unterwürfel zu erzeugen, der das Ergebnis der Interpolation enthält. Die nachfolgende Teilung der erzeugten Unterwürfel in Tetraeder wird n mal durchgeführt, wobei n die Anzahl von Bits ist, die verwendet wird, um jede der Komponenten der Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts 10 darzustellen.
  • In 13 ist eine Darstellung der äußeren Grenzen eines CMY- oder eines RGB-Farbraums gezeigt. Wie es in 13 ersichtlich ist, umfassen die Scheitel des Würfels 600, der durch die äußeren Grenzen dieser Farbräume gebildet wird, Werte, die den Bestandteilfarben von jedem dieser Farbräume entsprechen. Eine Charakteristik der CMY- und RGB-Farbräume ist, daß die Diagonale, die zwischen dem weißen 601 und dem schwarzen 602 Scheitel des Farbraums verbunden ist, der Luminanzachse entspricht. Punkte entlang der Luminanzachse haben Werte, die den verschiedenen Grauschattierungen entsprechen. Wie es vorher erwähnt wurde, werden die Bits höherer Ordnung 10a des Eingangsfarbraumwerts 10 verwendet, um auf acht zugeordnete Werte zuzugreifen, die einen Würfel bilden, der in dem Würfel 600 positioniert ist. Analog zu dem Würfel 600, der den CMY- oder RGB-Farbraum darstellt, kann jeder der ausgewählten Würfel als eine Art von Miniaturfarbraum angesehen werden, wobei die Werte jedem der acht Scheitel entsprechen, die Farben aufweisen, die zu den Farben der entsprechenden Scheitel des Würfels 600 gewichtet werden. Beispielsweise ist der Scheitel des ausgewählten Würfels, der räumlich dem gelben Scheitel 603 entspricht, der Scheitel, der einen Wert am nächsten zu dem Wert für die Farbe Gelb in dem ausgewählten Würfel hat. Die anderen sieben Scheitel des ausgewählten Würfels können auf ähnliche Weise betrachtet werden. Der diagonal verbindende Scheitel 0 und der Scheitel 7 dienen dazu, eine konstante Chromalinie zwischen den Farben zu definieren, die den Scheiteln des ausgewählten Würfels zugeordnet sind.
  • Von der Reproduktion von Farben in dem Druckprozeß können sich bestimmte Artefakte ergeben. Diese Artefakte sind visuell wahrnehmbar als Farbe, die von denjenigen abweichen, die durch den Farbraumwert, der in den Druckprozeß eingegeben wird, spezifiziert werden. Die Artefakte sind besonders bemerkenswert für Eingangsfarbraumwerte, die nahe der Luminanzachse positioniert sind. Eingangsfarbraumwerte nahe der Luminanzachse entsprechen Grauschattierungen mit kleinen Mengen an Farbe. Faktoren in dem Farbreproduktionsprozeß, die die resultierende Farbe weiter von der Luminanzachse verschieben können als beabsichtigt, werden in einem Graufeld ohne weiteres wahrgenommen. Die Artefakte erscheinen als Farben in den Feldern, die nur verschiedene Grauschattierungen entlang der Luminanzachse enthalten sollten. Die Artefakte können sich unter anderem von den Charakteristika des Prozesses ergeben, der zum Drucken verwendet wird (wie z. B. ein elektrophotographischer oder ein Tintenstrahldruckprozeß), oder von Charakteristika der Farbmittel (wie z. B. Toner oder Tinte), die beim dem Druckprozeß verwendet werden. Die Veränderbarkeit bei den Parametern des Druckprozesses führt zu der Reproduktion von Farben aus der Luminanzachse, wenn die Ergebnisse hätten grau sein sollen.
  • Die vierflächige Interpolation reduziert in einigen Fällen den Grad, zu dem diese Artefakttypen wahrnehmbar sind. Die Reduktion bei Druckartefakten erscheint, weil der Wert eines Scheitels des Unterwürfels, der von dem Tetraeder erzeugt wird, unter Verwendung der Werte berechnet wird, die dem Scheitel Nummer 0 und dem Scheitel Nummer 7 zugeordnet sind. Wie es vorher erwähnt wurde, definiert die Diagonale, die zwischen dem Scheitel Nummer 0 und dem Scheitel Nummer 7 gebildet ist, eine konstante Chromalinie für den ausgewählten Würfel. Das Berechnen eines Scheitels des Unterwürfels entlang dieser Mittelpunktfarbgrenzlinie erzeugt eine Gewichtung bei der Interpolation, die dazu neigt, die Änderungsrate bei dem Ausgangsfarbraumwert zu reduzieren, während sich der Eingangsfarbraumwert 10 von der Diagonale des Würfels weg bewegt, der durch die Bits höherer Ordnung 10a ausgewählt ist. Dies wiederum neigt dazu, die Veränderbarkeit bei den Druckprozeßparametern auszugleichen, die eine Nichtgrauausgabe mit grauen Eingangsfarbraumwerten erzeugen.
  • In 14 ist eine graphische Darstellung der Erzeugung eines Unterwürfels 700 von einem Tetraeder 701 gezeigt. Jeder Wert eines Scheitels des Tetraeders 701, der verwendet wird, um den Wert eines Scheitels des Unterwürfels 700 zu berechnen, ist auch ein Wert eines Scheitels des Würfels 702, von dem der Tetraeder 701 abgeteilt wurde. Man lasse P[k] den Wert bezeichnen, der dem Scheitel k eines Würfels zugeordnet ist. Man lasse P'[k] den Wert bezeichnen, der dem Scheitel k eines Unterwürfels zugeordnet ist, der in dem Würfel mit dem Scheitel k enthalten ist. Es kann gezeigt werden, daß der Wert P'[k] berechnet wird als: P'[k] = {P[k & v(i)] + P[k|v(i)]} ÷ 2 Gl. 8
    • „&" stellt die bitweise UND-Operation dar
    • „|" stellt die bitweise ODER-Operation dar
    • „k" stellt die Scheitelnummer dar
    v(i) = 4 × a(i) + 2 × b(i) + c(i) i stellt die Bitposition in den Bits niedrigerer Ordnung 10b in dem Eingangsfarbraumwert dar.
  • Die Unterwürfelerzeugung, die unter Verwendung der Gleichung 8 erreicht werden kann, liefert ein neues Verfahren zum Berechnen von Scheitelwerten für eine vierflächige Interpolation. Durch Verwenden der Gleichung 8 können die Indizes berechnet werden, die verwendet werden, um auf die Werte der Scheitel, die zum Berechnen der Unterwürfelschei telwerte verwendet werden, zuzugreifen. Dies liefert einen Vorteil im Vergleich zu Interpolationsverfahren, die das Zugreifen auf eine Nachschlagtabelle erfordern, um die Indizes zu bestimmen, die verwendet werden, um auf die Scheitelwerte zuzugreifen. Die Verwendung einer Nachschlagtabelle erfordert Speicherzugriffe. Folglich erfordert das Verwenden einer Nachschlagtabelle zum Erzeugen der Indizes eine wesentlich größere Anzahl von Maschinenzyklen als unter Verwendung des Prozessors zum Berechnen der Indizes erforderlich wären. Daher liefert das Verwenden der Gleichung 8 zum Berechnen der Indizes, die verwendet werden, um auf die Scheitelwerte zuzugreifen, einen wesentlichen Geschwindigkeitsvorteil bei der vierflächigen Interpolation im Vergleich zu bisherigen Verfahren zum Durchführen einer vierflächigen Interpolation. Ferner liefert das Implementieren der Gleichung 8 in Hardware zum Berechnen der Multiplexersteuereingangssignale, die verwendet werden, um die Scheitelwerte auszuwählen, eine einfachere Hardwareimplementierung von vierflächiger Interpolation.
  • Wie es bei der beschnittenen radialen Interpolation der Fall war, ist der Wert des Scheitels Nummer 0 des letzten erzeugten Unterwürfels das Ergebnis bei der vierflächigen Interpolation. Es wurde erkannt, daß nicht alle Pegel der Scheitel aller erzeugten Unterwürfel erforderlich waren, um das Ergebnis der Interpolation zu erzeugen. Dies führte zu der Entwicklung einer weiteren Verbesserung bei vierflächiger Interpolation, die als beschnittene vierflächige Interpolation bezeichnet wird. In 15 ist eine schematische Darstellung einer beschnittenen vierflächigen Interpolation gezeigt. In 15 zeigt der Hauptindikator, der dem Term zugeordnet ist, der den Wert jedes Scheitels darstellt, den Pegel der Unterwürfelerzeugung an. Beispielsweise stellen die Terme, die mit P'[] bezeichnet sind, Scheitelwerte nach der ersten Würfelunterteilungsiteration dar, die Terme, die als P''[] bezeichnet sind, stellen Scheitelwerte nach der zweiten Würfelunterteilungsiteration dar. Dieses Verfahren des Bestimmens von Scheitelwerten gilt für die Erzeugung von aufeinanderfolgenden Unterwürfeln. 15 stellt die beschnittene vierflächige Interpolation unter Verwendung von vier Bits für die Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts 10 dar. Die in 15 gezeigten Terme können erzeugt werden durch Beginnen mit dem Endergebnis der Interpolation P''''[0] und, unter Verwendung der Gleichung 8, nachfolgendes Bestimmen der Werte der Scheitel des vorherigen Unterwürfels, die erforderlich sind, um die Werte der Scheitel des aktuellen Unterwürfels zu erzeugen, bis die Werte, die erforderlich sind, um den aktuellen Unterwürfel zu erzeugen, erhalten werden durch Zugreifen auf die Werte der Scheitel in dem Würfelgitter 1 unter Verwendung von Bits höherer Ordnung 10a. Wie es für die beschnittene radiale Interpolation der Fall war, wird die Durch-2-Dividieren-Operation nicht durchgeführt, bis der Wert der Scheitel Nummer 0 des letzten Unterwürfels erhalten wird, um die Akkumulation von Rundungsfehlern zu verhindern.
  • Eine beschnittene vierflächige Interpolation liefert wesentliche Berechnungseinsparungen im Vergleich zu einer vierflächigen Interpolation. Mit d Eingangsabmessungen, D Ausgangsabmessungen und n Bits niedrigerer Ordnung 10b wird die Anzahl von Berechnungen, die erforderlich ist, um die beschnittene vierflächige Interpolation durchzuführen, berechnet als:
    Figure 00400001
    Anzahl von Speicherzugriffen = D × [min(2d, 2n)] Gl. 10
  • Es sollte angemerkt werden, daß für diese Gleichungen die Berechnungen linear variieren als eine Funktion von d und D für die Anzahl von ALU-Operationen, exponentiell als eine Funktion von d für die Anzahl von Speicherzugriffen und exponentiell als eine Funktion von n für die Anzahl von Speicherzugriffen. Wie es in 15 gezeigt ist, ist die beschnittene vierflächige Interpolation implementiert, so daß 2n Speicherzugriffe erforderlich sind. Es ist jedoch möglich, eine beschnittene vierflächige Interpolation zu implementieren, so daß die Anzahl von Speicherbezugnahmen, die erforderlich ist, ein Maximum von 2d ist, was für d = 3 die Anzahl von Scheiteln in einem Würfel ist. Dies wird durchgeführt durch Erkennen, daß in den 2n Speicherzugriffen Redundanz existiert. Durch Verwenden einiger der zugegriffenen Scheitelwerte für mehrere der Eingangswerte, die in 15 erforderlich sind, sind weniger Speicherzugriffe erforderlich. Das Vergleichen der Gleichungen 9 und 10 mit den Gleichungen 4 und 5 zeigt, daß, wenn alle anderen Dinge gleich sind, die beschnittene vierflächige Interpolation rechentechnisch aufwendiger ist als die radiale Interpolation.
  • In 16 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer vierflächigen Interpolation gezeigt. Für dieses Verfahren sind die Eingangsfarbraumwerte 10 aus d Komponenten gebildet. Jede der d Komponenten ist unterteilt in einen Satz von Bits höherer Ordnung 10a und Bits niedrigerer Ordnung 10b. Jeder der d Sätze von Bits niedrigerer Ordnung 10b ist aus n Bits gebildet. Die d Sätze von Bits niedrigerer Ordnung sind jeweils als lb1, lb2, lb3, ... lbd bezeichnet. Die Bitposition von jedem der Bits niedrigerer Ordnung ist von dem höchstwertigsten Bit zu dem niedrigstwertigsten Bit durch einen Wert von i bezeichnet, der entsprechend von n – 1 bis 0 reicht. Zunächst wird ein Wert gemäß v[i] = 2d-1 × lb1[i] + 2d-2 × lb2[i] + 2d-3 × lb3[i] + ... + 2d-d × lbd[i] für i = n – 1 berechnet 800. Danach wird ein Satz von UND-Werten gemäß v[i] & k, für den Wert von k berechnet 800, der von 2d – 1 bis 0 reicht, wobei „&" die bitweise UND-Operation darstellt. Dann wird ein Satz von ODER-Werten gemäß v[i]|k für den Wert von k berechnet 802, der von 2d – 1 bis 0 reicht, wobei „|" die bitweise ODER-Operation darstellt. Danach werden 2d Paare der Scheitelwerte unter Verwendung des Satzes von UND-Werten und des Satzes von ODER-Werten ausgewählt 803. Jedes der Paare wird unter Verwendung eines UND-Wertes und eines ODER-Wertes ausgewählt, die für einen entsprechenden Wert von k berechnet werden. Schließlich wird ein Satz von 2d Summen durch Summieren von jedem der 2d Paare von Scheitelwerten berechnet 804.
  • Das in 16 gezeigte Verfahren ist für eine einzige Iteration der vierflächigen Interpolation. Das Durchführen aufeinanderfolgender Iterationen würde das Berechnen zusätzlicher Werte von v[i], das Berechnen zusätzlicher UND- und ODER-Werte, das Auswählen von Werten von 2d Summen, die bei der vorherigen Iteration unter Verwendung der zusätzlich berechneten UND- und ODER-Werte berechnet wurden, und das Berechnen zusätzlicher Sätze von 2d Summen erfordern. Nach der letzen Iteration der vierflächigen Interpolation wird jede der letzten 2d-Summen durch 2n geteilt (in 16 nicht gezeigt), wobei n die Anzahl von Iterationen ist und einer der resultierenden Werte als das Ergebnis der Interpolation ausgewählt wird. Die Vision durch 2n wird nach der letzten Iteration durchgeführt, anstatt des Dividierens durch 2 nach jeder Iteration, um eine Abrundungsfehlerakkumulation zu vermeiden.
  • In 17 ist eine Hardwareimplementierung eines vierflächigen Interpolators 900 für die Umwandlung eines Eingangsfarbraumwerts 10 zu einer Komponente von Ausgangsfarbraumwerten 11 gezeigt. Diese gleiche Hardware könnte wiederholt verwendet werden für zusätzliche (D-1) Durchläufe zum Erzeugen der verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11. Oder es könnte zusätzliche (D-1) Duplikationen von einem Teil der Hardwareimplementierung geben, die in 17 gezeigt ist, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexersteuereingangssignalen verwendet wird, könnte für jede der D-Duplikationen verwendet werden. Der in 16 gezeigte vierflächige Interpolator 900 ent spricht d = 3 und n = 4 für den Eingangsfarbraumwert 10. Die in 17 gezeigte Hardwareimplementierung implementiert die Gleichung 8 für die Erzeugung der Unterwürfelscheitelwerte. Der vierflächige Interpolator 900 von 17 ist aus einer ersten, zweiten, dritten und vierten Stufe 901904 gebildet. Jede der vier Stufen 901904 umfaßt 23 Addierer, von denen einer als 905 bezeichnet ist. Jede der vier Stufen 901904 umfaßt ferner 2 × 23 Multiplexer, von denen einer als 906 bezeichnet ist, die als 23 Paare von Multiplexern angeordnet sind. Schließlich umfaßt jede der vier Stufen 901904 23 bitweise ODER-Blöcke, von denen einer als 907 bezeichnet ist, und 23 bitweise UND-Blöcke, von denen einer als 908 bezeichnet ist.
  • Jede der Stufen 901904 führt eine Iteration von Interpolation durch. Einige Interpolationsanwendungen können erfordern, daß nur eine einzige Iteration von Interpolation durchgeführt wird. Für eine einzige Iteration der Interpolation ist n = 1. Dies entspricht einer Hardwareimplementierung eines vierflächigen Interpolators 900 unter Verwendung nur der ersten Stufe 901. Eine zusätzliche Stufe würde für jede zusätzliche Iteration der Interpolation hinzugefügt, die für die spezielle Anwendung erforderlich ist.
  • Jedes der Eingangssignale der Multiplexer in der ersten Stufe 901 ist mit den acht Scheitelwerten verbunden, die unter Verwendung der Bits höherer Ordnung 10a ausgewählt werden. Die zwei Ausgangssignale jedes Paars von Multiplexern in der ersten Stufe 901 sind mit dem ersten und zweiten Eingangssignal des entsprechenden Addierers verbunden. Das Ausgangssignal von jedem der Addierer der ersten Stufe 901 ist der Scheitelwert des ersten Unterwürfels. Wie es vorher erwähnt wurde, wird die Division durch 2 für jede Iteration der Unterwürfelerzeugung verschoben, bis der letzte Unterwürfel erzeugt ist. Die Scheitelwerte des letzten Unterwürfels, der erzeugt wird, werden durch 2n dividiert, wobei n die Anzahl von Bits in den Bits niedrigerer Ordnung des Eingangsfarbraumwerts ist, und n der Anzahl von Stufen in dem vierflächigen Interpolator entspricht. Die Eingänge jedes Multiplexers für die zweite, dritte und vierte Stufe 902904 sind zu den Ausgängen der Addierer der vorhergehenden Stufe gekoppelt.
  • Das Steuereingangssignal von einem der Multiplexer von jedem Paar von Multiplexern ist mit dem Ausgangssignal eines bitweisen ODER-Blocks verbunden. Das Steuereingangssignal des anderen von jedem Paar von Multiplexern ist mit dem Ausgangssignal eines bitweisen UND-Blocks verbunden. Die Multiplexer, die bei dem vierflächigen Interpolator 900 verwendet werden, haben die Fähigkeit, einen von acht 8-Bit-Werten unter Verwendung eines 3-Bit-Steuereingangssignals auszuwählen. Die bitweisen ODER-Blöcke und die bitweisen UND-Blöcke führen jeweils Bit-für-Bit-ODER-Operationen oder UND-Operationen an den Werten durch, die in dieselben eingegeben werden. Für diese d = 3 Implementierung des vierflächigen Interpolators 900 ist jedes der Eingangssignale zu den bitweisen ODER-Blöcken und den bitweisen UND-Blöcken eine 3-Bit-Größe. Das Ausgangssignal von jedem der bitweisen ODER-Blöcke und bitweisen UND-Blöcke an jedem der Multiplexer ist eine 3-Bit-Größe. Die Addierer, die jedem Paar von Multiplexern zugeordnet sind, führen eine Addition der ausgewählten acht-Bit-Werte von jedem der Multiplexer durch.
  • Wie es durch die Gleichung 8 angezeigt ist, ist die Scheitelnummer, die dem erzeugten Scheitelwert entspricht, mit einem der Eingangssignale für jeden entsprechenden bitweisen ODER-Block und bitweisen UND-Block verbunden. Weil diese Werte fest sind, können sie zu den richtigen Werten fest verdrahtet werden. Die anderen Eingangssignale für jedes entsprechende Paar von bitweisen UND-Blöcken und bitweisen ODER-Blöcken in einer Stufe sind mit dem Wert von v[i] verbunden, der der Stufe entspricht. Für die erste Stufe 901 ist der Wert v[3]. Für die zweite Stufe 902 ist der Wert v[2]. Für die dritte Stufe 903 ist der Wert v[1]. Für die vierte Stufe 904 ist der Wert v[0].
  • Eine Interpolation wird durchgeführt durch Zuführen der Scheitelwerte, die unter Verwendung der Bits höherer Ordnung 10a ausgewählt werden, zu den Multiplexereingangssignalen der ersten Stufe 900 und Zuführen der geeigneten v[i]-Werte zu den bitweisen ODER-Blöcken und den bitweisen UND-Blöcken jeder Stufe. Der vierflächige Interpolator 900 berechnet die Scheitelwerte für die vier Iterationen der Unterwürfelerzeugung. Die Werte P''''(7) bis P''''(0) sind die Werte der Scheitel des vierten erzeugten Unterwürfels. Bei diesem Ausführungsbeispiel wird P''''(0) ausgewählt, durch 16 dividiert und als das Ergebnis der Interpolation verwendet. Die Teilung durch 16 wird implementiert durch Verschieben von Bits und ist in 17 nicht dargestellt.
  • Ein Durchschnittsfachmann auf diesem Gebiet wird erkennen, daß einer der anderen berechneten Werte P''''(7) bis P''''(1) ausgewählt werden kann, durch 16 dividiert und als das Ergebnis der Interpolation verwendet werden kann. Das Verwenden von Werten, die unterschiedlichen Scheiteln des letzten Unterwürfels entsprechen, um das Interpolationsergebnis zu erzeugen, wird das Ergebnis der Interpolation anders vorspannen. Dies ist eine Überlegung beim Auswählen, welcher Scheitelwert des letzten erzeugten Unterwürfels durch 16 dividiert wird, um das Ergebnis der Interpolation zu erzeugen.
  • In 18 ist eine Hardwareimplementierung eines beschnittenen vierflächigen Interpolators 1000 für die Umwandlung der Eingangsfarbraumwerte 10 zu einer Komponente der Ausgangsfarbraumwerte 11 gezeigt. Diese gleiche Hardware könnte wiederholt für alle zusätzlichen (D-1) Durchläufe verwendet werden, um die verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11 zu erzeugen. Oder es könnte zusätzliche (D-1) Duplikationen von Teilen der in 18 gezeigten Hardwareimplementierung geben, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexereingangssteuerungen verwendet wird, könnte für jede der D Duplikationen verwendet werden. Der in 18 gezeigte beschnittene vierflächige Interpolator 1000 entspricht d = 3 und n = 4 für den Eingangsfarbraumwert 10. Der beschnittene vierflächige Interpolator 1000 implementiert die schematische Darstellung der in 15 gezeigten beschnittenen vierflächigen Interpolation. Die Implementierung des beschnittenen vierflächigen Interpolators 1000 erfordert wesentlich weniger Hardware als die Implementierung des vierflächigen Interpolators 900.
  • Für d = 3 führen die bitweisen UND-Blöcke 1001a bis 1001k jeweils eine Bit-für-Bit-UND-Operation an den 3-Bit-Eingangsgrößen durch, um 3-Bit-Ausgangssignalgrößen zu erzeugen. Gleichartig dazu führen für d = 3 bitweise ODER-Blöcke 1002a bis 1002k jeweils eine Bit-für-Bit-ODER-Operation an den 3-Bit-Eingangssignalgrößen durch, um 3-Bit-Ausgangssignalgrößen zu erzeugen. Jedes der 3-Bit-Ausgangssignale der bitweisen UND-Blöcke 1001a bis 1001g und der bitweisen ODER-Blöcke 1002a1002g wird verwendet, um die Auswahl von einer von acht 8-Bit-Größen in dem entsprechenden der Multiplexer 1003a bis 1003n auszuwählen. Die Ausgangssignale von jedem der Multiplexer 1003a1003o sind mit den Eingangssignalen der Addierer 1004a1004h verbunden.
  • Eine Interpolationsoperation wird unter Verwendung des beschnittenen vierflächigen Interpolators 1000 durchgeführt, durch Zuführen der Scheitelwerte, die unter Verwendung der Bits höherer Ordnung 10a ausgewählt wurden, zu den Eingangssignalen der Multiplexer 1003a1003o und Zuführen der berechneten Werte von v[i] zu den Eingangssignalen der bitweisen ODER-Blöcke 1002a1002k und der bitweisen UND-Blöcke 1001a1001k, wie es in 18 gezeigt ist. Außerdem wird ein Scheitelwert, der unter Verwendung der Bits höherer Ordnung 10a ausgewählt wird, zu dem Eingangssignal des Addierers 1004h zugeführt. Unter Verwendung der berechneten Werte von v[i] berechnen die bitweisen UND-Blöcke 1001a1001k und die bitweisen ODER-Blöcke 1002a1002k die Werte, die in die Steuereingangssignale der Multiplexer 1003a1003n eingegeben werden. Der Multiplexer 1003o verwendet v[3] direkt. Die Werte, die durch die Multiplexer 1003a1003o ausgewählt werden, sind diejenigen, die notwendig sind, um das Interpolationsergebnis gemäß der schematischen Darstellung der in 15 gezeigten beschnittenen vierflächigen Interpolation zu berechnen. Die Scheitelwerte, die durch die Multiplexer 1003a1003o ausgewählt werden, werden für eine Summierung an die Eingänge der Addierer 1004a1004h gesendet. Das Ausgangssignal des letzten Addierers in der Kette von Additionen wird durch 16 dividiert und als das Ergebnis der Interpolation verwendet. Die Division durch 16 wird durch Bitverschiebung erreicht und ist in 18 nicht gezeigt.
  • Der in 18 gezeigte beschnittene vierflächige Interpolation ist für d = 3 und n = 4 implementiert. Für einige Anwendungen können weniger als vier Iterationen der Interpolation ausreichend sein. Andere Anwendungen können mehr als vier Iterationen der Interpolation erfordern. Die Hardwareimplementierung der beschnittenen vierflächigen Interpolation für d = 3 und n = 1 würde nur einen einzigen Addierer und einen einzigen Multiplexer verwenden, um P'(0) zu erzeugen, wie es in 18 gezeigt ist. Die Hardwareimplementierungen für n = 2 und n = 3 erfordern zum Erzeugen von P''(0) bzw. P'''(0), wie es in 18 gezeigt ist, mehr bitweise UND-Blöcke, bitweise ODER-Blöcke, Multiplexer und Addierer.
  • In 19 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer beschnittenen vierflächigen Interpolation gezeigt. Für dieses Verfahren sind die Eingangsfarbraumwerte 10 aus d Komponenten gebildet. Jede der d Komponenten ist in einen Satz von Bits höherer Ordnung 10a und Bits niedrigerer Ordnung 10b unterteilt. Jeder der d Sätze von Bits niedrigerer Ordnung 10b ist aus n Bits gebildet. Die d Sätze von Bits niedrigerer Ordnung sind jeweils als lb1, lb2, lb3, ... lbd bezeichnet.
  • Die Bitposition von jedem der Bits niedrigerer Ordnung wird von dem höchstwertigsten Bit zu dem niedrigstwertigsten Bit durch einen Wert von i bestimmt, der entsprechend von n – 1 bis 0 reicht. Zunächst werden 2n – 2 Werte gemäß den Typen von bitweisen UND- und bitweisen ODER-Operationen, die in 15 gezeigt sind, mit v[i] = 2d-1 × lb1[i] + 2d-2 × lb2[i] + 2d-3 × lb3[i] + ... + 2d-d × lbd[i] für i berechnet 1100, das von n – 1 bis 0 reicht. Nachfolgend wird das Minimum von 2n und 2d von Interpolationsdatenwerten unter Verwendung eindeutiger 2n – 2 Werte, die im Schritt 1100 berechnet werden, einem Wert von v[n – 1] und Bits höherer Ordnung 10a ausgewählt 1101. Dann wird die Summe der Interpolationsdatenwerte, die im Schritt 1101 ausgewählt wurden, berechnet 1102.
  • Das in 19 gezeigte Verfahren ist für n Iterationen der beschnittenen vierflächigen Interpolation. Die Summe, die im Schritt 1102 berechnet wird, wird durch 2n dividiert, um das Ergebnis zu erzeugen. Diese Division ist in 19 nicht gezeigt.
  • In 20 ist ein Flußdiagramm hoher Ebene eines Verfahrens gezeigt, das in Software implementiert ist, um eine beschnittene vierflächige Interpolation durchzuführen. Zunächst wird eine Bestimmung 1200 durchgeführt, ob eine der Komponenten des Eingangsfarbraumwerts (a, b, c) 10 einer Position auf einer äußeren Grenze des Würfelgitters 1 entspricht. Dies ist der Fall, falls eine oder mehrere der Komponenten des Eingangsfarbraumwerts einen hexadezimalen Wert von FF aufweist. Falls dies der Fall ist, dann wird zum Zweck des Erzeugens des Index in dem Würfelgitter 1 zum Wiedergewinnen der notwendigen Scheitelwerte, den Komponenten des Eingangsfarbraumwerts 10, die einen hexadezimalen Wert von FF aufweisen, ein hexadezimaler Wert von 100 zugewiesen 1201.
  • Nachfolgend wird auf die Versätze von dem Ursprung des Würfels in dem Würfelgitter 1 zugegriffen, unter Verwendung Bits höherer Ordnung 10a, und die Unterwürfel, die während der beschnittenen vierflächigen Interpolation erzeugt werden, werden unter Verwendung der Beziehungen berechnet 1202, die in der schematischen Darstellung der beschnittenen vierflächigen Interpolation von 15 gezeigt sind. Dann werden die Indizes, die zum Zugreifen auf die Werte verwendet werden, die den erforderlichen Scheiteln des ausgewählten Würfels in dem Würfelgitter in einer Nachschlagtabelle entsprechen, berechnet 1203. Schließlich werden die Werte für jede Komponente des Ausgangsfarbraumwerts (x, y, z) 11 berechnet 1204. In 40 dieser Beschreibung ist der Code einer Implementierung bei C für n = 4 des Verfahrens hoher Ebene der in 20 gezeigten beschnittenen vierflächigen Interpolation vorgesehen.
  • Es ist auch möglich, eine beschnittene vierflächige Interpolation in Hardware zu implementieren. Die rechentechnischen Effizienzen, die in der Softwareimplementierung einer beschnittenen vierflächigen Interpolation existierten, liegen in der Hardwareimplementierung als reduzierte Hardwareanforderungen vor. Wie es vorher erwähnt wurde, werden Verschiebungen und Verkettungen implementiert, ohne daß zusätzliche Hardwareelemente erforderlich sind. Die Hardwarefunktionsblöcke, die erforderlich sind, um die beschnittene vierflächige Interpolation durchzuführen, umfassen Addierer, UND-Gatter, ODER-Gatter und Multiplexer. Mit D Abmessungen in dem Ausgangsfarbraum, d Abmessungen in dem Eingangsfarbraum und n Bits, die jede Gruppe von Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts darstellen, können die Anforderungen der Hardwareimplementierung der beschnittenen Unterteilungsinterpolation berechnet werden als: Anzahl von Addierern = D × 2n Gl. 11 Anzahl von Multiplexern = D × (2n – 1) Gl. 12
    Figure 00500001
  • Um den Gatterpegelentwurf zu erzeugen, der notwendig ist, um die beschnittene radiale Interpolation in Hardware zu implementieren, kann eine üblicherweise verwendete Hardwarebeschreibungssprache, wie z. B. VHDL, verwendet werden. In 41 ist eine Liste des VHDL-Codes enthalten, der eine Hardwareimplementierung einer beschnittenen radialen Interpolation erzeugen kann.
  • Wie es vorher erörtert wurde, kann die radiale Interpolation bei Umwandlungen zwischen dem RGB- und dem CMY-Farbraum für bestimmte Eingangsfarbraumwerte zu Druckartefakten führen. Aufgrund dieser Druckartefakte kann es sein, daß eine vierflächige Interpolation wünschenswertere Ergebnisse erzielt. Um die Komplexität zu reduzieren, kann die vierflächige Interpolation unter Verwendung einer beschnittenen vierflächigen Interpolation implementiert werden, obwohl diese Interpolationstechnik nach wie vor rechentechnisch intensiver ist als die radiale Interpolation.
  • Für Umwandlungen zwischen anderen Farbräumen (wie z. B. CieLab, LUV oder YCbCr) kann die radiale Interpolation vorzuziehen sein, weil dieselbe adäquate Ergebnisse erzielt und rechentechnisch sehr effizient ist. Außerdem ist es möglich, daß eine radiale Interpolation in einigen Fällen tatsächlich angenehmere Ergebnisse erzielt als die vierflächige Interpolation. Falls die Interpolationsverfahren in Software implementiert sind, wird das Verwenden alternativer Verfahren ohne weiteres durch Aufrufen unterschiedlicher Routinen durchgeführt. Das Implementieren verschiedener Interpolationsverfahren in Hardware kann jedoch eine getrennte Logik erfordern. Weil die getrennten Hardwareimplementierungen der beiden Interpolationstechniken nicht voll ausgenutzt werden, ist diese Lösung aufwendig.
  • Eine übliche Hardwareimplementierung liefert die Fähigkeit zum alternativen Durchführen einer radialen Interpolation und einer beschnittenen vierflächigen Interpolation mit weniger Hardware als bei einer getrennten Hardwareimplementierung dieser Interpolationstechniken. In 21 ist eine schematische Darstellung einer üblichen radialen Interpolation und einer beschnittenen vierflächigen Interpolationsimplementierung gezeigt. Wie es in 21 angezeigt ist, wird die durchgeführte Interpolationstechnik durch die Scheitelwerte bestimmt, die in die Hardware eingegeben werden. Normalerweise ist die Anzahl von Bits, die verwendet werden, um jeden v(i) Term auszudrücken, kleiner als die Anzahl von Bits, die verwendet werden, um jeden P[v(i)] Term auszudrücken. Deswegen ist es im allgemeinen weniger komplex, die v(i) Terme vor dem Speicherzugriff zu multiplexen, um die Werte wiederzugewinnen, die den P[v(i)] Termen zugeordnet sind.
  • Von 21 sollte klar sein, daß zwei der Scheitelwerte, die sowohl für die radiale Interpolation als auch die beschnittene vierflächige Interpolation verwendet werden, für alle Werte von n gleich sind. Daher erfordert eine gemeinsame Hardwareimplementierung der radialen Interpolationen der beschnittenen vierflächigen Interpolation, daß zusätzliche 2n – 2 Multiplexer (die jeweils d Steuerbits aufweisen) zu der Hardwareimplementierung der beschnittenen vierflächigen Interpolation addiert werden. In 42 ist der VHDL-Code für eine Hardwareimplementierung der gemeinsamen radialen Interpolation und beschnittenen vierflächigen Interpolation enthalten.
  • In 22 ist eine Hardwareimplementierung eines gemeinsamen beschnittenen radialen und beschnittenen vierflächigen Interpolators 1300 gezeigt. Die Hardwareimplementierung einer gemeinsamen beschnittenen radialen und beschnittenen vierflächigen Interpolation ist ähnlich wie diejenige der beschnittenen vierflächigen Interpolation. Der Unterschied ist die Addition von 14 Multiplexern 1301a1301n, die verwendet wird, um die Daten zu den Steuereingängen der Multiplexer 1302a1302n auszuwählen. Ein einzelnes Bit wird verwendet, um die Auswahl der Daten an den Eingängen der Multiplexer 1301a1301n zu steuern. Das einzelne Bit steuert, ob die Multiplexereingangssignale in die Multiplexer 1302a1302n für eine beschnittene vierflächige Interpolation oder für eine beschnittene radiale Interpolation sind. Das Multiplexersteuereingangssignal für die Multiplexer 1302a1302n bestimmt, welche der Interpolationsdatenwerte zu den Addierern gekoppelt werden. Wenn das Bit in dem ersten seiner beiden Zustände ist, arbeitet die Hardware von 22 als ein beschnittener radialer Interpolator. Wenn das Bit in dem zweiten seiner beiden Zustände ist, arbeitet die Hardware von 22 als ein beschnittener vierflächiger Interpolator.
  • Das Steuerbit für die Multiplexer 1301a1301n wird verwendet, um zwischen den Werten von v(i) und den Werten auszuwählen, die unter Verwendung der bitweisen ODER-Blöcke 1303a1303k und den bitweisen UND-Blöcken 1304a1304k berechnet wurden. Die Addierer 1305a1305o summieren die Ausgangssignale der Multiplexer 1302a1302o. Durch Verschieben von Bits wird die resultierende Summe durch 16 dividiert (in 22 nicht gezeigt), um das Ergebnis zu erzeugen.
  • Die Hardware von 22 könnte wiederholt für zusätzliche (D-1) Durchläufe verwendet werden, um die verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11 zu erzeugen. Oder es könnte zusätzliche (D-1) Duplikationen von Teilen der in 22 gezeigten Hardwareimplementierung geben, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexersteuereingangssignalen verwendet wird, könnte für jede der D-Duplikationen verwendet werden. Der gemeinsame beschnittene radiale und beschnittene vierflächige Interpolator 1300, der in 22 gezeigt ist, entspricht d = 3 und n = 4 für den Eingangs farbraumwert 10. Der gemeinsame beschnittene radiale und beschnittene vierflächige Interpolator 1300 implementiert die schematische Darstellung der in 21 gezeigten gemeinsamen beschnittenen radialen und beschnittenen vierflächigen Interpolation.
  • Bei dem Interpolationsprozeß bilden die Bits höherer Ordnung 10a eines Eingangsfarbraumwerts 10 einen Index, der verwendet wird, um auf Interpolationsdatenwerte zuzugreifen. Die Interpolation wird unter Verwendung der Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts durchgeführt. Wie es vorher erwähnt wurde, entsprechen die zugegriffenen Werte dem Scheitel eines Würfels in einem Würfelgitter 1. Abhängig von den Charakteristika des Ausgangsfarbraums können die Werte, die den Scheiteln des zugegriffenen Würfels zugeordnet sind, bei Raten variieren, die von der Abmessung des Würfelgitters 1 oder von der Region des Würfelgitters 1 abhängen, in der der ausgewählte Würfel positioniert ist. Aufgrund dieser Möglichkeit können verbesserte Interpolationsergebnisse erzeugt werden, durch Variieren der Interpolationsauflösung zwischen Werten der Scheitel in dem gesamten Würfelgitter 1, die den variierenden Änderungsraten zwischen den Scheitelwerten entsprechen. Das Einstellen der Interpolationsauflösung auf der Basis der Position des ausgewählten Würfels in dem Würfelgitter 1 kann implementiert werden, indem es ermöglicht wird, daß die Unterteilung des Eingangsfarbraumwerts 10 in Bits höherer Ordnung 10a und Bits niedrigerer Ordnung 10b variieren kann. In Regionen des Würfelgitters 1 mit hohen nichtlinearen Änderungsraten bei den Scheitelwerten wären die Unterschiede zwischen den Scheitelwerten relativ groß, unter Verwendung einer Anzahl von Bits, die nicht an die Farbraumcharakteristika angepaßt sind, um jede Komponente der Bits höherer Ordnung 10a darzustellen. Um die Werte zwischen den Scheiteln zu reduzieren, wird eine größere Anzahl von Bits verwendet, um die Komponenten der Bits höherer Ordnung 10a darzustellen. Folglich wird in diesen Regionen eine kleinere Anzahl von Bits verwendet, um die Bits niedrigerer Ordnung 10b darzustellen. Für Regionen des Würfelgitters 1 mit geringeren Änderungsraten oder lineareren Änderungsraten bei den Scheitelwerten wären die Unterschiede zwischen den Scheitelwerten unter Verwendung einer Anzahl von Bits, die nicht an die Farbraumcharakteristika angepaßt sind, um jede Komponente der Bits höherer Ordnung 10a darzustellen, relativ klein oder relativ linear. Um die Werte zwischen den Scheiteln zu erhöhen, wird eine kleinere Anzahl von Bits verwendet, um die Komponenten der Bits höherer Ordnung 10a darzustellen.
  • Um eine Interpolationstechnik zu implementieren, die eine variierende Interpolationsauflösung über dem Ausgangsfarbraum unterstützen kann, der durch das Würfelgitter 1 dargestellt ist, muß die Interpolationstechnik die wechselnde Anzahl von Bits unterbringen, die verwendet werden, um die Komponenten der Bits niedrigerer Ordnung 10b darzustellen. Um dies zu erreichen, ist ein Wert (n, p, q) definiert, so daß n Bits verwendet werden, um zwischen Gitterpunkten in der „a"-Abmessung zu interpolieren, p Bits werden verwendet, um zwischen Gitterpunkten in der b-Abmessung zu interpolieren, und q Bits werden verwendet, um zwischen Gitterpunkten in der c-Abmessung zu interpolieren. Es ist möglich, die Werte sowohl von n, p als auch q zu beschränken, so daß dieselben über die Gesamtheit des Würfelgitters 1 festgelegt sind, oder es zu ermöglichen, daß jeder der Werte von n, p und q unabhängig oder abhängig voneinander durch die Regionen des Würfelgitters 1 variieren.
  • In 23a bis 23e ist eine graphische Darstellung eines nichtsymmetrischen radialen Interpolationsprozesses gezeigt, der vier Bits zum Darstellen der a1 Komponente, drei Bits zum Darstellen der b1 Komponente und zwei Bits zum Darstellen der c1 Komponente der Bits niedrigerer Ordnung 10b des Eingangsfarbraumwerts verwendet. Die erste Iteration der Würfelunterteilung ist die Auswahl eines Unterwürfels, der eine Hälfte des Würfels besetzt, der durch die Bits höherer Ordnung 10a ausgewählt wird, unter Verwendung des Bits von a1, das der i = 3 Position entspricht. Die zweite Iteration der Würfelunterteilung ist die Auswahl eines Unterwürfels, der ein Viertel des vorhergehenden Unterwürfels besetzt, unter Verwendung jeweils eines Bits von a1 und b1. Die dritte Iteration der Würfelunterteilung ist die Auswahl eines Unterwürfels, der ein Achtel des vorhergehenden Unterwürfels besetzt, unter Verwendung jeweils eines Bits von a1, b1 und c1. Die vierte Iteration der Würfelunterteilung ist ebenfalls die Auswahl eines Unterwürfels, der ein Achtel des vorhergehenden Unterwürfels besetzt, unter Verwendung jeweils eines Bits von a1, b1 und c1. Wie es daraus ersichtlich ist, bestimmt die Anzahl von Bits der Komponenten der Bits niedrigerer Ordnung 10b, die verfügbar sind, um den Unterwürfel zu erzeugen, den Bruchteil des Würfels, der verwendet wird, um den Unterwürfel zu erzeugen, der durch den Unterwürfel besetzt wird.
  • In Tabelle 4 und in den Gleichungen 14 bis 19 sind die Beziehungen gezeigt, die notwendig sind, um die Werte der Unterwürfelscheitel für jede Iteration der radialen Unterwürfelerzeugung zu berechnen. Die Gleichungen 14 bis 19 erzeugen die Werte, die bei den in Tabelle 4 gezeigten Beziehungen verwendet werden, so daß die korrekten Unterwürfelscheitelwerte erzeugt werden mit oder ohne den entsprechenden Bits von a1, b1 und c1, die für diese Iteration der Unterwürfelerzeugung vorliegen. Falls für eine gegebene Iteration einer Unterwürfelerzeugung ein Bit in einem oder mehreren von a1, b1 oder c1 nicht vorliegt, erzeugt die Gleichung 19 die Nummer des Scheitels des Würfels, der beim Erzeugen eines Scheitelwerts des Unterwürfels verwendet wird, um das/die fehlende(n) Bit(s) auszugleichen. Maskea = (2n – 1) Gl. 14 Maskeb = (2p – 1) Gl. 15 Maskec = (2q – 1) Gl. 16 m[i] = (4 × Maskea[i]) + (2 × Maskeb[i]) + Maskec[i] Gl. 17 v[i] = m[i] & {(4 × a[i]) + (2 × b[i]) + c[i]} Gl. 18 f(N, i) = v[i]|(N &~ m[i]) Gl. 19
  • Tabelle 4
    • P'[7] = {P[7] + P[f(7, i)]} ÷ 2
    • P'[6] = {P[6] + P[f(6, i)]} ÷ 2
    • P'[5] = {P[5] + P[f(5, i)]} ÷ 2
    • P'[4] = {P[4] + P[f(4, i)]} ÷ 2
    • P'[3] = {P[3] + P[f(3, i)]} ÷ 2
    • P'[2] = {P[2] + P[f(2, i)]} ÷ 2
    • P'[1] = {P[1] + P[f(1, i)]} ÷ 2
    • P'[0) = {P[0] + P[f(0, i)]} ÷ 2
  • In 24 ist eine graphische Darstellung der Erzeugung eines Unterwürfels 1400 von einem Würfel 1401 gezeigt, unter Verwendung einer nichtsymmetrischen radialen Unterwürfelerzeugung. Bei der speziellen Iteration der in 15 gezeigten Unterwürfelerzeugung liegt das Bit, das der Iteration für die Komponenten b1 und c1 entspricht, nicht vor. Daher geben die Beziehungen in Tabelle 4 mit f(N, i), berechnet für die Bits von b1 und c1, die der nichtvorliegenden Iteration entsprechen, vor, daß die Scheitelwerte P'[7], P'[6], P'[5] und P'[4] als der Mittelwert der Werte der beiden Scheitel berechnet wird, die vertikal jeweils mit P'[7], P'[6], P'[5] und P'[4] ausgerichtet sind. Die Berechnung der Scheitelwerte für andere Kombinationen, bei denen jeweils a1, b1 oder c1 vorliegen oder nicht, werden analog durch die Gleichung 19 gehandhabt.
  • In 25 ist eine schematische Darstellung der nichtsymmetrischen beschnittenen radialen Interpolationsberechnung gezeigt. Die Anzahl von Berechnungen, die erforderlich sind, um die nichtsymmetrische beschnittene radiale Interpolation durchzuführen, wird berechnet als:
    Figure 00570001
  • In 25 sind 2n Speicherzugriffe gezeigt. Ein ausgewählter Würfel hat jedoch ein Maximum von 2d Scheitelwerten, wobei d die Anzahl von Abmessungen des Eingangsfarbraumwerts 10 ist. Daher sind einige der 2n (16 Werte für n = 4) Werte, die an den Eingängen des Diagramms von 25 gezeigt sind, redundant. Es folgt, daß für 2n größer als 2d die Anzahl von Speicherzugriffen, die durchgeführt wird, auf die Anzahl von Scheitel in dem Würfel für jede Abmessung des Ausgangssignals des Farbraums beschränkt werden kann. Daher ist die Anzahl von Speicherzugriffen, die für D Abmessungen in dem Ausgangsfarbraum erforderlich ist: Anzahl von Speicherzugriffen = D × min(2d, 2n) Gl. 21
  • In 26 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer nichtsymmetrischen beschnittenen radialen Interpolation gezeigt. Für dieses Verfahren sind die Eingangsfarbraumwerte 10 aus d Komponenten gebildet. Jede der d Komponenten ist in einen Satz von Bits höherer Ordnung 10a und Bits niedrigerer Ordnung 10b unterteilt. Die d Sätze von Bits niedrigerer Ordnung sind jeweils als lb1, lb2, lb3, ... lbd bezeichnet. Jeder der d Sätze von Bits niedrigerer Ordnung 10b ist jeweils aus n1, n2, n3, ... nd Bits gebildet. Die Bitposition von jedem der d Sätze von Bits niedrigerer Ordnung wird von dem höchstwertigsten Bit zu dem niedrigstwertigsten Bit durch entsprechende Werte von i1, i2, i3, ... id bestimmt, die jeweils entsprechend von n1 – 1 bis 0, n2 – 1 bis 0, n3 – 1 bis 0, ... nd – 1 bis 0 reichen. Zunächst wird ein Satz von 2n – n – 1 Werten unter Verwendung von f(N, i) = v[i]| (N &~ m[i]) berechnet 1500, wobei m[i] = 2d-1 × Maske1[i] + 2d-2 × Maske2[i] + 2d-3 × Maske3[i] + ... + 2d-d × Masked[i]. Für diese Berechnung sind die Werte von Maskej = 2k – 1 jeweils für einen Wert k berechnet, der aus n1, n2, n3, ... nd berechnet wird, wobei der Wert von j dem Wert des tiefergestellten Zeichens des ausgewählten von n1, n2, n3, ... nd entspricht. Die Werte von j reichen von 1 bis d. Die Werte von v[i] werden als m[i] & (2d-1 × lb1[i] + 2d-2 × lb2[i] + 2d-3 × lb3[i] + ... + 2d-d × lbd[i]) für Werte von i berechnet, die von n – 1 bis 0 reichen, wobei n gleich dem höchsten von n1, n2, n3, ... nd ist. Der Wert von N entspricht den Scheitelnummern, die von 1 bis 2d reichen. Nachfolgend wird eine Anzahl von Interpolationsdatenwerten gleich dem Minimum von 2n und 2d ausgewählt 1501 unter Verwendung der eindeutigen Werte in dem Satz von 2n – n – 1 Werten, der Werte von v[i] für i, die von n – 1 bis 0 reichen, und den d Sätzen von Bits höherer Ordnung. Schließlich werden die ausgewählten Interpolationsdatenwerte addiert 1502, um eine Summe zu erzeugen. Um einen Abrundungsfehler zu erzeugen, wird die erzeugte Summe durch 2n dividiert. Dieser Schritt ist in 26 nicht gezeigt.
  • In 27 ist ein Flußdiagramm hoher Ebene eines Verfahrens gezeigt, das in Software implementiert ist, um eine nichtsymmetrische radiale Interpolation durchzuführen. Zunächst werden die Maskenwerte für jede Komponente des Eingangsfarbraumwerts 10 erzeugt 1600. Danach wird eine Bestimmung 1601 durchgeführt, ob irgendeine der Komponenten des Eingangsfarbraumwerts (a, b, c) 10 einer Position auf einer äußeren Grenze des Würfelgitters 1 entspricht. Dies ist der Fall, falls eine oder mehrere der Komponenten des Eingangsfarbraumwerts einen hexadezimalen Wert von FF aufweist. Falls dies der Fall ist, dann wird zum Zweck des Erzeugens der Indizes zum Wiedergewinnen der notwendigen Scheitelwerte den Komponenten des Eingangsfarbraumwerts 10, die einen hexadezimalen Wert von FF aufweisen, ein hexadezimaler Wert von 100 zugewiesen 1602. Dann werden die Werte sowohl von m[i] als auch v[i] berechnet 1603. Danach werden die Indizes, die verwendet werden, um auf jeden der Scheitelwerte zuzugreifen, die für die Interpolation verwendet werden, berechnet 1604. Schließlich wird jede der Komponenten des Ausgangsfarbraumwerts unter Verwendung der Werte berechnet 1605, auf die durch die Indizes zugegriffen wird, die im Schritt 1604 berechnet werden.
  • In 43 ist eine Auflistung in C des Codes für eine Softwareimplementierung einer nichtsymmetrischen radialen Interpolation enthalten. Für die nichtsymmetrische radiale Interpolation entsprechen die berechneten Indizes Versätzen von dem Ursprung des Würfels, der durch die Bits höherer Ordnung 10a ausgewählt wird. Aufgrund der sich ändernden Auflösung, die in dem Ausgangsfarbraum verwendet wird, werden die Werte der Scheitel für die drei Würfel (ein Würfel für jede Abmessung des Ausgangsfarbraums), die durch die Bits höherer Ordnung 10a ausgewählt werden, in die Routine von 43 geleitet, jedesmal wenn eine Farbraumumwandlung an einem Eingangsfarbraumwert 10 durchgeführt wird. Dies unterscheidet sich von dem Code für die beschnittene radiale und beschnittene vierflächige Interpolation, bei der die Farbtabelle als ein Array in die Routine geleitet wird, und Indizes in diese Tabelle in der Routine berechnet werden.
  • Es ist auch möglich, eine nichtsymmetrische radiale Interpolation in Hardware zu implementieren. Wie es vorher erwähnt wurde, werden Verschiebungen und Verkettungen implementiert, ohne zusätzliche Hardwareelemente zu erfordern. Die Hardwarefunktionsblöcke, die erforderlich sind, um die nichtsymmetrische radiale Interpolation durchzuführen, umfassen Addierer, UND-Gatter, ODER-Gatter und Multiplexer. Mit D Abmessungen in dem Ausgangsfarbraum, d Abmessungen in dem Eingangsfarbraum und n Bits, die die maximale Anzahl von Bits darstellen, die verwendet werden, um eine der Komponenten des Eingangsfarbraumwerts darzustellen, können die Anforderungen der Hardwareimplementierung der nichtsymmetrischen radialen Interpolation berechnet werden als: Anzahl von Addierern = D × [(2n – 1) + 1] Gl. 22 Anzahl von Multiplexern = D × (2n – 1) Gl. 23
    Figure 00600001
  • Um den Gatterpegelentwurf zu erzeugen, der notwendig ist, um die nichtsymmetrische beschnittene radiale Interpolation in Hardware zu implementieren, kann eine allgemein verwendete Hardwarebeschreibungssprache, wie z. B. VHDL, verwendet werden. In 44 ist eine Auflistung des VHDL-Codes enthalten, der eine Hardwareimplementierung einer nichtsymmetrischen beschnittenen radialen Interpolation erzeugen kann.
  • In 28 ist eine Hardwareimplementierung eines nichtsymmetrischen beschnittenen radialen Interpolators 1700 gezeigt. Steuereingangssignal-Berechnungsblöcke 1701a1701k berechnen die Werte, die durch die Steuereingänge der Multiplexer 1702a1702o verwendet werden, die zu den Steuereingangssignal-Berechnungsblöcken 1701a1701k gekoppelt sind. Jeder der Steuereingangssignal-Berechnungsblöcke 1701a1701k führt die Berechnung der Gleichungen 14 bis 19 an dem Eingangssignal zu diesem Steuereingangssignal-Berechnungsblock durch. Wie es in 28 gezeigt ist, verwenden einige der Steuereingangssignale der Multiplexer 1702a1702o Werte von v[i]. Die Addierer 1703a1703o summieren die Ausgangssignale der Multiplexer 1702a1702o. Diese Summe wird durch Bitverschiebung (in 28 nicht gezeigt) durch 2n dividiert, um das Interpolationsergebnis zu erzeugen.
  • Die Hardware von 28 könnte wiederholt für zusätzliche (D-1) Durchläufe verwendet werden, um die verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11 zu erzeugen. Oder es könnte zusätzliche (D-1) Duplikationen von Teilen der in 28 gezeigten Hardwareimplementierung geben, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexersteuereingangssignalen verwendet wird, könnte für jede der D Duplikationen verwendet werden. Der in 28 gezeigte nichtsymmetrische beschnittene radiale Interpolator 1700 entspricht d = 3 und dem Maximum von einem von n1, n2, n3, ... nd gleich 4 für den Eingangsfarbraumwert 10. Der nichtsymmetrische beschnittene radiale Interpolator 1700 implementiert die schematische Darstellung der in 25 gezeigten beschnittenen vierflächigen Interpolation.
  • In 29 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer nichtsymmetrischen radialen Interpolation unter Verwendung der Gleichungen von Tabelle 4 gezeigt. Zunächst wird ein erster Satz von 2d Werten unter Verwendung von f(N, i) = v[i]|(N &~ m[i]) berechnet 1800. Nachfolgend werden 2d Paare von Interpolationsdatenwerten ausgewählt 1801, wobei jedes Paar von dem Interpolationsdatenwert gebildet ist, der unter Verwendung von einem der Sätze von 2d Werten und dem Interpolationsdatenwert ausgewählt wurde, der dem Scheitel entspricht, der durch den Wert von N bestimmt ist. Schließlich werden 2d Summen von den ausgewählten 2d Paaren von Interpolationsdatenwerten berechnet 1802.
  • Das in 29 gezeigte Verfahren ist für eine einzelne Iteration einer nichtsymmetrischen radialen Interpolation. Es sollte klar sein, daß weitere Iterationen durchgeführt würden durch Wiederholen der Schritte von 29 mit den aufeinanderfolgenden Sätzen von 2d Werten, die unter Verwendung von f(N, i) für Werte von v[i] und m[i] berechnet werden, die aufeinanderfolgend dekrementierten Werten von i entsprechen, Auswählen aufeinanderfolgender Sätze von 2d Paaren von Werten von dem vorher berechneten Satz von 2d Summen und Berechnen aufeinanderfolgender Sätze von 2d Summen von den aufeinanderfolgenden Sätzen von 2d Paaren von Werten. Nach dem Durchführen von n Iterationen, wo n gleich dem höchsten von n1, n2, n3, ... nd ist, wird eine der 2d Summen des letzten Satzes, der berechnet wurde, durch 2n dividiert, um das Ergebnis zu erzeugen. Die Division durch 2, die nach jeder Iteration durchgeführt werden könnte, wird bis nach der letzten Iteration verzögert, um einen Abrundungsfehler zu vermeiden.
  • In 30 ist eine Hardwareimplementierung eines nichtsymmetrischen radialen Interpolators 1900 für die Umwandlung von Eingangsfarbraumwerten 10 zu einer Komponente von Ausgangsfarbraumwerten 11 gezeigt. Diese gleiche Hardware könnte wiederholt für zusätzliche (D-1) Durchläufe verwendet werden zum Erzeugen der verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11. Oder es könnte zusätzliche (D-1) Duplikate eines Teils der Hardwareimplementierung geben, die in 30 gezeigt ist, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexersteuereingangssignalen verwendet wird, könnte für jede der D Duplikationen verwendet werden. Der in 30 gezeigte nichtsymmetrische radiale Interpolator 1900 entspricht d = 3 und n = 4, wobei n gleich dem höchsten von n1, n2, n3, ... nd für den Eingangsfarbraumwert 10 ist. Die in 30 gezeigte Hardwareimplementierung implementiert die Gleichungen 14 bis 19 und die Gleichungen der Tabelle 4 für die Erzeugung der Unterwürfelscheitelwerte. Der nichtsymmetrische radiale Interpolator 1900 von 30 ist aus einer ersten, zweiten, dritten und vierten Stufe 19011904 gebildet. Jede der vier Stufen 19011904 umfaßt 23 Addierer, von denen einer als 1905 gekennzeichnet ist. Jede der vier Stufen 19011904 umfaßt ferner 23 Multiplexer, von denen einer als 1906 gekennzeichnet ist. Schließlich umfaßt jede der vier Stufen 19011904 23 Steuereingangssignal-Berechnungsblöcke zum Durchführen der Berechnungen der Gleichungen 14 bis 19 mit den angezeigten Eingangssignalen. Einer dieser Steuereingangssignal-Berechnungsblöcke ist als 1907 bezeichnet.
  • Jede der Stufen 19011904 führt eine Iteration der Interpolation durch. Einige Interpolationsanwendungen können erfordern, daß nur eine einzige Iteration der Interpolation durchgeführt wird. Für eine einzige Iteration der Interpolation ist n = 1. Dies entspricht einer Hardwareimplementierung eines nichtsymmetrischen radialen Interpolators 1900 unter Verwendung nur der ersten Stufe 1901. Eine zusätzliche Stufe würde für jede zusätzliche Iteration der Interpolation addiert, die für die spezielle Anwendung erforderlich ist.
  • Jedes der Eingangssignale der Multiplexer in der ersten Stufe 1901 ist mit den acht Scheitelwerten verbunden, die unter Verwendung von Bits höherer Ordnung 10a ausgewählt werden. Die Ausgangssignale jedes Multiplexers in der ersten Stufe 1901 sind mit dem ersten Eingangssignal des entsprechenden Addierers verbunden. Das zweite Eingangssignal des Addierers ist mit dem Wert verbunden, der der Anzahl von dem Scheitel gleich einem der Eingangssignale der entsprechenden Steuereingangssignal-Berechnungsblöcke entspricht. Das Ausgangssignal von jedem der Addierer der ersten Stufe 1901 ist ein Scheitelwert des ersten Unterwürfels. Wie es vorher erwähnt wurde, wird die Division durch 2 für jede Iteration von Unterwürfelerzeugung verzögert, bis der letzte Unterwürfel erzeugt ist. Die Scheitelwerte des letzten erzeugten Unterwürfels werden durch 2n dividiert, wobei n der Anzahl von Stufen in dem nichtsymmetrischen radialen Interpolator entspricht. Die Eingangssignale jedes Multiplexers für die zweite, dritte und vierte Stufe 19021904 sind zu den Ausgangssignalen der Addierer der vorhergehenden Stufe gekoppelt.
  • Das Steuereingangssignal jedes Multiplexers ist mit dem Ausgangssignal des entsprechenden Steuereingangssignal-Berechnungsblöcke verbunden. Die Multiplexer, die in dem nichtsymmetrischen radialen Interpolator 1900 verwendet werden, haben die Fähigkeit, unter Verwendung eines 3-Bit-Steuereingangssignals einen von acht 8-Bit-Werten auszuwählen. Für diese d = 3, n = 4 Implementierung des nichtsymmetrischen radialen Interpolators 1900 ist jedes der Eingangssignale in die Steuereingangssignal-Berechnungsblöcke eine 3-Bit-Größe. Das Ausgangssignal von jedem der Steuereingangssignal-Berechnungsblöcke ist eine 3-Bit-Größe. Die Addierer, die jedem Multiplexer zugeordnet sind, führen eine Addition der ausgewählten 8-Bit-Werte von jedem der Multiplexer durch.
  • Die Interpolation wird durchgeführt durch Zuführen der Scheitelwerte, die unter Verwendung Bits höherer Ordnung 10a ausgewählt werden, zu den Multiplexereingängen der ersten Stufe 1901. Die Eingänge zu den Steuereingangssignl-Berechnungsblöcken sind fest verdrahtet. Der nichtsymmetrische radiale Interpolator 1900 berechet die Scheitelwerte für vier Iterationen der Unterwürfelerzeugung. Die Werte P''''(7) bis P''''(0) sind die Werte der Scheitel des vierten erzeugten Unterwürfels. Bei diesem Ausführungsbeispiel wird P''''(0) ausgewählt, durch 16 dividiert und als das Ergebnis der Interpolation verwendet. Die Teilung durch 16 wird durch Verschieben von Bits implementiert und ist in 30 nicht dargestellt.
  • Ein Durchschnittsfachmann auf diesem Gebiet wird erkennen, daß einer der anderen berechneten Werte P''''(7) bis P''''(1) ausgewählt werden kann, durch 16 dividiert und als das Ergebnis der Interpolation verwendet werden kann. Das Verwenden von Werten, die anderen Scheiteln des letzten Unterwürfels entsprechen, um das Interpolationsergebnis zu erzeugen, wird das Ergebnis der Interpolation anders vorspannen. Dies ist eine Betrachtung beim Auswählen, welcher Scheitelwert des letzten Unterwürfels, der erzeugt wurde, durch 16 dividiert wird, um das Ergebnis der Interpolation zu erzeugen.
  • Die beschnittene vierflächige Interpolation kann für die Implementierung in einem Farbraum angepaßt werden, der durch ein nichtsymmetrisches Würfelgitter dargestellt ist. Wie es für eine beschnittene vierflächige Interpolation der Fall war, werden die Scheitel des erzeugten Unterwürfels unter Verwendung der Scheitel eines Tetraeders berechnet, der von dem Würfel unterteilt ist, der verwendet wird, um den Unterwürfel zu erzeugen.
  • Für einige Iterationen der Unterwürfelerzeugung kann es jedoch sein, daß die entsprechenden Bits von jeder der a1, b1 und c1-Komponente nicht vorliegen. Für diese Fälle muß die Berechnung der Unterwürfelscheitel modifiziert werden, um die fehlenden entsprechenden Bits bei einer oder mehreren der a1, b1 und c1 Komponenten auszugleichen.
  • In Tabelle 5 und den Gleichungen 25 und 26 sind die Beziehungen gezeigt, die notwendig sind, um die Werte der Unterwürfelscheitel für eine nichtsymmetrische beschnittene vierflächige Unterwürfelerzeugung zu berechnen. Die Gleichungen 25 und 26 zusammen mit den Gleichungen 14 bis 18 werden verwendet, um die richtigen Werte zu erzeugen, so daß bei den in Tabelle 5 aufgelisteten Beziehungen die richtigen Unterwürfelscheitelwerte mit oder ohne die Bits von a1, b1 und c1 erzeugt werden, die dieser Iteration der vorliegenden Unterwürfelerzeugung entsprechen. Falls für eine gegebene Iteration der Unterwürfelerzeugung ein Bit in einem oder mehreren von a1, b1 oder c1 nicht vorliegt, erzeugen die Gleichung 25 und die Gleichung 26 die Nummer des Scheitels des Würfels, der beim Erzeugen eines Scheitelwerts des Unterwürfels verwendet wird, so daß eine Kompensation für das/die fehlenden Bits durchgeführt wird. g(N, i) = (v[i]| ~ m[i] & N) Gl. 25 h(N, i) = (v[i]|N) Gl. 26
  • Tabelle 5
    • P'[7] = {P[g(7, i)] + P[n(7, i)]} ÷ 2
    • P'[6] = {P[g(6, i)] + P[h(6, i)]} ÷ 2
    • P'[5] = {P[g(5, i)] + P[h(5, i)]} ÷ 2
    • P'[4] = {P[g(4, i)] + P[h(4, i)]} ÷ 2
    • P'[3] = {P[g(3, i)] + P[h(3, i)]} ÷ 2
    • P'[2] = {P[g(2, i)] + P[h(2, i)]} ÷ 2
    • P'[1] = {P[g(1, i)] + P[h(1, i)]} ÷ 2
    • P'[0] = {P[g(0, i)] + P[h(0, i)]} ÷ 2
  • Obwohl 24 eine graphische Darstellung der Erzeugung eines Unterwürfels 1400 von einem Würfel 1401 unter Verwendung einer nichtsymmetrischen radialen Unterwürfelerzeugung liefert, kann 24 auch eine graphische Darstellung einer nichtsymmetrischen beschnittenen vierflächigen Unterwürfelerzeugung liefern. Bei der speziellen Iteration der in 24 gezeigten Unterwürfelerzeugung liegt das Bit, das der Iteration für die Komponenten b1 und c1 entspricht, nicht vor. Daher geben die Beziehungen in Tabelle 5, wobei g(N, i) und h(N, i), die für die entsprechenden Bits von b1 und c1 berechnet wurden, nicht vorliegen, vor, daß die Scheitelwerte P'[7], P'[6], P'[5] und P'[4] als Mittelwert der Werte der beiden Scheitel berechnet werden, die jeweils mit P'[7], P'[6], P'[5] und P'[4] vertikal ausgerichtet sind. Die Berechnung der Scheitelwerte für andere Kombinationen, bei denen der von a1, b1 oder c1 vorliegt oder nicht vorliegt, wird analog durch die Gleichungen 25 und 26 gehandhabt.
  • In 31 ist eine schematische Darstellung der nichtsymmetrischen beschnittenen vierflächigen Interpolationsberechnung dargestellt. Die Anzahl von Berechnungen, die erforderlich sind, um die nichtsymmetrische beschnittene vierflächige Interpolation durchzuführen, wird berechnet als:
    Figure 00670001
    Anzahl von Speicherzugriffen = D(min(2d, 2n)) Gl. 28
  • In 32 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer nichtsymmetrischen beschnittenen vierflächigen Interpolation gezeigt. Für dieses Verfahren sind die Eingangsfarbraumwerte 10 aus d Komponenten gebildet. Jede der d Komponenten ist in einen Satz von Bits höherer Ordnung 10a und Bits niedrigerer Ordnung 10b unterteilt. Die d Sätze von Bits niedrigerer Ordnung sind jeweils als lb1, lb2, lb3, ... lbd bezeichnet. Jeder der d Sätze von Bits niedrigerer Ordnung 10b wird jeweils aus n1, n2, n3, ... nd Bits gebildet. Die Bitposition von jedem der d Sätze von Bits niedrigerer Ordnung wird bestimmt von dem höchstwertigsten Bit zu dem niedrigstwertigsten Bit durch entsprechende Werte von i1, i2, i3, ... id bezeichnet, die jeweils entsprechend von n1 – 1 bis 0, n2 – 1 bis 0, n3 – 1 bis 0, ... nd – 1 bis 0 reichen.
  • Zunächst wird ein Satz von 2n – 2 Werten berechnet 2000, unter Verwendung von g(N, i) = (v[i]| ~ m[i] & N) und h(N, i) = (v[i]|N), wobei m[i] = 2d-1 × Maske1[i] + 2d-2 × Maske2[i] + 2d-3 × Maske3[i] + ... + 2d-d × Masked[i]. Für diese Berechnung sind die Werte der Maskej = 2k – 1 jeweils für einen Wert k berechnet, der aus n1, n2, n3, ... nd ausgewählt wird, wobei der Wert von j dem Wert des tiefergestellten Zeichens des ausgewählten von n1, n2, n3, ... nd entspricht. Die Werte von j reichen von 1 bis d. Die Werte von v[i] werden berechnet als m [i] & (2d-1 × lb1[i] + 2d-2 × lb2[i] + 2d-3 × lb3[i] + ... + 2d-d × lbd[i]) für Werte von i, die von n – 1 bis 0 reichen, wobei n dem größten von n1, n2, n3, ... nd entspricht. Der Wert von N entspricht den Scheitelnummern, die von 1 bis 2d reichen. Nachfolgend wird eine Anzahl von Interpolationsdatenwerten gleich dem Minimum von 2n und 2d ausgewählt 2001 unter Verwendung der eindeutigen Werte in dem Satz von 2n – 2 Werten, einem Wert von v[i] für i in dem Bereich von n – 1 bis 0, und den d Sätzen von Bits höherer Ordnung. Schließlich werden die ausgewählten Interpolationsdatenwerte addiert 2002, um eine Summe zu erzeugen. Um einen Abrundungsfehler zu vermeiden, wird die erzeugte Summe durch 2n dividiert. Dieser Schritt ist in 32 nicht gezeigt.
  • In 33 ist ein Flußdiagramm hoher Ebene eines Verfahrens gezeigt, das in Software implementiert ist, um eine nichtsymmetrische beschnittene vierflächige Interpolation durchzuführen. Zunächst werden die Maskenwerte für jede Komponente des Eingangsfarbraumwerts 10 erzeugt 2100. Nachfolgend wird eine Bestimmung 2101 durchgeführt, ob irgendeine der Komponenten des Eingangsfarbraumwerts (a, b, c) 10 einer Position an einer äußeren Grenze des Würfelgitters 1 entspricht. Dies ist der Fall, falls eine oder mehrere der Komponenten des Eingangsfarbraumwerts einen hexadezimalen Wert von FF aufweist. Falls dies der Fall ist, wird zum Zweck des Erzeugens des Index in das Würfelgitter 1 zum Wiedergewinnen der notwendigen Scheitelwerte, den Komponenten des Eingangsfarbraumwerts 10, die einen hexadezimalen Wert von FF aufweisen, ein hexadezimaler Wert von 100 zugewiesen 2102. Dann werden die Werte von m[i] und v[i] berechnet 2103. Nachfolgend werden die Indizes, die verwendet werden, um auf jeden der Scheitelwerte zuzugreifen, die für die Interpolation verwendet werden, unter Verwendung von g(N, i) und h(N, i) berechnet 2104. Schließlich wird jede der Komponenten des Ausgangsfarbraumwerts unter Verwendung der Werte berechnet 2105, auf die durch die Indizes zugegriffen wird, die im Schritt 2104 berechnet werden.
  • In 45 ist eine Auflistung des Codes für eine Softwareimplementierung einer nichtsymmetrischen beschnittenen vierflächigen Interpolation in C enthalten. Für die nichtsymmetrische beschnittene vierflächige Interpolation ent sprechen die berechneten Indizes Versätzen von dem Ursprung des Würfels, der durch die Bits höherer Ordnung 10a ausgewählt wird. Aufgrund der sich ändernden Auflösung, die in dem gesamten Ausgangsfarbraum verwendet wird, werden die Werte der Scheitel für die drei Würfel (ein Würfel für jede Abmessung des Ausgangsfarbraums), die durch die Bits höherer Ordnung 10a ausgewählt werden, in die Routine von 45 geleitet, jedesmal wenn an einem Eingangsfarbraumwert 10 eine Farbraumumwandlung durchgeführt wird. Dies unterscheidet sich von dem Code für die beschnittene radiale und beschnittene vierflächige Interpolation, bei der die Farbtabelle als ein Array in die Routine geleitet wird und Indizes in diese Tabelle in der Routine berechnet werden.
  • Es ist auch möglich, eine nichtsymmetrische beschnittene vierflächige Interpolation in Hardware zu implementieren. Wie es vorher erwähnt wurde, werden Verschiebungen und Verkettungen implementiert, ohne zusätzliche Hardwareelemente zu erfordern. Die Hardwarefunktionsblöcke, die erforderlich sind, um die nichtsymmetrische beschnittene vierflächige Interpolation durchzuführen, umfassen Addierer, UND-Gatter, ODER-Gatter und Multiplexer. Mit D Abmessungen in dem Ausgangsfarbraum, d Abmessungen in dem Eingangsfarbraum und n Bits, die die maximale Anzahl von Bits darstellen, die verwendet werden, um eine der Komponenten des Eingangsfarbraums darzustellen, können die Anforderungen der Hardwareimplementierung der nichtsymmetrischen beschnittenen vierflächigen Interpolation berechnet werden als: Anzahl von Addierern = D × 2n Gl. 29 Anzahl von Multiplexern = D × (2n – 1) Gl. 30
    Figure 00690001
  • Um den Gatterpegelentwurf zu erzeugen, der notwendig ist, um die nichtsymmetrische beschnittene vierflächige Interpolation in Hardware zu implementieren, kann eine üblicherweise verwendete Hardwarebeschreibungssprache, wie z. B. VHDL, verwendet werden. In 46 ist eine Auflistung des VHDL-Codes enthalten, der eine Hardwareimplementierung einer nichtsymmetrischen beschnittenen vierflächigen Interpolation erzeugen kann.
  • In 34 ist eine Hardwareimplementierung eines nichtsymmetrischen beschnittenen vierflächigen Interpolators 2200 gezeigt. Die Steuereingangssignal-Berechnungsblöcke 2201a2201v berechnen die Werte, die durch die Steuereingangssignale der Multiplexer 2202a2202n verwendet werden. Die Steuereingangssignal-Berechnungsblöcke 2201a2201v legen die Funktionen der Gleichungen 25 und 26 an, wie es in 34 angezeigt ist, um die Steuereingangssignale für die Multiplexer 2202a2202n zu berechnen. Wie es in 34 gezeigt ist, verwendet der Multiplexer 2202o einen Wert von v[i] für sein Steuereingangssignal. Jeder der Multiplexer 2202a2202o wählt aus acht Interpolationsdatenwerten aus, die unter Verwendung von Bits höherer Ordnung 10a ausgewählt wurden. Die Addierer 2203a2203o summieren die Ausgangssignale der Multiplexer 2202a2202o. Diese Summe wird durch Bitverschieben (in 34 nicht gezeigt) durch 2n dividiert, um das Interpolationsergebnis zu erzeugen.
  • Die Hardware von 28 könnte wiederholt für zusätzliche (D-1) Durchläufe verwendet werden, um die verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11 zu erzeugen. Oder es könnte zusätzliche (D-1) Duplikationen von einem Teil der in 28 gezeigten Hardwareimplementierung geben, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexersteuereingangssignalen verwendet wird, könnte für jede der D Duplikationen verwendet werden. Der in 34 gezeigte nichtsymmetrische beschnittene vierflächige Interpolator 2200 entspricht d = 3 und dem Maximum von einem von n1, n2, n3, ... nd gleich 4 für den Eingangsfarbraumwert 10. Der nichtsymmetrische beschnittene vierflächige Interpolator 2200 implementiert die schematische Darstellung der in 31 gezeigten nichtsymmetrischen beschnittenen vierflächigen Interpolation.
  • In 35 ist ein Flußdiagramm hoher Ebene eines verallgemeinerten Verfahrens zum Durchführen einer nichtsymmetrischen vierflächigen Interpolation gezeigt. Zunächst wird ein erster und ein zweiter Satz von 2d Werten unter Verwendung von g(N, i) bzw. h(N, i) berechnet 2300. Danach werden 2d Paare von Interpolationsdatenwerten unter Verwendung des ersten und des zweiten Satzes von Werten ausgewählt 2301. Schließlich wird ein Satz von 2d Summen unter Verwendung der 2d Paare von Interpolationsdatenwerten berechnet 2302.
  • Das in 35 gezeigte Verfahren ist für eine einzige Iteration einer nichtsymmetrischen vierflächigen Interpolation. Es sollte klar sein, daß weitere Iterationen durchgeführt würden durch Wiederholen der Schritte von 35, mit den aufeinanderfolgenden Sätzen von 2a Werten, die unter Verwendung von g(N, i) und h(N, i) berechnet wurden, für Werte von v[i] und m[i], die aufeinanderfolgend dekrementierten Werten von i entsprechen, Auswählen aufeinanderfolgender Sätze von 2d Paaren von Werten von dem vorher berechneten Satz von 2d Summen, und Berechnen aufeinanderfolgender Sätze von 2d Summen von den aufeinanderfolgenden Sätzen von 2d Paaren von Werten. Nach dem Durchführen von n Iterationen, wo n gleich dem höchsten von n1, n2, n3, ... nd ist, wird eine der 2d Summen des letzten berechneten Satzes durch 2n dividiert (in 35 nicht gezeigt), um das Ergebnis zu erzeugen. Die Division durch 2, die nach jeder Iteration durchgeführt werden könnte, wird bis nach der letzten Iteration verzögert, um Abrundungsfehler zu vermeiden.
  • In 36 ist eine Hardwareimplementierung eines nichtsymmetrischen vierflächigen Interpolators 2400 für die Umwandlung von Eingangsfarbraumwerten 10 zu einer Komponente von Ausgangsfarbraumwerten 11 gezeigt. Diese gleiche Hardware könnte wiederholt für zusätzliche (D-1) Durchläufe verwendet werden, um die verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11 zu erzeugen. Oder es könnte zusätzliche (D-1) Duplikationen von einem Teil der in 36 gezeigten Hardwareimplementierung geben, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexersteuereingangssignalen verwendet wird, könnte für jede der D Duplikationen verwendet werden. Der in 36 gezeigte nichtsymmetrische vierflächige Interpolator 2400 entspricht d = 3 und n = 4, wobei n gleich dem höchsten von n1, n2, n3, ... nd für den Eingangsfarbraumwert 10 ist. Die in 36 gezeigte Hardwareimplementierung implementiert die Gleichungen 25 und 26 und die Gleichungen von Tabelle 5 für die Erzeugung der Unterwürfelscheitelwerte. Der nichtsymmetrische vierflächige Interpolator 2400 von 36 ist aus einer ersten, zweiten, dritten und vierten Stufe 24012404 gebildet. Jede der vier Stufen 24012404 umfaßt 23 Addierer, von denen einer als 2405 bezeichnet ist. Jede der vier Stufen 19011904 umfaßt ferner 2 × 23 Multiplexer, von denen einer als 2406 bezeichnet ist. Die Multiplexer für jede Stufe sind in 23 Paaren angeordnet. Schließlich umfaßt jede der vier Stufen 24012404 23 Steuereingangssignal-Berechnungsblöcke zum Berechnen von g(N, i) und 23 Steuereingangssignal-Berechnungsblöcke zum Berechnen von h(N, i). Einer der Steuereingangssignal-Berechnungsblöcke zum Berechnen von g(N, i) ist als 2407 bezeichnet und einer der Steuereingangssignal-Berechnungsblöcke zum Berechnen von h(N, i) ist als 2408 bezeichnet.
  • Jede der Stufen 24012404 führt eine Iteration der Interpolation durch. Einige Interpolationsanwendungen können erfordern, daß nur eine einzige Iteration der Interpolation durchgeführt wird. Für eine einzige Iteration der Interpo lation ist n = 1. Dies entspricht einer Hardwareimplementierung eines nichtsymmetrischen vierflächigen Interpolators 2400 unter Verwendung nur der ersten Stufe 2401. Eine zusätzliche Stufe würde für jede zusätzliche Iteration der Interpolation addiert, die für die spezielle Anwendung erforderlich ist.
  • Jedes der Eingangssignale der Multiplexer in der ersten Stufe 2401 ist mit den acht Scheitelwerten verbunden, die unter Verwendung der Bits höherer Ordnung 10a ausgewählt werden. Die Ausgangssignale jedes Paars von Multiplexern in den Stufen 24012404 sind jeweils mit dem ersten und dem zweiten Eingangssignal des entsprechenden Addierers verbunden. Das Ausgangssignal von jedem der Addierer der ersten Stufe 1901 ist ein Scheitelwert des ersten Unterwürfels. Wie es vorher erwähnt wurde, wird die Division durch 2 für jede Iteration der Unterwürfelerzeugung verzögert, bis der letzte Unterwürfel erzeugt ist. Die Scheitelwerte des letzten erzeugten Unterwürfels werden durch 2n dividiert (in 36 nicht gezeigt), wobei n der Anzahl von Stufen in dem nichtsymmetrischen vierflächigen Interpolator entspricht. Die Eingänge jedes Multiplexers für die zweite, dritte und vierte Stufe 24022404 sind zu den Ausgängen der Addierer der vorhergehenden Stufe gekoppelt.
  • Das Steuereingangssignal jedes Multiplexers ist mit dem Ausgangssignal des entsprechenden Steuereingangssignal-Berechnungsblocks verbunden. Die in dem nichtsymmetrischen vierflächigen Interpolator 2400 verwendeten Multiplexer haben die Fähigkeit, unter Verwendung eines 3-Bit-Steuereingangssignals einen von acht 8-Bit-Werten auszuwählen. Für diese d = 3 Implementierung eines nichtsymmetrischen vierflächigen Interpolators 2400 ist jedes der Eingangssignale in die Steuereingangssignal-Berechnungsblöcke eine 3-Bit-Größe. Das Ausgangssignal von jedem der Steuereingangssignal-Berechnungsblöcke ist eine 3-Bit-Größe. Die Addierer, die jedem Multiplexer zugeordnet sind, führen eine Addition der ausgewählten 8-Bit-Werte von jedem der Multiplexer durch.
  • Die Interpolation wird durchgeführt durch Zuführen der Scheitelwerte, die unter Verwendung Bits höherer Ordnung 10a ausgewählt werden, zu den Multiplexereingängen der ersten Stufe 2401. Die Eingänge zu den Steuereingangssignal-Berechnungsblöcken sind fest verdrahtet. Der nichtsymmetrische vierflächige Interpolator 2400 berechnet die Scheitelwerte für vier Iterationen der Unterwürfelerzeugung. Die Werte P''''(7) bis P''''(0) sind die Werte der Scheitel des vierten erzeugten Unterwürfels. Bei diesem Ausführungsbeispiel wird P''''(0) ausgewählt, durch 16 dividiert und als das Ergebnis der Interpolation verwendet. Die Division durch 16 wird durch Verschieben von Bits implementiert und ist in 36 nicht dargestellt.
  • Ein Durchschnittsfachmann auf diesem Gebiet erkennt, daß einer der anderen berechneten Werte P''''(7) bis P''''(1) ausgewählt werden kann, durch 16 dividiert und als das Ergebnis der Interpolation verwendet werden kann. Das Verwenden von Werten, die anderen Scheiteln des letzten Unterwürfels entsprechen, um das Interpolationsergebnis zu erzeugen, wird das Ergebnis der Interpolation anders vorspannen. Dies ist eine Überlegung beim Auswählen, welcher Scheitelwert des letzten erzeugten Unterwürfels durch 16 dividiert wird, um das Ergebnis der Interpolation zu erzeugen.
  • Eine gemeinsame Hardwareimplementierung von nichtsymmetrischer radialer Interpolation und nichtsymmetrischer beschnittener vierflächiger Interpolation ist möglich. Wie es von den schematischen Darstellungen der nichtsymmetrischen radialen Interpolation und der nichtsymmetrischen beschnittenen vierflächigen Interpolation in 25 bzw. 31 ersichtlich ist, könnte eine gemeinsame Hardwareimplementierung erreicht werden durch Multiplexen der Indizes, die verwendet werden, um auf die Eingangsscheitelwerte zu zugreifen. In 47 ist eine Auflistung des VHDL-Codes enthalten, der eine gemeinsame Hardwareimplementierung einer nichtsymmetrischen radialen und nichtsymmetrischen beschnittenen vierflächigen Interpolation erzeugen kann.
  • In 37 ist eine Hardwareimplementierung eines gemeinsamen nichtsymmetrischen beschnittenen radialen und nichtsymmetrischen beschnittenen vierflächigen Interpolators 2500 gezeigt. Die Hardwareimplementierung der gemeinsamen nichtsymmetrischen beschnittenen radialen und nichtsymmetrischen beschnittenen vierflächigen Interpolation umfaßt die Steuereingangssignal-Berechnungsblöcke des nichtsymmetrischen beschnittenen radialen 1700 und des nichtsymmetrischen beschnittenen vierflächigen 2200 Interpolators. Die Multiplexer 2501a2501n werden verwendet, um die Daten an den Steuereingängen der Multiplexer 2502a2502n auszuwählen. Ein einzelnes Bit wird verwendet, um die Auswahl der Daten an den Eingängen der Multiplexer 2501a2501n zu steuern. Das einzelne Bit steuert, ob die Multiplexersteuereingangssignale in die Multiplexer 2502a2502n für eine nichtsymmetrische beschnittene vierflächige Interpolation oder für eine nichtsymmetrische beschnittene radiale Interpolation sind. Das Multiplexersteuereingangssignal für die Multiplexer 2502a2502n bestimmt, welcher der Interpolationsdatenwerte mit den Addierern gekoppelt wird. Wenn das Bit in dem ersten seiner zwei Zustände ist, arbeitet die Hardware von 37 als ein nichtsymmetrischer beschnittener radialer Interpolator. Mit dem Bit in dem zweiten seiner zwei Zustände arbeitet die Hardware von 37 als ein nichtsymmetrischer beschnittener vierflächiger Interpolator. Die Addierer 2503a2503o summieren die Ausgangssignale der Multiplexer 2502a2502o. Durch Verschieben von Bits wird die resultierende Summe durch 16 dividiert (in 22 nicht gezeigt), um das Ergebnis zu erzeugen. Die Steuereingangssignal-Berechnungsblöcke 2504a2504k implementieren die Gleichungen 14 bis 19, und die Steuereingangssignal-Berechnungsblöcke 2505a2505v implementieren die Gleichungen 25 und 26.
  • Die Hardware von 37 könnte wiederholt für zusätzliche (D-1) Durchläufe verwendet werden, um die verbleibenden D-1 Komponenten des Ausgangsfarbraumwerts 11 zu erzeugen. Oder es könnte zusätzliche (D-1) Duplikationen eines Teils der in 37 gezeigten Hardwareimplementierung geben, um jede der D Komponenten gleichzeitig zu erzeugen. Die Hardware, die zum Erzeugen von Multiplexersteuereingangssignalen verwendet wird, könnte für jede der D Duplikationen verwendet werden. Der in 37 gezeigte gemeinsame nichtsymmetrische beschnittene radiale und nichtsymmetrische beschnittene vierflächige Interpolator 2500 entspricht d = 3 und n = 4 für den Eingangsfarbraumwert 10.
  • Es sollte klar sein, daß für jedes der offenbarten Hardwareausführungsbeispiele von Interpolationen Berechnungen erforderlich sind, um die Multiplexersteuereingangssignale zu liefern. Diese Berechnungen können in speziell zugewiesener Hardware implementiert werden, oder unter Verwendung eines Mikroprozessors unter Softwaresteuerung durchgeführt werden. Das Verwenden eines Mikroprozessors zum Berechnen der Multiplexersteuereingangssignale führt zu Hardwareeinsparungen auf Kosten des Anstiegs der Zeit, die erforderlich ist, um die Multiplexersteuereingangsberechnungen durchzuführen.

Claims (10)

  1. Ein beschnittener vierflächiger Interpolator (1000) zum Interpolieren zwischen Interpolationsdatenwerten unter Verwendung von Eingangsdatenwerten (10), die jeweils d Komponenten aufweisen, um Ausgangsdatenwerte (11) zu erzeugen, wobei d Komponenten durch d Sätze von Bits dargestellt sind, die unterteilt sind, um d Sätze von Bits niedrigerer Ordnung (10b) zu bilden, wobei jeder der d Sätze von Bits niedrigerer Ordnung (10b) n der Bits aufweist, wobei der beschnittene vierflächige Interpolator (1000) folgende Merkmale umfasst: einen ersten Satz von 2n-1 Multiplexern (1003a1003o), die jeweils konfiguriert sind zum Empfangen eines von einem ersten Satz von Steuereingangssignalen und einen Multiplexerausgang aufweisen, wobei jeder Multiplexer (1003a1003o) des ersten Satzes vorgesehen ist, um ansprechend auf eines des ersten Satzes von Steuereingangssignalen aus den Interpolationsdatenwerten auszuwählen; und eine Einrichtung zum Addieren (1004a1004o), die konfiguriert ist zum Empfangen des Multiplexerausgangssignals von dem Satz von Multiplexern (1003a1003o).
  2. Der beschnittene vierflächige Interpolator (1000) gemäß Anspruch 1, bei dem: jeder der Multiplexer (1003a1003o) des ersten Satzes 2d von Multiplexereingängen aufweist, zum Empfangen von 2d der Interpolationsdatenwerte; die Einrichtung zum Addieren (1004a1004o) 2n-1 Addierer (1004a1004o) umfasst, die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang aufweisen; 2n-1 der Addierer (1004a1004o) jeweils den ersten und den zweiten Eingang mit einem der Multiplexerausgänge der Multiplexer (1003a1003o) des ersten Satzes gekoppelt haben; der erste Eingang von einem der Addierer (1004a1004o) eine Konfiguration zum Empfangen von einem der Interpolationsdatenwerte umfasst, die unter Verwendung von d Sätzen von Bits höherer Ordnung (10a) ausgewählt wurden, die von den d Sätzen von Bits unterteilt werden, und der zweite Eingang mit einem der Multiplexerausgänge der Multiplexer (1003a1003o) des ersten Satzes gekoppelt ist; 2n – (2n-1 – 1) der Addierer (1004a1004o) jeweils den ersten Eingang und den zweiten Eingang mit dem Ausgang eines anderen der Addierer (1004a1004o) gekoppelt haben; und der erste Satz eine Unterteilung in n Gruppen der Multiplexer (1003a1003o) umfasst, die jeweils durch einen Wert von i gekennzeichnet sind, der von n – 1 bis 0 reicht, wobei jede der n Gruppen des ersten Satzes jeweils 21 der Multiplexer (1003a1003o) von dem ersten Satz aufweist.
  3. Der beschnittene vierflächige Interpolator (1000) gemäß Anspruch 2, der ferner folgende Merkmale umfasst: einen zweiten Satz von 2n-1 – 1 bitweisen UND-Blöcken (1001a1001k), die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang aufweisen, wobei der zweite Satz in n – 1 Gruppen der bitweisen UND-Blöcke (1001a1001k) unterteilt ist, die jeweils durch den Wert von i gekennzeichnet sind, der von n – 1 bis 1 reicht, wobei jede der n – 1 Gruppen des zweiten Satzes jeweils 2i-1 der bitweisen UND-Blöcke (1001a1001k) aufweist, wobei jeder der Ausgänge der bitweisen UND-Blöcke (1001a1001k) von den n – 1 Gruppen des zweiten Satzes mit einem der Multiplexer (1003a1003o) gekoppelt ist, in einer der n – 1 Gruppen des ersten Satzes, die den entsprechenden Wert von i aufweisen, um eines des Satzes von Steuereingangssignalen zu liefern; und einen dritten Satz von 2n-1 – 1 bitweisen ODER-Blöcken (1002a1002k), die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang aufweisen, wobei der dritte Satz in n – 1 Gruppen der bitweisen ODER-Blöcke (1002a1002k) unterteilt ist, die jeweils durch den Wert von i gekennzeichnet sind, der von n – 1 bis 1 reicht, wobei jede der n – 1 Gruppen des dritten Satzes jeweils 2i-1 der bitweisen ODER-Blöcke (1002a1002k) aufweist, wobei jeder der Ausgänge der bitweisen ODER-Blöcke (1002a1002k) von den n – 1 Gruppen des dritten Satzes mit einem der Multiplexer (1003a1003o) gekoppelt ist, in einer der n – 1 Gruppen des ersten Satzes, die den entsprechenden Wert von i aufweisen, um eines des Satzes von Steuereingangssignalen zu liefern.
  4. Der beschnittene vierflächige Interpolator (1000) gemäß Anspruch 3, bei dem: lb1, lb2, lb3, ..., lbd die d Sätze von Bits niedrigerer Ordnung (10b) bezeichnen, wobei eine Bitposition jedes Bits der d Sätze von Bits niedrigerer Ordnung (10b) von einem höchstwertigsten der Bits niedrigerer Ordnung (10b) zu einem niedrigstwertigen der Bits niedrigerer Ordnung (10b) durch einen Wert von k be zeichnet ist, der entsprechend von n – 1 bis 0 reicht, wobei eine Berechnung eines vierten Satzes von n Werten, die jeweils als v[k] bezeichnet sind, die d Sätze von Bits niedrigerer Ordnung (10b) verwendet gemäß v[k] = 2d-1 × lb1[k] + 2d-2 × lb2[k] + 2d-3 × lb3[k] + ... + 2d-d × lbd[k], für jeden der Werte von k; und wobei der ersten Eingang von jedem der bitweisen UND-Blöcke (1001a1001k) und der bitweisen ODER-Blöcke (1002a1002k) in den n – 1 Gruppen dem Wert von i entspricht, der von n – 1 bis 1 reicht, und eine Konfiguration umfasst, um einen der vier Sätze von n Werten für k gleich n – 1 zu empfangen, wobei der zweite Eingang von jedem der bitweisen UND-Blöcke (1001a1001k) und der bitweisen ODER-Blöcke (1002a1002k) in den n – 1 Gruppen dem Wert von i entspricht, der von n – 1 bis 2 reicht, die jeweils angeordnet sind zum Empfangen eines eines fünften Satzes von Werten, der berechnet wird unter Verwendung von bitweisen UND-Operationen und bitweisen ODER-Operationen an einem des vierten Satzes von n Werten, wobei der zweite Eingang von jedem der bitweisen UND-Blöcke (1001a1001k) und der bitweisen ODER-Blöcke (1002a1002k) in den n – 1 Gruppen dem Wert von i gleich 1 entspricht, und eine Konfiguration umfasst, um einen des vierten Satzes von n Werten für k gleich n – 2 zu empfangen.
  5. Der beschnittene vierflächige Interpolator (1000) gemäß Anspruch 4, bei dem jeder der Interpolationsdatenwerte d Interpolationsdatenwertkomponenten umfasst; jede der d Interpolationsdatenwertkomponenten einer Abmessung eines Ausgangsfarbraums entspricht, und jede der d Komponenten der Eingangsdatenwerte (10) einer Dimension eines Eingangsfarbraums entspricht; ein Druckgerät den beschnittenen vierflächigen Interpolator (1000) zum Durchführen einer Farbraumumwandlung umfasst.
  6. Der beschnittene vierflächige Interpolator (1000) gemäß Anspruch 5, bei dem: D gleich 3 ist, d gleich 3 ist und n gleich 4 ist, wobei der Ausgangsfarbraum einen Farbraum umfasst, der aus der Gruppe ausgewählt ist, die aus einem RGB-, einem Lab-, einem XYZ-, einem HSV-, einem Luv-, einem HLS- und einem CMY-Farbraum besteht, und der Eingangsfarbraum einen Farbraum umfasst, der aus der Gruppe ausgewählt ist, die aus einem RGB-, einem Lab-, einem XYZ-, einem HSV-, einem Luv-, einem HLS- und einem CMY-Farbraum besteht.
  7. Der beschnittene vierflächige Interpolator (1000) gemäß Anspruch 5, bei dem D gleich 4 ist, d gleich 3 ist und n gleich 4 ist, wobei der Ausgangsfarbraum einen CMYK-Farbraum umfasst, und der Eingangsfarbraum einen Farbraum umfasst, der aus der Gruppe ausgewählt ist, die aus einem RGB-, einem Lab-, einem XYZ-, einem HSV-, einem Luv-, einem HLS- und einem CMY-Farbraum besteht.
  8. Ein vierflächiger Interpolator (900) zum Interpolieren zwischen Interpolationsdatenwerten unter Verwendung von Eingangsdatenwerten (10), die jeweils d Komponenten aufweisen, um Ausgangsdatenwerte (11) zu erzeugen, wobei die d Komponenten entsprechend durch d Sätze von Bits dargestellt sind, die jeweils unterteilt sind, um d Sätze von Bits höherer Ordnung (10a) und d Sätze von Bits niedrigerer Ordnung (10b) zu bilden, wobei die d Sätze von Bits höherer Ordnung (10a) verwendet werden, um 2d der Interpolationsdatenwerte auszuwählen, wobei der vierflächige Interpolator (900) folgende Merkmale umfasst: einen Satz von 2 × 2d Multiplexern (906), wobei jeder der Multiplexer (906) einen Multiplexerausgang aufweist und konfiguriert ist, um die 2d der Interpolationsdatenwerte zu empfangen, wobei jeder der Multiplexer (906) zum Auswählen eines der 2d Interpolationsdatenwerte anspricht auf einen von 2 × 2d Werten, die von den d Sätzen von Bits niedrigerer Ordnung (10b) bestimmt werden; und einen Satz von 2d Addierern (905), wobei jeder der Addierer (905) einen ersten Eingang, einen zweiten Eingang und einen Ausgang aufweist, wobei jeder einer ersten Gruppe von 2d der Multiplexer (906) den entsprechenden Multiplexerausgang mit einem der ersten Eingänge gekoppelt hat, wobei jeder einer zweiten Gruppe von 2d der Multiplexer (906) den entsprechenden Multiplexerausgang mit einem der zweiten Eingänge gekoppelt hat, wobei der Satz von 2 × 2d Multiplexern (906) und der Satz von 2d Addierern (906) eine Stufe bilden.
  9. Ein Verfahren der vierflächigen Interpolation unter Verwendung von Interpolationsdatenwerten für eine Auswahl unter Verwendung von Eingangsdatenwerten (10), die jeweils d Komponenten aufweisen, wobei die d Komponenten dargestellt sind, durch d Sätze von Bits, die jeweils unterteilt sind, um d Sätze von Bits höherer Ordnung (10a) und d Sätze von Bits niedrigerer Ordnung (10b) zu bilden, wobei jeder der d Sätze von Bits niedrigerer Ordnung (10b) n Bits aufweist, wobei die d Sätze von Bits niedrigerer Ordnung (10b) als lb1, lb2, ..., lbd bezeichnet sind, wobei die Bitposition jedes Bits der d Sätze von Bits niedrigerer Ordnung (10b) von dem höchstwertigsten der Bits niedrigerer Ordnung (10b) zu dem niedrigstwertigsten der Bits niedrigerer Ordnung (10b) durch einen entsprechenden Wert von i gekennzeichnet ist, der von n – 1 bis 0 reicht, wobei das Verfahren folgende Schritte umfasst: Berechnen eines ersten Werts gemäß v[i] = 2d-1 × lb1[i] + 2d-2 × lb2[i] + ... + 2d-d × lbd[i] für den Wert von i gleich ( n – 1); Berechnen eines ersten Satzes von UND-Werten gemäß v[n – 1] & k, für den Wert von k, der von 2d-1 bis 0 reicht; Berechnen eines ersten Satzes von ODER-Werten gemäß v[n – 1]|k, für den Wert von k, der von 2d-1 bis 0 reicht; Auswählen eines ersten Satzes von 2d Paaren der Interpolationsdatenwerte unter Verwendung des ersten Satzes der UND-Werte und des ersten Satzes der ODER-Werte, wobei jedes des ersten Satzes von 2d Paaren unter Verwendung eines des ersten Satzes von UND-Werten und eines des ersten Satzes von ODER-Werten ausgewählt wird, jeweils berechnet unter Verwendung des gleichen Werts von k; und Berechnen eines ersten Satzes von 2d Summen durch Summieren jedes des ersten Satzes von 2d Paaren der Interpolationsdatenwerte.
  10. Ein Verfahren der beschnittenen vierflächigen Interpolation unter Verwendung von Interpolationsdatenwerten für die Auswahl unter Verwendung von Eingangsdatenwerten (10), die jeweils d Komponenten aufweisen, wobei die d Komponenten dargestellt werden durch d Sätze von Bits, die jeweils unterteilt sind, um d Sätze von Bits höherer Ordnung (10a) und d Sätze von Bits niedrigerer Ordnung (10b) zu bilden, wobei jeder der d Sätze von Bits niedrigerer Ordnung (10b) n Bits aufweist, wobei die d Sätze von Bits niedrigerer Ordnung (101) als lb1, lb2, ..., lbd bezeichnet sind, wobei die Bitposition jedes Bits der d Sätze von Bits niedrigerer Ordnung (10b) von dem höchstwertigsten der Bits niedrigerer Ordnung (10b) zu dem niedrigstwertigsten der Bits niedrigerer Ordnung (10b) durch einen Wert von i gekennzeichnet ist, der entsprechend von n – 1 bis 0 reicht, wobei das Verfahren folgende Schritte umfasst: Berechnen eines ersten Satzes von 2n – 2 Werten unter Verwendung von bitweisen UND-Operationen und bitweisen ODER-Operationen, die mit v[i] gleich 2d-1 × lb1[i] + 2d-2 × lb2[i] + ... + 2d-d × lbd[i] arbeiten, für den Wert von i, der von (n – 1) bis 0 reicht; Auswählen von zumindest dem Minimum von 2n und 2d der Interpolationsdatenwerte unter Verwendung einzelner des ersten Satzes von 2n – 2 Werten, von v[i] für einen der Werte von i gleich n – 1, und der d Sätze von Bits höherer Ordnung (10a); und Addieren eines zweiten Satzes der Interpolationswerte, die von den Interpolationsdatenwerten gebildet werden, von dem Schritt des Auswählens, um eine Summe zu erzeugen.
DE69835333T 1997-12-12 1998-09-16 Tetraheaedrische und geschnitten-tetrahaedrische Interpolationsvorrichtung Expired - Fee Related DE69835333T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/989,961 US6031642A (en) 1997-12-12 1997-12-12 Tetrahedral and pruned tetrahedral interpolation
US989961 1997-12-12

Publications (2)

Publication Number Publication Date
DE69835333D1 DE69835333D1 (de) 2006-09-07
DE69835333T2 true DE69835333T2 (de) 2006-12-21

Family

ID=25535614

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69835333T Expired - Fee Related DE69835333T2 (de) 1997-12-12 1998-09-16 Tetraheaedrische und geschnitten-tetrahaedrische Interpolationsvorrichtung

Country Status (3)

Country Link
US (1) US6031642A (de)
EP (1) EP0923049B1 (de)
DE (1) DE69835333T2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6373580B1 (en) * 1998-06-23 2002-04-16 Eastman Kodak Company Method and apparatus for multi-dimensional interpolation
JP3912903B2 (ja) * 1998-07-02 2007-05-09 キヤノン株式会社 データ変換方法およびその装置
US20040042020A1 (en) * 2002-08-29 2004-03-04 Vondran Gary L. Color space conversion
US8054518B2 (en) * 2003-05-30 2011-11-08 Hewlett-Packard Development Company, L.P. Color imaging devices, color imaging methods, and color separation methods
US7304769B2 (en) * 2003-05-30 2007-12-04 Hewlett-Packard Development Company, L.P. Color imaging devices, color image forming methods, and color image data processing methods
JP4724413B2 (ja) * 2004-11-26 2011-07-13 キヤノン株式会社 データ分類方法
US7835044B2 (en) 2006-04-25 2010-11-16 Xerox Corporation Method for tetrahedral interpolation computations using data-level parallelism
US8760714B1 (en) 2009-08-26 2014-06-24 Marvell International Ltd. Color space conversion

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3893166A (en) * 1972-01-05 1975-07-01 Crosfield Electronics Ltd Colour correcting image reproducing methods and apparatus
US4275413A (en) * 1978-03-30 1981-06-23 Takashi Sakamoto Linear interpolator for color correction
JPS57208765A (en) * 1981-06-18 1982-12-21 Dainippon Screen Mfg Co Ltd Signal interpolating method for memory device
US4477833A (en) * 1981-08-12 1984-10-16 R. R. Donnelley & Sons Company Method of color conversion with improved interpolation
JPH087553B2 (ja) * 1988-10-27 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 色画像量子化方法及び装置
US5121196A (en) * 1988-11-18 1992-06-09 Konica Corporation Color processing method and apparatus with a color patch
US5208872A (en) * 1990-03-30 1993-05-04 The United States Of America As Represented By The United States National Aeronautics And Space Administration Programmable remapper with single flow architecture
JPH05501779A (ja) * 1990-07-09 1993-04-02 イーストマン コダック カンパニー 選択機能を有する二係数信号結合回路
JPH04354287A (ja) * 1991-05-30 1992-12-08 Sony Corp 画像補間回路
JP2903807B2 (ja) * 1991-10-17 1999-06-14 富士ゼロックス株式会社 色信号変換方法および装置
JP2903808B2 (ja) * 1991-10-17 1999-06-14 富士ゼロックス株式会社 色信号変換方法および装置
US5345541A (en) * 1991-12-20 1994-09-06 Apple Computer, Inc. Method and apparatus for approximating a value between two endpoint values in a three-dimensional image rendering device
US5337166A (en) * 1992-02-14 1994-08-09 Fuji Xerox Co., Ltd. Color signal transforming apparatus
DE59207069D1 (de) * 1992-12-02 1996-10-10 Eastman Kodak Co Verfahren zur Farbtransformation
US5390035A (en) * 1992-12-23 1995-02-14 International Business Machines Corporation Method and means for tetrahedron/octahedron packing and tetrahedron extraction for function approximation
EP0611231B1 (de) * 1993-02-12 1999-09-29 Eastman Kodak Company Verfahren zur Farbbildkalibrierung und -verbesserung zwischen Vorrichtungen mit expliziten Beschränkungen
US5504821A (en) * 1993-03-31 1996-04-02 Matsushita Electric Industrial Co., Ltd. Color converting apparatus for performing a three-dimensional color conversion of a colored picture in a color space with a small capacity of memory
US5684981A (en) * 1995-01-18 1997-11-04 Hewlett-Packard Company Memory organization and method for multiple variable digital data transformation
WO1996039774A1 (en) * 1995-06-06 1996-12-12 Apple Computer, Inc. A caching system for interpolation processing

Also Published As

Publication number Publication date
EP0923049A3 (de) 2004-01-02
DE69835333D1 (de) 2006-09-07
EP0923049A2 (de) 1999-06-16
US6031642A (en) 2000-02-29
EP0923049B1 (de) 2006-07-26

Similar Documents

Publication Publication Date Title
EP0632914B1 (de) Verfahren und gerät zur adaptiven interpolation eines digitalen bildes
US5793885A (en) Computationally efficient low-artifact system for spatially filtering digital color images
EP0763930B1 (de) Verfahren zur Berechnung von Farbtonbereichen
JP3737149B2 (ja) カラー・イメージ生成システムおよび方法
DE60310361T2 (de) Farbraumwandlung unter Verwendung von Interpolation
US5872898A (en) Method and apparatus for calculating color gamuts
DE3890560C2 (de) Verfahren und Vorrichtung zur Farb-Modifikation
JPH10341354A (ja) 外部定義される4次元着色剤を、所与のプリンタの色成分を有する等価な4次元着色剤に変換する方法及びシステム並びに変換する手段を有する印刷システム
EP1221812B1 (de) Schnelle Interpolation von grossen Farbtabellen
US6115031A (en) Method of converting color values
DE69835333T2 (de) Tetraheaedrische und geschnitten-tetrahaedrische Interpolationsvorrichtung
DE69820579T2 (de) Tetrahaedrische und geschnitten-tetrahaedrische interpolationsvorrichtung
US6049400A (en) Non-symmetric tetrahedral and non-symmetric pruned tetrahedral interpolation
EP0741492A1 (de) Farbtonbereiche angewandte selektive Farbkorrektur
DE69830460T2 (de) Vereinfachte Hardwareimplementation für radiale und Tetraeder-Interpolation
USRE37940E1 (en) Interpolation method and color correction method using interpolation
EP0477904B1 (de) Verfahren und Gerät zur Erzeugung verkleinerter Bilder
US6510242B1 (en) Color image enhancement during YCbCr to RGB color conversion
JP2876853B2 (ja) 色変換装置
US5966474A (en) Non-symmetric radial and non-symmetric pruned radial interpolation
US7023585B1 (en) Multi-dimensional edge interpolation
US6040925A (en) Radial and pruned radial interpolation
JPH0324673A (ja) 画像データ処理方法
JP3362281B2 (ja) 色再現装置及び色再現方法
JPH0799587A (ja) 色変換方法および色変換装置

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee