Encoding process in a graph and encoding material object

The graphic code generation process addresses the challenges of manufacturing robust and unique codes by encoding messages into graph edges, enabling cost-effective and versatile integration with objects, and facilitating efficient decoding.

FR3153442A1Pending Publication Date: 2025-03-28INRIA INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
FR2023010023
Authority / Receiving Office
FR · FR
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-09-21
Publication Date
2025-03-28

AI Technical Summary

Technical Problem

Existing barcode and QR-code technologies face challenges in manufacturing robust, cost-effective, and unique codes that are physically integrated with objects, especially in complex materials and using versatile manufacturing techniques like additive manufacturing.

Method used

A graphic code generation process based on selecting edges in a graph, where a message is encoded by choosing a root node and adding edges to connect new nodes, forming a tree that can be physically manufactured into an object using various materials and techniques.

Benefits of technology

This method allows for the simple and robust physical manufacture of codes integrated with objects, along with a straightforward decoding process using image capture algorithms, enabling cost-effective and unique code production.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Graph Encoding Method and Encoding Material Object. The invention relates to a method for encoding a message in a graph and a material object for encoding the message, comprising: - a choice (E0) of a root for a tree in the graph, - then, the message being considered as a succession of information units, a succession of additions to said tree, each time of a new edge of the graph connecting the tree to a new node, the new node being the object of a choice (E1), called the first choice, from among the nodes of the graph called candidate nodes which, at the time of the addition, are outside the tree and neighbors of the tree because they are only one edge away from the tree, these single edges constituting candidate edges, the new edge being the object of a choice (E2), called the second choice, from among the candidate edges, one of the choices encoding one or more successive information units of the succession of information units. Abbreviated figure: Figure 1A
Need to check novelty before this filing date? Find Prior Art

Description

Title of the invention: Method of encoding in a graph and encoding material object Technical field

[0001] The invention falls within the field of computer-analyzable graphic codes.

[0002] Barcodes and QR codes (quick response codes) are well known. These codes are based on the identification, by a computer optical reading system, of two contrasting aspects. These can form a sequence in one-dimensional barcodes, or can be, in QR codes in particular, interlaced in complex patterns. The contrast between two aspects allows simple decoding, the 'whites' and 'blacks' representing a binary code. Instead of white and black, other colors can be used, provided there is sufficient contrast.

[0003] Some industrial and commercial applications require that codes be physically robust (resistant) and intrinsically linked to the object that is to carry the code, and therefore manufactured in the mass of the object or permanently fixed by any process. In many cases, it is also important that the codes be manufactured at low cost while being unique. It is desired to be able to manufacture them in various materials, such as metal or plastic, and by versatile and accessible techniques, such as molding, or recently, additive manufacturing - or three-dimensional printing.

[0004] The need to have contrasting aspects in complex spatial arrangements makes manufacturing tricky. Indeed, it becomes necessary to combine two materials positioned side by side with precise and small interlacings, which leads to complex production, and therefore high costs and robustness that is difficult to obtain. In filament additive manufacturing, when small sizes are targeted, the numerous stops and restarts of the deposition make the process difficult to control and repeat identically.

[0005] The invention relates in this context to a new form of codes, which allows not only simple and robust physical manufacturing with different manufacturing processes, but also simple and robust decoding via an image capture algorithm and computer analysis.

[0006] The invention therefore provides, from a message, the manufacture of a physical object, or material object, incorporating the code, which is put into circulation for the benefit of a receiver knowing a possible coding secret and capable of implementing the decoding method.

[0007] The invention therefore also relates to the process of decoding the message via an image capture and analysis algorithm by processor implemented on - for example - a smartphone. Definition of the invention and associated advantages

[0008] The method of generating the graphic code is based on a selection of edges in a graph. It is recalled that a graph is a set of vertices and edges between vertices of the graph.

[0009] It consists of a method of encoding a message or a secret phrase in a graph possibly using a pre-established secret, comprising

[0010] - a choice of a root for a tree in the graph,

