# Patent

## Title
3D reconstruction of a structure of a real scene with an open surface

## Abstract

A 3D reconstruction method including obtaining a first open triangulated surface consisting of triangles of a tetrahedral meshing of a point cloud and determining a second open triangulated surface. The determining explores candidate open triangulated surfaces each being a set of triangles of the meshing and penalizes a high rank of the candidates according to a lexicographic order based on a triangle order and ordering a candidate having triangles decreasingly ordered according to a triangle order penalizing triangle size, relative to another candidate having triangles decreasingly ordered according to the triangle order. The second surface violates consistency of a labelling of the meshing with two labels. A triangle respects labelling consistency when it belongs to the first surface and separates two tetrahedrons having different labels, or when it does not belong to the first surface and separates two tetrahedrons having a same label.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims priority under 35 U.S.C. § 119 or 365 to European Application No. 20306324.3, filed Nov. 4, 2020. The entire contents of the above application(s) are incorporated herein by reference.
FIELD
The disclosure relates to the field of computer programs and systems, and more specifically to a method, system and program for 3D reconstruction of a structure of a real scene.
BACKGROUND
A number of systems and programs are offered on the market for the design, the engineering and the manufacturing of objects. CAD is an acronym for Computer-Aided Design, e.g. it relates to software solutions for designing an object. CAE is an acronym for Computer-Aided Engineering, e.g. it relates to software solutions for simulating the physical behavior of a future product. CAM is an acronym for Computer-Aided Manufacturing, e.g. it relates to software solutions for defining manufacturing processes and operations. In such computer-aided design systems, the graphical user interface plays an important role as regards the efficiency of the technique. These techniques may be embedded within Product Lifecycle Management (PLM) systems. PLM refers to a business strategy that helps companies to share product data, apply common processes, and leverage corporate knowledge for the development of products from conception to the end of their life, across the concept of extended enterprise. The PLM solutions provided by Dassault Systèmes (under the trademarks CATIA, ENOVIA and DELMIA) provide an Engineering Hub, which organizes product engineering knowledge, a Manufacturing Hub, which manages manufacturing engineering knowledge, and an Enterprise Hub which enables enterprise integrations and connections into both the Engineering and Manufacturing Hubs. All together the system delivers an open object model linking products, processes, resources to enable dynamic, knowledge-based product creation and decision support that drives optimized product definition, manufacturing preparation, production and service.
In this context and other contexts, 3D reconstruction of a structure of a real scene is gaining wide importance.
Existing methods for 3D reconstruction of a structure of a real scene suffer from several drawbacks.
In this context, there is a need for an improved method for 3D reconstruction of a structure of a real scene.
SUMMARY
It is therefore provided a computer-implemented method for 3D reconstruction of a structure of a real scene. The method comprises providing a first open triangulated surface. The first open triangulated surface is a set of triangles of a tetrahedral meshing of a 3D point cloud. The 3D point cloud represents at least a part of a structure. The method further comprises determining a second open triangulated surface. The second open triangulated surface represents a skin of a portion of the structure. The determining explores candidate open triangulated surfaces each being a set of triangles of the tetrahedral meshing. The determining penalizes a high rank of the candidate open triangulated surfaces according to a lexicographic order. The lexicographic order is based on a triangle order. The lexicographic order orders a first candidate open triangulated surface having first triangles which are ordered according to a decreasing rank of the triangle order, relative to a second candidate open triangulated surface having second triangles which are ordered according to a decreasing rank of the triangle order. The triangle order penalizes a triangle size. The determined second open triangulated surface violates consistency of a labelling of the tetrahedral meshing with two given labels. A triangle respects consistency of the labelling if the triangle belongs to the first open triangulated surface and separates two tetrahedrons having different labels, or if the triangle does not belong to the first open triangulated surface and separates two tetrahedrons having a same label.
The method may comprise one or more of the following:

    
    
        the tetrahedral meshing presents the following properties:
        
            the union of the tetrahedrons of the tetrahedral meshing forms the convex envelop of the points of the point cloud; and
            the intersection between any first tetrahedron of the tetrahedral meshing and any second tetrahedron of the tetrahedral meshing intersecting the first tetrahedron is a vertex of the first tetrahedron, an edge of the first tetrahedron, or a face of the first tetrahedron;
        
        
        the triangle order penalizes, for a respective triangle, a high value of the radius of the smallest enclosing circle;
        the triangle order further penalizes, for a first triangle and a second triangle having a same smallest enclosing circle, a small value of the radius of the circumscribed circle;
        the tetrahedral meshing is a regular triangulation;
        the exploring and the penalizing comprise:
        
            visiting triangles of the tetrahedral meshing according to a decreasing rank of the triangle order; and
            discarding visited triangles having a high rank of the triangle order as long as consistency of the labelling can be preserved;
        
        
        the discarding comprises, for each visited triangle, if the triangle violates consistency of the labelling, either rewarding the triangle, either adapting the labelling to respect consistency;
        the discarding further comprises, for each visited triangle:
        
            if the triangle separates two tetrahedrons that are in a same connected component and if the triangle violates consistency of the labelling, rewarding the triangle;
            if the triangle separates two tetrahedrons that are in different connected components:
            
                if the triangle violates consistency of the labelling, switching the label of one of the connected components and merging the connected components,
                if the triangle respects consistency of the labelling, merging the connected components;
            
            
        
        
        the providing of the first open triangulated surface comprises:
        
            providing one or more loops in the tetrahedral meshing; and
            determining an open triangulated surface in the tetrahedral meshing having the one or more loops as boundary;
        
        
        the structure comprises at least one corner structure;
        the 3D point cloud stems from photogrammetry, laser-scan, lidar measurements, RGB-D measurements and/or medical or industrial tomography; and/or
        the 3D point cloud represents a portion of a closed shape, and/or a ratio between the number of points of the 3D point cloud and the memory size of the computer is larger than a predefined threshold.
    
    


It is further provided a computer program comprising instructions for performing the method.
It is further provided a computer readable storage medium having recorded thereon the computer program.
It is further provided a computer comprising a processor coupled to a memory and, the memory having recorded thereon the computer program.



BRIEF DESCRIPTION OF THE DRAWINGS
Embodiments will now be described, by way of non-limiting example, and in reference to the accompanying drawings, where:
FIG. 1 shows a flowchart of an example of the method;
FIGS. 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41 and 42 illustrate the method; and
FIG. 43 shows an example of the computer.



