DE69731425T2 - Verfahren und Apparatus zur Optimierung des Expressionsbaumes zur Darstellung von Bildern - Google Patents

Verfahren und Apparatus zur Optimierung des Expressionsbaumes zur Darstellung von Bildern Download PDF

Info

Publication number
DE69731425T2
DE69731425T2 DE69731425T DE69731425T DE69731425T2 DE 69731425 T2 DE69731425 T2 DE 69731425T2 DE 69731425 T DE69731425 T DE 69731425T DE 69731425 T DE69731425 T DE 69731425T DE 69731425 T2 DE69731425 T2 DE 69731425T2
Authority
DE
Germany
Prior art keywords
node
operator
parent node
region
representation
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 - Lifetime
Application number
DE69731425T
Other languages
English (en)
Other versions
DE69731425D1 (de
Inventor
George Politis
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Publication of DE69731425D1 publication Critical patent/DE69731425D1/de
Application granted granted Critical
Publication of DE69731425T2 publication Critical patent/DE69731425T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf die Erzeugung computergenerierter Bilder sowohl in der Form von Stehbildern als auch einer Videoabbildung, und insbesondere auf ein Verfahren, eine Vorrichtung und ein System zur Erzeugung eines durch die Zusammensetzung einer Vielzahl von Komponenten aufgebauten Bildes.
  • Hintergrund
  • Computergenerierte Bilder bestehen typischerweise aus vielen verschiedenen Komponenten oder Graphikelementen, die zur Erzeugung eines endgültigen Bildes gerendert und zusammengesetzt werden. Bisher wurde allgemein ein „Opazitätskanal (der auch als „Matt"-, „Alphakanal" oder einfach als „Opazität" bekannt ist) verwendet. Der Opazitätskanal beinhaltet Informationen hinsichtlich der Durchlässigkeit jedes Elements. Der Opazitätskanal ist zusammen mit jeder Einheit einer Farbe gespeichert, sodass beispielsweise ein Bildelement basiertes Bild mit Opazität einen Opazitätswert als Teil der Darstellung jedes Bildelementes speichert. Ein Element ohne explizite Opazitätskanalinformationen wird typischerweise als vollständig undurchlässig innerhalb definierter Grenzen des Elements verstanden, und von ihm wird angenommen, dass es außerhalb dieser Grenzen vollständig transparent ist.
  • Ein Ausdrucksbaum bietet ein systematisches Mittel oder eine systematische Darstellung zum Rendern von Objekten oder Elementen eines Bildes. Ausdrucksbäume umfassen eine Vielzahl von Knoten einschließlich Blattknoten, inneren Knoten und eines Wurzelknotens. Ein Blattknoten, der einen äußersten Knoten eines Baums darstellt, hat keine Nachkommenknoten und besteht aus einem oder mehreren Graphikelementen. Ein innerer Knoten verzweigt typischerweise in linke und rechte Unterbäume, wobei jeder Unterbaum selbst ein Ausdrucksbaum mit zumindest einem Blattknoten ist. Die inneren Knoten eines Ausdruckbaums sind Zusammensetzungsoperatoren, die den linken und rechten Unterbaum als Operanden des Operators behandeln. Der erste Knoten des Ausdrucksbaums wird allgemein als Wurzelknoten bezeichnet. Der Wurzelknoten eines Ausdrucksbaums stellt das endgültige Bild dar, und jeder Knoten des Baums stellt einen Teil des endgültigen Bildes dar.
  • Obwohl ein Graphikelement selbst eine bestimmte Größe haben kann, muss es im endgültigen Bild nicht unbedingt vollständig sichtbar sein, oder es kann sich lediglich ein Teil des Elements auf das endgültige Bild auswirken. Beispielsweise wird angenommen, dass ein Bild einer bestimmten Größe auf einer Anzeigeeinrichtung anzuzeigen ist. Ist aber das Bild derart positioniert, dass lediglich die obere linke Ecke des Bildes von der Anzeigeeinrichtung angezeigt wird, wird der Rest des Bildes nicht angezeigt. Das endgültige Bild wie auf der Anzeigeeinrichtung angezeigt umfasst somit den sichtbaren Abschnitt des Bildes, und der unsichtbare Abschnitt muss in diesem Fall nicht gerendert werden.
  • Ein anderer Fall, in dem lediglich ein Abschnitt eines Elements eine Auswirkung haben kann, ist dann gegeben, wenn der Abschnitt durch ein anderes Element verdeckt wird. Beispielsweise kann ein anzuzeigendes (oder zu Renderndes) endgültiges Bild ein oder mehrere undurchlässige Graphikelemente umfassen, von denen einige andere Graphikelemente verdecken. Daher haben die verdeckten Elemente keine Auswirkung auf das endgültige Bild.
  • Kann ein Element, oder Teile eines Elements, die keine Auswirkung auf das endgültige Bild haben, identifiziert werden, müssen diese Elemente (oder Teile) nicht gerendert werden, wodurch erheblich Zeit und möglicherweise Speicherplatz eingespart wird.
  • Die am 31. Januar 1996 veröffentlichte Europäische Patentanmeldung mit der Veröffentlichungsnummer EP 0 694 881 A2 (Europäische Patentanmeldung Nr. 95305144.8) von Canon Kabushiki Kaisha und Canon Information Systems Research Australia Pty Ltd) beschreibt ein System, ein Verfahren und eine Sprache zur Zusammensetzung oder Erzeugung von Bildern. Die Bilder umfassen typischerweise eine Vielzahl von Graphikelementen, die jeweils Farb- und Opazitätsinformationen enthalten. Das System verwendet Operatoren, die die Graphikelemente aufweisen, und Operanden, wobei die Operatoren die Operanden entsprechend einer durch die Operatoren definierten Funktion, den Farbinformationen und Opazitätsinformationen zur Erzeugung neuer Graphikelemente kombinieren. Ein Teil des Systems beinhaltet die Interpretation der Parsingsprache und die Ausführung einer Folge von Aussagen und die Bildung eines Ausdrucksbaums, dessen Knoten ein Graphikelement umfassen. Anweisungen werden dann anhand des Baums erhalten. Ein anderer Teil erlaubt die Zusammensetzung undurchlässiger Graphikelemente und zugehöriger Abschneidoperationen. Bounding-Box-Verfahren werden zum Lokalisieren aktiver Bereiche der Graphikelemente aus den Knoten verwendet.
  • Die EP 0 694 881 A2 offenbart ein Verfahren und eine Vorrichtung zum Optimieren eines Ausdrucksbaums. Der Ausdrucksbaum gemäß der EP 0 694 881 A2 dient der Zusammensetzung eines Bildes und umfasst zumindest drei Knoten. Jeder Knoten des Baums ist entweder ein Graphikelement oder ein Graphikoperator und weist eine durch den Knoten dargestellte Region des Bildes auf. Das Verfahren der EP 0 694 881 A2 umfasst für zumindest einen Graphikoperatorknoten im Baum die Schritte des Vergleichs einer ersten Region, die aus Operanden des Operatorknotens hergeleitet wird, mit einer Region, die von einem anderen Operanden des Operatorknotens hergeleitet wird, die Bestimmung, ob die erste Region die zweite Region total oder teilweise verdeckt, und die Modifikation des Ausdrucksbaums, wenn die erste Region die zweite Region ganz oder teilweise verdeckt.
  • Aus dem Verfahren des Standes der Technik ergeben sich zumindest für Bilder Probleme, in denen eine Überlappung auftritt, weil diese Verfahren mit transparenten Graphikobjekten nicht leicht fertig werden, und auch nicht den vollständigen Bereich von Zusammensetzungsoperatoren behandeln. Daher soll zumindest eines dieser Probleme vermindert werden.
  • Kurzzusammenfassung
  • Gemäß einer Ausgestaltung der Erfindung ist ein Verfahren zur Optimierung eines Ausdrucksbaums ausgebildet, der zum Zusammensetzen eines Bildes dient und zumindest drei Knoten umfasst, wobei jeder Knoten des Baums zumindest entweder ein eine Bildregion definierendes Graphikelement oder ein Graphikoperator ist, wobei das Verfahren für zumindest einen Knoten im Baum die Schritte umfasst
    Vergleichen einer ersten Region des Knotens mit einer zweiten Region, die von zumindest einem anderen Knoten irgendwo im Ausdrucksbaum erhalten wird,
    Bestimmen, ob die erste Region durch die zweite Region ganz oder teilweise verborgen ist, und
    Modifizieren des Ausdrucksbaums, wenn die erste Region zumindest teilweise oder ganz durch die zweite Region verborgen ist, um einen optimierten Ausdrucksbaum zum Zusammensetzen des gleichen Bildes auszubilden, wobei ein optimierter Teil des Ausdrucksbaums im wesentlichen nicht-verborgene Abschnitte der ersten Region darstellt.
  • Gemäß einer anderen Ausgestaltung der Erfindung ist eine Vorrichtung zur Optimierung eines Ausdrucksbaums ausgestaltet, der zum Zusammensetzen eines Bildes dient und zumindest drei Knoten umfasst, wobei jeder Knoten des Baums zumindest entweder ein eine Bildregion definierendes Graphikelement oder ein Graphikoperator ist, mit
    einer Einrichtung zum Vergleichen einer ersten Region des Knotens mit einer zweiten Region, die von zumindest einem anderen Knoten irgendwo im Ausdrucksbaums erhalten wird,
    einer Einrichtung zum Bestimmen, ob die erste Region durch die zweite Region ganz oder teilweise verborgen ist, und
    einer Einrichtung zum Modifizieren des Ausdrucksbaums, wenn die erste Region zumindest teilweise oder ganz durch die zweite Region verborgen ist, um den optimierten Ausdrucksbaum zum Zusammensetzen des gleichen Bildes auszubilden, wobei ein optimierter Teil des Ausdrucksbaums im wesentlichen nicht-verborgene Abschnitte der ersten Region darstellt.
  • Kurzbeschreibung der Zeichnung
  • Nachstehend wird ein bevorzugtes Ausführungsbeispiel der Erfindung unter Bezugnahme auf die beiliegende Zeichnung und den Anhang näher beschrieben. Es zeigen:
  • 1 eine schematische Darstellung verschiedener Zusammensetzungsoperationen,
  • 2A bis 2D ein Beispiel der Anwendung eines Abschneideoperators gemäß einem Ausführungsbeispiel der Erfindung,
  • 3 ein Beispiel eines aus einfachen Graphikobjekten bestehenden gerenderten Bildes,
  • 4 einen Bildausdrucksbaum, der die Zusammensetzung der einfachen Graphikobjekte zum Zusammensetzen oder Rendern des Bildes in 3 darstellt,
  • 5 einen vereinfachten Bildausdrucksbaum des Bildausdrucksbaums in 4 gemäß einem Ausführungsbeispiel der Erfindung,
  • 6 ein weiteres Beispiel eines aus einfachen Graphikobjekten bestehenden gerenderten Bildes,
  • 7 einen Bildausdrucksbaum, der die Zusammensetzung der Graphikobjekte zum Zusammensetzen oder Rendern des Bildes in 6 darstellt,
  • 8 einen vereinfachten Ausdrucksbaum zum Zusammensetzen des Bildes in 6 gemäß dem Ausführungsbeispiel der Erfindung,
  • 9 ein abstraktes Ablaufdiagramm, das einen Überblick über den erfindungsgemäßen Vorgang der Optimierung eines Ausdrucksbaums liefert, der zum Zusammensetzen eines Bildes verwendet wird,
  • 10 ein ausführliches Ablaufdiagramm der Modifikation des Ausdrucksbaums gemäß Schritt 912 in 9,
  • 11 ein weiteres ausführliches Ablaufdiagramm zur Optimierung des Ausdrucksbaums, und
  • 12 ein Blockschaltbild eines herkömmlichen Universalcomputers, der zum Implementieren der Ausführungsbeispiele der Erfindung verwendet werden kann.
  • Der Anhang umfasst Pseudo-Code-Routinen, die für eine Computerimplementierung des bevorzugten Ausführungsbeispiels geeignet sind.
  • Ausführliche Beschreibung
  • In der folgenden Beschreibung des bevorzugten Ausführungsbeispiels wird angenommen, dass ein Bildzusammensetzungsausdrucksbaum, wie er hier beschrieben wird, für ein zu renderndes Bild bestimmt wurde.
  • Vorzugsweise sind Bildregionsdarstellungen hierarchische Datenstrukturen, die zur Darstellung einer Region oder eines Abschnitts eines Bildes geeignet sind, und typischerweise bei der Bildverarbeitung verwendet werden. Eine derartige Bildregionsdarstellung ist dem Fachmann als „Quadtree" bekannt. Andere Formen der Bildregionsdarstellungen können auch zweckmäßig sein. Der Einfachheit halber wird eine Bildregionsdarstellung nachstehend als Quadtree bezeichnet.
  • Typischerweise erfordert die Erzeugung eines Quadtree, der eine Region eines Bildes darstellt, die Unterteilung der Region in eine Vielzahl von Zellen, wobei jede Zelle ein Teil der Region ist, und jede Zelle durch einen Knoten des Quadtree dargestellt wird. Daher erhöht die Erhöhung der Anzahl von Unterteilungen einer Region eines Bildes entsprechend die Anzahl von Knoten des Quadtree, wodurch sich die Tiefe des Quadtree und die Auflösung der durch den Quadtree dargestellten Region erhöht.
  • ZUSAMMENSETZUNGSOPERATIONEN
  • Zusammensetzungsoperationen enthalten 13 Hauptzusammensetzungsoperationen zum Zusammensetzen von zwei Abschnitten eines einzelnen Bildes. Die Funktion jeder dieser Zusammensetzungsoperationen ist in Tabelle 1 aufgeführt, wobei Dc ein vormultipliziertes Ziel oder eine resultierende Farbe ist, Do ein Ziel oder ein resultierender Alpha-(α)Kanalwert ist, Ac eine vormultiplizierte Elementfarbe eines ersten Abschnitts einer ersten Quelle A ist, Ao ein α-Wert ist, der dem Bildelement mit der Farbe Ac entspricht, Bc ein vormultiplizierter Bildelementfarbwert eines Abschnitts eines Bildes einer zweiten Quelle B ist, und Bo der α-Kanalwert des Bildelements ist, das Bc der Quelle B entspricht.
  • Tabelle 1: Zusammensetzungsoperationen
    Figure 00090001
  • Tabelle 1 zeigt insbesondere verschiedene Zusammensetzungsverfahren zum Zusammensetzen von zwei verschiedenen Bildern unter Verwendung verschiedener Operatoren. Es sind auch zusätzliche Operatoren möglich. Die zusätzlichen Operatoren können zum Implementieren von Spezialeffekten verwendet werden.
  • Die „wrap around"-Eigenschaft des „plusW"-Operators bedeutet, dass, wenn beispielsweise die Addition von Ac + Bc größer als ein maximaler Wert einer Farbkomponente ist, der Wert „herumgewickelt" wird, um erneut unter Bezugnahme auf den minimalen Wert im Farbraum zu beginnen. Alternativ dazu beinhaltet der Vorgang „clamping", der von „plusC" verwendet wird, eine abschneidende bzw. begrenzende Addition beispielsweise von Ac + Bc auf einen maximalen Wert einer Farbkomponente, wenn die Addition größer als diese Komponente ist.
  • 1 zeigt verschiedene Beispiele des endgültigen Bildes, das erzeugt wird, wenn verschiedene Operationen (wie sie in Tabelle 1 aufgeführt sind) bei der Zusammensetzung von zwei vollständig undurchlässigen Kreisen A und B verwendet werden. Die Operatoren „rover", „rin", „rout" und „ratop" sind dem Vertauschen der Operanden gemäß dem „r" (Umkehr-)Operator und Anwenden des entsprechenden Operators „over" („über"), „in", „out" („außerhalb") und „atop" („zu Oberst") jeweils äquivalent.
  • Bei dem bevorzugten Ausführungsbeispiel kann ein Ausdrucksbaum eine Vielfalt von Knotentypen enthalten, die binäre Zusammensetzungsoperatoren, unäre Operatoren und Primitive beinhalten. Unäre Operatoren enthalten typischerweise Farbtransformationen, Bildfaltungen, affine Transformationen und eine Bildverbindung. Primitive beinhalten typischerweise Graphikelemente, wie Bildelement-basierte Bilder, splinebasierte Wege, Text, „all" („all" ist ein Graphikelement, das die Größe des gesamten erzeugten Bildes überspannt), Kantenmischungen, Boxen oder dergleichen.
  • BINÄRE ZUSAMMENSETZUNGSOPERATOREN
  • Tabelle 2 listet einen Satz binärer Zusammensetzungsoperatoren und die durchzuführende Aktion auf, wenn diese Operatoren bei der Vereinfachung eines Ausdrucksbaums behandelt werden.
  • TABELLE 2
    Figure 00110001
  • Bei einem Knoten eines Ausdrucksbaums, der durch einen Operator dargestellt wird, wird typischerweise während des Vorgangs der Vereinfachung des Ausdrucksbaums jedem Operanden eine Regionsdarstellung, wie ein Quadtree, übergeben. An dem den Operator vergleichenden Knoten muss ein Vorgang dahingehend ausgeführt werden, ob ein vom Knoten verzweigender Unterbaum verschwindet (das heißt, Zweige müssen nicht beschnitten werden), oder ein den verdeckten Abschnitten der Graphikelemente entsprechender Quadtree von diesem Knoten für eine mögliche weitere Verarbeitung an andere Knoten zurückzugeben ist.
  • In Tabelle 2 wird folgende Notation verwendet:
    q0: der dem Knoten übergebene Quadtree,
    qL, qR: der von dem linken und rechten Unterbaum entsprechend dem linken und rechten Operanden eines Operators aus Tabelle 2 zurückgegebene Quadtree,
    Figure 00120001
    eingestellte Quadtree-Operation und
    B(Knoten): ein Quadtree, der vollständig die Bounding-Box des Knotens enthält.
  • In den letzten zwei Spalten in Tabelle 2 sind typische Ersetzungsregeln spezifiziert, wobei „L" bedeutet, dass ein aktueller Knoten durch den linken Unterbaum zu ersetzen ist, der vom aktuellen Knoten verzweigt, „R" bedeutet, dass ein aktueller Knoten durch den rechten Unterbaum zu ersetzen ist, der vom aktuellen Knoten verzweigt, und „V" bedeutet, dass der aktuelle Knoten verschwindet. Ein Knoten, der „verschwindet", lässt darauf schließen, dass die durch den Knoten dargestellte Region des Bildes durch andere Graphikelemente verborgen wird. Der Knoten hat daher keine Auswirkung auf das endgültige Bild. Verschwinden beide Operanden, verschwindet auch der aktuelle Knoten.
  • Für die in Tabelle 2 beschriebenen Operatoren können Umkehroperatoren eingesetzt werden. Der als „A over B" beschriebene „Over"-Operator gibt an, dass das Graphikelement „A" über dem Graphikelement „B" liegt. Dies kann durch einen Umkehroperator des „Over"-Operators ersetzt werden, der typischerweise mit „rover" (umgekehrtes über) bezeichnet wird, sodass „B rover A" in einer Zusammensetzung der Graphikelemente „A" und „B" äquivalent zu „A over B" resultiert.
  • BEISPIELE BINÄRER ZUSAMMENSETZUNGSOPERATOREN
  • Als Beispiel wird der (erste) Operator in der ersten Reihe der „Operator"-Spalte in Tabelle 2 (das heißt, der „Over"-Operator) betrachtet. An einem aktuellen Knoten eines Ausdrucksbaums, der durch einen „Over"-Operator dargestellt wird, übergibt ein Elternknoten dem aktuellen Knoten einen Quadtree q0. Den Vorgang unter der Überschrift „dem linken Operanden übergeben" (Spalte 2 in Tabelle 2) folgend wird der Quadtree q0 dem linken Operanden übergeben, der der linke Unterbaum oder Zweig am aktuellen Knoten ist.
  • Der Quadtree q0 wird zur Verarbeitung des linken Operanden verwendet, und ein Quadtree qL wird als verbergender Bereich des linken Operanden zurückgegeben. Wegen „dem rechten Operanden übergeben" (Spalte 3 in Tabelle 2) ist die am aktuellen Knoten auszuführende Aktion die Übergabe einer Vereinigung des Elternknotens, des Quadtree q0, und des nun zurückgegebenen Quadtree qL des linken Operanden als rechten Operanden. Der sich aus dieser Vereinigung (q0 ∪ qL) ergebene Quadtree wird zur Verarbeitung des rechten Operanden verwendet. Ein Quadtree qR wird dem aktuellen Knoten als verbergender Bereich des rechten Operanden zurückgegeben. Der aktuelle Knoten gibt dann die Vereinigung (qL ∪ qR) des linken Operanden qL und des rechten Operanden qR dem Elternknoten zurück (4 „Rückgabe" in Spalte 4 der Tabelle 2).
  • Geht hervor, dass die durch den linken Operanden dargestellte Region vom Quadtree q0 vollständig verborgen ist, der dem linken Operanden übergeben wird, besteht der Vorgang „wenn linker Operand verschwindet" in Spalte 5 in Tabelle 2 in dem Ersetzen des aktuellen Knotens durch den rechten („R") Unterbaum beziehungsweise den rechten Operanden. Dies ist erwünscht, da die Änderung des Baums durch Ersetzen des aktuellen Knotens durch seinen rechten Operanden das gerenderte Bild nicht ändert, jedoch die zum Rendern des Bildes erforderlich Zeit verbessert. Ergibt sich, dass die durch den rechten Operanden dargestellte Region vollständig vom Quadtree (q0 ∪ qL) verborgen ist, der dem rechten Operanden übergeben wird, besteht der Vorgang „wenn rechter Operand verschwindet" in Spalte 6 in Tabelle 2 im Ersetzen des aktuellen Knotens durch den linken („L") Unterbaum.
  • UNÄRE OPERATOREN
  • Die Behandlung unärer Operatoren bei der Vereinfachung des Ausdrucksbaums hängt vom Typ der Operation ab:
    • (a) Bei einer Farbtransformation wird der Quadtree q0 dem Operanden des Farbtransformationsoperators übergeben. Bewahrt die Transformation die Undurchsichtigkeit (das heißt, undurchsichtige Bildelemente bleiben nach der Transformation undurchsichtig), wird der vom Operanden zurückgegebene Quadtree vom unären Operator zurückgegeben. Das heißt, der Operand verbirgt das, was das Ergebnis der Farbtransformation verbirgt. Bewahrt die Transformation die Undurchsichtigkeit nicht, gibt der unäre Operator einen leeren Quadtree zurück, da die Region, die die unäre Operation verbirgt, nicht bestimmt werden kann. Verschwindet der Operand, verschwindet der unäre Operator, wenn die Unsichtbarkeit (Null-Opazität) nicht bewahrt wird. Wird die Unsichtbarkeit nicht bewahrt, wird der Unterbaum mit dem unären Operator als Wurzel durch ein geeignetes „All"-Graphikelement ersetzt.
    • (b) Affine Transformationen und Verbindungen bewahren die Geometrie zwischen dem Quadtree und den Primitiven nicht. Wird der unäre Operator durch den Quadtree q0 verborgen, verschwindet er. Ansonsten wird der Durchlauf am Operanden der affinen Transformation oder des Bildverbindungsoperators neu gestartet, wobei ein leerer Quadtree als verbergende Region durchlaufen wird. Ein leerer Quadtree wird zum Operator zurückgegeben, wenn der durch einen Operanden zurückgegebene Quadtree nicht leicht transformiert werden kann.
    • (c) Bildfaltung: Wird der unäre Operator durch den Quadtree q0 verborgen, verschwindet er. Ansonsten wird der Durchlauf am Operanden der Bildfaltung neu gestartet, wobei ein leerer Quadtree als verbergender Bereich durchlaufen wird. Ein leerer Quadtree wird durch einen solchen Operator zurückgegeben, da das vom Operator bewirkte Verwischen die Verwendung eines durch seinen Operanden zurückgegebenen Quadtree schwierig macht. Ändert der Bildfaltungsoperator allerdings die Opazität nicht, kann der vom Operanden des Operators zurückgegebene Quadtree wiederum vom Operator der Bildfaltung zu seinem Elternknoten zurückgegeben werden.
  • OPTIMIERUNG DES AUSDRUCKSBAUMS
  • Bei dem bevorzugten Ausführungsbeispiel wird ein Bildzusammensetzungsausdrucksbaum (der nachstehend als „Ausdrucksbaum" bezeichnet wird) eines zu rendernden Bildes durchlaufen, vorzugsweise zuerst in einer Tiefenrichtung. Jeder Knoten des Ausdrucksbaums erhält von seinem Elternknoten eine Regionsdarstellung eines oder mehrerer Bereiche jedes Bildes. Die Regionsdarstellung wird mit der am Knoten dargestellten Region zur Bestimmung verglichen, ob die von diesem Knoten dargestellte Region verborgen ist.
  • Ein Knoten, bei dem die durch den Knoten dargestellte Region vollständig verborgen ist, wird aus dem Ausdrucksbaum mit einer geeigneten Vereinfachung des Ausdrucksbaums wie nachstehend beschrieben entfernt. Ist die durch den Knoten dargestellte Region lediglich teilweise verborgen, wird ein Abschneideoperator bei der durch den Knoten dargestellten Region zum Abschneiden der am Knoten dargestellte Region des Bildes zum Verwerfen der verborgenen Abschnitte des Bildes angewendet. Ist beispielsweise die durch einen Knoten dargestellte Region durch eine oder mehrere durch andere Knoten des Ausdrucksbaums dargestellte Regionen vollständig verborgen, wird der Knoten aus dem Ausdrucksbaum derart entfernt, dass eine Graphikoperation oder ein Graphikelement an dem Knoten nicht ausgeführt oder gerendert werden muss, was auch immer der Fall ist.
  • Ist ein Knoten teilweise durch eine oder mehrere durch andere Knoten im Ausdrucksbaum dargestellte Regionen verborgen, wird ein Abschneideoperator bei dem Knoten derart angewendet, dass bei der Ausführung eines Zusammensetzungsoperators im wesentlichen nicht-verborgene Regionen des Bildes, die am Knoten dargestellt werden, sich in der resultierenden Zusammensetzung der Region des Knotens befinden. Wird ein Bild aus einem Ausdrucksbaum zusammengesetzt und danach gerendert, der durch einen Abschneideoperator abgeschnittene Knoten enthält, werden im wesentlichen solche Abschnitte der Graphikelemente wiedergegeben oder gerendert, die von anderen Graphikelementen des Bildes nicht verborgen sind.
  • Die Anwendung eines Abschneideoperators bei einem Knoten kann in der einfachsten Form im Abschneiden der an den Nachkommenknoten dargestellten Graphikelemente auf im wesentlichen solche Abschnitte der Graphikelemente resultieren, die nicht verborgen sind. Allerdings ist die Anwendung eines Abschneideoperators bei einem Knoten nicht darauf beschränkt. Die Anwendung eines Abschneideoperators bei einem Knoten eines Ausdrucksbaums mit einer Zusammensetzungsoperation an dem Knoten kann in einer unterschiedlichen Kombination von Zusammensetzungsoperatoren resultieren, was eine Auswirkung auf den Knoten haben kann, als ob die dargestellte Region bis auf ihren nicht-verborgenen Abschnitt abgeschnitten ist.
  • Der Vorgang der Zusammensetzung eines in 2A gezeigten Ausdrucksbaums 101 wird nun unter Bezugnahme auf die 2B bis 2D beschrieben. Wie es in 2B gezeigt ist, wird ein Pfeil 102 im Uhrzeigersinn um 30° gedreht, und der „In"- Operator wird in Verbindung mit einer undurchsichtigen Box 104 ausgeführt, damit ein Abschnitt des gedrehten Pfeils erhalten wird, der in der Box 104 liegt. Dies kann durch die Anwendung eines Abschneideoperators bei dem im Uhrzeigersinn um 30° gedrehten Pfeil zum Abschneiden des gedrehten Pfeils bis auf die Grenzen der Box 104 bewirkt werden.
  • Alternativ dazu kann wie in 2C gezeigt die Anwendung einer anderen Kombination von Operatoren im wesentlichen das gleiche Endbildergebnis 105 liefern. Die Box 104 wird gegen den Uhrzeigersinn um 30° gedreht, und der Pfeil 102 wird auf die Box 104 zugeschnitten. Das resultierende Bild 107 wird um 30° im Uhrzeigersinn gedreht, um das Bildendergebnis 105 zu erhalten. Wie in 2D gezeigt, ergibt dies aber nicht das Gleiche wie das Zuschneiden des Pfeils 102 auf die Box 104 und dann Anwenden einer Drehung um 30° im Uhrzeigersinn, um ein endgültiges zusammengesetztes Bild 106 zu erhalten. Auf diese Weise kann die Anwendung eines Abschneideoperators aus einem Knoten eine unterschiedliche Kombination von Zusammensetzungsoperatoren ergeben.
  • Wurde eine durch einen Knoten dargestellte Region des Bildes als nicht-verborgen oder lediglich teilweise verborgen bestimmt, übergibt der Knoten die Regionsdarstellung, die der Knoten von einem Elternknoten erhalten hat, wiederum jedem seiner Nachkommenknoten. Der gleiche Vorgang geschieht an jedem Nachkommenknoten mit dem Effekt, dass jeder Nachkommenknoten seinem Elternknoten entweder eine Bilddarstellung der Bereiche des Bildes, die durch die am Nachkommenknoten dargestellte Region verborgen sind, oder eine Anzeige zurückgibt, dass der Nachkommenknoten vollständig verborgen ist.
  • Wurden die Nachkommen eines Knotens verarbeitet, werden die von dem Nachkommen zurückgegebenen Regionsdarstellungen zum Herleiten einer Regionsdarstellung der Regionen des Bildes verwendet, die von dem Knoten verborgen sind. Dieses Ergebnis wird dem Elternknoten des Knotens zurückgegeben.
  • Bei dem bevorzugten Ausführungsbeispiel wird der Durchlauf des Ausdrucksbaums zum Vereinfachen des Baums an der Wurzel des Baums immer in der Tiefenrichtung zuerst initiiert, was dem Fachmann bekannt ist. Vorzugsweise wird beim Durchlaufen eines Ausdruckbaums in der Tiefenrichtung zuerst dem zum linken Zweig führenden Weg an jedem Knoten Priorität gegeben, und dieser Weg den Baum hinunter zu einem Nachkommenknoten wird zuerst genommen. Sind keine weiteren linken Zweigwege an einem aktuellen Knoten vorhanden, kehrt die Verarbeitung zu dem vorhergehenden Knoten zurück, und ein Weg einen rechten Zweig dieses Knotens hinunter wird genommen. Ein Ausdrucksbaum wird auf diese Weise durchlaufen, bis alle Knoten des Ausdruckbaums besucht wurden.
  • ABLAUFDIAGRAMME ZUR OPTIMIERUNG EINES AUSDRUCKSBAUMS
  • 9 zeigt ein abstraktes Ablaufdiagramm, das eine Übersicht über den Vorgang der Optimierung eines Ausdrucksbaums 902 gemäß dem bevorzugten Ausführungsbeispiel liefert, der zum Zusammensetzen eines Bildes verwendet wird. Der Ausdrucksbaums 902 enthält zumindest zwei Knoten, und jeder Knoten ist entweder ein Graphikelement oder Graphikoperator. Vorzugsweise sind die Graphikoperatoren Bildzusammensetzungsoperatoren. Des weiteren wird eine Region des Bildes durch den Knoten dargestellt. Der Ausdrucksbaum 902 kann von Knoten zu Knoten durchlaufen werden. Ein Steuerblock 904 hat vorzugsweise eine Schleifensteuerstruktur zur Verarbeitung jedes Knotens des Ausdrucksbaums 902, der als Eingangssignal zugeführt wird. Wurde der gesamte Ausdrucksbaum 902 verarbeitet (was durch „fertig" angegeben wird), endet die Verarbeitung in Schritt 914. Ansonsten wird die Verarbeitung in Schritt 906 fortgesetzt.
  • In Schritt 906 wird einer der verbleibenden Knoten als aktueller Knoten ausgewählt. In Schritt 908 wird die durch den Knoten dargestellte Region mit einer Regionsdarstellungsdatenstruktur verglichen, die einer oder mehreren Regionen entspricht, die durch zumindest einen weiteren Knoten dargestellt werden. Die Regionsdarstellung hat vorzugsweise die Form einer hierarchischen Datenstruktur, und kann eine Quadtree-Darstellung sein. Im Endscheidungsblock 910 wird überprüft, ob die durch den Knoten dargestellte Region durch eine der Regionen entweder ganz oder teilweise verborgen wird. Gibt der Endscheidungsblock 910 falsch (nein) zurück, wird die Verarbeitung am Steuerschritt 904 fortgesetzt. Ansonsten wird die Verarbeitung in Schritt 912 fortgesetzt, wenn der Endscheidungsblock 910 wahr (ja) zurückgibt. In Schritt 912 wird der Ausdrucksbaum modifiziert. Die Modifizierung kann die Entfernung des aktuellen Knotens oder das Ersetzen des aktuellen Knotens durch einen anderen Knoten des Ausdrucksbaums beinhalten. Sie kann ferner ein Abschneiden oder ein späteres Abschneiden der durch den aktuellen Knoten dargestellten Region enthalten. Die Verarbeitung wird dann im Steuerschritt 904 fortgesetzt.
  • 10 zeigt ein ausführlicheres Ablaufdiagramm der Schritte zum Modifizieren des Ausdrucksbaums gemäß Schritt 912 in 9. Die Verarbeitung beginnt in Schritt 1002, und in Schritt 1004 wird überprüft, ob die durch den aktuellen Knoten dargestellte Region vollständig oder teilweise verborgen ist. Bestimmt der Endscheidungsblock 1004, dass die Region teilweise verborgen ist, wird die Verarbeitung in Schritt 1012 fortgesetzt. In Schritt 1012 wird ein Abschneideoperator bei dem Knoten angewendet, und dann kehrt der Prozess zu Schritt 1014 zurück. Ansonsten wird die Verarbeitung im Endscheidungsblock 1006 fortgesetzt, wenn der Endscheidungsblock 1004 bestimmt, dass die Region total verborgen ist.
  • Im Endscheidungsblock 1006 wird überprüft, ob der aktuelle Knoten ein Graphikelement oder Graphikoperator ist. Bestimmt der Endscheidungsblock 1004, dass der Knoten ein Graphikelement ist, wird die Verarbeitung in Schritt 1008 fortgesetzt. In Schritt 1008 wird der Knoten aus dem Ausdrucksbaum entfernt und die Verarbeitung springt zur Aufrufprozedur in Schritt 1014 zurück. Ansonsten wird die Verarbeitung in Schritt 1010 fortgesetzt, wenn der Endscheidungsblock 1006 bestimmt, dass der Knoten ein Graphikoperator ist. In Schritt 1010 wird ein vorbestimmter Satz von Knotenersetzungsregeln entsprechend dem Graphikoperator angewendet.
  • Der vorbestimmte Satz an Knotenersetzungsregeln (in den 9 und 10 nicht gezeigt) kann eine oder mehrere der folgenden Regeln beinhalten:
    ist der Elternknoten ein „Over"-Graphikoperator, und ist der aktuelle Knoten auf dem linken Zweig des Elternknotens, ersetze den Elternknoten durch einen rechten Unterbaum des Elternknotens,
    ist der Elternknoten ein „Over"-Graphikoperator und ist der aktuelle Knoten auf dem rechten Zweig des Elternknotens, ersetze den Elternknoten durch einen linken Unterbaum des Elternknotens,
    ist der Elternknoten ein „In"-Graphikoperator, entferne den Elternknoten und jeden vom Elternbaum verzweigenden Unterbaum,
    ist der Elternknoten ein „Ratop"-Graphikoperator und ist der aktuelle Knoten auf einem linken Zweig des Elternknotens, entferne den Elternknoten und jeden vom Elternknoten verzweigenden Unterbaum,
    ist der Elternknoten ein „Ratop"-Graphikoperator und ist der aktuelle Knoten auf einem rechten Zweig des Elternknotens, ersetze den Elternknoten durch einen linken Unterbaum des Elterknotens,
    ist der Elternknoten ein „Out"-Graphikoperator und ist der aktuelle Knoten auf einem linken Zweig des Elternknotens, entferne den Elternknoten und jeden vom Elternknoten verzweigenden Unterbaum,
    ist der Elternknoten ein „Out"-Graphikoperator und ist der aktuelle Knoten auf einem rechten Zweig des Elternknotens, ersetze den Elternknoten durch einen linken Unterbaum des Elternknotens,
    ist der Elternknoten ein „PlusC"-Graphikoperator und ist der aktuelle Knoten auf einem linken Zweig des Elternknotens, ersetze den Elternknoten durch einen rechten Unterbaum des Elternknotens,
    ist der Elternknoten ein „PlusC"-Graphikoperator und ist der aktuelle Knoten auf einem rechten Zweig des Elternknotens, ersetze den Elternknoten durch eine linken Unterbaum des Elternknotens,
    ist der Elternknoten ein „PlusW"-Graphikoperator oder ein „Xor"-Graphikoperator und ist der aktuelle Knoten auf einem linken Zweig des Elternknotens, ersetze den Elternknoten durch einen rechten Unterbaum des Elternknotens und
    ist der Elternknoten ein „PlusW"-Graphikoperator oder ein „Xor"-Graphikoperator und ist der aktuelle Knoten auf einem rechten Zweig des Elternknotens, ersetze den Elternknoten durch eine linken Unterbaum des Elternknotens.
  • 11 zeigt ein ausführliches Ablaufdiagramm eines Vorgangs der Optimierung eines Ausdrucksbaums 1102 gemäß einem anderen Ausführungsbeispiel. Der Ausdrucksbaum umfasst eine Anzahl von Knoten, von denen jeder entweder ein graphisches Element oder ein Graphikoperator sein kann und eine Region des Bildes darstellt. Ein Steuerblock 1104 hat vorzugsweise eine Schleifensteuerstruktur zur Verarbeitung jedes Knotens des Ausdrucksbaums 1102, der als Eingangssignal zugeführt wird. Der Ausdrucksbaum wird Knoten um Knoten durchlaufen. An jedem aktuellen Knoten, der einen Graphikoperator aufweist, werden die Schritte 1108 bis 1120 angewendet, wie es nachstehend beschrieben ist. Wurde der gesamte Ausdrucksbaum 1102 verarbeitet (was durch „fertig" angegeben ist), vorzugsweise in der Tiefenrichtung zuerst, ist die Verarbeitung in Schritt 1106 beendet. Ansonsten wird die Verarbeitung in Schritt 1108 fortgesetzt.
  • In Schritt 1108 wird einer der verbleibenden Knoten als aktueller Knoten ausgewählt. In Schritt 1110 wird eine erste Regionsdarstellung von einem Elternknoten erhalten. In Schritt 1112 durchläuft eine modifizierte erste Regionsdarstellung einen ersten Operanden des Graphikoperators entsprechend einer ersten vorbestimmten Modifikationsregel für diesen Operator. In Schritt 1114 wird eine zweite Regionsdarstellung von durch einen Unterbaum des ersten Operanden verborgenen Regionen bestimmt, und zum Graphikoperator zurückgegeben. In Schritt 1116 durchläuft eine modifizierte zweite Regionsdarstellung einen zweiten Operanden des Graphikoperators gemäß einer zweiten vorbestimmten Modifikationsregel für den Operator.
  • In Schritt 1118 wird eine dritte Regionsdarstellung von Regionen, die durch einen mit dem zweiten Operanden verbundenen Unterbaum verborgen werden, zum Graphikoperator zurückgegeben. In Schritt 1120 wird eine endgültige Regionsdarstellung entsprechen einer Einstellregel für den Graphikoperator bestimmt und zu einem Elternknoten des aktuellen Knotens zurückgegeben. Vorzugsweise wird die Regel aus der folgenden Gruppe ausgewählt:
    • (A) Ist der Graphikoperator ein „Over"- oder ein „PlusC"-Operator, wird die endgültige Regionsdarstellung aus einer Vereinigung der zweiten Regionsdarstellung und der dritten Regionsdarstellung bestimmt,
    • (B) ist der Graphikoperator ein „In"-Operator, wird die endgültige Regionsdarstellung aus einer Schnittmenge der zweiten Regionsdarstellung und der dritten Regionsdarstellung bestimmt,
    • (C) ist der Graphikoperator ein „Ratop"-Operator, ist die endgültige Regionsdarstellung die zweite Regionsdarstellung,
    • (D) ist der Graphikoperator ein „Out"-Operator, wird die endgültige Regionsdarstellung aus einer Differenz der zweiten Regionsdarstellung und einer Regionsdarstellung mit zumindest einer durch eine Bounding-Box eines Knotens im rechten Unterbaum des aktuellen Knotens dargestellten Region bestimmt, und
    • (E) ist der Graphikoperator ein „Xor"- oder ein „PlusW"-Operator, wird die endgültige Regionsdarstellung aus einer Vereinigung der zweiten Regionsdarstellung weniger einer Regionsdarstellung mit zumindest einer durch eine Bounding-Box eines Knotens im rechten Unterbaum des aktuellen Knotens dargestellten Region und der dritten Regionsdarstellung weniger einer Regionsdarstellung mit einer Bounding-Box eines Knotens im rechten Unterbaum des aktuellen Knotens bestimmt.
  • Die erste vorbestimmte Modifikationsregel besteht vorzugsweise im Weitergeben im wesentlichen der ersten Regionsdarstellung als modifizierte erste Regionsdarstellung, wenn der Graphikoperator ein „Over"-, „In"-, „Ratop"-, „PlusC"-, „PlusW"-, „Xor"-, „Out"-(linken Operanden zuerst vornehmen)-Operator oder dergleichen ist. Ist der Graphikoperator ein „Out(rechten Operanden zuerst vornehmen)"-Vorgang, beinhaltet er das Weitergeben einer Vereinigung der ersten Regionsdarstellung mit der zweiten Regionsdarstellung als modifizierte erste Regionsdarstellung.
  • Des weiteren besteht die zweite vorbestimmte Modifikationsregel im wesentlichen im Weitergeben der ersten Regionsdarstellung als modifizierte zweite Regionsdarstellung, wenn der Graphikoperator ein „In"-, „Ratop"-, „Out"-, „Plus"-, „PlusW"-, „Xor"-Operator oder dergleichen ist. Ist der Graphikoperator ein „Over"-Operator, beinhaltet er das Weitergeben einer Vereinigung der ersten Regionsdarstellung mit der zweiten Regionsdarstellung als modifizierte zweite Regionsdarstellung.
  • Vorzugsweise wird die Bilddarstellung nicht an einem Knoten erzeugt oder zu einem Elternknoten des Knotens zurückgegeben, wenn die Bilddarstellung nicht danach verwendet wird, oder wenn der Knoten der rechte Operand eines „Over"-Operators ist, und der „Over"-Operatorknoten keine Bilddarstellung zu seinem Elternknoten zurück zu geben braucht. Gleichermaßen wird die Bilddarstellung nicht am Knoten erzeugt oder zurückgegeben, wenn der Knoten der linke oder rechte Operand eines „In"-, „PlusC"-, „PlusW"- oder „Xor"-Operators ist, und der Operatorknoten keine Bilddarstellung zu seinem Elternknoten zurück zu geben braucht. Des weiteren wird die Bilddarstellung an dem Knoten eventuell nicht erzeugt oder zu dem Elternknoten zurückgegeben, wenn der Knoten der linke Operand eines „Out"- oder eines „Ratop"-Operators ist, und zu seinem Elternknoten keine Bilddarstellung zurück zu geben braucht. Die Bilddarstellung wird eventuell auch am Knoten nicht erzeugt oder zurückgegeben, wenn der Knoten der rechte Operand eines „Ratop"-Operators ist, die Wurzel des Ausdrucksbaums ist, der Operand einer Bildverbindung, affinen Transformation oder eines Faltungsoperators ist, der Operand einer Farbtransformation die Undurchsichtigkeit nicht bewahrt, oder wenn der Transformationsknoten keine Bilddarstellung zu seinem Elternknoten zurück zu geben braucht.
  • Weitere Ausgestaltungen des bevorzugten Ausführungsbeispiels sind in ihren Einzelheiten im Anhang dargestellt, der einen Teil der Beschreibung bildet. Insbesondere enthält der Anhang Pseudocodeprotokolle zum Implementieren des Verfahrens gemäß dem bevorzugten Ausführungsbeispiel. In diesem Zusammenhang ist das bevorzugte Ausführungsbeispiel vorzugsweise als Computersoftware implementiert, die auf Aufzeichnungsträgern gespeichert werden kann, die als auf einer Computereinrichtung ausgeführter Prozess ausgeführt werden kann, wie auf einem Universalcomputer.
  • Die Ausführungsbeispiele der Erfindung können vorzugsweise unter Verwendung eines herkömmlichen Universalcomputers ausgeübt werden, wie unter Verwendung eines in 12 gezeigten, um Prozesse einschließlich der in den 9 bis 11 gezeigten auszuführen, sowie den im Anhang enthaltenen Pseudocode. Insbesondere werden die Schritte des Verfahrens zum Optimieren der Ausdrucksbäume durch Software-Befehle bewirkt, die durch den Computer ausgeführt werden. Das Computersystem 1200 umfasst den Computer 1202, eine Videoanzeige 1216 und Eingabeeinrichtungen 1218, 1220. Außerdem kann das Computersystem 1200 eine beliebige Anzahl weiterer Ausgabeeinrichtungen einschließlich Zeilendrucker, Laserdrucker, Plotter und andere mit dem Computer 1202 verbundene Wiedergabeeinrichtungen umfassen. Das Computersystem 1200 kann mit einem oder mehreren Computern unter Verwendung eines geeigneten Kommunikationskanals, wie eines Modemkommunikationsweges, eines Computernetzes oder dergleichen verbunden sein.
  • Der Computer 1202 selbst umfasst eine Zentralverarbeitungseinheit beziehungsweise -Einheiten (die nachstehend einfach als Prozessor bezeichnet werden) 1204, einen Speicher 1206, der einen Speicher mit wahlfreiem Zugriff (RAM) und einen Nur-Lese-Speicher (ROM) enthalten kann, eine Eingangs-/Ausgangs-(IO)-Schnittstelle 1208, eine Videoschnittstelle 1210 und eine oder mehrere Speichereinrichtungen, die allgemein durch einen Block 1212 in 12 dargestellt sind. Die Speichereinrichtung(en) 1212 kann ein oder mehrere Elemente aus der folgenden Gruppe umfassen: Diskettenlaufwerk, Festplattenlaufwerk, magnetoptisches Plattenlaufwerk, CD-ROM oder eine beliebige weitere einer Anzahl nicht flüchtiger Speichereinrichtungen, die dem Fachmann bekannt sind. Jede der Komponenten 1204 bis 1212 ist typischerweise mit einer oder mehreren der anderen Einrichtungen über einen Bus 1214 verbunden, der wiederum aus Daten-, Adress- und Steuerbussen bestehen kann.
  • Die Videoschnittstelle 1210 ist mit der Videoanzeige 1216 verbunden und stellt Videosignale vom Computer 1202 zur Anzeige auf der Videoanzeige 1216 bereit. Benutzereingaben zum Bedienen des Computers 1202 können durch eine oder mehrere Eingabeeinrichtungen zugeführt werden. Beispielsweise kann der Bediener die Tastatur 1218 und/oder eine Zeigeeinrichtung wie eine Maus 1220 zur Bereitstellung einer Eingabe in den Computer 1202 verwenden. Beispielcomputer, auf denen das Ausführungsbeispiel praktiziert werden kann, beinhalten IBM-PC/ATs und kompatible Einrichtungen, sowie Sun Sparc Stations.
  • ERSTES BEISPIEL
  • 3 zeigt ein Bild 10 aus einer Anzahl von Graphikelementen. Die Graphikelemente enthalten ein undurchsichtiges Bild A, das als Unterbild 11 bezeichnet wird, einen Kreis 12, der als Kreis B bezeichnet wird, der durch das Unterbild 11 verborgen ist, und den Text „hello" 13, der optional als Text „C" bezeichnet wird. Eine gestrichelte Linie 14 zeigt den Umfang des Bildes 10 und stellt eine leere Vordergrundregion dar, die nichts enthält, was das Bild 10 verdecken könnte.
  • 4 zeigt einen Ausdrucksbaum 20, der die Zusammensetzung des Bildes in 3 darstellt. Nachstehend wird ein Beispiel der Vereinfachung des Ausdrucksbaums in 4 beschrieben. Am Wurzelknoten (ersten Knoten) 21 des Ausdrucksbaums 20 übergibt ein computerimplementierter Vorgang dem ersten Knoten 21 eine leere Quadtree-Darstellung der leeren Region 14, die das Bild 10 in 3 nicht verbirgt, beziehungsweise äquivalent dazu einen weiteren Knoten über dem ersten Knoten 21 des Ausdrucksbaums 20 hat, um diesen zu verbergen.
  • Der erste Knoten 21 ist ein Zusammensetzungsoperator (das heißt, ein „Over"-Operator), der einen linken und rechten Operanden braucht. Der linke Operand ist ein Blattknoten 22, der das Unterbild 11 in 3 darstellt, und der rechte Operand wird durch einen zweiten Knoten 23 des Ausdrucksbaums zurückgegeben, der auch ein „Over"-Zusammensetzungsoperator ist.
  • Nach dem Empfang des leeren Quadtree im ersten Knoten 21 übergibt der Prozess den leeren Quadtree dem Blattknoten 22. Am Blattknoten 22 wird der Quadtree typischerweise mit dem Unterbild 11 zur Bestimmung verglichen, ob das Unterbild 11 verborgen wird. Da der Quadtree bei diesem Beispiel aber ein leerer Quadtree ist, ist kein direkter Vergleich erforderlich, um das Ergebnis zu erhalten, dass das Unterbild 11 nicht durch den leeren Quadtree verborgen wird (verborgen werden kann).
  • Der Vergleich eines Quadtrees mit einem Graphikelement (beispielsweise dem Unterbild 11) bringt einen Vergleich mit sich, in dem durch den Quadtree dargestellte Regionen eines Bildes mit Regionen des Bildes verglichen werden, die durch das Graphikelement gedeckt werden, um zu bestimmen, ob eine Region eine andere Region des Bildes verbirgt. Der Vergleich einer Quadtreedarstellung einer Region eines Bildes mit anderen Regionen des Bildes beinhaltet das Vergleichen der Region des Bildes mit den anderen Regionen entweder durch direkte Vergleiche ihrer jeweiligen Bereiche oder durch Vergleichen äquivalenter Darstellungen oder dergleichen.
  • Das durch den Blattknoten 22 dargestellte Unterbild 11 ist undurchsichtig und kann daher potenziell andere Graphikelemente des Bildes 10 verbergen. Eine erste Quadtreedarstellung des Unterbildes 11 wird daher aufgebaut, die die Grenzen des Unterbildes 11 enthält, und wird zum ersten Knoten 21 zurückgegeben, da kein weiterer linker oder rechter Zweig am Blattknoten 22 des Ausdrucksbaums 10 verfügbar ist. Am ersten Knoten 21 führt der „Over"-Operator eine Vereinigung des ursprünglich zu diesem Knoten gegebenen Quadtree, der ein leerer Quadtree ist, und der vom linken Knoten zurückgegebenen Quadtreedarstellung entsprechend den in Tabelle 2 aufgestellten Regeln für die Verarbeitung binärer Zusammensetzungsoperatoren durch.
  • Die Vereinigung eines leeren Quadtree mit der ersten Quadtreedarstellung des Unterbildes 11 ergibt einen Quadtree, der der Quadtreedarstellung äquivalent (oder im wesentlichen identisch) ist, und der nachstehend als der erste linke Quadtree bezeichnet wird.
  • Der erste linke Quadtree wird dem zweiten Knoten 23 des Ausdrucksbaums 10 übergeben, und wird wie in Verbindung mit dem Knoten 21 beschrieben dem linken Zweig des zweiten Knotens, d. h. einem Blattknoten 24 übergeben, der vom zweiten Knoten 23 abzweigt. Der Kreis 12 ist am Blattknoten 24 dargestellt. Beim Weitergeben des ersten linken Quadtree zum Blattknoten 24 vergleicht der Prozess den ersten linken Quadtree (das heißt, eine durch den ersten linken Quadtree dargestellte Bildregion) mit der Region des Bildes, die vom Kreis 12 belegt wird, wodurch zumindest bei diesem Beispiel herausgefunden wird, dass die Region des Kreises 12 in 3 vollständig von der durch den ersten linken Quadtree dargestellten Region verborgen wird. Das Ergebnis, dass die Region des Kreises 12 vollständig verborgen ist, wird dem zweiten Knoten 23 zurückgegeben.
  • Der zweite Knoten 23 erhält typischerweise vom linken Knoten 24 eine Quadtreedarstellung des Abschnitts des Bildes 10, der vom Unterbild 11 und dem Kreis 12 verborgen ist (eine durch die Vereinigung des Unterbildes 11 und des Kreises erhaltene Region). Da bei diesem Beispiel aber der Kreis 12 vollständig vom Unterbild 11 verborgen wird, braucht keine Vereinigung der Quadtrees für das Unterbild 11 und den Kreis 12 durchgeführt werden.
  • Ein der ersten linken Quadtreedarstellung des Unterbildes 11 im wesentlichen äquivalenter Quadtree wird dem zweiten Knoten 23 zurückgegeben, und dieser Quadtree wird einem rechten Blattknoten 25 übergeben, der vom zweiten Knoten 23 abzweigt. Der linke Blattknoten 25 des Ausdrucksbaums stellt eine Region des Bildes mit dem Text („hello") 13 dar.
  • Der Text wird von dem vom zweiten Knoten 23 übergebenen Quadtree (der durch den Quadtree dargestellten Bildregion) nicht verborgen. Typischerweise wird eine Quadtreedarstellung der Region des Bildes zum zweiten Knoten 23 zurückgegeben, die vom Graphikelement am rechten Blattknoten 25 verborgen wird. Da der Text aber in diesem Fall keine wesentliche Region (keinen wesentlichen Bereich) verbirgt, wird ein leerer Quadtree zum zweiten Knoten 23 zurückgegeben. Eine wesentliche Region ist vorzugsweise durch einen Leistungsgrad des Prozesses wie nachstehend beschrieben definiert.
  • Der zweite Knoten 23 empfängt den leeren Quadtree vom rechten Blattknoten 25. Nach der Aktion (siehe Tabelle 2) eines „Over"-Operators am Knoten, wenn der linke Operand verborgen ist, ersetzt der zweite Knoten 23 sich selbst durch den rechten Blattknoten 25 und schneidet den linken „Zweig" aus, was in diesem Beispiel der linke Blattknoten 24 ist. Der dem zweiten Knoten 23 zurückgegebene Quadtree (wenn auch der leere Quadtree) wird dem ersten Knoten 21 zurückgegeben.
  • Am ersten Knoten 21 wird keiner seiner Abkömmlinge abgeschnitten, und die Aktion eines „Over"-Operators besteht in der Bildung einer Vereinigung der Quadtrees, die zu dem „Over"-Operator der linken und rechten Zweige zurückgegeben wurden. Typischerweise wird das Ergebnis dieser Vereinigung dem Elternknoten des Knotens 21 zurückgegeben. Allerdings kann dieser Schritt bei diesem Beispiel wegoptimiert werden, da der erste Knoten 21 der oberste Knoten des Ausdrucksbaums (der Wurzelknoten) ist. Daher wird das Ergebnis der Vereinigung bei der Optimierung des Ausdrucksbaums nicht verwendet, und der vereinfachte Ausdrucksbaum ist in 5 dargestellt, in dem der zweite Knoten 23 und der linke Blattknoten 24 aus dem Ausdrucksbaum in 4 beseitigt wurden. Der vereinfachte Ausdrucksbaum in 5 kann dann zum Rendern des Bildes in 3 verwendet werden, ohne dass das Graphikelement gerendert werden muss, da der Kreis 12 als Graphikelement vom Unterbild 11 verborgen wird.
  • ZWEITES BEISPIEL
  • Nachstehend wird ein weiteres Beispiel der Vereinfachung (Optimierung) eines Ausdrucksbaums unter Bezugnahme auf die 6 bis 8 beschrieben. 6 zeigt ein Bild 40 mit mehreren Graphikelementen: eine Seite „D" 41, ein undurchsichtiges Unterbild 42, einen Text 43 und einen Kreis 44. Ein entsprechender Ausdrucksbaum zum Zusammensetzen oder Rendern des Bildes 40 in 6 ist in 7 gezeigt. In 7 stellen S0 bis S14 die bei diesem Beispiel vorgenommenen Schritte des bevorzugten Ausführungsbeispiels zum Vereinfachen oder Optimieren des Ausdrucksbaums 50 dar.
  • Die folgenden Schritte S0 bis S14 entsprechen der von einem Computer-implementierten Prozess an jedem Knoten bei der Vereinfachung des Ausdrucksbaums 50 in 7 vorgenommenen Aktion.
  • S0: Ein leerer Quadtree q0 wird erzeugt, der die leere Vordergrundregion 39 darstellt, die das gesamte Bild nicht verbirgt. Dieser leere Quadtree q0 wird einem ersten Knoten 51 (oder Wurzelknoten) des Ausdrucksbaums 50 übergeben.
  • S1: Der erste Knoten 51 des Ausdrucksbaums 50 ist ein „Over"-Operator. Der Prozess erhält den leeren Quadtree q0, der dem ersten Knoten 51 vom vorhergehenden Schritt S0 zugeführt wurde, und vergleicht die durch den Quadtree q0 dargestellte Region des Bildes mit einer durch den ersten Knoten 51 dargestellten Region, um zu bestimmen, ob die durch den ersten Knoten 51 dargestellte Region verborgen ist. Da q0 ein leerer Quadtree ist und die durch den ersten Knoten 51 dargestellte Region nicht verbergen kann, geht der Prozess zu den Nachkommenknoten über. Zuerst wird der Quadtree q0 einem zweiten Knoten 52 auf dem linken Zweig des Knotens 51 übergeben.
  • S2: Der zweite Knoten 52, der hier ein „In"-Operator ist, erhält den leeren Quadtree q0. Der Quadtree q0 wird mit einer durch den zweiten Knoten dargestellten Region zur Bestimmung verglichen, ob diese Region durch den Quadtree q0 verborgen wird. Die Region des zweiten Knotens 52 wird durch den Quadtree q0 nicht verborgen, da der Quadtree q0 leer ist. Der Prozess wird in der Tiefenrichtung fortgesetzt und übergibt den Quadtree q0 dem linken Zweig des zweiten Knotens 52.
  • S3: Ein dritter Knoten 53 ist ein Blattknoten, der das Unterbild 42 darstellt. Dieser dritte Knoten 53 erhält den durch den Schritt S2 übergebenen Quadtree q0 und vergleicht die Region dieses Knotens 53 mit der durch den Quadtree q0 dargestellten Region, um zu bestimmen, ob die durch den Knoten 53 dargestellte Region vom Quadtree q0 verborgen wird. In diesem Beispiel ist der Quadtree q0 leer, und daher wird der Knoten 53 nicht verborgen. Allerdings ist das Bild „A" ein Graphikelement, das andere Graphikelemente potenziell verbergen kann. Daher wird ein Quadtree q0 erzeugt, der die durch das Bild verborgene Region darstellt, und zum zweiten Knoten 52 zurückgegeben, da keine weiteren linken Zweige am dritten Knoten 53 verfügbar sind.
  • S4: Der zweite Knoten 52 erhält vom dritten Knoten 53 den Quadtree q1, und da der zweite Knoten 52 ein „In"-Operator ist, wird der Quadtree q1 im Speicher als verbergende Region des linken Operanden des „In"-Operators gespeichert. Die verbergende Region des linken Operanden eines Operators wird hier als qL bezeichnet. So ist hier qL = q1. Die Aktion des Prozesses besteht gemäß Tabelle 2 darin, den am zweiten Knoten 52 erhaltenen, von dessen Elternknoten 51 übergebenen Quadtree dem rechten Nachkommenknoten 54 des Knotens 52 zu übergeben. In diesem Beispiel wird der dem zweiten Knoten 52 von dem ersten Knoten 51 (Elternknoten) übergebene Quadtree q0 den rechten Zweig zum rechten Nachkommenknoten 54 hinuntergeschickt.
  • S5: Der rechte Nachkommenknoten 54 (fünfter Knoten) ist wiederum ein Blattknoten und stellt die durch den Kreis 54 angegebene Region dar. Der Quadtree q0 wurde vom zweiten Knoten 52 nach Schritt S4 übergeben, und wird mit der mit dem Kreis 54 belegten Region des Bildes verglichen, um zu bestimmen, ob die durch den Quadtree q0 dargestellte Region durch den Kreis 44 verborgen wird. Wiederum ist der Quadtree q0 leer, und der Knoten 44 wird daher nicht verborgen. Allerdings ist der Kreis 44 ein Graphikelement (ein Objekt) mit der Möglichkeit des Verbergens von Graphikelementen (Objekten), die darunter liegen können. Daher wird ein die Region des Bildes darstellender Quadtree q2 erzeugt, die durch den Kreis belegt wird. Der Quadtree q2 wird dem zweiten Knoten 52 zurückgegeben, da keine weiteren Zweige an diesem Knoten 54 verfügbar sind.
  • S6: Der zweite Knoten 52 erhält den von seinem rechten Nachkommenknoten 54 zurückgegebenen Quadtree q2, und der Quadtree q2 wird als verbergende Region des rechten Operanden des „In"-Operators gespeichert (das heißt, qR = q2). Der Prozess wird entsprechen der in Tabelle 2 festgelegten Aktion für den „In"-Operator fortgesetzt. Die Schnittmenge der durch die zwei Operanden des Prozesses dargestellten Regionen werden zum Elternknoten (das heißt, zum ersten Knoten 51) zurückgegeben (das heißt, das Unterbild 42 mit der Region des Kreises 44). Das Zuschneiden resultiert in der durch den Abschnitt des Unterbildes 42 dargestellten Region, der mit dem Kreis 44 (das heißt, dem Quadtree q2) übereinstimmt. In diesem Fall stellt die Schnittmenge qL ∩ qR = q1 ∩ q2 = q2 die Region dar, in der der Knoten 52 andere Graphikelemente verbergen kann.
  • S7: Der erste Knoten 51 erhält den vom zweiten Knoten 52 zurückgegebenen Quadtree q2. Der Quadtree q2 wird als verbergende Region des linken Operanden des „Over"-Operators gespeichert (qL = q2). Gemäß Tabelle 2 ist die durchzuführende Aktion, wenn ein Nachkomme eines rechten Zweiges eines Knotens einen „Over"-Operator umfasst, eine Vereinigung (das heißt, q0 ∪ qL = q0 ∩ q2 = q2) des Quadtree q0 und des Quadtree qL, die vom zweiten Knoten 52 zurückgegeben wird, den rechten Zweig hinunter zu schicken. Das Ergebnis dieser Vereinigung (q0 ∪ qL) ist ein im wesentlichen mit q2 identischer Quadtree. Daher wird das Ergebnis dieser Vereinigung (der Quadtree q2) den rechten Zweig zu einem fünften Knoten 55 hinuntergeschickt, der auch einen „Over"-Operator darstellt.
  • S8: Die Region, die durch den dem fünften Knoten 55 zugeführten Quadtree q2 dargestellt wird, wird mit der am fünften Knoten 55 dargestellten Region zur Bestimmung verglichen, ob die Region des Knotens 55 durch den Quadtree q2 (dessen Region) verborgen wird. Die am fünften Knoten 55 dargestellte Region des Bildes wird nicht durch die Region des Quadtree q2 verborgen. Der Quadtree q2 wird den linken Zweig hinuntergeschickt, der vom fünften Knoten 55 abzweigt.
  • S9: Der linke Nachkomme des fünften Knotens 55 ist ein Blattknoten 56, der die Region des Bildes in 6 darstellt, die den Text 43 zeigt. Der Blattknoten 56 erhält den vom fünften Knoten 55 übergebenen Quadtree q2 und wird mit der am Blattknoten 56 dargestellten Region (typischerweise ist die Region des Bildes 6, die vom Text 43 belegt wird, eine Bounding-Box mit Text) zur Bestimmung verglichen, ob die durch den Quadtree q2 dargestellte Region die am Blattknoten 56 dargestellte Region verbirgt. Die durch den Quadtree q2 dargestellte Region (die durch den Kreis 44 belegte Region) verbirgt den Text 43 teilweise. Daher wird der Text 43 für ein späteres Abschneiden begrenzt oder gekennzeichnet. Der Text 43 wird durch die Anwendung eines Abschneideoperators abgeschnitten, wobei die Abschneideoperation einen „Schneide-Weg" aus dem Quadtree q2 konstruiert und den Text 43 bis zu diesem Weg wegschneidet oder abschneidet.
  • An diesem Punkt wird typischerweise ein neuer Quadtree erzeugt, der die durch den Text belegte Region des Bildes darstellt, und zu dem fünften Knoten 55 zurückgegeben. Ist aber bei diesem Ausführungsbeispiel ein Graphikelement zu klein, um andere Graphikelemente des Bildes wesentlich zu verbergen (beispielsweise verbirgt das graphische Textelement „hello" 43 andere Graphikelemente nicht wesentlich, obwohl die Bounding-Box des Texts 43 eine wesentliche Region darstellt), wird vorzugsweise ein leerer Quadtree zurückgegeben, anstatt Verarbeitungszeit zu investieren, um eine Quadtreedarstellung der Region des Textes 43 zu erzielen. Daher wird die Erzeugung eines neuen Quadtree q3 für Regionen des Bildes, die durch den Text 43 belegt sind, als leerer Quadtree bewirkt. Die Wahl der Erzeugung eines leeren Quadtree für die durch den Text 43 dargestellte Region ist ein Leistungsmerkmal des Prozesses, was nachstehend unter der Unterüberschrift „Leistungsmerkmale" beschrieben ist. Obwohl eine Quadtreedarstellung für den Text 43 erzeugt werden kann, übersteigt die Arbeitsgeschwindigkeit des Prozesses die zum Rendern des Textes erforderliche Zeit. Daher wird der leere Quadtree q3 erzeugt und dem fünften Knoten 55 zurückgegeben.
  • S10: Der fünfte Knoten 55 erhält den durch den vorhergehenden Schritt S9 zurückgegebenen leeren Quadtree q3. Dieser Quadtree q3 wird als verbergende Region des linken Operanden des „Over"-Operators am fünften Knoten 55 gespeichert (qL = q3). Wiederum besteht gemäß Tabelle 2 die durchzuführende Aktion beim Durchlaufen eines rechten Zweiges eines Knotens mit einem „Over"-Operator im Übergeben einer Vereinigung des dem Knoten 55 durch den Elternknoten 51 übergebenen Quadtree q2 mit dem mit dem linken Operanden verbundenen Quadtree q3 zu dem rechten Zweig (qL ∪ q2 = q3 ∪ q2 = q2). Die Vereinigung des Quadtree q3 mit dem Quadtree q2 resultiert in einem zu dem Quadtree q2 äquivalenten Quadtree, da der Quadtree q3 der in Schritt S9 beschriebene leere Quadtree ist. Daher wird der Quadtree q2 dem rechten Zweig des Ausdrucksbaums für einen rechten Blattknoten 57 des Elternknotens (fünfter Knoten) 55 übergeben.
  • Der Blattknoten 57 ist durch ein Graphikelement Seite „D" 41 dargestellt, die die Hintergrundseite in 6 darstellt. Der dem rechten Blattknoten 57 durch den fünften Knoten 55 übergebene Quadtree q2 wird mit der Region der Seite „D" 41 zur Bestimmung verglichen, ob die durch den Quadtree q2 dargestellte Region die durch die Seite „D" 41 dargestellte Region verbirgt. Das Ergebnis dieses Vergleichs ist, dass die durch den Quadtree q2 (Kreis 49) dargestellte Region die Seite „D" 41 teilweise oder ganz verbirgt.
  • Das Graphikelement Seite „D" wird daher entweder markiert, um später auf die Grenze des Kreises 44 zugeschnitten zu werden (einen aus dem Quadtree q2 hergeleiteten Abschneideweg), was typischerweise vor einem Render-Vorgang geschieht, oder es wird ein Abschneideoperator angewendet, und die Seite „D" 41 wird zugeschnitten, sodass die durch den Kreis 44 beschriebene Region aus der Seite „D" 41 ausgeschnitten wird. Zur Darstellung der Seite „D" 41 kann ein Quadtree erzeugt werden, sodass er zurück zu einem Elternknoten gegeben werden kann. Allerdings ist bei diesem Beispiel die Erzeugung eines derartigen Quadtree nicht erforderlich, da entnommen werden kann, dass keine weiteren Graphikelemente verborgen sein können.
  • S12: Der Prozess kehrt zum fünften Knoten 55 zurück, an dem keine weiteren Quadtrees zu erzeugen sind.
  • S13: Der Prozess kehrt zum ersten Knoten 51 zurück, an dem keine weiteren Quadtrees zu erzeugen sind.
  • S14: Der Prozess endet mit der Optimierung des Ausdrucksbaums 50 in 7, womit der Ausdrucksbaum 60 in 8 erhalten wird. Die Symbole 58 und 59 in Diamantform in 8 zeigen, dass der Text 43 und die Seite „D" 41 jeweils zuzuschneiden sind (oder auch zugeschnitten wurden).
  • LEISTUNGSMERKMALE
  • Die vorstehenden Beispiele der Quadtreedarstellungen, die unter Bezugnahme auf die 1 bis 8 beschrieben wurden, umfassen die Darstellung einer Region eines Bildes, die von einem Graphikelement (Objekt) belegt wird, ungeachtet der relativen Größe des Graphikelements verglichen mit dem gesamten Bild. Allerdings wird der bei dem Ausführungsbeispiel durchgeführte Prozess vorzugsweise von den folgenden Prinzipien und Folgerungen gesteuert:
    • (a) Es wird bevorzugt, so wenig als möglich zur Abdeckung der meisten Fälle zu tun, anstelle zu versuchen, perfekte Ergebnisse zu erzielen, und
    • (b) an einem Knoten ist zumindest zu Beginn nicht bekannt, ob tatsächlich eine Verbergung in einem Bild geschieht oder nicht, weshalb es zu bevorzugen ist, kostspielige Tests mit unsicherem Ausgang zu vermeiden. Diese Prinzipien gelten im Folgenden.
  • Zum einen erhöht die Erhöhung der Tiefe (das heißt, die Anzahl von Knoten und Zweigen) eines Quadtree die Quadtreeauflösung und die Fähigkeit zur Erfassung einer Verbergung. Allerdings erhöhen sich ab einer bestimmten Auflösung die Berechnungskosten zur Erzeugung und Kombination von Quadtrees exponentiell, was die Verarbeitungseinsparungen durch das Versuchen der Beseitigung verschwindender Bereiche aus einem Ausdrucksbaum, die durch die erhöhte Quadtreetiefe dargestellt werden, überschreitet.
  • Außerdem ist es bezüglich der Berechnung kostspielig, jedes undurchsichtige Primitiv als potenziellen Verberger zu behandeln (als Graphikelement, das wahrscheinlich ein anderes Graphikelement eines Bildes verbirgt). Je kleiner das Primitiv ist, desto weniger wahrscheinlich verbirgt es ein anderes Primitiv. Daher ist die Erzeugung von Quadtrees vorzugsweise auf mögliche Verberger begrenzt, die eine vorbestimmte Größe haben oder größer sind. Typischerweise werden Primitive, deren Umwandlung in einen Quadtree zu kostspielig ist, nicht betrachtet, da sie kein gutes Investitionsergebnis garantieren können. Ein „guter Verberger" hat daher vorzugsweise die folgenden Merkmale:
    • (a) Vollständig undurchsichtig,
    • (b) Größer als eine vorbestimmte Größe (und daher sehr wahrscheinlich ein Verberger anderer Primitive eines Bildes),
    • (c) Einfach in einen Quadtree sehr schnell umzuwandeln (beispielsweise werden lediglich Graphikelemente mit einer einzigen einfachen konvexen Umrisslinie gewählt).
  • Zum Dritten kann das Testen auf eine Verbergung (das heißt, die Bestimmung, ob ein erstes Graphikelement eines oder mehrerer Graphikelemente eines Bildes verbirgt) durch die Darstellung der durch das erste Graphikelement abgedeckten Region als Quadtree und Testen durchgeführt werden, ob eine oder mehrere Zellen der an den Knoten des Quadtree dargestellten Region durch das eine oder die mehreren Graphikelemente des Bildes abgedeckte Regionen verbergen. Typischerweise sind die eine oder mehreren Regionen auch durch Quadtrees dargestellt, und die Zellen der Quadtrees werden verglichen. Allerdings kann sich die Darstellung einer beliebigen Region eines Bildes als Quadtreedarstellung ab einer bestimmten Auflösung als sehr rechenintensiv, obwohl insgesamt möglich, erweisen. Daher wird vorzugsweise eine Bounding-Box einer an einem Knoten eines Ausdrucksbaums dargestellten Region konstruiert. Ob der Knoten ein Graphikelement oder ein Operator ist, die am Ausdrucksbaumknoten dargestellte Region ist gut definiert.
  • Obwohl die Bounding-Box an einem Knoten eines Ausdrucksbaums die durch den Knoten abgedeckte Region eventuell nicht exakt darstellt, macht die Verbesserung der Rechenleistung typischerweise den Nachteil der Verarbeitung dahingehend, dass Verborgenheiten nicht erfasst werden, wett. Das Testen auf verborgene Graphikelemente durch das Vergleichen ihrer jeweiligen Bounding-Box wird gegenüber dem Vergleichen einer Quadtreedarstellung der Regionen des Bildes bevorzugt, die durch die Graphikelemente belegt werden. Dadurch können manche verborgenen Graphikelemente unterhalb einer vorbestimmten Größe übersehen und als nicht verborgen betrachtet werden. Allerdings ist die Auswahl eines einfachen Tests die Bestimmung, ob Graphikelemente durch andere Graphikelemente des Bildes verborgen werden, gegenüber rechenintensiver Tests zu bevorzugen, die in den meisten Fällen die Investition nicht rechtfertigen.
  • Im Folgenden wird ein Beispiel eines Pseudo-Code-Aufrufs einer Routine „test" beschrieben, die die Bounding-Box an einem Knoten mit einer Quadtreezelle (die nachstehend „Zelle" genannt wird) vergleicht.
  • Figure 00380001
  • Figure 00390001
  • Diese Funktion (Routine) wird aufgerufen durch:
    if bounding_box keine leere Schnittmenge mit dem durch die Quadtree-Wurzel dargestellten Rechteck hat then
    call test (bounding_box, Quadtree-Wurzel)
  • Quadtrees werden kontinuierlich erzeugt und verworfen. Ein sehr einfaches und schnelles Schema zur Verwaltung des Computerspeichers mit geringer Speicherzuweisungsaktivität wird bevorzugt (beispielsweise die Zuweisung ziemlich großer Speicherblöcke, das heißt, 1000 Quadtree-Zellen auf einmal). Zellen werden diesen Blöcken zugewiesen, als nur einmal beschreibbar und nur lesbar behandelt, und bis zum Ende des gesamten Ausdrucksbaumdurchlaufs nicht freigegeben. Dieser Ansatz ermöglicht das gemeinsame Nutzen von Zellen unter Quadtrees und verringert erheblich ein Kopieren der Durchführung von Quadtreeeinstelloperationen.
  • Muss keine Regionsdarstellung (kein Quadtree) erzeugt werden, wird vorzugsweise als Leistungsmerkmal an einem Knoten keine Regionsdarstellung erzeugt. Beispielsweise kann ein Elternknoten von einem Nachkommenknoten einen Quadtree der Region anfordern, die der Nachkommenknoten und seine Nachkommenknoten verbergen können. Wird eine Regionsdarstellung bei einer nachfolgenden Berechnung nie verwendet, muss die Regionsdarstellung vorzugsweise nicht erzeugt werden.
  • Der vorstehende Prozess zur Optimierung eines Ausdrucksbaums ist für eine angemessene Darstellung als Rekursion beschrieben. Die Implementierung des Prozesses ist auch unter Verwendung eines nicht rekursiven Prozesses durch Rück-Zeiger möglich. Dies dient sowohl der Verringerung eines Funktionsaufrufsoverheads und auch der Handhabung sehr großer Bäume, die in der Praxis kaum harmonisch sind.
  • Vorstehend wurde lediglich eine kleine Anzahl von Ausführungsbeispielen der Erfindung beschrieben, und es können Modifikationen anhand der vorstehenden Beschreibung vom Fachmann durchgeführt werden, ohne vom Schutzbereich der Erfindung abzuweichen.
  • ANLAGE
  • Die folgende Funktion testet einen Knoten auf eine Verbergung gegenüber einem Quadtree q0. Sie gibt zurück, ob alle sichtbaren Teile des Knotens verborgen sind oder nicht. Bei Ergebnis_erforderlich gibt sie auch eine Quadtreedarstellung zurück, welche Bereiche der Knoten verbirgt.
  • Sie wird mit dem Aufruf:
    obscure (Wurzelknoten des Baums, false, leerer Quadtree)
    aufgerufen.
    function obscure (Knoten, Ergebnis_erforderlich, q0)
    begin
    case Knotentyp begin
    Primitiv →
    if q0 verbirgt die Knotenboundingbox then
    return verborgen
    else if q0 verbirgt teilweise die Knotenboundingbox and es wird ein Vorteil beim Beschneiden des Primitivs erzielt (beispielsweise handelt es sich um ein Bild-, Kantenmisch-Box-, all- oder Wegprimitiv) then
    begin
    Zuschneiden, wenn der Zuschneideoverhead die Einsparung der Nichterzeugung und Zusammensetzung der abgeschnittenen Bildelemente es wert ist.
    Einen Abschneideweg aus q0 erhalten. Dieser Abschneideweg bleibt mit q0 verbunden, während q0 vorhanden ist, sodass er lediglich einmal erzeugt wird.
    Den Knoten markieren, dass er ein Zuschneiden auf diesen Weg erfordert.
    end
    if Ergebnis_erforderlich then
    begin
    if das Primitiv ein guter Verberger ist (ein großes undurchsichtiges Bild, eine Box oder all; ein großer undurchsichtiger Weg mit einer einzelnen, einfachen, konvexen Kante) then
    einen Quadtree aus der Primitivgrenze konstruieren.
    return diesen Quadtree.
    else
    return leeren Quadtree.
    end
    Farbtransformation →
    if q0 verbirgt die Knotenboundingbox then
    return verborgen.
    else if q0 verbirgt teilweise die Knotenboundingbox then
    begin
    Zuschneiden, da der Abschneideoverhead die Einsparung der Nichttransformation der nicht abgeschnittenen Bildelemente es wert ist.
    Abschneideweg aus q0 erhalten. Dieser Abschneideweg bleibt mit q0 verbunden, während q0 vorhanden ist, sodass er lediglich einmal erzeugt wird.
    Knoten markieren, dass er ein Zuschneiden auf diesen Weg erfordert.
    end
    Bestimmen, ob die Transformation die Undurchsichtigkeit bewahrt
    (Opazität 1 bildet auf Opazität 1 ab), und ob sie die Unsichtbarkeit bewahrt (Opazität 0 bildet auf Opazität 0 ab).
    call obscure (Knotenoperand, Transformation bewahrt Undurchsichtigkeit and Ergebnis_erforderlich q0), Quadtree q1 auf Anforderung erhalten. Wird die Undurchsichtigkeit nicht bewahrt, ist nicht bekannt, welche Bereiche nach der Anwendung der Transformation verborgen sein werden, so dass es keinen Anlass zur Anforderung eines Quadtree gibt.
    if Operand ist verborgen then
    begin
    soll der Operand verborgen sein, dann sind es lediglich die sichtbaren Abschnitte (Opazität #0), die garantiert verborgen sein werden.
    if Transformation bewahrt Unsichtbarkeit then
    return verborgen.
    else
    begin
    Bestimmen, was die Transformation unsichtbar transformieren wird (Opazität = 0). Diesen Knoten durch ein „All"-Primitiv dieser Farbe (Opazität) ersetzen.
    if Ergebnis_erforderlich then
    return einen aus den All-Grenzen konstruierten Quadtree.
    return
    end
    end
    if Ergebnis_erforderlich then
    if Transformation bewahrt Undurchsichtigkeit then
    return Quadtree q1.
    else
    return leeren Quadtree.
    Affine Transformation, Bildverwindung →
    if q0 verbirgt die Knotenboundingbox then
    return verborgen.
    else if q0 verbirgt teilweise die Knotenboundingbox then
    begin
    Zuschneiden, da der Abschneideoverhead die Einsparung der Nichterzeugung und Zusammensetzung der zugeschnittenen Bildelemente es wert ist.
    Abschneideweg aus q0 erhalten. Dieser Abschneideweg bleibt mit q0 verbunden, wenn q0 vorhanden ist, sodass er lediglich einmal erzeugt wird.
    Den Knoten markieren, dass er ein Zuschneiden auf diesen Weg erfordert.
    end
    call obscure (Knotenoperand, false, leerer Quadtree). q0 kann im Baum nicht weitergereicht werden oder es kann kein Ergebnis akzeptiert werden, wenn die Quadtrees nicht durch die Transformation invertiert/transformiert werden.
    Bildfaltung →
    if q0 verbirgt die Knotenboundingbox then
    return verborgen
    call obscure (Knotenoperand, false, leerer Quadtree).
    Binäroperator →
    if q0 verbirgt die Knotenboundingbox then
    return verborgen
    case Knotenoperator begin
    over →
    call obscure (linker Operand des Knotens, true, q0), durch linken Operanden verborgenen Bereich qL erhalten.
    call obscure (rechter Operand des Knotens, Ergebnis_erforderlich, ist linker Operand verborgen then q0 else q0 ∪ qL), durch rechten Operanden verborgenen Bereich qR bei Ergebnis_erforderlich erhalten.
    if linker Operand ist verborgen und rechter Operand ist verborgen then
    return verborgen.
    else if linker Operand ist verborgen then
    begin
    Ersetze diesen Knoten durch seinen rechten Operanden.
    if Ergebnis_erforderlich then
    return qR.
    end
    else if rechter Operand ist verborgen then
    begin
    Diesen Knoten durch seinen linken Operanden ersetzen.
    if Ergebnis_erforderlich then
    return qL.
    end
    else
    if Ergebnis_erforderlich then
    return qL ∪ qR.
    end
    in →
    call obscure (linker Operand des Knotens, Ergebnis_erforderlich, q0), durch linken Operanden verborgenen Bereich qL bei Ergebnis_erforderlich erhalten.
    if linker Operand ist verborgen then
    return verborgen.
    call obscure (rechter Operand des Knotens, Ergebnis_erforderlich, q0), durch rechten Operanden verborgenen Bereich qR bei Ergebnis_erforderlich erhalten.
    if rechter Operand ist verborgen then
    return verborgen.
    if Ergebnis_erforderlich then
    return qL ∪ qR.
    out
    call obscure (rechter Operand des Knotens, true, q0), durch rechten Operanden verborgenen Bereich qR erhalten.
    call obscure (linker Operand des Knotens, Ergebnis_erforderlich, ist rechter Operand verborgen then q0 else q0 ∩ qR), durch linken Operanden verborgenen Bereich qL bei Ergebnis erforderlich erhalten.
    if linker Operand ist verborgen then
    return verborgen.
    else if rechter Operand ist verborgen then
    begin
    Diesen Knoten durch seinen linken Operanden ersetzen.
    if Ergebnis_erforderlich then
    return qL.
    end
    else
    if Ergebnis_erforderlich then
    return qL-B(rechter Operand).
    end
    ratop →
    call obscure (linker Operand des Knotens, Ergebnis_erforderlich, q0), durch linken Operanden verborgenen Bereich qL bei Ergebnis_erforderlich erhalten.
    if linker Operand ist verborgen then
    return verborgen.
    call obscure (rechter Operand des Knotens, false, q0).
    if rechter Operand ist verborgen then
    Diesen Knoten durch seinen linken Operanden ersetzen.
    if Ergebnis_erforderlich then
    return qL.
    plusC →
    call obscure (linker Operand des Knotens, Ergebnis_erforderlich, q0), durch linken Operanden verborgenen Bereiche qL bei Ergebnis_erforderlich erhalten.
    call obscure (rechter Operand des Knotens, Ergebnis_erforderlich, q0), durch rechten Operanden verborgenen Bereich qR bei Ergebnis_erforderlich erhalten.
    if linker Operand ist verborgen und rechter Operand ist verborgen then
    return verborgen.
    else if linker Operand ist verborgen then
    begin
    Diesen Knoten durch seinen rechten Operanden ersetzen.
    if Ergebnis_erforderlich then
    return qR.
    end
    else if rechter Operand ist verborgen then
    begin
    Diesen Knoten durch seinen linken Operanden ersetzen.
    if Ergebnis_erforderlich then
    return qL.
    end
    else
    if Ergebnis_erforderlich then
    return qL ∪ qR.
    end
    plusW, Xor →
    call obscure (linker Operand des Knotens, Ergebnis_erforderlich, q0), durch linken Operanden verborgenen Bereich qL bei Ergebnis_erforderlich erhalten.
    call obscure (rechter Operand des Knotens, Ergebnis_erforderlich, q0), durch rechten Operanden verborgenen Bereich qR bei Ergebnis_erforderlich erhalten.
    if linker Operand ist verborgen and rechter Operand ist verborgen then
    return verborgen.
    else if linker Operand ist verborgen then
    begin
    Diesen Knoten durch seinen rechten Operanden ersetzen.
    if Ergebnis_erforderlich then
    return qR.
    end
    else if rechter Operand ist verborgen then
    begin
    Diesen Knoten durch seinen linken Operanden ersetzen.
    if Ergebnis_erforderlich then
    return qL.
    end
    else
    begin
    if Ergebnis_erforderlich then
    return (qL-B(rechter Operand)) ∪ (qR-B(linker Operand)).
    end
    end case Binäroperator
    end case Knotentyp
    end

Claims (34)

  1. Verfahren zur Optimierung eines Ausdrucksbaums (101, 902, 1102), der zum Zusammensetzen eines Bildes dient und zumindest drei Knoten umfasst, wobei jeder Knoten des Baums zumindest entweder ein eine Bildregion definierendes Grafikelement oder ein Grafikoperator ist, wobei das Verfahren für zumindest einen Knoten im Baum die Schritte umfasst Vergleichen (908) einer ersten Region des Knotens mit einer zweiten Region, die von zumindest einem anderen Knoten irgendwo im Ausdrucksbaum erhalten wird, Bestimmen (910), ob die erste Region durch die zweite Region ganz oder teilweise verborgen ist, und Modifizieren (912) des Ausdrucksbaums, wenn die erste Region zumindest teilweise oder ganz durch die zweite Region verborgen ist, um einen optimierten Ausdrucksbaum zum Zusammensetzen des gleichen Bildes auszubilden, wobei ein optimierter Teil des Ausdrucksbaums im Wesentlichen nicht-verborgene Abschnitte der ersten Region darstellt.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Modifizierens (912) des Ausdrucksbaums die Anwendung (1012) eines Abschneideoperators bei dem Knoten beinhaltet, wenn die erste Region teilweise verborgen ist.
  3. Verfahren nach Anspruch 1, wobei der Schritt des Modifizierens (912) des Ausdrucksbaums die Schritte enthält, wenn der Knoten ganz verborgen ist: Entfernen (1008) des Knotens und, wenn der Knoten einen Elternknoten mit einem Grafikoperator hat, Auswählen (1010) einer Knotenersetzungsregel aus einem vorbestimmten Satz von Knotenersetzungsregeln entsprechend dem Grafikoperator und Anwenden (1010) der Regel.
  4. Verfahren nach Anspruch 3, wobei der vorbestimmte Satz von Knotenersetzungsregeln zumindest einen aus der folgenden Gruppe ausgewählten Schritt umfasst: wenn der Elternknoten einen Grafikoperator „over" darstellt, und der aktuelle Knoten sich in einem linken Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen rechten Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „over" darstellt, und der aktuelle Knoten sich in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „in" darstellt, Entfernen des Elternknotens und jedes Unterbaums, der vom Elternknoten verzweigt, wenn der Elternknoten einen Grafikoperator „ratop" darstellt, und der aktuelle Knoten sich in einem linken Zweig des Elternknotens befindet, Entfernen des Elternknotens und jedes Unterbaums, der vom Elternknoten verzweigt, wenn der Elternknoten einen Grafikoperator „ratop" darstellt, und der aktuelle Knoten sich in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „out" darstellt, und der aktuelle Knoten sich in einem linken Zweig des zweiten Knotens befindet, Entfernen des Elternknotens und jedes Unterbaums, der vom Elternknoten verzweigt, wenn der Elternknoten einen Grafikoperator „out" darstellt, und der aktuelle Knoten sich in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „plusC" darstellt, und der aktuelle Knoten sich in einem linken Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen rechten Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „plusC" darstellt, und sich der aktuelle Knoten in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „plusW" oder „Xor" darstellt, und sich der aktuelle Knoten in einem linken Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen rechten Unterbaum des Elternknotens, und wenn der Elternknoten einen Grafikoperator „plusW" oder „Xor" darstellt, und sich der aktuelle Knoten in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei die Grafikoperatoren Bildzusammensetzungsoperatoren sind.
  6. Verfahren nach Anspruch 1, wobei die zweite Region durch eine Regiondarstellung in der Form einer hierarchischen Datenstruktur dargestellt wird.
  7. Verfahren nach Anspruch 6, wobei die hierarchische Datenstruktur eine Quadtree-Darstellung ist.
  8. Verfahren nach Anspruch 1, ferner mit dem Schritt des Durchlaufens (904) des Ausdrucksbaums Knoten für Knoten und der Durchführung der Vergleichs-, Bestimmungs- und Modifizierungsschritte bei zumindest einem durchlaufenen Knoten.
  9. Verfahren nach Anspruch 8, wobei der Modifizierungsschritt (912) die Entfernung (1008) des aktuellen Knotens oder das Ersetzen des aktuellen Knotens durch einen anderen Knoten des Ausdrucksbaums enthält.
  10. Verfahren nach Anspruch 8, wobei der Modifizierungsschritt (912) ferner das Abschneiden (1012) der durch den aktuellen Knoten dargestellten ersten Region oder das Markieren für ein Abschneiden zu einem späteren Zeitpunkt enthält.
  11. Verfahren nach Anspruch 8, wobei das Verfahren bei zumindest einem einen Grafikoperator darstellenden Knoten die Schritte umfasst Erhalten (1110) einer ersten Regionsdarstellung von einem Elternknoten, Führen (1112) einer modifizierten ersten Regionsdarstellung zu einem ersten Operanden des Grafikoperators entsprechend einer ersten vorbestimmten Modifikationsregel für den Operator, Zurückgeben (1114) einer zweiten Regionsdarstellung von durch einen Unterbaum verborgenen Regionen, der mit dem ersten Operanden verbunden ist, zu dem Grafikoperator, Führen (1116) einer modifizierten zweiten Regionsdarstellung zu einem zweiten Operanden des Grafikoperators entsprechend einer zweiten vorbestimmten Modifikationsregel für den Operator, Zurückgeben (1118) einer dritten Regionsdarstellung von durch einen Unterbaum verborgenen Regionen, der mit dem zweiten Operanden verbunden ist, zu dem Grafikoperator, und Bestimmen (1120) einer zu dem Elternknoten zurückzugebenden endgültigen Regionsdarstellung entsprechend einer eingestellten Regel für den Grafikoperator, wobei die endgültige Regionsdarstellung im Wesentlichen eine Region darstellt, in der der aktuelle Knoten andere Knoten im Ausdrucksbaum verbergen kann.
  12. Verfahren nach Anspruch 11, wobei die eingestellte Regel aus der folgenden Gruppe ausgewählt wird: (a) ist der Grafikoperator ein Operator „over" oder „plusC", wird die zu dem Elternknoten zurückzugebende endgültige Regionsdarstellung aus einer Vereinigung der zweiten Regionsdarstellung und der dritten Regionsdarstellung bestimmt, (b) ist der Grafikoperator ein Operator „in", wird die zum Elterknoten zurückzugebende endgültige Regionsdarstellung aus einer Schnittmenge der zweiten Regionsdarstellung und der dritten Regionsdarstellung bestimmt, (c) ist der Grafikoperator ein Operator „ratop", ist die zum Elternknoten zurückzugebende endgültige Regionsdarstellung die zweite Regionsdarstellung, (d) ist der Grafikoperator ein Operator „out", wird die zum Elternknoten zurückzugebende endgültige Regionsdarstellung aus einer Differenz der zweiten Regionsdarstellung und einer Regionsdarstellung mit zumindest einer Region bestimmt, die durch eine Bounding-Box eines Knotens in einem rechten Unterbaum des aktuellen Knotens dargestellt wird, und (e) ist der Grafikoperator ein Operator „Xor" oder „plusW", wird die zum Elternknoten zurückzugebende endgültige Regionsdarstellung aus einer Vereinigung der zweiten Regionsdarstellung weniger einer Regionsdarstellung mit zumindest einer Region, die durch eine Bounding-Box eines Knotens in einem rechten Unterbaum des aktuellen Knotens dargestellt wird, und der dritten Regionsdarstellung weniger einer Regionsdarstellung mit einer Bounding-Box eines Knotens in einem rechten Unterbaum des aktuellen Knotens bestimmt.
  13. Verfahren nach Anspruch 11, wobei die erste vorbestimmte Modifikationsregel umfasst Übergeben im Wesentlichen der ersten Regionsdarstellung als modifizierte erste Regionsdarstellung, wenn der Grafikoperator ein Operator „over", „in", „ratop", „plusC", „plusW", „Xor", „out (linken Operanden zuerst betrachten)" oder dergleichen ist, und wenn der Grafikoperator ein Operator „out (rechten Operanden zuerst betrachen)" ist, Übergeben einer Vereinigung der ersten Regionsdarstellung mit der zweiten Regionsdarstellung als modifizierte erste Regionsdarstellung.
  14. Verfahren nach Anspruch 11, wobei die zweite vorbestimmte Modifikationsregel umfasst Übergeben im Wesentlichen der ersten Regionsdarstellung als modifizierte zweite Regionsdarstellung, wenn der Grafikoperator ein Operator „in", „ratop", „out", „plusC", „plusW", „Xor" oder dergleichen ist, und wenn der Grafikoperator ein Operator „over" ist, Übergeben einer Vereinigung der ersten Regionsdarstellung mit der zweiten Regionsdarstellung als modifizierte zweite Regionsdarstellung.
  15. Verfahren nach einem der Ansprüche 11 bis 14, wobei die Bilddarstellung nicht an einem Knoten erzeugt oder zu einem Elternknoten des Knotens zurückgegeben wird, wenn die Bilddarstellung nicht nachfolgend verwendet wird.
  16. Verfahren nach Anspruch 15, wobei die Bilddarstellung an einem Knoten nicht erzeugt oder zu dem Elternknoten nicht zurückgegeben wird, wenn der Knoten aus der folgenden Gruppe ausgewählt wird: rechter Operand eines Operators „over", und der „over" -Operatorknoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, linker Operand eines Operators „in", „plusC", „plusW" oder „Xor", und der Operatorknoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, rechter Operand eines Operators „in", „plusC", „plusW" oder „Xor", und der Operatorknoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, linker Operand eines Operators „out" oder „ratop", und der Knoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, rechter Operand eines Operators „ratop", Wurzel des Ausdrucksbaums, Operand eines Bildwickel-, Affintransformations- oder Faltungsoperators, Operand einer Farbtransformation, die die Undurchsichtigkeit nicht bewahrt, oder wenn der Transformationsknoten keine Bilddarstellung zu seinem Elternknoten zurückgeben muss.
  17. Vorrichtung zur Optimierung eines Ausdrucksbaums (101, 902, 1102), der zum Zusammensetzen eines Bildes dient und zumindest drei Knoten umfasst, wobei jeder Knoten des Baums zumindest entweder ein eine Bildregion definierendes Grafikelement oder ein Grafikoperator ist, mit einer Einrichtung zum Vergleichen (908) einer ersten Region des Knotens mit einer zweiten Region, die von zumindest einem anderen Knoten irgendwo im Ausdrucksbaum erhalten wird, einer Einrichtung zum Bestimmen (910), ob die erste Region durch die zweite Region ganz oder teilweise verborgen ist, und einer Einrichtung zum Modifizieren (912) des Ausdrucksbaums, wenn die erste Region zumindest teilweise oder ganz durch die zweite Region verborgen ist, um einen optimierten Ausdrucksbaum zum Zusammensetzen des gleichen Bildes auszubilden, wobei ein optimierter Teil des Ausdrucksbaums im Wesentlichen nicht-verborgene Abschnitte der ersten Region darstellt.
  18. Vorrichtung nach Anspruch 17, wobei die Modifizierungseinrichtung eine Einrichtung zur Anwendung (1012) eines Abschneideoperators bei dem Knoten beinhaltet, wenn die erste Region teilweise verborgen ist.
  19. Vorrichtung nach Anspruch 17, wobei die Modifizierungseinrichtung umfasst: eine Einrichtung zum Entfernen (1008) des Knotens und, eine Einrichtung zum Auswählen (1010) einer Knotenersetzungsregel aus einem vorbestimmten Satz von Knotenersetzungsregeln entsprechend dem Grafikoperator und Anwenden (1010) der Regel, wenn der Knoten einen Elternknoten mit einem Grafikoperator hat und der Knoten ganz verborgen ist.
  20. Vorrichtung nach Anspruch 19, wobei der vorbestimmte Satz von Knotenersetzungsregeln zumindest einen aus der folgenden Gruppe ausgewählten Schritt umfasst: wenn der Elternknoten einen Grafikoperator „over" darstellt, und der aktuelle Knoten sich in einem linken Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen rechten Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „over" darstellt, und der aktuelle Knoten sich in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „in" darstellt, Entfernen des Elternknotens und jedes Unterbaums, der vom Elternknoten verzweigt, wenn der Elternknoten einen Grafikoperator „ratop" darstellt, und der aktuelle Knoten sich in einem linken Zweig des Elternknotens befindet, Entfernen des Elternknotens und jedes Unterbaums, der vom Elternknoten verzweigt, wenn der Elternknoten einen Grafikoperator „ratop" darstellt, und der aktuelle Knoten sich in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „out" darstellt, und der aktuelle Knoten sich in einem linken Zweig des zweiten Knotens befindet, Entfernen des Elternknotens und jedes Unterbaums, der vom Elternknoten verzweigt, wenn der Elternknoten einen Grafikoperator „out" darstellt, und der aktuelle Knoten sich in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „plusC" darstellt, und der aktuelle Knoten sich in einem linken Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen rechten Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „plusC" darstellt, und sich der aktuelle Knoten in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens, wenn der Elternknoten einen Grafikoperator „plusW" oder „Xor" darstellt, und sich der aktuelle Knoten in einem linken Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen rechten Unterbaum des Elternknotens, und wenn der Elternknoten einen Grafikoperator „plusW" oder „Xor" darstellt, und sich der aktuelle Knoten in einem rechten Zweig des Elternknotens befindet, Ersetzen des Elternknotens durch einen linken Unterbaum des Elternknotens.
  21. Vorrichtung nach einem der Ansprüche 17 bis 20, wobei die Grafikoperatoren Bildzusammensetzungsoperatoren sind.
  22. Vorrichtung nach Anspruch 17, wobei die zweite Region durch eine Regiondarstellung in der Form einer hierarchischen Datenstruktur dargestellt ist.
  23. Vorrichtung nach Anspruch 22, wobei die hierarchische Datenstruktur eine Quadtree-Darstellung ist.
  24. Vorrichtung nach Anspruch 17, ferner mit einer Einrichtung zum Durchlaufen (904) des Ausdrucksbaums Knoten für Knoten, wobei die Vergleichs-, Bestimmungs- und Modifizierungseinrichtungen zum Arbeiten bei zumindest einem durchlaufenen Knoten eingerichtet sind.
  25. Vorrichtung nach Anspruch 24, wobei die Modifizierungseinrichtung eine Einrichtung zur Entfernung (1008) des aktuellen Knotens oder zum Ersetzen des aktuellen Knotens durch einen anderen Knoten des Ausdrucksbaums enthält.
  26. Vorrichtung nach Anspruch 24, wobei die Modifizierungseinrichtung ferner eine Einrichtung zum Abschneiden (1012) der durch den aktuellen Knoten dargestellten Region oder Markieren für ein Abschneiden zu einem späteren Zeitpunkt enthält.
  27. Vorrichtung nach Anspruch 24, wobei die Vorrichtung für zumindest einen einen Grafikoperator darstellenden Knoten umfasst eine Einrichtung zum Erhalten (1110) einer ersten Regionsdarstellung von einem Elternknoten, eine Einrichtung zum Führen (1112) einer modifizierten ersten Regionsdarstellung zu einem ersten Operanden des Grafikoperators entsprechend einer ersten vorbestimmten Modifikationsregel für den Operator, eine Einrichtung zum Zurückgeben (1114) einer zweiten Regionsdarstellung von durch einen Unterbaum verborgenen Regionen, der mit dem ersten Operanden verbunden ist, zu dem Grafikoperator, eine Einrichtung zum Führen (1116) einer modifizierten zweiten Regionsdarstellung zu einem zweiten Operanden des Grafikoperators entsprechend einer zweiten vorbestimmten Modifikationsregel für den Operator, eine Einrichtung zum Zurückgeben (1118) einer dritten Regionsdarstellung von durch einen Unterbaum verborgenen Regionen, der mit dem zweiten Operanden verbunden ist, zu dem Grafikoperator, und eine Einrichtung zum Bestimmen (1120) einer zu dem Elternknoten zurückzugebenden endgültigen Regionsdarstellung entsprechend einer eingestellten Regel für den Grafikoperator, wobei die endgültige Regionsdarstellung im Wesentlichen eine Region darstellt, in der der aktuelle Knoten andere Knoten im Ausdrucksbaum verbergen kann.
  28. Vorrichtung nach Anspruch 27, wobei die eingestellte Regel aus der folgenden Gruppe ausgewählt wird: (a) ist der Grafikoperator ein Operator „over" oder „plusC", wird die zu dem Elternknoten zurückzugebende endgültige Regionsdarstellung aus einer Vereinigung der zweiten Regionsdarstellung und der dritten Regionsdarstellung bestimmt, (b) ist der Grafikoperator ein Operator „in", wird die zum Elterknoten zurückzugebende endgültige Regionsdarstellung aus einer Schnittmenge der zweiten Regionsdarstellung und der dritten Regionsdarstellung bestimmt, (c) ist der Grafikoperator ein Operator „ratop", ist die zum Elternknoten zurückzugebende endgültige Regionsdarstellung die zweite Regionsdarstellung, (d) ist der Grafikoperator ein Operator „out", wird die zum Elternknoten zurückzugebende endgültige Regionsdarstellung aus einer Differenz der zweiten Regionsdarstellung und einer Regionsdarstellung mit zumindest einer Region bestimmt, die durch eine Bounding-Box eines Knotens in einem rechten Unterbaum des aktuellen Knotens dargestellt wird, und (e) ist der Grafikoperator ein Operator „Xor" oder „plusW", wird die zum Elternknoten zurückzugebende endgültige Regionsdarstellung aus einer Vereinigung der zweiten Regionsdarstellung weniger einer Regionsdarstellung mit zumindest einer Region, die durch eine Bounding-Box eines Knotens in einem rechten Unterbaum des aktuellen Knotens dargestellt wird, und der dritten Regionsdarstellung weniger einer Regionsdarstellung mit einer Bounding-Box eines Knotens in einem rechten Unterbaum des aktuellen Knotens bestimmt.
  29. Vorrichtung nach Anspruch 27, wobei die erste vorbestimmte Modifikationsregel umfasst Übergeben im Wesentlichen der ersten Regionsdarstellung als modifizierte erste Regionsdarstellung, wenn der Grafikoperator ein Operator „over", „in", „ratop", „plusC", „plusW", „Xor", „out (linken Operanden zuerst betrachten)" oder dergleichen ist, und wenn der Grafikoperator ein Operator „out (rechten Operanden zuerst betrachen)" ist, Übergeben einer Vereinigung der ersten Regionsdarstellung mit der zweiten Regionsdarstellung als modifizierte erste Regionsdarstellung.
  30. Vorrichtung nach Anspruch 27, wobei die zweite vorbestimmte Modifikationsregel umfasst Übergeben im Wesentlichen der ersten Regionsdarstellung als modifizierte zweite Regionsdarstellung, wenn der Grafikoperator ein Operator „in", „ratop", „out", „plusC", „plusW", „Xor" oder dergleichen ist, und wenn der Grafikoperator ein Operator „over" ist, Übergeben einer Vereinigung der ersten Regionsdarstellung mit der zweiten Regionsdarstellung als modifizierte zweite Regionsdarstellung.
  31. Vorrichtung nach einem der Ansprüche 27 bis 30, wobei die Bilddarstellung nicht an einem Knoten erzeugt oder zu einem Elternknoten des Knotens zurückgegeben wird, wenn die Bilddarstellung nicht nachfolgend verwendet wird.
  32. Vorrichtung nach Anspruch 31, wobei die Bilddarstellung an einem Knoten nicht erzeugt oder zu dem Elternknoten nicht zurückgegeben wird, wenn der Knoten aus der folgenden Gruppe ausgewählt wird: rechter Operand eines Operators „over", und der „over" -Operatorknoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, linker Operand eines Operators „in", „plusC", „plusW" oder „Xor", und der Operatorknoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, rechter Operand eines Operators „in", „plusC", „plusW" oder „Xor", und der Operatorknoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, linker Operand eines Operators „out" oder „ratop", und der Knoten muss keine Bilddarstellung zu seinem Elternknoten zurückgeben, rechter Operand eines Operators „ratop", Wurzel des Ausdrucksbaums, Operand eines Bildwickel-, Affintransformations- oder Faltungsoperators, Operand einer Farbtransformation, die die Undurchsichtigkeit nicht bewahrt, oder wenn der Transformationsknoten keine Bilddarstellung zu seinem Elternknoten zurückgeben muss.
  33. Bildverarbeitungsverfahren mit den Schritten Erzeugen eines Bildausdrucksbaums (101, 902, 1102) für ein Bild (40), Optimieren des Ausdruckbaums unter Verwendung eines Verfahrens nach einem der Ansprüche 1 bis 16, Zusammensetzen des Bildes unter Verwendung des optimierten Ausdruckbaums und Ausgeben des zusammengesetzten Bildes.
  34. Bildverarbeitungsvorrichtung mit einer Einrichtung zur Erzeugung eines Bildausdruckbaums (101, 902, 1102) für ein Bild (40); einer Vorrichtung zur Optimierung des Ausdrucksbaums nach einem der Ansprüche 17 bis 32, einer Einrichtung zur Zusammensetzung des Bildes unter Verwendung des optimierten Ausdruckbaums und einer Ausgabeeinrichtung zur Ausgabe des zusammengesetzten Bildes.
DE69731425T 1996-05-22 1997-05-21 Verfahren und Apparatus zur Optimierung des Expressionsbaumes zur Darstellung von Bildern Expired - Lifetime DE69731425T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AUPO002196 1996-05-22
AUPO0021A AUPO002196A0 (en) 1996-05-22 1996-05-22 A method of optimising an expression tree for the production of images

Publications (2)

Publication Number Publication Date
DE69731425D1 DE69731425D1 (de) 2004-12-09
DE69731425T2 true DE69731425T2 (de) 2005-11-10

Family

ID=3794332

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69731425T Expired - Lifetime DE69731425T2 (de) 1996-05-22 1997-05-21 Verfahren und Apparatus zur Optimierung des Expressionsbaumes zur Darstellung von Bildern

Country Status (5)

Country Link
US (2) US6191797B1 (de)
EP (1) EP0809213B1 (de)
JP (1) JP3996975B2 (de)
AU (2) AUPO002196A0 (de)
DE (1) DE69731425T2 (de)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU714611B2 (en) * 1997-02-20 2000-01-06 Canon Kabushiki Kaisha A method of linking display images
US6674485B2 (en) 1998-08-31 2004-01-06 Hitachi Software Engineering Co., Ltd. Apparatus and method for image compositing
EP0984396A3 (de) * 1998-09-03 2003-08-20 Canon Kabushiki Kaisha Anordnung und verfahren zum Optimieren der Bildzusammensetzung
JP3427973B2 (ja) * 1998-12-09 2003-07-22 日本電気株式会社 オブジェクト表示記述文書変換装置及びブラウザ
AU744463B2 (en) * 1999-03-16 2002-02-21 Canon Kabushiki Kaisha Method for compiling compositiing expressions for optimised rendering
AUPP923799A0 (en) 1999-03-16 1999-04-15 Canon Kabushiki Kaisha Method for optimising compilation of compositing expressions
US6983291B1 (en) * 1999-05-21 2006-01-03 International Business Machines Corporation Incremental maintenance of aggregated and join summary tables
US6330003B1 (en) * 1999-07-30 2001-12-11 Microsoft Corporation Transformable graphical regions
US7505046B1 (en) 2000-05-02 2009-03-17 Adobe Systems Incorporated Preserving opaque-like rendering in transparent 2D graphics using knockout groups
US7292255B2 (en) * 2000-05-31 2007-11-06 Canon Kabushiki Kaisha Image data acquisition optimisation
AU2001264895A1 (en) * 2000-06-21 2002-01-02 Microsoft Corporation System and method for integrating spreadsheets and word processing tables
US6883168B1 (en) * 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US7191394B1 (en) * 2000-06-21 2007-03-13 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US7624356B1 (en) * 2000-06-21 2009-11-24 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US7346848B1 (en) * 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
US6948135B1 (en) * 2000-06-21 2005-09-20 Microsoft Corporation Method and systems of providing information to computer users
US6756994B1 (en) * 2000-08-07 2004-06-29 Canon Kabushiki Kaisha Method and apparatus for handling secondary dependencies
US7418664B2 (en) * 2002-04-03 2008-08-26 Microsoft Corporation Application sharing single document sharing
US7028266B2 (en) * 2002-04-05 2006-04-11 Microsoft Corporation Processing occluded windows during application sharing
US8756513B1 (en) 2002-04-23 2014-06-17 Microsoft Corporation Document viewing mechanism for document sharing environment
AU2002951651A0 (en) * 2002-09-25 2002-10-10 Canon Kabushiki Kaisha Apparatus for printing using non-overlapping graphic objects
JP2004289516A (ja) * 2003-03-24 2004-10-14 Konica Minolta Holdings Inc 画像処理方法、画像処理装置、画像処理プログラム及び画像読取装置
US7275216B2 (en) * 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
US7415672B1 (en) 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US7370066B1 (en) 2003-03-24 2008-05-06 Microsoft Corporation System and method for offline editing of data files
US7296017B2 (en) * 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US7516145B2 (en) * 2003-03-31 2009-04-07 Microsoft Corporation System and method for incrementally transforming and rendering hierarchical data files
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US20040268229A1 (en) * 2003-06-27 2004-12-30 Microsoft Corporation Markup language editing with an electronic form
US7451392B1 (en) * 2003-06-30 2008-11-11 Microsoft Corporation Rendering an HTML electronic form by applying XSLT to XML using a solution
US7406660B1 (en) 2003-08-01 2008-07-29 Microsoft Corporation Mapping between structured data and a visual surface
US7334187B1 (en) 2003-08-06 2008-02-19 Microsoft Corporation Electronic form aggregation
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US7318063B2 (en) * 2004-02-19 2008-01-08 Microsoft Corporation Managing XML documents containing hierarchical database information
US7231632B2 (en) * 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7496837B1 (en) * 2004-04-29 2009-02-24 Microsoft Corporation Structural editing with schema awareness
US7281018B1 (en) 2004-05-26 2007-10-09 Microsoft Corporation Form template data source change
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8302020B2 (en) * 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US8453065B2 (en) * 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US7761800B2 (en) * 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US8566732B2 (en) * 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US7546543B2 (en) 2004-06-25 2009-06-09 Apple Inc. Widget authoring and editing environment
US20060074933A1 (en) * 2004-09-30 2006-04-06 Microsoft Corporation Workflow interaction
US7692636B2 (en) * 2004-09-30 2010-04-06 Microsoft Corporation Systems and methods for handwriting to a screen
US7516399B2 (en) * 2004-09-30 2009-04-07 Microsoft Corporation Structured-document path-language expression methods and systems
US20060107224A1 (en) * 2004-11-15 2006-05-18 Microsoft Corporation Building a dynamic action for an electronic form
US7712022B2 (en) 2004-11-15 2010-05-04 Microsoft Corporation Mutually exclusive options in electronic forms
US7721190B2 (en) * 2004-11-16 2010-05-18 Microsoft Corporation Methods and systems for server side form processing
US7904801B2 (en) * 2004-12-15 2011-03-08 Microsoft Corporation Recursive sections in electronic forms
US7437376B2 (en) * 2004-12-20 2008-10-14 Microsoft Corporation Scalable object model
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
US7937651B2 (en) * 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US7725834B2 (en) 2005-03-04 2010-05-25 Microsoft Corporation Designer-created aspect for an electronic form template
US7673228B2 (en) * 2005-03-30 2010-03-02 Microsoft Corporation Data-driven actions for network forms
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US7701463B2 (en) * 2005-05-09 2010-04-20 Autodesk, Inc. Accelerated rendering of images with transparent pixels using a spatial index
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7543228B2 (en) * 2005-06-27 2009-06-02 Microsoft Corporation Template for rendering an electronic form
US8200975B2 (en) * 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US7613996B2 (en) * 2005-08-15 2009-11-03 Microsoft Corporation Enabling selection of an inferred schema part
US20070061706A1 (en) * 2005-09-14 2007-03-15 Microsoft Corporation Mapping property hierarchies to schemas
US20070061467A1 (en) * 2005-09-15 2007-03-15 Microsoft Corporation Sessions and session states
US7484173B2 (en) * 2005-10-18 2009-01-27 International Business Machines Corporation Alternative key pad layout for enhanced security
US20070101279A1 (en) * 2005-10-27 2007-05-03 Chaudhri Imran A Selection of user interface elements for unified display in a display environment
US7752556B2 (en) * 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7743336B2 (en) * 2005-10-27 2010-06-22 Apple Inc. Widget security
US8543824B2 (en) * 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7954064B2 (en) * 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US9104294B2 (en) * 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US8001459B2 (en) * 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US20070162850A1 (en) * 2006-01-06 2007-07-12 Darin Adler Sports-related widgets
US7561156B2 (en) * 2006-02-08 2009-07-14 INOVO Limited Adaptive quadtree-based scalable surface rendering
US8155682B2 (en) * 2006-05-05 2012-04-10 Research In Motion Limited Handheld electronic device including automatic mobile phone number management, and associated method
US8869027B2 (en) * 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US8656381B2 (en) * 2006-12-07 2014-02-18 International Business Machines Corporation Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations
US20080168367A1 (en) * 2007-01-07 2008-07-10 Chaudhri Imran A Dashboards, Widgets and Devices
US20090005071A1 (en) * 2007-06-28 2009-01-01 Apple Inc. Event Triggered Content Presentation
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US20090021486A1 (en) * 2007-07-19 2009-01-22 Apple Inc. Dashboard Surfaces
US8667415B2 (en) * 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8156467B2 (en) * 2007-08-27 2012-04-10 Adobe Systems Incorporated Reusing components in a running application
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
JP2010109967A (ja) 2008-10-01 2010-05-13 Canon Inc 画像処理装置、方法、及び、プログラム
US10169894B2 (en) 2016-10-06 2019-01-01 International Business Machines Corporation Rebuilding images based on historical image data
US10424084B2 (en) * 2017-04-28 2019-09-24 Adobe Inc. Digital content rendering that supports alpha is shape (AIS) as part of knockout groups

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3126390A1 (de) 1981-07-03 1983-01-13 Bayer Ag, 5090 Leverkusen S-azolyl-methyl-di(tri)-thiophosphorsaeureester, verfahren zu ihrer herstellung und ihre verwendung als schaedlingsbekaempfungsmittel
FR2625345A1 (fr) * 1987-12-24 1989-06-30 Thomson Cgr Procede de visualisation en trois dimensions d'objets codes numeriquement sous forme arborescente et dispositif de mise en oeuvre
US5295236A (en) * 1991-03-04 1994-03-15 Aldus Corporation Applying traps to a printed page specified in a page description language format
EP0528631B1 (de) 1991-08-13 1998-05-20 Xerox Corporation Elektronische Bilderzeugung
US5274718A (en) * 1991-09-30 1993-12-28 At&T Bell Laboratories Image representation using tree-like structures
CA2097232C (en) * 1993-05-28 1999-01-19 Phillip J. Beaudet Displaying partial graphs by expanding and collapsing nodes
US5579455A (en) * 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
AU695334B2 (en) * 1994-07-25 1998-08-13 Canon Kabushiki Kaisha Efficient methods for the compositing of graphical elements
AUPM704494A0 (en) * 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the interpretation of a graphical programming language
AUPM704194A0 (en) 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the evaluation of a graphical programming language
AUPM704394A0 (en) * 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Optimization method for the efficient production of images
AUPM704594A0 (en) * 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the compositing of graphical elements
EP0984396A3 (de) * 1998-09-03 2003-08-20 Canon Kabushiki Kaisha Anordnung und verfahren zum Optimieren der Bildzusammensetzung
US7292255B2 (en) * 2000-05-31 2007-11-06 Canon Kabushiki Kaisha Image data acquisition optimisation
US9646107B2 (en) * 2004-05-28 2017-05-09 Robert T. and Virginia T. Jenkins as Trustee of the Jenkins Family Trust Method and/or system for simplifying tree expressions such as for query reduction

Also Published As

Publication number Publication date
JPH1055427A (ja) 1998-02-24
EP0809213A2 (de) 1997-11-26
US6191797B1 (en) 2001-02-20
DE69731425D1 (de) 2004-12-09
EP0809213A3 (de) 1998-12-23
AUPO002196A0 (en) 1996-06-13
AU2355497A (en) 1997-11-27
JP3996975B2 (ja) 2007-10-24
AU721780B2 (en) 2000-07-13
USRE42847E1 (en) 2011-10-18
EP0809213B1 (de) 2004-11-03

Similar Documents

Publication Publication Date Title
DE69731425T2 (de) Verfahren und Apparatus zur Optimierung des Expressionsbaumes zur Darstellung von Bildern
DE69534558T2 (de) Effizientes Verfahren, Gerät und Rechnerprogramm zur Auswertung graphischer Programmiersprache
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE3335162C2 (de) Vorrichtung und Verfahren für graphische Darstellungen mittels Computer
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE69831385T2 (de) Verfahren und Anordnung zum Mischen von graphischen Objekten mit Planarkarten
DE60008520T2 (de) Darstellung von durchsichtigen schichten
DE3729023C2 (de) Bildbearbeitungsgerät
DE69434370T2 (de) Strukturiertes Bildformat zur Beschreibung eines Komplexfarbrasterbilds
DE3411939C2 (de)
EP1238364B1 (de) Verfahren zur verarbeitung von datenstrukturen
DE69919497T2 (de) Verfahren und Gerät zur Volumendarstellung mit mehreren Tiefenpuffern
DE3722444C2 (de) Verfahren und Vorrichtung zum Erzeugen von Entwurfsmusterdaten
DE69629447T2 (de) Benutzerinteraktion bei Bildern mit strukturiertem Bildformat
DE102016007215B4 (de) Kontrollieren der Glattheit eines Übergangs zwischen Bildern
DE102019006149A1 (de) Begrenzungsbewusste Objektentfernung und Contentfüllung
DE19713654B4 (de) Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben
DE60008867T2 (de) Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
DE102008050449A1 (de) Clipping Geometrien beim Raycasting
DE102007050615B4 (de) Brick-basierter Fusionsrenderer
DE60100806T2 (de) Abbildung von volumendaten
DE19807013A1 (de) Volumetrisches Vorabschneidungsverfahren, das eine minimale Anzahl von Abtastpunkten durch ein Volumen gewährleistet
DE112021000371T5 (de) Digitale bildbearbeitung
DE102010028668B4 (de) Verfahren zur räumlichen Darstellung
DE60024117T2 (de) Tiefenbasierte mischung mit 3d aufrasterungsgerät

Legal Events

Date Code Title Description
8364 No opposition during term of opposition