[0011] - then, the message or the secret phrase being considered as a succession of information units (generally elementary units or bits), a succession of additions in said tree each time of a new edge of the graph connecting the tree to a new node, the new node first being the subject of a choice, called first choice, among the nodes of the graph called candidate nodes which, at the time of the addition, are external to the tree and neighbors of the tree because distant from the tree of a single edge, such single edges constituting candidate edges, the new edge then being the subject of a choice, called second choice, among the candidate edges, the succession of additions encoding, in the first or second choice, a successive information unit of, respectively the succession of information units of the secret phrase or the succession of information units of the message, the additions being further carried out, where appropriate, according to a rule taking into account the secrecy.

[0012] Using this method, a two-color or two-aspect graphic code is generated, one of the aspects of which is constructed from a single piece, and can therefore be handled in many very advantageous ways.

[0013] According to advantageous and optional characteristics - the first choice may be made by disfavoring for the purposes of said first choice neighboring nodes which have a lower number of different possibilities of connection to the tree by such a single edge than other neighboring nodes, including by excluding from the first choice neighboring nodes which have a number of possibilities of connection to the tree by a single edge which is less than the maximum in the group of candidate nodes; - additions can be made by considering a pseudorandom sequence of the secret (a secret pseudorandom sequence), which is progressively reviewed during the additions of the succession of additions; - the secret pseudorandom sequence can be used for both the first choice and the second choice; - the first and second choices can be carried out by considering an order predetermined order of nodes in the node graph - in particular, for the first choice, it is possible to simply follow the predetermined order of nodes; - the succession of additions can be continued after exhaustion of the succession of information units, until the graph is completely covered by the tree, by adding to the end of the message or secret phrase any type of value, including a constant value; - the graph can be a rectangular (or even square), triangular, hexagonal or radial plane grid, or can be a non-planar graph, developing in space, and thus constituting a network of points linked together in space, possibly with a cubic mesh; - In one embodiment, a message is encoded in the second choices, a secret phrase being further encoded in the first choices, this secret phrase providing additional protection to the encoding of the message in the graph; - the tree can be materialized by the manufacture of an object in metal or synthetic polymer, by additive synthesis or cutting or stamping of plate, the object being kept visible or conversely integrated hidden inside an object opaque to visible light. For the manufacture of the object, the tree is used to define manufacturing trajectories, or more generally a manufacturing plan, which is communicated to the manufacturing machine.

[0014] In one embodiment, a grid-type graph is used, the points of which are regularly spaced in a plane and form a generally regular square mesh grid, with edges between neighboring points only, in the two perpendicular dimensions. But a 3-dimensional graph can also be used.

[0015] The algorithm produces an edge selection such that up to all points of the graph are connected to the tree, and importantly the edge selection does not form any cycle.

[0016] The edge selection thus forms a spanning tree of the graph. The generation process includes choices to be made. Some of these choices are based on a secret necessary for encoding and decoding.

[0017] One of these choices is the starting point, commonly called the root, of the tree, which is a point on the graph. In one embodiment, the graph is a square grid and the root is one of the four corners of the grid, without it being trivial to determine which of these four corners constitutes the root.

[0018] Other choices are made during the generation of the graphic code. These choices allow the message to be encoded. These successive choices consist of connecting one point to another, therefore including one of the edges of the graph in the tree.

[0019] Thus, the invention also consists of a system for decrypting an encrypted message and provision of said message in its decrypted form.

[0020] The decryption and supply system comprises an object comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or volume and a computer program for extracting a message from an image of said object, by analyzing the choices of the edges of the object from a root of said object to successively discover information elements with which the decrypted message is formed. These discovered information elements are those of a message encoded by an encoding method according to the invention.

[0021] In one embodiment, the set of edges is planar.

[0022] In one embodiment, the set of edges being planar, or three-dimensional, the object comprises a second material, the second material being of a different shade from the solid material and occupying a space separating edges of the whole.

[0023] Depending on the embodiments, the object is visible to the eye (under exposure to visible light waves, possibly by transparency thanks to visible light intense enough to pass through a layer of solid matter which does not absorb it completely) the object is therefore exposed to visible light - or conversely is hidden inside an object opaque to visible light, in which case it can be examined by tomography. In all cases, its image will be analyzed by computer.

[0024] The invention also provides a system for verifying the authenticity of an item, characterized in that the system comprises a computer program for encoding a secret phrase in a graph and indicating whether the graph obtained is identical to an object carried by the item and comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or volume. List of figures

[0025] [Fig.lA] is a diagram of the algorithm used.

