WO2006005852A1 - Method and device for filling a geometrical shape - Google Patents

Method and device for filling a geometrical shape Download PDF

Info

Publication number
WO2006005852A1
WO2006005852A1 PCT/FR2005/001527 FR2005001527W WO2006005852A1 WO 2006005852 A1 WO2006005852 A1 WO 2006005852A1 FR 2005001527 W FR2005001527 W FR 2005001527W WO 2006005852 A1 WO2006005852 A1 WO 2006005852A1
Authority
WO
WIPO (PCT)
Prior art keywords
pixel
filter
during
process according
intersection
Prior art date
Application number
PCT/FR2005/001527
Other languages
French (fr)
Inventor
Raphaël LEMOINE
Original Assignee
Lemoine Raphael
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 Lemoine Raphael filed Critical Lemoine Raphael
Publication of WO2006005852A1 publication Critical patent/WO2006005852A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Definitions

  • the present invention aims a new method of filling a geometric shape offering a simple and effective solution to problems of quality and / or speed, inherent in all current methods.
  • a digital image consists of a finite number of elementary units, called pixels, which each represent a portion of the image in its horizontal and vertical spatial dimensions. Each pixel is characterized at least by a uniform color, and may contain other information (depth, opacity, etc.). In the remainder of this document, each pixel is considered to be of square shape, of unitary edge. Digital images can be acquired by devices such as scanners, digital cameras or camcorders, but can also be created directly by computer programs, for example from geometric information entered by the user, or generated automatically.
  • a mandatory step is the passage of information stored in vector form (continuous) to its digital representation (discrete).
  • Rasterization simply consists of displaying (filling out) at least one geometric shape in a digital image.
  • Any method of rasterization of a geometric shape can be decomposed into two distinct steps, repeated at least once for each pixel considered in the digital image: 1 - at least one step of computing at least one piece of information thanks to the geometric data continuous. In the remainder of this document, this step is called “READ”. 2 - at least one step of using this information to, optionally, calculate at least one color and write each color information in at least one pixel. In the rest of this document, this step is called “WRITING".
  • the rasterization technique used by the first algorithms for filling geometric primitives (circles, polygons, etc.), often referred to as "Uniform Point Sampling" (or “Uniform Point Sampling”) can be decomposed in the same way next :
  • a pixel is a discrete point, and not a square of edge and unit area.
  • a sampling of the continuous function defining the geometric shape at a frequency of 1 per pixel is performed, followed by an unweighted reconstruction of the samples.
  • the images synthesized by this technique suffer from many visible defects such as staircase effects, and unwanted frames.
  • the ideal rasterization of a geometric shape can be mathematically defined as the sampling at an infinite frequency of a continuous function (step of
  • ALIASING The visible defects due to a sampling frequency that is too low are in the following of this document called ALIASING. These defects are also sometimes called PRE-ALIASING.
  • ALIASING ALIASING.
  • PRE-ALIASING - Size of the convolution filter too small (not infinite) or function of the convolution filter not adapted. Visible defects due to a convolutional filter size that is too small, or to an inadequate convolution filter function, are hereafter referred to as RASTERlNG. These defects are also sometimes called POST-ALIASING.
  • ALIASING or PRE-ALIASING
  • RASTERING or POST-ALIASING
  • RASTERING or POST-ALIASING
  • filters triangular filter, Gaussian, t-sinc, etc.
  • a pyramidal filter in English "tent filter” has a square BASE plane and a vertex outside the plane of the base.
  • - READ One calculates the total area of intersection between the square of coordinates (X, Y), (X + 1, Y + 1) and the geometrical form . This is easily done by a prior decomposition of the geometric shape into simple primitives such as triangles, trapezoids and rectangles, all included in the pixel under consideration, decomposition carried out thanks, for example, to the use of an algorithm of " Scanning Line "(Scanline); - WRITE: If this area is non-zero, the pixel color at the coordinates (X, Y) is set to the color of the geometric shape multiplied by the ratio between the intersection area and the total area of a pixel .
  • This method does not suffer from any ALIASING (or PRE-ALIASING), the READING step consisting of an integration and not a sampling.
  • the WRITE step is unweighted (no operation equivalent to convolution by a filter)
  • the so-called unweighted surface sampling method suffers, in contrast to the weighted surface sampling methods, very strong and very visible effects of type RASTERING.
  • the present invention aims a method of filling a geometric shape, characterized in that it comprises:
  • At least one step of calculating the area of intersection between each fragment and a filter whose surface is greater than the surface of a pixel is the first to possess the combined advantages of the two main current techniques, namely: - like unweighted surface sampling, there is no creation of defaults of ALIASING and
  • RASTERING defects are attenuated, depending on the shape and size of the filter.
  • this method is also the first weighted rasterization method (with the possibility of using a filter of any base and shape), but without sampling, since it is based on exact geometric operations such as intersection , union, addition and integration.
  • the method as succinctly set forth above comprises: at least one step of decomposing the base of at least one filter into simple graphic primitives, called "portions";
  • each portion is included in one and only one pixel.
  • each fragment is included in one and only one pixel.
  • the intersections of the portions are empty and their meeting is equal to said base.
  • the intersections of the fragments are empty and their meeting is equal to said geometric shape.
  • a weighting step of the different areas is carried out.
  • each area is weighted according to a function whose value depends on the distance from said intersection to the center of the pixel to which said filter is applied.
  • a summation or addition of the possibly weighted intersection areas is performed, which forms the shape of the filter applied to the pixel. With each of these provisions, the numerical calculation step is easy and quick to implement.
  • the numerical calculation step comprises a step of multiplication by the ratio between the area of the pixel and the total area of the filter.
  • said filter has a rectangular base, each side of which is a multiple of the corresponding side of a pixel. . •
  • At least one first intersection area is calculated by implementing at least one fragment and at least one portion and at least one other area is calculated.
  • intersection for another pixel to which the same filter is applied, by implementing said first intersection area.
  • the inventor discovered that for the rectangular shapes described above, there were relationships between the intersection areas. For example, for a rectangular base that corresponds to four pixels (2 x 2) spanning nine pixels around the pixel to which the filter is applied, for each column or each line, the sums of the extreme areas are equal to central area (the calculation of 4 areas allows the calculation of 9 areas). For example, for a rectangular base that corresponds to nine pixels (3 x 3) extending over nine pixels around the pixel to which the filter is applied, for each column or each line, the end areas are each equal to the central area.
  • the color is weighted by a filter.
  • said filter may be, for example, Gaussian, sinusoidal, etc.
  • the shape of the filter is an integral of a polygonal shape.
  • the method as succinctly described above is carried out successively for successive pixels on the same line, by successively treating the successive lines of the image to constitute.
  • This so-called Scanline technique (or "Scanning Line”) makes it possible to reduce the number of calculations necessary to implement the method that is the subject of the present invention since the calculations of portions, fragments or intersection areas made for a pixel can at least partially reused for at least one pixel located near the pixel in question.
  • the present invention aims at a rasterization device of a geometrical shape, characterized in that it comprises: at least one means of decomposing the geometric form into simple graphic primitives, called "fragments" and
  • FIG. 1 represents a device according to one aspect of the present invention
  • FIG. 2 represents a succession of steps implemented in a particular embodiment of the method that is the subject of the present invention
  • FIG. 3 represents a succession of steps carrying out one of the steps illustrated in FIG. 2,
  • FIG. 5 represents a succession of steps carrying out one of the steps illustrated in FIG. 2
  • FIGS. 6A, 6B and 6C represent a succession of steps carrying out one of the steps illustrated in FIG. 2;
  • FIG. 7 represents a particular polygon
  • FIG. 8 represents pixel coordinates and a decomposition of a geometric shape into fragments in a particular embodiment of the method that is the subject of the present invention
  • FIG. 9 represents nine particular pixels represented in FIG. 8;
  • FIG. 10 shows the portions of a square-size filter of two-by-two pixel size applied to the central pixel illustrated in FIG. 8 as well as a part of the geometrical shape considered corresponding to said filter;
  • FIG. trapezoidal fragment of the central pixel illustrated in FIG. 9, the intersection areas of the nine filter portions extending on the central pixel illustrated in FIG. 9 with this trapezium-shaped fragment with the convention which has been represented at the top left, the intersection with the lower right portion,
  • FIG. 12 represents, for a rectangle-shaped fragment of the central pixel illustrated in FIG. 9, the intersection areas of the nine filter portions extending on the central pixel illustrated in FIG. 8 with this rectangle-shaped fragment with the same convention as for Figure 10,
  • FIG. 13 represents the addition of the areas represented in FIGS. 11 and 12,
  • FIG. 14 represents, for each pixel whose applied filter extends over the central pixel illustrated in FIG. 8, the various non-empty intersection areas of the fragments and portions that extend on said central pixel;
  • FIG. 15 represents nine intersection areas of the filter portions illustrated in FIG. 9 and the geometrical shape considered for synthesizing the color of the central pixel illustrated in FIG. 8,
  • FIG. 16 represents a logic diagram of steps implemented in a particular embodiment of the method that is the subject of the present invention.
  • FIG. 17 represents, schematically, the constitution of a particular filter.
  • simple polygon a polygon defined by a list of vertices and having no intersection between the segments connecting these vertices;
  • composite polygon a polygon defined by at least one list of vertices and having no intersection between the segments connecting these vertices;
  • arbitrary polygon a polygon defined by at least one list of vertices and possibly having intersections between the segments connecting these vertices.
  • this image is traditionally broken down into polygons.
  • the filling of one of these polygons is described, the other polygons being treated in the same way as described below or in another way, according to their defined complexity, for example, by Ie. number of vertices (the method described below is employed when the number of vertices is greater than a predetermined number.
  • a polygon is defined by a list of vertices through which the perimeter passes successively. On this perimeter, the summit preceding the first summit of the list is the last top of the list. Each vertex is defined by an abscissa "x" and an ordinate "y". Traditionally, the origin of the abscissa and the ordinate are at the bottom left corner of the image (or display).
  • a "monotone" polygon is called a monotone polygon in its vertical dimension, "y”.
  • a monotonic section is defined as a path passing through successive vertices of the polygon between a "lowest" vertex (a vertex whose neighboring vertex not in the monotonic section has an ordinate "y” greater than or equal to its own and, in case of equality, the next vertex has an ordinate "y” greater than or equal to its own, and so on) and a highest vertex (vertex whose neighboring vertex is not in the monotonic section has an ordinate "y” inferior or equal to its own and, in case of equality, the next vertex has an ordinate "y” inferior or equal to its own, and so on).
  • vertex A is "below" vertex B, signifies that the ordinate of vertex A is strictly less than the ordinate of vertex B.
  • the term “above” means that the ordinate of the first is strictly greater than the ordinate of the second.
  • FIG. 1 shows a computer 50 comprising a volatile memory 51, a non-volatile memory 52
  • the computer 50 is of known type, for example a PC (for "personal computer” or personal computer).
  • the non-volatile memory 52 retains a computer program allowing the processor 53 to implement the process steps illustrated in FIGS. 2A, 2B and 3.
  • the image memory 57 keeps a point-by-point representation of the image to be displayed on the screen.
  • the data output means may be an interface for remote transmission, for example a modem, a network card or a non-volatile data carrier, for example a digital compact.
  • the processor 53, the nonvolatile memory 52, the volatile memory 51, the data output means 58 and the image memory 57 together constitute the characteristic means of the image display device according to the present invention comprising a means for outputting a signal representative of an image and suitable processing means for decomposing a geometric shape defined by at least one ordered and cyclic list of vertices, to perform: at least one step of searching for monotonic sections on the succession of vertices defined by each said ordered list and the boundaries of these sections, according to at least one dimension and a direction; at least one step of grouping the two-by-two monotonic sections to define regions of said geometric form;
  • FIG. 2 shows steps implemented in a particular embodiment of the method that is the subject of the present invention.
  • a direction and direction of polygon filling is defined, for example, by default or implicitly, from bottom to top, ie horizontal line by horizontal line, in the direction of the polygons. orderly increasing.
  • determining a start vertex as shown in Figure 3, 'which is described below.
  • SX. Y designates the ordinate of the vertex SX (X taking all possible numerical values to define the vertices of the list of vertices which define the polygon),
  • the current vertex "SC" is defined as the first vertex named SO in the list of vertices defining the polygon, and the current vertex SC is defined as the provisional start vertex SD.
  • the new current vertex is defined as the vertex following the previous current vertex.
  • step 315 If the result of step 315 is negative, during a step 320, it is determined whether the ordinate of the current vertex is less than or equal to the ordinate of the provisional starting vertex. If the result of step 320 is negative, step 310 and the following steps are repeated. If the result of step 320 is positive, during a step 325, it defines as a new provisional starting summit, the current vertex and repeating step 310 and the following ones.
  • step 315 If the result of step 315 is positive, that is to say if the current vertex is the peak SO, during a step 330, the current starting vertex is defined as the current vertex. Then, during a step 335, defining as new current vertex the vertex following the previous current vertex in the list of vertices defining the polygon. During a step 340, it is determined whether the ordinate of the current vertex is equal to the ordinate of the provisional start vertex. If so, during a step 345, the new current vertex is defined as the current vertex and step 335 and the following ones are repeated. When the result of step 340 is negative, proceed to step 210, FIG.
  • step 205 we found a starting vertex which is one of the lowest vertices of the polygon and whose next vertex has an ordinate strictly greater than that of the starting vertex.
  • SMIN refers to a beginning vertex of monotonic section.
  • SMAX means a thin vertex of monotonic section
  • #SS (SX) means the vertex following the "SX" vertex
  • SENS means the current direction (the direction is positive, +1, when it corresponds to a growth of ordinates and negative, -1, when it corresponds to a decrease of the ordinates),
  • SS refers to the next vertex and “SC” refers to the current vertex.
  • FIG. 4 shows a step 405 during which the starting vertex is defined as the beginning vertex of the monotonic section, as the vertex following the starting vertex, and as the current direction, the positive direction.
  • the following vertex is defined as the current vertex, and as a new vertex following the vertex that follows the preceding preceding vertex, in the circular list of vertices defining the polygon.
  • a step 415 it is determined whether the current direction is the positive direction or the negative direction. If the current direction is the positive direction, during a step 420, it is determined whether the ordinate of the next vertex is strictly less than the ordinate of the current vertex. If so, during a step 425, a monotonic section is created in an array of monotonic sections and given the following attributes: SMIN, SMAX and SENS. Then, during a step 430, the current direction in the negative direction is passed, the SMIN to SS and the SMAX to SC, then repeating step 410 and the following. If the result of step 420 is negative, during a step 435, it is determined whether the ordinate of the next vertex is strictly greater than the ordinate of the current vertex. If no, repeat step 410 and the following. If so, during a step 440, SMAX is defined as the next vertex and step 410 and the following are repeated.
  • step 415 it is determined that the current direction is the negative direction
  • step 445 it is determined whether the ordinate of the next vertex is strictly greater than the ordinate of the current vertex. If so, during a step 450, a monotonic section is created in an array of monotonic sections and given the following attributes: SMIN, SMAX and SENS. Then, during a step 455, it is determined whether the vertex is the starting vertex. If not, during a step 460, we pass the current direction in the positive direction, the SMIN to SC and the SMAX to SS, then repeating step 410 and following. If the result of step 455 is positive, go to step 215 (see FIG. 2).
  • step 445 it is determined whether the ordinate of the next vertex is strictly less than the ordinate of the current vertex. If no, repeat step 410 and the following. If so, in a step 470, SMIN is defined as the next vertex and step 410 and the following are repeated.
  • step 205 all the monotonic sections of the polygon have been found and entered in the table of monotonic sections, which comprises, for each monotonic section, the following information:
  • the monotonic section table comprises the following monotonic sections:
  • step 215 the direction of the polygon is determined (see steps 505 and 510, FIG. 5). •;
  • the regions are determined and classified into internal regions, for which the interior of the polygon is between the two monotonic sections defining the region, and outer regions, for which the interior of the polygon is the outside of the two monotonic sections defining the region, according to the logic diagram illustrated in FIG. 5, starting from the end of step 510.
  • the following notations are used:
  • #NEWINTERNAL (Param1, Param2) is a function that adds a region to the list of internal regions, with the first parameter (Param 1) as the left monotonic section 0 and the second parameter (Param2) as the right monotonic section;
  • PTRSEC is a pointer to a monotonic section, initially pointing to the last monotonic section created in step 210 and
  • FIG. 5 shows a step 505 in which PTRBASE is assigned the value PTRSEC, the function # NEXT2SECS is carried out (PTRSEC) and ORDERBASE is assigned the value from the #SECSORDER function (SEC0, SEC1).
  • PTRSEC the function # NEXT2SECS is carried out
  • SEC0, SEC1 the function #SECSORDER function
  • SEC1 the function #NEW! NTERNAL
  • SECO #NEW! NTERNAL
  • step 510 amounts to determining the direction of the polygon: if ORDERBASE is "1", the direction of the polygon is in the opposite direction of clockwise;
  • PTRSEC PRTBASE. If yes, step 220 is completed. Otherwise, during a step 530, the function # NEXT2SECS (PTRSEC) is performed and the variable ORDER is assigned the value of the function #SECSORDER (SEC0, SEC1). Then, during a step 535, it is determined whether the variable ORDER takes the value of ORDERBASE. If yes, during a step 540, it is determined whether the variable ORDER takes the value "1". If yes, during a step 545, the function #NEWI NTERNAL (SECO, SEC1) is carried out and return to step 525. Otherwise, during a step 550, the function #NEWINTERNAL (SEC1 is performed , SECO) and return to step 525.
  • step 555 it is determined whether the variable ORDER takes the value "1". If so, during a step 560, the function #NEWEXTERNAL (SECO, SEC1) is carried out and we return to step 525. Otherwise, during a step 565, the function #NE WEXTE RN AL is performed. (SECI, SECO) and return to step 525.
  • step 220 the table of internal regions is available, which contains for each region the following information:
  • the 6 monotonic sections determine 3 regions, of which 2 are internal regions and 1 is an external region.
  • the 2 internal regions created have the following pairs of monotonic sections: no. of region left section right section 0 0 5
  • the external region created has the following pairs of monotonic sections: no. of region section left section right
  • the outer regions are sorted in order of increasing ordinates.
  • the internal regions are also sorted to save time in their use.
  • the polygon is decomposed into y-monotone polygons, and, optionally, the polygon is filled.
  • the logic diagram shown in FIGS. 6A to 6C is implemented.
  • the following notations are used:
  • NSTART means the number of internal regions remaining to be processed
  • NPLIT means the number of external regions remaining to be processed
  • NTEMP means the number of pointers in a temporary stack called “TEMP", LIFO type, pointers to y-monotone polygons
  • YM means a pointer to a y-monotone polygon defined by YMIN, its minimum ordinate (or start), YMAX, its maximum (or end) ordinate, a left monotonic section RG and a straight monotonic section RD,
  • RG means a left monotonic section (the points immediately to the left of this monotonic section are outside the polygon and the points immediately to the right of this monotonic section are in the polygon),
  • RD means a straight monotonic section (the points immediately to the right of this monotonic section are outside the polygon and the points immediately to the left of this monotonic section are in the polygon),
  • GSPLIT is a pointer to the current external region
  • - "# GS1 (Y, YMAX)" is the first outer region whose ordinate is greater than or equal to the current ordinate Y on the left and right monotonic sections and whose ordinate is strictly inferior to the current YMAX
  • #GSN (GSPLIT, YMAX) is the outer region following the current external region GSPLIT whose ordinate is greater than or equal to the ordinate ordinate on the left and right monotonic sections and whose ordinate is strictly lower than the YMAX current,
  • #RU (RG, RD, Y)" means the function of updating the left and right monotonic sections for a given Y-ordinate, that is, sets YCUR to the current ordinate and calculates the abscissa corresponding for XCUR to take this calculated value
  • #PUSH (RG, RD) means the function of creating a new y-monotone polygon with as RG attributes as left monotonic section and RD as right monotonic section, and storing a pointer on this polygon in the TEMP stack
  • #POP () is the function that removes the most recent pointer from the stack
  • NTEMP is defined as zero
  • NSPLIT is the number of external regions
  • NSTART is the value of the number of internal regions.
  • NTEMP is strictly greater than zero. If yes, during a step 615, YM is defined as the content of the stack TEMP, NTEMP is decremented, the function #POP () is performed and step 630 is proceeded to. If the result of the step 610 is negative, during a step 620, it is determined whether the number NSTART is strictly greater than zero. Otherwise, the process is complete.
  • a y-monotone polygon is created in an array of y-monotone polygons and assigned YMIN, which is the ordinate ordinate as the starting ordinate, and the left and right monotonic sections of Ia.
  • the pointer YM is set to the value of a pointer pointing to this internal region, NSTART is decremented and then step 630 is performed during which, for the y-monotone polygon, RG takes the value of a pointer to the left monotonic section of the inner region and RD takes the value of a pointer to the right monotonic section of the inner region.
  • step 640 the value of RG.SMAX.Y-RD.SMAX.Y is determined, the first term designating the SMAX ordinate for the left monotonic section and the second term designating the SMAX ordinate for the right monotonic section. If this value is strictly negative, step 640 is carried out. If it is zero, step 645 is carried out. If it is strictly positive, step 650 is carried out.
  • step 640 the left flag DG is set to 1, the right flag DD to zero, and YMAX is set to RG.SMAX.Y.
  • step 645 the left flag DG is set to 1
  • the right flag DD is set to 1
  • YMAX is set to RG.SMAX.Y.
  • step 650 the left flag DG is set to zero, the DD right flag at the value 1 and YMAX takes the RD value. SMAX. Y.
  • step 655 it is determined whether the number of NSPL1T of external regions remaining to be processed is strictly positive. Otherwise, during a step 660, GSPLIT is set to zero, which means there is no more split to process. If the result of step 655 is positive, during a step 665, GSPLIT is set to # GS1 (Y 1 YMAX), which can take the value "0" if there is no external region meeting the search criterion.
  • GSPLIT is different from zero. If so, during a step 675, the left and right monotonic sections are updated with the ordinate of GSPLIT. Then, in a step 680, it is determined whether #GST (RG, RD GSPLIT) is 1, that is, whether the outer region GSPLIT is between the monotonic sections RG and RD. If not, during a step 685, GSPLIT takes the value #GSN (GSPLIT, YMAX) and then repeats step 670 and following.
  • #GST RG, RD GSPLIT
  • step 690 two new y-monotone polygons are created with, respectively RG and the left monotonic section of GSPLIT, on the one hand and the right monotonic section of GSPLIT. and RD, on the other hand, and store in the stack TEMP, two pointers on these polygons, increment two NTEMP, remove the outer region GSPLIT from the list of external regions and close the y-monotone polygon YM current , that is to say that its variable YMAX is assigned the current ordinate, and then repeats step 610 and the following ones.
  • step 695 the left and right monotonic sections are updated with the YMAX ordinate.
  • step 700 it is determined whether the left flag is equal to 1. If yes, during a step 705, the pointer of the left monotonic section of the current y-monotone polygon is set to the value of the pointer on the current y-monotone polygon, the DG flag of the left monotonic section is set to "1".
  • step 705 or if the result of step 700 is negative during a step 710, it is determined whether the right flag is equal to 1.
  • the pointer of the right monotonic section of the current y-monotone polygon is set to the value of the pointer on the current y-monotone polygon, the flag DD of the right monotonic section is set to "1".
  • step 715 or if the result of step 710 is negative, during a step 720 (FIG. 6C), it is determined whether the left flag DG is equal to 1.
  • RG.NEXT the variable RM, monotonic melting section
  • RG. PREV the value of the pointer on the monotonic section preceding the left monotonic section.
  • a step 745 it is determined whether the variable RM is equal to the right monotonic section. If yes, repeat step 610 and the following steps. Otherwise, during a step 750, it is determined whether the flag DONE of the monotonic section RM is equal to 1. If yes, during a step 755, a new y-monotone polygon is created and attributed to it as left monotonic section, the left monotonic section of the polygon pointed to by the monotonic fusion section, RM. YM. RG, and, as straight monotonic section the current straight monotonic section RD and the NTEMP counter is incremented.
  • step 610 Following step 755 or if the result of step 750 is negative, step 610 and the following steps are repeated.
  • step 720 If the result of step 720 is negative, during a step 760, it is determined whether the direction of the straight monotonic section RD. SENS is positive. If yes, during a step 765, the variable RM, monotonic melting section, is set to the value RD. NEXT, that is, the value of the pointer on the monotonic section following the right monotonic section. Otherwise, during a step 770, the variable RM, monotonic merge section, is set to the value RD. PREV, that is, the value of the pointer on the monotonic section preceding the right monotonic section. Following one of the steps 765 or 770, during a step 775, the y-monotone polygon is closed, defining its YMAX.
  • a step 780 it is determined whether the variable RM is equal to the left monotonic section. If yes, repeat step 610 and the following steps. Otherwise, during a step 785, it is determined whether the flag DONE of the monotonic section RM is equal to 1. If yes, during a step 790, a new y-monotone polygon is created and attributed to it as left monotonic section, the current left monotonic section and as straight monotonic section, the right monotonic section of the polygon pointed by the monotonic melting section, RM.YM.RD and the NTEMP counter is incremented.
  • step 610 and the following steps are repeated.
  • the initial polygon is decomposed into y-monotone polygons, each y-monotone polygon being defined by a left monotonic section, a right monotonic section, a minimum ordinate and an ordinate. Max.
  • a complex geometric shape is thus decomposed into an ordered graph of simpler geometric shapes (here, y-monotone).
  • a decomposition into triangles or trapezoids is performed.
  • the filling of the polygon is performed during each of the steps 675 and 695. It is observed that the processing time of steps 200 to 220 is substantially proportional to the numbers of the vertices of the polygon to be broken down.
  • the duration of step 225 is on average proportional to the number of external regions multiplied by the logarithm of this number, and the duration of step 230 is, in practice, substantially a function of the number of split vertices.
  • the number of split vertices is greater than a predetermined number by the number of starts, or if the number of split vertices is a predetermined number of times greater than the number of vertex starts, it is treated the polygon from top to bottom (filling the "y-monotone" polygons by decreasing ordinates) and not, as indicated above, from bottom to top (filling of the "y-monotone" polygons in order of increasing ordinates).
  • the bounding boxes of each monotonic section are created and, in the course of the steps 665 and 685, only the external regions whose two abscissas are between the extreme abscissae of the bounding boxes of the two monotonic sections considered.
  • step 225 the same steps of determination of the internal regions and of the external regions are carried out as explained above and before carrying out the In step 225, the outer regions of each inner polygon are considered internal regions of the outer polygon and the inner regions of each inner polygon are considered as outer regions of the outer polygon.
  • the decomposition of the geometric form into simple (y-monotone) forms is performed once during a first phase and the filling is performed during a second phase. , which saves processing time.
  • the pixels of the image to be synthesized are square that the basis of the filter applied to each pixel is square with a side equal to an integer multiple of the pixel side, the latter side being considered unitary, for simplification of the description.
  • Each pixel is marked by the abscissa and ordered from its lower left corner, the lowest and the leftmost pixel has coordinates (0,0), the next one, on the right, on the same line has for coordinates (1, 0), the next, above the pixel (0,0) has for coordinates (0,1) and so on.
  • FIGS. 8 to 16 describe a particular embodiment of the method that is the subject of the present invention, the characteristics of which advantageously combine with characteristics of the decomposition method illustrated, by way of example, in FIGS. 1 to 7, and which concerns a method of filling a geometric shape which comprises:
  • fragments at least one step of decomposing the geometric shape into simple graphical primitives, called "fragments”, and at least one step of calculating the intersection area between each fragment and a filter whose surface is greater than the surface of a pixel.
  • filter portions which are each in a single pixel are implemented. In variant not shown, it does not implement a portion but a filter of a surface greater than that of a pixel, as indicated in the general definition of the method object of the invention mentioned above.
  • FIG. 8 shows the coordinates of the 36 lowest and most left pixels of an image, assuming that a geometric star shape 800 with straight sides, the image of which must be synthesized, was entirely there included.
  • the star geometrical shape 800 is, in FIG. 8, decomposed into simple primitives, or "fragments", each fragment being entirely included in a pixel, having a number of sides less than or equal to four and at least one vertical or horizontal side: triangles or quadrilaterals (rectangles, trapezes, ).
  • FIG. 9 shows the pixel of coordinates (2,4) and the eight pixels which are closest to it, with coordinates (1,5) to (3,5), (1,4), (3) , 4) and (1,3) to (3,3).
  • the various pixels were slightly separated, the separation interval not being considered in the various steps of the method that is the subject of the present invention.
  • the coordinate pixel (2, 4) comprises two fragments 901 and 902, the first one, at the top, of trapezoidal shape and the second, at the bottom, of rectangular shape.
  • FIG. 10 shows a square base filter, which will apply to the coordinate pixel (2,4), which is centered on the center of the coordinate pixel (2,4) and whose side is equal to twice on the side of a unit pixel.
  • FIG. 10 also shows the nine portions 1001 to 1009 which form a decomposition of the filter base, each portion being entirely included in a pixel and each pixel comprising at most one portion.
  • the central portion 1005 is square and covers the coordinate pixel (2,4), the portions 1001, 1003, 1007 and 1009 are square and cover the nearest quarter of the coordinate pixel (2,4) of the respective coordinate pixels. (1, 5), (3,5), (1,3) and (3,3).
  • Portions 1002, 1004, 1006, and 1008 are rectangles that overlap the nearest half of the coordinate pixel (2,4) of the respective coordinate pixels ((2,5), (1,4), (3,4 ) and 2,3).
  • FIG. 12 shows, for the fragment 902, the nine areas of intersection of this fragment with the filter portions included in the coordinate pixel (2,4) of the filters applied to the nine coordinate pixels (1, 5) to (3,3) shown in FIG. 9.
  • the same representation convention as in FIG. 11 was used.
  • FIG. 13 shows the sums of intersection areas illustrated in FIGS. 11 and 12, of the geometrical shape with the filter portions included in the coordinate pixel (2,4) of the filters applied to the nine coordinate pixels ( 1, 5) to (3.3) shown in FIG. 9.
  • FIG. 14 shows a matrix representation in which each line represents the different intersection areas, in the pixel whose coordinates are given at the beginning of the line, fragments and portions that are used to synthesize the pixel of coordinates ( 2.4). For the sake of simplicity, pixels that contain no fragments or pixels that do not contain any portion of the filter are not represented.
  • the color of the pixel (2,4) is, in a particular mode of filter having the base illustrated in FIG. 9, a filter taking only the value "1" over its entire base, without weighting (it is commonly referred to as " box filter "), the sum of the intersection areas shown in FIG. 14 divided by the surface of the filter base, here four times the unit area (see FIG. 10) and multiplied by the area of the pixel (2.4) ( here unitary surface).
  • Fig. 15 shows the summed area of intersection areas considered for the coordinate pixel (2,4) in the total area of the filter base.
  • the color of the synthesized image in the coordinate pixel (2,4) is equal to the ratio of the black surface shown in FIG. 15, over the total area of the filter. For example, if black is represented by the value 0 and white as 255, the gray level of the pixel (2,4) is about 184.
  • FIG. 16 shows different steps implemented in a particular embodiment of the method that is the subject of the present invention.
  • the method is initialized by zeroing the value of its various parameters (in particular x and y), determining at least one geometrical shape to be represented on an image to be synthesized, the number of pixels of the image to be synthesized and a filter to be applied to each pixel of the image to be synthesized.
  • applied filters pixels at the edge or corner of the image are constituted by truncation of the base of the current filter.
  • Figure 16 we consider the filter whose base is illustrated in Figure 10 and whose value is "1" on the entire base.
  • the portions of the base of the current filter are determined.
  • the decomposition of the filter base into portions is such that each portion is included in a single pixel.
  • a step 1503 consider the pixel whose coordinates are (x, y).
  • the fragments of each geometric shape are determined for the coordinate pixel (x, y) and for the eight pixels surrounding this pixel, if they exist. Fragmenting is done in such a way that each created fragment is included in one and only one pixel. These fragments are stored in memory as a linked list of fragments per pixel. Thus, each pixel has the list of all the fragments included in itself. When a fragment has already been determined during a previous step 1504, it is read in memory and not determined again, to reduce the processing times.
  • step 1505 for each fragment determined during step 1504, the intersection area between the fragment considered and each portion of the filter is calculated and this area is memorized with respect to the pixel whose filter comprises this portion of filter.
  • step 1506 for the pixel of coordinates (x, y), the total intersection area between the geometrical shape and the base of the filter is calculated by adding together all the intersection areas of the portions of the filter applied to the coordinate pixel (x, y) with the different fragments of each geometric shape. Then we multiply this surface by the color of this geometric shape and add the results. Then, we multiply the result of this addition by the ratio between the area of a pixel and the area of the filter, namely in this case% or 0.25.
  • step 1507 the result of step 1506 is written in a final image memory, for the coordinate pixel (x, y).
  • step 1508 it is determined if x corresponds to the last pixel of a line. If not, the value of x is incremented, step 1509 and return to step 1504. If the result of step 1508 is positive, during a step 1510, it is determined whether y is the last line of the image to be synthesized. If no, the value of y is incremented and the value of x is reset to 0, step 1511, and step 1504 is returned. If the result of step 1510 is positive, the synthesis of the image is complete. .
  • a statistical perturbation for example of the "Poisson distribution” type, is applied to the coordinates of the various geometrical elements, namely the BASE of the filter, and / or the PORTIONS of the filter, and / or the fragments of the form. geometrical to rasterize. Indeed, as recalled by R. Cook in his article "Stochastic Sampling in
  • FIG. 17 represents, schematically, the constitution of a particular filter, the shape of which is an integral of a polygonal shape.
  • the right part of FIG. 17 indicates the correspondence of the polygonal shape, here pyramidal, with pixels and then the section of the shape of the corresponding filter defined as the integral of the polygonal shape when the top of the pyramid travels the pixel.
  • the left part of FIG. 17 indicates the correspondence of the polygonal shape, here cubic, with pixels and then the section of the shape of the corresponding filter defined as the integral of the polygonal shape.

Abstract

The inventive method for filling a geometrical shape consists in decomposing a geometrical shape into primary simple graphical elements called fragments (1504) and in calculating, at least once, an intersection area (1505) between each fragment and a filter whose surface is greater than a pixel surface. For example said method involves at least one stage for decomposing the base of at least one filter into primary simple graphical elements (1501) called portions , at least one stage for calculating the intersection areas between each fragment and each portion (1505) and, for each pixel, at least one stage for digitally calculating an intersection area function which forms the shape of the filter applied to the pixel (1506) and gives at least one colour element to the pixel to which said filter is applied.

Description

PROCEDE ET DISPOSITIF DE REMPLISSAGE D'UNE FORME GEOMETRIQUE METHOD AND DEVICE FOR FILLING A GEOMETRIC FORM
La présente invention vise une nouvelle méthode de remplissage d'une forme géométrique offrant une solution simple et efficace aux problèmes de qualité et/ou de vitesse, inhérents à toutes les méthodes actuelles.The present invention aims a new method of filling a geometric shape offering a simple and effective solution to problems of quality and / or speed, inherent in all current methods.
Une image numérique est constituée d'un nombre fini d'unités élémentaires, appelées pixels, qui représentent chacune une portion de l'image dans ses dimensions spatiales horizontales et verticales. Chaque pixel est caractérisé au minimum par une couleur uniforme, et peut contenir d'autres informations (profondeur, opacité, etc.). Dans la suite de ce document, chaque pixel est considéré être de forme carrée, d'arête unitaire. Les images numériques peuvent être acquises par des dispositifs comme les scanners, les appareils photo ou caméscopes numériques, mais peuvent aussi être créées directement par des programmes informatiques, par exemple à partir d'informations géométriques saisies par l'utilisateur, ou bien générées automatiquement. Une étape obligatoire est le passage d'une information stockée sous forme vectorielle (continue) à sa représentation numérique (discrète). Cette étape, implémentée dans une caméra sous la forme d'un convertisseur analogique/digital ou ADC, est communément appelée la rastérisation dans le cas de la synthèse d'une image numérique par un ordinateur. La rastérisation consiste simplement à afficher (remplir) au moins une forme géométrique dans une image numérique.A digital image consists of a finite number of elementary units, called pixels, which each represent a portion of the image in its horizontal and vertical spatial dimensions. Each pixel is characterized at least by a uniform color, and may contain other information (depth, opacity, etc.). In the remainder of this document, each pixel is considered to be of square shape, of unitary edge. Digital images can be acquired by devices such as scanners, digital cameras or camcorders, but can also be created directly by computer programs, for example from geometric information entered by the user, or generated automatically. A mandatory step is the passage of information stored in vector form (continuous) to its digital representation (discrete). This step, implemented in a camera in the form of an analog / digital converter or ADC, is commonly called rasterization in the case of the synthesis of a digital image by a computer. Rasterization simply consists of displaying (filling out) at least one geometric shape in a digital image.
Toute méthode de rastérisation d'une forme géométrique peut être décomposée en deux étapes distinctes, répétées au moins une fois pour chaque pixel considéré de l'image numérique : 1 - au moins une étape de calcul d'au moins une information grâce aux données géométriques continues. Dans la suite de ce document, cette étape est appelée "LECTURE". 2 - au moins une étape d'utilisation de cette information pour, optionnellement, calculer au moins une couleur et écrire chaque information de couleur dans au moins un pixel. Dans la suite de ce document, cette étape est appelée "ECRITURE". La technique de rastérisation utilisée par les premiers algorithmes de remplissage de primitives géométriques (cercles, polygones, etc.), souvent appelée en anglais "Uniform Point Sampling" (ou "Echantillonnage Uniforme de Point") peut être décomposée de la façon suivante :Any method of rasterization of a geometric shape can be decomposed into two distinct steps, repeated at least once for each pixel considered in the digital image: 1 - at least one step of computing at least one piece of information thanks to the geometric data continuous. In the remainder of this document, this step is called "READ". 2 - at least one step of using this information to, optionally, calculate at least one color and write each color information in at least one pixel. In the rest of this document, this step is called "WRITING". The rasterization technique used by the first algorithms for filling geometric primitives (circles, polygons, etc.), often referred to as "Uniform Point Sampling" (or "Uniform Point Sampling") can be decomposed in the same way next :
Pour chaque pixel caractérisé par ses coordonnées (X, Y) considéré,For each pixel characterized by its coordinates (X, Y) considered,
- LECTURE : On teste si le point aux coordonnées (X + 0,5, Y + 0,5) (correspondant au centre du pixel) est à l'intérieur ou à l'extérieur de la forme géométrique. On calcule une information de type booléenne, avec 2 valeurs possibles : "dedans" ou "dehors" ;- READING: One tests if the point with the coordinates (X + 0,5, Y + 0,5) (corresponding to the center of the pixel) is inside or outside the geometrical form. We compute information of Boolean type, with 2 possible values: "inside" or "outside";
- ECRITURE : Si le point est inclus dans la forme géométrique (l'information calculée précédemment vaut "dedans"), la couleur du pixel aux coordonnées (X, Y) est mise à la couleur de la forme géométrique.- WRITE: If the point is included in the geometric form (the previously calculated information is "in"), the color of the pixel at the coordinates (X, Y) is set to the color of the geometric shape.
On considère ci dessus qu'un pixel est un point discret, et non pas un carré d'arête et de surface unitaire. On effectue en fait un échantillonnage de la fonction continue définissant la forme géométrique à une fréquence de 1 par pixel, puis une reconstruction non pondérée des échantillons. Les images synthétisées par cette technique souffrent de nombreux défauts visibles tels que des effets d'escalier, et des trames non désirées.It is considered above that a pixel is a discrete point, and not a square of edge and unit area. In fact, a sampling of the continuous function defining the geometric shape at a frequency of 1 per pixel is performed, followed by an unweighted reconstruction of the samples. The images synthesized by this technique suffer from many visible defects such as staircase effects, and unwanted frames.
La rastérisation idéale d'une forme géométrique peut être définie mathématiquement comme l'échantillonnage à une fréquence infinie d'une fonction continue (étape deThe ideal rasterization of a geometric shape can be mathematically defined as the sampling at an infinite frequency of a continuous function (step of
LECTURE), suivi de la reconstruction de cette fonction par convolution des échantillons calculés avec un filtre défini par la fonction "sin(x) / x" et de taille lui aussi infinie (étape d'ECRITURE). Cette approche théorique de la rastérisation fut pour la première fois décrite par F. Crow dans son article "The Aliasing Problem in Computer-Generated Shaded Images (Communications of the ACM, November 1977, Vol. 20, N0 11 , Pages 799-805). Les méthodes utilisant cette approche d'échantillonnage/reconstruction sont communément appelées "Weighted Area Sampling" (ou "Echantillonnage Pondéré de Surface"). En pratique, il est impossible d'échantillonner une fonction à une fréquence infinie, tout comme il est impossible d'appliquer un filtre de taille infinie aux échantillons calculés. On classifie habituellement les défauts créés par les implémentations de cette méthode de rastérisation en deux grandes catégories, selon leur cause :READING), followed by the reconstruction of this function by convolution of the samples calculated with a filter defined by the "sin (x) / x" function and of size also infinite (WRITE step). This theoretical approach to rasterization was first described by F. Crow in his article "The Problem Aliasing in Computer-Generated Images Shaded (Communications of the ACM, November 1977, Vol. 20, N 0 11, Pages 799-805 Methods using this sampling / reconstruction approach are commonly referred to as "Weighted Area Sampling", in practice it is impossible to sample a function at an infinite frequency, just as it is It is impossible to apply an infinite-size filter to calculated samples Usually, defects created by implementations of this rasterization method are classified into two broad categories, depending on their cause:
- Echantillonnage à une fréquence trop faible (non infinie). Les défauts visibles dus à une fréquence d'échantillonnage trop faible sont dans la suite de ce document appelés ALIASING. Ces défauts sont aussi parfois appelés PRE-ALIASING. - Taille du filtre de convolution trop petite (non infinie) ou fonction du filtre de convolution non adaptée. Les défauts visibles dus à une taille de filtre de convolution trop petite, ou à une fonction de filtre de convolution inadaptée sont dans la suite de ce document appelés RASTERlNG. Ces défauts sont aussi parfois appelés POST-ALIASING.- Sampling at a frequency too low (not infinite). The visible defects due to a sampling frequency that is too low are in the following of this document called ALIASING. These defects are also sometimes called PRE-ALIASING. - Size of the convolution filter too small (not infinite) or function of the convolution filter not adapted. Visible defects due to a convolutional filter size that is too small, or to an inadequate convolution filter function, are hereafter referred to as RASTERlNG. These defects are also sometimes called POST-ALIASING.
Les défauts d'ALIASING (ou PRE-ALIASING) peuvent être atténués par exemple par un sur-échantillonnage et/ou l'utilisation de techniques stochastiques, et les défauts de RASTERING (ou POST-ALIASING) peuvent être eux aussi atténués par exemple par l'utilisation de formes particulières de filtres (filtre triangulaire, gaussien, t-sinc, etc.), et/ou par l'utilisation d'une taille de filtre de convolution plus grande. Dans la suite de ce document, nous considérons qu'un filtre est caractérisé par sa BASE et sa FORME. Par exemple, un filtre pyramidal (en anglais "tent filter") a une BASE plane carrée et un sommet en dehors du plan de la base. Partant de la remarque que l'échantillonnage d'un fonction à une fréquence infinie correspond en fait à l'intégration de cette fonction, E. Catmull a proposé dans son article "A Hidden Algorithm With Anti-Aliasing" (Proceeding of SIGGRAPH 78, Atlanta, Georgia, August 23-25, 1978) une méthode de rastérisation appelée à tort "Unweighted Area Sampling" (ou "Echantillonnage non Pondéré de Surface"). Celle-ci consiste à décomposer la forme géométrique en primitives simples inclues dans un et un seul pixel, à calculer l'aire de recouvrement de l'ensemble des primitives inclues dans chaque pixel, puis à écrire la valeur de couleur multipliée par le rapport entre l'aire de recouvrement et l'aire totale d'un pixel. Cette technique peut être décomposée de la façon suivante :The defects of ALIASING (or PRE-ALIASING) can be mitigated, for example by oversampling and / or the use of stochastic techniques, and the defects of RASTERING (or POST-ALIASING) can also be attenuated for example by the use of particular forms of filters (triangular filter, Gaussian, t-sinc, etc.), and / or by using a larger convolution filter size. In the remainder of this document, we consider that a filter is characterized by its BASE and its FORM. For example, a pyramidal filter (in English "tent filter") has a square BASE plane and a vertex outside the plane of the base. Starting from the remark that the sampling of a function at an infinite frequency corresponds in fact to the integration of this function, E. Catmull proposed in his article "A Hidden Algorithm With Anti-Aliasing" (Proceeding of SIGGRAPH 78, Atlanta, Georgia, August 23-25, 1978) a rasterization method wrongly referred to as "Unweighted Area Sampling" (or "Unweighted Surface Sampling"). This consists of breaking down the geometric shape into simple primitives included in one and only one pixel, calculating the area of overlap of all the primitives included in each pixel, then writing the color value multiplied by the ratio between the coverage area and the total area of one pixel. This technique can be broken down as follows:
Pour chaque pixel caractérisé par ses coordonnées (X, Y) considéré : - LECTURE : On calcule l'aire totale d'intersection entre le carré de coordonnées (X, Y), (X + 1 , Y + 1) et la forme géométrique. Ceci est effectué facilement par une décomposition préalable de la forme géométrique en primitives simples telles que des triangles, des trapèzes et des rectangles, toutes inclues dans le pixel considéré, décomposition effectuée grâce, par exemple, à l'utilisation d'un algorithme de "Ligne de Balayage" (Scanline) ; - ECRITURE : Si cette aire est non nulle, la couleur de pixel aux coordonnées (X, Y) est mise à la couleur de la forme géométrique multipliée par le rapport entre l'aire d'intersection et l'aire totale d'un pixel.For each pixel characterized by its coordinates (X, Y) considered: - READ: One calculates the total area of intersection between the square of coordinates (X, Y), (X + 1, Y + 1) and the geometrical form . This is easily done by a prior decomposition of the geometric shape into simple primitives such as triangles, trapezoids and rectangles, all included in the pixel under consideration, decomposition carried out thanks, for example, to the use of an algorithm of " Scanning Line "(Scanline); - WRITE: If this area is non-zero, the pixel color at the coordinates (X, Y) is set to the color of the geometric shape multiplied by the ratio between the intersection area and the total area of a pixel .
Cette méthode ne souffre d'aucun ALIASING (ou PRE-ALIASING), l'étape de LECTURE étant constituée d'une intégration et non d'un échantillonnage. Cependant, l'étape d'ECRITURE étant non pondérée (pas d'opération équivalente à la convolution par un filtre), la méthode dite d'échantillonnage non pondéré de surface souffre, contrairement aux méthodes d'échantillonnage pondéré de surface, de très forts et très visibles effets de type RASTERING.This method does not suffer from any ALIASING (or PRE-ALIASING), the READING step consisting of an integration and not a sampling. However, since the WRITE step is unweighted (no operation equivalent to convolution by a filter), the so-called unweighted surface sampling method suffers, in contrast to the weighted surface sampling methods, very strong and very visible effects of type RASTERING.
Selon un premier aspect, la présente invention vise un procédé de remplissage d'une forme géométrique, caractérisé en ce qu'il comporte :According to a first aspect, the present invention aims a method of filling a geometric shape, characterized in that it comprises:
- au moins une étape de décomposition de la forme géométrique en primitives graphiques simples, appelées "fragments" etat least one step of decomposing the geometric form into simple graphic primitives, called "fragments" and
- au moins une étape de calcul de l'aire d'intersection entre chaque fragment et un filtre dont la surface est supérieure à la surface d'un pixel. Ce procédé, que l'on peut appeler "Intégration Pondérée de Pixel", est le premier à posséder les avantages combinés des deux principales techniques actuelles, à savoir : - comme l'échantillonnage non pondéré de surface, il n'y aucune création de défauts d'ALIASING etat least one step of calculating the area of intersection between each fragment and a filter whose surface is greater than the surface of a pixel. This process, which may be termed "Weighted Pixel Integration", is the first to possess the combined advantages of the two main current techniques, namely: - like unweighted surface sampling, there is no creation of defaults of ALIASING and
- comme l'échantillonnage pondéré de surface, il y a atténuation des défauts de RASTERING, en fonction de la forme et de la taille du filtre.- like weighted surface sampling, RASTERING defects are attenuated, depending on the shape and size of the filter.
Il est important de noter que ce procédé est aussi la première méthode de rastérisation pondérée (avec possibilité d'utilisation d'un filtre de n'importe quelle base et forme), mais sans échantillonnage, puisque basé sur des opérations géométriques exactes telles que intersection, union, addition et d'intégration.It is important to note that this method is also the first weighted rasterization method (with the possibility of using a filter of any base and shape), but without sampling, since it is based on exact geometric operations such as intersection , union, addition and integration.
Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci- dessus comporte : - au moins une étape de décomposition de la base d'au moins un filtre en primitives graphiques simples, appelées "portions" ;According to particular features, the method as succinctly set forth above comprises: at least one step of decomposing the base of at least one filter into simple graphic primitives, called "portions";
- au moins une étape de calcul des aires d'intersection entre chaque fragment et chaque portion etat least one step of calculating the areas of intersection between each fragment and each portion and
- pour chaque pixel, au moins une étape de calcul numérique d'une fonction des aires d'intersection composant la forme du filtre appliquée au pixel, ladite fonction donnant au moins un élément de couleur pour ledit pixel auquel est appliqué ledit filtre.for each pixel, at least one step of numerical calculation of a function of the intersection areas comprising the shape of the filter applied to the pixel, said function giving at least one color element for said pixel to which said filter is applied.
Selon des caractéristiques particulières, au cours de l'étape de décomposition de la base en portions, chaque portion est incluse dans un et un seul pixel.According to particular features, during the step of decomposing the base into portions, each portion is included in one and only one pixel.
Selon des caractéristiques particulières, au cours de l'étape de décomposition de la forme géométrique en fragments, chaque fragment est inclus dans un et un seul pixel.According to particular features, during the step of decomposing the geometric shape into fragments, each fragment is included in one and only one pixel.
Selon des caractéristiques particulières, au cours de l'étape de décomposition de la base d'au moins un filtre, les intersections des portions sont vides et leur réunion est égale à ladite base.According to particular characteristics, during the step of decomposing the base of at least one filter, the intersections of the portions are empty and their meeting is equal to said base.
Selon des caractéristiques particulières, au cours de l'étape de décomposition de la forme géométrique, les intersections des fragments sont vides et leur réunion est égale à ladite forme géométrique.According to particular features, during the step of decomposing the geometric shape, the intersections of the fragments are empty and their meeting is equal to said geometric shape.
Selon des caractéristiques particulières, au cours de l'étape de calcul numérique, on effectue une étape de pondération des différentes aires.According to particular characteristics, during the numerical calculation step, a weighting step of the different areas is carried out.
Selon des caractéristiques particulières, au cours de l'étape de pondération, on pondère chaque aire selon une fonction dont la valeur dépend de la distance de ladite intersection au centre du pixel auquel est appliqué ledit filtre. Par exemple, la fonction décroissante est une fonction inverse, c'est à dire, f(d) = z * (dmax - d), où "d" est la distance considérée, "z" une constante quelconque, et "dmax" la valeur maximale que peut prendre d. Selon des caractéristiques particulières, au cours de l'étape de calcul numérique, on effectue une sommation ou addition des aires d'intersection, éventuellement pondérées, composant la forme du filtre appliquée au pixel. Grâce à chacune de ces dispositions, l'étape de calcul numérique est aisée et rapide à mettre en oeuvre.According to particular characteristics, during the weighting step, each area is weighted according to a function whose value depends on the distance from said intersection to the center of the pixel to which said filter is applied. For example, the decreasing function is an inverse function, that is, f (d) = z * (dmax - d), where "d" is the distance considered, "z" is any constant, and "dmax" the maximum value that d. According to particular characteristics, during the numerical calculation step, a summation or addition of the possibly weighted intersection areas is performed, which forms the shape of the filter applied to the pixel. With each of these provisions, the numerical calculation step is easy and quick to implement.
Selon des caractéristiques particulières, l'étape de calcul numérique comporte une étape de multiplication par le rapport entre l'aire du pixel et l'aire totale du filtre. Selon des caractéristiques particulières, au cours de l'étape de décomposition de la base d'un filtre, ledit filtre possède une base rectangulaire dont chaque côté est un multiple du côté correspondant d'un pixel. . According to particular features, the numerical calculation step comprises a step of multiplication by the ratio between the area of the pixel and the total area of the filter. According to particular features, during the step of decomposing the base of a filter, said filter has a rectangular base, each side of which is a multiple of the corresponding side of a pixel. .
Grâce à ces dispositions, les différentes étapes du procédé peuvent être plus aisées et rapides à mettre en oeuvre. Selon des caractéristiques particulières, au cours de l'étape de calcul des aires d'intersection, on calcule au moins une première aire d'intersection en mettant en oeuvre au moins un fragment et au moins une portion et on calcule au moins une autre aire d'intersection, pour un autre pixel auquel le même filtre est appliqué, en mettant en oeuvre ladite première aire d'intersection. En effet, l'inventeur a découvert que pour les formes rectangulaires décrites ci-dessus, il existait des relations entre les aires d'intersection. Par exemple, pour une, base rectangulaire qui correspond à quatre pixels (2 x 2) s'étendant sur neuf pixels autour du pixel auquel le filtre est appliqué, pour chaque colonne ou chaque ligne, les sommes des aires extrêmes sont égales à l'aire centrale (le calcul de 4 aires permet le calcul des 9 aires). Par exemple pour une base rectangulaire qui correspond à neuf pixels (3 x 3) s'étendant sur neuf pixels autour du pixel auquel le filtre est appliqué, pour chaque colonne ou chaque ligne, les aires extrêmes sont chacune égales à l'aire centrale.Thanks to these provisions, the different process steps can be easier and quick to implement. According to particular characteristics, during the step of calculating the intersection areas, at least one first intersection area is calculated by implementing at least one fragment and at least one portion and at least one other area is calculated. intersection, for another pixel to which the same filter is applied, by implementing said first intersection area. Indeed, the inventor discovered that for the rectangular shapes described above, there were relationships between the intersection areas. For example, for a rectangular base that corresponds to four pixels (2 x 2) spanning nine pixels around the pixel to which the filter is applied, for each column or each line, the sums of the extreme areas are equal to central area (the calculation of 4 areas allows the calculation of 9 areas). For example, for a rectangular base that corresponds to nine pixels (3 x 3) extending over nine pixels around the pixel to which the filter is applied, for each column or each line, the end areas are each equal to the central area.
Selon des caractéristiques particulières, au cours de l'étape de calcul numérique, on pondère la couleur par un filtre. On observe que ledit filtre peut être, par exemple, gaussien, sinusoïdal, etc.. A cet effet, il suffit de calculer le centre de gravité de l'intersection entre chaque fragment et chaque portion, puis la distance entre ce centre de gravité et le centre du pixel auquel Ie filtre est appliqué.According to particular characteristics, during the numerical calculation step, the color is weighted by a filter. It is observed that said filter may be, for example, Gaussian, sinusoidal, etc. For this purpose, it is sufficient to calculate the center of gravity of the intersection between each fragment and each portion, then the distance between this center of gravity and the center of the pixel to which the filter is applied.
Selon des caractéristiques particulières, la forme du filtre est une intégrale d'une forme polygonale.According to particular characteristics, the shape of the filter is an integral of a polygonal shape.
Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci- dessus est effectué successivement pour des pixels successifs sur une même ligne, en traitant successivement les lignes successives de l'image à constituer. Cette technique dite de Scanline (ou "Ligne de Balayage") permet de réduire le nombre de calculs nécessaires pour implémenter Ie procédé objet de la présente invention puisque les calculs de portions, de fragments ou d'aires d'intersection effectuées pour un pixel peuvent être, au moins partiellement réutilisés pour au moins un pixel se trouvant à proximité du pixel considéré. Selon un deuxième aspect, la présente invention vise un dispositif de rastérisation d'une forme géométrique, caractérisée en ce qu'il comporte : - au moins un moyen de décomposition de la forme géométrique en primitives graphiques simples, appelées "fragments" etAccording to particular features, the method as succinctly described above is carried out successively for successive pixels on the same line, by successively treating the successive lines of the image to constitute. This so-called Scanline technique (or "Scanning Line") makes it possible to reduce the number of calculations necessary to implement the method that is the subject of the present invention since the calculations of portions, fragments or intersection areas made for a pixel can at least partially reused for at least one pixel located near the pixel in question. According to a second aspect, the present invention aims at a rasterization device of a geometrical shape, characterized in that it comprises: at least one means of decomposing the geometric form into simple graphic primitives, called "fragments" and
- au moins un moyen de calcul de l'aire d'intersection entre chaque fragment et un filtre dont la surface est supérieure à la surface d'un pixel. Les avantages, buts et caractéristiques du deuxième aspect de la présente invention étant similaires à ceux du premier aspect de la présente invention, ils ne sont pas rappelés ici.at least one means for calculating the area of intersection between each fragment and a filter whose area is greater than the area of a pixel. Since the advantages, aims and features of the second aspect of the present invention are similar to those of the first aspect of the present invention, they are not recalled here.
D'autres avantages, buts et caractéristiques de la présente invention ressortiront de la description qui va suivre, faite dans un but explicatif et nullement limitatif en regard des dessins annexés dans lesquels :Other advantages, aims and features of the present invention will emerge from the description which follows, made for explanatory and non-limiting purposes with reference to the accompanying drawings in which:
- la figure 1 représente un dispositif conforme à un aspect de la présente invention,FIG. 1 represents a device according to one aspect of the present invention,
- la figure 2 représentent une succession d'étapes mises en oeuvre dans un mode de réalisation particulier du procédé objet de la présente invention,FIG. 2 represents a succession of steps implemented in a particular embodiment of the method that is the subject of the present invention,
- la figure 3 représente une succession d'étapes réalisant l'une des étapes illustrées en figure 2,FIG. 3 represents a succession of steps carrying out one of the steps illustrated in FIG. 2,
-' la figure 4 représente une succession d'étapes réalisant l'une des étapes illustrées en figure 2,- 'Figure 4 shows a succession of steps providing any of the steps illustrated in Figure 2,
- la figure 5 représente une succession d'étapes réalisant l'une des étapes illustrées en figure 2, - les figures 6A, 6B et 6C représentent une succession d'étapes réalisant l'une des étapes illustrées en figure 2,FIG. 5 represents a succession of steps carrying out one of the steps illustrated in FIG. 2; FIGS. 6A, 6B and 6C represent a succession of steps carrying out one of the steps illustrated in FIG. 2;
- la figure 7 représente un polygone particulier,FIG. 7 represents a particular polygon,
- la figure 8 représente des coordonnées de pixels et une décomposition d'une forme géométrique en fragments dans un mode particulier de réalisation du procédé objet de la présente invention,FIG. 8 represents pixel coordinates and a decomposition of a geometric shape into fragments in a particular embodiment of the method that is the subject of the present invention,
- la figure 9 représente neuf pixels particuliers représentés en figure 8,FIG. 9 represents nine particular pixels represented in FIG. 8;
- la figure 10 représente neutportions d'un filtre de base carrée de dimension deux pixels sur deux appliquée au pixel central illustré en figure 8 ainsi qu'une partie de la forme géométrique considérée correspondant audit filtre, - la figure 11 -représente, pour un fragment en forme de trapèze du pixel central illustré en figure 9, les aires d'intersection des neuf portions de filtre s'étendant sur le pixel central illustré en figure 9 avec ce fragment en forme de trapèze avec la convention que l'on a représenté en haut à gauche, l'intersection avec la portion en bas à droite,FIG. 10 shows the portions of a square-size filter of two-by-two pixel size applied to the central pixel illustrated in FIG. 8 as well as a part of the geometrical shape considered corresponding to said filter; FIG. trapezoidal fragment of the central pixel illustrated in FIG. 9, the intersection areas of the nine filter portions extending on the central pixel illustrated in FIG. 9 with this trapezium-shaped fragment with the convention which has been represented at the top left, the intersection with the lower right portion,
- la figure 12 représente, pour un fragment en forme de rectangle du pixel central illustré en figure 9, les aires d'intersection des neuf portions de filtre s'étendant sur le pixel central illustré en figure 8 avec ce fragment en forme de rectangle avec la même convention que pour la figure 10, - la figure 13 représente l'addition des aires représentées en figures 11 et 12,FIG. 12 represents, for a rectangle-shaped fragment of the central pixel illustrated in FIG. 9, the intersection areas of the nine filter portions extending on the central pixel illustrated in FIG. 8 with this rectangle-shaped fragment with the same convention as for Figure 10, FIG. 13 represents the addition of the areas represented in FIGS. 11 and 12,
- la figure 14 représente, pour chaque pixel dont le filtre appliqué s'étend sur le pixel central illustré en figure 8, les différentes aires d'intersection non vides des fragments et des portions qui s'étendent sur ledit pixel central, - la figure 15 représente neuf aires d'intersection des portions de filtre illustrées en figure 9 et de la forme géométrique considérée pour synthétiser la couleur du pixel central illustré en figure 8,FIG. 14 represents, for each pixel whose applied filter extends over the central pixel illustrated in FIG. 8, the various non-empty intersection areas of the fragments and portions that extend on said central pixel; FIG. 15 represents nine intersection areas of the filter portions illustrated in FIG. 9 and the geometrical shape considered for synthesizing the color of the central pixel illustrated in FIG. 8,
- la figure 16 représente un logigramme d'étapes mises en oeuvre dans un mode particulier de réalisation du procédé objet de la présente invention et - la figure 17 représente, schématiquement, la constitution d'un filtre particulier.FIG. 16 represents a logic diagram of steps implemented in a particular embodiment of the method that is the subject of the present invention; and FIG. 17 represents, schematically, the constitution of a particular filter.
Dans toute la description, on utilise les définitions suivantes :Throughout the description, the following definitions are used:
- "polygone simple" : un polygone défini par une liste de sommets et ne comportant aucune intersection entre les segments reliant ces sommets ;- "simple polygon": a polygon defined by a list of vertices and having no intersection between the segments connecting these vertices;
- "polygone composite" : un polygone défini par au moins une liste de sommets et ne comportant aucune intersection entre les segments reliant ces sommets ;- "composite polygon": a polygon defined by at least one list of vertices and having no intersection between the segments connecting these vertices;
- "polygone quelconque" : un polygone défini par au moins une liste de sommets et pouvant comporter des intersections entre les segments reliant ces sommets.- "arbitrary polygon": a polygon defined by at least one list of vertices and possibly having intersections between the segments connecting these vertices.
Dans la description, on ne décrit que le traitement des polygones simples et des polygones composites, étant entendu que la présente invention n'est pas limitée à ces types particuliers de polygones.In the description, only the processing of single polygons and composite polygons is described, it being understood that the present invention is not limited to these particular types of polygons.
Dans la description, on décrit d'abord au moins un mode particulier de réalisation d'un procédé et un dispositif de décomposition d'une forme géométrique qui se combine favorablement à la présente invention (figures 1 à 7) puis un mode particulier de réalisation du procédé objet de la présente invention (figures 8 à 16) avant de décrire des combinaisons avantageuses des différents procédés.In the description, at least one particular embodiment of a method and a device for decomposing a geometric shape that combines favorably with the present invention (FIGS. 1 to 7) and then a particular embodiment of the invention are described first. process of the present invention (Figures 8 to 16) before describing advantageous combinations of different methods.
Pour définir une image de synthèse, on décompose traditionnellement cette image en polygones. Dans la suite de la description, on décrit le remplissage de l'un de ces polygones, les autres polygones étant traités de la même manière que décrit ci-dessous ou d'une autre manière, selon leur complexité définie, par exemple, par Ie nombre de sommets (le procédé décrit ci-dessous étant employé lorsque le nombre de sommets est supérieur à un nombre prédéterminé.To define a synthetic image, this image is traditionally broken down into polygons. In the remainder of the description, the filling of one of these polygons is described, the other polygons being treated in the same way as described below or in another way, according to their defined complexity, for example, by Ie. number of vertices (the method described below is employed when the number of vertices is greater than a predetermined number.
On définit un polygone par une liste de sommets par lesquels le périmètre passe successivement. Sur ce périmètre, le sommet précédent le premier sommet de la liste est le dernier sommet de la liste. Chaque sommet est défini par une abscisse "x" et une ordonnée "y". Traditionnellement, l'origine de l'abscisse et de l'ordonnée sont au coin en bas à gauche de l'image (ou de l'afficheur).A polygon is defined by a list of vertices through which the perimeter passes successively. On this perimeter, the summit preceding the first summit of the list is the last top of the list. Each vertex is defined by an abscissa "x" and an ordinate "y". Traditionally, the origin of the abscissa and the ordinate are at the bottom left corner of the image (or display).
Dans toute la description, on appelle polygone "y-monotone" un polygone monotone dans sa dimension verticale, "y".Throughout the description, a "monotone" polygon is called a monotone polygon in its vertical dimension, "y".
On définit une section monotonique comme un chemin passant par des sommets successifs du polygone entre un sommet "le plus bas" (sommet dont le sommet voisin qui n'est pas dans la section monotonique possède une ordonnée "y" supérieure ou égale à la sienne et, en cas d'égalité, Ie sommet suivant possède une ordonnée "y" supérieure ou égale à la sienne et, ainsi de suite) et un sommet le plus haut (sommet dont le sommet voisin qui n'est pas dans la section monotonique possède une ordonnée "y" inférieure ou égale à la sienne et, en cas d'égalité, le sommet suivant possède une ordonnée "y" inférieure ou égale à la sienne et, ainsi de suite). Le terme suivant, le sommet A est "en dessous" du sommet B, signifie que l'ordonnée du sommet A est strictement inférieure à l'ordonnée du sommet B. Respectivement, le terme "au dessus" signifie que l'ordonnée du premier est strictement supérieure à l'ordonnée du second.A monotonic section is defined as a path passing through successive vertices of the polygon between a "lowest" vertex (a vertex whose neighboring vertex not in the monotonic section has an ordinate "y" greater than or equal to its own and, in case of equality, the next vertex has an ordinate "y" greater than or equal to its own, and so on) and a highest vertex (vertex whose neighboring vertex is not in the monotonic section has an ordinate "y" inferior or equal to its own and, in case of equality, the next vertex has an ordinate "y" inferior or equal to its own, and so on). The next term, vertex A is "below" vertex B, signifies that the ordinate of vertex A is strictly less than the ordinate of vertex B. Respectively, the term "above" means that the ordinate of the first is strictly greater than the ordinate of the second.
On définit un sens de parcours du périmètre du polygone, positif ou négatif, correspondant, dans la littérature technique aux termes "dans le sens des aiguilles d'une montre'1 (en anglais clockwise ou CW) et "dans le sens inverse des aiguilles d'une montre" (en anglais conterclockwise ou CCW).One defines a direction of course of the perimeter of the polygon, positive or negative, corresponding, in the technical literature to the terms "in the direction of the clockwise" 1 (in English clockwise or CW) and "in the opposite direction of the needles of a watch "(in English conterclockwise or CCW).
On observe, en figure 1 , un ordinateur 50 comportant une mémoire volatile 51 , une mémoire non volatile 52| un processeur 53, un écran d'affichage 54, un clavier 55, un dispositif de pointage 56, une mémoire d'image 57 et un moyen de sortie de données 58.FIG. 1 shows a computer 50 comprising a volatile memory 51, a non-volatile memory 52 | a processor 53, a display screen 54, a keyboard 55, a pointing device 56, an image memory 57 and a data output means 58.
L'ordinateur 50 est de type connu, par exemple un PC (pour "personal computer" ou ordinateur personnel). La mémoire non volatile 52 conserve un programme d'ordinateur permettant au processeur 53 d'implémenter les étapes du procédé illustrées en figures 2A, 2B et 3. La mémoire d'image 57 conserve une représentation point par point de l'image à afficher sur l'écran d'affichage 54 ou à transmettre par le moyen de sortie de données 58. Le moyen de sortie de données peut être une interface pour transmission à distance, par exemple un modem, une carte réseau ou un support de données non volatile, par exemple un compact dise numérique.The computer 50 is of known type, for example a PC (for "personal computer" or personal computer). The non-volatile memory 52 retains a computer program allowing the processor 53 to implement the process steps illustrated in FIGS. 2A, 2B and 3. The image memory 57 keeps a point-by-point representation of the image to be displayed on the screen. the display screen 54 or to be transmitted by the data output means 58. The data output means may be an interface for remote transmission, for example a modem, a network card or a non-volatile data carrier, for example a digital compact.
Le processeur 53, la mémoire non volatile 52, la mémoire volatile 51 , le moyen de sortie de données 58 et le mémoire d'image 57 constituent, conjointement les moyens caractéristiques du dispositif d'affichage d'images objet de la présente invention comportant un moyen de sortie d'un signal représentatif d'une image et des moyens de traitement adaptés, pour décomposer une forme géométrique définie par au moins une liste ordonnée et cyclique de sommets, à effectuer : - au moins une étape de recherche de sections monotoniques sur la succession de sommets définie par chaque dite liste ordonnée et des bornes de ces sections, selon au moins une dimension et un sens ; - au moins une étape de regroupement des sections monotoniques deux à deux pour définir des régions de ladite forme géométrique ;The processor 53, the nonvolatile memory 52, the volatile memory 51, the data output means 58 and the image memory 57 together constitute the characteristic means of the image display device according to the present invention comprising a means for outputting a signal representative of an image and suitable processing means for decomposing a geometric shape defined by at least one ordered and cyclic list of vertices, to perform: at least one step of searching for monotonic sections on the succession of vertices defined by each said ordered list and the boundaries of these sections, according to at least one dimension and a direction; at least one step of grouping the two-by-two monotonic sections to define regions of said geometric form;
- au moins une étape de classification des dites régions en régions "internes" pour lesquelles l'intérieur de la forme est à l'intérieur de la région considérée, et en régions "externes" pour lesquelles l'intérieur de la forme est à l'extérieur de la région considérée ;at least one step of classifying said regions into "internal" regions for which the inside of the shape is inside the region in question, and into "external" regions for which the inside of the shape is at outside the region;
- une étape de tri des régions externes en fonction de leur coordonnées dans une dimension et un sens ; . •• a step of sorting the outer regions according to their coordinates in a dimension and a direction; . ••
- une étape de décomposition de la forme géométrique en formes géométriques internes simples, décomposition mettant en oeuvre les régions internes et externes. On observe, en figure 2, des étapes mises en oeuvre dans un mode de réalisation particulier du procédé objet de la présente invention.a step of decomposing the geometrical shape into simple internal geometrical shapes, decomposition using the internal and external regions. FIG. 2 shows steps implemented in a particular embodiment of the method that is the subject of the present invention.
Au cours d'une étape 200, on définit une direction et un sens de remplissage de polygones, par exemple, par défaut ou implicitement, de bas en haut, c'est-à-dire ligne horizontale par ligne horizontale, dans le sens des ordonnées croissantes. Au cours d'une étape 205, on détermine un sommet de départ, comme indiqué en figure 3,' que l'on décrit ci-après.During a step 200, a direction and direction of polygon filling is defined, for example, by default or implicitly, from bottom to top, ie horizontal line by horizontal line, in the direction of the polygons. orderly increasing. During a step 205, determining a start vertex, as shown in Figure 3, 'which is described below.
Pour la concision de la description, pour la description de la figure 3, on utilise les notations suivantes :For the brevity of the description, for the description of FIG. 3, the following notations are used:
- "SC" désigrieje'sommet courant, - "SD" désigne le sommet de départ qui est déterminé selon le logigramme illustré en figure 3,- "SC" désigrieje current peak, - "SD" refers to the departure node which is determined according to the logic diagram illustrated in Figure 3,
- "SX. Y" désigne l'ordonnée du sommet SX (X prenant toutes les valeurs numériques possibles pour définir les sommets de la liste des sommets qui définissent le polygone),- "SX. Y" designates the ordinate of the vertex SX (X taking all possible numerical values to define the vertices of the list of vertices which define the polygon),
- "#SS(SX)" désigne le sommet suivant le sommet "SX" et - #ROUTE(SMIN, SMAX1SENS) crée une section monotonique avec SMIN et SMAX comme extrémités de section monotonique et SENS comme sens.- "#SS (SX)" means the vertex following the vertex "SX" and - #ROUTE (SMIN, SMAX 1 SENS) creates a monotonic section with SMIN and SMAX as monotonic section ends and SENS as sense.
Au cours d'une étape 305, on définit comme sommet courant "SC" le premier sommet nommé SO de la liste des sommets définissant le polygone, et on définit comme sommet de départ SD provisoire le sommet courant SC. Au cours d'une étape 310, on définit comme nouveau sommet courant le sommet suivant le précédent sommet courant. Au cours d'une étape 315, on détermine si le sommet courant est le sommet SO, c'est-à-dire le premier sommet de la liste des sommets définissant le polygone et aussi le sommet suivant le dernier sommet de cette liste.During a step 305, the current vertex "SC" is defined as the first vertex named SO in the list of vertices defining the polygon, and the current vertex SC is defined as the provisional start vertex SD. During a step 310, the new current vertex is defined as the vertex following the previous current vertex. During a step 315, it is determined whether the current vertex is the vertex SO, that is to say the first vertex of the list of vertices defining the polygon and also the vertex following the last vertex of this list.
Si le résultat de l'étape 315 est négatif, au cours d'une étape 320, on détermine si l'ordonnée du sommet courant est inférieure ou égale à l'ordonnée du sommet de départ provisoire. Si le résultat de l'étape 320 est négatif, on réitère l'étape 310 et les étapes suivantes. Si le résultat de l'étape 320 est positif, au cours d'une étape 325, on définit comme nouveau sommet de départ provisoire, le sommet courant et on réitère l'étape 310 et les suivantes.If the result of step 315 is negative, during a step 320, it is determined whether the ordinate of the current vertex is less than or equal to the ordinate of the provisional starting vertex. If the result of step 320 is negative, step 310 and the following steps are repeated. If the result of step 320 is positive, during a step 325, it defines as a new provisional starting summit, the current vertex and repeating step 310 and the following ones.
Si le résultat de l'étape 315 est positif, c'est-à-dire si le sommet courant est le sommet SO, au cours d'une étape 330, on définit comme sommet courant le sommet de départ provisoire. Puis, au cours d'une étape 335, on définit comme nouveau sommet courant le sommet suivant le précédent sommet courant dans la liste des sommets définissant le polygone. Au cours d'une étape 340, on détermine si l'ordonnée du sommet courant est égale à l'ordonnée du sommet de départ provisoire. Si oui, au cours d'une étape 345, on définit comme nouveau sommet de départ, le sommet courant et on réitère l'étape 335 et les suivantes. Lorsque le résultat de l'étape 340 est négatif, on passe à l'étape 210, figure 2.If the result of step 315 is positive, that is to say if the current vertex is the peak SO, during a step 330, the current starting vertex is defined as the current vertex. Then, during a step 335, defining as new current vertex the vertex following the previous current vertex in the list of vertices defining the polygon. During a step 340, it is determined whether the ordinate of the current vertex is equal to the ordinate of the provisional start vertex. If so, during a step 345, the new current vertex is defined as the current vertex and step 335 and the following ones are repeated. When the result of step 340 is negative, proceed to step 210, FIG.
On observe qu'à la suite de l'étape 205, on a trouvé un sommet de départ qui fait partie des sommets les plus bas du polygone et dont le sommet suivant possède une ordonnée strictement supérieure à celle du sommet de départ.It is observed that following step 205, we found a starting vertex which is one of the lowest vertices of the polygon and whose next vertex has an ordinate strictly greater than that of the starting vertex.
Au cours d'une étape 210, on détermine toutes les sections monotoniques du polygone, selon le logigramme illustré en figure 4. Pour la description de la figure 4, on utilise les notations suivantes :During a step 210, all the monotonic sections of the polygon are determined according to the logic diagram illustrated in FIG. 4. For the description of FIG. 4, the following notations are used:
- "SD" désigne le sommet de départ,- "SD" means the starting vertex,
- "SMIN" désigne un sommet début de section monotonique.- "SMIN" refers to a beginning vertex of monotonic section.
- "SMAX" désigne un sommet fin de section monotonique, - "#SS(SX)" désigne Ie sommet suivant le sommet "SX",- "SMAX" means a thin vertex of monotonic section, - "#SS (SX)" means the vertex following the "SX" vertex,
- "SENS" désigne le sens courant (le sens est positif, +1 , lorsqu'il correspond à une croissance des ordonnées et négatif, -1 , lorsqu'il correspond à une décroissance des ordonnées),- "SENS" means the current direction (the direction is positive, +1, when it corresponds to a growth of ordinates and negative, -1, when it corresponds to a decrease of the ordinates),
- "SS" désigne Ie sommet suivant et - "SC" désigne Ie sommet courant."SS" refers to the next vertex and "SC" refers to the current vertex.
En figure 4, on observe une étape 405 au cours de laquelle on définit comme sommet début de section monotonique le sommet de départ, comme sommet suivant le sommet de départ, et comme sens courant, Ie sens positif.FIG. 4 shows a step 405 during which the starting vertex is defined as the beginning vertex of the monotonic section, as the vertex following the starting vertex, and as the current direction, the positive direction.
Au cours d'une étape 410, on définit comme sommet courant, le sommet suivant, et comme nouveau sommet suivant Ie sommet qui succède au précédant sommet suivant, dans la liste circulaire des sommets définissant le polygone.During a step 410, the following vertex is defined as the current vertex, and as a new vertex following the vertex that follows the preceding preceding vertex, in the circular list of vertices defining the polygon.
Au cours d'une étape 415, on détermine si Ie sens courant est le sens positif ou le sens négatif. Si le sens courant est le sens positif, au cours d'une étape 420, on détermine si l'ordonnée du sommet suivant est strictement inférieure à l'ordonnée du sommet courant. Si oui, au cours d'une étape 425, on crée une section monotonique dans un tableau de sections monotoniques et on lui donne les attributs suivants : SMIN, SMAX et SENS. Puis, au cours d'une étape 430, on passe le sens courant au sens négatif, le SMIN à SS et le SMAX à SC, puis on réitère l'étape 410 et les suivantes. Si le résultat de l'étape 420 est négatif, au cours d'une étape 435, on détermine si l'ordonnée du sommet suivant est strictement supérieure à l'ordonnée du sommet courant. Si non, on réitère l'étape 410 et les suivantes. Si oui, au cours d'une étape 440, on définit SMAX comme étant le sommet suivant et on réitère l'étape 410 et les suivantes.During a step 415, it is determined whether the current direction is the positive direction or the negative direction. If the current direction is the positive direction, during a step 420, it is determined whether the ordinate of the next vertex is strictly less than the ordinate of the current vertex. If so, during a step 425, a monotonic section is created in an array of monotonic sections and given the following attributes: SMIN, SMAX and SENS. Then, during a step 430, the current direction in the negative direction is passed, the SMIN to SS and the SMAX to SC, then repeating step 410 and the following. If the result of step 420 is negative, during a step 435, it is determined whether the ordinate of the next vertex is strictly greater than the ordinate of the current vertex. If no, repeat step 410 and the following. If so, during a step 440, SMAX is defined as the next vertex and step 410 and the following are repeated.
Si au cours de l'étape 415, on détermine que le sens courant est le sens négatif, au cours d'une étape 445, on détermine si l'ordonnée du sommet suivant est strictement supérieure à l'ordonnée du sommet courant. Si oui, au cours d'une étape 450, on crée une section monotonique dans un tableau de sections monotoniques et on lui donne les attributs suivants : SMIN, SMAX et SENS. Puis, au cours d'une étape 455, on détermine si le sommet est le sommet de départ. Si non, au cours d'une étape 460, on passe le sens courant au sens positif, le SMIN à SC et le SMAX à SS, puis on réitère l'étape 410 et les suivantes. Si le résultat de l'étape 455 est positif, on passe à l'étape 215 (voir figure 2).If during step 415, it is determined that the current direction is the negative direction, during a step 445, it is determined whether the ordinate of the next vertex is strictly greater than the ordinate of the current vertex. If so, during a step 450, a monotonic section is created in an array of monotonic sections and given the following attributes: SMIN, SMAX and SENS. Then, during a step 455, it is determined whether the vertex is the starting vertex. If not, during a step 460, we pass the current direction in the positive direction, the SMIN to SC and the SMAX to SS, then repeating step 410 and following. If the result of step 455 is positive, go to step 215 (see FIG. 2).
Si le résultat de l'étape 445 est négatif, au cours d'une étape 465, on détermine si l'ordonnée du sommet suivant est strictement inférieure à l'ordonnée du sommet courant. Si non, on réitère l'étape 410 et les suivantes. Si oui, au cours d'une étape 470, on définit SMIN comme étant le sommet suivant et on réitère l'étape 410 et les suivantes.If the result of step 445 is negative, during a step 465, it is determined whether the ordinate of the next vertex is strictly less than the ordinate of the current vertex. If no, repeat step 410 and the following. If so, in a step 470, SMIN is defined as the next vertex and step 410 and the following are repeated.
On observe qu'à la suite de l'étape 205, toutes les sections monotoniques du polygone ont été trouvées et inscrites dans le tableau des sections monotoniques, qui comporte, pour chaque section monotonique, les informations suivantes :It is observed that following step 205, all the monotonic sections of the polygon have been found and entered in the table of monotonic sections, which comprises, for each monotonic section, the following information:
- sommet début de section monotonique "SMIN",- beginning summit of monotonic section "SMIN",
- sommet fin de section monotonique "SMAX",- top end of monotonic section "SMAX",
- "YCUR", l'ordonnée courante,- "YCUR", the current ordinate,
- "XCUR", l'abscisse courante, - "SENS", le sens de parcours (positif, si le sommet le plus bas est avant le sommet le plus haut dans la liste des sommets qui définissent le polygone, sinon négatif),- "XCUR", the current abscissa, - "SENS", the direction of travel (positive, if the lowest vertex is before the highest vertex in the list of vertices that define the polygon, if not negative),
- pointeur sur la section monotonique suivante* "NEXT",- pointer to the next monotonic section * "NEXT",
- pointeur sur la section monotonique "PREV" et- pointer to the monotonic section "PREV" and
- drapeau "DONE" (mis à la valeur "faux" par défaut, qui indique si la section monotonique a déjà été entièrement exploitée pour la décomposition et éventuellement le remplissage du polygone (voir plus loin).- "DONE" flag (set to "false" default, which indicates if the monotonic section has already been fully exploited for the decomposition and possibly the filling of the polygon (see below).
Par exemple, pour le polygone illustré en figure 7, la table des sections monotoniques comporte les sections monotoniques suivantes :For example, for the polygon illustrated in FIG. 7, the monotonic section table comprises the following monotonic sections:
n noo.. d dee d déébbuutt d dee f fiinn d dee sens section suivante section précédente section section sectionn noo .. d dddddd dd ffinn d ee dd sense dee next section previous section section section section
0 5 6 positif 1 5 1 7 6 négatif 2 00 5 6 positive 1 5 1 7 6 negative 2 0
2 7 10 positif 3 12 7 10 positive 3 1
3 12 11 négatif 4 23 12 11 negative 4 2
4 13 14 positif 5 34 13 14 positive 5 3
5 4 14 négatif 0 45 4 14 negative 0 4
Au cours de l'étape 215, on détermine le sens du polygone (voir étapes 505 et 510, figure 5). • ; In step 215, the direction of the polygon is determined (see steps 505 and 510, FIG. 5). •;
Au cours d'une étape 220, on détermine les régions et les classifie en régions internes, pour lesquelles l'intérieur du polygone est entre les deux sections monotoniques 10 définissant la région, et régions externes, pour lesquelles l'intérieur du polygone est à l'extérieur des deux sections monotoniques définissant la région, selon le logigramme illustré en figure 5, à partir de la fin de l'étape 510. Pour la description de la figure 5, on utilise les notations suivantes :During a step 220, the regions are determined and classified into internal regions, for which the interior of the polygon is between the two monotonic sections defining the region, and outer regions, for which the interior of the polygon is the outside of the two monotonic sections defining the region, according to the logic diagram illustrated in FIG. 5, starting from the end of step 510. For the description of FIG. 5, the following notations are used:
- "#SECSORDER(Param1 , Param2)" est une fonction qui retourne la valeur "1" si la 1.5 première section monotonique (Param 1) est à gauche de la deuxième section monotonique- "#SECSORDER (Param1, Param2)" is a function that returns the value "1" if the first 1.5 monotonic section (Param 1) is to the left of the second monotonic section
(Param2) et retourne la valeur "0" si la première section monotonique (Param 1) est à droite de la deuxième section monotonique (Param2) ;(Param2) and returns the value "0" if the first monotonic section (Param 1) is to the right of the second monotonic section (Param2);
- "#NEWINTERNAL(Param1, Param2)" est une fonction qui rajoute une région à la liste des régions internes, avec le premier paramètre (Param 1) comme section monotonique 0 gauche et le deuxième paramètre (Param2) comme section monotonique droite ;- "#NEWINTERNAL (Param1, Param2)" is a function that adds a region to the list of internal regions, with the first parameter (Param 1) as the left monotonic section 0 and the second parameter (Param2) as the right monotonic section;
- "#NEWEXTERNAL(Param1 , Param2)" est une fonction qui rajoute une région externe à la liste des régions externes, avec le premier paramètre (Parami) comme section monotonique gauche et le deuxième paramètre (Param2) comme section monotonique droite ; 5 - "#NEXT(Param)" est une fonction qui retourne la section monotonique suivante de la section monotonique passée en paramètre (Param) ;- "#NEWEXTERNAL (Param1, Param2)" is a function that adds an external region to the list of external regions, with the first parameter (Parami) as the left monotonic section and the second parameter (Param2) as the right monotonic section; 5 - "#NEXT (Param)" is a function that returns the next monotonic section of the monotonic section passed as parameter (Param);
- "#NEXT2SECS(Param)" est une fonction qui retourne les deux sections monotoniques suivants la section Param, en valeurs SECO et SEC1 et incrémente de deux (prend le suivant du suivant) la valeur de PTRSEC ; 0 - "PTRBASE" est un pointeur sur une section monotonique ;- "# NEXT2SECS (Param)" is a function that returns the two monotonic sections following the Param section, in SECO and SEC1 values and increments the value of PTRSEC by two (takes the next one from the next); 0 - "PTRBASE" is a pointer to a monotonic section;
- "PTRSEC" est un pointeur sur une section monotonique, pointant initialement sur la dernière section monotonique créée lors de l'étape 210 et- "PTRSEC" is a pointer to a monotonic section, initially pointing to the last monotonic section created in step 210 and
- "ORDERBASE" et "ORDER" sont des variables prenant les valeurs numériques "0" OU 1T. 5 En figure 5, on observe une étape 505 au cours de laquelle on attribue à PTRBASE la valeur PTRSEC, on effectue la fonction #NEXT2SECS(PTRSEC) et on attribue à ORDERBASE la valeur issue de la fonction #SECSORDER(SEC0, SEC1 ). Au cours d'une étape 510, on détermine si ORDERBASE vaut "1". Si oui, au cours d'une étape 515, on effectue la fonction #NEW!NTERNAL(SECO, SEC1). Sinon, au cours d'une étape 520, on effectue la fonction (#NEWINTERNAL(SEC1 , SECO)."ORDERBASE" and "ORDER" are variables taking the numerical values "0" OR 1 T. 5 FIG. 5 shows a step 505 in which PTRBASE is assigned the value PTRSEC, the function # NEXT2SECS is carried out (PTRSEC) and ORDERBASE is assigned the value from the #SECSORDER function (SEC0, SEC1). During in a step 510, it is determined whether ORDERBASE is "1". If so, during a step 515, the function #NEW! NTERNAL (SECO, SEC1) is performed. Otherwise, during a step 520, the function (#NEWINTERNAL (SEC1, SECO) is performed.
On observe que l'étape 510 revient à déterminer le sens du polygone : - si ORDERBASE vaut "1", le sens du polygone est dans le sens inverse des aiguilles d'une montre ;It is observed that step 510 amounts to determining the direction of the polygon: if ORDERBASE is "1", the direction of the polygon is in the opposite direction of clockwise;
- si ORDERBASE vaut "0", le sens du polygone est dans le sens des aiguilles d'une montre.- if ORDERBASE is "0", the direction of the polygon is in a clockwise direction.
A la suite de l'une ou l'autre des étapes 515 et 520, au cours d'une étape 525, on détermine si PTRSEC vaut PRTBASE. Si oui, l'étape 220 est achevée. Sinon, au cours d'une étape 530, on effectue la fonction #NEXT2SECS(PTRSEC) et on attribue à la variable ORDER la valeur de la fonction #SECSORDER(SEC0, SEC1). Puis, au cours d'une étape 535, on détermine si la variable ORDER prend la valeur de ORDERBASE. Si oui, au cours d'une étape 540, on détermine si la variable ORDER prend la valeur "1". Si oui, au cours d'une étape 545, on effectue la fonction #NEWI NTERNAL(SECO, SEC1) et on retourne à l'étape 525. Sinon, au cours d'une étape 550, on effectue la fonction #NEWINTERNAL(SEC1 , SECO) et on retourne à l'étape 525.Following either of the steps 515 and 520, in a step 525, it is determined whether PTRSEC is PRTBASE. If yes, step 220 is completed. Otherwise, during a step 530, the function # NEXT2SECS (PTRSEC) is performed and the variable ORDER is assigned the value of the function #SECSORDER (SEC0, SEC1). Then, during a step 535, it is determined whether the variable ORDER takes the value of ORDERBASE. If yes, during a step 540, it is determined whether the variable ORDER takes the value "1". If yes, during a step 545, the function #NEWI NTERNAL (SECO, SEC1) is carried out and return to step 525. Otherwise, during a step 550, the function #NEWINTERNAL (SEC1 is performed , SECO) and return to step 525.
Si le résultat de l'étape 535 est négatif, au cours d'une étape 555, on détermine si la variable ORDER prend la valeur "1". Si oui, au cours d'une étape 560, on effectue la fonction #NEWEXTERNAL(SECO, SEC1) et on retourne à l'étape 525. Sinon, au cours d'une étape 565, on effectue la fonction #N E WEXTE RN AL(SECI , SECO) et on retourne à l'étape 525.If the result of step 535 is negative, during a step 555, it is determined whether the variable ORDER takes the value "1". If so, during a step 560, the function #NEWEXTERNAL (SECO, SEC1) is carried out and we return to step 525. Otherwise, during a step 565, the function #NE WEXTE RN AL is performed. (SECI, SECO) and return to step 525.
A la suite de l'étape 220, on dispose de la table des régions internes, qui contient pour chaque région les informations suivantes :Following step 220, the table of internal regions is available, which contains for each region the following information:
- section mononotique gauche, - section monotonique droite,- left mononotic section, - right monotonic section,
- ordonnée de départ de la région ; et la table des régions externes, qui contient pour chaque région les informations suivantes :- order of departure from the region; and the external region table, which contains for each region the following information:
- section mononotique gauche,- left mononotic section,
- section monotonique droite, - ordonnée de départ de la région ;- right monotonic section, - ordered departure from the region;
Par exemple, pour le polygone illustré en figure 7, les 6 sections monotoniques déterminent 3 régions, dont 2 sont des régions internes et 1 est une région externe. Les 2 régions internes créées ont les couples de sections monotoniques suivants : no. de région section gauche section droite 0 0 5For example, for the polygon illustrated in FIG. 7, the 6 monotonic sections determine 3 regions, of which 2 are internal regions and 1 is an external region. The 2 internal regions created have the following pairs of monotonic sections: no. of region left section right section 0 0 5
1 2 11 2 1
La région externe créée a les couples de sections monotoniques suivants : no. de région section gauche section droiteThe external region created has the following pairs of monotonic sections: no. of region section left section right
0 3 40 3 4
Au cours d'une étape 225, on trie les régions externes par ordre des ordonnées croissantes. En variante, au cours de cette étape de tri, on trie aussi les régions internes pour gagner du temps dans leur utilisation.During a step 225, the outer regions are sorted in order of increasing ordinates. Alternatively, during this sorting step, the internal regions are also sorted to save time in their use.
Au cours d'une étape 230, on décompose le polygone en polygones y-monotones, et, éventuellement, on remplit le polygone. A cet effet, on met en oeuvre le logigramme illustré en figures 6A à 6C. Pour la description des figures 6A à 6C, on utilise les notations suivantes :During a step 230, the polygon is decomposed into y-monotone polygons, and, optionally, the polygon is filled. For this purpose, the logic diagram shown in FIGS. 6A to 6C is implemented. For the description of FIGS. 6A to 6C, the following notations are used:
- "NSTART" désigne le nombre de régions internes restant à traiter,- "NSTART" means the number of internal regions remaining to be processed,
- "NSPLIT" désigne le nombre de régions externes restant à traiter,- "NSPLIT" means the number of external regions remaining to be processed,
- "NTEMP" désigne le nombre de pointeurs dans une pile temporaire appelée "TEMP", de type LIFO, pointeurs sur des polygones y-monotones, - "YM" désigne un pointeur sur un polygone y-monotone définit par YMIN, son ordonnée minimum (ou de début), YMAX, son ordonnée maximum (ou de fin), une section monotonique gauche RG et une section monotonique droite RD,- "NTEMP" means the number of pointers in a temporary stack called "TEMP", LIFO type, pointers to y-monotone polygons, - "YM" means a pointer to a y-monotone polygon defined by YMIN, its minimum ordinate (or start), YMAX, its maximum (or end) ordinate, a left monotonic section RG and a straight monotonic section RD,
- "RG" désigne une section monotonique gauche (les points immédiatement à gauche de cette section monotonique sont en dehors du polygone et les points immédiatement à droite de cette section monotonique sont dans Ie polygone),- "RG" means a left monotonic section (the points immediately to the left of this monotonic section are outside the polygon and the points immediately to the right of this monotonic section are in the polygon),
- "RD" désigne une section monotonique droite (les points immédiatement à droite de cette section monotonique sont en dehors du polygone et les points immédiatement à gauche de cette section monotonique sont dans le polygone),- "RD" means a straight monotonic section (the points immediately to the right of this monotonic section are outside the polygon and the points immediately to the left of this monotonic section are in the polygon),
- "RM" un pointeur temporaire de section monotonique utilisé pour les tests de fusion, - "RG. SMAX. Y" l'ordonnée de SMAX pour la section monotonique gauche,- "RM" a temporary pointer of monotonic section used for the fusion tests, - "RG.SMAX.Y" the ordinate of SMAX for the left monotonic section,
- "RD.SMAX.Y" l'ordonnée de SMAX pour la section monotonique droite,- "RD.SMAX.Y" the ordinate of SMAX for the straight monotonic section,
- "DG" est un drapeau (lié à la section monotonique gauche),- "DG" is a flag (linked to the left monotonic section),
- "DD" est un drapeau (lié à la section monotonique droite),- "DD" is a flag (linked to the right monotonic section),
- "GSPLIT" est un pointeur sur la région externe courante, - "#GS1 (Y, YMAX)" est la première région externe dont l'ordonnée est supérieure ou égale à l'ordonnée courante Y sur les sections monotoniques gauche et droite et dont l'ordonnée est strictement inférieure au YMAX courant,- "GSPLIT" is a pointer to the current external region, - "# GS1 (Y, YMAX)" is the first outer region whose ordinate is greater than or equal to the current ordinate Y on the left and right monotonic sections and whose ordinate is strictly inferior to the current YMAX,
- "#GSN(GSPLIT, YMAX)" est la région externe suivant la région externe courante GSPLIT dont l'ordonnée est supérieure ou égale à l'ordonnée courante sur les sections monotoniques gauche et droite et dont l'ordonnée est strictement inférieure au YMAX courant,- "#GSN (GSPLIT, YMAX)" is the outer region following the current external region GSPLIT whose ordinate is greater than or equal to the ordinate ordinate on the left and right monotonic sections and whose ordinate is strictly lower than the YMAX current,
- "#GST(RG, RD, GSPLIT)" est le résultat d'un test si la région externe courante GSPLIT coupe, c'est-à-dire se trouve entre, les sections monotoniques droites et gauche pour l'ordonnée courante, ce résultat prenant la valeur zéro s'il est négatif et la valeur 1 s'il est positif,- "#GST (RG, RD, GSPLIT)" is the result of a test if the current external region GSPLIT cuts, that is to say, lies between, the right and left monotonic sections for the current ordinate, this result taking the value zero if it is negative and the value 1 if it is positive,
- "#RU(RG, RD, Y)" désigne la fonction de mettre à jour les sections monotoniques gauche et droite pour une ordonnée Y donnée, c'est-à-dire met YCUR à l'ordonnée courante et calcule l'abscisse correspondante pour que XCUR prenne cette valeur calculée,- "#RU (RG, RD, Y)" means the function of updating the left and right monotonic sections for a given Y-ordinate, that is, sets YCUR to the current ordinate and calculates the abscissa corresponding for XCUR to take this calculated value,
- "#PUSH(RG, RD)" désigne la fonction de créer un nouveau polygone y-monotone avec comme attributs RG comme section monotonique gauche et RD comme section monotonique droite, et de stocker un pointeur sur ce polygone dans la pile TEMP, - "#POP()" désigne la fonction qui supprime le pointeur le plus récente dans la pile- "#PUSH (RG, RD)" means the function of creating a new y-monotone polygon with as RG attributes as left monotonic section and RD as right monotonic section, and storing a pointer on this polygon in the TEMP stack, - "#POP ()" is the function that removes the most recent pointer from the stack
TEMP etTEMP and
- "#GSR(GSPLIT)" est la fonction qui supprime la région externe de la liste des régions externes.- "#GSR (GSPLIT)" is the function that removes the outer region from the list of external regions.
Au cours d'une étape 605 (figure 6A), on définit NTEMP comme étant nul, NSPLIT prend la valeur du nombre de régions externes et NSTART prend la valeur du nombre de régions internes. Au cours d'une étape 610, on détermine si NTEMP est strictement supérieur à zéro. Si oui, au cours d'une étape 615, on définit YM comme le contenu de la pile TEMP, on décrémente NTEMP, on effectue la fonction #POP() et on passe à l'étape 630. Si le résultat de l'étape 610 est négatif, au cours d'une étape 620, on détermine si le nombre NSTART est strictement supérieur à zéro. Sinon, le processus est terminé. Si oui, au cours d'une étape 625, on crée un polygone y-monotone dans un tableau de polygones y- monotones et on lui attribue YMIN qui est l'ordonnée courante comme ordonnée de départ et les section monotoniques gauche et droite de Ia région interne suivante dans la liste des régions internes, on met le pointeur YM à la valeur d'un pointeur pointant sur cette région interne, on décrémente NSTART puis on effectue l'étape 630 au cours de laquelle, pour le polygone y-monotone, RG prend la valeur d'un pointeur sur la section monotonique gauche de la région interne et RD prend la valeur d'un pointeur sur la section monotonique droite de la région interne.During a step 605 (FIG. 6A), NTEMP is defined as zero, NSPLIT is the number of external regions, and NSTART is the value of the number of internal regions. During a step 610, it is determined if NTEMP is strictly greater than zero. If yes, during a step 615, YM is defined as the content of the stack TEMP, NTEMP is decremented, the function #POP () is performed and step 630 is proceeded to. If the result of the step 610 is negative, during a step 620, it is determined whether the number NSTART is strictly greater than zero. Otherwise, the process is complete. If yes, during a step 625, a y-monotone polygon is created in an array of y-monotone polygons and assigned YMIN, which is the ordinate ordinate as the starting ordinate, and the left and right monotonic sections of Ia. next internal region in the list of internal regions, the pointer YM is set to the value of a pointer pointing to this internal region, NSTART is decremented and then step 630 is performed during which, for the y-monotone polygon, RG takes the value of a pointer to the left monotonic section of the inner region and RD takes the value of a pointer to the right monotonic section of the inner region.
Au cours d'un test 635, on détermine la valeur de RG.SMAX.Y - RD.SMAX.Y, le premier terme désignant l'ordonnée de SMAX pour la section monotonique gauche et le deuxième terme désignant l'ordonnée de SMAX pour la section monotonique droite. Si cette valeur est strictement négative, on effectue l'étape 640. Si elle est nulle, on effectue l'étape 645. Si elle est strictement positive, on effectue l'étape 650.During a test 635, the value of RG.SMAX.Y-RD.SMAX.Y is determined, the first term designating the SMAX ordinate for the left monotonic section and the second term designating the SMAX ordinate for the right monotonic section. If this value is strictly negative, step 640 is carried out. If it is zero, step 645 is carried out. If it is strictly positive, step 650 is carried out.
Au cours de l'étape 640, on met le drapeau gauche DG à la valeur 1 , le drapeau droit DD à la valeur zéro et YMAX prend la valeur RG.SMAX.Y. Au cours de l'étape 645, on met le drapeau gauche DG à la valeur 1 , le drapeau droit DD à la valeur 1 et YMAX prend la valeur RG.SMAX.Y. Au cours de l'étape 650, on met le drapeau gauche DG à la valeur zéro, le drapeau droit DD à la valeur 1 et YMAX prend la valeur RD. SMAX. Y.In step 640, the left flag DG is set to 1, the right flag DD to zero, and YMAX is set to RG.SMAX.Y. In step 645, the left flag DG is set to 1, the right flag DD is set to 1 and YMAX is set to RG.SMAX.Y. During step 650, the left flag DG is set to zero, the DD right flag at the value 1 and YMAX takes the RD value. SMAX. Y.
A la suite de l'une quelconque des étapes 640, 645 et 650, au cours d'une étape 655, on détermine si le nombre NSPLlT de régions externes restant à traiter est strictement positif. Sinon, au cours d'une étape 660, on met GSPLIT à la valeur zéro qui signifie qu'il n'y a plus de split à traiter. Si le résultat de l'étape 655 est positif, au cours d'une étape 665, on met GSPLIT à la valeur #GS1 (Y1YMAX), qui peut prendre la valeur "0" s'il n'y a pas de région externe répondant au critère de recherche.Following any of steps 640, 645 and 650, in step 655, it is determined whether the number of NSPL1T of external regions remaining to be processed is strictly positive. Otherwise, during a step 660, GSPLIT is set to zero, which means there is no more split to process. If the result of step 655 is positive, during a step 665, GSPLIT is set to # GS1 (Y 1 YMAX), which can take the value "0" if there is no external region meeting the search criterion.
Au cours d'une étape 670 (figure 6B), on détermine si GSPLIT est différent de zéro. Si oui, au cours d'une étape 675, on met à jour les sections monotoniques droite et gauche avec l'ordonnée de GSPLIT. Puis, au cours d'une étape 680, on détermine si #GST(RG, RD GSPLIT) vaut 1 , c'est-à-dire si la région externe GSPLIT se trouve entre les sections monotoniques RG et RD. Si non, au cours d'une étape 685, GSPLIT prend la valeur #GSN(GSPLIT, YMAX) puis on réitère l'étape 670 et les suivantes. Si le résultat de l'étape 680 est positif, au cours d'une étape 690, on crée deux nouveaux polygones y-monotones avec, respectivement RG et la section monotonique gauche de GSPLIT, d'une part et la section monotonique droite de GSPLIT et RD, d'autre part, et on stocke dans la pile TEMP, deux pointeurs sur ces polygones, on incrémente de deux NTEMP, on supprime la région externe GSPLIT de la liste des régions externes et on ferme le polygone y-monotone YM courant, c'est-à-dire que l'on attribue à sa variable YMAX, l'ordonnée courante, puis on réitère l'étape 610 et les suivantes.During a step 670 (FIG. 6B), it is determined whether GSPLIT is different from zero. If so, during a step 675, the left and right monotonic sections are updated with the ordinate of GSPLIT. Then, in a step 680, it is determined whether #GST (RG, RD GSPLIT) is 1, that is, whether the outer region GSPLIT is between the monotonic sections RG and RD. If not, during a step 685, GSPLIT takes the value #GSN (GSPLIT, YMAX) and then repeats step 670 and following. If the result of step 680 is positive, during a step 690, two new y-monotone polygons are created with, respectively RG and the left monotonic section of GSPLIT, on the one hand and the right monotonic section of GSPLIT. and RD, on the other hand, and store in the stack TEMP, two pointers on these polygons, increment two NTEMP, remove the outer region GSPLIT from the list of external regions and close the y-monotone polygon YM current , that is to say that its variable YMAX is assigned the current ordinate, and then repeats step 610 and the following ones.
Si le résultat de l'étape 670 est négatif, au cours d'une étape 695, on met à jour les sections monotoniques droite et gauche avec l'ordonnée YMAX. Au cours d'une étape 700, on détermine si le drapeau gauche est égal à 1. Si oui, au cours d'une étape 705, on met le pointeur de la section monotonique gauche du polygone y-monotone courant à la valeur du pointeur sur le polygone y-monotone courant, on met le drapeau DG de la section monotonique gauche à "1". A la suite de l'étape 705 ou si le résultat de l'étape 700 est négatif, au cours d'une étape 710, on détermine si le drapeau droit est égal à 1. Si oui, au cours d'une étape 715, on met le pointeur de la section monotonique droite du polygone y- monotone courant à la valeur du pointeur sur le polygone y-monotone courant, on met le drapeau DD de la section monotonique droite à "1".If the result of step 670 is negative, during a step 695, the left and right monotonic sections are updated with the YMAX ordinate. During a step 700, it is determined whether the left flag is equal to 1. If yes, during a step 705, the pointer of the left monotonic section of the current y-monotone polygon is set to the value of the pointer on the current y-monotone polygon, the DG flag of the left monotonic section is set to "1". Following step 705 or if the result of step 700 is negative, during a step 710, it is determined whether the right flag is equal to 1. If yes, during a step 715, the pointer of the right monotonic section of the current y-monotone polygon is set to the value of the pointer on the current y-monotone polygon, the flag DD of the right monotonic section is set to "1".
A la suite de l'étape 715 ou si le résultat de l'étape 710 est négatif, au cours d'une étape 720 (figure 6C), on détermine si le drapeau gauche DG est égal à 1.Following step 715 or if the result of step 710 is negative, during a step 720 (FIG. 6C), it is determined whether the left flag DG is equal to 1.
Si oui, au cours d'une étape 725, on détermine si le sens de la section monotonique gauche RG. SENS est positif. Si oui, au cours d'une étape 730, on met la variable RM, section monotonique de fusion, à la valeur RG.NEXT, c'est-à-dire la valeur du pointeur sur la section monotonique suivant la section monotonique gauche. Sinon, au cours d'une étape 735, on met la variable RM, section monotonique de fusion, à la valeur RG. PREV, c'est-à- dire la valeur du pointeur sur la section monotonique précédent la section monotonique gauche. A la suite de l'une des étapes 730 ou 735, au cours d'une étape 740, on ferme le polygone y-monotone, en définissante son YMAX. Puis, au cours d'une étape 745, on détermine si la variable RM est égal à la section monotonique droite. Si oui, on réitère l'étape 610 et les étapes suivantes. Sinon, au cours d'une étape 750, on détermine si le drapeau DONE de la section monotonique RM est égal à 1. Si oui, au cours d'une étape 755, on crée un nouveau polygone y-monotone et on lui attribut comme section monotonique gauche, la section monotonique gauche du polygone pointé par la section monotonique de fusion, RM. YM. RG, et, comme section monotonique droite la section monotonique droite RD courante et on incrémente le compteur NTEMP.If yes, during a step 725, it is determined whether the direction of the left monotonic section RG. SENS is positive. If so, during a step 730, the variable RM, monotonic melting section, is set to the RG.NEXT value, that is to say the value of the pointer on the monotonic section following the left monotonic section. Otherwise, during a step 735, the variable RM, monotonic melting section, is set to the value RG. PREV, that is, say the value of the pointer on the monotonic section preceding the left monotonic section. Following one of the steps 730 or 735, during a step 740, the y-monotone polygon is closed, defining its YMAX. Then, during a step 745, it is determined whether the variable RM is equal to the right monotonic section. If yes, repeat step 610 and the following steps. Otherwise, during a step 750, it is determined whether the flag DONE of the monotonic section RM is equal to 1. If yes, during a step 755, a new y-monotone polygon is created and attributed to it as left monotonic section, the left monotonic section of the polygon pointed to by the monotonic fusion section, RM. YM. RG, and, as straight monotonic section the current straight monotonic section RD and the NTEMP counter is incremented.
A la suite de l'étape 755 ou si le résultat de l'étape 750 est négatif, on réitère l'étape 610 et les étapes suivantes.Following step 755 or if the result of step 750 is negative, step 610 and the following steps are repeated.
Si le résultat de l'étape 720 est négatif, au cours d'une étape 760, on détermine si le sens de la section monotonique droite RD. SENS est positif. Si oui, au cours d'une étape 765, on met la variable RM, section monotonique de fusion, à la valeur RD. NEXT, c'est-à-dire la valeur du pointeur sur la section monotonique suivant la section monotonique droite. Sinon, au cours d'une étape 770, on met la variable RM, section monotonique de fusion, à la valeur RD. PREV, c'est-à-dire la valeur du pointeur sur la section monotonique précédent la section monotonique droite. A la suite de l'une des étapes 765 ou 770, au cours d'une étape 775, on ferme le polygone y-monotone, en définissante son YMAX. Puis, au cours d'une étape 780, on détermine si la variable RM est égal à la section monotonique gauche. Si oui, on réitère l'étape 610 et les étapes suivantes. Sinon, au cours d'une étape 785, on détermine si le drapeau DONE de la section monotonique RM est égal à 1. Si oui, au cours d'une étape 790, on crée un nouveau polygone y-monotone et on lui attribut comme section monotonique gauche, la section monotonique gauche courante et comme section monotonique droite, la section monotonique droite du polygone pointé par la section monotonique de fusion, RM.YM.RD et on incrémente le compteur NTEMP.If the result of step 720 is negative, during a step 760, it is determined whether the direction of the straight monotonic section RD. SENS is positive. If yes, during a step 765, the variable RM, monotonic melting section, is set to the value RD. NEXT, that is, the value of the pointer on the monotonic section following the right monotonic section. Otherwise, during a step 770, the variable RM, monotonic merge section, is set to the value RD. PREV, that is, the value of the pointer on the monotonic section preceding the right monotonic section. Following one of the steps 765 or 770, during a step 775, the y-monotone polygon is closed, defining its YMAX. Then, during a step 780, it is determined whether the variable RM is equal to the left monotonic section. If yes, repeat step 610 and the following steps. Otherwise, during a step 785, it is determined whether the flag DONE of the monotonic section RM is equal to 1. If yes, during a step 790, a new y-monotone polygon is created and attributed to it as left monotonic section, the current left monotonic section and as straight monotonic section, the right monotonic section of the polygon pointed by the monotonic melting section, RM.YM.RD and the NTEMP counter is incremented.
A la suite de l'étape 790 ou si le résultat de l'étape 785 est négatif, on réitère l'étape 610 et les étapes suivantes. Grâce à la mise en oeuvre du logigramme illustré aux figures 2 à 6C, le polygone initial est décomposé en polygones y-monotones, chaque polygone y-monotone étant défini par une section monotonique gauche, une section monotonique droite, une ordonnée minimale et une ordonnée maximale.Following step 790 or if the result of step 785 is negative, step 610 and the following steps are repeated. By implementing the logic diagram illustrated in FIGS. 2 to 6C, the initial polygon is decomposed into y-monotone polygons, each y-monotone polygon being defined by a left monotonic section, a right monotonic section, a minimum ordinate and an ordinate. Max.
On décompose ainsi une forme géométrique complexe en un graphe ordonné de formes géométriques plus simples (ici, y-monotone). Dans des variantes, on effectue une décomposition en triangles ou en trapèzes.A complex geometric shape is thus decomposed into an ordered graph of simpler geometric shapes (here, y-monotone). In variants, a decomposition into triangles or trapezoids is performed.
On observe que le nombre de polygones "y-monotones" créés est au maximum égal à un de moins que le double de la somme du nombre de régions internes et du nombre de régions externes.It is observed that the number of "y-monotone" polygons created is at most equal to one less than twice the sum of the number of internal regions and the number of external regions.
On observe que certains polygones "y-monotones" créés comme indiqué ci-dessus ont une hauteur nulle mais qu'ils ont, au plus, deux prédécesseurs (c'est-à-dire que leur côté inférieur touche au plus deux autres polygones "y-monotones" dans le polygone traité) et deux successeurs (c'est-à-dire que leur côté supérieur touche au plus deux autres polygones "y-monotones" dans le polygone traité).It is observed that certain "y-monotone" polygons created as indicated above have a zero height but that they have, at most, two predecessors (that is to say that their lower side touches at most two other polygons " y-monotones "in the processed polygon) and two successors (that is, their upper side touches at most two other" y-monotone "polygons in the processed polygon).
En variante, le remplissage du polygone est effectué au cours de chacune des étapes 675 et 695. On observe que le temps de traitement des étapes 200 à 220 est sensiblement proportionnel aux nombres des sommets du polygone à décomposer.Alternatively, the filling of the polygon is performed during each of the steps 675 and 695. It is observed that the processing time of steps 200 to 220 is substantially proportional to the numbers of the vertices of the polygon to be broken down.
En revanche, la durée de l'étape 225 est en moyenne proportionnelle au nombre de régions externes multiplié par le logarithme de ce nombre, et la durée de l'étape 230 est, en pratique, sensiblement une fonction du nombre de sommets splits. En variante, pour réduire le temps de traitement total, si le nombre de sommets splits est supérieur d'un nombre prédéterminé au nombre des starts ou si le nombre de sommets splits est un nombre prédéterminé de fois supérieur au nombre de sommets starts, on traite le polygone de haut en bas (remplissage des polygones "y-monotones" par ordonnées décroissantes) et non, comme indiqué ci-dessus, de bas en haut (remplissage des polygones "y-monotones" par ordre des ordonnées croissantes).In contrast, the duration of step 225 is on average proportional to the number of external regions multiplied by the logarithm of this number, and the duration of step 230 is, in practice, substantially a function of the number of split vertices. As a variant, to reduce the total processing time, if the number of split vertices is greater than a predetermined number by the number of starts, or if the number of split vertices is a predetermined number of times greater than the number of vertex starts, it is treated the polygon from top to bottom (filling the "y-monotone" polygons by decreasing ordinates) and not, as indicated above, from bottom to top (filling of the "y-monotone" polygons in order of increasing ordinates).
Dans un mode préféré de réalisation, pendant la détermination des sections monotoniques, on crée les boîtes englobantes (en anglais "bounding-box") de chaque section monotonique et, au cours des étape 665 et 685, on se limite aux régions externes dont les deux abscisses sont entre les abscisses extrêmes des boîtes englobantes des deux sections monotoniques considérées.In a preferred embodiment, during the determination of the monotonic sections, the bounding boxes of each monotonic section are created and, in the course of the steps 665 and 685, only the external regions whose two abscissas are between the extreme abscissae of the bounding boxes of the two monotonic sections considered.
Dans le cas d'un polygone dit "externe" entourant au moins un autre polygone, dit "interne", on effectue les mêmes étapes de détermination des régions internes et des régions externes qu'exposé ci-dessus puis avant d'effectuer l'étape 225, les régions externes de chaque polygone interne sont considérés comme des régions internes du polygone externe et les régions internes de chaque polygone interne sont considérés comme des régions externes du polygone externe.In the case of a so-called "outer" polygon surrounding at least one other polygon, called "internal", the same steps of determination of the internal regions and of the external regions are carried out as explained above and before carrying out the In step 225, the outer regions of each inner polygon are considered internal regions of the outer polygon and the inner regions of each inner polygon are considered as outer regions of the outer polygon.
Le tableau ci-dessous donne une comparaison de la durée de décomposition et remplissage (en millisecondes) de polygones "massivement" concaves pour la méthode décrite dans le document Gordon cité en préambule et pour la méthode objet de la présente invention, sur le même ordinateur : nombre de points durée "Gordon" durée présente invention ratio de gainThe table below gives a comparison of the decomposition time and filling (in milliseconds) of "massively" concave polygons for the method described in the document Gordon cited in preamble and for the method object of the present invention, on the same computer. : number of points duration "Gordon" duration present invention gain ratio
4000 420 330 1 ,3 5000 720 390 1,84000 420 330 1, 3 5000 720 390 1.8
6000 1300 460 2,86000 1300 460 2.8
7000 1800 550 3,37000 1800 550 3.3
8000 2500 630 4,08000 2500 630 4.0
9000 3900 760 5,19000 3900 760 5.1
10000 5300 890 6,010000 5300 890 6.0
15000 16000. 1800 8,915000 16000. 1800 8.9
20000 33000 3300 10,020000 33000 3300 10.0
25000 60000 5200 11,525000 60000 5200 11.5
30000 96000 7900 12,230000 96000 7900 12.2
35000 140000 11000 12,735000 140000 11000 12.7
40000 205000 14000 14,640000 205000 14000 14.6
On observe que plus Ie polygone massivement concave comporte de sommets, plus le gain de temps est élevé. Ceci est du en partie au fait que la seule opération de tri nécessaire ne s'effectue que sur les régions externes. Les régions internes sont traitées dans un ordre quelconque lors de l'étape 230, ce qui évite tout tri des régions internes...It is observed that the more the massively concave polygon has vertices, the more time is saved. This is partly due to the fact that the only sorting operation required only takes place on the outer regions. The internal regions are processed in any order during step 230, which avoids any sorting of the internal regions ...
De plus, contrairement aux méthodes de décomposition de type Scanline, la décomposition de la forme géométrique en formes simples (y-monotones) est effectuée une seule fois au cours d'une première phase et le remplissage est effectué au cours d'une deuxième phase, ce qui permet de gagner du temps de traitement.Moreover, unlike the Scanline type decomposition methods, the decomposition of the geometric form into simple (y-monotone) forms is performed once during a first phase and the filling is performed during a second phase. , which saves processing time.
Avant de décrire un mode particulier de réalisation du procédé objet de la présente invention, en regard des figures 8 à 16, on précise que l'on a considéré, dans cette description, que les pixels de l'image à synthétiser sont carrés que la base du filtre que l'on applique à chaque pixel est carré avec un côté égal à un multiple entier du côté du pixel, ce dernier côté étant considéré comme unitaire, pour la simplification de la description. Chaque pixel étant repéré par les abscisses et ordonnées de son coin en bas à gauche, le pixel le plus en bas et le plus à gauche a pour coordonnées (0,0), le suivant, à droite, sur la même ligne a pour coordonnées (1 ,0), le suivant, au dessus du pixel (0,0) a pour coordonnées (0,1) et ainsi de suite. Dans cette description, on a représenté qu'une forme géométrique noire sur fond blanc (en figures 8 et 9, seuls les contours de cette forme et de ses fragments sont représentés), la présente invention s'appliquant, de la même manière pour des formes géométriques possédant des grisés ou des couleurs, par exemple représentées en rouge, vert et bleu avec, éventuellement des variations de ces couleurs sur l'étendue de chaque forme géométrique.Before describing a particular embodiment of the method that is the subject of the present invention, with reference to FIGS. 8 to 16, it is pointed out that it has been considered in this description that the pixels of the image to be synthesized are square that the the basis of the filter applied to each pixel is square with a side equal to an integer multiple of the pixel side, the latter side being considered unitary, for simplification of the description. Each pixel is marked by the abscissa and ordered from its lower left corner, the lowest and the leftmost pixel has coordinates (0,0), the next one, on the right, on the same line has for coordinates (1, 0), the next, above the pixel (0,0) has for coordinates (0,1) and so on. In this description, it is shown that a black geometrical shape on a white background (in FIGS. 8 and 9, only the contours of this shape and its fragments are represented), the present invention applying, in the same manner for geometric shapes having shades or colors, for example represented in red, green and blue with possibly variations of these colors on the extent of each geometric shape.
Les figures 8 à 16 décrivent un mode de réalisation particulier du procédé objet de la présente invention, dont les caractéristiques se combinent avantageusement aux caractéristiques du procédé de décomposition illustré, à titre d'exemple, en figures 1 à 7, et qui vise un procédé de remplissage d'une forme géométrique qui comporte :FIGS. 8 to 16 describe a particular embodiment of the method that is the subject of the present invention, the characteristics of which advantageously combine with characteristics of the decomposition method illustrated, by way of example, in FIGS. 1 to 7, and which concerns a method of filling a geometric shape which comprises:
- au moins une étape de décomposition de la forme géométrique en primitives graphiques simples, appelées "fragments" et - au moins une étape de calcul de l'aire d'intersection entre chaque fragment et un filtre dont la surface est supérieure à la surface d'un pixel.at least one step of decomposing the geometric shape into simple graphical primitives, called "fragments", and at least one step of calculating the intersection area between each fragment and a filter whose surface is greater than the surface of a pixel.
Dans le mode de réalisation. particulier décrit et représenté; on met en oeuvre des portions de filtre qui se trouvent chacune dans un seul pixel. En variante non représenté, on ne met pas en oeuvre de portion mais un filtre d'une surface supérieure à celle d'un pixel, comme indiqué dans la définition générale du procédé objet de l'invention rappelé ci-dessus.In the embodiment. particular described and shown; filter portions which are each in a single pixel are implemented. In variant not shown, it does not implement a portion but a filter of a surface greater than that of a pixel, as indicated in the general definition of the method object of the invention mentioned above.
On a représenté, en figure 8, les coordonnées des 36 pixels les plus en bas et les plus à gauche d'une image en supposant qu'une forme géométrique en étoile 800 à côtés droits, dont l'image doit être synthétisée y était intégralement incluses. La forme géométrique en étoile 800 est, en figure 8, décomposée en primitives simples, ou "fragments", chaque fragment étant entièrement inclus dans un pixel, possédant un nombre de côtés inférieur ou égal à quatre et au moins un côté vertical ou horizontal : triangles ou quadrilatères (rectangles, trapèzes, ...).FIG. 8 shows the coordinates of the 36 lowest and most left pixels of an image, assuming that a geometric star shape 800 with straight sides, the image of which must be synthesized, was entirely there included. The star geometrical shape 800 is, in FIG. 8, decomposed into simple primitives, or "fragments", each fragment being entirely included in a pixel, having a number of sides less than or equal to four and at least one vertical or horizontal side: triangles or quadrilaterals (rectangles, trapezes, ...).
On a représenté, en figure 9, le pixel de coordonnées (2,4) et les huit pixels qui lui sont les plus proches, de coordonnées (1,5) à (3,5), (1,4), (3,4) et (1,3) à (3,3). Pour une meilleure lecture de la figure 9 et des figures suivantes, on a légèrement séparé les différents pixels, l'intervalle de séparation n'étant pas considéré dans les différentes étapes du procédé objet de la présente invention.FIG. 9 shows the pixel of coordinates (2,4) and the eight pixels which are closest to it, with coordinates (1,5) to (3,5), (1,4), (3) , 4) and (1,3) to (3,3). For a better reading of FIG. 9 and the following figures, the various pixels were slightly separated, the separation interval not being considered in the various steps of the method that is the subject of the present invention.
On observe, en figure 9, que le pixel de coordonnées (2,4) comporte deux fragments 901 et 902, le premier, en haut, de forme trapézoïdale et le second, en bas, de forme rectangulaire.It can be seen in FIG. 9 that the coordinate pixel (2, 4) comprises two fragments 901 and 902, the first one, at the top, of trapezoidal shape and the second, at the bottom, of rectangular shape.
On observe, en figure 10, un filtre de base carrée, qui s'appliquera au pixel de coordonnées (2,4), qui est centré sur le centre du pixel de coordonnées (2,4) et dont le côté est égal au double du côté d'un pixel unitaire. On observe aussi, en figure 10, les neuf portions 1001 à 1009 qui forment une décomposition de la base du filtre, chaque portion étant entièrement incluses dans un pixel et chaque pixel ne comportant qu'au plus une portion. La portion centrale 1005 est carrée et recouvre le pixel de coordonnées (2,4), les portions 1001 , 1003, 1007 et 1009 sont carrées et recouvrent le quart le plus proche du pixel de coordonnées (2,4) des pixels de coordonnées respectives (1 ,5), (3,5), (1 ,3) et (3,3). Les portions 1002, 1004, 1006 et 1008 sont des rectangles qui recouvrent la moitié la plus proche du pixel de coordonnées (2,4) des pixels de coordonnées respectives ((2,5), (1 ,4), (3,4) et 2,3).FIG. 10 shows a square base filter, which will apply to the coordinate pixel (2,4), which is centered on the center of the coordinate pixel (2,4) and whose side is equal to twice on the side of a unit pixel. FIG. 10 also shows the nine portions 1001 to 1009 which form a decomposition of the filter base, each portion being entirely included in a pixel and each pixel comprising at most one portion. The central portion 1005 is square and covers the coordinate pixel (2,4), the portions 1001, 1003, 1007 and 1009 are square and cover the nearest quarter of the coordinate pixel (2,4) of the respective coordinate pixels. (1, 5), (3,5), (1,3) and (3,3). Portions 1002, 1004, 1006, and 1008 are rectangles that overlap the nearest half of the coordinate pixel (2,4) of the respective coordinate pixels ((2,5), (1,4), (3,4 ) and 2,3).
On observe, en figure 11 , pour le fragment 901 , les neufs aires d'intersection de ce fragment avec les portions de filtres incluses dans le pixel de coordonnées (2,4) des filtres appliqués aux neuf pixels de coordonnées (1 ,5) à (3,3) représentés en figure 9. Par convention, on a représenté en haut à gauche, l'aire d'intersection du fragment considéré avec la portion du filtre appliqué au pixel en bas à droite, de coordonnées (3,3), au milieu à gauche, l'aire d'intersection du fragment considéré avec la portion du filtre appliqué au pixel au milieu à droite, de coordonnées (3,4) et ainsi de suite.For the fragment 901, we can see the nine areas of intersection of this fragment with the filter portions included in the coordinate pixel (2,4) of the filters applied to the nine coordinate pixels (1, 5) to (3,3) shown in FIG. 9. By convention, there is shown at the top left, the intersection area of the fragment considered with the portion of the filter applied to the pixel at the bottom right, with coordinates (3,3), in the middle on the left, the intersection area of the fragment considered with the portion of the filter applied to the pixel in the middle right, coordinates (3,4) and so on.
On observe, en figure 12, pour le fragment 902, les neufs aires d'intersection de ce fragment avec les portions de filtres incluses dans le pixel de coordonnées (2,4) des filtres appliqués aux neuf pixels de coordonnées (1 ,5) à (3,3) représentés en figure 9. On a utilisé la même convention de représentation que pour la figure 11.FIG. 12 shows, for the fragment 902, the nine areas of intersection of this fragment with the filter portions included in the coordinate pixel (2,4) of the filters applied to the nine coordinate pixels (1, 5) to (3,3) shown in FIG. 9. The same representation convention as in FIG. 11 was used.
On observe, en figure 13, les sommes des aires d'intersection illustrées en figures 11 et 12, de la forme géométrique avec les portions de filtres incluses dans le pixel de coordonnées (2,4) des filtres appliqués aux neuf pixels de coordonnées (1 ,5) à (3,3) représentés en figure 9. On a utilisé la même convention de représentation que pour la figure 10.FIG. 13 shows the sums of intersection areas illustrated in FIGS. 11 and 12, of the geometrical shape with the filter portions included in the coordinate pixel (2,4) of the filters applied to the nine coordinate pixels ( 1, 5) to (3.3) shown in FIG. 9. The same representation convention as for FIG.
On observe, en figure 14, une représentation matricielle dans laquelle chaque ligne représente les différentes aires d'intersection, dans le pixel dont les coordonnées sont données en début de ligne, des fragments et des portions qui sont utilisées pour synthétiser le pixel de coordonnées (2,4). Par souci de simplification, on a pas représenté les pixels qui ne contiennent aucun fragment ou les pixels qui ne contiennent aucune portion du filtre.FIG. 14 shows a matrix representation in which each line represents the different intersection areas, in the pixel whose coordinates are given at the beginning of the line, fragments and portions that are used to synthesize the pixel of coordinates ( 2.4). For the sake of simplicity, pixels that contain no fragments or pixels that do not contain any portion of the filter are not represented.
La couleur du pixel (2,4) est, dans un mode particulier de filtre présentant la base illustrée en figure 9, filtre ne prenant que la valeur "1" sur l'ensemble de sa base, sans pondération (on parle communément de "box filter"), la somme des aires d'intersection représentées en figure 14 divisées par la surface de la base du filtre, ici quatre fois la surface unitaire (voir figure 10) et multiplié par la surface du pixel (2,4) (ici surface unitaire). La figure 15 représente la surface sommée des aires d'intersection considérées pour le pixel de coordonnées (2,4) dans la surface totale de Ia base du filtre. La couleur de l'image synthétisée dans le pixel de coordonnées (2,4) est égale au ratio de la surface noire représentée en figure 15, sur Ia surface totale du filtre. Par exemple si le noir est représenté par la valeur 0 et le blanc par la valeur 255, Ie niveau de gris du pixel (2,4) vaut environ 184.The color of the pixel (2,4) is, in a particular mode of filter having the base illustrated in FIG. 9, a filter taking only the value "1" over its entire base, without weighting (it is commonly referred to as " box filter "), the sum of the intersection areas shown in FIG. 14 divided by the surface of the filter base, here four times the unit area (see FIG. 10) and multiplied by the area of the pixel (2.4) ( here unitary surface). Fig. 15 shows the summed area of intersection areas considered for the coordinate pixel (2,4) in the total area of the filter base. The color of the synthesized image in the coordinate pixel (2,4) is equal to the ratio of the black surface shown in FIG. 15, over the total area of the filter. For example, if black is represented by the value 0 and white as 255, the gray level of the pixel (2,4) is about 184.
On observe, en figure 16, différentes étapes mises en oeuvre dans un mode particulier de réalisation du procédé objet de la présente invention.FIG. 16 shows different steps implemented in a particular embodiment of the method that is the subject of the present invention.
Au cours d'une étape 1500, on initialise le procédé en mettant à zéro la valeur de ses différents paramètres (en particulier x et y), on détermine au moins une forme géométrique à représenter sur une image à synthétiser, le nombre de pixels de l'image à synthétiser et un filtre à appliquer à chaque pixel de l'image à synthétiser. Par convention, les filtres appliqués aux pixels en bord ou en coin de l'image sont constitués par troncature de la base du filtre courant. Dans la suite de la description de la figure 16, on considère le filtre dont la base est illustrée en figure 10 et dont la valeur est "1" sur l'ensemble de cette base.During a step 1500, the method is initialized by zeroing the value of its various parameters (in particular x and y), determining at least one geometrical shape to be represented on an image to be synthesized, the number of pixels of the image to be synthesized and a filter to be applied to each pixel of the image to be synthesized. By convention, applied filters pixels at the edge or corner of the image are constituted by truncation of the base of the current filter. In the following description of Figure 16, we consider the filter whose base is illustrated in Figure 10 and whose value is "1" on the entire base.
Au cours d'une étape 1501 , on détermine les portions de la base du filtre courant. Dans le mode de réalisation représenté, la décomposition de la base du filtre en portions est telle que chaque portion est incluses dans un seul pixel.During a step 1501, the portions of the base of the current filter are determined. In the embodiment shown, the decomposition of the filter base into portions is such that each portion is included in a single pixel.
Au cours d'une étape 1503, on considère le pixel dont les coordonnées sont (x,y). Au cours d'une étape 1504, on détermine les fragments de chaque forme géométrique pour le pixel de coordonnées (x,y) et pour les pixels huit entourant ce pixel, s'ils existent. La décomposition en fragments est effectuée de façon à ce que chaque fragment créé soit inclus dans un et un seul pixel. Ces fragments sont stockés en mémoire sous la forme d'une liste chaînée de fragments par Pixel. Ainsi, chaque pixel possède la liste de tous les fragments inclus dans lui même. Lorsqu'un fragment a déjà été déterminé au cours d'une étape 1504 précédente, il est lu en mémoire et non déterminé à nouveau, pour réduire les temps de traitement.During a step 1503, consider the pixel whose coordinates are (x, y). During a step 1504, the fragments of each geometric shape are determined for the coordinate pixel (x, y) and for the eight pixels surrounding this pixel, if they exist. Fragmenting is done in such a way that each created fragment is included in one and only one pixel. These fragments are stored in memory as a linked list of fragments per pixel. Thus, each pixel has the list of all the fragments included in itself. When a fragment has already been determined during a previous step 1504, it is read in memory and not determined again, to reduce the processing times.
Au cours d'une étape 1505, pour chaque fragment déterminé au cours de l'étape 1504, on calcule l'aire d'intersection entre le fragment considéré et chaque portion du filtre et on mémorise cette aire en regard du pixel dont le filtre comporte cette portion de filtre.During a step 1505, for each fragment determined during step 1504, the intersection area between the fragment considered and each portion of the filter is calculated and this area is memorized with respect to the pixel whose filter comprises this portion of filter.
On observe que les calculs des différentes aires est simplifié dans de nombreux cas dans lesquels il existe des relations entre les aires d'intersection, notamment lorsque les bases de filtre sont des multiples du pixel. Par exemple, pour une base rectangulaire qui correspond à quatre pixels (2 x 2) s'étendant sur neuf pixels autour du pixel auquel le filtre est appliqué, pour chaque colonne ou chaque ligne, les sommes des aires extrêmes sont égales à l'aire centrale (le calcul de 4 aires permet le calcul des 9 aires). De même, pour une base rectangulaire qui correspond à neuf pixels (3 x 3) s'étendant sur neuf pixels autour du pixel auquel le filtre est appliqué, pour chaque colonne ou chaque ligne, les aires extrêmes sont chacune égales à l'aire centrale.It is observed that the calculations of the different areas are simplified in many cases in which there are relations between the intersection areas, especially when the filter bases are multiples of the pixel. For example, for a rectangular base that corresponds to four pixels (2 x 2) spanning nine pixels around the pixel to which the filter is applied, for each column or each line, the sums of the extreme areas are equal to the area central (the calculation of 4 areas allows the calculation of 9 areas). Similarly, for a rectangular base that corresponds to nine pixels (3 x 3) extending over nine pixels around the pixel to which the filter is applied, for each column or each line, the extreme areas are each equal to the central area. .
Au cours d'une étape 1506, pour Ie pixel de coordonnées (x,y), on calcule la surface totale d'intersection entre la forme géométrique et la base du filtre, en additionnant l'ensemble des aires d'intersection des portions du filtre appliqué au pixel de coordonnées (x,y) avec les différents fragments de chaque forme géométrique. Puis on multiplie cette surface par la couleur de cette forme géométrique et on additionne les résultats. Puis, on multiplie le résultat de cette addition par le rapport entre l'aire d'un pixel et l'aire du filtre, à savoir dans ce cas présent % ou 0,25. Au cours d'une étape 1507, on écrit le résultat de l'étape 1506 dans une mémoire d'image finale, pour le pixel de coordonnées (x,y).During a step 1506, for the pixel of coordinates (x, y), the total intersection area between the geometrical shape and the base of the filter is calculated by adding together all the intersection areas of the portions of the filter applied to the coordinate pixel (x, y) with the different fragments of each geometric shape. Then we multiply this surface by the color of this geometric shape and add the results. Then, we multiply the result of this addition by the ratio between the area of a pixel and the area of the filter, namely in this case% or 0.25. During a step 1507, the result of step 1506 is written in a final image memory, for the coordinate pixel (x, y).
Au cours d'une étape 1508, on détermine si x correspond au dernier pixel d'une ligne. Si non, on incrémente la valeur de x, étape 1509 et on retourne à l'étape 1504. Si le résultat de l'étape 1508 est positif, au cours d'une étape 1510, on détermine si y correspond à la dernière ligne de l'image à synthétiser. Si non, on incrémente la valeur de y et on réinitialise la valeur de x à 0, étape 1511 , et on retourne à l'étape 1504. Si le résultat de l'étape 1510 est positif, la synthèse de l'image est terminée.During a step 1508, it is determined if x corresponds to the last pixel of a line. If not, the value of x is incremented, step 1509 and return to step 1504. If the result of step 1508 is positive, during a step 1510, it is determined whether y is the last line of the image to be synthesized. If no, the value of y is incremented and the value of x is reset to 0, step 1511, and step 1504 is returned. If the result of step 1510 is positive, the synthesis of the image is complete. .
En variante, on applique une perturbation.statistique, par exemple de type "distribution de Poisson", des coordonnées des divers éléments gébmétriques, à savoir la BASE du filtre, et/ou les PORTIONS du filtre, et/ou les fragments de la forme géométrique à rastériser. En effet, comme le rappelle R. Cook dans son article "Stochastic Sampling inAs a variant, a statistical perturbation, for example of the "Poisson distribution" type, is applied to the coordinates of the various geometrical elements, namely the BASE of the filter, and / or the PORTIONS of the filter, and / or the fragments of the form. geometrical to rasterize. Indeed, as recalled by R. Cook in his article "Stochastic Sampling in
Computer Graphics" (ACM Transactions on Graphics, Vol. 5, N° 1, January 1986, Pages 51- 72), à l'extérieur de la fovéa (région de la rétine située dans la macula, près de l'axe optique de l'oeil), la distribution des cellules photosensibles est non-uniforme, de type "disque de Poisson", raison pour laquelle l'oeil humain ne créée pas d'aliasing, malgré le fait que ces cellules photosensibles soient en nombre limité : le système visuel humain est beaucoup plus sensible au effets d'escalier et aux trames qu'au bruit pseudo-aléatoire introduit par une distribution statistique des cellules photosensibles.Computer Graphics "(ACM Transactions on Graphics, Vol 5, No. 1, January 1986, Pages 51-72), outside the fovea (retinal region located in the macula, near the optical axis of the eye), the distribution of the photosensitive cells is non-uniform, of "Poisson's disc" type, reason why the human eye does not create aliasing, in spite of the fact that these photosensitive cells are in limited number: the The human visual system is much more sensitive to stair effects and frames than to pseudo-random noise introduced by a statistical distribution of photosensitive cells.
La figure 17 représente, schématiquement, la constitution d'un filtre particulier, dont la forme est une intégrale d'une forme polygonale. La partie droite de la figure 17 indique la correspondance de Ia forme polygonale, ici pyramidale, avec des pixels puis la section de la forme du filtre correspondant défini comme l'intégrale de la forme polygonale lorsque le sommet de la pyramide parcourt le pixel.FIG. 17 represents, schematically, the constitution of a particular filter, the shape of which is an integral of a polygonal shape. The right part of FIG. 17 indicates the correspondence of the polygonal shape, here pyramidal, with pixels and then the section of the shape of the corresponding filter defined as the integral of the polygonal shape when the top of the pyramid travels the pixel.
La partie gauche de la figure 17 indique la correspondance de la forme polygonale, ici cubique, avec des pixels puis la section de la forme du filtre correspondant défini comme l'intégrale de la forme polygonale. The left part of FIG. 17 indicates the correspondence of the polygonal shape, here cubic, with pixels and then the section of the shape of the corresponding filter defined as the integral of the polygonal shape.

Claims

REVENDICATIONS
1 - Procédé de remplissage d'une forme géométrique, caractérisé en ce qu'il comporte :1 - A method of filling a geometric shape, characterized in that it comprises:
- au moins une étape de décomposition de la forme géométrique en primitives graphiques simples, appelées "fragments" (1504, figure 8) etat least one step of decomposing the geometric form into simple graphic primitives, called "fragments" (1504, FIG.
- au moins une étape de calcul de l'aire d'intersection (1505, figures 11 et 12) entre chaque fragment et un filtre dont la surface est supérieure à la surface d'un pixel.at least one step of calculating the intersection area (1505, FIGS. 11 and 12) between each fragment and a filter whose surface is greater than the area of a pixel.
2 - Procédé selon la revendication 1 , caractérisé en ce qu'il comporte :2 - Process according to claim 1, characterized in that it comprises:
- au moins une étape de décomposition de la base d'au moins un filtre en primitives graphiques simples (1501 , figure 10), appelées "portions" ;at least one step of decomposing the base of at least one filter into simple graphic primitives (1501, FIG. 10), called "portions";
- au moins une étape de calcul des aires d'intersection entre chaque fragment et chaque portion (1505, figures 11 et 12) etat least one step of calculating the intersection areas between each fragment and each portion (1505, FIGS. 11 and 12) and
- pour chaque pixel, au moins une étape de calcul numérique d'une fonction des aires d'intersection composant Ia forme du filtre appliquée au pixel (1506, figures 13 et 14), ladite fonction donnant au moins un élément de couleur pour ledit pixel auquel est appliqué ledit filtre.for each pixel, at least one step of numerical calculation of a function of the intersection areas composing the form of the filter applied to the pixel (1506, FIGS. 13 and 14), said function giving at least one color element for said pixel to which said filter is applied.
3 - Procédé selon la revendication 2, caractérisé en ce que au cours de l'étape de décomposition de la base en portions (1501), chaque portion est incluse dans un et un seul pixel. 4 - Procédé selon l'une quelconque des revendications 2 ou 3, caractérisé en ce que au cours de l'étape de décomposition de la base d'au moins un filtre (1501), les intersections des portions sont vides et leur réunion est égale à ladite base.3 - Process according to claim 2, characterized in that during the step of decomposing the base portions (1501), each portion is included in one and a single pixel. 4 - Process according to any one of claims 2 or 3, characterized in that during the step of decomposing the base of at least one filter (1501), the intersections of the portions are empty and their meeting is equal at said base.
5 - Procédé selon l'une quelconque des revendications 2 à 4, caractérisé en ce que au cours de l'étape de décomposition de la base d'un filtre (1501), ledit filtre possède une base rectangulaire dont chaque côté est un multiple du côté correspondant d'un pixel.5 - Process according to any one of claims 2 to 4, characterized in that during the decomposition step of the base of a filter (1501), said filter has a rectangular base each side of which is a multiple of corresponding side of a pixel.
6 - Procédé selon l'une quelconque des revendications 2 à 5, caractérisé en ce que au cours de l'étape de calcul numérique (1506), on effectue une étape de pondération des différentes aires.6 - Process according to any one of claims 2 to 5, characterized in that during the numerical calculation step (1506), a weighting step of the different areas is carried out.
7 - Procédé selon la revendication 6, caractérisé en ce que au cours de l'étape de pondération, on pondère chaque aire selon une fonction dont la valeur dépend de la distance de ladite intersection au centre du pixel auquel est appliqué ledit filtre.7 - Process according to claim 6, characterized in that during the weighting step, each area is weighted according to a function whose value depends on the distance from said intersection to the center of the pixel to which said filter is applied.
8 - Procédé selon l'une quelconque des revendications 2 à 7, caractérisé en ce que au cours de l'étape de calcul numérique (1506), on effectue une sommation ou addition des aires d'intersection, éventuellement pondérées, composant la forme du filtre appliquée au pixel. 9 - Procédé selon l'une quelconque des revendications 2 à 8, caractérisé en ce que au cours de l'étape de calcul des aires d'intersection (1505), on calcule au moins une première aire d'intersection en mettant en oeuvre au moins un fragment et au moins une portion et on calcule au moins une autre aire d'intersection, pour un autre pixel auquel le même filtre est appliqué, en mettant en oeuvre ladite première aire d'intersection.8 - Process according to any one of claims 2 to 7, characterized in that during the numerical calculation step (1506), a summation or addition of the intersection areas, possibly weighted, composing the shape of the filter applied to the pixel. 9 - Process according to any one of claims 2 to 8, characterized in that during the step of calculating the intersection areas (1505), is calculated at least a first intersection area by implementing at least one fragment and at least one portion and one calculates at least one other intersection area, for another pixel to which the same filter is applied, by implementing said first intersection area.
10 - Procédé selon l'une quelconque des revendications 1 à 9, caractérisé en ce que au cours de l'étape de décomposition de la forme géométrique en fragments (1504), chaque fragment est inclus dans un et un seul pixel.10 - Process according to any one of claims 1 to 9, characterized in that during the step of decomposing the geometric form into fragments (1504), each fragment is included in one and a single pixel.
11 - Procédé selon l'une quelconque des revendications 1 à 10, caractérisé en ce que au cours de l'étape de décomposition de la forme géométrique (1504),' les intersections des fragments sont vides et leur réunion est égale à ladite forme géométrique.11 - Process according to any one of claims 1 to 10, characterized in that during the decomposition step of the geometric shape (1504), 'intersections fragments are empty and their union is equal to said geometrical shape .
12 - Procédé selon l'une quelconque des revendications 1 à 11, caractérisé en ce que l'étape de calcul numérique (1506) comporte une étape de multiplication par le rapport entre l'aire du pixel et l'aire totale du filtre.12 - Process according to any one of claims 1 to 11, characterized in that the numerical calculation step (1506) comprises a step of multiplication by the ratio between the area of the pixel and the total area of the filter.
13 - Procédé selon l'une quelconque des revendications 1 à 12, caractérisé en ce que au cours de l'étape de calcul numérique (1506), on pondère la couleur par un filtre.13 - Process according to any one of claims 1 to 12, characterized in that during the numerical calculation step (1506), the color is weighted by a filter.
14 - Procédé selon l'une quelconque des revendications 1 à 13, caractérisé en ce que la forme du filtre est une intégrale d'une forme polygonale (figure 17).14 - Process according to any one of claims 1 to 13, characterized in that the shape of the filter is an integral of a polygonal shape (Figure 17).
15 - Procédé selon l'une quelconque des revendications 1 à 14, caractérisé en ce qu'il est effectué successivement pour des pixels successifs sur une même ligne, en traitant successivement les lignes successives de l'image à constituer.15 - Process according to any one of claims 1 to 14, characterized in that it is performed successively for successive pixels on the same line, by successively treating the successive lines of the image to constitute.
16 - Dispositif de rastérisation d'une forme géométrique, caractérisée en ce qu'il comporte : - au moins un moyen de décomposition de la forme géométrique en primitives graphiques simples, appelées "fragments" (50, 53) et16 - Device for rasterizing a geometric shape, characterized in that it comprises: at least one means for decomposing the geometrical shape into simple graphic primitives, called "fragments" (50, 53) and
- au moins un moyen de calcul de l'aire d'intersection entre chaque fragment et un filtre dont la surface est supérieure à la surface d'un pixel (50, 53). at least one means for calculating the area of intersection between each fragment and a filter whose area is greater than the area of one pixel (50, 53).
PCT/FR2005/001527 2004-06-17 2005-06-17 Method and device for filling a geometrical shape WO2006005852A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0406561A FR2865563B1 (en) 2004-06-17 2004-06-17 METHOD AND DEVICE FOR FILLING A GEOMETRIC FORM
FR0406561 2004-06-17

Publications (1)

Publication Number Publication Date
WO2006005852A1 true WO2006005852A1 (en) 2006-01-19

Family

ID=34717477

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2005/001527 WO2006005852A1 (en) 2004-06-17 2005-06-17 Method and device for filling a geometrical shape

Country Status (2)

Country Link
FR (1) FR2865563B1 (en)
WO (1) WO2006005852A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
US5528737A (en) * 1993-12-14 1996-06-18 Silicon Graphics, Inc. Processor-based method for rasterizing polygons at an arbitrary precision
US20020180748A1 (en) * 2001-01-17 2002-12-05 Voicu Popescu Methods and apparatus for rendering images using 3D warping techniques

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
US5528737A (en) * 1993-12-14 1996-06-18 Silicon Graphics, Inc. Processor-based method for rasterizing polygons at an arbitrary precision
US20020180748A1 (en) * 2001-01-17 2002-12-05 Voicu Popescu Methods and apparatus for rendering images using 3D warping techniques

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
E. CATMULL: "A hidden algorithm wiht anti-aliasing", COMPUTER GRAPHICS, vol. 12, no. 3, 1978, pages 6 - 11, XP008056670 *
LEE JIN-AEON KIM LEE-SUP: "SPARP: a single pass antialiased rasterization processor", COMPUTERS AND GRAPHICS, PERGAMON PRESS LTD. OXFORD, GB, vol. 24, no. 2, April 2000 (2000-04-01), pages 233 - 243, XP004236369, ISSN: 0097-8493 *

Also Published As

Publication number Publication date
FR2865563B1 (en) 2006-03-17
FR2865563A1 (en) 2005-07-29

Similar Documents

Publication Publication Date Title
EP1292921B1 (en) Refinement of a three-dimensional triangular mesh
EP1410331B1 (en) Method and system for modifying a digital image taking into account its noise
EP0282364B1 (en) Method for representing a terrain-perspective image and system for carrying it out
EP0840252B1 (en) Digital image-processing method for the automatic extraction of ribbon-like objects
EP1982310B1 (en) Method for synthesizing a virtual image by beam launching
EP0211770A1 (en) Device for sequential picture transformation
FR2714504A1 (en) A method of producing a sub-pixel mask for an infographic system and apparatus for its implementation.
FR2638264A1 (en) METHOD FOR MINIMIZING THE VISUAL DEGRADATION OF DIGITAL CHARACTERS, IN PARTICULAR WHEN DISPLAYED ON A SCREEN
FR2596175A1 (en) METHOD AND APPARATUS FOR SAMPLING ACCORDING TO PSEUDO-ALEATORY POINTS IN GRAPHIC INFORMATICS
FR2988891A1 (en) METHOD FOR ESTIMATING OPACITY LEVEL IN A SCENE AND CORRESPONDING DEVICE
FR2754058A1 (en) METHOD FOR DETECTING SURFACE DEFECTS ON A TEXTURED SURFACE
EP0576584B1 (en) Image processing method by hierarchical queues
FR2635393A1 (en) METHOD OF REMOVING HIDDEN FACES FOR THE SYNTHESIS OF A THREE DIMENSIONAL WIRED IMAGE
EP2391989B1 (en) Method for representing a material
CA2563803A1 (en) Method for graphically generating rounded-end lines
KR101086151B1 (en) High quality anti-aliasing
EP2504816B1 (en) Method for estimating light scattering
EP3818495B1 (en) Method and device for displaying high-dynamic sonar or radar data
WO2006005852A1 (en) Method and device for filling a geometrical shape
FR2865564A1 (en) Geometrical figure e.g. polygon, decomposition method, involves classifying figure regions as inner and outer regions, sorting outer regions, and decomposing figure into simple inner geometrical figures i.e. monotonous polygons
EP3821611A2 (en) Method for viewing graphical elements arising from an encoded composite video stream
EP0161176B1 (en) Device for obtaining continuous traces on a display screen controlled by a graphical processor
FR2781907A1 (en) METHOD FOR ENCODING A SOURCE MESH BASED ON DISCONTINUITIES, AND CORRESPONDING APPLICATIONS
EP1402474B1 (en) Zooming method
EP1405038B1 (en) Method for generation of a relief image

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase