WO2017001767A1 - Dispositif de traitement de donnees - Google Patents

Dispositif de traitement de donnees Download PDF

Info

Publication number
WO2017001767A1
WO2017001767A1 PCT/FR2016/051602 FR2016051602W WO2017001767A1 WO 2017001767 A1 WO2017001767 A1 WO 2017001767A1 FR 2016051602 W FR2016051602 W FR 2016051602W WO 2017001767 A1 WO2017001767 A1 WO 2017001767A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
voxel
projection data
projection
voxels
Prior art date
Application number
PCT/FR2016/051602
Other languages
English (en)
Inventor
Sylvain Lefebvre
Jérémie DUMAS
An LU
Original Assignee
Inria Institut National De Recherche En Informatique Et En Automatique
Universite De Lorraine
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 Inria Institut National De Recherche En Informatique Et En Automatique, Universite De Lorraine filed Critical Inria Institut National De Recherche En Informatique Et En Automatique
Priority to EP16747817.1A priority Critical patent/EP3317782A1/fr
Priority to US15/738,442 priority patent/US10510177B2/en
Publication of WO2017001767A1 publication Critical patent/WO2017001767A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y10/00Processes of additive manufacturing
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y50/00Data acquisition or data processing for additive manufacturing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/10Additive manufacturing, e.g. 3D printing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/18Manufacturability analysis or optimisation for manufacturability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • the invention relates to the field of texturing and in particular the field of printing in three dimensions.
  • the invention improves the situation.
  • the invention proposes a data processing device, comprising a memory for receiving three-dimensional surface data, projection data and pattern data, a sorter capable of selecting for an input voxel voxels surrounding the input voxel that correspond to the three-dimensional surface data, an estimator capable of calculating a similarity value between a first voxel associated with first projection data and a second voxel associated with second projection data by calculating projecting the three-dimensional surface data associated with the first voxel and three-dimensional surface data associated with the second voxel, respectively on a first surface defined by the first projection data and on a second surface defined by the second projection data.
  • a selector capable of for a given voxel and from a projection data set, determine which projection data of said set which indicates the best similarity with neighboring voxels of the given voxel, from a value derived from the similarity values obtained by repeatedly calling the estimator with on the one hand the given voxel as the first voxel and projection data of the game as first projection data and secondly with some at least voxels from the sorter call with the first voxel as the second voxel, and projection data associated therewith as second projection data, and for associating with the given voxel the determined projection data, a propagator capable, from a voxel of a given resolution and of projection
  • the pilot being further arranged to repeat the propagator call with at least some of the voxels associated with the projection data determined by the selector, as well as the selector call on at least some of the plurality of resultant voxels to reach a chosen resolution.
  • This device is particularly advantageous because it allows to offer an object whose mechanical strength is safe, while offering aesthetic possibilities previously inaccessible.
  • the device may have one or more of the following characteristics:
  • the estimator determines the value derived from the difference between the projection of a voxel on the first surface and on the second surface from the difference in texture resulting from the plating of the pattern data on the first surface and the second surface for these projections,
  • the estimator determines the value of similarity further from a value derived from the value of the angle formed by the normal to the plane defined by the three-dimensional surface data on the one hand, and by the normal to the projection plan on the other hand,
  • the similarity value is strictly positive and indicates a similarity that is all the better if the similarity value is small
  • the propagator associates at least some of the plurality of higher resolution voxels with randomly selected projection data
  • the projection data comprises a surface identifier selected from a set of planes and transformation data indicating a translation and / or a rotation of the reference of the surface designated by the surface identifier for the plating of the pattern data,
  • the projection data are independent of the three-dimensional surface data
  • the area defined by the projection data is a plane
  • the three-dimensional surface data associated with a given voxel comprise an average of the normals of a surface portion associated with the given voxel and
  • the pattern data is of a stochastic and repetitive nature.
  • FIG. 1 represents a schematic diagram of a device according to the invention
  • FIG. 2 represents an example of implementation of a function by the sorter of FIG. 1,
  • FIG. 3 represents an exemplary implementation of a function by the estimator of FIG. 1,
  • FIG. 4 represents an exemplary implementation of a function by the selector of FIG. 1,
  • FIG. 5 represents an exemplary implementation of a function by the propagator of FIG. 1
  • FIG. 6 represents an exemplary implementation of a function by the pilot of FIG. 1
  • FIG. 7 represents an exemplary implementation of the device of FIG. 1,
  • FIG. 8 represents an example of implementation of a function by the extractor of FIG. 1,
  • FIG. 9 represents an exemplary implementation of a function by the stiffener of FIG. 1, and
  • FIG. 10 shows an example of implementation of a variant of a function by the selector of Figure 1, during a specific loop.
  • FIG. 1 represents a schematic diagram of a device 2 according to the invention.
  • the device 2 comprises a memory 4, a sorter 6, an estimator 8, a selector 10, a propagator 12, a driver 14, a generator 16, an extractor 18, and a stiffener 20.
  • the memory 4 can be any type of data storage suitable for receiving digital data: hard disk, hard disk flash memory (SSD in English), flash memory in any form, random access memory, magnetic disk, storage distributed locally or in the cloud etc.
  • the data calculated by the device can be stored on any type of memory similar to or on memory 2. This data can be erased after the device has completed its tasks or stored.
  • the data stored in the memory 4 are of several types. Thus, the memory 4 receives three-dimensional surface data 22, pattern data 24, and work data 26.
  • the three-dimensional surface data 22 describes the object on which it is desired to apply a texture. These data can be directly usable, that is to say have already been voxelized, or be raw data. In this case, an unrepresented element can perform the voxelization. Voxelization is not the subject of the invention, it will be considered in the following that the three-dimensional surface data 22 have already been voxelized. In the example described here, the three-dimensional surface data 22 contain for each voxel the average of the normals of the surface of the object associated with this voxel.
  • the three-dimensional surface data 22 could contain the data of the surface as such, or any other data which makes it possible to describe the portion of the surface of an object that is associated with a voxel.
  • the three-dimensional surface data 22 thus make it possible to define the object by voxels associated with portions of the surface of the object.
  • the pattern data 24 represents the pattern with which it is desired to texturize the three-dimensional surface data 22.
  • the goal is to produce a "black and white" type pattern. which represents fullness and emptiness in the three-dimensional object to be printed.
  • the pattern data 24 can directly define a bit pattern.
  • the pattern data 24 is not of the binary type, it can be the subject of a specific processing for this purpose.
  • the pattern data 24 can be colorized in order to texture the object in color, for example for multi-dimensional printing. -colors.
  • the pattern data 24 may optionally define a relief on the solid portions.
  • the work data 26 includes all the data used to carry out the data processing according to the invention. These data include the data associating the three-dimensional surface data to the data defining the voxels, projection data, similarity value data and other values described hereinafter.
  • the projection data define on the one hand a projection plane (that is to say a pair of non-collinear vectors), and on the other hand a transformation in this plane.
  • the pattern data 24 will be transformed in a plane according to the transformation data of this plane to texture the latter, then the center of the voxel concerned is projected and can receive a texture associated with its projection in the textured plane. It is possible from a limited number of planes (26 in the example described here) and a number of transformations to define a very large number of possible projection planes. Once the projection data thus defined, it is therefore to choose the best plan / transformation pairs for each voxel. Alternatively, the pattern data 24 may be plated on the portion of the surface data corresponding to the voxel, and this textured surface may be projected onto the plane and then transformed according to the transformation data.
  • the sorter 6, the estimator 8, the selector 10, the propagator 12, the driver 14, the generator 16, the extractor 18 and the stiffener 20 are elements accessing directly or indirectly the memory 4. They can be made under the form of an appropriate computer code executed on one or more processors.
  • processors it should be understood any processor adapted to the calculation of projection of textures on plans and treatments related to voxels.
  • Such a processor can be made in any known manner, in the form of a microprocessor for a personal computer, a chip dedicated type FPGA or SoC ("System on chip" in English), a computing resource on a grid, a microcontroller, or any other form to provide the computing power necessary for the embodiment described below .
  • One or more of these elements can also be realized in the form of specialized electronic circuits such as an ASIC.
  • a combination of processor and electronic circuits can also be considered.
  • the invention achieves good texturing by finding the right planar / transformation pairs to be applied to each element of the three-dimensional surface data (voxels) and the pattern data. More specifically, the invention applies a method of resolution descent to determine these pairs.
  • the problem is solved for a given resolution, and that one will seek to solve this same problem for a higher resolution, that is to say whose grain is finer.
  • the result of the given resolution is propagated to the higher resolution, by cutting each of the voxels of the given resolution into voxels of higher resolution, and by applying to these voxels the solution found for the given resolution.
  • the problem is solved by optimizing the plan / transformation pairs thus assigned to the higher resolution.
  • each voxel of the higher resolution is tested with all the known plane / transformation pairs for the given resolution, and a similarity value is determined according to the pairs plan / transformation of the neighbors of this voxel.
  • each voxel adopts the plan / transformation pair which indicates the best similarity with its neighbors to define the solution for the higher resolution.
  • the projection of the voxels corresponding to the surface data on the planar / transformation pairs combined with the pattern data 24 produces result data 28.
  • FIGS. 2 to 6 and 7 to 9 Although synergetic to provide a device which starts from surface data and pattern data to give a three-dimensional printing object of an original nature, are quite independent. each other.
  • Figures 2-6 describe an original device for producing advantageous plated pattern data
  • Figures 7-9 describe an original device for producing a three-dimensional printing object that is mechanically sound.
  • a variable whose name is all caps means in most cases a list containing several elements, while a variable whose name is lowercase designates a single element.
  • FIG. 2 represents an example of a function implemented by the sorter 6 to determine the neighboring voxels of a given voxel.
  • a voxel is said to be close to another when it is included in a cube whose edge measures five voxels and whose center is the other voxel.
  • the sorter 6 begins in an operation 260 with three-dimensional surface data O, a neighbor size variable n_s, an input voxel v and a neighbors list N initialized to 0 (i.e. empty ).
  • the neighborhood size variable n_s is set to 5 to denote a cube-shaped neighborhood of length voxels.
  • the neighborhood could have a different shape, as well as different dimensions.
  • a function Ngb () is called with the input voxel v, and the neighbor size n_s as variables.
  • the function Ngb () selects all the voxels that surround the voxel v in a cube of dimension n_s and centered on the voxel v, and stores them together in the list P.
  • the voxels that are associated with surface data 22 is associated with projection data 26.
  • the list P receives both the neighboring voxels, but also the projection data 26 associated with them.
  • the correspondence between these voxels and the corresponding projection data is maintained outside the list P.
  • List P contains all the neighbors of voxel v, including voxels that do not correspond to surface data 22. Therefore, it is useless to keep these voxels, since they can not be used to project the data of reason 24.
  • a loop is started in an operation 226, in which the list P is unpaired in a pair (x; p_dx) which receives the first voxel of the list P as well as the projection data 26 associated with it.
  • the projection data p_dx are tested: if they are empty, this means that the voxel x does not correspond to surface data 22, and vice versa. So, if the projection data p_dx are present, then the voxel x and its projection data p_dx are entered in the list N in an operation 240. Then, or when the voxel x is not associated with surface data 22, the loop resumes with the operation 226.
  • FIG. 3 represents an example of a function implemented by the estimator 8 for calculating a similarity value between a first voxel v1 associated with first projection data p_dl, and a second voxel v2 associated with second projection data p_d2.
  • the estimator 8 receives a first voxel v1, a second voxel v2, first projection data p_d1, second projection data p_d2, the pattern data t, the three-dimensional surface data O , and a similarity value variable initialized to 0.
  • the texture tl 1 receives the texture of the projection of the center of the first voxel v1 on the plane defined by the first projection data p_d1 and textured according to the latter with the pattern data 24, and
  • the texture tl 2 receives the texture of the projection of the center of the first voxel v1 on the plane defined by the second projection data p_d2 and textured according to the latter with the pattern data 24. Then, or in parallel according to the variants, in an operation 312, two textures t21 and t22 are calculated by means of a function Proj (), so that:
  • the texture t21 receives the texture of the projection of the center of the second voxel v2 on the plane defined by the first projection data p_dl and textured according to the latter with the pattern data 24, and
  • the texture t22 receives the texture of the projection of the center of the second voxel v2 on the plane defined by the second projection data p_d2 and textured according to the latter with the pattern data 24.
  • the similarity value returned d is calculated as the sum of the difference between textures tl l and tl2 on the one hand and between textures t21 and t22 on the other hand.
  • the difference between the textures is calculated by means of a function L2 () which calculates the Euclidean norm of the pixel-by-pixel color difference of the respective textures.
  • FIG. 4 represents an example of a function implemented by the selector 10 to determine the projection data that are most suitable for a given voxel given its surroundings.
  • the selector 10 receives in an operation 400 the voxel v concerned, the projection data p_dv associated therewith, a projection data set that can improve the situation P_D, the pattern data t, the surface data in three O dimensions, and a value of best similarity value dm initialized to 0.
  • the similarity between the voxel v and its neighborhood is calculated for the projection data p_dv associated with it.
  • the selector 10 calls the sorter 6 which stores the result in a list N.
  • a loop is performed in which the list N is unpolled in an operation 410.
  • the selector 10 calls the estimator 8 with on the one hand the voxel v and its associated projection data p_dv, and on the other hand, each neighbor voxel x depilated and its associated projection data p_dx.
  • the variable of best similarity dm receives each time the similarity value thus calculated.
  • the variable of best similarity dm was initialized with the sum of the similarity values between the given voxel with its associated projection data p_dv and its neighbors with their associated projection data.
  • the selector 10 initializes another loop in which each of the projection data of the projection data set P_D will be applied to the given voxel v, to determine whether they are a better match with the voxels of the vicinity of the voxel v and their data. associated projection.
  • a similarity value variable d is initialized to 0 in an operation 426, then the set P_D is pared in an operation 425. Then, the same loop as for the operations 410 and 415 is performed with the unstacking operations 430 and calculating the similarity 435 between the voxel given v and the voxels of its neighborhood. However, in the operation 435, the voxel v is not called with the projection data p_dv associated with it, but with the projection data p_dy which has been depilated in the operation 425.
  • the values d and dm are compared. If d is less than dm, this means that the projection data p_dy, associated with the voxel v, are closer to the voxels in the vicinity of the voxel v than the projection data p_dv. In this case, the value dm receives the value d as a new value of best similarity in an operation 445, and the projection data p_dv receives the projection data p_dy in an operation 450. Thus, the pair dm and p_dv permanently contains the value of best similarity between the voxel v and voxels of its neighborhood, as well as the corresponding projection data.
  • the unstacking loop of the set P_D resumes with the operation 426 and the zeroing of the variable d.
  • the coach 10 returns the projection data p_dv that best matches voxel v given its neighborhood.
  • the Applicant has identified the fact that the similarity value between the given voxel and its neighborhood for given projection data may optionally depend on an additional value, which derives from the angle formed between the normal to the plane defined by the projection data given and the normal to the three-dimensional surface data associated with the given voxel. Indeed, if this angle is large, the projection of the pattern data can be strongly distorted, despite a good similarity with the voxels of the neighborhood. Thus, after calculating the neighbor similarity, a value derived from the dot product of the normal to the three-dimensional surface data associated with v with the normal to the projection data plane can be added.
  • the Applicant has also identified the fact that the similarity value between the given voxel and its neighborhood for given projection data may optionally depend on a position in the pattern, to encourage or discourage the use of certain portions of the pattern. This can for example be used when the pattern is repeated on the projection plane, to prevent visual discontinuities due to junctions between the edges of the pattern from appearing on the surface. Voxels that select a projection showing this portion of the pattern are penalized by increasing the similarity values.
  • Figure 5 shows an example of a function implemented by the propagator 12 to propagate the solution of a given resolution to a higher resolution. In an operation 500, the propagator 12 receives an input voxel v, associated projection data p_dv, three-dimensional surface data O, a resolution sampling size s, and a list of higher resolution voxels V initialized to 0.
  • the propagator 12 calls a function Up () with the voxel v and the sampling size s.
  • the Up () function returns an X list of voxels of higher resolution, depending on the sampling size s.
  • the sample size is set to 2, so that the list X contains 8 voxels that together correspond to voxel v.
  • the propagator 12 executes a loop in which the voxels of the X list are popped in an operation 526, and then tested in an operation 525 to determine if these voxels correspond to three-dimensional surface data. If this is not the case, then the voxel is stored without associated projection data in the V list in an operation 540. Otherwise, the voxel is stored with the projection data p_dv in the V list in one operation. 550. Finally, when the list X is empty, the propagator 12 returns the list V in an operation 560.
  • the operation 550 could introduce noise improving the variety by randomly assigning projection data distinct from the data of projection p_dv to at least some of the higher resolution voxels that correspond to three-dimensional surface data.
  • the variety is not added randomly, but deterministically.
  • FIG. 6 shows an example of a function implemented by the driver 14 to calculate the result data 22 from the three-dimensional surface data 22, the pattern data 24 and a projection data set.
  • the driver 14 receives these data along with the desired resolution level r, the sampling size s and initializes a resolution loop variable i to 0.
  • the driver 14 executes an Init () function to initiate the operations.
  • the function of this function is to determine the first coarse resolution voxel that includes the three-dimensional surface data, as well as the corresponding projection data.
  • the projection data associated with this first voxel are chosen randomly.
  • the InitQ function could calculate these projection data.
  • the pilot 14 starts a series of loops of index i until the resolution r is reached (operation 610).
  • a list Z associating voxels and projection data is initialized to 0 in an operation 615.
  • the list of resolution voxels corresponding to the previous iteration V is depilated in an operation 626.
  • Each voxel x and its projection data p_dx is then propagated by calling the propagator 12 in an operation 625 and the resulting list is stored in a list W.
  • the projection data set P_D used to operate the selector is then initialized to 0 in an operation 630 , and a loop traverses the list W with an operation 635 and an operation 640 in order to fill the list P_D with the projection data associated with the voxels of the list W.
  • a function Rand () adds a chosen number of projection data to the list P_D in order to promote the exploration of new solutions.
  • the variety may not be added randomly but deterministically.
  • the list W is traversed by a loop, starting from an operation 650.
  • the selector 10 is called in an operation 655 with each voxel of the list W in order to find the best projection data p_dy of the list P_D considering from his neighborhood.
  • the result is stored in the list Z which constitutes the result data 22 for the current index resolution i.
  • the index i is incremented in an operation 670.
  • the loop of the operations 630 to 660 can be repeated a chosen number of times, or a number of times depending on a convergence criterion, in order to ensure that the exploration of new solutions has been optimized within each resolution.
  • the driver returns the list V containing the result data in an operation 675.
  • FIG. 7 represents an exemplary implementation of the device 2 for transforming the previously calculated voxel data into three-dimensional printable object data.
  • the data produced by the pilot 14 are not necessarily "reliable" structurally.
  • looking at the result data 22 it appears that the ears of the rabbit, although corresponding to the ideal projection of the pattern data, are not attached to the rest of the body. Under these conditions, you can not print an object.
  • the object of FIGS. 7 to 9 is also applicable in the case where the voxel data are not obtained as described above.
  • the device 2 shares in an operation 700 of voxel data V.
  • This voxel data describes a three-dimensional object blank: either the voxel designates a solid location, or it designates an empty space.
  • the generator 16 transforms the voxel data V into a first graph G.
  • the graph G is constructed as follows:
  • each voxel of the voxel data V forms a node, - two voxels are considered neighbors and connected by an edge if and only if they share a corner,
  • the weight of the edge in the graph is the length of the edge, defined as the distance between the centers of the two voxels connected by the edge.
  • the invention proposes two methods that can be combined to evaluate the mechanical strength of an object corresponding to the voxel data.
  • the number of nodes in the first graph G is too important to be able to calculate anything. Indeed, for the additively manufactured object to be aesthetic, it takes a large number of voxels to have a good print resolution, which makes the simulation very complex.
  • the graph G is "simplified" into a second graph A by means of a function ConnQ.
  • the function Conn () is performed by the extractor 18, and FIG. 8 represents an example of implementation of this function.
  • the first graph G is sampled Poisson to define a sampled graph S of voxels each corresponding to a full location.
  • the extractor 18 starts from the data of the first graph G, the sampled graph S, as well as from a graph of markers T and a second graph A which are both initialized to 0.
  • the purpose of the function Conn () is to connect all the nodes of the sampled graph S by first edges and second edges.
  • the first edges are “solid” edges, while the second edges are “non-solid” edges. This is achieved by the propagation of markers in the graph of markers T, starting from the nodes of the sampled graph S.
  • the marker graph T is initialized by means of an Exs () function which receives the sampled graph S and the first graph G as arguments.
  • the function Exs () proceeds by selecting, for each node of the graph S, the nodes of the first graph G with which it shares an edge, and to mark with a marker identifying the respective node of the graph S that of the selected nodes which designates a location full and whose ridge has the lowest weight.
  • Operation 805 can be viewed as an initialization operation. Indeed, after this one, two loops will follow one another. The first loop will determine the first edges and the second loop will determine the second edges.
  • the first loop starts with an operation 810 in which the ExsQ function is called again to propagate the markers.
  • the marker graph T is used as argument of the function Exs () (instead of the sampled graph S of the operation 805).
  • Exs () instead of the sampled graph S of the operation 805.
  • an Edg () function tests the T marker graph to identify whether a solid edge has been detected by the propagation.
  • a solid edge is detected when two different markers are associated with the same voxel of the first graph G. In fact, this means that this voxel is directly connected by a voxel path designating a solid location between two nodes of the second graph which designate them. even a solid location.
  • a function FillQ determines if all the nodes marker graphs have been propagated in an 825 operation. If it remains possible to propagate markers, the loop resumes at 810. Otherwise, the second loop starts in an operation 830 with the execution of an Ex () function.
  • the Ex () function is similar to the ExsQ function, except that marker propagation can be done to all voxels in the first G graph, and not only to those that indicate a full location.
  • the Ex () function also differs from the Exs () function in that the propagation excludes the voxels associated with a first edge.
  • the remainder of the second loop is similar with operations 835, 840 and 845 which are identical to operations 815, 820 and 825.
  • the function Conn () ends in an operation 850.
  • the extractor 18 could implement the Conn () function differently, for example by detecting the first edges and the second edges simultaneously, or by using a non-geodesic distance or determined differently.
  • the stiffener 20 starts from the second graph A and analyzes whether an object corresponding to this graph would be mechanically stable. For this, the stiffener 20 uses two methods that can be used alone or in combination. These methods correspond to two distinct physical simulations that determine whether one or more edges exceed a threshold that is synonymous with structural rigidity.
  • the first method is a method based on a finite element simulation and Figure 9 represents an example of implementation of this method by the stiffener 20.
  • This function analyzes the second edges, called “non-solid” and redefines some of they are solid heads if necessary to make the object mechanically rigid.
  • the stiffener 20 starts from the second graph A.
  • a loop starts. This loop begins with a simulation by finite element methods of the object defined by the second graph A.
  • This simulation is performed by a function FE () which also has access to the parameters of mechanical simulation (that is to say the boundary conditions to be met by the printed object for a desired manipulation).
  • the result of the function FE () is a list of second edges W in which the second edges are classified in order of decreasing simulated stress, each of these edges having been determined to have a stress exceeding a constraint threshold in view of the conditions at limits.
  • This ranking in order of decreasing stress value is important because the principle of the method applied by the stiffener 20 is to make solid the most constrained edge, then the second most constrained edge which is at a given distance from the edge previous, etc.
  • an operation 940 it is tested if the list W still contains an edge. If so, then the corresponding y edge is tested by a Dist () function in a 950 operation to determine if it is at a sufficient distance from the newly-made x edge. If it is not, then operation 940 is repeated, until a non-solid edge sufficiently far from the edge x is found in W or the list is empty.
  • edges are not systematically made solid when they are close, which makes it possible to better respect the original form of the object of the second graph A. If such an edge is found, then it is made solid in an operation 960 identical to the operation 930, and in an operation 970, the edge is stored as the previous edge x for the repetition of the loop with the operation 940 When the list W is empty, a new simulation is executed with the operation 910, to determine if the modifications were sufficient to make the object mechanically rigid.
  • the loop is repeated. If the list W is empty, then none of the non-solid edges has a stress value that is too large given the boundary conditions, and the function ends with the operation 980, in which all the voxels of the first corresponding graph G the edges that have been made solid are also made solid.
  • neighboring voxels that are also made solid could be selected differently (for example on a geometric and non-geodesic criterion), or neighboring voxels might not be changed.
  • the second method that the stiffener 20 can apply is a geometric method. For this, the stiffener 20 traverses each of the non-solid edges of the second graph A and calculates the ratio between the Euclidean distance between the two nodes of each edge and the geodesic distance through the solid edges that separates them. If this ratio exceeds a chosen threshold, then the edge is made solid, as well as optionnally the neighbors of the voxels that compose it in the first graph as described above.
  • the mechanical method and the geometric method can be used separately or in combination.
  • the Applicant's work leads her in the current state of her research to consider that their combination is particularly advantageous, although it may seem redundant to the skilled person.
  • the stiffener 20 has redefined the non-solid edges, the object can be printed on the basis of the voxels corresponding to the second graph A and the voxels of the first graph G thus modified.
  • the Applicant has nevertheless identified that this modification of the edges, although mechanically efficient, may limit the efficiency of the image processing presented with FIGS. 2 to 5.
  • the Applicant has discovered that it was advantageous, after the execution of the stiffener 20, to recall the image processing on the voxels that have been redefined. For this, the driver 14 performs the function of Figure 5 again, only on modified voxels, for a smaller number of resolutions, and a slightly different way.
  • the pilot 14 determines for each modified voxel the list of parent voxels for a chosen number of lower resolutions, that is to say what are the voxels that the propagator 12 has transformed into these voxels, and this for a size corresponding to that of the lowest resolution sought.
  • the number of resolutions chosen is 2, but it could be higher.
  • the propagator 12 doubles the resolution at each execution (eight times more voxels), then: the lowest resolution will include a voxel,
  • the intermediate resolution will have 8 voxels
  • the resolution corresponding to the voxels of the second graph A will include 64 voxels.
  • the execution of the driver 14 will be carried out from each of the lowest resolution voxels which has a son which has been modified by the stiffener 20.
  • the driver 14 indicates whether a voxel corresponds to a voxel that has been modified. When this is not the case, the selector 10 is executed identically. On the other hand, if the voxel in question corresponds to a voxel that has been modified, then the function performed by the selector 10 is slightly modified according to FIG. 10 to select as projection data 26 only those which will also designate a full location. Thus, the execution of the driver 14 does not degrade the mechanical structure, and only visually harmonize the object so that it better corresponds to the pattern data 24.
  • FIG. 10 the operations identical to those of FIG. 4 have been represented with an identical numerical suffix, so that the operation 410 and the operation 1010 are identical, and so on.
  • only one operation 1042 has been added, which is a test to determine whether projection data p_dy likely to improve the image processing correspond to a solid location, or not.
  • the generator 16, the extractor 18 and the stiffener 20 are again applied to the resulting voxel data.
  • the additive manufacturing operations including the generation of the support can be performed as is known.
  • the invention can also be defined as a data processing method comprising the following operations:
  • cl defining a projection data set comprising on the one hand the projection data associated with the plurality of resultant voxel data, and on the other hand a non-zero amount of other projection data
  • c2) for at least some of the projection data resulting from the operation c1), and for at least some of the voxels neighboring the given voxel, and for calculating a similarity value between the given voxel and each neighboring voxel concerned, starting from projecting the three-dimensional surface data associated with the given voxel and three-dimensional surface data associated with the neighboring voxel, respectively on a first surface defined by projection data of the project data set and on a second surface defined by the projection data of the neighbor voxel on which the pattern data is plated, by calculating a value derived from the difference between the projection of the given voxel on the first surface and the second surface on the one hand, and the difference between the projection neighbor voxel on the first surface and the second surface on the other hand,
  • This method may have one or more of the following features:
  • operation c) comprises determining the value derived from the difference between the projection of a voxel on the first surface and on the second surface from the texture difference resulting from the plating of the pattern data on the first surface. and on the second surface for these projections,
  • operation c) comprises determining the similarity value from a value derived from the value of the angle formed by the normal to the plane defined by the data.
  • the similarity value is strictly positive and indicates a similarity that is all the better as the similarity value is small
  • operation b) comprises associating at least some of the plurality of higher resolution voxels with randomly selected projection data
  • the projection data comprises a surface identifier selected from a set of planes and transformation data indicating a translation and / or a rotation of the reference of the surface designated by the surface identifier for the plating of the pattern data,
  • the projection data are independent of the three-dimensional surface data
  • the area defined by the projection data is a plane
  • the pattern data is of a stochastic and repetitive nature.
  • the invention may also be defined as a computer program product comprising portions of program code for implementing the device or method as described above when said program is run on a computer.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Chemical & Material Sciences (AREA)
  • Manufacturing & Machinery (AREA)
  • Materials Engineering (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Architecture (AREA)
  • Apparatus For Radiation Diagnosis (AREA)

Abstract

Un dispositif de traitement de données applique des données de motif sur des données de surface à partir de données de projection, en découpant les données de surface en voxels et en déterminant des données de projection optimales pour chaque voxel compte tenu de son voisinage.

Description

Dispositif de traitement de données
L'invention concerne le domaine de la texturisation et en particulier le domaine de l'impression en trois dimensions.
L'application d'une texture à un objet est un domaine qui est mûr. Avec l'augmentation des résolutions disponibles, de nouveaux besoins se font sentir pour améliorer la qualité du plaquage des textures ainsi que le temps nécessaire, en particulier dans le cas de textures représentant un motif, avec lesquelles les irrégularités sont encore plus voyantes.
Ces problématiques sont encore plus présentes dans le domaine de l'impression en trois dimensions. Actuellement, les possibilités de personnalisation des objets imprimés en trois dimensions sont assez limitées. En effet, il n'est possible d'utiliser qu'une seule matière pour l'impression, ce qui limite grandement la créativité.
L'invention vient améliorer la situation. A cet effet, l'invention propose un dispositif de traitement de données, comprenant une mémoire pour recevoir des données de surface en trois dimensions, des données de projection et des données de motif, un trieur capable de sélectionner pour un voxel d'entrée des voxels entourant le voxel d'entrée qui correspondent aux données de surface en trois dimensions, un estimateur capable de calculer une valeur de similarité entre un premier voxel associé à de premières données de projection et un second voxel associé à de secondes données de projection en calculant la projection des données de surface en trois dimensions associées au premier voxel et des données de surface en trois dimensions associées au deuxième voxel, respectivement sur une première surface définie par les premières données de projection et sur une deuxième surface définie par les deuxièmes données de projection sur lesquelles les données de motif sont plaquées, et en calculant une valeur tirée de la différence entre la projection du premier voxel sur la première surface et la deuxième surface d'une part, et de la différence entre la projection du deuxième voxel sur la première surface et la deuxième surface d'autre part, un sélectionneur capable, pour un voxel donné et à partir d'un jeu de données de projection, de déterminer celles des données de projection dudit jeu qui indiquent la meilleure similarité avec des voxels voisins du voxel donné, à partir d'une valeur tirée des valeurs de similarité obtenues en appelant l'estimateur de manière répétée avec d'une part le voxel donné comme premier voxel et des données de projection du jeu comme premières données de projection et d'autre part avec certains au moins des voxels tirés de l'appel du trieur avec le premier voxel en tant que deuxième voxel, et des données de projection qui leur sont associées comme deuxièmes données de projection, et pour associer au voxel donné les données de projection déterminées, un propagateur capable, à partir d'un voxel d'une résolution donnée et de données de projection qui lui sont associées, de définir une pluralité de voxels de résolution supérieure à la résolution donnée, et pour associer à certains au moins de cette pluralité de voxels les données de projection associées au voxel de résolution donnée, un pilote agencé pour appeler le propagateur avec des données de surface en trois dimensions, un voxel et des données de projection associées, et pour appeler le sélectionneur avec certains au moins de la pluralité de voxels résultante auxquels sont associées des données de projection en tant que voxel donné, ainsi qu'avec un jeu de données de projection comprenant d'une part les données de projection associées à la pluralité de données de voxels résultante, et d'autre part une quantité non nulle d'autres données de projection, le pilote étant en outre agencé pour répéter l'appel du propagateur avec certains au moins des voxels associés aux données de projection déterminées par le sélectionneur, ainsi que l'appel du sélectionneur sur certains au moins de la pluralité de voxels résultante jusqu'à atteindre une résolution choisie.
Ce dispositif est particulièrement avantageux car il permet d'offrir un objet dont la tenue mécanique est sûre, tout en offrant des possibilités esthétiques inaccessibles précédemment.
Selon les variantes de réalisation, le dispositif pourra présenter une ou plusieurs des caractéristiques suivantes :
- l'estimateur détermine la valeur tirée de la différence entre la projection d'un voxel sur la première surface et sur la deuxième surface à partir de la différence de texture résultant du plaquage des données de motif sur la première surface et sur la deuxième surface pour ces projections,
- l'estimateur détermine la valeur de similarité en outre à partir d'une valeur tirée de la valeur de l'angle formé par la normale au plan défini par les données de surface en trois dimensions d'une part, et par la normale au plan de projection d'autre part,
- la valeur de similarité est strictement positive et indique une similarité d'autant meilleure que la valeur de similarité est faible,
- le propagateur associe certains au moins des voxels de la pluralité de voxels de résolution supérieure avec des données de projection choisies aléatoirement,
- les données de projection comprennent un identifiant de surface choisi parmi un jeu de plans et des données de transformation indiquant une translation et/ou une rotation du repère de la surface désignée par l'identifiant de surface pour le plaquage des données de motif,
- les données de projection sont indépendantes des données de surface en trois dimensions,
- la surface définie par les données de projection est un plan,
- les données de surface en trois dimensions associées à un voxel donné comprennent une moyenne des normales d'une portion de surface associée au voxel donné et
- les données de motif sont de nature stochastique et répétitive.
D'autres caractéristiques et avantages de l' invention apparaîtront mieux à la lecture de la description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels :
- la figure 1 représente un diagramme schématique d'un dispositif selon l'invention, - la figure 2 représente un exemple de mise en œuvre d'une fonction par le trieur de la figure 1 ,
- la figure 3 représente un exemple de mise en œuvre d'une fonction par l'estimateur de la figure 1,
- la figure 4 représente un exemple de mise en œuvre d'une fonction par le sélectionneur de la figure 1 ,
- la figure 5 représente un exemple de mise en œuvre d'une fonction par le propagateur de la figure 1 , - la figure 6 représente un exemple de mise en œuvre d'une fonction par le pilote de la figure 1 ,
- la figure 7 représente un exemple de mise en œuvre du dispositif de la figure 1 ,
- la figure 8 représente un exemple de mise en œuvre d'une fonction par l'extracteur de la figure 1 ,
- la figure 9 représente un exemple de mise en œuvre d'une fonction par le raidisseur de la figure 1, et
- la figure 10 représente un exemple de mise en œuvre d'une variante d'une fonction par le sélectionneur de la figure 1 , lors d'une boucle spécifique.
Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits.
La figure 1 représente un diagramme schématique d'un dispositif 2 selon l'invention. Le dispositif 2 comprend une mémoire 4, un trieur 6, un estimateur 8, un sélectionneur 10, un propagateur 12, un pilote 14, un générateur 16, un extracteur 18, et un raidisseur 20. Dans le cadre de l'invention, la mémoire 4 peut être tout type de stockage de données propre à recevoir des données numériques : disque dur, disque dur à mémoire flash (SSD en anglais), mémoire flash sous toute forme, mémoire vive, disque magnétique, stockage distribué localement ou dans le cloud, etc. Les données calculées par le dispositif peuvent être stockées sur tout type de mémoire similaire à la mémoire 2, ou sur celle-ci. Ces données peuvent être effacées après que le dispositif ait effectué ses tâches ou conservées. Les données stockées dans la mémoire 4 sont de plusieurs natures. Ainsi, la mémoire 4 reçoit des données de surface en trois dimensions 22, des données de motif 24, et des données de travail 26. Les données de surface en trois dimensions 22 décrivent l'objet sur lequel on souhaite appliquer une texture. Ces données peuvent être directement utilisables, c'est-à-dire avoir déjà fait l'objet d'une voxelisation, ou être des données brutes. Dans ce cas, un élément non représenté pourra réaliser la voxelisation. La voxelisation n'étant pas l'objet de l'invention, il sera considéré dans la suite que les données de surface en trois dimensions 22 ont déjà fait l'objet d'une voxelisation. Dans l'exemple décrit ici, les données de surface en trois dimensions 22 contiennent pour chaque voxel la moyenne des normales de la surface de l'objet associé à ce voxel. En variante, les données de surface en trois dimensions 22 pourraient contenir les données de la surface en tant que telle, ou toutes autres données qui permettent de décrire la portion de la surface d'un objet qui est associée à un voxel. Les données de surface en trois dimensions 22 permettent donc de définir l'objet par des voxels associés à des portions de la surface de l'objet.
Les données de motif 24 représentent le motif avec lequel on souhaite texturer les données de surface en trois dimensions 22. Dans l'exemple décrit ici, le but est de produire un motif de type « noir et blanc ». qui représente du plein et du vide dans l'objet en trois dimensions à imprimer. Pour cela, les données de motif 24 peuvent directement définir un motif binaire. Lorsque les données de motif 24 ne sont pas de type binaire, elles peuvent faire l'objet d'un traitement spécifique à cette fin. Enfin, dans le cas où il n'est pas recherché de produire un objet en trois dimensions composé de vide et de plein, les données de motifs 24 peuvent être colorisées afin de texturer l'objet en couleurs, par exemple pour une impression tridimensionnelle multi-couleurs. Les données de motifs 24 peuvent optionnellement définir un relief sur les parties pleines.
Les données de travail 26 comprennent toutes les données servant à réaliser les traitements de données selon l'invention. Ces données incluent les données associant les données de surface en trois dimensions aux données définissant les voxels, des données de projection, des données de valeur de similarité et d'autres valeurs décrites dans la suite. Dans l'exemple décrit ici, les données de projection définissent d'une part un plan de projection (c'est-à-dire un couple de vecteurs non colinéaires), et d'autre part une transformation dans ce plan.
Ainsi, les données de motif 24 seront transformées dans un plan selon les données de transformation de ce plan pour texturer ce dernier, puis le centre du voxel concerné est projeté et peut recevoir une texture associée à sa projection dans le plan texturé. Il est possible à partir d'un nombre limité de plans (26 dans l'exemple décrit ici) et d'un certain nombre de transformations de définir un très grand nombre de plans de projection possibles. Une fois les données de projection ainsi définies, il s'agit donc de choisir les meilleures paires plan/transformation pour chaque voxel. En variante, les données de motif 24 peuvent être plaquées sur la portion des données de surface correspondant au voxel, et cette surface texturée peut être projetée sur le plan puis transformée selon les données de transformation.
Dans certaines variantes, il est possible d'utiliser d'autres surfaces de projection qu'un plan, comme des cylindres ou des sphères, ou toute autre surface qui pourra être avantageuse sur certaines géométries d'objet.
Bien que l'exemple décrit ici utilise des plans comme surface de projection, il est possible d'utiliser d'autres surfaces de projection comme des cylindres ou des sphères selon les géométries des objets.
Le trieur 6, l'estimateur 8, le sélectionneur 10, le propagateur 12, le pilote 14, le générateur 16, l'extracteur 18 et le raidisseur 20 sont des éléments accédant directement ou indirectement à la mémoire 4. Ils peuvent être réalisés sous la forme d'un code informatique approprié exécuté sur un ou plusieurs processeurs. Par processeurs, il doit être compris tout processeur adapté au calcul de projection de textures sur des plans et de traitements liés aux voxels. Un tel processeur peut être réalisé de toute manière connue, sous la forme d'un microprocesseur pour ordinateur personnel, d'une puce dédiée de type FPGA ou SoC (« System on chip » en anglais), d'une ressource de calcul sur une grille, d'un microcontrôleur, ou de toute autre forme propre à fournir la puissance de calcul nécessaire à la réalisation décrite plus bas. Un ou plusieurs de ces éléments peuvent également être réalisés sous la forme de circuits électroniques spécialisés tel un ASIC. Une combinaison de processeur et de circuits électroniques peut également être envisagée.
Comme mentionné plus haut, l'invention réalise une bonne texturisation en trouvant les bons couples plans/transformation à appliquer à chaque élément des données de surface en trois dimensions (voxels) et aux données de motifs. Plus précisément, l'invention applique une méthode par descente de résolution pour déterminer ces couples.
Pour cela, il est procédé en considérant que le problème est résolu pour une résolution donnée, et que l'on va chercher à résoudre ce même problème pour une résolution supérieure, c'est-à-dire dont le grain est plus fin. Pour cela, dans un premier temps, le résultat de la résolution donnée est propagé à la résolution supérieure, en découpant chacun des voxels de la résolution donnée en voxels de résolution supérieure, et en appliquant à ces voxels la solution trouvée pour la résolution donnée. Puis, le problème est résolu en optimisant les couples plan/transformation ainsi affectés à la résolution supérieure. Pour cela, chaque voxel de la résolution supérieure est testé avec tous les couples plan/transformation connus pour la résolution donnée, et une valeur de similarité est déterminée en fonction des couples plan/transformation des voisins de ce voxel. Finalement, chaque voxel adopte le couple plan/transformation qui indique la meilleure similarité avec ses voisins pour définir la solution pour la résolution supérieure.
Ces opérations sont réalisées par le trieur 6 dont le rôle est de sélectionner les voxels qui sont les voisins d'un voxel donné, l'estimateur 8 dont le rôle est de calculer une valeur de similarité entre deux voxels et leur combinaison plan/transformation associée, le sélectionneur 10 qui utilise le trieur 6 et l'estimateur 8 pour déterminer la meilleure combinaison plan/transformation pour un voxel donné, le propagateur 12 qui propage la solution d'une résolution donnée à une résolution supérieure, et le pilote 14, qui active sélectivement le sélectionneur 10 et le propagateur 12 pour propager le résultat de résolution en résolution, et pour appeler le sélectionneur 10 sur les voxels résultants afin de calculer la solution pour chaque résolution supérieure. Ces opérations sont décrites en rapport avec les figures 2 à 6.
Une fois que la résolution souhaitée est obtenue, la projection des voxels correspondant aux données de surface sur les couples plan/transformation combinés aux données de motifs 24 produit des données de résultat 28.
Ensuite, le générateur 16, l'extracteur 18 et le raidisseur 20 traitent les données de résultat 28 afin de rendre la structure physique correspondante stable d'un point de vue mécanique. Ces opérations sont décrites en rapport avec les figures 7 à 9.
Comme cela apparaît, les opérations des figures 2 à 6 et 7 à 9, bien que synergiques pour fournir un dispositif qui part de données de surface et de données de motif pour donner un objet à imprimer en trois dimensions de nature originale, sont assez indépendantes les unes des autres. Ainsi, les figures 2 à 6 décrivent un dispositif original pour produire des données de motif plaqué avantageux, tandis que les figures 7 à 9 décrivent un dispositif original pour produire un objet à imprimer en trois dimensions qui est mécaniquement solide. Dans les figures décrites ci-dessous, une variable dont le nom est tout en majuscule désigne dans la majorité des cas une liste contenant plusieurs éléments, tandis qu'une variable dont le nom est en minuscule désigne un élément seul.
La figure 2 représente un exemple d'une fonction mise en œuvre par le trieur 6 pour déterminer les voxels voisins d'un voxel donné. Dans l'exemple décrit ici, un voxel est dit voisin d'un autre lorsqu' il est inclus dans un cube dont l'arête mesure cinq voxels et dont le centre est l'autre voxel. En d'autres termes, si on définit les voxels par des coordonnées de type (x ;y ;z) où x, y et z sont des multiples d'une dimension de voxel, deux voxels de coordonnées (xl ; yl ; zl) et (x2 ; y2 ; z2) sont voisins lorsque xl-x2, yl-y2 et zl-z2 ont une valeur absolue inférieure ou égale à 2. Cependant, seuls les voxels qui correspondent à des données de surface 22 sont intéressants.
Le trieur 6 commence dans une opération 260 avec des données de surface en trois dimensions O, une variable de taille de voisinage n_s, un voxel d'entrée v et une liste de voisins N initialisée à 0 (c'est-à-dire vide). Comme on l'a vu plus haut, dans le cadre de l'exemple décrit ici, la variable de taille de voisinage n_s a pour valeur 5, pour désigner un voisinage en forme de cube de longueur 5 voxels. En variante, le voisinage pourrait avoir une forme différente, ainsi que des dimensions différentes.
Dans une opération 210, une fonction Ngb() est appelée avec le voxel d'entrée v, et la taille de voisinage n_s comme variables. La fonction Ngb() sélectionne tous les voxels qui entourent le voxel v dans un cube de dimension n_s et centré sur le voxel v, et les stocke ensemble dans la liste P. Comme on le verra par la suite, les voxels qui sont associés à des données de surface 22 sont associés à des données de projection 26. Dans l'exemple décrit ici, la liste P reçoit à la fois les voxels voisins, mais également les données de projection 26 qui leur sont associées. En variante, la correspondance entre ces voxels et les données de projection correspondantes sont maintenues en dehors de la liste P.
La liste P contient tous les voisins du voxel v, y compris les voxels qui ne correspondent pas aux données de surface 22. Par conséquent, il ne sert à rien de conserver ces voxels, puisqu'ils ne peuvent pas servir à projeter les données de motif 24.
Pour cela, une boucle est lancée dans une opération 226, dans laquelle la liste P est dépilée dans un couple (x ;p_dx) qui reçoit le premier voxel de la liste P ainsi que les données de projection 26 qui lui sont associées. Dans une opération 230, les données de projection p_dx sont testées : si elles sont vides, cela signifie que le voxel x ne correspond pas à des données de surface 22, et inversement. Ainsi, si les données de projection p_dx sont présentes, alors le voxel x et ses données de projection p_dx sont entrées dans la liste N dans une opération 240. Ensuite, ou lorsque le voxel x n'est pas associé à des données de surface 22, la boucle reprend avec l'opération 226. La boucle se termine lorsque la liste P est vidée, et la liste N est retournée dans une opération 250. La figure 3 représente un exemple d'une fonction mise en œuvre par l'estimateur 8 pour calculer une valeur de similarité entre un premier voxel vl auquel sont associées des premières données de projection p_dl , et un deuxième voxel v2 auquel sont associées des deuxièmes données de projection p_d2. Les travaux de la Demanderesse l'ont amenée à considérer que la similarité entre deux voxels s'apprécie au fait que leurs projections sur les plans associés respectivement aux premières et aux deuxièmes données de projection sont assez similaires.
Dit autrement, si l'on projette les données de motifs plaquées sur les données de surface 22 du premier voxel d'une part avec les premières données de projection et d'autre part avec les deuxièmes données de projection, les textures résultantes doivent être similaires, et il en va de même avec le deuxième voxel.
Ainsi, dans une opération 300, l'estimateur 8 reçoit un premier voxel vl , un deuxième voxel v2, des premières données de projection p_dl, des deuxièmes données de projection p_d2, les données de motif t, les données de surface en trois dimensions O, et une variable de valeur de similarité initialisée à 0.
Dans une opération 310, deux textures tl l et tl2 sont calculées au moyen d'une fonction Proj(), de sorte que :
- la texture tl l reçoit la texture de la projection du centre du premier voxel vl sur le plan défini par les premières données de projection p_dl et texturé selon ces dernières avec les données de motif 24, et
- la texture tl 2 reçoit la texture de la projection du centre du premier voxel vl sur le plan défini par les deuxièmes données de projection p_d2 et texturé selon ces dernières avec les données de motif 24. Ensuite, ou en parallèle selon les variantes, dans une opération 312, deux textures t21 et t22 sont calculées au moyen d'une fonction Proj(), de sorte que :
- la texture t21 reçoit la texture de la projection du centre du deuxième voxel v2 sur le plan défini par les premières données de projection p_dl et texturé selon ces dernières avec les données de motif 24, et
- la texture t22 reçoit la texture de la projection du centre du deuxième voxel v2 sur le plan défini par les deuxièmes données de projection p_d2 et texturé selon ces dernières avec les données de motif 24. Enfin, dans une opération 330, la valeur de similarité retournée d est calculée comme la somme de la différence entre les textures tl l et tl2 d'une part et entre les textures t21 et t22 d'autre part. Dans l'exemple décrit ici, la différence entre les textures est calculée au moyen d'une fonction L2() qui calcule la norme euclidienne de la différence de couleur pixel par pixel des textures respectives.
La figure 4 représente un exemple d'une fonction mise en œuvre par le sélectionneur 10 pour déterminer les données de projection qui sont les plus adaptées pour un voxel donné compte tenu de son entourage. Pour cela, le sélectionneur 10 reçoit dans une opération 400 le voxel v concerné, les données de projection p_dv qui lui sont associées, un jeu de données de projection pouvant améliorer la situation P_D, les données de motif t, les données de surface en trois dimensions O, et une variable de valeur de meilleure similarité dm initialisée à 0. Dans une première boucle, la similarité entre le voxel v et son voisinage est calculée pour les données de projection p_dv qui lui sont associées. Ainsi, dans une opération 405, le sélectionneur 10 appelle le trieur 6 qui stocke le résultat dans une liste N. Ensuite, une boucle est effectuée dans laquelle la liste N est dépilée dans une opération 410. Ensuite, dans une opération 415, le sélectionneur 10 appelle l'estimateur 8 avec d'une part le voxel v et ses données de projection p_dv associées, et d'autre part chaque voxel voisin x dépilé et ses données de projection associées p_dx. La variable de meilleure similarité dm reçoit à chaque fois la valeur de similarité ainsi calculée. Lorsque la liste N est vide, la variable de meilleure similarité dm a été initial isée avec la somme des valeurs de similarité entre le voxel donné avec ses données de projection associées p_dv et ses voisins avec leurs données de projection associées.
Ensuite, le sélectionneur 10 initialise une autre boucle dans laquelle chacune des données de projection du jeu de données de projection P_D vont être appliquées au voxel donné v, pour déterminer si elles constituent une meilleure correspondance avec les voxels du voisinage du voxel v et leurs données de projection associées.
Pour cela, une variable de valeur de similarité d est initialisée à 0 dans une opération 426, puis le jeu P_D est dépilé dans une opération 425. Ensuite, la même boucle que pour les opérations 410 et 415 est réalisée avec les opérations de dépilage 430 et de calcul de la similarité 435 entre le voxel donné v et les voxels de son voisinage. Cependant, dans l'opération 435, le voxel v n'est pas appelé avec les données de projection p_dv qui lui sont associées, mais avec les données de projection p_dy qui ont été dépilées dans l'opération 425.
Ensuite, dans une opération 440, les valeurs d et dm sont comparées. Si d est inférieure à dm, cela signifie que les données de projection p_dy, associées au voxel v, sont plus proches des voxels du voisinage du voxel v que les données de projection p_dv. Dans ce cas, la valeur dm reçoit la valeur d comme nouvelle valeur de meilleure similarité dans une opération 445, et les données de projection p_dv reçoivent les données de projection p_dy dans une opération 450. Ainsi, le couple dm et p_dv contient en permanence la valeur de meilleure similarité entre le voxel v et les voxels de son voisinage, ainsi que les données de projection correspondantes. Ensuite, ou si d est supérieure à dm, la boucle de dépilage du jeu P_D reprend avec l'opération 426 et la mise à zéro de la variable d. Enfin, lorsque le jeu P_D est vide, le sélectionneur 10 retourne les données de projection p_dv qui correspondent le mieux au voxel v compte tenu de son voisinage.
De nombreuses variantes sont directement envisageables, comme la réalisation des opérations 445 et 450 en parallèle, la parallélisation des boucles de calcul de la valeur de similarité. De plus, certaines boucles de calcul de la valeur de similarité pour des données de projection p_dy différentes pourraient être également réalisées en parallèle, et le meilleur candidat sélectionné à la fin. Par ailleurs, la Demanderesse a identifié le tait que la valeur de similarité entre le voxel donné et son voisinage pour des données de projection données peut optionnellement dépendre d'une valeur supplémentaire, qui découle de l'angle formé entre la normale au plan défini par les données de projection données et la normale aux données de surface en trois dimensions associées au voxel donné. En effet, si cet angle est grand, la projection des données de motif peut être fortement distordue, malgré une bonne similarité avec les voxels du voisinage. Ainsi, après le calcul de la similarité avec les voisins, une valeur tirée du produit scalaire de la normale aux données de surface en trois dimensions associées à v avec la normale au plan des données de projection peut être ajoutée.
La Demanderesse a également identifié le fait que la valeur de similarité entre le voxel donné et son voisinage pour des données de projection données peut optionnellement dépendre d'une position dans le motif, pour encourager ou décourager l'utilisation de certaines portions du motif. Ceci peut par exemple être utilisé lorsque le motif est répété sur le plan de projection, pour empêcher des discontinuités visuelles dues aux jonctions entre les bords du motif d'apparaître sur la surface. Les voxels qui sélectionnent une projection faisant apparaître cette portion du motif sont pénalisés par un accroissement des valeurs de similarité. La figure 5 représente un exemple d'une fonction mise en œuvre par le propagateur 12 pour propager la solution d'une résolution donnée à une résolution supérieure. Dans une opération 500, le propagateur 12 reçoit un voxel d'entrée v, des données de projection associées p_dv, des données de surface en trois dimensions O, une taille d'échantillonnage de résolution s, et une liste de voxels de résolution supérieure V initialisée à 0.
Dans une opération 510, le propagateur 12 appelle un fonction Up() avec le voxel v et la taille d'échantillonnage s. La fonction Up() renvoie une liste X de voxels de résolution supérieure, selon la taille d'échantillonnage s. Dans l'exemple décrit ici, la taille d'échantillonnage a pour valeur 2, de sorte que la liste X contient 8 voxels qui correspondent ensemble au voxel v.
Ensuite, le propagateur 12 exécute une boucle dans laquelle les voxels de la liste X sont dépilés dans une opération 526, puis testés dans une opération 525 pour déterminer si ces voxels correspondent à des données de surface en trois dimensions. Si ce n'est pas le cas, alors le voxel est stocké sans données de projection associées dans la liste V dans une opération 540. Dans le cas contraire, le voxel est stocké avec les données de projection p_dv dans la liste V dans une opération 550. Enfin, lorsque la liste X est vide, le propagateur 12 retourne la liste V dans une opération 560. En variante, l'opération 550 pourrait introduire du bruit améliorant la variété en affectant de manière aléatoire des données de projection distinctes des données de projection p_dv à certains au moins des voxels de résolution supérieure qui correspondent à des données de surface en trois dimensions. En variante, la variété n'est pas ajoutée de manière aléatoire, mais de manière déterministe.
La figure 6 représente un exemple d'une fonction mise en œuvre par le pilote 14 pour calculer les données de résultat 22 à partir des données de surface en trois dimensions 22, des données de motifs 24 et d'un jeu de données de projection. Dans une opération 600, le pilote 14 reçoit ces données ainsi que le niveau de résolution r recherché, la taille d'échantillonnage s et initialise une variable de boucle de résolution i à 0. Dans une opération 605, le pilote 14 exécute une fonction Init() pour lancer les opérations. Cette fonction a pour rôle de déterminer le premier voxel de résolution la plus grossière qui englobe les données de surface en trois dimensions, ainsi que les données de projection correspondantes. Dans l'exemple décrit ici, il n'y a qu'un seul premier voxel, mais il pourrait y en avoir plusieurs. De plus, les données de projection associées à ce premier voxel sont choisies de manière aléatoire. En variante, la fonction InitQ pourrait calculer ces données de projection.
Ensuite, le pilote 14 entame une série de boucles d'indice i jusqu'à ce que la résolution r soit atteinte (opération 610). Dans chaque boucle, une liste Z associant des voxels et des données de projection est initialisée à 0 dans une opération 615. Ensuite, la liste de voxels de résolution correspondant à l'itération précédente V est dépilée dans une opération 626. Chaque voxel x et ses données de projection p_dx sont ensuite propagées en appelant le propagateur 12 dans une opération 625 et la liste résultante est stockée dans une liste W. Le jeu de données de projection P_D utilisé pour faire fonctionner le sélectionneur est alors initialisé à 0 dans une opération 630, et une boucle parcourt la liste W avec une opération 635 et une opération 640 afin de remplir la liste P_D avec les données de projection associées aux voxels de la liste W.
Ensuite, dans une opération 645, une fonction Rand() ajoute un nombre choisi de données de projection à la liste P_D afin de favoriser l'exploration de nouvelles solutions. Ici encore, la variété peut ne pas être ajoutée de manière aléatoire, mais de manière déterministe.
Enfin, la liste W est parcourue par une boucle, à partir d'une opération 650. Le sélectionneur 10 est appelé dans une opération 655 avec chaque voxel de la liste W afin de trouver les meilleures données de projection p_dy de la liste P_D compte tenu de son voisinage. Le résultat est stocké dans la liste Z qui constitue les données de résultat 22 pour la résolution d'indice courant i. Lorsque toute la liste V a été propagée et optimisée, elle est mise à jour dans une opération 665 avec la liste Z résultante, qui représente la solution pour la résolution d'indice i, puis l' indice i est incrémenté dans une opération 670. On notera qu'afin d'explorer tous les possibles et d'enrichir l'exploration, la boucle des opérations 630 à 660 peut être répétée un nombre choisi de fois, ou un nombre de fois dépendant d'un critère de convergence, afin de s'assurer que l'exploration de nouvelles solutions a été réalisée de manière optimale au sein de chaque résolution. Lorsque la résolution r est atteinte, le pilote retourne la liste V contenant les données de résultat dans une opération 675.
La figure 7 représente un exemple de mise en œuvre du dispositif 2 pour transformer les données de voxels calculées précédemment en données d'objet imprimable en trois dimensions.
En effet, les données produites par le pilote 14 ne sont pas forcément « fiables » structurellement. Par exemple, si l'on regarde les données de résultat 22, il apparaît que les oreilles du lapin, bien que correspondant à la projection idéale des données de motif, ne sont pas attachées au reste du corps. Dans ces conditions, impossible d'imprimer un objet. L'objet des figures 7 à 9 trouve son application également dans le cas où les données de voxels ne sont pas obtenues comme décrit ci-avant.
Ainsi, le dispositif 2 part dans une opération 700 de données de voxels V. Ces données de voxels décrivent une ébauche d'objet en trois dimensions : soit le voxel désigne un emplacement plein, soit il désigne un emplacement vide.
Ensuite, dans une opération 720, le générateur 16 transforme les données de voxels V en un premier graphe G. Dans l'exemple décrit ici, le graphe G est construit comme suit :
- chaque voxel des données de voxels V forme un nœud, - deux voxels sont considérés comme voisins et reliés par une arête si et seulement si ils partagent un coin,
- le poids de l'arête dans le graphe est la longueur de l'arête, définie comme la distance entre les centres des deux voxels reliés par l'arête.
L'invention propose deux méthodes pouvant être combinées pour évaluer la tenue mécanique d'un objet correspondant aux données de voxels. Dans les deux cas, le nombre de nœuds dans le premier graphe G est trop important pour réussir à calculer quoi que ce soit. En effet, pour que l'objet fabriqué de manière additive soit esthétique, il faut un nombre important de voxels pour avoir une bonne résolution d'impression, ce qui rend la simulation très complexe.
Pour simplifier les calculs, dans une opération 740, le graphe G est « simplifié » en un deuxième graphe A au moyen d'une fonction ConnQ. La fonction Conn() est réalisée par l'extracteur 18, et la figure 8 représente un exemple de mise en œuvre de cette fonction.
Au préalable, dans l'opération 720, le premier graphe G fait l'objet d'un échantillonnage de Poisson, afin de définir un graphe échantillonné S de voxels qui correspondent chacun à un emplacement plein.
Dans une opération 800, l'extracteur 18 part des données du premier graphe G, du graphe échantillonné S, ainsi que d'un graphe de marqueurs T et d'un deuxième graphe A qui sont tous deux initialisés à 0.
Le but de la fonction Conn() est de relier tous les nœuds du graphe échantillonné S par des premières arêtes et des deuxièmes arêtes. Les premières arêtes sont des arêtes « solides », tandis que les deuxièmes arêtes sont des arêtes « non solides ». Cela est réalisé par la propagation de marqueurs dans le graphe de marqueurs T, en partant des nœuds du graphe échantillonné S. Dans une opération 805, le graphe de marqueurs T est initialisé au moyen d'une fonction Exs() qui reçoit le graphe échantillonné S et le premier graphe G comme arguments. La fonction Exs() procède en sélectionnant, pour chaque nœud du graphe S, les nœuds du premier graphe G avec lesquels il partage une arête, et pour marquer avec un marqueur identifiant le nœud respectif du graphe S celui des nœuds sélectionnées qui désigne un emplacement plein et dont l'arête présente le poids le plus faible. En d'autres termes, en itérant ce processus il s'agit de propager le graphe S dans les candidats solides du graphe G suivant une distance géodésique basée sur le poids des arêtes. L'opération 805 peut être vue comme une opération d'initialisation. En effet, après celle-ci, deux boucles vont se succéder. La première boucle va déterminer les premières arêtes et la seconde boucle va déterminer les deuxièmes arêtes.
La première boucle commence avec une opération 810 dans laquelle la fonction ExsQ est à nouveau appelée pour propager les marqueurs. Pour cela, le graphe de marqueurs T est utilisé comme argument de la fonction Exs() (au lieu du graphe échantillonné S de l'opération 805). Ainsi, ce sont les nœuds qui ont été marqués à l'itération précédente de la boucle qui sont propagés, et le résultat est réinjecté dans le graphe de marqueurs T.
Ensuite, dans une opération 815, une fonction Edg() teste le graphe de marqueurs T pour identifier si une arête solide a été détectée par la propagation. Une arête solide est détectée lorsque deux marqueurs différents sont associés à un même voxel du premier graphe G. En effet, cela signifie que ce voxel est directement relié par un chemin de voxels désignant un emplacement solide entre deux nœuds du deuxième graphe qui désignent eux-mêmes un emplacement solide.
Si une ou plusieurs arêtes sont identifiées par la fonction Edg(), celles-ci sont introduites dans le deuxième graphe A dans une opération 820. Ensuite, ou lorsqu' aucune arête solide n'est détectée, une fonction FillQ détermine si tous les nœuds du graphe de marqueurs ont été propagés dans une opération 825. S'il reste possible de propager des marqueurs, la boucle reprend en 810. Sinon, la deuxième boucle commence dans une opération 830 avec l'exécution d'une fonction Ex(). La fonction Ex() est similaire à la fonction ExsQ, à l'exception du fait que la propagation des marqueurs peut se faire à tous les voxels du premier graphe G, et non plus uniquement à ceux qui indiquent un emplacement plein. La fonction Ex() diffère également de la fonction Exs() en ce que la propagation exclut les voxels associés à une première arête. Le reste de la deuxième boucle est similaire avec des opérations 835, 840 et 845 qui sont identiques aux opérations 815, 820 et 825.
Lorsque tous les marqueurs ont été propagés dans la deuxième boucle, la fonction Conn() se termine dans une opération 850. Il en résulte un deuxième graphe A qui contient un ensemble de nœuds qui correspondent à un échantillonnage de Poisson de voxels indiquant un emplacement plein, et qui sont reliés entre eux par des arêtes qui reflètent le fait que les chemins de voxels entre ces nœuds indiquent des emplacements pleins ou vides.
L'extracteur 18 pourrait mettre en œuvre la fonction Conn() différemment, par exemple en détectant les premières arêtes et les deuxièmes arêtes de manière simultanée, ou en utilisant une distance non géodésique ou déterminée différemment. Le raidisseur 20 part du deuxième graphe A et analyse si un objet correspondant à ce graphe serait mécaniquement stable. Pour cela, le raidisseur 20 utilise deux méthodes qui peuvent être utilisées seules ou en combinaison. Ces méthodes correspondent à deux simulations physiques distinctes qui déterminent si une ou plusieurs arêtes dépassent un seuil synonyme de rigidité structurelle.
La première méthode est une méthode basée sur une simulation par éléments finis et la figure 9 représente un exemple de mise en œuvre de cette méthode par le raidisseur 20. Cette fonction analyse les deuxièmes arêtes, dites « non solides » et redéfinit certaines d'entre elles en tant qu'arêtes solides si cela est nécessaire pour rendre l'objet mécaniquement rigide. Dans une opération 900, le raidisseur 20 part du deuxième graphe A. Ensuite, dans une opération 910, une boucle commence. Cette boucle commence par une simulation par méthodes des éléments finis de l'objet défini par le deuxième graphe A. Cette simulation est réalisée par une fonction FE() qui a par ailleurs accès aux paramètres de simulation mécanique (c'est-à-dire les conditions aux limites que doit respecter l'objet imprimé pour une manipulation recherchée).
Le résultat de la fonction FE() est une liste de deuxièmes arêtes W dans laquelle les deuxièmes arêtes sont classées par ordre de contrainte simulée décroissante, chacune de ces arêtes ayant été déterminée comme présentant une contrainte excédant un seuil de contrainte compte tenu des conditions aux limites.
Ce classement par ordre de valeur de contrainte décroissante est important car le principe de la méthode appliquée par le raidisseur 20 est de rendre solide l'arête la plus contrainte, puis la deuxième arête la plus contrainte qui est à une distance donnée de l'arête précédente, etc.
Par conséquent, dans une opération 920, la première arête x de la liste W est extraite, et celle-ci est rendue solide par une fonction Hrd() dans une opération 930.
Ensuite, dans une opération 940, il est testé si la liste W contient encore une arête. Si c'est le cas, alors l'arête y correspondante est testée par une fonction Dist() dans une opération 950 pour déterminer si elle est à une distance suffisante de l'arête x qui vient d'être rendue solide. Si ce n'est pas le cas, alors l'opération 940 est répétée, jusqu'à ce qu'une arête non solide suffisamment éloignée de l'arête x soit trouvée dans W ou que la liste soit vide.
Ainsi, toutes les arêtes ne sont pas systématiquement rendues solides lorsqu'elles sont voisines, ce qui permet de mieux respecter la forme originelle de l'objet du deuxième graphe A. Si une telle arête est trouvée, alors elle est rendue solide dans une opération 960 identique à l'opération 930, et dans une opération 970, l'arête y est stockée comme arête précédente x pour la répétition de la boucle avec l'opération 940. Lorsque la liste W est vide, une nouvelle simulation est exécutée avec l'opération 910, afin de déterminer si les modifications ont été suffisantes pour rendre l'objet mécaniquement rigide.
Si la liste W n'est pas vide, alors la boucle est répétée. Si la liste W est vide, alors aucune des arêtes non-solides ne présente une valeur de contrainte trop importante compte tenu des conditions aux limites, et la fonction se termine avec l'opération 980, dans laquelle tous les voxels du premier graphe G correspondant aux arêtes qui ont été rendues solides sont également rendus solides. Dans l'exemple décrit ici, les 3 voisins au sens géodésique de chaque voxel de l'arête, de part et d'autre de celle-ci sont également rendus solides. En variante, les voxels voisins qui sont également rendus solides pourraient être sélectionnés différemment (par exemple sur un critère géométrique et non géodésique), ou les voxels voisins pourraient ne pas être changés.
La deuxième méthode que le raidisseur 20 peut appliquer est une méthode géométrique. Pour cela, le raidisseur 20 parcourt chacune des arêtes non-solides du deuxième graphe A et calcule le ratio entre la distance euclidienne entre les deux nœuds de chaque arête et la distance géodésique au travers des arêtes solides qui les sépare. Si ce ratio excède un seuil choisi, alors l'arête est rendue solide, ainsi qu'optionnellement les voisins des voxels qui la composent dans le premier graphe comme décrit ci-dessus.
Comme mentionné plus haut, la méthode mécanique et la méthode géométrique peuvent être utilisées séparément ou en combinaison. Les travaux de la Demanderesse l'amènent dans l'état actuel de ses recherches à considérer que leur combinaison est particulièrement avantageuse, bien qu'elle puisse paraître redondante à l'homme du métier. Une fois que le raidisseur 20 a redéfini les arêtes non-solides, l'objet peut être imprimé sur la base des voxels correspondant au deuxième graphe A et des voxels du premier graphe G ainsi modifiés. La Demanderesse a néanmoins identifié que cette modification des arêtes, bien qu'efficace mécaniquement, peut limiter l'efficience du traitement d'image présenté avec les figures 2 à 5.
Pour corriger cela, la Demanderesse a découvert qu'il est possible d'exécuter le raidisseur 20 et la fonction de traitement d'image en boucle afin d'obtenir un résultat visuel optimal tout en maintenant une bonne tenue mécanique.
Pour cela, la Demanderesse a découvert qu'il était avantageux, après l'exécution du raidisseur 20, de rappeler le traitement d'image sur les voxels qui ont été redéfinis. Pour cela, le pilote 14 exécute à nouveau la fonction de la figure 5, uniquement sur les voxels modifiés, pour un nombre plus restreint de résolutions, et d'une manière légèrement différente.
Ainsi, dans un premier temps, le pilote 14 détermine pour chaque voxel modifié la liste des voxels parents pour un nombre choisi de résolutions inférieures, c'est-à-dire quels sont les voxels que le propagateur 12 a transformés en ces voxels, et ce pour une taille correspondant à celle de la résolution la plus faible recherchée.
Dans l'exemple décrit ici, le nombre de résolutions choisi est 2, mais il pourrait être supérieur. Par exemple, si le nombre de résolutions choisi est de 2, et que le propagateur 12 double la résolution à chaque exécution (huit fois plus de voxels), alors : la résolution la plus faible comportera un voxel,
la résolution intermédiaire comportera 8 voxels, et
la résolution qui correspond aux voxels du deuxième graphe A comportera 64 voxels. L'exécution du pilote 14 sera réalisée à partir de chacun des voxels de résolution la plus basse qui présente un fils qui a été modifié par le raidisseur 20.
Dans chaque résolution, le pilote 14 indique si un voxel correspond à un voxel qui a été modifié. Lorsque ce n'est pas le cas, le sélectionneur 10 est exécuté à l'identique. En revanche, si le voxel en question correspond à un voxel qui a été modifié, alors la fonction exécutée par le sélectionneur 10 est légèrement modifiée conformément à la figure 10 pour ne sélectionner comme données de projection 26 que celles qui désigneront également un emplacement plein. Ainsi, l'exécution du pilote 14 ne vient pas dégrader la structure mécanique, et seulement harmoniser visuellement l'objet afin qu'il corresponde mieux aux données de motif 24.
Sur la figure 10, les opérations identiques à celles de la figure 4 ont été représentées avec un suffixe numérique identique, de sorte que l'opération 410 et l'opération 1010 sont identiques, etc. Comme on peut le voir sur cette figure, seule une opération 1042 a été ajoutée, qui est un test pour déterminer si des données de projection p_dy susceptibles de venir améliorer le traitement d'image correspondent à un emplacement solide, ou non. Une fois que le pilote 14 a fini ce traitement, le générateur 16, l'extracteur 18 et le raidisseur 20 sont à nouveau appliqués sur les données de voxels résultantes. La boucle se termine lorsque le raidisseur 20 ne modifie aucune arête, et donc aucun voxel.
Ensuite, les opérations de fabrication additive, y compris la génération du support peuvent être réalisées comme cela est connu.
L'invention peut également être définie comme un procédé de traitement de données comprenant les opérations suivantes :
a) recevoir des données de surface en trois dimensions, des données de voxel associées, des données de projection et des données de motif,
b) à partir d'un voxel d'une résolution donnée et de données de projection qui lui sont associées, définir une pluralité de voxels de résolution supérieure à la résolution donnée, et associer à certains au moins de cette pluralité de voxels les données de projection associées au voxel de résolution donnée,
c) pour certains au moins de la pluralité de voxels résultante auxquels sont associées des données de projection en tant que voxel donné:
cl) définir un jeu de données de projection comprenant d'une part les données de projection associées à la pluralité de données de voxels résultante, et d'autre part une quantité non nulle d'autres données de projection,
c2) pour certaines au moins des données de projection issues de l'opération c l ), et pour certains au moins des voxels voisins du voxel donné, et pour calculer une valeur de similarité entre le voxel donné et chaque voxel voisin concerné, à partir de la projection des données de surface en trois dimensions associées au voxel donné et des données de surface en trois dimensions associées au voxel voisin, respectivement sur une première surface définie par des données de projection du jeu de données de projetion et sur une deuxième surface définie par les données de projection du voxel voisin sur lesquelles les données de motif sont plaquées, en calculant une valeur tirée de la différence entre la projection du voxel donné sur la première surface et la deuxième surface d'une part, et de la différence entre la projection du voxel voisin sur la première surface et la deuxième surface d'autre part,
c3) déterminer celles des données de projection dudit jeu qui indiquent la meilleure similarité,
d) Répéter les opérations b) et c) avec certains au moins des voxels résultants, jusqu'à atteindre une résolution choisie. Ce procédé peut présenter une ou plusieurs des caractéristiques suivantes :
- l'opération c) comprend la détermination de la valeur tirée de la différence entre la projection d'un voxel sur la première surface et sur la deuxième surface à partir de la différence de texture résultant du plaquage des données de motif sur la première surface et sur la deuxième surface pour ces projections,
- l'opération c) comprend la détermination de la valeur de similarité à partir d'une valeur tirée de la valeur de l'angle formé par la normale au plan défini par les données de surface en trois dimensions d'une part, et par la normale au plan de projection d'autre part,
- dans l'opération c), la valeur de similarité est strictement positive et indique une similarité d'autant meilleure que la valeur de similarité est faible,
- l'opération b) comprend l'association de certains au moins des voxels de la pluralité de voxels de résolution supérieure avec des données de projection choisies aléatoirement,
- les données de projection comprennent un identifiant de surface choisi parmi un jeu de plans et des données de transformation indiquant une translation et/ou une rotation du repère de la surface désignée par l'identifiant de surface pour le plaquage des données de motif,
- les données de projection sont indépendantes des données de surface en trois dimensions,
- la surface définie par les données de projection est un plan,
- les données de motif sont de nature stochastique et répétitive.
L'invention peut également être définie comme un produit de programme d'ordinateur comprenant des portions de code de programme pour mettre en œuvre le dispositif ou le procédé tels que décrit plus haut lorsque ledit programme est exécuté sur un ordinateur.