[0026] [Fig.lB] is an example of a spanning tree in a simple graph, according to an exemplary implementation of the invention.

[0027] [Fig.2] is an example of manufacturing a physical object, or material object, incorporating a code according to the invention.

[0028] Figures 3 and 4 are views of such a physical object.

[0029] Figures 5 and 6 are views of a variant of the physical object incorporating the invention.

[0030] [Fig.7] shows an example of application of the invention.

[0031] [Fig.8] shows another variant of the material object incorporating the invention.

[0032] Detailed description of an embodiment - existence of variants Encoding

[0033] Starting elements 1. The graph

[0034] The graph can be a square grid without diagonals, that is to say a square graph or equivalent, for which we consider that the neighbors of a node are its four neighbors along the sides of the elementary mesh, a square grid with diagonals that is to say a square graph or equivalent, for which we consider that the neighbors of a vertex are its four neighbors along the sides of the mesh and also the four nodes connected to two of the four previous neighbors, a hexagonal graph, or a triangular graph.

[0035] We thus have a graph, and we have chosen in this graph, a node which will serve as the root for the tree. We begin by including the root node in the tree S, which was previously empty.

[0036] The graph is denoted G and its M nodes are denoted ni with 0 < i < M. The nodes have positions P, on a network. Edges connect the nodes. An edge is denoted ei with 0 <i<E „ et chaque arête connecte une paire de nœuds. Il y a E arêtes dans le graphe. 1. La séquence pseudo-aléatoire

[0037] We obtain a pseudo-random sequence which constitutes an element of secrecy.

[0038] A seed to define this pseudo-random sequence encrypts, at the end of the process, the message. Changing the seed produces a different code for the same data, and knowledge of the seed is necessary to decode the message.

[0039] With a suitable pseudo-random sequence algorithm, such as those used in cryptography, it is virtually impossible to find the seed even knowing the code and the data due to the properties of robust pseudo-random sequences. The proposed method is therefore robust to attacks, and allows for example to protect the code data with a password, which is used as an encoding and decoding seed.

[0040] Some steps of the method thus use a pseudo-random sequence R. The sequence generates a series of random numbers from a seed. Obtaining the next number is noted r, R next(R)

[0041] This function returns the random integer r, and advances the sequence R to its next member. For the same seed, the sequence of 1s generated is always the same and therefore perfectly repeatable, in a deterministic manner. 1. The data to be encoded

[0042] The data to be encoded, called message, are defined as bytes in number D noted d, with 0 < i < D.

[0043] They are coded in the form of a single large integer N.

[0044] N = 1. Generating a tree

[0045] 4.1 General notions

[0046] [Fig.IA] The algorithm calculates a spanning tree, that is to say a connected graph without cycles which passes through all the nodes, without of course containing all the edges.

[0047] During a step E0, a special node, nroot, is designated as the root of the tree. This can be, for example, the lower left corner of the grid.

[0048] During the algorithm the tree is represented by the set of edges that compose it, and noted S. We note N(S) the nodes of the edges of the tree. The tree is covering if all the nodes of G are in N(S).

[0049] For a node c £ N(S) we define the possible edge choices to connect c to S as: 100501

[0051] The set is empty if node c cannot be connected to S.

[0052] We define the candidate nodes as

[0053] C(5) = |P(«)I >0}

[0054] Where JP(h) | is the number of elements in (n) .

[0055] C(S) is therefore the set of nodes which have at least one possible edge choice to be connected to the tree S.

[0056] 4.2 Iterations

[0057] As long as all the nodes of the graph are not in the tree S, the following series of steps are iteratively carried out, this series constituting a loop:

[0058] Step El includes the following actions:

[0059] We define, or redefine if it had been defined previously, the set C(S) as the set of nodes neighboring the nodes of the tree S as it exists during this occurrence of the loop, that is to say which can, using an edge of the grid, be connected to a node of the tree S

[0060] C(S) = {set of neighboring nodes of the tree S]

[0061] 4.2.1 Performance filter and choice of node to integrate (1st choice)

[0062] We use a Next Node function. The NextNode(C( S )) function chooses a node from C ( S ) •

[0063] To do this, we extract from C(S) the more restricted set of nodes that offer the most possibilities of connection to the tree S as it exists during the current occurrence of the loop. Typically, during construction, the largest number of connection possibilities in a grid is 2, which therefore leads, to constitute the extract of interest from C(S), to exclude the nodes of C(S) that have only one possibility of connection to the tree S.