DETAILED DESCRIPTION
With reference to the flowchart of FIG. 1, it is proposed a computer-implemented method for 3D reconstruction of a structure of a real scene. The method comprises providing S10-S40 a first open triangulated surface. The first open triangulated surface is a set of triangles of a tetrahedral meshing of a 3D point cloud. The 3D point cloud represents at least a part of a structure. The method further comprises determining S50 a second open triangulated surface. The second open triangulated surface represents a skin of a portion of the structure. The determining S50 explores candidate open triangulated surfaces each being a set of triangles of the tetrahedral meshing. The determining S50 penalizes a high rank of the candidate open triangulated surfaces according to a lexicographic order. The lexicographic order is based on a triangle order. The lexicographic order orders a first candidate open triangulated surface having first triangles which are ordered according to a decreasing rank of the triangle order, relative to a second candidate open triangulated surface having second triangles which are ordered according to a decreasing rank of the triangle order. The triangle order penalizes a triangle size. The determined second open triangulated surface violates consistency of a labelling of the tetrahedral meshing with two given labels. A triangle respects consistency of the labelling if the triangle belongs to the first open triangulated surface and separates two tetrahedrons having different labels, or if the triangle does not belong to the first open triangulated surface and separates two tetrahedrons having a same label.
This constitutes an improved method for 3D reconstruction of a structure of a real scene.
Notably, the method allows to determine an open triangulated surface (i.e. the second one) representing a skin of a portion of a structure of a real scene. Thereby, the method performs reconstruction of a portion of a 3D structure of a real scene. Furthermore, the method does so without requiring smoothness hypothesis on the 3D point cloud and/or on the structure. The method is thus robust and can for example handle different real scene structures. The method may for example handle non-regular point clouds, representing non-regular structures such as corner structures. Also, the method does so with a low amount of (e.g. without any) manually tuning of parameters, which makes it ergonomic. Notably the exploring and the penalizing may be carried out automatically.
The method determines the second open triangulated surface representing the skin of a portion of the structure by exploring candidate open triangulated surfaces and rewarding (e.g. selecting) a candidate that will be the determined open triangulated surface. The method rewards/selects a candidate given two constraints. The first constraint is that the candidate should not have a too high rank in the lexicographic order, otherwise it will be penalized (i.e. discarded) by the determining S50. In other words, the candidate should minimize or tend to minimize the lexicographic order among the candidates. The second constraint is that the candidate must violate consistency of the labelling (i.e. all the triangles of the candidate must violate consistency of the labelling). In other words, the method finds a candidate open triangulated surface, i.e. a set of triangles of the tetrahedral meshing, which violates consistency of the labelling, but which is the least penalized by its rank in the lexicographic order among the candidates. In yet other words, the method determines an open triangulated surface which violates consistency of the labelling, but which is a minimum, or at least tends to be a minimum, for the lexicographic order among open triangulated surfaces violating consistency of the labelling. In yet other words, the method tends to minimize the lexicographic order among the set of open triangulated surfaces violating consistency of the labelling.
Now, the constraint that the determined second open triangulated surface must violate consistency of the labelling captures the constraint that the determined second open triangulated surface must have the same boundary as the first open triangulated surface. In other words, by determining an open triangulated surface which violates labelling consistency, the method determines an open triangulated surface having the same boundary as the first open triangulated surface. By determining an open triangulated surface which does so while minimizing, or at least tending to minimize, the lexicographic order, the method in fact determines an open triangulated surface having a same boundary as the first open triangulated surface and minimizing, or at least tending to minimize, the lexicographic order among open triangulated surfaces having a same boundary as the first open triangulated surface.
As further explained hereinafter, the constraint that the determined second open triangulated surface must have the same boundary as the first open surface is indeed captured by the constraint that the determined second open triangulated surface must violate consistency of the labelling, i.e. must have all its triangles violating consistency of the labelling, given that labelling consistency is defined by the constraint that a triangle respects consistency of the labelling if the triangle belongs to the first open triangulated surface and separates two tetrahedrons having different labels, or if the triangle does not belong to the first open triangulated surface and separates two tetrahedrons having a same label.
As further explained hereinafter, having a high rank in the lexicographic order, for a triangulated surface, captures the fact that the surface includes triangles of large size (e.g. large and/or flat triangles), and/or a too large amount of such triangles. These triangles are representative of regions of the 3D point cloud featuring noise, e.g. comprising outlier points which may stem from measurements errors of sensors that have acquired the point cloud. In other words, an open triangulated surface with a high rank in the lexicographic order does not represent accurately a skin of a portion of the structure, as the skin should rather mesh a high-density portion of the point cloud, as discussed hereinafter. Conversely, an open triangulated surface having a low rank represents the skin accurately. Therefore, the method, based on the first open triangulated surface, finds a second open triangulated surface which has the same boundary, but which represents better the skin of the portion of the structure than the first open triangulated surface.
The method may be used to perform 3D reconstruction a real scene partially represented by a 3D point cloud. Specifically, physical constraints of real-scenes, e.g. occlusions and/or optical properties, can result in that the 3D point cloud represents only partially a structure of the real scene, i.e. represents at least a part of the structure. The physical constraints may indeed lead to partial and incomplete 3D acquisitions, e.g. featuring holes. In other words, the 3D point clouds may feature holes where it should have comprised points representing a part of the structure. In yet other words, the 3D point cloud may represent a portion of a closed shape, i.e. instead of representing the whole closed shape. This may for example be the case when the 3D point cloud is to represent a building, but due to physical constraints, 3D acquisition of a complete shape of the building as a 3D point cloud cannot be carried out, such that only a 3D point cloud representing partially the building shape may be acquired. Nevertheless, in such cases, the method allows accurate and free-hole 3D reconstruction. The method may for example provide as the first open triangulated surface an open triangulated surface having as a boundary the boundary of a part of the structure represented by the 3D point cloud. This boundary may not correspond to the real-world outer boundary of the structure due to a partial 3D acquisition. In other words, this boundary may be a delimitation of a part of the structure that is represented by the 3D point cloud. The method may provide as the first open triangulated surface any such open triangulated surface.
A user may for example define/mark the boundary as a one or more loop (e.g. one) in the tetrahedral meshing, a loop being a set of edges and vertices where each vertex belongs to an even number of edges, and the method may infer the first open triangulated surface from the one or more loops. The method may do so in any manner, including any manner that results in the first open triangulated surface not representing accurately the skin, i.e. by having a too high rank in the lexicographic order. Then, the determining S50 finds another open triangulated surface (i.e. the second) having the same boundary as the first open triangulated surface, but tending to be minimal for the lexicographic order, thereby forming a skin of a portion of the structure with higher quality. In other words, based on a user-provided definition of a boundary of a portion of the structure, the method may determine an open triangulated surface having the defined boundary of the portion as boundary and tending to be minimal for the lexicographic order, thereby forming an accurate skin of the portion of the structure.
The method may additionally or alternatively be used to determine the skin of large 3D point clouds, i.e. point clouds featuring a large number of points, e.g. for which a ratio between the number of points of the 3D point cloud and the memory size of the computer is larger than a predefined threshold. This may for example be the case when the point cloud represents a large terrain. The size of such a point cloud, in terms of number of points, may render the computation of a triangulated surface representing the full skin of the point cloud impossible or at least complicated to do in an acceptable time for a standard or cheap computer. The method may nevertheless allow to handle these point clouds by considering a division of such a point cloud. Specifically, the method may provide as a first open triangulated surface an open surface representing only a skin of a bounded portion of the structure represented by the 3D point cloud. This first open triangulated surface may be inferred from one or more loops provided by a user, e.g. the loops each delimiting such a bounded portion. For example, if the 3D point cloud represents a terrain, the first open triangulated surface may represent a skin of a bounded parcel of the terrain. The first open triangulated surface may represent the skin inaccurately, i.e. by having a too high rank in the lexicographic order. The method then determines as the second open triangulated surface an open triangulated surface which has the same boundary as the first open triangulated surface, but which has a lower rank in the lexicographic order, thereby representing accurately the skin of the bounded portion. The method may do so for each one of several bounded portions altogether dividing the structure.
In other words, the method allows to consider a large structure that can be divided by bounded portions, such as a terrain divided in parcels, and to determine for each portion a respective skin of the portion. This avoids determining the whole skin of the structure in a single process, which would take too long and/or would be impossible to do for a standard or cheap computer. The method may also define the boundaries of the bounded portions (e.g. when providing the corresponding first open triangulated surfaces or loops) to be watertight. This allows to parallelize the skin of the structure, i.e. to treat each determined skin of each portion independently from the other. For example, the method may re-compute one of the skins upon a modification of corresponding the portion of the structure, without recomputing the others. In other words, the method may compute and process accurate skins of portions dividing a large structure, such as parcels of a terrain, independently form each other, which allows not only to obtain an accurate skin of the structure, or a least of one or more portions thereof, but also to do so with the resources of standard or cheap computers and in an acceptable time. The division of the structure in portions, e.g. of a terrain in parcels, may be determined by a user, or, alternatively, may be determined automatically, e.g. based on the consideration that for each portion, the points of the 3D point cloud that represent the portion must fit into the computer memory.
The method is now further discussed, still with reference to the flowchart of FIG. 1.
A real scene designates a part of the real world, which may be or may comprise an object or an arrangement of objects. A structure of a real scene is a tangible (e.g. concrete) physical closed shape in the real scene, such as a closed layout of material in the real scene. A portion of the structure is thus a portion of this closed shape. For example, the real scene may be a building e.g. a cathedral. The portion may then be a part of the building, e.g. the cathedral without its roof. Yet another example is a real scene that is a terrain. A portion thereof may be a part of the terrain, e.g. a parcel/plot. A skin of the portion is a hull or envelop of the portion, that is material of the structure forming a contact between opaque matter inside the structure and air and/or matter outside. The portion may have a boundary, such that the skin does not necessarily form a complete delimitation between the outside of the structure and the inside of the structure, but only a portion of such a delimitation. For example, the skin of a portion of a terrain may represent the delimitation between the earth and the air formed by the terrain, but only for a bounded parcel/plot thereof. Yet another example is the skin of a portion of a building, such as a cathedral, which may forms a partial delimitation between the walls of the building and the air (which may be outside air and/or air inside the building).
The method contemplates a tetrahedral meshing of a 3D point cloud representing at least a part of a structure of a real scene, e.g. representing only a portion of the structure. The method may comprise providing S10 the 3D point cloud, e.g. before the providing of the first open triangulated surface. Alternatively, the method may directly provide the first open triangulated surface and/or the tetrahedral meshing, e.g. by retrieving the first open triangulated surface and/or the tetrahedral meshing from a memory on which it/they have been stored further to its/their computation.
A 3D point cloud representing at least a part of a structure of a real scene is herein a data structure in which each point represents a respective geometrical entity positioned in at least a part of the structure of the real scene. Each geometrical entity represents a respective location of the structure in the scene (in other words, a respective portion and/or layout of material constitutive of the structure). The aggregation (i.e. union or juxtaposition) of the geometrical entities represents altogether at least a part of the structure. Any 3D point cloud herein may comprise a number of points higher than 100000, 1000000 or 10000000. Notably, the method may handle a number of points higher than 10000000 on a standard or cheap computer (e.g. 16 Gigabytes of memory). It is to be understood that the 3D point cloud may comprise points which do not represent a respective geometrical entity positioned in the structure. Those points may form or may be part of regions with lower densities of points, as discussed hereinafter. Such a region may for example represent a part of the scene which does not belong to the structure. Some points of the point cloud may also be outliers, that is points stemming from measurement errors and thus not representing geometrical entities of the structure.
The real scene may be an architectural scene such as a building seen from the outside. The structure may here be the closed tangible shape formed by the structure of the building (e.g. the walls and the roof). The skin of a portion of a structure may in this case be made of the surfaces of the structure of the building, e.g. surfaces of the walls and/or the roof, e.g. facing the outside and/or the inside of the building. The real scene may also be any other civil engineering scene, comprising any civil engineering structure (e.g. a tunnel, for example a mining tunnel). The scene may for example be a factory scan, i.e. a scan of the inside of a factory.
Alternatively, the real scene may be a terrain scene. The structure may be the terrain itself, and a skin of a portion of the terrain may be the ground of a parcel of the terrain, having as boundaries the parcel's boundaries.
Alternatively, the real scene may be a mechanical part or an organic tissue, the skin of a portion being for example a part of an outer hull of the mechanical part or of the organic tissue. A mechanical part may be any one of: a part of a terrestrial vehicle (including e.g. car and light truck equipment, racing cars, motorcycles, truck and motor equipment, trucks and buses, trains), a part of an aerial vehicle (including e.g. airframe equipment, aerospace equipment, propulsion equipment, defense products, airline equipment, space equipment), a part of a naval vehicle (including e.g. navy equipment, commercial ships, offshore equipment, yachts and workboats, marine equipment), a general mechanical part (including e.g. industrial manufacturing machinery, heavy mobile machinery or equipment, installed equipment, industrial equipment product, fabricated metal product, tire manufacturing product), an electro-mechanical or electronic part (including e.g. consumer electronics, security and/or control and/or instrumentation products, computing and communication equipment, semiconductors, medical devices and equipment), a consumer good (including e.g. furniture, home and garden products, leisure goods, fashion products, hard goods retailers' products, soft goods retailers' products), a packaging (including e.g. food and beverage and tobacco, beauty and personal care, household product packaging). Additionally or alternatively, a mechanical part may be any one of a molded part (i.e. a part manufactured by a molding manufacturing process), a machined part (i.e. a part manufactured by a machining manufacturing process), a drilled part (i.e. a part manufactured by a drilling manufacturing process), a turned part (i.e. a part manufactured by a turning manufacturing process), a forged part (i.e. a part manufactured by a forging manufacturing process), a stamped part (i.e. a part manufactured by a stamping manufacturing process) and/or a folded part (i.e. a part manufactured by a folding manufacturing process).
In examples, the structure comprises at least one corner structure. A corner structure designates a part of the structure which has or substantially has the shape of a corner. A corner of structure may be a part of the structure which corresponds to a layout of material forming a shape edge or a sharp angle. A corner structure may be a corner of a building, a corner of a terrain parcel, a corner of a tunnel, a corner formed by walls of a room, a corner of a mining tunnel, a corner or a sharp angle in a layout of material constitutive of a mechanical part, or a corner or a sharp angle in a layout of tissue constitutive of an organic tissue. The method is thus robust, as it handles corner structures.
In examples, the 3D point cloud stems from photogrammetry, laser-scan, RGBD measurements and/or medical or industrial tomography.
In the context of the method, a point cloud representing a structure of an architectural/building scene may stem from RGB-D measurements or photogrammetry, and optionally also from a structure-from-motion analysis. A point cloud representing a structure of a mechanical part may stem from industrial tomography or from laser scan. A point cloud representing a structure of a mining scene (or any other similar civil engineering scene) may stem from a laser scan, e.g. of the inside of a mine. A point cloud representing a structure of an organic tissue may stem from medical tomography. A point cloud representing a terrain may stem from lidar measurements.
Any 3D point cloud herein may be determined from physical measurements on the real scene. The providing S10 of the 3D point cloud may notably comprise providing one or more physical sensors each configured for acquiring a respective physical signal and acquiring one or more respective physical signals by operating the one or more physical sensors on the real scene (i.e. scanning the real scene with each sensor). The providing S10 of the 3D point cloud may comprise the automatic determination of the 3D point cloud based on the measurements, according to any known technique. The one or more sensors may comprise a plurality of (e.g. RGB, and/or image or video) cameras and the determination may comprise a structure-from-motion analysis. The one or more sensors may alternatively or additionally comprise one or more depth sensors (e.g. on an RGB-D camera). The one or more sensors may alternatively or additionally comprise a laser (e.g. a lidar) or an ultrasound emitter-receiver. The one or more sensors may alternatively or additionally comprise one or more tomographic sensors. A tomographic sensor may be a medical or an industrial tomographic sensor.
Alternatively, the providing S10 of the 3D point cloud may comprise accessing a database where the 3D point cloud is stored and retrieving the 3D point cloud from the database. The 3D point cloud may have been acquired by operating one or more physical sensors and determining the 3D point cloud based on measurements acquired by the one or more sensors, as previously described, and then stored in the database, even though the providing S10 may not actually comprise the acquisition of the measurements and the determining of the 3D point cloud. In any case, the providing S10 of the 3D point cloud may be carried out by user action. Providing S10 the 3D point cloud may further comprise displaying the 3D point cloud on a display (e.g. a GUI) of a computer carrying out the method.
The provided 3D point cloud may comprise one or more regions with different densities of points. This means that the density of points within the point cloud may differ from one region of the point cloud to another. The 3D point cloud may for example comprise holes/openings, which stem from physical constraints when the 3D acquisition of the 3D point cloud has been performed, such as occlusions or optical properties. The holes may represent regions which should have comprise a substantial density of points, but which do not due to the physical constraints. The 3D point cloud may thus represent only a portion of a closed shape (i.e. the structure) where it should have represented the full closed shape if it was not for the physical constraints.
A skin of the structure or of a portion thereof may correspond to a region of the point cloud which has the highest density of points, the region for example separating at least a part of the outside form at least a part of the inside. This region may be open, i.e. the region of the point cloud which has the highest density of points may form an open shape having boundaries. The inside and/or the outside may then be regions featuring a lower density of points. In examples, “having the highest density” means that the density of points in the open shape is higher than an ambient noise stemming from measurements. The 3D point cloud may further feature outliers, which are points of the 3D point cloud located in regions with low densities of points and which stem from measurements errors. In other words, outliers are not representative of geometric entities of the real scene but correspond to numerical and/or measurement artefacts. The method nevertheless handles these outliers, which makes the method robust to outliers and/or density variations.
The 3D point cloud may have a large number of points. For example, a ratio between the number of points of the 3D point cloud and the memory size of the computer may be larger than a predefined threshold. For example, the predefined threshold may be larger than 10 million points for 16 Gigabytes of memory size (i.e. substantially the size of a standard or cheap computer memory), e.g. substantially equal or larger than 10 million points for 16 Gigabytes of memory size.
The concept of 3D reconstruction of a structure represented by a 3D point cloud is now briefly discussed. 3D reconstruction of the structure generally designates the action of computing/determining a surface connecting points of the 3D point cloud. The surface may be referred to as “representing a skin of a portion of the structure” as it connects points of the 3D point cloud into an open surface representing a delimitation (e.g. a boundary) between at least a part of the outside of the structure and at least a part of the inside of the structure. The surface thus represents a portion of a hull of the structure, in other words a skin of a portion of the structure. For example, as previously said, the skin may correspond to an open shape of high density of points within the 3D point cloud. The 3D reconstruction of the structure may in this case designate the determining/computing of a surface connecting points of the open shape so as to form an open surface hull of the structure.
As previously said, the method manipulates a tetrahedral meshing of the 3D point cloud that represents at least a part of the structure. The method may comprise computing S20 the tetrahedral meshing. Alternatively, the method may directly provide the first open triangulated surface and/or the tetrahedral meshing, e.g. by retrieving it/them from a memory where it/they have been stored further to its/their computation. The computing S20 of the tetrahedral meshing may be carried out by any known method.
In examples, the tetrahedral meshing presents the following properties: the union of the tetrahedrons of the tetrahedral meshing forms the convex envelop of the points of the 3D point cloud, and the intersection between any first tetrahedron of the tetrahedral meshing and any second tetrahedron of the tetrahedral meshing intersecting the first tetrahedron is a vertex of the first tetrahedron, an edge of the first tetrahedron, or a face of the first tetrahedron. This improves the quality of the meshing, and consequently the quality of the determined open triangulated surface.
In examples the tetrahedral meshing is a regular triangulation. This further improves the quality of the meshing, and consequently the quality of the determined open triangulated surface. As known per se in the field of computational geometry, a regular triangulation of the 3D point cloud is a triangulation induced by shadows of the faces of a polyhedron in one higher dimension (i.e. in dimension 4). Regular triangulation are merely duals of Power Diagrams, see for example: Algorithmic geometry, Jean-Danel Boissonnat and Mariette Yvinec, Cambridge University Press New York, N.Y., USA, which is incorporated herein by reference. The computing S20 of the tetrahedral meshing may comprise computing as the tetrahedral meshing a regular triangulation of the 3D point cloud, by any know method, which may comprise:

    
    
        lifting the points of the point cloud, i.e. adding a coordinate to each point. This embeds the set of points in a space of which dimension equals the dimension of the original space (i.e. the 3D space to which the 3D point cloud belongs) comprising the set of points plus one;
        computing the convex envelop of the lifted set of points;
        triangulating, by any known method, the convex envelop, the triangulation resulting in a tetrahedral meshing the following properties: the union of the tetrahedrons of the tetrahedral meshing forms the convex envelop of the lifted set of points, and the intersection between any first tetrahedron of the tetrahedral meshing and any second tetrahedron of the tetrahedral meshing intersecting the first tetrahedron is a vertex of the first tetrahedron, an edge of the first tetrahedron, or a face of the first tetrahedron; and
        projecting the lower faces of this triangulation of the convex envelop onto the original space.
    
    


In examples, the regular triangulation is a Delaunay triangulation. In such cases, the points are lifted to a paraboloid and the lifting is parametrized by the vertical gap between the lifted point and the paraboloid. This further improves the quality of the meshing, and consequently the quality of the determined open triangulated surface. Furthermore, the method performs the 3D reconstruction by going further than just computing a Delaunay triangulation. The method benefits indeed from the quality of the Delaunay tetrahedral meshing but goes beyond by determining S50 among all candidate open triangulated surfaces being made of triangle faces of the Delaunay triangulation, the one that truly represents the skin. In other words the method may select the best representation of the skin among open triangulated surfaces made of triangle faces of a Delaunay tetrahedral meshing. The method may thus make use of the Delaunay tetrahedral convex hull meshing of a 3D point cloud, a concept known and for example detailed in reference F. Cazals, J. Giesen, Delaunay triangulation based surface reconstruction, Effective computational geometry for curves and surfaces, pages 231-276, 2006, which is incorporated by reference. The Delaunay tetrahedral mesh object is a set of tetrahedrons featuring the following properties. The topology is a set of adjacent tetrahedrons such that any triangle is shared by exactly two regions. The first sharing situation is a triangle shared by two adjacent tetrahedrons. The second sharing situation is a triangle shared by a tetrahedron and by the unbounded outside region. Triangles shared by a tetrahedron and the outside region are called boundary triangles. The geometrical property of the Delaunay meshing is that for any tetrahedron, the sphere defined by its four points (named the circumscribed sphere) does not include any other point of the cloud.
The providing of the first open triangulated surface is now discussed.
The first open triangulated surface is a set of triangles of the tetrahedral meshing forming an open triangulated surface, having boundaries. More generally, in the present disclosure, any open triangulated surface is a triangulated surface of tetrahedral meshing, the triangulated surface having a boundary. The first open triangulated surface may be any open triangulated surface representing the skin of the portion of the structure, and thus may be one of the candidates in the determining. The first open triangulated surface may however have a high rank in the lexicographic order, or at least may have a too high rank to be minimal or to tend to be minimal in the lexicographic order. As previously explained, the determining S50 finds then a second open triangulated surface which has the same boundaries than those of the first open triangulated surface, but which minimizes or at least tends to minimize the lexicographic order. Thereby, the quality of the determined open triangulated surface is better than that of the first open triangulated surface, i.e. the determined surface represents the skin better, e.g. comprises no or at least less large and/or flat triangles, representative of low-densities regions of the point cloud and/or of outliers.
The first open triangulated surface may be directly provided, e.g. the method does not compute/determine it, as previously discussed. Alternatively, the providing of the first open triangulated surface may comprise computing/determining the first open triangulated surface. The computing/determining of the first open triangulated surface may consist in applying any method to find an open triangulated surface, in the tetrahedral meshing, which represents, even, roughly the skin of the portion of the structure. In other words, the providing of the first open triangulated surface may consist in finding in the tetrahedral meshing any open triangulated surface representing, even roughly, the skin, i.e. even if this first open triangulated surface has a high rank in the lexicographic order. The determining S50 will then find such an open triangulated surface but that minimizes or tends to minimize the lexicographic order. In yet other words, the providing of the first open triangulated surface may be implemented by any method that finds an open triangulated surface representing even roughly/inaccurately the skin.
In examples, the providing of the first open triangulated surface comprises providing S30 one or more loops in the tetrahedral meshing and determining S40 an open triangulated surface in the tetrahedral meshing having the one or more loops as boundary. A loop herein is a set of edges and vertices in the tetrahedral meshing such that each vertices in the loop belongs to an even number of edges of the loop. The one or more loops form a boundary of the portion of the structure. As previously discussed, the portion of the structure may be the part of the structure that is represented by the 3D point cloud, or a part of this part, and the one or more loops form in this case the boundary of this part.
The boundary may coincide partially, due to partial acquisition of the 3D point cloud, with that of the real shape of the structure. Alternatively or additionally, the boundary may coincide with the boundary of one or more holes in the 3D point cloud, which stem from partial acquisition of the 3D point cloud. For example, one loop may correspond, e.g. partially, the real shape of the boundary of the structure in the real world. Additionally or alternatively, one loop may correspond to the boundary of a hole in the 3D point cloud.
Additionally or alternatively, the portion of the structure may for example correspond to a portion of the 3D point cloud resulting from a division thereof, as previously discussed, the boundary of this portion being then provided as a loop at S30.
The providing S30 of the one or more loops may be carried out by a user, e.g. by graphical user interaction. For example, for providing a given loop of the one or more loops, a user may click on or touch points and edges of the tetrahedral meshing so that they form the loop. Alternatively or additionally, the user may, for providing a given loop, perform a sequence of clicks or touches on the tetrahedral meshing or on the point cloud, each click of touch defining a point. Then, the method may automatically infer a loop of edges and vertices from the sequence of user-picked points, which may include over-sampling the user-picked points and/or finding a loop of edges and vertices fitting the user-picked points. Additionally or alternatively, the user may, for providing a given loop, draw a closed line on the tetrahedral meshing or on the point cloud, the line (e.g. roughly) defining the shape of the boundary. Then, the method may automatically infer a loop of edges and vertices from the user-defined line, which may include sampling the user-defined line and/or finding a loop of edges and vertices fitting the user-defined line.
Alternatively, the providing S30 of the one or more loops may be carried out automatically. For example, the providing of the one or more loops may be based on considerations about the computer memory. For example, the providing S30 of the one or more loops may comprise dividing the 3D point clouds or the tetrahedral meshing into bounded regions/portions so that each region/portion has a number of points of the 3D point cloud that fit into a given computer memory (e.g. 16 Gigabytes for a standard or cheap computer). Then, the one or more loops may each correspond to the boundary of a respective one of the portions. The resulting division of the tetrahedral meshing may be watertight, i.e. the separated portions/regions coincide along their common boundary.
An implementation of the providing S30 of the one or more loops automatically is now discussed. This implementation notably applies to the case where the 3D point cloud has a large number of points, e.g. larger than 10 M points for a standard or cheap computer with a 16 Gigabytes memory. This implementation subdivides the point cloud/tetrahedral meshing into regions where the number of points fits in the computer memory and ensures that the resulting division/resulting meshing is watertight, by ensuring that the separated meshed regions coincide along their common boundary. This implementation proceeds as follows:

    
    
        The computing S20 of the tetrahedral meshing comprises computing a 3D Delaunay triangulation of the 3D point cloud with any known out-of-core method that allows to do so. Such method may include any method able to perform the 3D Delaunay triangulation by regions, such as the method disclosed in Lo, S. H. “Parallel Delaunay triangulation in three dimensions.” Computer Methods in Applied Mechanics and Engineering 237 (2012): 88-106, which is incorporated herein by reference.
        The providing S30 of the one or more loops comprises extracting a silhouette seen from above of the whole 3D Delaunay triangulation, the 3D Delaunay triangulation being a convex 3D body whose silhouette is a single loop.
        The providing S30 further comprises repeating the following, until each loop encloses a number of points that fits into the computer memory:
        
            defining a vertical plane;
            extracting the tetrahedrons of the 3D Delaunay triangulation cutting this plane; and
            defining a lexicographic minimal path in these extracted tetrahedrons, thereby subdividing the loops into two smaller loops.
        
        
    
    