Claims

Dispositif de traitement de données, comprenant
une mémoire (4) pour recevoir des données de surface en trois dimensions (22), des données de projection (26) et des données de motif (24), un trieur (6) capable de sélectionner pour un voxel d'entrée des voxels entourant le voxel d'entrée qui correspondent aux données de surface en trois dimensions,
un estimateur (8) capable de calculer une valeur de similarité entre un premier voxel associé à de premières données de projection et un second voxel associé à de secondes données de projection en calculant la projection des données de surface en trois dimensions associées au premier voxel et des données de surface en trois dimensions associées au deuxième voxel, respectivement sur une première surface définie par les premières données de projection et sur une deuxième surface définie par les deuxièmes données de projection sur lesquelles les données de motif sont plaquées, et en calculant une valeur tirée de la différence entre la projection du premier voxel sur la première surface et la deuxième surface d'une part, et de la différence entre la projection du deuxième voxel sur la première surface et la deuxième surface d'autre part, un sélectionneur (10) capable, pour un voxel donné et à partir d'un jeu de données de projection (20), de déterminer celles des données de projection dudit jeu qui indiquent la meilleure similarité avec des voxels voisins du voxel donné, à partir d'une valeur tirée des valeurs de similarité obtenues en appelant l'estimateur (10) de manière répétée avec
d'une part le voxel donné comme premier voxel et des données de projection du jeu comme premières données de projection et
d'autre part avec certains au moins des voxels tirés de l'appel du trieur (6) avec le premier voxel en tant que deuxième voxel, et des données de projection (26) qui leur sont associées comme deuxièmes données de projection (26),
et pour associer au voxel donné les données de projection déterminées, un propagateur (12) capable, à partir d'un voxel d'une résolution donnée et de données de projection (26) qui lui sont associées, de définir une pluralité de voxels de résolution supérieure à la résolution donnée, et pour associer à certains au moins de cette pluralité de voxels les données de projection associées au voxel de résolution donnée,
un pilote (14) agencé pour appeler le propagateur (12) avec des données de surface en trois dimensions (22), un voxel (20) et des données de projection associées, et pour appeler le sélectionneur (10) avec certains au moins de la pluralité de voxels résultante auxquels sont associées des données de projection en tant que voxel donné, ainsi qu'avec un jeu de données de projection (26) comprenant d'une part les données de projection associées à la pluralité de données de voxels résultante, et d'autre part une quantité non nulle d'autres données de projection, le pilote (14) étant en outre agencé pour répéter l'appel du propagateur (12) avec certains au moins des voxels associés aux données de projection déterminées par le sélectionneur (10), ainsi que l'appel du sélectionneur (10) sur certains au moins de la pluralité de voxels résultante jusqu'à atteindre une résolution choisie.
2. Dispositif selon la revendication 1, dans lequel l'estimateur (10) est agencé pour déterminer la valeur tirée de la différence entre la projection d'un voxel sur la première surface et sur la deuxième surface à partir de la différence de texture résultant du plaquage des données de motif sur la première surface et sur la deuxième surface pour ces projections.
3. Dispositif selon la revendication 1 ou 2, dans lequel l'estimateur (10) est agencé pour déterminer la valeur de similarité à partir d'une valeur tirée de la valeur de l'angle formé par la normale au plan défini par les données de surface en trois dimensions d'une part, et par la normale au plan de projection d'autre part.
4. Dispositif selon l'une des revendications précédentes, dans lequel l'estimateur (10) est agencé pour déterminer une valeur de similarité strictement positive indiquant une similarité d'autant meilleure que la valeur de similarité est faible.
5. Dispositif selon l'une des revendications précédentes, dans lequel le propagateur ( 12) est agencé pour associer certains au moins des voxels de la pluralité de voxels de résolution supérieure avec des données de projection choisies aléatoirement.
6. Dispositif selon l'une des revendications précédentes, dans lequel la mémoire (4) est agencée pour recevoir des données de projection qui comprennent un identifiant de surface choisi parmi un jeu de surfaces et des données de transformation indiquant une translation et/ou une rotation de la surface désignée par l'identifiant de surface pour le plaquage des données de motif (24).
7. Dispositif selon l'une des revendications précédentes, dans lequel la mémoire (4) est agencée pour recevoir des données de projection (26) indépendantes des données de surface en trois dimensions (22).
8. Dispositif selon l'une des revendications précédentes, dans lequel la mémoire (4) est agencée pour recevoir des données de projection définissant une surface qui est un plan.
9. Dispositif selon l'une des revendications précédentes, dans lequel la mémoire (4) est agencée pour recevoir des données de surface en trois dimensions (22) associées à un voxel donné qui comprennent une moyenne des normales d'une portion de surface associée au voxel donné.
10. Dispositif selon l'une des revendications précédentes, dans lequel la mémoire (4) est agencée pour recevoir des données de motif (24) de nature stochastique et répétitive.
1 1. Procédé de traitement de données, comprenant les opérations suivantes : a) recevoir des données de surface en trois dimensions (22), des données de voxel associées, des données de projection (26) et des données de motif (24), b) à partir d'un voxel d'une résolution donnée et de données de projection (26) qui lui sont associées, définir une pluralité de voxels de résolution supérieure à la résolution donnée, et associer à certains au moins de cette pluralité de voxels les données de projection associées au voxel de résolution donnée,
c) pour certains au moins de la pluralité de voxels résultante auxquels sont associées des données de projection en tant que voxel donné:
cl) définir un jeu de données de projection comprenant d'une part les données de projection associées à la pluralité de données de voxels résultante, et d'autre part une quantité non nulle d'autres données de projection,
c2) pour certaines au moins des données de projection issues de l'opération cl), et pour certains au moins des voxels voisins du voxel donné, et pour calculer une valeur de similarité entre le voxel donné et chaque voxel voisin concerné, à partir de la projection des données de surface en trois dimensions associées au voxel donné et des données de surface en trois dimensions associées au voxel voisin, respectivement sur une première surface définie par des données de projection du jeu de données de projetion et sur une deuxième surface définie par les données de projection du voxel voisin sur lesquelles les données de motif sont plaquées, en calculant une valeur tirée de la différence entre la projection du voxel donné sur la première surface et la deuxième surface d'une part, et de la différence entre la projection du voxel voisin sur la première surface et la deuxième surface d'autre part,
c3) déterminer celles des données de projection dudit jeu qui indiquent la meilleure similarité,
d) Répéter les opérations b) et c) avec certains au moins des voxels résultants, jusqu'à atteindre une résolution choisie.
12. Produit de programme d'ordinateur comprenant des portions de code de programme pour mettre en œuvre le dispositif selon l'une des revendications 1 à 10 ou le procédé selon la revendication 1 1 lorsque ledit programme est exécuté sur un ordinateur.
PCT/FR2016/051602 2015-06-30 2016-06-28 Dispositif de traitement de donnees WO2017001767A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP16747817.1A EP3317782A1 (fr) 2015-06-30 2016-06-28 Dispositif de traitement de donnees
US15/738,442 US10510177B2 (en) 2015-06-30 2016-06-28 Data processing device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1556187 2015-06-30
FR1556187A FR3038253B1 (fr) 2015-06-30 2015-06-30 Dispositif de traitement de donnees