[0064] Thus, the Select function eliminates nodes that offer a single choice, if they exist and if there are nodes offering more choices, to increase the encoding capacity by avoiding using nodes offering only a single choice, such nodes not allowing information to be encoded. This is a performance filter, from the encoding point of view.

[0065] The nodes offering the most possible connection choices are ordered in a set Tl using the positions on the grid. The Sort function thus orders the nodes according to their global number, i.e. nk will be in front of ni in Tl if k < j.

[0066] At the same time, we pseudo-randomly choose a node c in the extract of interest of C(S), using the previously defined pseudo-random sequence. We take the following pseudo-random number rl in the sequence R to choose a particular node among the nodes that have just been ordered:

[0067] Tl ^Tri(Select(C(S))) r\, nexl(R)

[0068] Returns T 1[ r 1 % |T 1| ] Next Node Function

[0069] Thus, one of the nodes selected in T is chosen using the pseudo-random function for the choice, by calculating the remainder of the Euclidean division (the modulo, noted %) of r by the number of TL This random choice acts as an encryption tool, the secret of which is the initial seed of R. However, in a variant, the choice is not random, and we simply take the first node in the order of the positions of the grid, using the global number.

[0070] The chosen node, in any case, is noted c.

[0071] Step E2 follows step E1 and includes the following elements.

[0072] 4.2.2 Choice of the edge or choice of the node of the tree which will be used to connect the new knot (2nd choice)

[0073] If there is more than one connection possibility (at least two edges available to connect c), which then makes it possible to encode information of at least one bit (an elementary unit of information), we choose one of the edges that can connect it to S, which amounts to choosing one of the nodes of the tree as it exists at this stage. We take the bits of the message to be encoded one after the other in order. If exactly two edges are available, we encode one bit of the message on the occasion of this occurrence of the loop whereas if more than two edges are possible, we always choose only one, but this choice in this favorable circumstance makes it possible to encode more than one bit of the message.

[0074] If there is only one possible edge, no bits are encoded.

[0075] It is the SelectEdge function, which will be described, which chooses an edge from P(c), thus encoding a piece of information (from N and therefore from the message) in this choice.

[0076] Again, we work on nodes sorted on the basis of their global number. This sorting is applied to the few nodes P(c) of the tree which are likely to define the edge with the node to be included and defines an ordered set T2. And in parallel, we take the next element r2 of the pseudorandom sequence and we extract the remainder k (that is to say the modulo, noted %) of the Euclidean division of N by the frequency of P(c) (typically 0 or 1 if the grid is square).

[0077] We then choose the node in the set T2 which is defined by the remainder of the Euclidean division (the modulo, noted %) of the sum r2+k by the number of T2.

[0078] T2 ^Tri(P(c)) k N% |P(c) | fZR^next(R)

[0079] Returns T2[( r2 + k) % jT2| ] SelectEdge Function

[0080] The calculation of k reveals the encoding, which depends on |P( c)| and therefore on the number of possible choices to link c to S. The use of the pseudo-random sequence R makes it possible to have no bias in the tree whatever N, in particular if N = 0, and as previously for the 1st choice, acts as an encryption tool during the 2nd choice which is thus carried out.

[0081] Alternatively, however, we do not use a pseudorandom sequence, and r2 is constant, for example equal to 0.

[0082] We include the chosen edge in the tree.

[0083] We move on to the next elementary unit of information (or next bit) of the number N, that is to say of the message, by replacing N by the quotient of N by the number of P(c).

[0084] We then move on to the next occurrence of the loop.

[0085] We therefore return to step EL

[0086] 4.3 End of coding

[0087] In general, the information to be coded is exhausted before all the nodes of the graph are included in the tree, and N becomes 0 at the end of one of the iterations, during the calculation of the quotient mentioned above. It is however advantageous to physically cover the entire graph, so that all the codes are similar, and it is not possible to guess the length of the encoded data.

[0088] We therefore continue the inclusion of the nodes, preferably using the pseudo-random sequence or with another secret element, or possibly without a secret element, until all the nodes are included in the tree, by performing occurrences of the loop until the nodes to be added are exhausted, and by coding any information, for example constant.