The determining S40 of an open triangulated surface in the tetrahedral meshing having the one or more loops as boundary may be carried out by any suitable method or any suitable technique. The determined S40 open triangulated surface is the first open triangulated surface. In examples, the determining S40 may carry out algorithm 2 which will be discussed hereinafter. Any other suitable combinatorial geometric algorithms could be carried out instead of algorithm 2.
The determining S50 of the second open triangulated surface representing a skin of a portion of the structure is now further discussed.
The determining S50 explores candidate open triangulated surfaces. Each candidate is a set of triangles of the tetrahedral meshing forming an open triangulated surface in the tetrahedral meshing. The determining penalizes a high rank of candidates in the lexicographic order and searches candidates violating consistency of the labelling. In other words, the determining operates a selection among candidate open triangulated surfaces and selects among them one candidate being minimal, or at least tending to be minimal, in the lexicographic order as well as violating consistency of the labelling.
The selection among the candidate open triangulated surfaces involves the lexicographic order and the triangle order, which are now discussed.
The lexicographic order orders a first candidate open triangulated surface relative to a second candidate open triangulated surface, i.e. provides an ordering between the first candidate open triangulated surface and the second candidate open triangulated surface. The concept of lexicographic order is known per se. The first candidate open triangulated surface has (e.g. is made of) first triangles, i.e. of the tetrahedral meshing, and the second candidate open triangulated surface has (e.g. is made of) second triangles, i.e. of the tetrahedral meshing. Both first triangles and second triangles are ordered according to a decreasing rank of the triangle order.
Ordering the first candidate open triangulated surface relative to the second candidate open triangulated surface according to the lexicographic order may notably comprise, as the lexicographic order is based on the triangle order, assessing the ordering of the first triangles and the ordering of the second triangles according to the decreasing rank of the triangle order. The ordering may further comprise establishing a rank in the lexicographic order of the first candidate open triangulated surface relative to the second candidate open triangulated surface based on the assessed ordering of both the first triangles and second triangles. In other words, the ordering may comprise establishing a relative ranking, in the lexicographic order, between the first candidate open triangulated surface and the second candidate open triangulated surface, by comparing the ordered first and second triangles.
An example of the ordering the first candidate open triangulated surface relative to the second candidate open triangulated surface according to the lexicographic order is now discussed. Let A be the set made of the first triangles and let B be the set made of the second triangles. Let C=AΔB=(AUB)\A∩B, i.e. C is the set of triangles belonging to A or to B but which do not belong to both A and B. If C is empty, then A=B. In this case the first candidate open triangulated surface and the second candidate open triangulated surface have the same rank in the lexicographic order. If C is not empty, then let T be the largest triangle of C according to the triangle order, i.e. T is the first triangle of C if the triangles of C are ordered according to the decreasing rank of the triangle order. Put it another way, T is a triangle of C which is the most penalized by the triangle order, e.g. which is the largest triangle among the triangles of C, as discussed hereinbelow. If T belongs to A, then A is larger than B. In this case the first candidate open triangulated surface has a higher rank than the second candidate open triangulated surface in the lexicographic order. Conversely, if T belongs to B, then B is larger than A. In this case the second candidate open triangulated surface has a higher rank than the first candidate open triangulated surface in the lexicographic order. It is to be noted that, if B⊂A (strictly), then A is larger than B.
The ordering may result in that the set of all candidate open triangulated surfaces is ordered according to the lexicographic order, i.e. each candidate open triangulated surface has a respective rank in the lexicographic order. The determining S50 penalizes a high rank of a candidate open triangulated surface. For example, the determining S50 may be such that candidate open triangulated surfaces are discarded because of their high rank and a candidate open triangulated surface are not discarded because of its low rank.
The triangle order penalizes a triangle size. The concept of penalizing a triangle size is now discussed. Let T and T′ be two triangles. Penalizing a triangle size may comprise assessing, for each triangle T and T′, a respective measure of the size of the triangle and attributing a higher rank in the triangle order to the triangle having the larger measure. The measure of a triangle size may also be referred to as the triangle weight or as the weight of the triangle. The measure of the size may for example comprise a first real-valued function contributing towards measuring the triangle size, a second real-valued function contributing differently towards measuring the triangle size, and/or a couple made of the first function and of the second function. Penalizing triangle size may comprise ordering the two assessed measures of the size relative to one another, e.g. according to any order ordering two real numbers or two couples of real numbers relative to one another, as known per se in the art. In other words, if T is larger (i.e. has a larger size) than T′, then the measure of the size of T is larger (e.g. according to the ordering of the measures) than the measure of the size of T′. Now, if the couple (T,T′) is to be ordered according to the decreasing rank of the triangle order, just as the previously discussed first triangles and second triangles, then, in this ordering, T comes before T′. Similarly, if T1, T2, . . . , Tn is a list of triangles which is ordered (i.e. T1 is the first, T2 is the second, and so on), and if the ordering is according to the decreasing rank of the triangle order, it means that the measure of the size of T1 is larger than the measure of the size of T2, which is larger than the measure of the size of T3, and so on. In examples, the measure of the size of a triangle T is a couple of real-valued functions made of the radius of the smallest enclosing circle of T and of the inverse of the radius of the circumscribed circle of T. Such examples constitute a robust and efficient manner of measuring and penalizing triangle size.
This amounts to say that, when ordering two candidate open triangulated surfaces as previously discussed, a higher rank in the lexicographic order is attributed to the one of the two which has the triangle that is the most penalized by the triangle order, e.g. that is the largest. As previously mentioned, such triangles may be representative of (e.g. may be part of a meshing of) regions of the 3D point cloud having a low density of points, e.g. comprising outliers. Discarding candidate open triangulated surfaces having such triangles, by penalizing their high rank in the lexicographic order, allows to search for an open triangulated surface representing accurately the skin of the portion of the structure, and reduces the sensibility to density variations and/or to outliers. This makes the method robust and accurate.
In examples, the method may result in that the triangles (e.g. all of them or a substantial part of them) of the determined open triangulated surface are, as far as possible, small triangles (i.e. with a small size), including triangles of which shape is notably not too stretched, e.g. triangles having a relatively small area and for which the ratio between the triangle height and the triangle bottom is close to 1. In fact, although the triangle order, when comparing two triangles, does not necessarily penalize the flattest of the two, basing the lexicographic order on the triangle order may however result in that flat triangles are, as far as possible, avoided. As a matter of fact, the lexicographic order compares chains of triangles (each forming an open triangulated surface), and not triangles of a single pair of triangles, and attempts to reward (i.e. to give a low rank to) the chain made of the smallest possible triangles. Comparing chains of triangles, and not triangles of a single pair of triangles, and penalizing chains having (e.g. a too large amount of) large triangles may in fact result in that the determined open triangulated surface is made of triangles which are (e.g. generally) small and not too flat. Such triangles are representative of a skin. This makes the method robust and accurate.
In examples, the triangle order penalizes, for a respective triangle, a high value of the radius of the smallest enclosing circle, i.e. the smallest enclosing circle of the triangle.
The smallest enclosing circle of the triangle is the circle having the smallest radius among all circles enclosing the points of the triangle. The radius of the smallest enclosing circle of a triangle contributes towards measuring the size of the triangle and penalizing a high value of the radius of the smallest enclosing circle contributes towards penalize the triangle size. In other words, the radius of the smallest enclosing circle is a real-valued function contributing towards measuring triangle size, and which may be part of the measure of the size of the triangle as previously discussed. Furthermore, penalizing a high value of the radius of the smallest enclosing circle is a particularly efficient and robust manner of penalizing triangle size. For example, let T and T′ be two triangles, and let RB(T) and RB(T′) be the radiuses of their respective smallest enclosing circle. Then, in these examples, the inequality RB(T)<RB(T′) captures the fact that T′ has a size larger than the one of T. Penalizing size may in this case consist in attributing a higher rank in the triangle order to T′ than to T. Also, ordering T and T′ relative to one another according to the decreasing rank of the triangle order means in this case that T′ comes before T in this ordering.
In examples, the triangle order further penalizes, for a first triangle and a second triangle having a same smallest enclosing circle, a small value of the radius of the circumscribed circle, i.e. the circumscribed circle of the (first or second) triangle.
The circumscribed circle of a triangle is the circle through the points of the triangle. The radius of the circumscribed circle of a triangle contributes towards measuring the size of the triangle and penalizing a small value of the radius of the circumscribed circle contributes towards penalizing the triangle size, especially in the case of smallest enclosing circle equality as discussed below. In other words the radius of the circumscribed circle is a real-valued function contributing towards measuring the triangle size, and which may be part of the measure of the size of the triangle as previously discussed.
Penalizing a small value of the radius of the circumscribed circle in such a smallest enclosing circle equality case improves robustness of the method. Notably, let T and T′ be two triangles, and let RB(T) and RB(T′) be the radiuses of their respective smallest enclosing circles. Assume that RB(T)=RB(T′), which may happen for example if both T and T′ are obtuse triangles. Put it another way, it may happen that assessing the radius of the respective smallest enclosing circle for both T and T′ and penalizing high value of the assessed radiuses may not be sufficient to establish a relative triangle order between T and T′ so as to penalize triangle size. In other words, it may not be possible to determine which one of T and T′ is the largest so as to penalize one of them based only on the smallest enclosing circle. Further penalizing small value of the radius of the circumscribed circle, however, allows such a determination, and in that respect, improves robustness of the method. Furthermore, penalizing a small value of the radius of the circumscribed circle is a particularly efficient and robust manner of penalizing triangle size. For example, let RC(T) and RC(T′) be the radiuses of the respective circumscribed circles of T and T′. Then, in these examples, where RB(T)=RB(T′), the inequality RC(T)>RC(T′) captures the fact that T′ has a larger area than the one of T and is larger than T. In other words, the equality RB(T)=RB(T′) represents the fact that the radius of the smallest enclosing circle does not suffice to determined which triangle is the largest among T and T′. However, the inequality RC(T)>RC(T′) represents the fact that T′ has a larger area than T, which allows to determine that T′ is larger than T despite smallest enclosing circle equality between the two triangles. Penalizing size may in this case consist in attributing a higher rank in the triangle order to T′ than to T. Also, ordering T and T′ relative to one another according to the decreasing rank of the triangle order means in this case that T′ comes before T in this ordering.
As previously discussed, in examples, each triangle T size is measured by a measure of the triangle size which is a couple of real-valued functions made of the radius of the smallest enclosing circle of T and of the inverse of the radius of the circumscribed circle of T. The measure may be given by the formula




  
    (
    
      
        
          R
          B
        
        ⁡
        
          (
          T
          )
        
      
      ,
      
        1
        
          
            R
            C
          
          ⁡
          
            (
            T
            )
          
        
      
    
    )
  
  .




The triangle order may in this case be an order on the measures of the triangle sizes, for example an order in which a comparison between the radiuses of smallest enclosing circles predominates, and in which a comparison between the inverses of the radiuses of circumscribed circles only comes into play in case of smallest enclosing circle equality. For example, let T and T′ be two triangles. If RB(T)<RB (T′), then the measure





  (
  
    
      
        R
        B
      
      ⁡
      
        (
        
          T
          ′
        
        )
      
    
    ,
    
      1
      
        
          R
          C
        
        ⁡
        
          (
          
            T
            ′
          
          )
        
      
    
  
  )




of the size of T′ is larger than the measure





  (
  
    
      
        R
        B
      
      ⁡
      
        (
        
          T
          ′
        
        )
      
    
    ,
    
      1
      
        
          R
          C
        
        ⁡
        
          (
          T
          )
        
      
    
  
  )




of the size of T in the order of the measures, as comparison between radiuses of smallest enclosing circles predominates. In case of smallest enclosing circle equality, that is RB(T)=RB(T′), then comparison between the inverses of the radiuses of circumscribed circles comes into play, and more specifically: if





  
    
      1
      
        
          R
          C
        
        ⁡
        
          (
          T
          )
        
      
    
    <
    
      1
      
        
          R
          C
        
        ⁡
        
          (
          
            T
            ′
          
          )
        
      
    
  
  ,




then the measure (RB(T′),





  
    1
    
      
        R
        C
      
      ⁡
      
        (
        
          T
          ′
        
        )
      
    
  
  )




of the size of T′ is larger than the measure RB(T),





  
    1
    
      
        R
        C
      
      ⁡
      
        (
        T
        )
      
    
  
  )




of the size of T in the order of the measures. Then, if the measure of the size of T is lower than the measure of the size of T′ in the order on the measures, T′ has a higher rank than T in the triangle order. However, if T and T′ are ordered relative to one another in the decreasing rank of the triangle order, then T comes after T′.

The triangle order is now further discussed with references to FIGS. 2 to 5, illustrating the triangle order.
The triangles ordering illustrated in these figures is noted ≤∞ and is based on two concepts: the smallest enclosing circle and the circumscribed circle. The smallest enclosing circle is the circle featuring the smallest radius and enclosing the points of the triangle. The circumscribed circle is the circle through the three points of the triangle. Given a triangle T, the radius of its smallest enclosing circle is noted RB(T) and the radius of its circumscribed circle is noted RC(T).
FIG. 2 illustrates a triangle T together with its enclosing circle and circumscribed circle. They are such that RB(T)≠RC(T) because the triangle features an obtuse angle. Conversely, FIG. 3 illustrates a triangle T with three acute angles. This makes the enclosing circle and circumscribed circle coincident and so RB(T)=RC(T).
The circumscribed circle is undefined when the triangle features three aligned points or coincident points. This degeneracy situation is out of the scope of the present disclosure because the point cloud is generic by nature. Given two triangles T and T′, their relative ordering ≤∞ is defined as follows: T≤∞T′ if RB(T)<RB(T′) or if RB(T)=RB(T′) and RC(T)≥RC(T′). In other words, the enclosing circles radii RB(T) and RB(T′) are relevant when they are not equal, otherwise the circumscribed circles radii RC(T) and RC(T′) are relevant. FIG. 4 illustrates two acute triangles ordered through their respective RB radius. FIG. 5 illustrates two obtuse triangles. They feature the same smallest enclosing circle radius RB (dotted lines) so they are ordered through RC radius.
This ordering is in fact a lexicographic ordering defined by a couple of numerical values. Noting Ti, i=1, . . . , n the n triangles of the meshing, they are sorted according to the lexicographic order performed on couples (RB(Ti),




  
    1
    
      
        R
        C
      
      ⁡
      
        (
        
          T
          i
        
        )
      
    
  
  )