Publications (1)

Publication Number Publication Date
WO2017001767A1 true WO2017001767A1 (fr) 2017-01-05

Family

ID=55361570

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2016/051602 WO2017001767A1 (fr) 2015-06-30 2016-06-28 Dispositif de traitement de donnees

Country Status (4)

Country Link
US (1) US10510177B2 (fr)
EP (1) EP3317782A1 (fr)
FR (1) FR3038253B1 (fr)
WO (1) WO2017001767A1 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740802A (zh) * 2016-01-28 2016-07-06 北京中科慧眼科技有限公司 基于视差图的障碍物检测方法和装置及汽车驾驶辅助系统
US11830140B2 (en) * 2021-09-29 2023-11-28 Verizon Patent And Licensing Inc. Methods and systems for 3D modeling of an object by merging voxelized representations of the object

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010005204A1 (en) * 1996-08-29 2001-06-28 Sanyo Electric Co., Ltd. Texture information assignment method, object extraction method, three-dimensional model generating method, and apparatus thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010005204A1 (en) * 1996-08-29 2001-06-28 Sanyo Electric Co., Ltd. Texture information assignment method, object extraction method, three-dimensional model generating method, and apparatus thereof

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JÉRÉMIE DUMAS ET AL: "By-example synthesis of structurally sound patterns", ACM TRANSACTIONS ON GRAPHICS (TOG), vol. 34, no. 4, 27 July 2015 (2015-07-27), US, pages 137:1 - 137:12, XP055277200, ISSN: 0730-0301, DOI: 10.1145/2766984 *
RAN GAL ET AL: "Seamless Montage for Texturing Models", COMPUTER GRAPHICS FORUM 29(2), 1 January 2010 (2010-01-01), pages 479 - 486, XP055277646, Retrieved from the Internet <URL:http://research.microsoft.com/pubs/149306/EGseamlessTextures_EGfinal.pdf> [retrieved on 20160603] *
VICTOR LEMPITSKY ET AL: "Seamless Mosaicing of Image-Based Texture Maps", IEEE COMPUTER SOCIETY CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION. PROCEEDINGS, 1 June 2007 (2007-06-01), US, pages 1 - 6, XP055233592, ISSN: 1063-6919, DOI: 10.1109/CVPR.2007.383078 *

