Movatterモバイル変換


[0]ホーム

URL:


USRE42847E1 - Expression tree optimization for processing obscured graphical objects - Google Patents

Expression tree optimization for processing obscured graphical objects
Download PDF

Info

Publication number
USRE42847E1
USRE42847E1US10/368,583US36858303AUSRE42847EUS RE42847 E1USRE42847 E1US RE42847E1US 36858303 AUS36858303 AUS 36858303AUS RE42847 EUSRE42847 EUS RE42847E
Authority
US
United States
Prior art keywords
node
operator
region
parent node
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
US10/368,583
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 IncfiledCriticalCanon Inc
Priority to US10/368,583priorityCriticalpatent/USRE42847E1/en
Application grantedgrantedCritical
Publication of USRE42847E1publicationCriticalpatent/USRE42847E1/en
Anticipated expirationlegal-statusCritical
Expired - Lifetimelegal-statusCriticalCurrent

Links

Images

Classifications

Definitions

Landscapes

Abstract

The present invention relates to a method, apparatus and system for optimizing an expression tree (101,902,1102) for compositing an image. Such an expression tree (101,902, 1102) can comprise at least two nodes. Each node is either a graphical element (102,104) or image compositing operator ((103,104) and has a region of the image represented by the node (102,103,104). In the method, for at least one node in the tree, several steps are carried out. The region represented by the node (103,104) is compared to a region representation data structure, which is preferably a quadtree representation, corresponding to one or more regions represented by at least one other node. A determination is then made if the region represented by the node (102,103,104) is totally or partially obscured by the one or more regions. If the region represented by the node is at least partially or totally obscured, the expression tree (101,902,1102) is modified. Modifying the expression tree (101,902,1102) involves applying a clipping operator (58,59) to the node if the region represented by the node is partially obscured. If the node is totally obscured, either removing the node if the node is a graphical element (102, 104) or applying a predetermined set of node replacement rules in accordance with the image compositing operator if the node (103) is a image compositing operator.

Description

This application is a reissue of U.S. Pat. No. 6,191,797, which issued from application Ser. No. 08/861,063 filed May 21, 1997.
FIELD OF THE INVENTION
The present invention relates to the creation of computer-generated images both in the form of still pictures and video imagery, and, in particular, relates to a process, apparatus, and system for creating an image made up by compositing multiple components.
BACKGROUND
Computer generated images are typically made up of many differing components or graphical elements which are rendered and composited together to create a final image. In recent times, an “opacity channel” (also known as a “matte”, an “alpha channel”, or simply “opacity”) has been commonly used. The opacity channel contains information regarding the transparent nature of each element. The opacity channel is stored alongside each instance of a colour, so that, for example, a pixel-based image with opacity stores an opacity value as part of the representation of each pixel. An element without explicit opacity channel information is typically understood to be fully opaque within some defined bounds of the element, and assumed to be completely transparent outside those bounds.
An expression tree offers a systematic means of representation for rendering objects or elements of an image. Expression trees comprise a plurality of nodes including leaf nodes, internal nodes and a root node. A leaf node, being the outer most node of an expression tree, has no descendent nodes and consists of one or more graphical elements. An internal node typically branches to left and right subtrees, wherein each subtree is itself an expression tree comprising at least one leaf node. The internal nodes of an expression tree are compositing operators, which treat the left and right subtrees as operands of the operator. The first node of the expression tree is commonly referred to as a root node. The root node of an expression tree represents the final image, and each node of the tree represents a portion of the final image.
Although a graphical element may of itself be of a certain size, it need not be entirely visible in a final image, or only a portion of the element may have an effect on the final image. For example, assume an image of a certain size is to be displayed on a display. However, if the image is positioned so that only the top left corner of the image is displayed by the display device, the remainder of the image is not displayed. The final image as displayed on the display device thus comprises the visible portion of the image, and the invisible portion in such a case need not be rendered.
Another way in which only a portion of an element may have an effect is when the portion is obscured by another element. For example, a final image to be displayed (or rendered) may comprise one or more opaque graphical elements, sonic of which obscure other graphical elements. Hence, the obscured elements have no effect on the final image.
If an element, or parts of elements, that have no effect on true final image can be identified, those elements (or parts) need not be rendered, thereby saving considerable time and possibly memory.
Problems arise with prior art methods, at least for images where overlaps occur, because these methods do not easily cope with transparent graphical objects, nor do they handle the full range of compositing operators. It is therefore desirable to at least ameliorate one or more of those problems.
SUMMARY
In accordance with one aspect of the present invention, there is provided a method of optimising an expression tree for compositing an image, the expression tree comprising graphical elements and graphical operators, each node in the tree being either a graphical element or a graphical operator and having a region of the image represented by the node, the method comprising, for at least one node in the tree:
    • comparing the region represented by the node to a region representation data structure corresponding to one or more regions represented by at least one other node;
    • determining if the region represented by the node is totally or partially obscured by the one or more regions; and
    • modifying the expression tree in the event that the region represented by the node is partially or totally obscured.
In accordance with another aspect of the present invention, there is provided a method of optimising an expression tree for compositing an image, the expression tree comprising a node being either a graphical element or a graphical operator and having a region of the image represented by the node, the method comprising the steps of:
    • traversing the expression tree node by node;
    • determining at a current node if a region of the image represented at the node is obscured by regions represented by at least one other node, and modifying the expression tree in the event that the current node is partially or totally obscured.
In accordance with yet another aspect of the present invention there is provided a method of optimising an expression tree for compositing an image, the expression tree comprising a node being either a graphical element or a graphical operator and having a region of the image represented by the node, the method comprising the steps of:
    • traversing the expression tree node by node and at each current node comprising a graphical operator applying the sub-steps of:
      • (i) receiving a first region representation from a parent node;
      • (ii) passing to a first operand of the graphical operator a modified first region representation in accordance with a first predetermined modification rule for the operator;
      • (iii) returning to the graphical operator a second region representation of regions obscured by a sub-tree associated with the first operand;
      • (iv) passing to a second operant of the graphical operator a modified second region representation in accordance with a second predetermined modification rule for the operator;
      • (v) returning to the graphical operator a third region representation of regions obscured by a sub-tree associated with the second operand; and
      • (vi) determining, in accordance with a set rule for the graphical operator, a final region representation to be returned to the parent node.
BRIEF DESCRIPTION OF THE DRAWINGS
A preferred embodiment of the present invention is hereinafter described with reference to the accompanying drawings and the Appendix, in which:
FIG. 1 schematically illustrates various compositing operations;
FIGS. 2A to 2D illustrate an example of applying a clipping operator in accordance with an embodiment of the present invention;
FIG. 3 illustrates an example of rendered image composed of simple graphical objects;
FIG. 4 illustrates an image expression tree which represents the composition of the simple graphical objects to compose or render the image ofFIG. 3;
FIG. 5 shows a simplified image expression tree of the image expression tree ofFIG. 4 in accordance to an embodiment of the present invention;
FIG. 6 illustrates another example of a rendered image composed of simple graphical objects;
FIG. 7 shows an image expression tree which represents the composition of graphical objects to compose or render the image ofFIG. 6;
FIG. 8 illustrates a simplified expression tree for composing the image ofFIG. 6 in accordance with the embodiment of the present invention;
FIG. 9 is a high-level flow diagram providing an overview of the process of optimising an expression tree used to composite an image in accordance with the preferred embodiment;
FIG. 10 is a detailed flow diagram illustrating modification of the expression tree in accordance withstep912 ofFIG. 9;
FIG. 11 is a further detailed flow diagram of optimising the expression tree; and
FIG. 12 is a block diagram of a conventional general-purpose computer that can he used to implement the embodiments of the invention.
The Appendix contains pseudo-code routines suitable for computer implementation of the preferred embodiment.
DETAILED DESCRIPTION
In the following description of the preferred embodiment, it is assumed that an image composition expression tree, as herein described, has been determined for an image to be rendered.
Preferably, image region representations are hierarchical data structures suitable for representing a region or portion of an image and typically used in image processing. One such image region representation is known to those skilled in the art as “quadtrees”. Other forms of image region representations can serve the same purpose. For the sake of simplicity, an image region representation is hereinafter referred to as a quadtree.
Typically, the creation of a quadtree representing a region of an image requires the sub-division of the region into a plurality of cells, each cell being a portion of the region, and each cell represented by a node of the quadtree. Hence, increasing the number of subdivisions of a region of an image correspondingly increases the number of nodes of the quadtree, thereby increasing the depth of the quadtree and the resolution of the region represented by the quadtree.
Compositing Operations
Compositing operations include13 main compositing operations; for combining two portions of a single image. The function of each of those compositing operations is set our in Table 1, where Dc is a premultiplied destination or resultant color, Do is a destination or resultant alpha (α) channel value, Ac is a premultiplied pixel color of a first portion of a first source A, Ao is an a value corresponding to the pixel having the color Ac, Bc is a premultiplied pixel color value of a portion of an image of a second source B, and Bo is the α channel value of the pixel corresponding to Bc of the source B.
TABLE 1
Compositing Operations
OPERATIONEQUATION
clearDc = 0
Do = 0
ADc = Ac
Do = Ao
BDc = Bc
Do = Bo
A over BDc = Ac + Bc (1 − Ao)
Do = Ao + Bo (1 − Ao)
A rover BDc = Ac (1 − Bo) + Bc (Reverse case of A over B)
Do = Ao (1 − Bo) + Bo
A in BDc = AcBo
Do = AoBo
A rin BDc = AoBc (Reverse case of A in B)
Do = AoBc
A out BDc = Ac (1 − Bo)
Do = Ao (1 − Bo)
A rout BDc = Bc (1 − Ao) (Reverse case of A out B)
Do = Bo (1 − Ao)
A atop BDc = AcBo + Bc (1 − Ao)
Do = AoBo + Bo (1 − Ao)
A ratop BDc = Ac (1 − Bo) + BcAo
Do = Ao (1 − Bo) + BoAo
A Xor BDc = Ac (1 − Bo) + Bc (1 − Ao)
Do = Ao (1 − Bo) + Bo (1 − Ao)
A plusW BDc = Ac + Bc (with Dc “wrap around”)
Do = Ao + Bo (with Do “wrap around”)
A plusC BDc = Ac + Bc (with Dc “clamped”)
Do = Ao + Bo (with Do “clamped”)
Table 1 specifically shows various compositing methods for combining two different images together utilising different operators. Additional operators are also possible. The additional operators may be utilized to implement special effects.
The “wrap around” nature of the “plusW” operator means that when, for example, the addition of Ac+Bc is greater than a maximum value of a color component, the value is “wrapped around” to start again with reference to the minimum value in the color space. Alternatively, the process of “clamping” utilized by “plusC” involves clamping the addition of, for example, Ac+Bc to the maximum value of a color component when the addition is greater than this component.
FIG. 1 illustrates several examples of the final image created when various operations (as set out in Table 1) are utilized in the compositing of two fully opaque circles A and B. The operators “rover”, “rin”, “rout” and “ratop” are equivalent to the swapping of the operands to the “r” (reverse) operator and applying the corresponding operator “over”, “in”, “out” and “atop” respectively.
In the preferred embodiment, an expression tree can contain a variety of node types including binary compositing operators, unary operators and primitives. Unary operators typically include colour transformations, image convolutions, affine transformations and image warping. Primitives typically include graphical elements like pixel-based images, spline-based paths, text, “all” (“all” is a graphical element which spans the size of the entire image being created), edge blends, boxes or the like.
Binary Compositing Operators
Table 2 lists a set of binary compositing operators and the action to be performed when those operators are treated when simplifying an expression tree.
TABLE 2
Pass toPass toIf leftIf right
leftrightoperandoperand
OperatoroperandoperandReturnvanishesvanishes
overq0q0∪ qLqL∪ qRRL
inq0q0qL∩ qRVV
ratopq0q0qLVL
outq0∪ qRq0qL− B(right)VL
(apply to right
operand first)
outq0q0qL− B(right)VL
(apply to left
operand first)
plusCq0q0qL∪ qRRL
plusW, Xorq0q0(qL− B(right)) ∪RL
( qR− B(left))
At a node of an expression tree represented by an operator, typically a region representation, such as a quadtree, is passed to each operand during the process of simplifying the expression tree. At the node comparing the operator, an action is to be taken as to whether a sub-tree branching off the node is to vainisih (i e , branches need to he pruned) or a quadtree corresponding to the unobscured portions of graphical elements is to be returned from this node for possible further processing at other nodes.
The following notation is used in Table 2:
q0the quadtree passed to the node:
qL, qRthe quadtree returned by the left and right subtrees and
corresponding to the left and right operand of an operator
from Table 2;
q1∩ q2
q1∪ q2 {close oversize brace}quadtree set operations; and
q1− q2
B (node)a quadtree completely containing the node's
bounding box.
In the last two columns of Table 2, typical replacement rules are specified, where “L” means replace a current node with the left sub-tree branching off the current node, “R” means replace a current node with the right sub-tree branching off the current node, and “V” means that the current node vanishes. A node that is to “vanish” implies that the region of the image represented by the node is obscured by other graphical elements. Hence, the node has no effect on the final image. If both operands vanish, the current node also vanishes.
Reverse operators can be substituted for the operators described in Table 2. The “over” operator, described as “A over B” implies graphical element “A” is over graphical element “B”. For example, the can he substituted by a reverse operator of the “over” operator, typically denoted as “rover” (reverse over), so that “B rover A” results in a composite of graphical element “A” and “B” equivalent to “A over B”.
Examples of Binary Compositing Operators
As an illustrative example, consider the (first) operator in the first row of the “Operator” column of Table 2 (i.e., the “over” operator). At a current node of an expression tree represented by an “over” operator, a parent node passes a quadtree q0to the current node. Following the action under the heading “Pass to left operand” (column 2 of Table 2), the quadtree q0is passed to the left operand, which is the left sub-tree or branch at the current node.
The quadtree q0is used to process the left operand, and a quadtree qLis returned as the obscuring area of the left operand. From “Pass to right operand” (column 3 of Table 2), the action to be take at the current node is to pass down, as the right operand a union of the parent node, quadtree q0, and the now returned, left-operand quadtree qL. The quadtree resulting from this union (q0∪qL) is used to process the right operand. A quadtree qRis returned to the current node as the obscuring area of the right operand. The current node then returns the union (qL∪qR) of the left operand qLand the right operand qRto the parent node (see “return” in column 4 of Table 2).
If the region represented by the left operand is found to be completely obscured by the quadtree q0passed down to the left operand, the action “if left operand vanishes” of column 5 of Table 2 is to replace the current node with the right (“R”) sub-tree, or right operand. This is desirable because changing the tree by replacing the current node with its right operand does not change the rendered image, but improves the time taken to render the image. Similarly, if the region represented by the right operand is found to be completely obscured by the quadtree (q0∪qL) passed down to the right operand, the action “if right operand vanishes” of column 6 of Table 2 is to replace the current node with the left (“L”) sub-tree.
Unary Operators
The treatment of unary operators when simplifying an expression tree depends on the type of operation:
    • (a) In colour transformation, the quadtree q0is passed down to the operand of the colour transformation operator. If the transformation preserves opaqueness (i.e. opaque pixels remain opaque after transformation), the quadtree returned from the operand is returned by the unary operator. In other words, the operand obscures that which the result of the colour transformation obscures. If the transformation does not preserve opaqueness, the unary operator returns an empty quadtree, because the region that the unary operation obscures cannot be determined. If the operand vanishes, the unary operator vanishes, unless invisibility (zero opacity) is not preserved. If invisibility is not preserved, the sub-tree having the unary operator as its root is replaced by an appropriate “all” graphical element.
    • (b) Affine transformations and image warps do not preserve geometry between the quadtree and the primitives. If the unary operator is obscured by quadtree q0, it vanishes. Otherwise, traversal is restarted at the operand of the affine transformation or image warp operator, passing an empty quadtree as the obscuring region. An empty quadtree is returned by the operator unless the quadtree returned by its operand can be easily transformed.
    • (c) Image convolution: If the unary operator is obscured by quadtree q0, it vanishes. Otherwise, traversal is restarted at the operand of the image convolution. passing an empty quadtree as the obscuring region. An empty quadtree is returned by such an operator because the blurring induced by the operator makes it difficult to use any quadtree returned by its operand. However, if the image convolution operator does not alter opacity, the quadtree returned by the operator's operand can be in turn returned by the operator of the image convolution to its parent node.
Optimising Expression Tree
In the preferred embodiment, an image composition expression tree (hereinafter “expression tree”) of an image to be rendered is traversed, preferably in a depth-first fashion. Each node of the expression tree receives from its parent node a region representation of one or more areas of the image. The region representation is compared to the region represented at the node to determine if the region represented by that node is obscured.
A node in which the region represented by the node is totally obscured is removed from the expression tree with an appropriate simplification of tile expression tree, as hereinafter described. In the event that the region represented by the node is only partially obscured, a clipping operator is applied to the region represented by the node to clip the region of the image represented at the node to discard the obscured portions of the image. For example, if the region represented by a node is totally obscured by one or more regions represented by other nodes of the expression tree, the node is removed from the expression tree in such a way that a graphical operation or a graphical element at the node need not be executed or rendered, whichever the case may be.
If a node is partly obscured by one or more regions represented by other nodes in the expression tree, a clipping operator is applied to the node in such a way that, when executing a compositing operator, substantially unobscured regions of the image represented at the node are in the resultant composite of the region of the node. When an image is composited and subsequently rendered from an expression tree comprising nodes clipped by a clipping operator, substantially those portions of the graphical elements that are unobscured by other graphical elements of the image are reproduced or rendered.
Applying a clipping operator to a node can, in its simplest form, result in the cropping of the graphical elements represented at the descendent nodes to substantially those portions of the graphical elements that are unobscured. However, applying a clipping operator to a node is not limited thereto. Applying a clipping operator to a node of an expression tree having a compositing operation at that node can result in a different combination of compositing operators, having an effect on the node as if the region represented is cropped to its unobscured portion.
The process of compositing anexpression tree101 shown inFIG. 2A is now described with reference toFIGS. 2B to 2D. As depicted inFIG. 2B, anarrow102 is rotated 30° in a clockwise direction, and the “in” operator is executed in conjunction with anopaque box104 to result in a portion of the rotatedarrow105 that lies within thebox104. This can be achieved by applying a clipping operator to the arrow rotated 30° clockwise to crop the rotated arrow to the boundaries oftile box104.
Alternatively, as shown inFIG. 2C, the application of a different combination of operators can result in substantially the samefinal image result105. Thebox104 is rotated counter-clockwise 30° , and thearrow102 is clipped to thebox104. Theresultant image107 is rotated clockwise 30° to achieve afinal image result105. However, as shown inFIG. 2D, this is not the same as cropping thearrow102 to thebox104, and then applying a clockwise rotation of 30°, to obtain a finalcomposite image106. In this manner, the application of a clipping operator to a node can result in a different combination of compositing operators.
If a region of the image represented by a node has been determined to be unobscured or only partially obscured, the node passes the region representation that the node received from a parent node, to each of its descendant nodes in turn. The same process occurs at each descendant node with the net effect that each descendant node passes back to its parent node either an image representation of tae areas of the image obscured by the region represented at the descendant node, or an indication that the descendant node is totally obscured.
After the descendants of a node have been processed, the region representations returned from the descendants are utilized to derive a region representation of the regions of the image that are obscured by the node. This result is returned to the node's parent.
In the preferred embodiment, the traversal of the expression tree to simplify the tree is initiated at the root of the tree in a “depth-first fashion”, known to those skilled in the art. Preferably, when traversing an expression tree in a depth-first fashion, the path leading down the left branch, at any node, is given priority and this path down the tree to a descendent node is taken first. When no further left ranch paths are available at a current node, processing returns to the previous node and a path heading down a right branch of this node is taken. An expression tree is traversed in this manner until all nodes of the expression tree have been visited.
Flow Diagrams of Optimising An Expression Tree
FIG. 9 is a high-level flow diagram providing an overview of the process of optimising anexpression tree902 used to composite an image in accordance with the preferred embodiment. Theexpression tree902 includes at least two nodes, and each node is either a graphical element or a graphical operator. Preferably, the graphical operators are image compositing operators. Further, a region of the image is represented by the node. Theexpression tree902 can be traversed node by node.Control block904 is preferably a for-loop control structure for processing each node of theexpression tree902, which is provided as input. When theentire expression tree902 has been processed (indicated by “done”), processing stops atstep914. Otherwise processing continues atstep906.
Instep906, one of the remaining nodes is selected as the current node. Instep908, the region represented by the node is compared to a region representation data structure corresponding to one or more regions represented by at least one other node. The region representation is preferably of the form of a hierarchical data structure, and still further may be a quadtree representation. Indecision block910, a check is made to determine if the region represented by the node is obscured, either totally or partially, by one of the regions. Ifdecision block910 returns false (no), processing continues atcontrol step904. Otherwise, ifdecision block910 returns true (yes), processing continues atstep912. Instep912, the expression tree is modified. The modification may include removing the current node or replacing the current node with another node of the expression tree. It may further include clipping, or marking for clipping at a later time, the region represented by the current node. Processing then continues atcontrol step904.
FIG. 10 is a more detailed flow diagram illustrating steps for modifying the expression tree in accordance withstep912 ofFIG. 9. Processing starts instep1002, and instep1004, a check is made to determine if the region represented by the current node is totally or partially obscured. Ifdecision block1004 determines that the region is partially obscured, processing continues atstep1012. Instep1012, a clipping operator is applied to the node and then the process returns atstep1014. Otherwise, ifdecision block1004 determines that the region is totally obscured, processing continues atdecision block1006.
Indecision block1006, a check is made to determine if the current node is a graphical element or a graphical operator. Ifdecision block1006 determines that the node is a graphical element, processing continues atstep1008. Instep1008, the node is removed from the expression tree and processing returns to the calling procedure instep1014. Otherwise, ifdecision block1006 determines that the node is a graphical operator, processing continues atstep1010. Instep1010, a predetermined set of node replacement rules is applied in accordance with the graphical operator.
The predetermined set of node replacement rules (not shown inFIGS. 9 and 10) may include one or more of the following rules:
    • if the parent node is an “over” graphical operator and the current node is at a left branch of the parent node, replace the parent node with a right subtree of the parent node;
    • if the parent node is an “over” graphic operator and the current node is at a right branch of the parent node, replace the parent node with a left subtree of the parent node;
    • if the parent node is an “in” graphical operator, remove the parent node and any subtree branching off the parent node;
    • if the parent node is a “ratop” graphical operator and the current node is at a left branch of the parent node, removing the parent node and any subtree branching off the parent node;
    • if the parent node is a “ratop” graphical operator and the current node is at a right branch of the parent node, replace the parent node with a left subtree of the parent node;
    • if the parent node is an “out” graphical operator and the current node is at a left branch of the parent node, remove the parent node and any subtree branching off the parent node.
    • if the parent node is an “out” graphical operator and the current node is at a right branch of the parent node, replace the parent node with a left subtree of the parent node;
    • if the parent node is a “plusC” graphical operator and the current node is at a left branch of the parent node, replace the parent node with a right subtree of the parent node;
    • if the parent node is an “plusC” graphical operator and the current node is at a right branch of the parent node, replace the parent node with a left subtree of the parent node;
    • if the parent node is a “plusW” or an “Xor” graphical operator and the current node is at a left branch of the parent node, replace the parent node with a right subtree of the parent node; and
    • if the parent node is an “plusW” or an “Xor” graphical operator and the current node is at a right branch of the parent node, replace the parent node with a left subtree of the parent node.
FIG. 11 provides a detailed flow diagram of a process of optimising anexpression tree1102 according to another embodiment. The expression tree has a number of nodes, each of which can be either a graphical element or a graphical operator and represents a legion of the image.Control block1104 is preferably a for-loop control structure for processing each node of theexpression tree1102, which is provided as input. The expression tree is traversed node by node. At each current node comprising a graphical operator, steps1108 to1120 are applied, as described hereinafter. When theentire expression tree1102 leas been processed (indicated by “done”), preferably in a depth-first manner, processing stops atstep1106. Otherwise processing continues atstep1108.
Instep1108, one of the remaining nodes is selected as the current node. Instep1110, a first region representation is received from a parent node. Instep1112, a modified first region representation passes to a first operand of the graphical operator in accordance with a first predetermined modification rule for that operator. Instep1114, a second region representation of regions obscured by a sub-tree of the first operand is determined and it is returned to the graphical operator. Instep1116, a modified second region representation passes to a second operand of the graphical operator in accordance with a second predetermined modification rule for the operator.
Instep1118, a third region representation of regions obscured by a sub-tree associated with the second operand is returned to the graphical operator. Instep1120, a final region representation is determined in accordance with a set rule for the graphical operator and is returned to a parent node of the current node. Preferably, the set rule is selected from the group consisting of:
    • (A) where the graphic operator is an “over” or a “plusC” operator, the final region representation is determined from a union of the second region representation and the third region representation;
    • (B) where the graphic operator is an “in” operator, the final region representation is determined from an intersection of the second region representation and the third region representation;
    • (C) where the graphic operator is an “ratop” operator, the final region representation is the second region representation;
    • (D) where the graphic operator is an “out” operator, the final region representation is determined from a difference of the second region representation and a region representation comprising at least a region represented by a bounding box of a node at a right subtree of the current node; and
    • (E) where the graphic operator is an “Xor” or a “plusW” operator, the final region representation is determined from a union of the second region representation less a region representation comprising at least a region represented by a bounding box of a node at a right subtree of the current node and the third region representation less a region representation containing a bounding box of a node at a right subtree of the current node.
The first predetermined modification rule preferably is to pass substantially tile first region representation as the modified first region representation if the graphical operator is an “over”, “in”, “ratop”, “plusC”, “plusW”, “Xor”, “out” (visit left operand first)” or a like operator. If the graphical operator is an “out (visit right operand first)” operation, it involves passing as the modified first region representation a union of the first region representation with the second region representation.
Further, the second predetermined modification rule is to pass substantially the first region representation as the modified second region representation if the graphical operator is an “in”, “ratop”, “out”, “plusC”, “plusW”, “Xor” or like operators. If the graphical operator is an “over” operator, it involves passing as the modified second region representation a union of the first region representation with the second region representation.
Preferably, the image representation is not created at a node, or returned to a parent node of the node, unless the image representation is subsequently utilised, or if the node is the right operand of an “over” operator and the “over” operator node does not need to return an image representation to its parent node. Likewise, the image representation is not created at a node or returned if the node is the left or the right operand of an “in”, “plusC”, “plusW” or “Xor” operator and the operator node does not need to return an image representation to its parent node. Still further, the image representation may not be created at a node or returned to the parent node if the node is the left operand of an “out” or “ratop” operator and does not need to return an image representation to its parent node. The image representation may not be created at a node or returned if the node is the right operand of a “ratop” operator, the root of the expression tree, the operand of an image warp, affine transformation or convolution operator, the operand of a colour transformation that does not preserve opaqueness, or if the transformation node does not need to return an image representation to its parent node.
Further aspects of the preferred embodiment are set forth in detail in the Appendix forming part of the description. In particular, the Appendix contains pseudocode listings for implementing the method according to the preferred embodiment. In this connection, the preferred embodiment is preferably implemented as computer software, capable of being stored on recording media, that can be carried out as a process executing on a computing device, such as a general purpose computer.
The embodiments of the invention can preferably be practiced using a conventional general-purpose computer, such as the one shown inFIG. 12, for performing processes including those ofFIGS. 9 to 11, as well as the pseudocode contained in the Appendix. In particular, the steps of the method of optimising the expression trees are effected by instructions in the software that are carried out by the computer. The computer system1200 consists of the computer1202, a video display1216, and input devices1218,1220. In addition, the computer1200 system can have any of a number of other output devices including line printers, laser printers, plotters, and other reproduction devices connected to the computer1202. The computer system1200 can be connected to one or more other computers using an appropriate communication channel such as a modem communications path, a computer network, or the like.
The computer1202 itself consists of a central processing unit(s) (simply referred to as a processor hereinafter)1204, a memory1206 which can include random access memory (RAM) and read-only memory (ROM), an input/output (IO) interface1208, a video interface1210, and one or more storage devices generally represented by a block1212 inFIG. 12. The storage device(s)1212 can consist of one or more of the following: a floppy disc, a hard disc drive, a magneto-optical disc drive, CD-ROM or any other of a number of non-volatile storage devices well known to those skilled in the art. Each of the components1204 to1212 is typically connected to one or more of the other devices via a bus1214 that in turn can consist of data, address, and control buses.
The video interface1210 is connected to the video display1216 aid provides video signals from the computer1202 for display on the video display1216. User input to operate the computer1202 can be provided by one or more input devices. For example, a operator can use the keyboard1218 and/or a pointing device such as the muse1220 to provide input to the computer1202. Exemplary computers on which the embodiment can be practiced include IBM-PC/ATs and compatibles, and Sun SparcStations.
FIRST EXAMPLE
FIG. 3 illustrates an image10 comprising a number of graphical elements. The graphical elements include an opaque image A referred to assub-image11, acircle12 referred to as circle B that is obscured by the sub-image11, and the text “hello”13 optionally referred to as text “C”. A dottedline14 shows the extent of the image10, and represents an empty foreground region having nothing therein to obscure the image10.
FIG. 4 shows anexpression tree20 that represents the composition of the image ofFIG. 3. An example of simplifying the expression tree ofFIG. 4 is now described. At a root (first node)21 of theexpression tree20, a computer-implemented process passes to thefirst node21 an empty quadtree representative of theempty region14 not obscuring image10 ofFIG. 3 or equivalently having no other nodes above thefirst node21 of theexpression tree20 to obscure it.
Thefirst node21 is a compositing operator (ie, an “over” operator) requiring a left and right operand. The left operand is aleaf node22 representing the sub-image11 ofFIG. 3, and the right operand is returned by asecond node23 of the expression tree which is also an “over” compositing operator.
Following receipt of the empty quadtree at thefirst node21, the process passes the empty quadtree toleaf node22. At theleaf node22, the quadtree is typically compared with the sub-image11 to determine if the sub-image11 is obscured. However, in this example, since the quadtree is an empty quadtree, no direct comparison is necessary to determine the result that the sub-image11 is not (or cannot) be obscured by the empty quadtree.
Comparing a quadtree with a graphical element (eg, the sub-image11) entails a comparison, in which regions of an image represented by the quadtree ate compared with regions of the image covered by the graphical element to determine whether one region obscures another region of the image. The comparison of a quadtree representation of a region of an image with other regions of the image includes comparing the region of the image with the other regions either by direct comparisons of their respective areas, or by comparing equivalent representations or the like.
Sub-image11 represented at theleaf node22 is opaque and therefore can potentially obscure other graphical objects of the image10. A first quadtree representation ofsub-image11 is therefore constructed which includes the bounds of the sub-image11 and is returned to thefirst node21 since no further left or right branches are available at theleaf node22 of the expression tree10. At thefirst node21, the “over” operator performs a union of the quadtree originally passed to that node, being an empty quadtree, and the quadtree representation is returned from the left node, in accordance with the rules set out in Table 2 for the treatment of binary compositing operators.
The union of an empty quadtree with the first quadtree representation of the sub-image11 results in a quadtree equivalent (or substantially identical) to the first quadtree representative and referred to hereinafter as the first left quadtree.
The first left quadtree is forwarded to thesecond node23 of the expression tree10, and is passed following the same manner as described in relation tonode21 to the left branch of the second node to aleaf node24 branching off thesecond node23. Thecircle12 is represented at theleaf node24. Upon forwarding the first left quadtree to theleaf node24, the process compares the first left quadtree (that is an image region represented by the first left quadtree) to the region of the image occupied bycircle12 to result, at least for this example, in a finding that the region of thecircle12 ofFIG. 3 is totally obscured by the region represented by the first left quadtree. The finding that the region of thecircle12 is totally obscured is returned to thesecond node23.
Thesecond node23 typically receives from the leaf node24 a quadtree representative of the portion of image10 obscured bysub-image11 and the circle12 (a region obtained by the union of the sub-image11 and the circle). However, in the present example, since thecircle12 is totally obscured by the sub-image11, a union of the quadtrees forsub-image11 and thecircle12 does not need to be performed.
A quadtree substantially equivalent to the first left quadtree representing the sub-image11 is returned to thesecond node23, where this quadtree is passed to aright leaf node25, branching off thesecond node23. Theright leaf node25 of the expression tree represents a region of image comprising text (“hello”)13.
The text is not obscured by the quadtree (the image region represented by the quadtree) passed down from thesecond node23. Typically, a quadtree representing the region of the image which is obscured by the graphical element at theright leaf node25 is returned to thesecond node23. However, since the text does not obscure a substantial region (area) in this case, an empty quadtree is returned to thesecond node23. A substantial region is preferably defined by a performance issue of the process as hereinafter described.
Thesecond node23 receives the empty quadtree from theright leaf node25. Following the action (shown in Table 2) of an “over” operator at the node when the left operand is obscured, thesecond node23 replaces itself with theright leaf node25 and prunes the left “branch”, which in this example is theleft leaf node24. The quadtree (albeit the empty quadtree) returned to thesecond node23 is passed back to thefirst node21.
At thefirst node21, neither of its descendants are pruned and the action of an “over” operator is to form a union of the quadtrees returned by it to the “over” operator left and right branches. Typically, the result of this union is passed back to the node's21 parent node. However, this step can be optimised out of this example because thefirst node21 is the top-most node of the expression tree (root node). Therefore, the result of the union is not utilised in the optimisation of the expression tree, and the simplified expression tree is illustrated inFIG. 5, where thesecond node23 and theleft leaf node24 have been removed from the expression tree ofFIG. 4. The simplified expression tree ofFIG. 5 can then be used to render the image ofFIG. 3 without the need to render the graphical element, thecircle12 as this graphical element is obscured by the sub-image11.
SECOND EXAMPLE
Another example of simplifying (optimising) an expression tree is now described with reference toFIGS. 6 to 8.FIG. 6 illustrates animage40 comprising several graphical elements, a page “D”41, anopaque sub-image42,text43, and acircle44. A corresponding expression tree for compositing or rendering theimage40 ofFIG. 6 is illustrated inFIG. 7. InFIG. 7, S0 to S14 represents the steps taken in this example of the preferred embodiment to simplify or optimise theexpression tree50.
The following steps S0 to S14 correspond to the action taken by a computer implemented process at each node when simplifying theexpression tree50 ofFIG. 7.
    • S0: An empty quadtree q0is created representing theempty foreground region39 not obscuring theentire image40. This empty quadtree q0is passed to a first node51 (or root node) of theexpression tree50.
    • S1: Thefirst node51 of theexpression tree50 is an “over” operator. The process receives the empty quadtree q0passed to thefirst node51 from the previous step S0 and compares the region of the image represented by the quadtree q0with a region represented by thefirst node51 to determine if the region represented by thefirst node51 is obscured. Since q0is an empty quadtree and cannot obscure the region represented by thefirst node51, the process continues on to the descendant nodes. Firstly, the quadtree q0is passed down the left branch of thenode51 to asecond node52.
    • S2: Thesecond node52, being in this example an “in” operator, receives the empty quadtree q0. The quadtree q0is compared with a region represented by thesecond node52 to determine if this region is obscured by the quadtree q0. The region of thesecond node52 is not obscured by the quadtree q0since the quadtree q0is empty. The process continues in a depth-first fashion and passes the quadtree q0to the left branch of thesecond node52.
    • S3: Athird node53 is a leaf node representing the sub-image42. Thisthird node53 receives the quadtree q0passed down from the S2 step and compares the region of thisnode53 with the region represented by the quadtree q0to determine if the region represented bynode53 is obscured by the quadtree q0. In this example, the quadtree q0is empty and therefore thenode53 is not obscured. However, the image “A” is a graphical element that can potentially obscure other graphical elements. Hence, a quadtree q1that represents the region obscured by the image is created, and passed back to thesecond node52 since no further left branches are available at thethird node53.
    • S4: Thesecond node52 receives back from thethird node53 the quadtree q1and as thesecond node52 is an “in” operator, the quadtree q1is stored in memory as the obscuring region of the left operand of the “in” operator. The obscuring region of the left operand of an operator is denoted herein as qL. Thus, in this example, qL=q1. The action of the process, in accordance with Table 2. is to pass down to aright descendant node54 of thenode52 the quadtree received at thesecond node52 passed down from itsparent node51. In this example, the quadtree q0passed to thesecond node52 from the first node51 (parent node) is sent down the right branch to the rightdescendent node54.
    • S5: The right descendent node54 (fifth node) is again a leaf node and has represented therein the region indicated as thecircle44. The quadtree q0has been passed down from thesecond node52 following step S4, and is compared with the region of the image occupied by thecircle44 to determine if the region represented by the quadtree q0is obscured by thecircle44. Again, the quadtree q0is empty, and thenode54 is therefore not obscured. However, thecircle44 is a graphical element (object) with the potential to obscure graphical elements (objects) which may lie beneath. Hence, a quadtree q2is created representing the region of the image occupied by the circle. The quadtree q2is passed back to thesecond node52 since no further branches are available at thisnode54.
    • S6: Thesecond node52 receives the quadtree q2passed back from its rightdescendent node54, and the quadtree q2is stored as the obscuring region of the right operand of the “in” operator (i.e., qR=q2). The process proceeds in accordance with the action set out in Table 2 for the “in” operator. It passes back to its parent node (ie, the first node51) the intersection of the regions represented by its two operands (ie, the sub-image42 with the region of the circle44). The intersection results in the region represented by the portion of sub-image42 that coincides with the circle44 (ie, the quadtree q2). In this example, this intersection qL∩qR=q1∩q2=q2represents the region in whichnode52 can obscure other graphical elements.
    • S7: Thefirst node51 receives the quadtree q2passed back from thesecond node52. The quadtree q2is stored as the obscuring region of the left operand of the “over” operator (qL=q2). In accordance with Table 2, the action to be performed when descending a right branch of a node having an “over” operator is to pass down the right branch a union (ie, q0∪qL=q0∩q2=q2) of the quadtree q0and the quadtree qLpassed back from thesecond node52. The result of this union (q0∪qL) is a quadtree substantially identical with q2. Hence, the result of this union (the quadtree q2) is passed down the right branch to afifth node55 also representing an “over” operator.
    • S8: The region represented by the quadtree q2passed to thefifth node55 is compared with the region represented at thefifth node55 to determine if the region of thenode55 is obscured by the quadtree q2(region of). The region of the image represented at thefifth node55 is not obscured by the region of the quadtree q2. The quadtree q2is passed down to the left branch descendent of thefifth node55.
    • S9: The left descendent of thefifth node55 is aleaf node56 representing the region of the image ofFIG. 6 illustrating thetext43. Theleaf node56 receives the quadtree q2passed down from thefifth node55 and is compared to the region represented at the leaf node56 (typically, the region of the image ofFIG. 6 occupied by thetext43 is a bounding box comprising text) to determine if the region represented by quadtree q2obscures the region represented atleaf node56. The region represented by the quadtree q2(the region occupied by circle44) partly obscurestext43. Hence, thetext43 is clipped or tagged for clipping at a later stage. Thetext43 is clipped by applying a clipping operator, wherein the clipping operation constructs a “clip” path from the quadtree q2and clips or cuts thetext43 to this path.
At this point, typically, a new quadtree representing the region of the image occupied by the text is created and returned to thefifth node55. However in this embodiment, if a graphical element is too small to substantially obscure other graphical elements of the image (eg, the graphical element text “hello”43 does not substantially obscure other graphical elements even though the bounding box oftext43 represents a substantial region), an empty quadtree is preferably returned rather than expend processing time to achieve a quadtree representation of the region oftext43. Hence, the creation of a new quadtree q3for regions of the image occupied bytext43 is chosen as an empty quadtree. The choice to create an empty quadtree for the region represented bytext43 is an issue of performance of the process that is hereinafter described under the sub-heading “Performance issues”. While a quadtree representation fortext43 can be created, the cost in the performance speed of the process out-weighs the time it lakes to render text. Hence, the empty quadtree q3is created and passed back to thefifth node55.
    • S10: Thefifth node55 receives the empty quadtree q3passed back by the previous step S9. This quadtree q3is stored as the obscuring region of the left operand of the “over” operator at the fifth node55 (qL=q3). Again, in accordance with Table 2, the action to be performed when descending a right branch of a node having an “over” operator is to pass down to the right branch a union of the quadtree q2passed to thenode55 by theparent node51 with the quadtree q3associated with the left operand (qL∪q2=q3∪q2=q2). The union of the quadtree q3with the quadtree q2results in a quadtree equivalent to quadtree q2, since quadtree q3is the empty quadtree described in step S9. Therefore, quadtree q2is passed down the right branch of the expression tree to aright leaf node57 of parent node (fifth node)55.
    • S11: Theright leaf node57 is represented by the graphical element page “D”41 representing the background page inFIG. 6. The quadtree q2passed down to theright leaf node57 by thefifth node55 is compared with the region of page “D”41 to determine if the region represented by the quadtree q2obscures the region represented by page “D”41. The result of this comparison is that the region represented by quadtree q2(circle44) partly or in total obscures page “D”41.
The graphical element page “D” is therefore either tagged so as to be clipped to the boundary of the circle44 (a clip path derived from quadtree q2) at some later stage of processing typically, before rendering, or a clipping operator is applied and the page “D”41 is clipped so that the region described by thecircle44 is cut out of the page “D”41. A quadtree can be created for representing the page “D”41 so that it may be passed back to a parent node. However, in this example, the creation of such a quadtree is not needed since it can be deduced that no further graphical elements can be obscured.
    • S12: The process returns to thefifth node55, where no further quadtrees need to be created.
    • S13: The process returns to thefirst node51, where no further quadtrees need to be created.
    • S14: The process ends having optimised theexpression tree50 ofFIG. 7 to provide theexpression tree60 ofFIG. 8. Thediamond shape symbols58 and59 shown inFIG. 8 indicate that thetext43 and the page “D”41 are to be clipped (or have been clipped whichever the case may be), respectively.
Performance Issues
The foregoing examples of quadtree representations, described with reference toFIGS. 1 to 8, are created representing a region of an image occupied by a graphical element (object) irrespective of the relative size of the graphical element when compared with the entire image. However, the process performed in the embodiment is preferably governed by the following principles and corollaries:
    • (a) it is preferable to do the little that covers most cases than to attempt perfect results; and
    • (b) at a node, at least initially, it is not known whether or riot obscuration actually occurs in an image, so it is preferable to avoid expensive tests having benefits that are uncertain. These principles apply in the following ways.
Firstly, increasing the depth (ie, the number of nodes and branches) of a quadtree increases the quadtree resolution and the ability to detect obscuration. However, beyond a predetermined resolution, the computational cost of creating and combining quadtrees increases exponentially, exceeding the savings in performance gained by attempting to eliminate from an expression tree the diminishing areas represented by the increased quadtree depth.
Secondly, it is computationally expensive to treat every opaque primitive as a potential obscurer (a graphical element likely to obscure other graphical element of an image). The smaller a primitive is the less likely it is to obscure another primitive. Hence, the creation of quadtrees is preferably limited to potential obscurers that are of a predetermined size or greater. Typically, primitives that are too costly to convert to a quadtree are not considered because they cannot guarantee a good return on the investment. Thus, a “good obscurer” preferably has the following features:
    • (a) fully opaque;
    • (b) larger than a predetermined size (and thus likely to obscure other primitives of an image);
    • (c) simple to convert to a quadtree very quickly (for example, choose only graphical objects comprising a single simple convex outline).
Thirdly, testing for obscuration (ie, determining whether a first graphical element obscures one or more graphical elements of an image) can be performed by representing the region covered by the first graphical element as a quadtree and testing if one or more cells of the region represented at the nodes of the quadtree obscure regions covered by the one or more graphical elements of the image. Typically, the one or more regions are also represented by quadtrees, and the cells of quadtrees are compared. However, representing an arbitrary region of an image as a quadtree representation, to a predetermined resolution, may prove very computationally expensive though entirely possible. Hence, a bounding box of a region represented at a node of an expression tree is preferably constructed. Whether the node is a graphical element or an operator, the region represented at the expression tree node is well defined.
While the bounding box at a node of an expression tree may not exactly represent the region covered by the node, the enhancement in computational performance typically out-weighs the detriment in performance by failing to detect obscurities. Testing for obscured graphical elements by comparing their respective bounding box is preferred over comparing a quadtree representation of the regions of the image occupied by the graphical elements. This may result in some obscured graphical elements, below a predetermined size, being missed and considered not obscured. However, selecting a simple test for determining whether graphical elements are obscured by other graphical elements of the image is preferable over computationally expensive tests that in most common cases do not justify the return on the investment.
The following is an example of a pseudo-code call to a routine “test” which compares the bounding box at a node with a quadtree cell (hereinafter “cell”).
function test (bounding_box, cell)
begin
 if cell is full then
  return true (representing obscuration)
 else if cell is empty then
  return false (representing non-obscuration)
 else begin
  cell is subdivided.
  if bounding_box and top right subcell have non-empty intersection then
   if not test (bounding_box, top right subcell) then
    return false
  if bounding_box and top left subcell have non-empty intersection then
   if not test (bounding_box, top left subcell) then
    return false
  if bounding_box and bottom right subcell have non-empty
     intersection then
   if not test (bounding_box, bottom right subcell) than
    return false
  if bounding_box and bottom left subcell have non-empty
     intersection then
   if not text (bounding_box, bottom left subcell) then
    return false
  return true
 end
end

This function (routine) is invoked with:
if bounding_box has non-empty intersection with rectangle represented by
 quadtree root then
  call test (bounding_box, quadtree root)
Quadtrees are created and discarded continuously. A very simple and fast scheme to manage computer memory is preferred with low memory allocation activity (eg, allocating largish blocks of memory, say, 1000 quadtree cells at a time). Cells are allocated to these blocks, treated as write-once-read-only, and not deallocated until the end of the entire expression tree traversal. This approach allows cells to be shared amongst quadtrees, and considerably reduces copying when performing quadtree set operations.
Preferably, as a performance issue, if a region representation (quadtrees) need not be created, no region representation is generated at a node. For example, a parent node may request from a descendent node a quadtree of the region which the descendent node and its descendent node may obscure. Typically, if a region representation is never to be utilized in subsequent computation, the region representation preferably does not need to be created.
The aforementioned process for optimising an expression tree is described using recursion for convenience. Implementation of the process is also possible using a non-recursive process utilising back-pointers. This is both to reduce function-call overhead, and to handle very large trees that in practise are rarely balanced.
The foregoing describes only a small number of embodiments of the present invention and modifications, obvious to those skilled in the art in view of the foregoing description, can be made thereto without departing from the scope and spirit of the present invention.
APPENDIX
The following function tests node for obscuration against quadtree q0. It returns whether or not all visible parts of node are obscured. If need_result, then it also returns a quadtree representing what areas node obscures. It is invoked with the call:
obscure(root node of tree, false, empty quadtree)
function obscure(node, need_result, q0)
begin
   case node's type begin
 primitive →
  if q0obscures the node's bounding box then
   return obscured.
  else if q0partially obscures the node's bounding box and
    there is advantage in clipping the primitive (eg., it is an image,
    edge blend, box, all, or path primitive) then
  begin
   Clip if the overhead of clipping is worth the saving in not gen-
    erating and compositing the clipped pixels.
   Obtain a clip path from q0. This clip path remains associated with
     q0while it exists, so that it is only ever created once.
  Tag the node as requiring clipping to this path.
 end
 if need_result then
 begin
  if the primitive is a good obscurer (a large opaque image, box or all:
     a large opaque path containing a single, simple, convex edge)
    then
  Construct a quadtree from the primitive's boundary.
    return this quadtree.
   else
    return empty quadtree.
  end
 colour transformation →
   if q0obscures the node's bounding box then
   return obscured.
   else if q0partially obscures the node's bounding box then
  begin
   Clip, as we expect the overhead of clipping to be worth the saving
    in not transforming the clipped pixels.
   Obtain a clip path from q0. This clip path remains associated with
    q0while it exists, so that it is only ever created once.
   Tag the node as requiring clipping to this path.
  end
 Determine whether the transformation preserves opaqueness
  (opacity 1 maps to opacity 1), and whether it preserves invisbility
    (opacity 0 maps to opacity 0).
 call obscure(node's operand, transformation preserves opaqueness
   and need_result, q0), obtaining quadtree q1if requested. If
   opaqueness is not preserved, then we can't know what areas will
   be obscured after the transformation is applied, so there is no
   point asking for a quadtree.
 if operand is obscured then
 begin
   Note that if the operand is said to be obscured, then it is only the
    visible parts (opacity # 0) that are guaranteed to be obscured.
  if transformation preserves invisibility then
    return obscured.
  else
  begin
   Determine what the transformation will transform invisible
    (opacity = 0) to.
   Replace this node by an “all” primitive of this colour/opacity.
   if need_result then
   return a quadtree constructed from the all's boundary.
  return
  end
 end
 if need_result then
 if transformation preserves opaqueness then
   return quadtree q1.
  else
   return empty quadtree.
affine transformation, image warp →
  if q0obscures the node's bounding box then
    return obscured.
  else if qOpartially obscures the node's bounding box then
  begin
  Clip, as we expect the overhead of clipping to be worth the saving
    in not generating and compositing the the clipped pixels.
  Obtain a clip path from q0. This clip path remains associated with
    q0 while it exists, so that it is only ever created once.
  Tag the node as requiring clipping to this path.
  end
  call obscure(node's operand, false, empty quadtree). We cannot
    pass q0down the tree or accept a result unless we
    inverse/transform the quadtrees through the transformation.
image convolution →
 if q0obscures the node's bounding box then
    return obscured.
 call obscure(node's operand, false, empty quadtree).
binary operator →
 if q0obscures the node's bounding box then
    return obscured.
 case node's operator begin
over →
 call obscure(node's left operand, true, q0), obtaining area qLobscured
    by left operand.
 call obscure(node's right operand, need_result, if left operand
    is obscured then q0else q0∪qL), obtaining area qR, obscured
    by right operand if need_result.
 if left operand is obscured and right operand is obscured then
   return obscured.
 else if left operand is obscured then
 begin
 Replace this node with its right operand.
 if need_result then
   return qR.
 end
 else if right operand is obscured then
 begin
  Replace this node with its left operand.
  if need_result then
  return qL.
 end
 else
 if need result then
  return qL∪qR.
 end
in →
 call obscure(node's left operand, need_result, q0), obtaining area qL
   obscured by left operand if need_result.
 if left operand is obscured then
  return obscured.
 call obscure(node's right operand, need_result, q0), obtaining area qR
   obscured by right operand if need_result.
 if right operand is obscured then
  return obscured.
 if need result then
  return qL∩qR.
out →
 call obscure(node's right operand. true, q0), obtaining area qR
   obscured by right operand.
 call obscure(node's left operand, need_result, if right operand is
   obscured then q0else q0∪qR), obtaining area qLobscured by
   left operand if need_result.
 if left operand is obscured then
  return obscured.
  else if right operand is obscured then
  begin
  Replace this node with its left operand.
  if need_ result then
   return qL.
  end
  else
  if need_result then
   return qL-B(right operand).
 end
ratop →
 call obscure(node's left operand, need result, q0), obtaining area qL
   obscured by left operand if need_result.
 if left operand is obscured then
   return obscured.
 call obscure(node's right operand, false, q0).
 if right operand is obscured then
  Replace this node with its left operand.
 if need_result then
   return qL.
plusC →
 call obscure(node's left operand, need_result, q0), obtaining area qL
   obscured by left operand if need_result.
 call obscure(node's right operand, need result, q0), obtaining area qR
   obscured by right operand if need_result.
 if left operand is obscured and right operand is obscured then
   return obscured.
 else if left operand is obscured then
 begin
  Replace this node with its right operand.
  if need_result then
   return qR.
 end
 else if right operand is obscured then
 begin
   Replace this node with its left operand.
 if need_result then
   return qL.
 end
 else
 if need_result then
   return qL↑qR.
 end
plusW, Xor →
 call obscure(node's left operand, need_result, q0), obtaining area qL
   obscured by left operand if need_result.
 call obscure(node's right operand, need_result, q0), obtaining area qR
   obscured by right operand if need_result.
 if left operand is obscured and right operand is obscured then
   return obscured.
 else if left operand is obscured then
 begin
  Replace this node with its right operand.
  if need_result then
   return qR.
 end
 else if right operand is obscured then
 begin
  Replace this node with its left operand.
 if need_result then
   return qL.
 end
 else
 begin
 if need_result then
   return (qL-B(rightoperand)) ∪ (qR-B(leftoperand)).
 end
 end case binary operator
 end case node type
end

Claims (32)

1. A method of optimising an expression tree, said expression tree for compositing an image and comprising at least three nodes, each said node of said tree being at least either a graphical element or a graphical operator, the method comprising, for at least one node in said tree, the steps of:
comparing a first region of said node to a second region derived from at least one other node anywhere in said expression tree;
determining if said first region is totally or partially obscured by said second region; and
modifying the expression tree if said first region is at least partially or totally obscured by said second region, to form an optimised expression tree in which an optimised part of said expression tree substantially represents unobscured portions of said first region,
wherein said steps are performed by means of a programmed computer.
4. The method as recited inclaim 3, wherein said predetermined set of node replacement rules comprises at least one step selected from the group consisting of:
if the parent node is an “over” graphical operator and the current node is at a left branch of the parent node, replacing the parent node with a right subtree of the parent node;
if the parent node is an “over” graphic graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is an “in” graphical operator, removing the parent node and any subtrees branching off the parent node;
if the parent node is a “ratop” graphical operator and the current node is at a left branch of the parent node, removing the parent node and any subtrees branching off the parent node;
if the parent node is a “ratop” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is an “out” graphical operator and the current node is at a left branch of the parent node, removing the parent node and any subtrees branching off the parent node;
if the parent node is an “out” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is a “plusC” graphical operator and the current node is at a left branch of the parent node, replacing the parent node with a right subtree of the parent node;
if the parent node is a “plusC” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is a “plusW” or an “Xor” graphical operator and the current node is at a left branch of the parent node, replacing the parent node with a right subtree of the parent node; and
if the parent node is an “plusW” or an “Xor” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node.
8. A method of optimising an expression tree for compositing an image, said expression tree comprising a plurality of nodes, each said node being at least either a graphical element or a graphical operator, said method comprising the steps of:
traversing the expression tree node by node; and
determining at a current node if a first region of the image represented at said current node is obscured by a second region derived from at least one other node anywhere in said expression tree, and modifying said expression tree in the event that said first region of said current node is partially or totally obscured by said second region, to form an optimised expression tree in which an optimised part of said expression tree substantially represents unobscured portions of said first region,
wherein said steps are performed by means of a programmed computer.
11. A method of optimising an expression tree for compositing an image, said expression tree comprising a plurality of nodes, each said node comprising:
at least either a graphical element or a graphical operator and having a region of the image represented by said node, said method comprising the steps of:
traversing the expression tree node by node and at each current node comprising a graphical operator applying the sub-steps of:
(i) receiving a first region representation from a parent node;
(ii) passing to a first operand of said graphical operator a modified first region representation in accordance with a first predetermined modification rule for said operator;
(iii) returning to the graphical operator a second region representation of regions obscured by a sub-tree associated with the first operand;
(iv) passing to a second operand of said graphical operator a modified second region representation in accordance with a second predetermined modification rule for said operator;
(v) returning to the graphical operator a third region representation of regions obscured by a sub-tree associated with the second operand; and
(vi) determining, in accordance will a set rule for said graphical operator, a final region representation to be returned to the parent node to form an optimised expression tree in which said final region representation substantially represents an unobscured portion of the first region represented at the parent node a region within which said current node is capable of obscuring other nodes in said expression tree,
wherein said steps are performed by means of a programmed computer.
12. The method as recited inclaim 11, wherein said set rule is selected from the group consisting of:
(a) where the graphic operator is an “over” or a “plusC” operator, the final region representation to be returned to the parent node is determined from a union of the second region representation and the third region representation;
(b) where the graphic operator is an “in” operator, the final region representation to be returned to the parent node is determined from an intersection of the second region representation and the third region representation;
(c) where the graphic operator is a “ratop” operator, the final region representation to be returned to the parent node is the second region representation;
(d) where the graphic operator is an “out” operator, the final region representation to be returned to the parent node is determined from a difference of the second region representation and a region representation comprising at least a region represented by a bounding box of a node at a right subtree of the current node; and
(e) where the graphic operator is an “Xor” or a “plusW” operator the final region representation to be returned to the parent node is determined from a union of the second region representation less a region representation comprising at least a region represented by a bounding box of a node at a right subtree of the current node and the third region representation less a region representation containing a bounding box of a node at a right subtree of the current node.
16. The method as recited inclaim 15, wherein the image representation is not created at a node or returned to the parent node if the node is selected from a group consisting of:
a right operand of an “over” operator and the “over” operator node does not need to return an image representation to its parent node;
a left operand of an “in”, “plusC”, “plusW” or “Xor” operator and said operator node does not need to return an image representation to its parent node;
a right operand of an “in”, “plusC”, “plusW” or “Xor” operator and said operator node does not need to return an image representation to its parent node;
a left operand of an “out” or “ratop” operator and said operator node does not need to return an image representation to its parent node;
a right operand of a “ratop” operator;
a root of the expression tree;
an operand of an image warp, affine transformation or convolution operator; and
an operand of a colour transformation that does not preserve opaqueness or if said transformation node does not need to return an image representation to its parent node.
20. The apparatus as recited inclaim 19, wherein said predetermined set of node replacement rules comprises at least one step selected from the group consisting of:
if the parent node is an “over” graphical operator and the current node is at a left branch of the parent node, replacing the parent node with a right subtree of the parent node;
if the parent node is an “over” graphic graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is an “in” graphical operator, removing the parent node and any subtrees branching off the parent node;
if the parent node is a “ratop” graphical operator and the current node is at a left branch of the parent node, removing the parent node and any subtrees branching off the parent node;
if the parent node is a “ratop” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is an “out” graphical operator and the current node is at a left branch of the parent node, removing the parent node and any subtrees branching off the parent node;
if the parent node is an “out” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is a “plusC” graphical operator and the current node is at a left branch of the parent node, replacing the parent node with a right subtree of the parent node;
if the parent node is a “plusC” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node;
if the parent node is a “plusW” or an “Xor” graphical operator and the current node is at a left branch of the parent node, replacing the parent node with a right subtree of the parent node; and
if the parent node is a “plusW” or an “Xor” graphical operator and the current node is at a right branch of the parent node, replacing the parent node with a left subtree of the parent node.
24. An apparatus for optimizing an expression tree for compositing an image, said expression tree comprising a plurality of nodes, each said node being at least either a graphical element or a graphical operator, said apparatus comprising:
means for traversing the expression tree node by node;
means for determining at a current node if a first region of the image represented at said current node is obscured by a second region derived from at least one other node anywhere in said expression tree; and
means for modifying said expression tree in the event that said first region of said current node is partially or totally obscured by said second region to form an optimized expression tree in which an optimized part of said expression tree substantially represents unobsured unobscured portions of said first region.
27. An apparatus for optimizing an expression tree for compositing an image, said expression tree comprising a plurality of nodes, each said node comprising at least either a graphical element or a graphical operator and having a region of the image represented by said node, said apparatus comprising:
means for traversing the expression tree node by node, said traversing means for each current node comprising a graphical operator, further comprising:
means for receiving a first region representation from a parent node;
means for passing to a first operand of said graphical operator a modified first region representation in accordance with a first predetermined modification rule for said operator;
means for returning to the graphical operator a second region representation of regions obscured by a sub-tree associated with the first operand;
means for passing to a second operand of said graphical operator a modified second region representation in accordance with a second predetermined modification rule for said operator;
means for returning to the graphical operator a third region representation of regions obscured by a sub-tree associated with the second operand; and
means for determining, in accordance with a set rule for said graphical operator, a final region representation to be returned to the parent to form an optimized expression tree in which said final region representation substantially represents an unobscured portion of said first region represented at the parent node a region within which said current node is capable of obscuring other nodes in said expression tree.
28. The apparatus as recited inclaim 27, wherein said set rule is selected from the group consisting of:
(a) where the graphic operator is an “over” or a “plusC” operator, the final region representation to be returned to the parent node is determined from a union of the second region representation and the third region representation;
(b) where the graphic operator is an “in” operator, the final region representation to be returned to the parent node is determined from an intersection of the second region representation and the third region representation;
(c) where the graphic operator is an a “ratop” operator, the final region representation to be returned to the parent node is the second region representation;
(d) where the graphic operator is an “out” operator, the final region representation to be returned to the parent node is determined from a difference of the second region representation and a region representation comprising at least a region represented by a bounding box of a node at a right subtree of the current node; and
(e) where the graphic operator is an “Xor” or a “plusW” operator the final region representation to be returned to the parent node is determined from a union of the second region representation less a region representation comprising at least a region represented by a bounding box of a node at a right subtree of the current node and the third region representation less a region representation containing a bounding box of a node at a right subtree of the current node.
32. The apparatus as recited inclaim 31, wherein the image representation is not created at a node or returned to the parent node if the node is selected from a group consisting of:
a right operand of an “over” operator and the “over” operator node does not need to return an image representation to its parent node;
a left operand of an “in”, “plusC”, “plusW” or “Xor” operator and said operator node does nor need to return an image representation to its parent node;
a right operand of an “in”, “plusC”, “plusW” or “Xor” operator and said operator node docs not need to return an image representation to its parent node;
a left operand of an “out” or “ratop” operator and said operator node does not need to return an image representation to its parent node;
a right operand of a “ratop” operator;
a root of the expression tree;
an operand of an image warp, affine transformation or convolution operator; and
an operand of a colour transformation that does not preserve opaqueness or if said transformation node does not need to return an imap representation to its parent node.
US10/368,5831996-05-222003-02-20Expression tree optimization for processing obscured graphical objectsExpired - LifetimeUSRE42847E1 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
US10/368,583USRE42847E1 (en)1996-05-222003-02-20Expression tree optimization for processing obscured graphical objects

Applications Claiming Priority (4)

Application NumberPriority DateFiling DateTitle
AUPO0021AAUPO002196A0 (en)1996-05-221996-05-22A method of optimising an expression tree for the production of images
AUPO00211996-05-22
US08/861,063US6191797B1 (en)1996-05-221997-05-21Expression tree optimization for processing obscured graphical objects
US10/368,583USRE42847E1 (en)1996-05-222003-02-20Expression tree optimization for processing obscured graphical objects

Related Parent Applications (1)

Application NumberTitlePriority DateFiling Date
US08/861,063ReissueUS6191797B1 (en)1996-05-221997-05-21Expression tree optimization for processing obscured graphical objects

Publications (1)

Publication NumberPublication Date
USRE42847E1true USRE42847E1 (en)2011-10-18

Family

ID=3794332

Family Applications (2)

Application NumberTitlePriority DateFiling Date
US08/861,063CeasedUS6191797B1 (en)1996-05-221997-05-21Expression tree optimization for processing obscured graphical objects
US10/368,583Expired - LifetimeUSRE42847E1 (en)1996-05-222003-02-20Expression tree optimization for processing obscured graphical objects

Family Applications Before (1)

Application NumberTitlePriority DateFiling Date
US08/861,063CeasedUS6191797B1 (en)1996-05-221997-05-21Expression tree optimization for processing obscured graphical objects

Country Status (5)

CountryLink
US (2)US6191797B1 (en)
EP (1)EP0809213B1 (en)
JP (1)JP3996975B2 (en)
AU (2)AUPO002196A0 (en)
DE (1)DE69731425T2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US9892538B1 (en)*2016-10-062018-02-13International Business Machines CorporationRebuilding images based on historical image data

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
AU714611B2 (en)*1997-02-202000-01-06Canon Kabushiki KaishaA method of linking display images
US6674485B2 (en)1998-08-312004-01-06Hitachi Software Engineering Co., Ltd.Apparatus and method for image compositing
EP0984396A3 (en)1998-09-032003-08-20Canon Kabushiki KaishaOptimising image compositing
JP3427973B2 (en)*1998-12-092003-07-22日本電気株式会社 Object display description document conversion device and browser
AUPP923799A0 (en)1999-03-161999-04-15Canon Kabushiki KaishaMethod for optimising compilation of compositing expressions
AU744463B2 (en)*1999-03-162002-02-21Canon Kabushiki KaishaMethod for compiling compositiing expressions for optimised rendering
US6983291B1 (en)*1999-05-212006-01-03International Business Machines CorporationIncremental maintenance of aggregated and join summary tables
US6330003B1 (en)*1999-07-302001-12-11Microsoft CorporationTransformable graphical regions
US7505046B1 (en)*2000-05-022009-03-17Adobe Systems IncorporatedPreserving opaque-like rendering in transparent 2D graphics using knockout groups
US7292255B2 (en)*2000-05-312007-11-06Canon Kabushiki KaishaImage data acquisition optimisation
US6948135B1 (en)2000-06-212005-09-20Microsoft CorporationMethod and systems of providing information to computer users
US7191394B1 (en)*2000-06-212007-03-13Microsoft CorporationAuthoring arbitrary XML documents using DHTML and XSLT
US7155667B1 (en)2000-06-212006-12-26Microsoft CorporationUser interface for integrated spreadsheets and word processing tables
US6883168B1 (en)*2000-06-212005-04-19Microsoft CorporationMethods, systems, architectures and data structures for delivering software via a network
US7624356B1 (en)2000-06-212009-11-24Microsoft CorporationTask-sensitive methods and systems for displaying command sets
EP1325427A2 (en)*2000-06-212003-07-09Microsoft CorporationSystem and method for integrating spreadsheets and word processing tables
US7000230B1 (en)2000-06-212006-02-14Microsoft CorporationNetwork-based software extensions
US7346848B1 (en)2000-06-212008-03-18Microsoft CorporationSingle window navigation methods and systems
US6874143B1 (en)2000-06-212005-03-29Microsoft CorporationArchitectures for and methods of providing network-based software extensions
US6756994B1 (en)*2000-08-072004-06-29Canon Kabushiki KaishaMethod and apparatus for handling secondary dependencies
US7418664B2 (en)*2002-04-032008-08-26Microsoft CorporationApplication sharing single document sharing
US7028266B2 (en)*2002-04-052006-04-11Microsoft CorporationProcessing occluded windows during application sharing
US8756513B1 (en)2002-04-232014-06-17Microsoft CorporationDocument viewing mechanism for document sharing environment
AU2002951651A0 (en)*2002-09-252002-10-10Canon Kabushiki KaishaApparatus for printing using non-overlapping graphic objects
US7415672B1 (en)2003-03-242008-08-19Microsoft CorporationSystem and method for designing electronic forms
US7275216B2 (en)*2003-03-242007-09-25Microsoft CorporationSystem and method for designing electronic forms and hierarchical schemas
US7370066B1 (en)2003-03-242008-05-06Microsoft CorporationSystem and method for offline editing of data files
JP2004289516A (en)*2003-03-242004-10-14Konica Minolta Holdings IncMethod, device, and program for image processing, and image scanning device
US7296017B2 (en)*2003-03-282007-11-13Microsoft CorporationValidation of XML data files
US7913159B2 (en)*2003-03-282011-03-22Microsoft CorporationSystem and method for real-time validation of structured data files
US7516145B2 (en)*2003-03-312009-04-07Microsoft CorporationSystem and method for incrementally transforming and rendering hierarchical data files
US7681112B1 (en)2003-05-302010-03-16Adobe Systems IncorporatedEmbedded reuse meta information
US20040268229A1 (en)*2003-06-272004-12-30Microsoft CorporationMarkup language editing with an electronic form
US7451392B1 (en)2003-06-302008-11-11Microsoft CorporationRendering an HTML electronic form by applying XSLT to XML using a solution
US7581177B1 (en)2003-08-012009-08-25Microsoft CorporationConversion of structured documents
US7406660B1 (en)2003-08-012008-07-29Microsoft CorporationMapping between structured data and a visual surface
US7334187B1 (en)2003-08-062008-02-19Microsoft CorporationElectronic form aggregation
US8819072B1 (en)2004-02-022014-08-26Microsoft CorporationPromoting data from structured data files
US7430711B2 (en)2004-02-172008-09-30Microsoft CorporationSystems and methods for editing XML documents
US7318063B2 (en)*2004-02-192008-01-08Microsoft CorporationManaging XML documents containing hierarchical database information
US8704837B2 (en)*2004-04-162014-04-22Apple Inc.High-level program interface for graphics operations
US8134561B2 (en)2004-04-162012-03-13Apple Inc.System for optimizing graphics operations
US7231632B2 (en)*2004-04-162007-06-12Apple Computer, Inc.System for reducing the number of programs necessary to render an image
US7496837B1 (en)*2004-04-292009-02-24Microsoft CorporationStructural editing with schema awareness
US7568101B1 (en)2004-05-132009-07-28Microsoft CorporationDigital signatures with an embedded view
US7281018B1 (en)2004-05-262007-10-09Microsoft CorporationForm template data source change
US7774620B1 (en)2004-05-272010-08-10Microsoft CorporationExecuting applications at appropriate trust levels
US8566732B2 (en)*2004-06-252013-10-22Apple Inc.Synchronization of widgets and dashboards
US8302020B2 (en)*2004-06-252012-10-30Apple Inc.Widget authoring and editing environment
US8239749B2 (en)2004-06-252012-08-07Apple Inc.Procedurally expressing graphic objects for web pages
US8453065B2 (en)*2004-06-252013-05-28Apple Inc.Preview and installation of user interface elements in a display environment
US7546543B2 (en)2004-06-252009-06-09Apple Inc.Widget authoring and editing environment
US7490295B2 (en)2004-06-252009-02-10Apple Inc.Layer for accessing user interface elements
US7761800B2 (en)*2004-06-252010-07-20Apple Inc.Unified interest layer for user interface
US20060074933A1 (en)*2004-09-302006-04-06Microsoft CorporationWorkflow interaction
US7692636B2 (en)*2004-09-302010-04-06Microsoft CorporationSystems and methods for handwriting to a screen
US7516399B2 (en)*2004-09-302009-04-07Microsoft CorporationStructured-document path-language expression methods and systems
US20060107224A1 (en)*2004-11-152006-05-18Microsoft CorporationBuilding a dynamic action for an electronic form
US7712022B2 (en)2004-11-152010-05-04Microsoft CorporationMutually exclusive options in electronic forms
US7584417B2 (en)2004-11-152009-09-01Microsoft CorporationRole-dependent action for an electronic form
US7509353B2 (en)2004-11-162009-03-24Microsoft CorporationMethods and systems for exchanging and rendering forms
US7721190B2 (en)*2004-11-162010-05-18Microsoft CorporationMethods and systems for server side form processing
US7904801B2 (en)*2004-12-152011-03-08Microsoft CorporationRecursive sections in electronic forms
US7437376B2 (en)*2004-12-202008-10-14Microsoft CorporationScalable object model
US8140975B2 (en)*2005-01-072012-03-20Apple Inc.Slide show navigation
US7937651B2 (en)*2005-01-142011-05-03Microsoft CorporationStructural editing operations for network forms
US7725834B2 (en)2005-03-042010-05-25Microsoft CorporationDesigner-created aspect for an electronic form template
US7673228B2 (en)*2005-03-302010-03-02Microsoft CorporationData-driven actions for network forms
US8010515B2 (en)2005-04-152011-08-30Microsoft CorporationQuery to an electronic form
US7701463B2 (en)*2005-05-092010-04-20Autodesk, Inc.Accelerated rendering of images with transparent pixels using a spatial index
US8543931B2 (en)2005-06-072013-09-24Apple Inc.Preview including theme based installation of user interface elements in a display environment
US7543228B2 (en)*2005-06-272009-06-02Microsoft CorporationTemplate for rendering an electronic form
US8200975B2 (en)*2005-06-292012-06-12Microsoft CorporationDigital signatures for network forms
US7613996B2 (en)*2005-08-152009-11-03Microsoft CorporationEnabling selection of an inferred schema part
US20070061706A1 (en)*2005-09-142007-03-15Microsoft CorporationMapping property hierarchies to schemas
US20070061467A1 (en)*2005-09-152007-03-15Microsoft CorporationSessions and session states
US7484173B2 (en)*2005-10-182009-01-27International Business Machines CorporationAlternative key pad layout for enhanced security
US7954064B2 (en)2005-10-272011-05-31Apple Inc.Multiple dashboards
US8543824B2 (en)*2005-10-272013-09-24Apple Inc.Safe distribution and use of content
US20070101279A1 (en)*2005-10-272007-05-03Chaudhri Imran ASelection of user interface elements for unified display in a display environment
US7752556B2 (en)2005-10-272010-07-06Apple Inc.Workflow widgets
US9104294B2 (en)*2005-10-272015-08-11Apple Inc.Linked widgets
US7743336B2 (en)*2005-10-272010-06-22Apple Inc.Widget security
US7707514B2 (en)2005-11-182010-04-27Apple Inc.Management of user interface elements in a display environment
US8001459B2 (en)2005-12-052011-08-16Microsoft CorporationEnabling electronic documents for limited-capability computing devices
US20070162850A1 (en)*2006-01-062007-07-12Darin AdlerSports-related widgets
US7561156B2 (en)*2006-02-082009-07-14INOVO LimitedAdaptive quadtree-based scalable surface rendering
US8155682B2 (en)*2006-05-052012-04-10Research In Motion LimitedHandheld electronic device including automatic mobile phone number management, and associated method
US8869027B2 (en)*2006-08-042014-10-21Apple Inc.Management and generation of dashboards
US8656381B2 (en)*2006-12-072014-02-18International Business Machines CorporationPresenting machine instructions in a machine-independent tree form suitable for post-link optimizations
US20080168367A1 (en)*2007-01-072008-07-10Chaudhri Imran ADashboards, Widgets and Devices
US20090005071A1 (en)*2007-06-282009-01-01Apple Inc.Event Triggered Content Presentation
US8954871B2 (en)*2007-07-182015-02-10Apple Inc.User-centric widgets and dashboards
US20090021486A1 (en)*2007-07-192009-01-22Apple Inc.Dashboard Surfaces
US8667415B2 (en)*2007-08-062014-03-04Apple Inc.Web widgets
US8156467B2 (en)*2007-08-272012-04-10Adobe Systems IncorporatedReusing components in a running application
US8176466B2 (en)2007-10-012012-05-08Adobe Systems IncorporatedSystem and method for generating an application fragment
US9619304B2 (en)2008-02-052017-04-11Adobe Systems IncorporatedAutomatic connections between application components
US8656293B1 (en)2008-07-292014-02-18Adobe Systems IncorporatedConfiguring mobile devices
JP2010109967A (en)2008-10-012010-05-13Canon IncImage processing apparatus, method, and, program
US10424084B2 (en)*2017-04-282019-09-24Adobe Inc.Digital content rendering that supports alpha is shape (AIS) as part of knockout groups
US12327094B2 (en)*2022-12-082025-06-10Lemon Inc.Visual scripting program with selectable reroute node icon

Citations (16)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
EP0069881A1 (en)1981-07-031983-01-19Bayer AgS-azolyl-methyl-di(tri)-thiophosphoric-acid esters, process for their preparation and their use as pesticides
US5123084A (en)1987-12-241992-06-16General Electric Cgr S.A.Method for the 3d display of octree-encoded objects and device for the application of this method
EP0528631A2 (en)1991-08-131993-02-24Xerox CorporationElectronic image generation
US5274718A (en)1991-09-301993-12-28At&T Bell LaboratoriesImage representation using tree-like structures
US5295236A (en)1991-03-041994-03-15Aldus CorporationApplying traps to a printed page specified in a page description language format
EP0694881A2 (en)*1994-07-251996-01-31Canon Kabushiki KaishaEfficient methods for the interpretation of a graphical programming language
AU2336295A (en)1994-07-251996-02-08Canon Kabushiki KaishaEfficient methods for the compositing of graphical elements
US5515487A (en)*1993-05-281996-05-07International Business Machines CorporationDisplaying partial graphs by expanding and collapsing nodes
JPH08115413A (en)1994-07-251996-05-07Canon Inf Syst Res Australia Pty Ltd How to interpret a graphical programming language
US5579455A (en)1993-07-301996-11-26Apple Computer, Inc.Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5600763A (en)1994-07-211997-02-04Apple Computer, Inc.Error-bounded antialiased rendering of complex scenes
US5724494A (en)1994-07-251998-03-03Canon Information Systems Research Australia Pty LtdOptimization method for the efficient production of images
US5745121A (en)1994-07-251998-04-28Canon Information Systems Research Australia Pty LtdMethods and apparatus for optimizing the composition of graphical elements
US20020027563A1 (en)*2000-05-312002-03-07Van Doan Khanh PhiImage data acquisition optimisation
US20030118250A1 (en)*1998-09-032003-06-26Tlaskal Martin PaulOptimising image compositing
US20050267908A1 (en)*2004-05-282005-12-01Letourneau Jack JMethod and/or system for simplifying tree expressions, such as for pattern matching

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
EP0069881A1 (en)1981-07-031983-01-19Bayer AgS-azolyl-methyl-di(tri)-thiophosphoric-acid esters, process for their preparation and their use as pesticides
US5123084A (en)1987-12-241992-06-16General Electric Cgr S.A.Method for the 3d display of octree-encoded objects and device for the application of this method
US5295236A (en)1991-03-041994-03-15Aldus CorporationApplying traps to a printed page specified in a page description language format
EP0528631A2 (en)1991-08-131993-02-24Xerox CorporationElectronic image generation
US5274718A (en)1991-09-301993-12-28At&T Bell LaboratoriesImage representation using tree-like structures
US5515487A (en)*1993-05-281996-05-07International Business Machines CorporationDisplaying partial graphs by expanding and collapsing nodes
US5579455A (en)1993-07-301996-11-26Apple Computer, Inc.Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5600763A (en)1994-07-211997-02-04Apple Computer, Inc.Error-bounded antialiased rendering of complex scenes
JPH08115413A (en)1994-07-251996-05-07Canon Inf Syst Res Australia Pty Ltd How to interpret a graphical programming language
AU2336295A (en)1994-07-251996-02-08Canon Kabushiki KaishaEfficient methods for the compositing of graphical elements
EP0694881A2 (en)*1994-07-251996-01-31Canon Kabushiki KaishaEfficient methods for the interpretation of a graphical programming language
US5724494A (en)1994-07-251998-03-03Canon Information Systems Research Australia Pty LtdOptimization method for the efficient production of images
US5745121A (en)1994-07-251998-04-28Canon Information Systems Research Australia Pty LtdMethods and apparatus for optimizing the composition of graphical elements
US20030118250A1 (en)*1998-09-032003-06-26Tlaskal Martin PaulOptimising image compositing
US20020027563A1 (en)*2000-05-312002-03-07Van Doan Khanh PhiImage data acquisition optimisation
US20050267908A1 (en)*2004-05-282005-12-01Letourneau Jack JMethod and/or system for simplifying tree expressions, such as for pattern matching

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Goldfeather, Jack; Near Real-Time CSG Rendering Using Tree Normalization and Geometric Pruning; IEEE Computer Graphics & Applications; pp. 20-28.
M. Shantzis, "A Model for Efficient and Flexible Image Computer", pp. 147-154, Computer Graphics SIGGRAPH 1991, Jul. 28-Aug. 2, Las Vegas, Jan. 1, 1994 XP000571017.

Cited By (5)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US9892538B1 (en)*2016-10-062018-02-13International Business Machines CorporationRebuilding images based on historical image data
US10032301B2 (en)2016-10-062018-07-24International Business Machines CorporationRebuilding images based on historical image data
US10032302B2 (en)2016-10-062018-07-24International Business Machines CorporationRebuilding images based on historical image data
US10169894B2 (en)2016-10-062019-01-01International Business Machines CorporationRebuilding images based on historical image data
US10169896B2 (en)2016-10-062019-01-01International Business Machines CorporationRebuilding images based on historical image data

Also Published As

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

Similar Documents

PublicationPublication DateTitle
USRE42847E1 (en)Expression tree optimization for processing obscured graphical objects
US20020027563A1 (en)Image data acquisition optimisation
EP0694879B1 (en)Efficient methods, apparatus and computer program for the evaluation of a graphical programming language
US6816619B2 (en)Optimising image compositing
JP4365950B2 (en) Graphic object processing method and apparatus for high-speed raster format rendering
US6014147A (en)Computer machine architecture for creating images from graphical elements and a method of operating the architecture
US5745121A (en)Methods and apparatus for optimizing the composition of graphical elements
EP0694881B1 (en)Efficient methods for the interpretation of a graphical programming language
EP0694880B1 (en)Optimization method for the efficient production of images
JPH07200799A (en)Image-video input signal processor, corrected-digital-image-signal-array generation device and selective control method of application of image processing effect
KR100664632B1 (en) How to remove background color for porter and duff synthesis
JP2000137825A (en) High-speed image rendering method using graphic objects in raster format
US6985161B1 (en)Region based image compositing
US5175805A (en)Method and apparatus for sequencing composite operations of pixels
JPS6180374A (en)Microprocessing method and apparatus for veriable scanning area
EP1014306B1 (en)Antialiased high-resolution frame buffer architecture
LevoyArea flooding algorithms
AU767293B2 (en)Image data acquisition optimisation
CN111951367B (en)Character rendering method, character processing method and device
US20050195220A1 (en)Compositing with clip-to-self functionality without using a shape channel
RostUsing OpenGL for imaging
AU721232B2 (en)Scan line rendering of convolutions
AU736530B2 (en)Optimizing image compositing
CN115330908A (en)Depicting method and device based on SVG (scalable vector graphics) and storage medium
CN119359889A (en) Text rendering method, device, equipment and computer medium

Legal Events

DateCodeTitleDescription
CCCertificate of correction
FEPPFee payment procedure

Free format text:PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAYFee payment

Year of fee payment:12


[8]ページ先頭

©2009-2025 Movatter.jp