for i=1, . . . , n. This ordering is very subtle since it combines, into a simple formula, the shapes of triangles (acute vs. obtuse) as well as the dimensions. It is designed to set a lower rank to “small and flat” triangles, which are more likely to occur on the unknown separating surface to be recognized.

The determined open triangulated surface violating consistency of a labelling of the tetrahedral meshing with two given labels. The determining S50 of the open triangulated surface thus selects, among the candidates, an open surface violating consistency of the labelling. As the determining S50 also penalizes a high rank in the lexicographic order, the determining S50 thereby operates a selection among the candidates and selects, among those violating consistency of the labelling, an open surface minimal, or at least tending to be minimal, for the lexicographic order.
The labelling is now further discussed.
The labelling is a labelling of the tetrahedral meshing with two given labels. In other words, a label is assigned to each tetrahedron of the tetrahedral meshing. The outside region, that is the region not meshed by the tetrahedral meshing may also be assigned a label. The labels may for example be colors, such that each tetrahedron has a given color. Other types of labels may be used.
The determining S50 may comprise assigning the labels. For example, the determining S50 may comprise, before exploring the candidates, assigning the same label to all the tetrahedrons. The exploring and the penalizing may then use the labelling as a variable. That is, when determining S50 a second open triangulated surface being minimal in the lexicographic order among the open triangulated surfaces violating the labelling, the determining S50 may comprise iteratively modifying the labels of the tetrahedrons. The determining S50 may for example iteratively attempt to ensure consistency of the labelling by visiting triangles of the tetrahedral meshing and iteratively changing labels of tetrahedrons for adapting the labelling to ensure consistency. When doing so, the determining S50 may iteratively detect each triangle for which this adaptation cannot be performed and may identify/reward such a triangle as being part of the second open triangulated surface to determine.
Each triangle of the tetrahedron may be associated with a specification specifying whether the triangle belongs to the first open triangulated surface or not. The specification may specify how the triangle respects or violates the labelling. A triangle specified as belonging to the first open triangulated surface is known to respect consistency of the labelling only if it separates two tetrahedrons having different labels. A triangle specified as not belonging to the first open triangulated surface is known to respect consistency of the labelling only if it separates two tetrahedrons having the same label. The determining S50 may comprise assigning to each triangle such a specification. Contrary to the labelling, the specifications of the triangles do not form a variable of the determining S50, i.e. the specifications are not modified by the determining. In other words, they form a constraint thereof.
In examples, the specification may be a permutation. The permutation is either the identity, or a switch (also referred to as “swap”). Each triangle of the first open triangulated surface is assigned with the switch/swap, which indicates that the triangle respects the consistency of the labeling only when it separates two tetrahedrons having different labels (i.e. the triangle switches the labelling). Each triangle of the first open triangulated surface is assigned with the identity, which indicates that the triangle respects the consistency of the labeling only when it separates two tetrahedrons having the same label (i.e. the triangle preserves the labelling).
The determined second open triangulated surface violates consistency of the labelling, which means that each triangle of the open triangulated surface does not respect consistency of the labelling. Requiring that the second open triangulated surface to determine violates consistency of the labelling ensures that the second open triangulated surface has the same boundary as the first open triangulated surface, as further explained hereinbelow. The determining S50 explores candidate open triangulated surfaces with this requirement, so that the determining S50 selects a candidate open triangulated surface satisfying this requirement. There exists such a candidate since the first open triangulated surface already satisfies the requirement as its triangle all switch the labelling. The determining S50 then finds another candidate that satisfies the requirement with the additional requirement that the candidate must minimize the lexicographic order.
Examples of the determining S50 are now discussed.
In these examples, before the exploring and the penalizing, the determining S50 may comprise assigning a label to each tetrahedron of the tetrahedral meshing, e.g. by assigning the same label to each tetrahedron. Still before the exploring and the penalizing, the determining S50 may also comprise assigning a permutation to each triangle of the tetrahedral meshing, e.g. by assigning the switch permutation to each triangle of the first open surface and the identity permutation to the remaining triangles.
The exploring and the penalizing may comprise visiting triangles of the tetrahedral meshing according to a decreasing rank of the triangle order. The exploring and the penalizing may then comprise discarding visited triangles having a high rank of the triangle order as long as consistency of the labelling can be preserved.
The visiting of the triangles implements the exploring of the candidate triangulated surfaces. Each time a triangle is visited, the triangle is either discarded or kept. This amounts to say that exploring a given candidate triangulated surface corresponds to a particular manner of visiting and keeping or discarding triangles of the tetrahedral meshing. The visiting visits the triangle according to a decreasing rank of the triangle order. In other words, the triangle of the tetrahedral meshing having the highest rank in the triangle order, that is the triangle having the largest size among the triangles of the meshing, is visited first. Then the triangle having the second highest rank is visited, and so on, the triangle having the lowest rank being the latest visited. Each time a triangle is visited, the triangle is either kept, i.e. it is selected as belonging to the determined second open triangulated surface, or discarded, i.e. it will not be part of the determined second open triangulated surface.
The penalizing discards the visited triangles having a high rank of the triangle order. This allows to avoid the determined second open triangulated surface to feature large and/or flat triangles, or at least, this allows to avoid the determined second open triangulated surface to feature too many large and/or flat triangles. That being said, the penalizes discards these high-ranked triangles as long as consistency of the labelling can be preserved while discarding the triangles. This allows to discard the high-ranked triangles when it is certain that it is still possible to determine a second open triangulated surface violating consistency of the labelling without using these high-ranked triangles, by using triangles with lower ranks. Thereby, an explored triangle is rewarded, i.e. determined as being part of the determined second open triangulated surface, only when there is no possibility of preserving labelling consistency because of the presence of this triangle. Since the triangles are explored in the decreasing rank of the triangle order, this allows to avoid, as far as possible, large and/or flat triangles to belong to the determined second open triangulated surface: these triangles are explored in first/early, so that when they are explored, if they violate labelling consistency, there are still possibilities of preserving labelling consistency without necessarily rewarding these triangles.
The discarding may comprise, for each visited triangle, assessing whether the triangle violates or respects consistency of the labelling. Then, the discarding may comprise, for each visited triangle, if the triangle violates consistency of the labelling, either rewarding the triangle, either adapting the labelling to respect consistency. Rewarding the triangle means adding the triangle to the determined second open triangulated surface, i.e. the triangle will ultimately, at the end of the exploring and penalizing, belong to the determined second open triangulated surface. This manner of performing the discarding allows to avoid systematically rewarding triangles violating consistency of the labelling: sometimes, if an explored triangle violates consistency of the labelling, the labelling can be adapted to respect consistency, so that the triangle need not be rewarded. This may notably be the case for the large and/or flat triangles, explored in first/early. When labelling consistency cannot be reestablished adapting the labelling, the explored triangle violating the consistency is necessarily rewarded. This may notably be the case for the less large and/or flat triangles, explored in last/late.
The discarding may comprise, for each visited triangle, for example after the assessing of whether the triangle violates or respects consistency of the labelling:

    
    
        if the triangle separates two tetrahedrons that are in a same connected component and if the triangle violates consistency of the labelling, rewarding the triangle;
        if the triangle separates two tetrahedrons that are in different connected components:
        
            if the triangle violates consistency of the labelling, switching the label of one of the connected components (i.e. of all the tetrahedrons of the connected component) and merging the connected components (i.e. the two connected components thereby forming a single connected component),
            if the triangle respects consistency of the labelling, merging the connected components (i.e. the two connected components thereby forming a single connected component).
        
        
    
    


A connected component is a set of tetrahedrons such that, for each couple of tetrahedrons in the set, there exists a path of adjacent tetrahedrons in the set, i.e. tetrahedrons two-by-two sharing a triangle, and of the triangles shared by them, such that the path connects the tetrahedrons of the couple, and each triangle in the path respects consistency of the labelling. With this manner of performing the discarding, the method only rewards triangles violating the labelling consistency when these triangles separate tetrahedrons of a same connected component. This allows to reward triangles violating the labelling consistency only when labelling consistency cannot be reestablished by switching the labelling of the connected components separated by the triangle. This further permits to reward low-ranked triangles, since they are explored in last/late, such that when they are explored and violate the labelling consistency, there is no possibility of reestablishing consistency by performing a switch.
Any suitable implementation of the previously discussed manners of performing the exploring and penalizing can be used. For example, the dual graph of the tetrahedral meshing can be used. The concept of dual graph of a tetrahedral meshing is known per se. The dual graph is a graph having nodes and arcs connecting nodes, where each node represents a tetrahedron in the tetrahedral meshing, and where each arc connects two nodes if the tetrahedrons represented by the two nodes share a triangle, the share triangle being then represented by the arc. An additional node is added for representing the outside region, each triangle facing the outside region thereby being representing by an edge in the dual graph. The triangles may notably be visited by associating to each arc of the dual graph the weight of its corresponding triangle in the triangle order and by visiting the arcs of the dual graph in the decreasing order of their weights, starting with the arcs connecting triangles to the outside region.
An implementation of the method is now discussed.
This implementation allows to determine an open triangulated surface forming a skin of a portion of a structure of a real scene represented, at least partially, by a 3D point cloud, given one or more loops given as boundary of the portion. The 3D point cloud may include a very large number of points, may be incomplete (e.g. with one or more holes), and/or may be error prone. Yet this implementation still succeeds. The 3D point cloud may feature density variations, e.g. that can be very important. Yet this implementation still succeeds. It may also feature outliers, which are low density sets of wrong points randomly spread in space. Yet this implementation still succeeds. In addition, the smoothness of the structure's real shape and/or of the real scene may be unknown. Yet this implementation still succeeds.
In other words, this implementation computes the second open triangulated surface from such a point cloud regardless of the density variations, in a reasonable computing time. This implementation is thus robust and does not involve tuning parameters.
FIG. 6 shows a flowchart of this implementation of the method. As illustrated in FIG. 6, this implementation comprises the providing S10 of a 3D point cloud. The 3D point cloud is provided by a user. This implementation further comprises computing S20 a 3D Delaunay tetrahedral meshing of the 3D point cloud. Since the point cloud includes three-dimensional points, the resulting Delaunay meshing is made of adjacent tetrahedrons, each tetrahedron being bounded by four triangles. This implementation further comprise defining the lexicographic order, including providing, e.g. computing, triangles weights of the triangles of the Delaunay tetrahedral meshing, and providing a dual graph of the tetrahedral meshing. The concept of dual graph of a Delaunay triangulation is known per se and has been discussed above. This graph captures tetrahedrons adjacency through triangles sharing. This implementation further comprises ordering the arcs of the dual graph, each representing a triangle of the Delaunay meshing, with the triangles weights. Thereby, each node of the dual graph represents a tetrahedron of the mesh, each arc of the dual graph represents a triangle of the mesh, and each arc of the dual graph is labeled with the corresponding triangle's rank in the lexicographic order. This implementation notably explores the arcs of the dual graph in the decreasing order when performing the determining S50, as discussed hereinafter.
Still referring to the flowchart of FIG. 6, this implementation further comprises providing the first open triangulated surface with a given boundary. The first open surface may be directly provided by a user. Alternatively, the providing of the first open surface may comprise providing S30 one or more loops which define the given boundary. The providing S30 of the one or more loops may be carried out by a user or automatically, as previously discussed. The implementation may then comprise determining S40, given the one or more loops, a first open surface made of a set of triangles in the Delaunay tetrahedral mesh and whose boundary matches the given boundary.
Still referring to the flowchart of FIG. 6, given the ordered dual arcs of the Delaunay triangulation, and given the first open triangulated surface, the implementation comprises identifying the dual arcs of the first open triangulated surface, representing triangles of the first open triangulated surface. This implementation comprises then, based on the dual graph and its ordered arcs and based on the identified first open triangulated surface dual arcs, a reduction algorithm which implements the determining S50 of a second open triangulated surface representing a skin of a portion of the structure, thereby yielding a reconstructed open surface representing the skin. The first open triangulated surface is only constrained by its boundary and, in general, fails to go through the densest point area. But when given as input to the reduction algorithm, the algorithm determines S50 an optimal surface (i.e. with respect to minimizing the lexicographic order, thereby going through the densest point area) with the same boundary/boundaries. The reduction algorithm discards arcs of the dual graph in such a way that the remaining dual arcs define a triangulated open surface that is the reconstructed second open triangulated surface representing the skin.
This implementation notably applies to 3D reconstruction applications where there is a need to produce open surfaces, that is surfaces with boundaries. In this case, given a point cloud, this implementation provides, upon user action or automatically, a boundary, made of one or several polygonal loops (i.e. closed polylines) with vertices in the point cloud. This implementation allows to produce then an open mesh whose vertices belong to the point cloud and whose boundary coincides with the given loops. This implementation notably allows to mesh open surfaces representing terrains from LIDAR data and, since this implementation is capable of control the boundaries, it allows to enforce common boundaries among adjacent terrain area. Applications of this implementation will be discussed in further details hereinafter.
An outline of the implementation is now briefly discussed, before going in further details about algorithms involved in the implementation.
The implementation manipulates cycles. A 1-cycle in a 3-dimensional Delaunay complex is a union of loops, or in other words a set of edges such that each vertex belongs to an even number of edges. A 0-cycle in a 2-dimensional Delaunay complex is just an even number of vertices. FIGS. 7 to 9 illustrate with one dimension less, that is in a dimension 2 Delaunay complex, the implementation of the method, that finds a lexicographic minimal chain for a given boundary. In this 2D illustration, the total order on edges consists in comparing their length. FIG. 7 shows a loop A provided at S30, the loop A consisting in four vertices, illustrated by large bullet points on FIG. 7. FIG. 8 illustrates the determining S40 of an open surface having loop A as boundary, the determining S40 consisting in computing a chain Γ0 bounding the provided set A, i.e. having A has boundary, i.e. in algebraic notation ∂Γ0=A. The chain Γ0 is illustrated by the dotted lines on FIG. 8. An algorithm for implementing this determining step S40 will be further discussed hereinafter, although alternative suitable algorithm, for example alternative suitable combinatorial geometric algorithms, can also be used, as previously explained. FIG. 9 illustrates the determining S50, which consists in, given the resulting chain Γ0 of the first step, computing the lexicographic minimal chain Γ with same boundary as (in fact homologous to) Γ0, i.e., in algebraic notation, ∂Γ=∂Γ0=A. The chain Γ is illustrated by the dotted polylines lines on FIG. 9. An algorithm implementing this determining step S50 will be further discussed hereinafter.
Concepts involved in the present implementation are now discussed.
Simplicial Complexes
Consider an independent family A=(a0, . . . , ad) of points of N. A d-simplex σ spanned by A is the set of all points, where Σi=0dtiai,∀i∈[0,d],ti≥0, and Σi=0dti=1. Any simplex spanned by a subset of A is called a face of σ. A simplicial complex K is a collection of simplices such that every face of a simplex of K is in K and the intersection of two simplices of K is either empty either a common face. The dimension of a simplicial complex is the maximal dimension of its simplices. Simplicial complexes generalize graphs since graphs could be defined as 1-dimensional simplicial complexes. A d-dimensional simplicial complex is said pure if it is of dimension d and any simplex has at least one coface of dimension d.
Simplicial Chains
Let K be a simplicial complex of dimension at least d. The notion of chains can be defined with coefficients in any ring but in the present disclosure the definition is restricted to coefficients in the field 2=/2. A d-chain A with coefficients in 2 is a formal sum of d-simplices:




  
    
      
        
          A
          =
          
            
              ∑
              i
            
            ⁢
            
              
                x
                i
              
              ⁢
              
                σ
                i
              
            
          
        
        ,
        
          
            with
            ⁢
            
              
            
            ⁢
            
              x
              i
            
          
          ∈
          
            
              Z
              2
            
            ⁢
            
              
            
            ⁢
            and
            ⁢
            
              
            
            ⁢
            
              σ
              i
            
          
          ∈
          K
        
      
    
    
      
        (
        1
        )
      
    
  