Also Published As

Publication number Publication date
FR3038253A1 (fr) 2017-01-06
US10510177B2 (en) 2019-12-17
EP3317782A1 (fr) 2018-05-09
FR3038253B1 (fr) 2021-02-12
US20180268598A1 (en) 2018-09-20

Similar Documents

Publication Publication Date Title
Khalid et al. Oc-fakedect: Classifying deepfakes using one-class variational autoencoder
EP3292541B1 (fr) Procede des simplification de modele de geometrie
Battiato et al. Digital mosaic frameworks‐An overview
FR2974433A1 (fr) Evaluation de la qualite d&#39;image
EP3080782A1 (fr) Méthode et système de comparaison de modèles 3d
EP1088279B1 (fr) Procede de recherche d&#39;images, fonde sur une indexation invariante des images
EP3317783A1 (fr) Dispositif de traitement de données pour fabrication additive
Vo et al. Structural inpainting
FR2907246A1 (fr) Procede et dispositifs de projection de motifs bidimensionels sur des surfaces complexes d&#39;objets tridimensionnels
EP3633552A1 (fr) Procédés d&#39;apprentissage de paramètres d&#39;un réseau de neurones à convolution et de détection d&#39;éléments d&#39;intérêt visibles dans une image
WO2017001767A1 (fr) Dispositif de traitement de donnees
CN117635418B (zh) 生成对抗网络的训练方法、双向图像风格转换方法和装置
WO2010037956A1 (fr) Procede et systeme de generation d&#39;une interface de controle des expressions faciales d&#39;un avatar
EP3631589B1 (fr) Dispositif de traitement de donnees pour la generation de microstructures a proprietes elastiques orthotropiques
EP2591457B1 (fr) Dispositif de synthèse d&#39;image
WO2021123209A1 (fr) Procédé de segmentation d&#39;une image d&#39;entrée représentant un document comportant des informations structurées
FR3049213A1 (fr) Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive
EP3622445A1 (fr) Procede, mise en oeuvre par ordinateur, de recherche de regles d&#39;association dans une base de donnees
Dobbs Art Authentication in an Untagged Art Database
WO2024088914A1 (fr) Dispositif de génération d&#39;objet tridimensionnel encodant des données par fabrication additive
Prakash Using appearance to efficiently render and edit captured scenes
EP2204775B1 (fr) Triangulation incrementale de polygone pour affichage numerique
Hubens Towards lighter and faster deep neural networks with parameter pruning
Kang et al. Estimation of effective commercial signboard design scores based on visual perception
EP2192555B1 (fr) Affichage de données paramétrées

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16747817

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2016747817

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 15738442

Country of ref document: US