[0089] We then move on to step E3: the tree is finished.

[0090] [Fig.lB] We then interrupt the occurrences of the loop. The result of the algorithm is a spanning tree like the one shown in [Fig.lB], in the case of a graph which is a square plane grid 11 nodes by 11 nodes (i.e. 121 nodes). Manufacturing

[0091] [Fig.2] A material object is then made using the tree. A skeleton 10 has been determined in advance using the tree. This is a virtual curve with edges reproducing the tree in the dimensions that are planned for the object.

[0092] According to one embodiment, a body of the material object is constructed around the skeleton 10 by depositing, by additive manufacturing, a thick extruded wire of a first (solid) filling material 20 on each of the sides of the edges of the skeleton, as can be seen in [Fig. 2], starting from one side, running along the skeleton on this side, reaching one end of the skeleton around which the extruded thick wire is placed to bypass the end, and then following the second side. Thus, a cyclic trajectory going around the skeleton and having exactly a given thickness called the solidification thickness, is produced, producing a total thickness around the skeleton equal to twice the thickness of the extruded thick wire. This allows a constant and regular deposition, without interruptions. The dotted arrow in the figure shows the direction of deposition of the thick material. The deposited solid material remains in place permanently.At the corners in the shaft, corresponding to vertices between two edges, gaps may be present between the two thicknesses of the filler material 20 due to the curvature to be accommodated. These gaps are a consequence of the manufacturing method, and have no consequences on the decoding. In the embodiment that is presented, the thickness of the extruded thick wire is a quarter of the spacing between the parallel edges of the graph, such that there is between the filler material of two parallel edges included in the shaft a distance substantially equal to the width of the filler material of an edge (which is two widths of extruded wire).

[0093] [Fig.3] [Fig.3] shows in perspective a close-up view of the material object thus manufactured. It can be placed on a surface which has a different color from which it will be easily distinguished, for subsequent computer processing, during decoding.

[0094] [Fig.4] [Fig.4] always shows in perspective a complete view of such an object material, encoding up to 270 bits. It is specified that the surface on which it is placed can be the surface on which the additive manufacturing was carried out and to which it is bonded due to the manufacturing process, or another surface on which the material object was subsequently bonded, for example with a liquid glue that was applied between the two elements.

[0095] [Fig.5] [Fig.5] shows a variant in which the tree is dark in color and the spaces between the edges of the shaft were filled with a second filler material, which is clear, and which was deposited by extrusion of a thick wire also deposited in two parts, as was shown for the previous material deposited around the skeleton. The second filler material was deposited for example around the first filler material, along the free surfaces of the latter, namely its flanks. At the corners in the material filling the space surrounding the shaft, gaps may again be present between the two thicknesses of the second filler material due to the curvature to be accommodated (these gaps are especially visible in [Fig.6]).

[0096] [Fig.6] [Fig.6] shows another variation of the two-color embodiment of [Fig.5], in which the tree is light colored, which is the color of the first filler, and the space around it, filled with the second filler, is dark colored. A light color and a dark color in the case of observation by exposure to visible light can be replaced by the equivalent of a light shade and a dark shade in the case of observation by a computer using exposure to waves that are not light waves, especially in the case of examination of the object by tomography. Different solid materials give different reactions to the waves used, producing different shade equivalents on analysis.

[0097] [Fig.7] As shown in [Fig.7], the physical objects of Figures 2 to 6 can be manufactured on a first continuous layer, possibly printed by additive manufacturing, and then covered with another layer printed by additive manufacturing. This is made possible, as long as the dimensions chosen for the physical object are not too large in view of the additive manufacturing process (in particular the choice of material) by the load-bearing property of the physical object materializing the tree, since the tree runs along the entire surface and therefore constitutes a satisfactory support for overhanging material additions by additive manufacturing. Indeed, due to the fact that the codes densely cover an area of ​​a surface, generally flat, they offer load-bearing and therefore constitute a support allowing the reliable deposition of layers above, in particular for the case of deposition by extrusion - using a filament.

[0098] The material for translucent plastics offering the possibility of observing the shadow of the dark material by transmission and occultation of light, while forming a light and flat object.

[0099] It is also possible to print several levels of physical object, each encoding a code, on top of each other, due to this lift property.