Let Cd(K) be the vector space over the field 2 of d-chains in the complex K. Interpreting the coefficient xi∈2={0,1} in front of simplex σi as indicating the existence of σi in the chain A, the d-chain A can be viewed as a set of simplices: for a d-simplex σ and a d-chain A, one can write that σ∈A if the coefficient for σ in A is 1. With this convention, the sum of two chains corresponds to the symmetric difference on their sets. In what follows, a d-simplex σ can also be interpreted as the d-chain containing only the d-simplex σ.
Boundary Operator
For a d-simplex σ=[a0, . . . , ad], the boundary operator is defined as the operator:




  
    
      ∂
      d
    
    ⁢
    
      :
      
        
          C
          d
        
        ⁡
        
          (
          K
          )
        
      
      :
      
        →
        
          
            C
            
              d
              -
              1
            
          
          ⁡
          
            (
            K
            )
          
        
      
    
  
  ⁢
  
    

  
  ⁢
  
    
      
        ∂
        d
      
      ⁢
      σ
    
    ⁢
    
      =
      def
    
    ⁢
    
      
        ∑
        
          i
          =
          0
        
        d
      
      ⁢
      
        [
        
          
            a
            0
          
          ,
          ...
          ,
          
            
              a
              ^
            
            i
          
          ,
          ...
          ⁢
          
            
          
          ,
          
            a
            d
          
        
        ]
      
    
  




where the symbol âi means the vertex ai is deleted from the array. A chain with zero boundary is called a cycle. The kernel of the boundary operator Zd=Ker ∂d is called the group of d-cycles and the image of the operator Bd=Im∂d+1 is the group of d-boundaries. Two d-chains A and A′ are homologous A−A′=∂d+1(B), for some (d+1)-chain B.
Lexicographic Order
Given a total order on the d-simplices of K, σ1< . . . <σn, where n=dimCd (K). From this order, a lexicographic total order on d-chains can be defined as follows.




  
    C
    1
  
  ⁢
  
    ⊆
    lex
  
  ⁢
  
    
      C
      2
    
    ⁢
    
      ⇔
      def
    
    ⁢
    
      {
      
        
          
            
              
                
                  C
                  1
                
                +
                
                  C
                  2
                
              
              =
              0
            
          
        
        
          
            or
          
        
        
          
            
              
                σ
                max
              
              =
              
                
                  max
                  ⁢
                  
                    {
                    
                      σ
                      ∈
                      
                        
                          C
                          1
                        
                        +
                        
                          C
                          2
                        
                      
                    
                    }
                  
                
                ∈
                
                  C
                  2
                
              
            
          
        
      
    
  




This total order naturally extends to a strict total order ⊏lex on Cd(K). In the context of the present disclosure, the lexicographic order on the triangulated surfaces of the tetrahedral meshing is induced by the triangle order on the triangles of the tetrahedral meshing, which is a total order on the triangles of the tetrahedral meshing.
Problem: Lexicographic Optimal Chain for a Given Boundary (LOCGB)
This implementation contemplates the following problems.
Problem 1: Given a simplicial complex K with a total order on the d-simplices and a d-chain Γ0∈Cd(K), find:




  
    Γ
    min
  
  =
  
    
      min
      
        ⊆
        lex
      
    
    ⁢
    
      
        {
        
          
            
              Γ
              ∈
              
                
                  C
                  d
                
                ⁡
                
                  (
                  K
                  )
                
              
            
            |
            
              
                ∂
                d
              
              ⁢
              Γ
            
          
          =
          
            
              ∂
              d
            
            ⁢
            
              Γ
              0
            
          
        
        }
      
      .
    
  




Problem 2: Given a simplicial complex K with a total order on the d-simplices and a (d−1)-cycle A, check if A is a boundary:

BA=def{Γ∈Cd(K)|∂dΓ=A}≠∅. 

If it is the case, find the minimal d-chain Γ bounded by A:




  
    Γ
    min
  
  =
  
    
      min
      
        ⊆
        lex
      
    
    ⁢
    
      
        B
        A
      
      .
    
  




In Problem 2, finding a representative Γ0 in the set BA≠∅ such that ∂dΓ0=A is sufficient: it remains then to solve Problem 1 to find the minimal d-chain Γmin such that ∂dΓmin=∂dΓ0=A. As further discussed hereinafter, this implementation computes, the open triangulated surface representing the skin by solving Problem 2 in two steps: given the one or more loops A the determining S40 finds a representative Γ0 in the set BA≠∅ such that ∂dΓ0=A. Then the determining S50 solves Problem 1 to determine as the open triangulated surface the minimal d-chain Γmin such that ∂dΓmin=∂dΓ0=A.
d-pseudomanifold
A d-pseudomanifold is a pure d-dimensional simplicial complex for which each (d−1)-face has exactly two d-dimensional cofaces.
Dual Graph
The dual graph of a d-pseudomanifold M is the graph whose vertices are in one-to-one correspondence with the d-simplices of M and whose edges are in one-to-one correspondence with (d−1)-simplices of M: an edge e connects two vertices v1 and v2 of the graph if and only if e corresponds to the (d−1)-face with cofaces corresponding to v1 and v2.
Strongly Connected d-pseudomanifold
A strongly connected d-pseudomanifold is a d-pseudomanifold whose dual graph is connected.
Coboundary Operator
Seeing a graph G as a 1-dimensional simplicial complex, let the coboundary operator ∂0: C0(G)→C1(G) be the linear operator defined by the transpose of the matrix of the boundary operator ∂1: C1(G)→C0(G) in the canonical basis of simplices. To avoid introducing non-essential formal definitions, the coboundary operator is defined over chains since, for finite simplicial complexes, the canonical inner product defines a natural bijection between chains and cochains.
Remark 1
For a given graph G=(,ε), let  and ε respectively denote its vertex and edge sets. Let  be a given (d+1)-pseudomanifold. For a d-chain α∈Cd() and a (d+1)-chain β∈Cd+1(), let {tilde over (α)} and {tilde over (β)} denote their respective dual 1-chain and dual 0-chain in the dual graph G() of . The following holds:

    
    
        For a set of vertices 0⊂, ∂00 is exactly the set of edges in G=(,ε) that connect vertices in V0 with vertices in †0.
        If α∈Cd(M) and β∈Cd+1(M), then {tilde over (α)}=∂0{tilde over (β)}⇔α=∂d+1β.
    
    


It is now discussed an algorithm for solving Problem 1, thereby implementing the determining S50 as previously explained. In this discussion, let  be a simplicial complex which is assumed to be a strongly connected (d+1)-pseudomanifold whose d-homology is trivial. In the presently-discussed implementation,  is a particular a triangulation of 3 obtained by completion of a 3D Delaunay complex, i.e. the tetrahedral meshing. First of all, a reformulation of problem 1 is given.
Reformulation of Problem 1
As in the general case, the implementation finds a solution to problem 2 by first determining a d-chain Γ0 such that ∂dΓ0=A, which corresponds to step S40, and then solves problem 1, which corresponds to step S50. It is assumed that  had a trivial d-homology, which can be expressed by saying that all the d-cycles are boundaries:

∀α∈Cd(),∂α=0⇔∃β∈\Cd+1(),∂β=α.

Therefore, Problem 1 can be reduced to the following problem.
Problem 1.1: Given a strongly connected (d+1)-pseudomanifold  with a total order on the d-simplices and a d-chain Γ0∈Cd(), find:




  
    Γ
    min
  
  =
  
    
      min
      
        ⊆
        lex
      
    
    ⁢
    
      
        {
        
          
            
              Γ
              ∈
              
                
                  C
                  d
                
                ⁡
                
                  (
                  M
                  )
                
              
            
            ❘
            
              ∃
              
                B
                ∈
                
                  
                    C
                    
                      d
                      +
                      1
                    
                  
                  ⁡
                  
                    (
                    M
                    )
                  
                
              
            
          
          ,
          
            
              Γ
              +
              
                Γ
                0
              
            
            =
            
              ∂
              B
            
          
        
        }
      
      .
    
  




In fact, because of remark 1 made above, if G=(,ε) is the dual graph to the pseudomanifold , Problem 1.1 can be reformulated as follows.
Problem 1.2: Given a connected graph G=(,ε) with a total order on ε and a set of edges {tilde over (Γ)}0⊂ε, find the set {tilde over (Γ)}⊂ε minimal for the lexicographic order ⊏lex, such that {tilde over (Γ)}+{tilde over (Γ)}0 is the set of edges that connects vertices in a possibly empty set {tilde over (B)}⊂ its complement \{tilde over (B)}.
Where the sum {tilde over (Γ)}+{tilde over (Γ)}0=({tilde over (Γ)}∪{tilde over (Γ)}0)\({tilde over (Γ)}∪{tilde over (Γ)}0) is meant as the sum of the corresponding 1-chains over 2.
Labelling
The labelling is in the present implementation a coloring, although other similar labelling could be used instead. The labelling has two given labels, which are two elements alphabet {b,r} standing for “blue” and “red” and its set of permutations σ{b,r}={ident, swap} defined ident(b)=b, ident(r)=r, swap (b)=r and swap(r)=b.
Augmented Graph
An augmented graph being a triple (,ε,π) where (,ε) is a (possibly disconnected) graph, and π:ε→σ{b,r} associates to each edge of the graph a permutation in σ{b,r}. Given a subset of edges ε′⊂ε, the augmented graph obtained by keeping only edges in ε′, is denoted (,ε′,π) in which the permutation assignment is the restriction of π to ε′.
Label Assignment
A label assignment is a map :→{b,r} that associates a label (i.e. a color) to each node of the graph.
Satisfying Assignment
An augmented graph (,ε,π) is said to admit a satisfying assignment if there is an assignment  consistent with π which means that, for each edge [v1, v2]∈ε, one has:

(v2)=π([v1,v2])((v1)).

The graph may then be also said to respect consistency of the labelling.
Remark 2
Observes that if  is a satisfying assignment and Cc⊂ is a connected component in (,ε), then the assignment ′ that coincides with  on \Cc and with swap ∘  on Cc is also a satisfying assignment.
Valid Cut
Given an augmented graph (,ε,π), a set of edges Γ∈ε, is called a valid cut of (,ε,π) if (,ε\Γ,π) admits a satisfying assignment. Since ε is a trivial valid cut, the set of valid cuts is not empty.
Another problem can be formulated to solve problem 1.2.
Problem 1.3: Given an augmented graph (,ε,π) and a total order on ε, find the lexicographic minimal valid cut Γmin of (,ε,π):




  
    Γ
    min
  
  =
  
    
      min
      
        ⊆
        lex
      
    
    ⁢
    
      
        {
        
          
            Γ
            ⋐
            E
          
          ,
          
            Γ
            ⁢
            
              
            
            ⁢
            is
            ⁢
            
              
            
            ⁢
            a
            ⁢
            
              
            
            ⁢
            valid
            ⁢
            
              
            
            ⁢
            cut
            ⁢
            
              
            
            ⁢
            of
            ⁢
            
              
            
            ⁢
            
              (
              
                V
                ,
                E
                ,
                π
              
              )
            
          
        
        }
      
      .
    
  




The following lemma holds:
Lemma 1: The solution of Problem 1.2 is the solution of Problem 1.3 for the augmented graph (,ε,πΓ0):




  
    
      π
      
        Γ
        0
      
    
    ⁡
    
      (
      e
      )
    
  
  =
  
    {
    
      
        
          
            
              
                ident
                ⁢
                
                  
                
                ⁢
                if
                ⁢
                
                  
                
                ⁢
                e
              
              ∈
              
                E
                ⁢
                \
                ⁢
                
                  Γ
                  0
                
              
            
          
        
        
          
            
              
                swap
                ⁢
                
                  
                
                ⁢
                if
                ⁢
                
                  
                
                ⁢
                e
              
              ∈
              
                Γ
                0
              
            
          
        
      
      .
    
  




Proof of Lemma 1:
First, if Γ+Γ0 is the set of edges that connect vertices in a possibly empty set B⊂ with vertices in its complement \B, then (,ε\Γ,πΓ0) admits a satisfying assignment which means that Γ is a valid cut of (,ε\Γ,πΓ0).
Indeed, consider the following assignment:




  
    L
    ⁡
    
      (
      v
      )
    
  
  =
  
    {
    
      
        
          
            
              b
              ⁢
              
                
              
              ⁢
              if
              ⁢
              
                
              
              ⁢
              v
            
            ∈
            B
          
        
      
      
        
          
            
              r
              ⁢
              
                
              
              ⁢
              if
              ⁢
              
                
              
              ⁢
              v
            
            ∈
            
              V
              ⁢
              \
              ⁢
              B
            
          
        
      
    
  




Consider an edge e∈ε\Γ. Observe that in this case e∈Γ0+Γ=(Γ0∪Γ)\(Γ0∩Γ) if and only if e∈Γ0. If the vertices of e are both in B or both in \B, then both vertices have same label by  and since in this case eΓ0, πΓ0(e)=ident which is consistent with the labelling of the vertex of e. If now e connects a vertex in B with a vertex \B, then their label differ and since in this case e∈Γ0, one has πΓ0(e)=swap which is again consistent. It follows that  is a satisfying assignment for (,ε\Γ,πΓ0).
Second, if Γ is a lexicographic minimal valid cut of (V,E,πΓ0), then Γ+Γ0 is the set of edges that connect vertices in a possibly empty set B⊂ with vertices in its complement \B.
Indeed, let  be a satisfying assignment for (,ε\Γ,πΓ0). By definition of satisfying assignments, if eΓ, e is consistent with the labeling of its vertices. Observes first that if e∈Γ then, since Γ is minimal among valid cuts, πΓ0 is not consistent with the labeling of its vertices as, if it were, Γ\{e} would be again a valid cut, contradicting the minimality of Γ.
Consider the set B={v,L(v)=b}. One can consider systematically the four possible cases.
If eΓ0∪Γ then e is consistent with the labeling of its vertices and since πΓ0(e)=ident this means that its vertices are either both in B, either both in \B.
If e∈Γ0\(Γ0∩Γ) then e is consistent with the labeling of its vertices and since πΓ0(e)=swap this means that one of its vertices in B and the other in \B.
If e∈Γ\(Γ0∩Γ) then e is not consistent with the labeling of its vertices and since πΓ0(e)=ident this means that one of its vertices in B and the other in \B.
If e∈Γ0∩Γ then e is not consistent with the labeling of its vertices and since πΓ0(e)=swap this means that its vertices are either both in B, either both in \B.
To sum up e connects a vertex in B with a vertex in ε\B if and only if e∈Γ+Γ0.
Let Γmin and Γ′min min be the respective solutions of Problem 1.2 and Problem 1.3. It has been proved above that (, ε\Γmin, πΓ0) admits a satisfying assignment and by definition of Problem 1.3, Γ′min⊏lexΓmin.
It has also been proved above that there is a set of vertex B⊂ such that Γmin+Γ′min is precisely the set of edges that connect a vertex in B with a vertex in †B. By definition of Problem 1.2, Γmin⊏lexΓ′min and therefore Γmin=Γ′min.
This proves the lemma.
Remark 3
If the augmented graph (,ε, π) admits a satisfying assignment and if e1, . . . , en is a closed path in (,ε) then:




  
    
      
        ∏
        
          
            i
            =
            1
          
          ,
          n
        
      
      ⁢
      
        π
        ⁡
        
          (
          
            e
            i
          
          )
        
      
    
    =
  
  ⁢
  ident




where the product is meant as functions composition.
Lemma 2: Let (,ε, π) be an augmented graph with a total order < on ε. Let Γmin⊂ε′⊂ε be such that Γmin is a lexicographic minimum valid cut of (,ε′, π). Let e*=(v1, v2)∈E be such that e*<min{e∈ε′}.
Then the lexicographic minimal valid cut of (,ε′∪{e*},π) is either Γmin or Γmin∪{e*}.
Moreover, if  is a satisfying assignment for (,ε′\Γmin, π) then Γmin is the lexicographic minimal valid cut of (,ε′∪{e*},π) if and only if one of the two following case occurs:
a) v1 and v2 are in the same connected component in (,ε′\Γmin) and π(e*) is consistent with :(v2)=π(e*)((v1)),
b) v1 and v2 are not in the same connected component in (,ε′\Γmin).
In case a)  is again a satisfying assignment (,(ε′∪{e*})\Γmin,π).
In case b), if π(e*)=ident then  is again a satisfying assignment for (,(ε′∪{e*})\Γmin,π).
If now π(e*)=swap let Cc(v1) be the connected component of v1 in (,ε′). ′ defined by:




  
    
      L
      ′
    
    ⁡
    
      (
      v
      )
    
  
  =
  
    {
    
      
        
          
            
              
                L
                ⁡
                
                  (
                  v
                  )
                
              
              ⁢
              
                
              
              ⁢
              if
              ⁢
              
                
              
              ⁢
              v
            
            ∈
            
              V
              ⁢
              \
              ⁢
              
                
                  C
                  c
                
                ⁡
                
                  (
                  
                    v
                    1
                  
                  )
                
              
            
          
        
      
      
        
          
            
              
                swap
                ∘
                
                  L
                  ⁡
                  
                    (
                    v
                    )
                  
                
              
              ⁢
              
                
              
              ⁢
              if
              ⁢
              
                
              
              ⁢
              v
            
            ∈
            
              
                C
                c
              
              ⁡
              
                (
                
                  v
                  1
                
                )
              
            
          
        
      
    
  




is a satisfying assignment for (,(ε′∪{e*})\Γmin,π).
Proof of Lemma 2:
Let's Γmin be the lexicographic minimum valid cut of (,ε′,π) and Γ*min the lexicographic minimum valid cut of (,ε′∪{e*},π)
Since (,(ε′∪{e*})\Γmin,π) admits a satisfying assignment and ε′\(ε′∩Γmin)⊂(ε′∪{e*})\Γ*min the same assignment satisfies (, ε′\(ε′∩Γmin), π). ε′∩Γmin is then a valid cut for (, ε′, π), so that Γmin ⊏lexε′∩Γ*min⊏lexΓ*min.
Since Γ*min∪{e*} is a valid cut for (,ε′∪{e*},π), then Γ*min⊏lexΓ*min∪{e*} and therefore:

Γmin⊏lexΓ*min⊏lexΓ*min∪{e*}. 

As e*<min{e∈ε′}, there is no set in ε′∪{e*} strictly between Γmin and Γ*min∪{e*} for the lexicographic order. It follows that Γmin is either equal to Γmin or Γ*min∪{e*} and the first assertion of the lemma is proved.
If v1 and v2 are in the same connected component in (,ε′) then if π(e*) is not consistent with : (v1)≠π(e*)((v2)), then consider the closed path concatenation of e with a path e1, . . . , en in (,ε′\Γmin) connecting v1 and v2. Since (v2)=Πi=1,nπ(ei)((v1)), (v1)≠π(e*)Πi=1,nπ(ei)((v1)) so that π(e*)Πi=1,nπ(ei)((v1))=swap. Since e*, e1, . . . , en is a closed path, Remark 3 implies that (, ε′\Γmin, π) does not admit any satisfying assignment.
This shows that if v1 and v2 are in the same connected component in (,ε′\Γmin), then if π(e*) is not consistent with  then Γmin is not in a valid cut for (,(ε┘∪{e*})\Γmin,π).
Now if v1 and v2 are in the same connected component in (,ε′\Γmin) and π (e*) is consistent with ,  is again a satisfying assignment for (,(ε′∪{e*})\Γmin,Γ) and Γmin is then a valid cut for (,ε′∪{e*},π). Since Γ*min is either equal to Γmin or Γmin∪{e*}, then in this case Γ*min=Γmin 
It remains to consider the case b) for which v1 and v2 are not in the same connected component in (,ε′\Γmin). In this case, if π(e*) is consistent with ,  is also a satisfying assignment for (,(ε′∪{e*})\Γmin,π).
If now π(e*) is not consistent with , we know from Remark 2 that ′ as defined in the lemma is again a satisfying assignment for (,ε′\Γmin,π). Since v1 is not in the connected component of v2 in (,ε′\Γmin), π(e*) is consistent with ′ and the conclusion is the same as in the previous case.
This proves lemma 2.
The reduction algorithm implementing the determining S50 is now discussed. The algorithm is presented in the general context of problems 1, 2 and 1.1 to 1.3 discussed above. Its application to the dual graph G of the Delaunay tetrahedral meshing computed at S20, with the application π that associates to each edge belonging to the first open triangulated surface dual graph the swap permutation and to each other edge the identity permutation.
The reduction algorithm is described by the following pseudo-code










Algorithm 1: Lexicographic Min Valid Cut

















Inputs: G = ( ,ε,π) with ε = {ei, i = 1, . . . , n} in decreasing order



Output: Γmin



Γmin←∅ for v ∈   do



 MakeSet(v)



  (v) = b



End



for e ∈ ε in decreasing order do



 e = (v1, v2) ∈  ×  



 r1, ← FindSet(v1,), r2, ← FindSet(v2,)



 if r1, = r1, then



  if  (v2) ≠ π(e) ( (v1)) then



   Γmin ← Γmin ∪ e



  End



 Else



  if  (v2) ≠ π(e) ( (v1)) then



   SwapCC(r2,)



  End



  UnionSet(r1,, r2,)



end









The algorithm takes as input a set of edges sorted in decreasing order according to the lexicographic order. The operation SwapCC on the representative r of a connected component consists in swapping the label of all its elements, as in Remark 2 or in Lemma 2. Algorithm 2 visits edges in decreasing order for, which allows to build Γmin in quasi-linear time. Indeed, at the beginning, since Γmin=∅, any lexicographic minimal valid cut has to contain Γmin. In fact this property remains valid at each step and, when considering next edge e, the union of the current Γmin with the set of edges smaller or equal than e is known to be a valid cut. For this reason, the decision of inserting e in Γmin does not depend on the set of smaller edges in G. Note that this property, allowing to build Γmin in a single pass, uses the processing of the edges in decreasing order.
Proposition 1: Algorithm 1 computes the solution of Problem 1.3 for a given augmented graph (,ε,π). Assuming the input set of edges ε are sorted, the algorithm has O(nα(n)) time complexity, where n is the cardinal of ε and α the inverse Ackermann function.
Proof of Proposition 1:
While MakeSet, FindSet and UnionSet are standard operations on disjoint set data structures, a naive implementation of SwapCC would require an elementary operation on each element of the connected component. However, a variant of the disjoint set data structure allows to implement it with a quasi-constant time complexity.
One possibility for that is to implement the connected components by pairs of elementary connected components, with a map from elementary connected components, one “blue” and one “red” towards the pair containing it. The modified MakeSet operation creates then a such pair with one vertex in the blue component and one empty red component. The modified FindSet operation apply the standard FindSet operation and then return the pair containing it using the map. The modified UnionSet operation between two paired connected components applies the standard UnionSet operation on the respective “blue” and “red” elementary connected components and pairs the results in the new paired connected component. SwapCC consists then merely in swapping the “blue” and the “red” elementary connected components inside the paired connected component.
This manner of implementing the operations is convenient in practice as it uses the standard disjoint set data structure as a black box. However, the map from elementary connected components toward the pair containing it may add a log(n) factor to the complexity. The nα(n) complexity of the disjoint set data structure can be preserved if one is willing to adapt its implementation. To briefly sketch this: One can attach an attribute in {ident, swap} to each “parent” relation, which is at the heart of the disjoint set data structure, without changing its complexity. This attribute expresses if a node and its parent have same or different color.
MakeSet creates a connected component with one element which is its own parent with the ident attribute associated to this relation. This attribute means that the color of the vertex, which is its own representative, is “blue”. The FindSet operation need then to compose the permutation along the path, including the last relation from the representative to itself, that defines the color of the representative with respect to “blue”: this determines the actual color of the node by applying this composition to the color “blue”. UnionSet associates one representative to its parent with the attribute, ident or swap, required by their respective colors. SwapCC only swap the color of the representative, i.e. apply a swap to the attribute associated to the relation to itself as its own parent.
This proves proposition 1.
Algorithm 1 is now further discussed with reference to FIGS. 10 to 32, which show an example algorithm 1 running on the dual graph of a Delaunay triangulation. Each figures shows the algorithm together with an illustration of the current step of the algorithm on the dual graph, the current step being circled where appropriate in the figures.
FIG. 10 shows a graphical representation of the Delaunay triangulation. The edges represent the triangles, and the bullet points connected by the edges represent the tetrahedrons. Edges ∞ represent the triangles each separating one tetrahedron from the outside of the triangulation. The remaining edges are numbered from 7 to 1, which corresponds to a decreasing rank of the triangle order: edge 7 represents the triangle with the higher rank in the triangle order, edge 6 represent the triangle with the second higher rank in the triangle order, and so on. Edges shown as large lines, that is edges 7, 5 and 2, represent the triangles of the first open triangulated surface. Algorithm 1 will find the lexicographic minimal path of triangles which as the same endpoints as the path formed by the triangles represented by edges 7, 5 and 2.
FIGS. 11 and 12 illustrate the dual graph of the triangulation illustrated on FIG. 10. On FIG. 11, the dual graph is superimposed with the triangulation, and on FIG. 12, the dual graph is shown alone. Edges of the dual graph are labelled with the same number than their corresponding triangles illustrated on FIG. 10.
Edges 7, 5 and 2, representing the triangles of the first open triangulated surface, are emphasized in FIG. 13, where they are shown as thick lines. This representation will be omitted in the next figures. Edges 7, 5 and 2 have been assigned the switch/swap permutation. The other edges have been assigned the identity permutation.
FIG. 14 illustrates the first step of the algorithm, where all the vertices of the dual graph are assigned with the same label “b”. The other label is “r” and is assigned to no vertex yet. These vertices are represented by the large bullet points in FIG. 14. The solution Γmin, which ultimately will contain all the dual edges of the triangles of the determined second open triangulated surface, is initialized as empty.
FIG. 15 illustrates the next step of the algorithm. The edges co are first visited. They all respect the labelling consistency, as they all have been assigned the identity permutation while the vertices are at this step all assigned with label “b”. The connected components of the dual graph separated by these edges are therefore merged, and these edges are not added to Γmin.
FIGS. 16 and 17 illustrate the next step of the algorithm. Edge 7 is now visited. Edge 7 is identified as violating consistency of the labelling, as Edge 7 is assigned with the swap permutation while it separates two tetrahedrons having the same label. Furthermore, Edge 7 separates two tetrahedrons belonging to two different connected components. As shown on FIG. 17, the label of one of the two connected components is thus swapped, and then the two connected components are merged. The swapping result in the labelling of vertices with the label “r”, these vertices being illustrated by small grey bullet points in FIG. 17, and in the next figures. Edge 7 is not added to Γmin. In other words, Edge 7 is discarded.
FIGS. 18 and 19 illustrate the next step of the algorithm. Edge 6 is now visited. Edge 6 is identified as violating consistency of the labelling, as Edge 6 is assigned with the identity permutation while it separates two tetrahedrons having different labels. Furthermore, Edge 6 separates two tetrahedrons belonging to two different connected components. As shown on FIG. 19, the label of one of the two connected components is thus swapped, and then the two connected components are merged. Edge 6 is not added to Γmin. In other words, Edge 6 is discarded.
FIGS. 20 and 21 illustrate the next step of the algorithm. Edge 5 is now visited. Edge 5 is identified as violating consistency of the labelling, as Edge 5 is assigned with the swap permutation while it separates two tetrahedrons having the same label. Furthermore, Edge 5 separates two tetrahedrons belonging to two different connected components. As shown on FIG. 21, the label of one of the two connected components is thus swapped, and then the two connected components are merged. Edge 5 is not added to Γmin. In other words, Edge 5 is discarded.
FIGS. 22 and 23 illustrate the next step of the algorithm. Edge 4 is now visited. Edge 4 is identified as violating consistency of the labelling, as Edge 4 is assigned with the identity permutation while it separates two tetrahedrons having different labels. Furthermore, Edge 4 separates two tetrahedrons belonging to a same connected component. As shown on FIG. 23, Edge 4 is thus added to the solution Γmin (represented by a cut of Edge 4 in FIG. 23). In other words, Edge 4 is rewarded.
FIG. 24 illustrates the next step of the algorithm. Edge 3 is now visited. Edge 3 is identified as not violating consistency of the labelling, as Edge 3 is assigned with the identity permutation while it separates two tetrahedrons having the same label. As shown on FIG. 24, Edge 3 is thus not added to the solution Γmin. In other words, Edge 3 is discarded. The two tetrahedrons separates by Edge 3 are already in a same connected component.
FIGS. 25 and 26 illustrate the next step of the algorithm. Edge 2 is now visited. Edge 2 is identified as violating consistency of the labelling, as Edge 2 is assigned with the swap permutation while it separates two tetrahedrons having the same label. Furthermore, Edge 2 separates two tetrahedrons belonging to a same connected component. As shown on FIG. 26, Edge 2 is thus added to the solution Γmin (represented by a cut of Edge 2 in FIG. 26). In other words, Edge 2 is rewarded.
FIGS. 27 and 28 illustrate the next step of the algorithm. Edge 1 is now visited. Edge 1 is identified as violating consistency of the labelling, as Edge 1 is assigned with the identity permutation while it separates two tetrahedrons having different labels. Furthermore, Edge 1 separates two tetrahedrons belonging to a same connected component. As shown on FIG. 28, Edge 1 is thus added to the solution Γmin (represented by a cut of Edge 1 in FIG. 28). In other words, Edge 1 is rewarded.
FIG. 29 illustrates the end of the Algorithm: all the edges have been visited. FIG. 30 shows the output, which consists in the rewarded edges 4, 2 and 1. FIGS. 31 and 32 show the corresponding output triangles 4, 2 and 1. The output triangles are shown as thick black lines on FIGS. 31 and 32, and form the determined second open triangulated surface.
An algorithm for performing the determining S40 of the first open triangulated surface having the one or more loops as boundary is now discussed. The algorithm will be discussed for computing, given a 1-cycle A in a Delaunay complex of a point cloud in 3, a 2-chain Γ0 in the Delaunay complex such that δΓ0=A. The Application of the Algorithm to the case where the Delaunay complex is the tetrahedral meshing (e.g. computed as S20) and where the 1-cycle is formed by the one or more loops provided at S30 implements the determining S40 of the first open triangulated surface.
Before further discussing this algorithm, Delaunay complex concepts are further discussed.
Delaunay Complex
The Delaunay complex Del(V) of a (finite) set of points V∈3 is the simplicial complex made of tetrahedra, triangles, edges and vertices of the Delaunay triangulation of the convex hull of the point set, dual of the Voronoi diagram of V in Euclidean space 3. It is known (because of the nerve Theorem applied to the collection of full dimensional Voronoi cells for example) that the Delaunay complex Del(V) is contractible. It has trivial 1-homology, which means that any 1-cycle in Del(V) is the boundary of some 2-chain in Del(V).
The task that the algorithm is to carry out can be reformulated as follows. A set of edges A of the Delaunay complex such that each vertex of the complex is shared by an even number of edges in A, for example 0 or 2, this example occurring in many practical applications. The algorithm looks for a set of triangles Γ0 such that any edge in A is shared by an odd number of triangles in Γ0(for example 1) and any edges not in A is shared by an even number of triangles in Γ0(for example 0 or 2). The fact that the Delaunay complex has trivial 1-homology means precisely that whatever A is chosen, a such Γ0 exists. FIG. 8 illustrates a solution Γ0 given a loop A in dimension 2.
Lower Link of a Vertex in the 3D Delaunay Complex
The link lkK(τ) of a simplex τ in a simplicial complex K is the simplicial complex made of all simplices σ∈K such that τ∪σ∈K and τ∩σ=∅.
Let Del(V) be the Delaunay complex of a set V of vertices in d such that no pair of vertices in V have same z coordinate. The lower link llkDel(V)(a) of a vertex a∈V is the simplicial complex made of all simplices in the link lkDel(V)(a) whose vertices have all their z coordinates smaller than the z coordinate of a.
FIG. 33 shows the link 332 of a vertex 330, and the lower link 334 of vertex 330, with an axis indicating the z-coordinate.
When Del(V) is three-dimensional, the link lkDel(V)(a) and lower link ll kDel(V)(a) of vertex a are two-dimensional simplicial complex: each tetrahedron of Del(V) containing a gives rise to a triangle in lkDel(V)(a), each triangle of Del(V) containing a gives rise to an edge in lkDel(V)(a) and each edge of Del(V) containing a gives rise to a vertex in lkDel(V)(a). These triangles or edges belong to llkDel(V)(a) if and only if all their vertices have z coordinates smaller than the z coordinate za of a.
FIG. 34 illustrates the lower link LL of a vertex a.
As known per se a topological space and in particular a simplicial complex is said contractible if it has the homotopy type of a point. Notably, a contractible simplicial complex K is connected, which means that any pair of vertices in K can be connected by a path of edges in K. The algorithm implementing S40 integrates the fact that, in a Delaunay complex, the lower link of a vertex is either empty, either contractible. Specifically, the following lemma holds:
Lemma 3: Let Del(V) be the Delaunay complex of a set of vertices V in d. Let z be the dth coordinate of a point in d. Assume that no pair of vertices in V have same z. Let a∈V and denote by llkDel(V)(a) the lower link of a in Del(V). Then:

    
    
        the lower link llkDel(V)(a) is empty if and only if vertex a has minimal coordinate z in V,
        if the z coordinate of a is not minimal in V then llkDel(V)(a) is contractible.
    
    