[0100] In the version of figures 3 and 4, the code which is in one piece and whose sides have not been filled with a second filling material, forms a channel in into which a liquid element (a liquid metal, ink, powder, etc.) can be introduced or from which such a liquid element can be extracted by suction or blowing. This may be suitable for a casting operation.

[0101] Thus, the invention allows the production of the graphic code as a self-contained object in itself. The code or its complement being in one piece, it can be manufactured as an object, for example to be carried in a pocket of clothing or in a purse or handbag, and serving as a key, key ring, or badge holder.

[0102] The graphic codes generated according to the invention can be robustly manufactured in hardware because they are in one piece. The code can be manufactured from a single material and contrasted on any background, preferably plain, during decoding.

[0103] It is therefore possible to produce codes in the form of metal plates (solid or hollow, using water cutting, laser cutting or a stamping process.

[0104] The codes according to the invention can also be deposited by spraying paint onto a single-piece mask (stencil), since the pattern corresponds to a single hole in the mask.

[0105] The codes according to the invention can be produced by additive manufacturing, the small size of the codes allowing hundreds of them to be produced during a single production run of a selective laser sintering machine, for example. The manufacturing trajectories are obtained by contouring (rotating around) the covering shaft, which produces a single cycle, ideal for manufacturing.

[0106] The codes according to the invention can also be manufactured on additive manufacturing machines by filament extrusion (fused deposition), with ABS - acrylonitrile butadiene styrene - polylactic acid PLA or thermoplastic polyurethane TPU or any other type of compatible material. They can also be manufactured by stereolithography using a thermosetting resin.

[0107] The object can be manufactured using a filament additive manufacturing machine: manufacturing is very robust, fast and reliable, thanks to extrusion along a single trajectory. The 'spiral' mode (or 'vase' mode) is possible in this manufacturing mode.

[0108] The object can be manufactured using an SLS (selective laser sintering) additive manufacturing machine. The manufacture of a very large number of codes, all unique, is possible in a single production tank, greatly reducing the cost per code. On an SLA stereolithography additive manufacturing machine, manufacturing is also possible, robust and inexpensive. On a multi-material, multi-nozzle filament additive manufacturing machine, a bi-material code can be manufactured with one material for the code and another for its complementary material. On a fiber filament additive manufacturing machine, the code being composed of a single tra jectory, a fiber can be co-extruded along its length to give it increased strength.

[0109] In one embodiment, a double-sided code is printed, followed by a second code located above. By changing the material (filament) between the last layer of the first code and the first of the second, the two codes can have different colors, facilitating their decoding. Thanks to the lift property, both codes are printed with optimal quality.

[0110] In one embodiment, the codes are embedded on the surface of a part manufactured by 3D printing, for example on the lower part of the part which is in contact with the platen in a filament printing. The generation algorithm is inexpensive and can run on a simple microcontroller, an FPGA or a dedicated processor. The code can be generated directly in the manufacturing machine, by replacing the trajectories of the part in an area with those of the code. It is possible to mark the manufactured parts, in a unique and robust way. Thanks to the lift property the layers above the code are manufactured reliably.

[0111] In one embodiment, the code is integrated into the volume of an object and hidden from view, by taking advantage of a sufficiently large and supporting area. Decoding can then only be done destructively (cutting the part), or by an advanced optical process such as the use of the transparency of a material under strong lighting, the use of X-rays in a single plane, or even a CT-scan-computed tomography scanner technique aimed at a three-dimensional reconstruction. Temperature-sensitive materials can also make it possible to make the code visible even when it is integrated into the volume of an object, the vacuum or the air surrounding the tree having a lower thermal conductivity than such temperature-sensitive materials.

[0112] In one embodiment, the manufactured codes are sized for insertion. Their thickness is easily adjustable, and it is possible to create codes intended to be inserted and fixed on, or in, an object. This can be combined with additive manufacturing: for example, codes are pre-printed, delivered and inserted into the part being manufactured - an advantage over an extrusion process is that the code is naturally fused to the part being manufactured.

[0113] [Fig.8] The complementary trajectories, that is to say the part around the tree materializing the code, can also be easily produced, by extracting the part of the graph complementary to the tree and manufacturing it by three-dimensional printing on a support surface. [Fig.8] shows such an object. The branches are not necessarily all of the same piece, but they are held together by the continuous layer of material on which they are deposited, and, in the view shown, also by a printed peripheral frame.

[0114] The material object is then put into circulation, and obtained by a person who was not involved in its manufacture. Decoding

[0115] The information contained in the material object is then decoded.

[0116] To do this, we capture an image, generally a digital image, and this is analyzed by a processor running an algorithm. The algorithm searches the image for the longest closed contour, which is, with some exceptions, the contour of the code itself, given its particular shape: it is extremely unlikely that a natural image would contain a contour of such length.

[0117] Furthermore, if we know the overall shape of the domain of G (for example, a rectangle or a disk), it is possible to use the convex hull of the contour to define a homography and straighten the image of the code. In more detail, from the contour, the decoding method exploits the fact that the orientation of the edges follows that of the graph used for encoding. In the case of a grid, this allows the contour to be straightened by homography in the image, by finding the shape of the grid. We then find the rotation that positions the root n_root in the right corner of the grid, if it is rectangular. The edges of the contour are straightened according to their most probable direction, knowledge of the grid and its connectivity allowing a robust approach to acquisition noise.

[0118] The tree is the skeleton of the straightened contour, and it is reconstructed by a thinning algorithm. Once the straightening is done, it is possible to reconstruct the spanning tree that corresponds to the code. This reconstructed spanning tree is denoted A. A specialized variant for the case of a 2D graph in a regular four-neighbor grid consists of reconstructing the tree from a grid positioned on the straightened image, determining from the average of the pixel values ​​in each box whether it corresponds to the thickened tree or to the void surrounding it.

[0119] Once the tree is reconstructed, the decoding process is restarted. It starts at the root, which is known to the person performing the decoding, and is similar to the coding algorithm, except that at each step, instead of making a choice based on the message, which is not available, the choice made during encoding is observed on the structure, allowing the bits of the message to be progressively decoded.

[0120] Thus, we reconstruct N, the integer representing the message, from the reconstructed spanning tree A. The algorithm is the same as the encoder except that instead of choosing an edge we observe the choice in the reconstructed spanning tree A. We therefore obtain the value of k, with which we update N

[0121] ( (V* |P(c) [ ) + ((^-r) % |P(c) | ) taking the positive modulo.

[0122] In addition, the division of N at each iteration and the test N = 0 are removed, since they do not make sense when decoding.

[0123] At any time, it is possible to verify that the tree S being constructed is indeed a strict subset of A, the tree observed in the image. If this is not the case, an error occurred during the extraction of A from the image, or the elements provided as secrets by the user for decoding are incorrect.

[0124] Alternative in which the elementary units of information are encoded during the first choice Coding

[0125] In another embodiment, the data to be encoded, or passphrase, is presented in the form of a single large integer M.

[0126] We again define C(S) = {set of neighboring nodes of the tree S] and we use the function nodeSuivant which chooses a node from C( S) • To do this we extract again from C(S), with a function Select the set of nodes which offer the most possibilities of connection to the tree S as it exists during the current occurrence of the loop. The nodes offering the most possible choices of connection are ordered in a set T' 1 using the positions on the grid.

[0127] A function Selectionnenoeud chooses a node from the nodes extracted above from C(S) by encoding a piece of information (from M) in this choice. It performs this encoding taking into account, unless choosing to do without it, the secret offered by the pseudorandom sequence R.

[0128] T'1 ^Tri(Select(C(S))) rd, R next^k - M

[0129] Returns T'l[( r 1 + k') % |T1| ]

[0130] NodeSelection function

[0131] The chosen node is noted c'.

[0132] We move on to the next elementary unit of information (or next bit) of the number M, by replacing M by the quotient of M by the number of T' 1M M |7"1|

[0133] A chosen edge is included in the tree to connect the chosen node. The chosen edge can be chosen by encoding or not a part of the secret phrase, and by taking into account or not the pseudorandom sequence.

[0134] We then move on to the next occurrence of the loop. Use

[0135] This method, when used alone, makes it possible to know whether the material object which is presented during a control situation is an authentic object, which was manufactured by a person knowing the secret phrase M. This can be used to authenticate a good, in particular a valuable good, which bears the code, the material object produced by three-dimensional printing having been affixed to, incorporated into or manufactured in an inseparable manner with the good.

[0136] To verify that the object presented is thus authentic, it is compared to an object generated using the same method, from the same secret phrase M known by the person wishing to know if the object is authentic.

[0137] Alternative in which elementary units of information of a secret phrase are encoded during the first choice and elementary units of information of a message are encoded during the second choice,

[0138] Combined with a message N encoded in the second choices, encoding a secret phrase in the first choices makes it possible to protect the decoding of N by the need to provide a secret phrase M at the time of decoding, acting as a password. The message N and the secret phrase M are distinct elements, and the message is encoded, progressively, during the second choices, while the secret phrase is encoded, progressively also, in the first choices. The secret phrase and the message are exhausted during the construction of the tree, at rates which may be identical or distinct.

Claims

Claims

1. Method for encoding a message or a secret phrase in a graph, comprising: - a choice (EO) of a root for a tree in the graph, - then, the message (N) or the secret phrase (M) being considered as a succession of information units, a succession of additions in said tree each time of a new edge of the graph connecting the tree to a new node, the new node first being the subject of a choice (El), called first choice, from among the nodes of the graph called candidate nodes which, at the time of the addition, are outside the tree and neighbors of the tree because they are distant from the tree by a single edge, such single edges constituting candidate edges, the new edge then being the subject of a choice (E2), called second choice, from among the candidate edges, the succession of additions encoding over the course of said additions, in the first choice (El) or the second choice (E2), successive information of,respectively the succession of information units of the secret phrase (M), or the succession of information units of the message (N).,

2. Method of encoding in a graph according to claim 1, characterized in that the first choice (El) is carried out by disfavoring for the purposes of said first choice neighboring nodes which have a smaller number of different possibilities of connection to the tree by such a single edge than other neighboring nodes, including by excluding from the first choice neighboring nodes which have a number of possibilities of connection to the tree by a single edge which is less than the maximum in the group of candidate nodes.

3. Method of encoding in a graph according to claim 1 or claim 2, characterized in that the additions are carried out by considering a secret pseudo-random sequence (R), which is reviewed progressively during the additions of the succession of additions.

4. Method of encoding in a graph according to claim 3, characterized in that the secret pseudorandom sequence (R) is used for both the first choice and the second choice.

5. Method of encoding in a graph according to one of claims 1 to 4, characterized in that the first choice (El) and the second choice (E2) are carried out by considering a predetermined order of the nodes in the graph.

6. Method of encoding in a graph according to one of claims 1 to 5, characterized in that the succession of additions is continued after exhaustion of the succession of information units, until complete coverage of the graph by the tree, by adding to the end of the message (N) or of the secret phrase (M) any type of value, including a constant value.

7. Method of encoding in a graph according to one of claims 1 to 6, characterized in that the graph can be a rectangular, triangular, hexagonal or radial plane grid, or be a three-dimensional network.

8. Method of encoding in a graph according to one of claims 1 to 7, characterized in that the tree is used for the manufacture of an object made of metal or synthetic polymer, by additive synthesis or cutting or stamping of plate, said object being kept exposed to visible light or conversely integrated hidden inside an object opaque to visible light.

9. Method of encoding in a graph according to one of claims 1 to 8, characterized in that a message is encoded in the second choices (E2), a secret phrase being further encoded in the first choices (El).

10. System for decrypting an encrypted message and providing said message in its decrypted form characterized in that the system comprises an object comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or volume and a computer program for extracting a message from an image of said object, by analyzing the choices of edges of the object from a root of said object to successively discover information elements of a message encoded by an encoding method according to one of claims 1 to 9, with which the decrypted message is formed.

11. System for decrypting an encrypted message according to claim 10, characterized in that the object further comprises a second material, the second material being of a different color from the solid material and occupying a space separating edges of the assembly.

12. System for decrypting an encrypted message according to claim 10 or claim 11, characterized in that it is exposed to visible light or conversely is hidden inside an object opaque to visible light.

13. System for verifying the authenticity of an item, characterized in that the system comprises a computer program for encoding a secret phrase in a graph according to a method of one of claims 1 to 9 and indicating whether the graph obtained is identical to an object carried by the item and comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or an entire volume.

Citation Information

Patent Citations

  • Bar code pattern and bar code group pattern formed by node matrix and node line, and generation and identification method thereof

    CN102081748A

  • Xml printer system with rfid capability

    US20060249566A1

  • System and method for product authentication

    US20190197562A1