Proof of Lemma 3:
Denote by za, the z coordinate of a. By definition of Delaunay triangulation and of lkDel(V)(a), there is a one to one correspondence between the vertices in l kDel(V)(a) and the (possibly unbounded) facets contributing to the boundary of the Voronoi cell of a.
By definition, a vertex v with z coordinate vz is in the lower link of a if and only if its Voronoi cell has a common boundary with the Voronoi cell of a and vz<za. It follows that the Voronoi cell of a is contained in the half space containing a and bounded by the plane bisector of a and v. It follows that a such vertex exists if and only if the vertical half-line starting at a and pointing toward negative z is not contained in the Voronoi cell of a. One sees that the vertical half-line starting at a and pointing toward negative z is contained in the Voronoi cell of a if and only if a has minimal z in V and the first statement is proven.
The lower envelope of the Voronoi cell of a is the union of the facets dual to a vertex in the lower link of a. When this lower envelope is not empty, its projection on the horizontal plane is a homeomorphism with a convex two dimensional polytope. This lower envelope is therefore contractible. Since the lower link of v is the nerve of the set of facets in the lower envelope of the Voronoi cell the second statement in the lemma follows then from the nerve theorem.
This proves lemma 3.
The algorithm for computing a 2-chain for a given boundary in the three-dimensional Delaunay complex, implementing S40, is now discussed.
The algorithm is described by the following pseudo-code:










Algorithm 2: Finding a set of triangles for a given boundary















Inputs: Del(V) a Delaunay complex and A0 a set of edges in Del(V) with zero


boundary


Output: Γ0 a set of triangles in Del(V) such that ∂Γ0 = A0


Γ0 ← ∅


A ← A0


while A ≠ ∅ do


 α ← GetHighestVertex(A)


 LL ← GetLowerLink(α, Del(V ))


 Vα ← GetAdjacentVertices(α, A)


 for v ∈ Vα do


   A ← A + α V v


 End


 E ← GetEdgesConnecting(Vα, LL)


 for e ∈ E do


  A ← A + e


  Γ0 ← Γ0 + α V e


 End


End









In other words, given a 2-cycle A0, Algorithm 2 computes a 2-chain Γ0 such that δΓ0=A0. Zero chains or cycles are denoted by the set theoretic expression “∅” instead of the algebraic “0” because the practical implementation manipulates sets rather than vectors. However, the addition modulo 2 is denoted by “+” to avoid the somewhat heavy disjoint union notation. For example the algebraic expression: A←A+e stands for the set theoretic expression: A←(A∪{e})\(A∩{e}).
Principles and Correctness of Algorithm 2
Principles and correctness of algorithm 2 are now discussed with reference to FIGS. 35 to 37, which illustrate the algorithm. Γ0 is initialized as the empty set and A is initialized as A0. If A is empty, the algorithm returns. If not, the procedure GetHighestVertex(A) returns a, the highest vertex in A, which is the one with the maximal z coordinate.
Since A is a cycle, its boundary is zero by definition. As illustrated on FIG. 35, It follows that an even number of edges of A connects a with a set Va of vertices in the lower link llkDel(V)(a) of a in Del(V) returned by the procedure GetAdjacentVertices(a, A).
Since a is the highest vertex in V, the vertices in Va are below a and connected to a by an edge: it follows that Va is a subset of vertex of the lower link ll kDel(V)(a). This set is not empty and, since A is a cycle, it has even cardinality. The procedure GetLowerLink(a, Del(V)) returns the 1-skeleton LL of the lower link of a in Del(V), in other words the graph whose vertex and edges are vertex and edges of the lower link, as illustrated on FIG. 35.
The main step of algorithm 2 consists then in replacing this even number of edges by edges connecting a to vertices in Va by paths E=GetEdgesConnecting(Va, LL) (as shown in FIG. 36) in llkDel(V)(a) connecting pairs of vertices in Va and adding, for each edge e in these paths, the corresponding triangle a∨e in Γ0 (represented as hatched in FIG. 37).
FIG. 37 shows the updated A cycle after the main step. After each step of the algorithm, the following property is preserved:

∂Γ0=A0+A  (2)

Indeed, during the step, the following 2-chain is added to Γ0:




  
    
      
        
          ∑
          
            e
            ∈
            E
          
        
        ⁢
        
          a
          ⋁
          
            e
            .
          
        
      
    
    
      
        (
        3
        )
      
    
  




The boundary of (3) can be evaluated as:




  
    ∂
    
      (
      
        
          ∑
          
            e
            ∈
            E
          
        
        ⁢
        
          a
          ⋁
          e
        
      
      )
    
  
  =
  
    
      
        ∑
        
          e
          ∈
          E
        
      
      ⁢
      
        ∂
        
          (
          
            a
            ⋁
            e
          
          )
        
      
    
    =
    
      
        
          
            ∑
            
              e
              ∈
              E
            
          
          ⁢
          e
        
        +
        
          a
          ⋁
          
            ∂
            e
          
        
      
      =
      
        E
        +
        
          a
          ⋁
          
            
              ∂
              E
            
            .
          
        
      
    
  




Since by definition of E=GetEdgesConnecting(Va, LL) one has ∂E=Va, and E=Σe∈Ee, one gets:




  
    
      
        
          ∂
          
            (
            
              
                ∑
                
                  e
                  ∈
                  E
                
              
              ⁢
              
                a
                ⋁
                e
              
            
            )
          
        
        =
        
          
            
              
                ∂
                a
              
              ⋁
              
                
                  ∑
                  
                    e
                    ∈
                    E
                  
                
                ⁢
                e
              
            
            +
            
              a
              ⋁
              
                ∂
                
                  
                    ∑
                    
                      e
                      ∈
                      E
                    
                  
                  ⁢
                  e
                
              
            
          
          =
          
            
              E
              +
              
                a
                ⋁
                
                  ∂
                  E
                
              
            
            =
            
              E
              +
              
                α
                ⋁
                
                  V
                  α
                
              
            
          
        
      
    
    
      
        (
        4
        )
      
    
  




Since the right hand side of (4) is precisely the chain added to A during the step, (2) is proven. Since, from (2), A is initialized to 0 and is updated by the boundary of (3). A remains a cycle at each step.
As long as A is not empty, it must contain at least 2 vertices. Therefore its highest vertex a cannot be the lowest vertex in Del(V) and Lemma 3 asserts then that its lower link LL is non-empty and contractible, the precondition for the procedure GetEdgesConnecting(Va, LL).
Since, after each step, the z coordinate of the highest vertex in A decreases, the algorithm must terminate, with A=∅ and (2) gives then δΓ0=A0 as required.
Procedure GetHighestVertex(A)
This one requires to maintain an ordered map on the evolving set of vertices of the edges in A. If n is the size of Del(V), since each vertex of Del(V) can only be inserted once, the total cost of all the call to the procedure is O(n log n).
Procedure GetLowerLink(a, Del(V))
Procedure GetLowerLink(a, Del(V)) returns the 1-skeleton LL of the lower link of a in Del(V), in other words the graph whose vertex and edges are vertex and edges of the lower link, as illustrated on FIG. 35. Since no two vertex of Del(V) have same z coordinates, one can define the following total order on edges in Del(V). Each edge in Del(V) can be represented by the ordered pair of vertex (v1, v2) such that z(v1)>z(v2). Then one can define the following total order on the edges of Del(V):



  
    
      
        (
        
          
            v
            1
          
          ,
          
            v
            2
          
        
        )
      
      ≤
      
        (
        
          
            v
            1
            ′
          
          ,
          
            v
            2
            ′
          
        
        )
      
    
    ⁢
    
      ⇔
      def
    
    ⁢
    
      
        z
        ⁡
        
          (
          
            v
            1
          
          )
        
      
      >
      
        z
        ⁡
        
          (
          
            v
            1
            ′
          
          )
        
      
    
  




  
    
      or
      ⁢
      
        
      
      ⁢
      
        v
        1
      
    
    =
    
      
        
          v
          1
          ′
        
        ⁢
        
          
        
        ⁢
        and
        ⁢
        
          
        
        ⁢
        
          z
          ⁡
          
            (
            
              v
              2
            
            )
          
        
      
      ≥
      
        
          z
          ⁡
          
            (
            
              v
              2
              ′
            
            )
          
        
        .
      
    
  



In other words, (v1, v2)≤(v′1, v′2) means that either v1 is strictly higher than v′1, either v1=v′1 and v2 is strictly higher than v′2. Sorting all edges along this order (or, equivalently, inserting them in an ordered set data structure) costs O(n log n) where n is the size of Del(V). Observe that the set of vertices of the lower link llkDel(V)(a) of a vertex a is in one-to-one correspondence with the set of ordered pairs whose first vertex is a. Theses pairs in the form (a, .) are contiguous in the ordered set.
Similarly, each triangle in Del(V) can be represented by the ordered triple of vertex (v1, v2, v3) such that z(v1)>z(v2)>z(v3) and one can define the following total order on the triangles of Del(V):



  
    
      
        
          
            (
            
              
                v
                1
              
              ,
              
                v
                2
              
              ,
              
                v
                3
              
            
            )
          
          ≤
          
            (
            
              
                v
                1
                ′
              
              ,
              
                v
                2
                ′
              
              ,
              
                v
                3
                ′
              
            
            )
          
        
        ⁢
        
          ⇔
          def
        
        ⁢
        
          
            z
            ⁡
            
              (
              
                v
                1
              
              )
            
          
          >
          
            z
            ⁡
            
              (
              
                v
                1
                ′
              
              )
            
          
        
      
      ⁢
      
        

      
      ⁢
      
        
          or
          ⁢
          
            
          
          ⁢
          
            v
            1
          
        
        =
        
          
            
              v
              1
              ′
            
            ⁢
            
              
            
            ⁢
            and
            ⁢
            
              
            
            ⁢
            
              z
              ⁡
              
                (
                
                  v
                  2
                
                )
              
            
          
          >
          
            z
            ⁡
            
              (
              
                v
                2
                ′
              
              )
            
          
        
      
    
    )
  




  
    
      or
      ⁢
      
        
      
      ⁢
      
        v
        1
      
    
    =
    
      
        
          v
          1
          ′
        
        ⁢
        
          
        
        ⁢
        and
        ⁢
        
          
        
        ⁢
        
          v
          1
        
      
      =
      
        
          
            v
            1
            ′
          
          ⁢
          
            
          
          ⁢
          and
          ⁢
          
            
          
          ⁢
          
            z
            ⁡
            
              (
              
                v
                3
              
              )
            
          
        
        >
        
          
            z
            ⁡
            
              (
              
                v
                3
                ′
              
              )
            
          
          .
        
      
    
  



Again, sorting all triangles along this order (or, equivalently, inserting them in an ordered set data structure) costs O(n log n) where n is the size of Del(V). As previously, the set of edges of the lower link llkDel(V)(a) of a vertex a is in one-to-one correspondence with the set of ordered triples whose first vertex is a. These triples in the form (a, ., .) are contiguous in the ordered set of triples.
It can be observe that this construction shows that the set of all vertices of all lower links is in one-to-one correspondence with the edges of Del(V), and that the set of all edges of all lower links are in one-to-one correspondence with the triangles in Del(V), so that the sum of the sizes of 1-skeletons of all lower links is upper bonded by the size n of Del(V).
It follows that, after a preprocessing step that produces the ordered sets of edges and triangles with cost O(n log n), each call to the procedure GetLowerLink costs log(n) to find the entries in the ordered sets of edges and triangles, and the vertices and edges of llkDel (V)(a) follow then contiguously in the respective ordered sets whose sizes are upper bounded by n. The total cost of GetLowerLink is then O(n log n).
Procedure GetAdjacentVertices(a, A)
If A is given as a set of edges, i.e. a set of vertex pairs, then it is possible to associate to each vertex the set of its neighbors in time linear with respect to the size of A. since, along the updates of A in the algorithm, each edge may only be inserted once, maintaining theses neighbors relation costs at most O(n log n). Since GetAdjacentVertices(a, A) is called at most once for each vertex a∈V, and the sum of all numbers of neighbors of all vertices is twice the number of edges (each edge connect two vertices), the total cost of GetAdjacentVertices is bounded by O(n log n).
Procedure GetEdgesConnecting(Va, LL)
This procedure requires as a precondition that the number of vertices in Va is even and that the graph LL is connected.
Denote by m the size of the lower link LL. A possibility would be to compute a path for each pair of vertices, for example by Dijkstra Algorithm in O(m log m) or by a recursive exploration in O(m) (the paths do not need to be minimal) and then add (modulo 2) all these paths. However, even if this solution is likely to be efficient in practice, it would not give an optimal worst case complexity. Indeed, in a particular case where the lower link of the highest vertex a0 contains all the other vertices (m=n−1) and A connects a0 to 2 k vertices in LL we need to compute k paths in LL with a cost km, so that, if k=m/2=(n−1)/2 which gives a cost quadratic in n.
It is now discussed a O(m) algorithm for GetEdgesConnecting that preserves the global O(n log n) complexity for Algorithm 2.
In fact, procedure GetEdgesConnecting is similar to the global algorithm with one dimension less: giving a 0-cycle Va, find a 1-chain E such that ∂E=Va. However there is no immediate induction here. In order to apply a similar algorithm, one need first to define an order on vertices for which all lower links of vertices are contractible except one who is empty.
In order to get this order we first compute a spanning STLL tree of LL, which is possible since it is connected. Since STLL is connected, E can be found inside STLL. Computing STLL can be done in time O(m) using a recursive exploration of LL that assigns a parent field to each vertex. For that one can pick an arbitrary vertex as the root, mark it as “visited”, assigns its parent field to “NULL” and push it on a stack. Then, while the stack is not empty, one pops the top vertex v from it, and for all its neighbors that are not marked visited, one assigns the “parent” field to v, mark them as visited and push them on the stack. Along the same process, preserving the O(m) complexity, one can assign an integer rank to each vertex such that the root has rank 0 and each non root vertex has a rank higher than its parent. For example one can increment a counter each time a vertex is marked “visited” and assign the counter value as rank of the vertex.
The situation is then similar to that of Lemma 3 where the height z is replaced by the vertex rank. Indeed each vertices which is not the root has as lower link in STLL a single vertex: its unique parent node in STLL. This lower link is then contractible. The lower link of the root is empty. Starting from STLL it is now presented another algorithm, algorithm 3, where m′<m is the number of vertices in the tree T=STLL. Algorithm 3 finds a set of edges for a given boundary in a tree.
Algorithm 3 is described by the following pseudo-code










Algorithm 3: Finding a set of edges for a given boundary in a tree

















Inputs: T a tree and V0 an even set of vertices in T represented by a



membership array



Output: E a set of edges in T such that ∂E = V0



E ← ∅



V ← V0



for rank ← m′ − 1, 1 do



 α ← Vertex(rank)



 if α ∈ V then



  p ← GetParentInTree(α, T)



  V ← V + α + p



  E ← E + α V p



 End



End









Algorithm 3 is similar to Algorithm 2, but with one dimension less. The procedure GetHighestVertex(V) is not necessary here.
Indeed, the for loop, iterating from the vertex of highest rank, m′−1, to the vertex with rank 1 gives the required highest vertex that belongs to V, where the highness z is replaced by the rank of the vertex. The for loop ends at rank 1, because, since at each step V contains an even number of vertices and Vertex(rank) is the highest vertex in V, this highest vertex cannot be Vertex(0).
If an array of size m contains all vertices indexed by their rank, each call to the procedure Vertex(rank) costs O(1). If the evolving set of vertex V is represented by an array of booleans of size m, where entry k indicates the membership to V of the vertex with rank k, the membership predicate a∈V costs O(1). When V is updated, updating this membership array can be done also in time O(1). It follows that each line in the algorithm costs O(1). For this reason, the cost of Algorithm 3 is O(m′)=O(m) instead of O(m log(m)). The proof of correctness is similar to the proof of correctness of Algorithm 2: it is based on the fact that the following property is preserved along the algorithm:

∂E=V0+V  (5)

Overall, the following lemma is proved:
Lemma 4: Given a Delaunay complex Del(V) of size n and an 1-cycle (a set of edges with zero boundary) A0 in Del(V), Algorithm 2 computes Γ0 a 2-chain (a set of triangles) in Del(V) such that ∂Γ0=A0 in time O(n log n).
As previously explained, algorithms 1 and 2 may implement steps S40 and S50 of the method. In this case, the lexicographic order is based on a total order on the triangles, i.e. the triangle order, which is now further discussed.
Simplicial Ordering
Denote by RB(σ) the radius of the smallest enclosing ball and RC(σ) the radius of the circumcircle of a 2-simplex σ. A total order can be defined on 2-simplices as follows:




  
    
      σ
      1
    
    ≤
    
      σ
      2
    
  
  ⇔
  
    {
    
      
        
          
            
              
                R
                B
              
              ⁡
              
                (
                
                  σ
                  1
                
                )
              
            
            <
            
              
                R
                B
              
              ⁡
              
                (
                
                  σ
                  2
                
                )
              
            
          
        
      
      
        
          
            
              or
              ⁢
              
                
              
              ⁢
              
                
                  R
                  B
                
                ⁡
                
                  (
                  
                    σ
                    1
                  
                  )
                
              
            
            =
            
              
                
                  
                    R
                    B
                  
                  ⁡
                  
                    (
                    
                      σ
                      2
                    
                    )
                  
                
                ⁢
                
                  
                
                ⁢
                and
                ⁢
                
                  
                
                ⁢
                
                  
                    R
                    C
                  
                  ⁡
                  
                    (
                    
                      σ
                      1
                    
                    )
                  
                
              
              >
              
                
                  R
                  C
                
                ⁡
                
                  (
                  
                    σ
                    2
                  
                  )
                
              
            
          
        
      
    
  




Under generic condition on the position of points, it can be shown that this order is total. The lexicographic order ⊏lex is induced by this order on simplices. The following proposition can be proven and shows a strong link between the simplex ordering and the 2D Delaunay triangulation:
Proposition 2: Let P=P1, . . . , PN⊂2 with N≥3 be in general position and let KP be any 2-dimensional complex containing the Delaunay triangulation of P. Denote by βP∈C1(KP) the 1-chain made of edges belonging to the boundary of convex hull (P). If Γmin=min⊏lex{Γ∈C2(KP), ∂Γ=βP}, the simplicial complex |Γmin| support of Γmin is the Delaunay triangulation of P.
Examples of applications of the method where the previously-discussed implementation has been used are now discussed.
A first application of the method where the previously-discussed implementation has been used is now discussed, with reference to FIGS. 38 to 41.
This first application allows to mesh a partial acquisition, i.e. to determine an open triangulated surface representing a skin of a portion of a structure of a real scene where the real-scene is partially represented by a point cloud resulting from a partial acquisition, e.g. featuring holes. The first application lies in contexts where physical constraints in real-world scenes (e.g. occlusions and/or optical properties of surfaces) can lead to partial and incomplete 3D acquisitions. In these contexts, it can be challenging to offer an accurate and hole-free mesh reconstruction. By taking as input one or more 3D paths (i.e. the loops) which define the boundary of surface to reconstruct, the method guarantees hole-free meshes and offers high quality reconstructions, even for noisy acquisitions. In this first application, the one or more loops are defined by a user as previously discussed.
FIGS. 38 to 40 illustrate an example of the first application. In the example shown in these figures, the real scene is a building scene, comprising a cathedral structure. The 3D point cloud represents partially the structure of the cathedral. It is to be understood that the cathedral is an example, and that the first application also applies to any other building scene. The 3D point cloud shown in FIG. 38 comprises 943K points.
As shown on FIG. 38, the user interactively picks an ordered list of points that roughly defines the boundary of the desired surface. The list user-picked points are represented by large bullet points on FIG. 38. The boundary might then be oversampled, such that all edges on the boundary are present in the 3D triangulation of points. FIG. 39 shows the oversampled boundary from the user-picked list of points. The method then efficiently meshes the point cloud under the imposed boundary, i.e. determines an open triangulated surface forming the skin of a portion of the cathedral (i.e. a delimitation between the walls of the cathedral and the air outside and inside the walls. FIG. 40 shows the determined skin, obtained in 18 seconds.
FIG. 41 shows two other examples of open triangulated surfaces determined at step S50 by the method under imposed boundaries.
A second application of the method where the previously-discussed implementation has been used is now discussed, with reference to FIG. 42. This second application lies in the context of large scene meshing, as well as parallelizing and updating large scene meshes. Modern acquisition techniques can generate precise and copious amount of measurements. As the perimeter of acquisition gets larger, the storage capacity—RAM or disk—required to hold all measurements at the same time can become a limiting factor to meshing these large scenes. For example, a standard or cheap computer is limited by a 16 Gigabytes memory, which is may be too small for point clouds having more than 10 M point.
The method circumvents these difficulties by using spatial tiling to divide acquisitions into smaller chunks. Furthermore, the method guarantees that the junction between two meshes on neighboring tiles is common. Indeed, the method allows specify the cycle bounding the resulting open triangulated surface. In other words, the one or more loops provided at step S30 (e.g. by a user or automatically, as previously discussed) allow to divide the scene in smaller chunks having watertight common junctions.
Furthermore, local mesh edits can be performed efficiently, by defining the boundary of the region affected by changes and recomputing the open triangulated surface inside the affected region. The rest of the open triangulated surface does not require to be recomputed and the junction with the affected region will correspond exactly with the rest of the open triangulated surface.
FIG. 42 illustrate the second application. FIG. 42 shows a large point cloud representing a terrain, meshed into two parts thanks to the definition of boundaries (i.e. loops). The loops are represented by bullet points in FIG. 42. In other words, an open triangulated surface is determined at step S50 for each region/parcel of the terrain defined as having a given loop as boundary. Imposing the boundary by defining the loops creates a common junction between the two meshes shown on FIG. 42.
The method is computer-implemented. This means that steps (or substantially all the steps) of the method are executed by at least one computer, or any system alike. Thus, steps of the method are performed by the computer, possibly fully automatically, or, semi-automatically. In examples, the triggering of at least some of the steps of the method may be performed through user-computer interaction. The level of user-computer interaction required may depend on the level of automatism foreseen and put in balance with the need to implement user's wishes. In examples, this level may be user-defined and/or pre-defined.
A typical example of computer-implementation of a method is to perform the method with a system adapted for this purpose. The system may comprise a processor coupled to a memory and a graphical user interface (GUI), the memory having recorded thereon a computer program comprising instructions for performing the method. The memory may also store a database. The memory is any hardware adapted for such storage, possibly comprising several physical distinct parts (e.g. one for the program, and possibly one for the database).
FIG. 43 shows an example of the system, wherein the system is a client computer system, e.g. a workstation of a user.
The client computer of the example comprises a central processing unit (CPU) 1010 connected to an internal communication BUS 1000, a random access memory (RAM) 1070 also connected to the BUS. The client computer is further provided with a graphical processing unit (GPU) 1110 which is associated with a video random access memory 1100 connected to the BUS. Video RAM 1100 is also known in the art as frame buffer. A mass storage device controller 1020 manages accesses to a mass memory device, such as hard drive 1030. Mass memory devices suitable for tangibly embodying computer program instructions and data include all forms of nonvolatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks 1040. Any of the foregoing may be supplemented by, or incorporated in, specially designed ASICs (application-specific integrated circuits). A network adapter 1050 manages accesses to a network 1060. The client computer may also include a haptic device 1090 such as cursor control device, a keyboard or the like. A cursor control device is used in the client computer to permit the user to selectively position a cursor at any desired location on display 1080. In addition, the cursor control device allows the user to select various commands, and input control signals. The cursor control device includes a number of signal generation devices for input control signals to system. Typically, a cursor control device may be a mouse, the button of the mouse being used to generate the signals. Alternatively or additionally, the client computer system may comprise a sensitive pad, and/or a sensitive screen.
The computer program may comprise instructions executable by a computer, the instructions comprising means for causing the above system to perform the method. The program may be recordable on any data storage medium, including the memory of the system. The program may for example be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The program may be implemented as an apparatus, for example a product tangibly embodied in a machine-readable storage device for execution by a programmable processor. Method steps may be performed by a programmable processor executing a program of instructions to perform functions of the method by operating on input data and generating output. The processor may thus be programmable and coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. The application program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired. In any case, the language may be a compiled or interpreted language. The program may be a full installation program or an update program. Application of the program on the system results in any case in instructions for performing the method.

## Claims

1. A computer-implemented method for 3D reconstruction of a structure of a real scene, the method comprising:
obtaining a first open triangulated surface, the first open triangulated surface being a set of triangles of a tetrahedral meshing of a 3D point cloud representing at least a part of a structure; and
determining a second open triangulated surface representing a skin of a portion of the structure, the determining exploring candidate open triangulated surfaces each being a set of triangles of the tetrahedral meshing and the determining penalizing a high rank of the candidate open triangulated surfaces according to a lexicographic order, the lexicographic order being based on a triangle order and the lexicographic order ordering a first candidate open triangulated surface having first triangles which are ordered according to a decreasing rank of the triangle order, relative to a second candidate open triangulated surface having second triangles which are ordered according to a decreasing rank of the triangle order, the triangle order penalizing a triangle size, the determined second open triangulated surface violating consistency of a labelling of the tetrahedral meshing with two given labels, a triangle respecting consistency of the labelling when the triangle belongs to the first open triangulated surface and separates two tetrahedrons having different labels, or when the triangle does not belong to the first open triangulated surface and separates two tetrahedrons having a same label,
wherein the tetrahedral meshing presents the following properties:
a union of the tetrahedrons of the tetrahedral meshing forms a convex envelop of the points of the 3D point cloud; and
the intersection between any first tetrahedron of the tetrahedral meshing and any second tetrahedron of the tetrahedral meshing intersecting the first tetrahedron is a vertex of the first tetrahedron, an edge of the first tetrahedron, or a face of the first tetrahedron.

2. The computer-implemented method of claim 1, wherein the triangle order penalizes, for a respective triangle, a high value of a radius of the smallest enclosing circle.

3. The computer-implemented method of claim 2, wherein the triangle order further penalizes, for a first triangle and a second triangle having a same smallest enclosing circle, a small value of a radius of a circumscribed circle.

4. The computer-implemented method of claim 1, wherein the tetrahedral meshing is a regular triangulation.

5. The computer-implemented method of claim 1, wherein the exploring and the penalizing comprise:
visiting triangles of the tetrahedral meshing according to a decreasing rank of the triangle order; and
discarding visited triangles having a high rank of the triangle order as long as consistency of the labelling can be preserved.

6. The computer-implemented method of claim 5, wherein the discarding comprises, for each visited triangle, when the triangle violates consistency of the labelling, either rewarding the triangle, either adapting the labelling to respect consistency.

7. The computer-implemented method of claim 6, wherein the discarding further comprises, for each visited triangle:
when the triangle separates two tetrahedrons that are in a same connected component and the triangle violates consistency of the labelling, rewarding the triangle;
when the triangle separates two tetrahedrons that are in different connected components:
when the triangle violates consistency of the labelling, switching the label of one of the connected components and merging the connected components, and
when the triangle respects consistency of the labelling, merging the connected components.

8. The computer-implemented method of claim 1, wherein the obtaining of the first open triangulated surface comprises:
obtaining one or more loops in the tetrahedral meshing; and
determining an open triangulated surface in the tetrahedral meshing having the one or more loops as boundary.

9. The computer-implemented method of claim 1, wherein the structure comprises at least one corner structure.

10. The computer-implemented method of claim 1, wherein the 3D point cloud stems from photogrammetry, laser-scan, lidar measurements, RGB-D measurements and/or medical or industrial tomography or the 3D point cloud represents a portion of a closed shape, and/or a ratio between a number of points of the 3D point cloud and a memory size of the computer is larger than a predefined threshold.

11. A non-transitory computer readable storage medium having recorded thereon a computer program comprising instructions for performing a method for 3D reconstruction of a structure of a real scene, the method comprising:
obtaining a first open triangulated surface, the first open triangulated surface being a set of triangles of a tetrahedral meshing of a 3D point cloud representing at least a part of a structure; and
determining a second open triangulated surface representing a skin of a portion of the structure, the determining exploring candidate open triangulated surfaces each being a set of triangles of the tetrahedral meshing and the determining penalizing a high rank of the candidate open triangulated surfaces according to a lexicographic order, the lexicographic order being based on a triangle order and the lexicographic order ordering a first candidate open triangulated surface having first triangles which are ordered according to a decreasing rank of the triangle order, relative to a second candidate open triangulated surface having second triangles which are ordered according to a decreasing rank of the triangle order, the triangle order penalizing a triangle size, the determined second open triangulated surface violating consistency of a labelling of the tetrahedral meshing with two given labels, a triangle respecting consistency of the labelling when the triangle belongs to the first open triangulated surface and separates two tetrahedrons having different labels, or when the triangle does not belong to the first open triangulated surface and separates two tetrahedrons having a same label,
wherein the tetrahedral meshing presents the following properties:
a union of the tetrahedrons of the tetrahedral meshing forms a convex envelop of the points of the 3D point cloud; and
the intersection between any first tetrahedron of the tetrahedral meshing and any second tetrahedron of the tetrahedral meshing intersecting the first tetrahedron is a vertex of the first tetrahedron, an edge of the first tetrahedron, or a face of the first tetrahedron.

12. The non-transitory computer readable storage medium of claim 11, wherein the triangle order penalizes, for a respective triangle, a high value of a radius of the smallest enclosing circle.

13. The non-transitory computer readable storage medium of claim 12, wherein the triangle order further penalizes, for a first triangle and a second triangle having a same smallest enclosing circle, a small value of a radius of a circumscribed circle.

14. The non-transitory computer readable storage medium of claim 11, wherein the tetrahedral meshing is a regular triangulation.

15. A computer comprising:
a processor coupled to a memory, the memory having recorded thereon a computer program comprising instructions for 3D reconstruction of a structure of a real scene that when executed by the processor causes the processor to be configured to:
obtain a first open triangulated surface, the first open triangulated surface being a set of triangles of a tetrahedral meshing of a 3D point cloud representing at least a part of a structure, and
determine a second open triangulated surface representing a skin of a portion of the structure, the determination exploring candidate open triangulated surfaces each being a set of triangles of the tetrahedral meshing and the determining penalizing a high rank of the candidate open triangulated surfaces according to a lexicographic order, the lexicographic order being based on a triangle order and the lexicographic order ordering a first candidate open triangulated surface having first triangles which are ordered according to a decreasing rank of the triangle order, relative to a second candidate open triangulated surface having second triangles which are ordered according to a decreasing rank of the triangle order, the triangle order penalizing a triangle size, the determined second open triangulated surface violating consistency of a labelling of the tetrahedral meshing with two given labels, a triangle respecting consistency of the labelling when the triangle belongs to the first open triangulated surface and separates two tetrahedrons having different labels, or when the triangle does not belong to the first open triangulated surface and separates two tetrahedrons having a same label,
wherein the tetrahedral meshing presents the following properties:
a union of the tetrahedrons of the tetrahedral meshing forms a convex envelop of the points of the 3D point cloud; and
the intersection between any first tetrahedron of the tetrahedral meshing and any second tetrahedron of the tetrahedral meshing intersecting the first tetrahedron is a vertex of the first tetrahedron, an edge of the first tetrahedron, or a face of the first tetrahedron.

16. The computer of claim 15, wherein the triangle order penalizes, for a respective triangle, a high value of a radius of the smallest enclosing circle.

17. The computer of claim 16, wherein the triangle order further penalizes, for a first triangle and a second triangle having a same smallest enclosing circle, a small value of a radius of circumscribed circle.