EP4143733A1 - Method for verifying a barcode - Google Patents

Method for verifying a barcode

Info

Publication number
EP4143733A1
EP4143733A1 EP21727776.3A EP21727776A EP4143733A1 EP 4143733 A1 EP4143733 A1 EP 4143733A1 EP 21727776 A EP21727776 A EP 21727776A EP 4143733 A1 EP4143733 A1 EP 4143733A1
Authority
EP
European Patent Office
Prior art keywords
image
bar code
barcode
candidate
points
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP21727776.3A
Other languages
German (de)
French (fr)
Inventor
Marc Pic
Mohammed Amine OUDDAN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Surys SA
Original Assignee
Surys SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Surys SA filed Critical Surys SA
Publication of EP4143733A1 publication Critical patent/EP4143733A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/018Certifying business or products
    • G06Q30/0185Product, service or business identity fraud
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B42BOOKBINDING; ALBUMS; FILES; SPECIAL PRINTED MATTER
    • B42DBOOKS; BOOK COVERS; LOOSE LEAVES; PRINTED MATTER CHARACTERISED BY IDENTIFICATION OR SECURITY FEATURES; PRINTED MATTER OF SPECIAL FORMAT OR STYLE NOT OTHERWISE PROVIDED FOR; DEVICES FOR USE THEREWITH AND NOT OTHERWISE PROVIDED FOR; MOVABLE-STRIP WRITING OR READING APPARATUS
    • B42D25/00Information-bearing cards or sheet-like structures characterised by identification or security features; Manufacture thereof
    • B42D25/30Identification or security features, e.g. for preventing forgery
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B42BOOKBINDING; ALBUMS; FILES; SPECIAL PRINTED MATTER
    • B42DBOOKS; BOOK COVERS; LOOSE LEAVES; PRINTED MATTER CHARACTERISED BY IDENTIFICATION OR SECURITY FEATURES; PRINTED MATTER OF SPECIAL FORMAT OR STYLE NOT OTHERWISE PROVIDED FOR; DEVICES FOR USE THEREWITH AND NOT OTHERWISE PROVIDED FOR; MOVABLE-STRIP WRITING OR READING APPARATUS
    • B42D25/00Information-bearing cards or sheet-like structures characterised by identification or security features; Manufacture thereof
    • B42D25/40Manufacture
    • B42D25/405Marking
    • B42D25/41Marking using electromagnetic radiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/24Aligning, centring, orientation detection or correction of the image
    • G06V10/245Aligning, centring, orientation detection or correction of the image by locating a pattern; Special marks for positioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/50Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/08Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code using markings of different kinds or more than one marking of the same kind in the same record carrier, e.g. one marking being sensed by optical and the other by magnetic means
    • G06K19/10Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code using markings of different kinds or more than one marking of the same kind in the same record carrier, e.g. one marking being sensed by optical and the other by magnetic means at least one kind of marking being used for authentication, e.g. of credit or identity cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image

Definitions

  • the present invention relates to the field of barcode verification, including two-dimensional barcodes, whether they are Datamatrix, QR code, PDF417, 1D barcode or 2D barcode, or even a character string. , and hereinafter “bar code” or “bar code” for brevity.
  • Barcodes are used on multiple products, especially for traceability purposes, for example to track and trace product movements throughout a supply chain, which can detect fraudulent activity, market illicit, etc.
  • Two-dimensional (2D) barcodes include a variety of symbols (rectangles, dots, hexagons, and other geometric shapes) positioned as a matrix of juxtaposed dots or squares. These points or squares are also called modules. As described later, an image of a module is referred to as a "blob" in the present invention.
  • the barcodes are 6 x 6 mm datamatrix.
  • cigarette packages are today traced in Europe by means of a unique identifier (UID) which is engraved directly on cigarette packages on production lines, at the level of an area of black paint, usually located on the bottom of the package.
  • UID unique identifier
  • UID Unique Identifier
  • packet and UID are understood indiscriminately.
  • a UID is defined in particular by the ISO 22300: 2018 standard, that is to say a code which represents a unique and specific set of attributes linked to an object or to a class of objects. throughout its life in a particular domain and perimeter of an object identification system.
  • the bar code allows, on the one hand, traceability and, on the other hand, makes it possible to calculate a characteristic imprint for each package.
  • the invention relates to a method of enrolling a reference two-dimensional bar code, by processing a reference image of one of said reference two-dimensional bar code, the bar code comprising a set of dots exhibiting random printing defects, each dot of the reference barcode corresponding to a respective blob in the reference image, the method comprising the steps of:
  • the reference fingerprint in the database in the form of a vector with N components, with N the total number of fingerprint calculation methods, the position of each component in the vector corresponding to a predefined method; or as a binarized summary of the reference image such that the image of the two-dimensional barcode is stored in a compressed binary format.
  • said vector of the reference fingerprint comprises several components, at least one of which is non-zero, each component is calculated by one of respective steps among:
  • the invention relates to a method for verifying a candidate bar code comprising an identifier (UID), the method comprising steps consisting in:
  • Steps can be provided for:
  • the comparison step being implemented by comparing the sequences of bits which represent them.
  • the invention relates to a computer program comprising program code instructions for executing the steps of the method according to the invention, when said program is executed on a computer.
  • the invention relates to a smartphone comprising a memory in which the computer program according to the invention is stored.
  • FIG. 1 illustrates an embodiment of a bar code according to the invention
  • FIG. 2 illustrates an embodiment of a printing of the bar code of FIG. 1, exhibiting printing defects
  • FIG. 3 illustrates an enlargement of the frame of FIG. 1,
  • FIG. 4 illustrates an enlargement of the frame of FIG. 2,
  • FIG. 5 illustrates a candidate image comprising parasites
  • FIG. 6 illustrates a candidate image according to the invention
  • FIG. 7 illustrates the image of FIG. 6 preprocessed and filtered according to the invention
  • FIG. 8 illustrates the image of FIG. 7 binarized according to the invention
  • FIG. 9 illustrates the image of figure 8 for which the shape of the bar code is highlighted
  • FIG. 10 illustrates FIG. 9 to which an edge detection is applied
  • FIG. 11 illustrates the application according to the invention of a 2D model made up of three points on the image of FIG. 9,
  • FIG. 12 illustrates clusters according to the invention
  • FIG. 13 illustrates a grid generated according to the invention on the clusters of FIG. 12, with the coordinates of each blob
  • FIG. 14 illustrates a grid according to the invention applied to a datamatrix
  • FIG. 15 illustrates a table of points of a datamatrix according to the invention
  • FIG. 16 illustrates the neighborhood of points on the table of figure 15
  • FIG. 17 illustrates two identical blobs according to the invention
  • FIG. 18 illustrates two different blobs according to the invention
  • FIG. 19 illustrates two profiles of similar blobs according to the invention
  • FIG. 20 illustrates two different blob profiles according to the invention
  • FIG. 21 illustrates a topological analysis of irregular points according to 3 variants according to the invention
  • FIG. 22 illustrates the construction of filtrations and their representation in the form of a persistent bar code according to the invention
  • FIG. 23 illustrates a point cloud persistence diagram in Figure 22.
  • the bar codes are marked by laser engraving.
  • This type of engraving consists in removing more or less material from the surface of the paper of the tobacco packet, which makes it possible to have more nuances to generate the barcode modules but the use of a laser generates random printing defects of the bar code, engraving and printing being considered without distinction in the present invention.
  • UIDs correspond to a construction, a structure, imposed, known.
  • the invention aims to characterize the printing defects of the modules of a bar code, on the basis of the assumption that these defects are never reproduced identically when the same bar code is reprinted, for example on a lot of packs of cigarettes.
  • Figure 1 and Figure 2 illustrate the same barcode with printing defects, boxed and enlarged in Figures 3 and 4 respectively.
  • the present invention provides two distinct phases: a first enrollment phase which precedes a second control or verification phase.
  • the conditions for acquiring the images are generally different depending on the phase.
  • a so-called “reference print” of the barcode of the packet is calculated.
  • control fingerprint of the barcode
  • a camera is provided on the package production line to acquire a set of reference images.
  • the production line involves constraints of packet scrolling speed.
  • Packages are generally cellophane free when acquiring these reference images.
  • a communicating object is provided, in particular a smartphone, to acquire candidate images.
  • the communicating object that is to say any manipulable optoelectronic device comprising an optical objective, programmable means of calculations and means of wireless communication, is referred to as a smartphone.
  • the smartphone is equipped with a magnifying device, for example a magnifying lens, and / or a flash.
  • the package generally has cellophane wrapping, which can generate reflections from the flash of the smartphone.
  • the barcode can also be placed close to the folds of the cellophane film and dust residues can also become embedded under the cellophane film, which generates artefacts or interference on the control image taken by the smartphone.
  • a tobacco packet illustrated in FIG. 5 presents the following parasites, each of them being able to disturb the optical control: in reference 1, a fold of the cellophane packaging; in reference 2, reflections from the flash; in reference 3, a deformation of the points of the bar code after packaging; and in reference 4, an encrustation of dust residues.
  • a set of candidate images each comprising the bar code is obtained, for example in the form of a stream, that is to say of a sequence of video frames obtained by filming the bar code to be checked by the smartphone.
  • Each frame can be a candidate image.
  • the location of the bar code and its orientation in a 3-dimensional space are determined, for example using edge detectors and a frequency test.
  • QR Codes The location of QR Codes is known, for example from “Fast QR Code Detection in Arbitrarily Acquired Images”, Luiz Belussi & al, August 2011, DOI: 10.1109 / SIBGRAPI.2011.16.
  • the dimensions of the candidate image can be advantageously reduced by a predetermined factor, which makes it possible to speed up the processing.
  • a preprocessing is applied to the candidate image to eliminate the noise that can disturb the processing, for example by applying a Gaussian blur, as illustrated in FIG. 7.
  • blob is meant the object on the candidate image which is interpreted as corresponding to a module of the bar code.
  • the pose vector gives the orientation of the barcode but not its scale.
  • a rectification step (of angle and of scale) applied to the candidate image, using a 2D model which is specific to the shape of the bar code.
  • the bar code tilts to the left.
  • the applied 2D model consists of three points, corresponding respectively to the top-left, bottom-left and bottom-right points of the barcode, and makes it possible to straighten the candidate image of the barcode, as shown in the figure. 11.
  • FIG. 12 An example is illustrated in FIG. 12 with a regular square grid for a datamatrix type barcode.
  • centroid of each blob is determined, by a known algorithm, in this case by a calculation of moments.
  • a clustering operation is then provided on each vertical and horizontal coordinate of the set of blobs, in order to separate them according to one of the two criteria: row, horizontal, or column, vertical. This is possible because the number of columns and rows of blobs on the candidate image is known. Each cluster therefore corresponds to a row or a column depending on the dimension to which it is applied, see for example Figure 12.
  • Figure 13 illustrates the new grid generated with the coordinates of each blob. Note that spaces without blobs leave an effective void on the grid.
  • a rectified and cleaned candidate image is thus obtained.
  • a barcode decoding method can be applied as a function of the type (lD, 2D, QR code, PDF417, etc.) thereof.
  • the type LD, 2D, QR code, PDF417, etc.
  • the identifier UICC
  • this code can be used to identify the fingerprint during subsequent processing and its transmission, for example to a database.
  • the UID thus known also makes it possible to know the reference bar code, that is to say that the position of the white or black modules is known. Thus, the positions at which blobs in the candidate image should appear are known.
  • a cleaning step in which we start by eliminating the positions of the grid that do not correspond to a laser engraving of the bar code, for example the empty spaces between the engravings, those where there is no blob, non-centered spots, lines or traces of cellophane wrapping the tobacco package. For example, if a white point on the candidate image corresponds to a position in the reference image for which the module is black (off), then this point is eliminated, i.e. unprocessed, because it should not match a laser engraving blob.
  • - select a predetermined area of the reference image, such that the selection corresponds to a sub-part of the barcode, for example by selecting an area of 10x10 modules instead of the usual 24x24 for a datamatrix, which makes it possible to speed up processing and reduce the size of the imprint.
  • the candidate image provision is made to select an area with the same coordinates for the footprint calculation.
  • identification elements is understood to mean predetermined elements inherent to the type of bar code.
  • a datamatrix comprises 4 marking elements in the form of lines on its edges: a continuous line at the bottom and another on the left, a black / white dotted line on the right and another on the top. In this case, the continuous registration lines (invariant in black) are eliminated.
  • a QRcode consists of 3 marking elements in the form of landmarks. Etc. These marking elements make it possible to determine the scale of the barcode, and therefore the dimensions of its modules.
  • each of these methods makes it possible to calculate a respective footprint.
  • the footprints corresponding to each method are independent, but in the footprint storage formats, the “heavy” format described later contains a binarized summary of the image from which all of the footprints can be regenerated. It is also possible to store the fingerprints in vector form. In particular, it is possible to provide a vector with N components, with N the total number of fingerprint calculation methods, the position of each component in the vector corresponding to a predefined method.
  • the appearance of the candidate image, or control image, taken with a windshield during the control phase is different from the reference image of the bar code taken during the enrollment phase.
  • implementing a calculation of raw metric such as the area or the perimeter of each blob, and comparing the results between the reference images and the candidate images can lead to results which are not satisfactory.
  • An original image is acquired in RGB color by a camera placed directly on the production line before packaging the package.
  • the original image is then transformed into grayscale.
  • each point of the datamatrix forms an object from which the corresponding characteristics are extracted.
  • each blob is an independent connected object. Since it is a related binary object, white on a black background, it is possible to extract its area by counting the number of white pixels. For example for the 2 lines mentioned above, we obtain:
  • V_Ref whose elements are the surface of the lit points of the datamatrix according to a predetermined order, in this case from left to right and from top to bottom.
  • the whole of the reference datamatrix is thus obtained in the form of a vector which contains all of the surface ratios of 2 successive points and which thus forms the imprint of said datamatrix.
  • V_Ref i , m + i is the surface of the next element in the vector according to the chosen path, in this case from left to right and from top to bottom.
  • the index Ref for the reference image the index Can or the index Sus for the candidate image (also called suspect).
  • the reference datamatrix (s) which contain the same number of points, at the same position, are extracted from the database.
  • the size of the 2 area ratio vectors, reference and candidate, which are datamatrix fingerprints, must be the same.
  • the absolute value of the difference between the vector of candidate ratios and the vector of reference ratios is calculated each time. If the difference of a pair is smaller than a predetermined value threshold, then an authenticity score of the datamatrix is increased, in this case a score which is initialized at 0 and incremented by +1 each time the condition is validated, of the candidate image. Then, we calculate the percentage of reports that are smaller than the threshold compared to the total number of reports established, which is the total size of the vector, namely:
  • V_Diff n 1, m
  • with n l: number of reference images
  • the value of the threshold is between 0.04 and 0.12, and for example equal to 0.08. If the difference is strictly less than this threshold, we increase the authenticity score by 1. Then, we divide the score obtained by the size of the vector and we multiply by 100, if this percentage is strictly greater than a threshold value, by example between 60% and 99%; and in this case equal to 78%, the candidate image is authentic.
  • the values can be chosen empirically from the database available.
  • route described here from left to right and from bottom to top can also be from right to left, from bottom to top, in column or diagonal, or non-linear. It just matters that it is predefined.
  • the angular positions of the specific points between the CAND blog and the REF blob are the same, for example by calculating the angle between the line O'-10 'and the line O'-20' and by calculating the 'angle between line 0-10 and line 0-20. These two blobs are then considered the same.
  • the angular positions of the specific points between the CAND blog and the REF blob are different, for example by calculating the angle between the line O'-10 'and the line O'-20' and by calculating the angle between line 0-10 and line 0-20. These two blobs are considered different.
  • This approach involves spotting the main irregularities in a blob and writing them down on a map so that you can compare them.
  • This approach consists in constructing a curve characterizing the profile of a blob. It then makes it possible to carry out a comparison of profiles between the profile of a blob of the candidate image and the profile of the corresponding blob of the reference image.
  • the profile of the blob is determined by extracting the distance to the centroid of each point of the outline of the blob, along a predetermined path, preferably over the entire outline of the blob.
  • a profile is thus obtained for a blob of the candidate image and a profile for the corresponding blob of the reference image. From these profiles, one or more metrics can be extracted in order to determine whether these two profiles are similar or not. For example, we can measure the correlation between the two profiles to determine if they are similar or not.
  • Each point extracted from the binary image is characterized by a set of histograms, calculated from the intensity and orientation of the gradients. Starting from the center of each point (or blob), its bounding box is centered in a 64x64 pixel window which is segmented into 8x8 blocks. Starting from these 8x8 blocks, the histograms are calculated from the intensity and the orientation of the gradients of each pixel constituting each of the images (8x8 pixels). The histograms are calculated on blocks of 8 ⁇ 8 pixels, then normalized by blocks of 16 ⁇ 16 pixels, by concatenating the 4 histograms. The 16x16 blocks overlap by 8 pixels. Starting from the centroid of each point, the binary image of the latter is centered in a window of 64x64 pixels.
  • This size should actually be a multiple of 8 and may vary depending on the grinding pattern and stitch size.
  • the size of the bounding box of the points is limited to 64x64 pixels. Then we calculate the normalized histograms on this image. Thus each point is represented by 6x6 histograms allowing the local characterization of its shape.
  • the descriptor of an image I of a 2D code represented by a grid of NxM consists of all the descriptors of all the points detected.
  • Descri ptor (l) ⁇ descriptor (pi j ), i ⁇ [l..N], j ⁇ [1..M] ⁇ With p i , j a detected point
  • the descriptor of a point p at position i, j in turn consists of the set of histograms of the oriented gradients (Hog) of all the blocks of size B ⁇ B pixels which overlap by B / 2 pixels.
  • the total number of blocks extracted from the image of point p is K x L.
  • the measurement of similarity between the reference image and the candidate image consists firstly in calculating a similarity score for each pair of “reference-candidate” points. Then, all of these scores are used to calculate an overall score measuring the similarity between the two images.
  • the matching of the points according to their position in the grid makes it possible to constitute pairs of points.
  • a homogenization of the size of the points (reference, candidates) is necessary for each pair in order to overcome the problem of variation of the acquisition conditions between the enrollment system and the control system.
  • the bounding box of the candidate point is resized to the size of the bounding box of the corresponding reference point.
  • the similarity between a reference point p_Ref and candidate point p_Cand is measured by the average of the distances of the histograms calculated from the images of the bounding boxes of each of the two points. For this purpose, we can use the Euclidean distance, or other distances.
  • the measurement of overall similarity between the reference image and the candidate image consists in calculating the rate of reference points whose distance is less than a predetermined threshold.
  • Another measurement can also be carried out, by assigning a greater weight to the most relevant reference points, i.e. which present a deformation linked to the hazard of the laser engraving and which turn out to be richer in terms of reference. 'a point of view of their characterization, that is to say whose contour is not perfectly circular.
  • a local dissimilarity map (CDL) filtering step can be provided, possibly preceded by a denoising step.
  • a local dissimilarity map makes it possible to measure the local differences between two binary images, ie two images in black and white (not in gray levels).
  • the calculation of a local dissimilarity map is a modified version of the Hausdorff distance, it is notably described by Morain-Nicolier, Frédéric & LANDRE, Jérome & Ruan, Su. (2009). “Object detection by measuring local dissimilarities. ".
  • CDLbin the CDL of two binary images A and B as being:
  • a first sub-image is first obtained by applying a digital mask comprising a first window F1 corresponding to all or part of the candidate image, which makes it possible to extract the part of the candidate image recorded in the first window Fl.
  • a second sub-image is then obtained by applying a digital mask comprising a second window F2 corresponding to all or part of the reference image, which makes it possible to extract the part of the reference image entered in the second window F2.
  • the shape of the window F1 is identical to that of the window F2.
  • the size of the window F2 is equal to that of the window F1, up to the scale factor.
  • the first binary image used for the calculation of the local dissimilarity map is the first sub-image obtained by the first window F1
  • the second binary image used for the calculation of the local dissimilarity map is the second sub-image obtained by the second window F2.
  • CDL (F1, F2) is then calculated the CDL between the first sub-image obtained by the first window F1, and the second sub-image obtained by the second window F2.
  • the graphic enhancement can be carried out by at least among: a modification of the value of the pixels (color, luminance), the display of a frame around the points or the display of a frame at the periphery of the windows Fl and F2, for example dotted or colored, etc.
  • the candidate image is in gray levels, it is split into several binary images.
  • the maximum value and the minimum value of the pixels of the candidate image are stored in a memory.
  • the difference between the maximum value and the minimum value is divided into several intermediate threshold values, preferably at regular intervals.
  • first intermediate threshold value For a first intermediate threshold value, all the pixels whose value is less than the value of said intermediate threshold are replaced by black and all the pixels whose value is greater than the value of said intermediate threshold are replaced by white. A first binary image is thus obtained. Then, the threshold value is varied and a second binary image is obtained with a second intermediate threshold value. And so on for the set of intermediate threshold values.
  • N binary images are thus obtained, with N a natural integer equal to the number of selected threshold values, ie the number of cuts.
  • CDLJ (F1, F2) is calculated the CDL between the first sub-image obtained by the first window F1, and the second sub-image obtained by the second window F2.
  • CDL (F1, F2) 1 / N ⁇ CDL_N (F1, F2).
  • CDL (F1, F2) is then compared to a predetermined D_CDL threshold, as described above.
  • the candidate image is in color, it can be saved in grayscale and processed as described above.
  • the candidate image is split into C binary images, with C a natural integer corresponding to the number of channels, in this case equal to 3.
  • Each of the C binary images can then be processed in a manner similar to the N binary images obtained when the candidate image is in gray levels.
  • CDL_C (F1, F2) is calculated the CDL between the first sub-image obtained by the first window F1, and the second sub-image obtained by the second window F2.
  • CDL (F1, F2)
  • CDL_XYZ (A, B) (p)
  • N natural integer at most equal to the number of gray levels, and in this case equal to the number of binary images resulting from the processing of the original image in gray levels.
  • CDL (F1, F2) is then compared to a predetermined D_CDL threshold, as described above.
  • This method aims to detect points where the convexity is not perfect on the contours of each point of the datamatrix.
  • a reference image acquired by a camera placed directly on the production line before packaging, provision is made to record the reference image in the form of a binary image comprising the coordinates of the centers of each point of the datamatrix. Then we plan to calculate the contours of the points of the datamatrix from the binary image, that is to say to produce a curve joining the continuous points along the border of the pixels having the same intensity, in order to allow a form analysis.
  • the convexity defects are calculated for each convex envelope.
  • the candidate datamatrix is considered authentic.
  • a reference image is generally an RGB color image, acquired by a camera placed directly on the production line before packaging.
  • V_Ref m For each blob, we can have a vector V_Ref m with m the index of the blob.
  • V_Ref m [m00 m , m 00 m , m 01 m , m 20 m , m 11 m , m 02 m , m 30 m , m 21 m , m 12 m , m 03 m , nU 20 m , nu 11 m , nude 02 m , nude30 m , nude 02 m , nude 02 m , nude 03 m ]
  • the points of the reference image can be matched with those of the candidate image.
  • the comparison is made by metric between the moments, then by a rule on the sets of points.
  • V_Diff n
  • with n l: number of reference images.
  • the normalized centered moments are chosen, and more precisely the nu20 and null moments.
  • a score of the candidate datamatrix is incremented.
  • the invention is not limited to the times described above. We can foresee other moments like Zernike, Hu, Legendre, etc. then to build an imprint from those moments.
  • Topological Data Analysis is a mathematical method that extracts information from a data structure. With the recent development of persistent homology, it is possible to efficiently infer the geometric structure of an object if the geometric structures of a pair of points are similar, for example as described at http: // outlace .com / TDApartl.html.
  • the centroid of the selected blob is calculated, and a finite number of points is projected onto its contours along the axis of the centroid.
  • the illustration of this method corresponds to FIG. 21 lower right.
  • a second variant of construction of the cloud of points consists in traversing the contour of the selected blob in a geodetic manner and in drawing a point every n lengths until having traversed the entire contour of the blob. This method is illustrated at the top right of FIG. 21. We start by calculating the total distance from the outline of the blob. Then, we choose a number of points to draw on the outline. If we want to place n points, we must divide the perimeter of the blob by n.
  • a third variant for converting the contours into a cloud of points consists in using an approach similar to that which is described for the Angular localization of the Irregularities of the Blob.
  • FIG. 21 These 3 variants are illustrated in FIG. 21.
  • on the left is illustrated a binarized blob.
  • filtrations From the point cloud, we plan to make geometric constructions, called filtrations. Filtration, in topological analysis, makes it possible to bring out a topological structure of a set of data. The objective is to build families of objects at different scales and to study their evolution. The result obtained after filtration is then represented in the form of a persistence diagram using the information tools of persistent homology, the information tools being the diagrams of the domain of persistent homology shown in FIG. 22 and FIG. 23, that is to say the representation of the change of scale of the points, the bar code of persistence and the persistence diagram.
  • a persistence diagram from the point cloud.
  • the diameter of the points is gradually increased and the radius of each point is reported in the form of a persistence bar code.
  • a bar (top right FIG. 22) corresponds to the evolution of the radius of a point.
  • the two isolated bars under the barcode correspond to the appearance of a cycle.
  • a cycle appears when the "balls” touch each other.
  • a cycle dies when the center of the cycle is "clogged”.
  • a cycle is illustrated in the second image of FIG. 22.
  • On the x-axis of persistence barcode we have the lifespan of the "balls" / cycles and on the ordinate "the identifier" of the point / cycle.
  • At least one of the following two storage modes can be provided.
  • a "heavy" mode the size of which is in this case about 20 kb.
  • the image of the 2D code is stored in a compressed binary format (for example .png).
  • a “light” mode the size of which is in this case about 5kb.
  • the footprint is smaller but it is not scalable, unlike the "heavy" mode.
  • a preparation step can be provided for an optimal comparison.
  • This step can be implemented upstream of the calculation of the footprint.
  • the imprint can be stored in a particularly compact form. It can also be implemented downstream from the calculation of the footprint, for a greater richness of the representation at the time of the comparison.
  • the data conveyed by each of the fingerprints is considered as a set of signals. These signals in turn characterize the link that exists between the blobs.
  • This information can be quantified before the footprint is stored, which makes it possible to reduce the size of the overall footprint and thus optimize the comparison. It is also possible to store the fingerprints calculated from each of the methods (larger storage) and at the time of the comparison, the quantification is applied.
  • the raw information of the fingerprints is stored, but flexibility is gained because the quantification and the comparison process can be continuously improved, ie combining different quantification methods, different comparison heuristics.
  • the information corresponding to each of the fingerprint calculation methods are reduced to a quantified representation space, such as for example a binarization, by following a process which preserves the most important characteristics of these signals, i.e. the variation of fingerprints from one blob to another and the link that exists between neighboring blobs, while allowing a point-to-point binary comparison induced values, which depend on the quantification method.
  • a quantified representation space such as for example a binarization
  • these are the binary sequences.
  • the quantization of the signals conveyed by the imprints makes it possible to have a reduced and homogeneous representation space and consequently an optimal comparison process. This avoids adapting the process to each of the methods (with its own representation space, and its own similarity measures).
  • the comparison process consists in comparing the binary sequences and thus benefiting from the comparison methods which are known for their speed.
  • One method of doing this may be the representation of the fingerprints as one or more bit sequences.
  • the comparison between reference fingerprints and candidate fingerprints amounts to comparing the sequences of bits which represent them.
  • This comparison can be performed, for example, by a simple count of difference bits.
  • Other measures adapted to binary sequences can be envisaged, for example the Hamming distance, the rate of error bits per bit blocks, etc.
  • a sequence of bits is calculated from the variation of the fingerprints between two neighboring blobs by measuring the sign of the differences of the corresponding fingerprints.
  • the sequence of bits between two blobs i, j consists of the concatenation of the binary representations extracted from the fingerprints of each of the methods. For example, for a method of analyzing the area ratios of pairs of blobs (see paragraph 5.1 of the present description), the binary sequence is extracted from the sign of the difference between the areas of the two neighboring blobs i and j.
  • the sequence of bits for the two neighboring blobs i, j can be calculated as follows:
  • bit sequence for the two neighboring blobs i, j can be calculated as follows: with RE ⁇ 1,2 ⁇ corresponding to the two irregularities detected by method 2
  • bit sequence for the two neighboring blobs i, j can be calculated as follows:
  • a 2D bar code is represented by the set of bit sequences of all the pairs of neighboring blobs which constitute it.
  • the type of neighborhood is defined beforehand.
  • a step of cleaning the candidate image can be provided, in this case by removing the parasites and spots whose surface is greater than that of a data matrix module, for example by applying a frequency filter. It is also possible to provide a step of detecting the quality of the candidate image, in this case by virtue of image quality detectors (or analyzers). Depending on the response of the quality detectors, that is to say if the desired quality is not reached, the current candidate image is dropped and a next candidate image of the stream is selected. An attempt is then made to decode the bar code present on the new candidate image. If the code is not readable or does not correspond to a (known) rule for constructing the unique UID number, then we go to the next candidate image of the stream.
  • Any cleaning is only used for decoding the bar code, which makes it possible, via reading the UID, to search for the corresponding fingerprint in a database.
  • the processing steps described above are performed on the straightened (uncleaned) candidate image.

Abstract

The invention relates to a method for processing a reference image of a reference barcode having random printing defects, the method comprising the steps of: - recording, in a memory, a greyscale reference image of the reference barcode, - recording an identifier (UID) of the reference barcode in the form of an index in a database. It is essentially characterised in that it further comprises the steps of: - calculating a reference fingerprint of said reference barcode, the fingerprint being a function of the random printing defects, and - recording the reference fingerprint in the database.

Description

Procédé pour la vérification d'un code-barre. Method for verifying a bar code.
DOMAINE DE L'INVENTION FIELD OF THE INVENTION
La présente invention concerne le domaine de la vérification des codes-barres, incluant les codes- barres bidimensionnels, qu'ils soient Datamatrix, QR code, PDF417, code-barres 1D ou code-barres 2D, voire même d'une chaîne de caractère, et ci-après « code-barre » ou « code-barres » par concision. The present invention relates to the field of barcode verification, including two-dimensional barcodes, whether they are Datamatrix, QR code, PDF417, 1D barcode or 2D barcode, or even a character string. , and hereinafter "bar code" or "bar code" for brevity.
Les code-barres sont utilisés sur de multiples produits, notamment à des fins de traçabilité, par exemple pour suivre et retracer les mouvements des produits tout au long d'une chaîne d'approvisionnement, ce qui permet de détecter des activités frauduleuses, un marché illicite, etc.Barcodes are used on multiple products, especially for traceability purposes, for example to track and trace product movements throughout a supply chain, which can detect fraudulent activity, market illicit, etc.
Selon les cas, ils peuvent être inscrits sur un packaging primaire ou sur un packaging secondaire.Depending on the case, they can be registered on a primary packaging or on a secondary packaging.
Les codes-barres bidimensionnels (2D) comprennent une variété de symboles (rectangles, points, hexagones et autres formes géométriques) positionnés sous forme de matrice constituée de points ou de carrés juxtaposés. Ces points ou carrés sont également appelés modules. Comme décrit ultérieurement, une image d'un module est appelé « blob » dans la présente invention. Two-dimensional (2D) barcodes include a variety of symbols (rectangles, dots, hexagons, and other geometric shapes) positioned as a matrix of juxtaposed dots or squares. These points or squares are also called modules. As described later, an image of a module is referred to as a "blob" in the present invention.
Par concision toujours, seul le cas de code-barres bidimensionnel pour l'industrie du tabac sera décrit ici. Dans cet exemple, les code-barres sont des datamatrix de 6 x 6 mm. For brevity again, only the two-dimensional barcode case for the tobacco industry will be described here. In this example, the barcodes are 6 x 6 mm datamatrix.
Dans le contexte de la traçabilité réglementaire du tabac, les paquets de cigarettes sont aujourd'hui tracés en Europe au moyen d'un identifiant unique (UID) qui est gravé directement sur les paquets de cigarettes sur les chaînes de production, au niveau d'une zone de peinture noire, généralement située sur le fond du paquet. In the context of regulatory tobacco traceability, cigarette packages are today traced in Europe by means of a unique identifier (UID) which is engraved directly on cigarette packages on production lines, at the level of an area of black paint, usually located on the bottom of the package.
Dans le but de renforcer la sécurité du consommateur et la lutte contre la fraude par contrefaçon, il est souhaitable d'avoir un moyen de vérifier l'authenticité et l'unicité du UID (Unique Identifier), c'est- à-dire de l'unicité du paquet portant ce numéro. Au sens de la présente invention, on entend indistinctement paquet et UID. Au sens de la présente invention, un UID est notamment défini par la norme ISO 22300:2018, c'est-à-dire un code qui représente un ensemble unique et spécifique d'attributs liés à un objet ou à une classe d'objets pendant toute sa vie dans un domaine et un périmètre particuliers d'un système d'identification d'objets. In order to strengthen consumer security and the fight against counterfeit fraud, it is desirable to have a means of verifying the authenticity and uniqueness of the UID (Unique Identifier), that is to say of the uniqueness of the package with this number. For the purposes of the present invention, packet and UID are understood indiscriminately. For the purposes of the present invention, a UID is defined in particular by the ISO 22300: 2018 standard, that is to say a code which represents a unique and specific set of attributes linked to an object or to a class of objects. throughout its life in a particular domain and perimeter of an object identification system.
Selon l'invention, le code-barres permet d'une part la traçabilité et d'autre part, permet de calculer une empreinte caractéristique à chaque paquet. According to the invention, the bar code allows, on the one hand, traceability and, on the other hand, makes it possible to calculate a characteristic imprint for each package.
RESUME DE L'INVENTION SUMMARY OF THE INVENTION
Plus précisément, l'invention concerne un procédé d'enrôlement d'un code-barre bidimensionnel de référence, de par traitement d'une image de référence d'un dudit code-barre bidimensionnel de référence , le code-barres comprenant un ensemble de points présentant des défauts aléatoires d'impression, chaque point du code-barre de référence correspondant à un blob respectif dans l'image de référence, le procédé comprenant des étapes consistant à : More precisely, the invention relates to a method of enrolling a reference two-dimensional bar code, by processing a reference image of one of said reference two-dimensional bar code, the bar code comprising a set of dots exhibiting random printing defects, each dot of the reference barcode corresponding to a respective blob in the reference image, the method comprising the steps of:
- enregistrer dans une mémoire une image de référence en niveaux de gris du code-barre de référence, - save in a memory a reference image in gray levels of the reference barcode,
- enregistrer un identifiant (UID) du code-barre de référence sous forme d'index dans une base de données. - save an identifier (UID) of the reference barcode in the form of an index in a database.
Il est essentiellement caractérisé en ce qu'il comprend en outre des étapes consistant à : - calculer une empreinte de référence dudit code-barre de référence, l'empreinte étant fonction des défauts aléatoires d'impression, et It is essentially characterized in that it further comprises steps consisting in: - calculate a reference imprint of said reference bar code, the imprint being a function of the random printing defects, and
- enregistrer l'empreinte de référence dans la base de données sous forme de vecteur à N composantes, avec N le nombre total de méthodes de calcul d'empreintes, la position de chaque composante dans le vecteur correspondant à une méthode prédéfinie ; ou sous forme de résumé binarisé de l'image de référence tel que l'image du code-barre bidimensionnel est stockée selon un format binaire compressé. - record the reference fingerprint in the database in the form of a vector with N components, with N the total number of fingerprint calculation methods, the position of each component in the vector corresponding to a predefined method; or as a binarized summary of the reference image such that the image of the two-dimensional barcode is stored in a compressed binary format.
Dans un mode de réalisation, lorsque l'empreinte de référence dans la base de données est enregistrée sous forme de vecteur, ledit vecteur de l'empreinte de référence comprend plusieurs composantes dont au moins une est non nulle, chaque composante est calculée par une des étapes respectives parmi : In one embodiment, when the reference fingerprint in the database is recorded in the form of a vector, said vector of the reference fingerprint comprises several components, at least one of which is non-zero, each component is calculated by one of respective steps among:
- déterminer l'aire de chaque point du code-barre de référence et enregistrer un vecteur qui renferme l'ensemble des rapports de surface de 2 points successifs du code-barre de référence ; - determine the area of each point of the reference bar code and record a vector which contains all the area ratios of 2 successive points of the reference bar code;
- déterminer la position angulaire de points spécifiques situés sur le contour de chaque blob du code- barre de référence ; - determine the angular position of specific points located on the contour of each blob of the reference barcode;
- déterminer une courbe caractérisant le profil de chaque blob du code-barre de référence ; - determine a curve characterizing the profile of each blob of the reference barcode;
- déterminer un ensemble d'histogrammes de gradients orientés, calculés à partir de l'intensité et de l'orientation des gradients sur des blocs de pixels, pour chaque point du code-barre de référence ;- determining a set of oriented gradient histograms, calculated from the intensity and orientation of the gradients on blocks of pixels, for each point of the reference bar code;
- enregistrer l'image de référence sous forme d'image binaire comprenant les coordonnées des centres de chaque point du code-barre ; produire une courbe joignant les points continus tout au long de la frontière des pixels ayant la même intensité, calculer l'enveloppe convexe desdits points continus, et calculer les défauts de convexité pour chaque enveloppe convexe ; et - recording the reference image in the form of binary image comprising the coordinates of the centers of each point of the bar code; producing a curve joining the continuous points along the border of pixels having the same intensity, calculating the convex envelope of said continuous points, and calculating the convexity defects for each convex envelope; and
- produire une image binaire du code-barre de référence, avec les coordonnées des centres de chaque point dudit code-barre, calculer les contours externes des points dudit code-barre, et pour chaque contour, calculer un ensemble de moments des contours externes des points du code-barres. - produce a binary image of the reference bar code, with the coordinates of the centers of each point of said bar code, calculate the external contours of the points of said bar code, and for each contour, calculate a set of moments of the external contours of the barcode points.
Selon un autre de ses objets, l'invention concerne un procédé de vérification d'un code-barre candidat comprenant un identifiant (UID), le procédé comprenant des étapes consistant à : According to another of its objects, the invention relates to a method for verifying a candidate bar code comprising an identifier (UID), the method comprising steps consisting in:
- enregistrer dans une mémoire une image candidate en niveaux de gris du code-barre candidat,- record in a memory a candidate image in gray levels of the candidate barcode,
- décoder l'identifiant (UID) du code-barre candidat, - decode the identifier (UID) of the candidate barcode,
- identifier le code-barre de référence selon l'invention dont l'index dans la base de données est égal audit identifiant du code-barre candidat, - identify the reference bar code according to the invention, the index of which in the database is equal to said identifier of the candidate bar code,
- calculer une empreinte dudit code-barre candidat, - calculate an imprint of said candidate barcode,
- comparer ladite empreinte du code-barre candidat avec l'empreinte de référence correspondante du code-barre de référence. comparing said imprint of the candidate barcode with the corresponding reference imprint of the reference barcode.
On peut prévoir que l'étape de comparaison comprend au moins l'une des étapes parmi : Provision can be made for the comparison step to include at least one of the steps among:
- une étape de filtrage par carte de dissimilarité locale, éventuellement précédée d'une étape de débruitage ; et - a local dissimilarity map filtering step, optionally preceded by a denoising step; and
- une analyse topologique de points irréguliers. - a topological analysis of irregular points.
On peut prévoir des étapes consistant à : Steps can be provided for:
- déterminer la localisation du code-barre candidat et son orientation dans un espace à 3 dimensions, - calculer un vecteur de pose, - determine the location of the candidate barcode and its orientation in a 3-dimensional space, - calculate a pose vector,
- redresser l'image du code-barre candidat, et - straighten the image of the candidate barcode, and
- optionnellement nettoyer ladite image du code-barre candidat. - optionally clean said image of the candidate barcode.
On peut prévoir une étape de représentation de l'empreinte du code-barre candidat et de l'empreinte du code-barre de référence par une ou plusieurs séquences de bits, It is possible to provide a step of representing the imprint of the candidate bar code and the imprint of the reference bar code by one or more sequences of bits,
- l'étape de comparaison étant mise en oeuvre par comparaison des séquences de bits qui les représentent. the comparison step being implemented by comparing the sequences of bits which represent them.
On peut prévoir que le code-barre de référence et le code-barre candidat sont des codes-barres bidimensionnels, le procédé comprenant en outre au moins l'une des étapes parmi : Provision can be made for the reference bar code and the candidate bar code to be two-dimensional bar codes, the method further comprising at least one of the steps among:
- appliquer un filtre fréquentiel à l'image candidate, - apply a frequency filter to the candidate image,
- détecter la qualité de l'image candidate, grâce à des détecteurs de qualité d'image - detect the quality of the candidate image, using image quality detectors
On peut prévoir que le code-barre de référence et le code-barre candidat sont marqués sur un paquet de tabac, optionnellement recouvert de cellophane. Provision can be made for the reference bar code and the candidate bar code to be marked on a packet of tobacco, optionally covered with cellophane.
Selon un autre de ses objets, l'invention concerne un programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'invention, lorsque ledit programme est exécuté sur un ordinateur. According to another of its objects, the invention relates to a computer program comprising program code instructions for executing the steps of the method according to the invention, when said program is executed on a computer.
Selon un autre de ses objets, l'invention concerne un smartphone comprenant une mémoire dans laquelle est stockée le programme d'ordinateur selon l'invention. According to another of its objects, the invention relates to a smartphone comprising a memory in which the computer program according to the invention is stored.
D'autres caractéristiques et avantages de la présente invention apparaîtront plus clairement à la lecture de la description suivante donnée à titre d'exemple illustratif et non limitatif et faite en référence aux figures annexées. Other characteristics and advantages of the present invention will emerge more clearly on reading the following description given by way of illustrative and non-limiting example and made with reference to the appended figures.
DESCRIPTIF DES DESSINS DESCRIPTION OF THE DRAWINGS
[FIG. 1] illustre un mode de réalisation d'un code-barres selon l'invention, et [FIG. 1] illustrates an embodiment of a bar code according to the invention, and
[FIG. 2] illustre un mode de réalisation d'une impression du code-barres de la figure 1, présentant des défauts d'impression, [FIG. 2] illustrates an embodiment of a printing of the bar code of FIG. 1, exhibiting printing defects,
[FIG. 3] illustre un agrandissement de l'encadrement de la figure 1, [FIG. 3] illustrates an enlargement of the frame of FIG. 1,
[FIG. 4] illustre un agrandissement de l'encadrement de la figure 2, [FIG. 4] illustrates an enlargement of the frame of FIG. 2,
[FIG. 5] illustre une image candidate comprenant des parasites, [FIG. 5] illustrates a candidate image comprising parasites,
[FIG. 6] illustre une image candidate selon l'invention, [FIG. 6] illustrates a candidate image according to the invention,
[FIG. 7] illustre l'image de la figure 6 prétraitée et filtrée selon l'invention, [FIG. 7] illustrates the image of FIG. 6 preprocessed and filtered according to the invention,
[FIG. 8] illustre l'image de la figure 7 binarisée selon l'invention, [FIG. 8] illustrates the image of FIG. 7 binarized according to the invention,
[FIG. 9] illustre l'image de la figure 8 pour laquelle la forme du code-barre est mise en évidence,[FIG. 9] illustrates the image of figure 8 for which the shape of the bar code is highlighted,
[FIG. 10] illustre la figure 9 sur laquelle est appliquée une détection de contour, [FIG. 10] illustrates FIG. 9 to which an edge detection is applied,
[FIG. 11] illustre l'application selon l'invention d'un modèle 2D constitué de trois points sur l'image de la figure 9, [FIG. 11] illustrates the application according to the invention of a 2D model made up of three points on the image of FIG. 9,
[FIG. 12] illustre des clusters selon l'invention, [FIG. 13] illustre une grille générée selon l'invention sur les clusters de la figure 12, avec les coordonnées de chaque blob, [FIG. 12] illustrates clusters according to the invention, [FIG. 13] illustrates a grid generated according to the invention on the clusters of FIG. 12, with the coordinates of each blob,
[FIG. 14] illustre une grille selon l'invention appliquée à un datamatrix, [FIG. 14] illustrates a grid according to the invention applied to a datamatrix,
[FIG. 15] illustre un tableau de points d'un datamatrix selon l'invention, [FIG. 15] illustrates a table of points of a datamatrix according to the invention,
[FIG. 16] illustre le voisinage de points sur le tableau de la figure 15, [FIG. 16] illustrates the neighborhood of points on the table of figure 15,
[FIG. 17] illustre deux blobs identiques selon l'invention, [FIG. 17] illustrates two identical blobs according to the invention,
[FIG. 18] illustre deux blobs différents selon l'invention, [FIG. 18] illustrates two different blobs according to the invention,
[FIG. 19] illustre deux profils de blobs similaires selon l'invention, [FIG. 19] illustrates two profiles of similar blobs according to the invention,
[FIG. 20] illustre deux profils de blobs différents selon l'invention, [FIG. 20] illustrates two different blob profiles according to the invention,
[FIG. 21] illustre une analyse topologique des points irréguliers selon 3 variantes selon l'invention,[FIG. 21] illustrates a topological analysis of irregular points according to 3 variants according to the invention,
[FIG. 22] illustre la construction de filtrations et leur représentation sous forme de code barre persistant selon l'invention, [FIG. 22] illustrates the construction of filtrations and their representation in the form of a persistent bar code according to the invention,
[FIG. 23] illustre un diagramme de persistance du nuage de points de la Figure 22. [FIG. 23] illustrates a point cloud persistence diagram in Figure 22.
DESCRIPTION DETAILLEE DETAILED DESCRIPTION
Selon l'invention, les code-barres sont marqués par gravure laser. Ce type de gravure consiste à retirer plus ou moins de matière à la surface du papier du paquet de tabac, ce qui permet d'avoir plus de nuances pour générer les modules du code-barres mais la mise en oeuvre d'un laser engendre des défauts aléatoires d'impression du code-barres, la gravure et l'impression étant considérées indistinctement dans la présente invention. According to the invention, the bar codes are marked by laser engraving. This type of engraving consists in removing more or less material from the surface of the paper of the tobacco packet, which makes it possible to have more nuances to generate the barcode modules but the use of a laser generates random printing defects of the bar code, engraving and printing being considered without distinction in the present invention.
Par concision, on ne décrira ici qu'un code-barre à deux dimensions (2D), en l'espèce sous forme de datamatrix. Selon l'invention, le code-barre est plan. For the sake of brevity, only a two-dimensional (2D) barcode will be described here, in this case in the form of a datamatrix. According to the invention, the bar code is flat.
Dans le domaine des codes-barres des paquets de tabac, les UID répondent à une construction, une structure, imposée, connue. In the field of bar codes for tobacco packages, UIDs correspond to a construction, a structure, imposed, known.
L'invention vise à caractériser les défauts d'impression des modules d'un code-barre, en partant de l'hypothèse que ces défauts ne sont jamais reproduits à l'identique lors de la réimpression du même code-barres, par exemple sur un lot de paquets de cigarettes. The invention aims to characterize the printing defects of the modules of a bar code, on the basis of the assumption that these defects are never reproduced identically when the same bar code is reprinted, for example on a lot of packs of cigarettes.
La figure 1 et la figure 2 illustrent le même code-barres présentant des défauts d'impression, encadrés et agrandis dans les figures 3 et 4 respectivement. Figure 1 and Figure 2 illustrate the same barcode with printing defects, boxed and enlarged in Figures 3 and 4 respectively.
La présente invention prévoit deux phases distinctes : une première phase d'enrôlement qui précède une deuxième phase de contrôle ou vérification. Les conditions d'acquisition des images sont généralement différentes selon la phase. The present invention provides two distinct phases: a first enrollment phase which precedes a second control or verification phase. The conditions for acquiring the images are generally different depending on the phase.
Selon l'invention, lors de la phase d'enrôlement, avant la mise sur le marché du paquet, on calcule une empreinte dite « empreinte de référence » du code-barres du paquet. According to the invention, during the enrollment phase, before the packet is placed on the market, a so-called “reference print” of the barcode of the packet is calculated.
Lors de la phase de contrôle, après la mise sur le marché du paquet, on calcule alors une empreinte dite « empreinte de contrôle » du code-barres. During the control phase, after the package has been placed on the market, a so-called “control fingerprint” of the barcode is then calculated.
On peut alors comparer l'empreinte de contrôle et l'empreinte de référence pour déterminer si le code-barres est original. We can then compare the control fingerprint and the reference fingerprint to determine if the barcode is original.
Dans la phase d'enrôlement, on prévoit une caméra sur la ligne de production des paquets pour acquérir un ensemble d'images de référence. La ligne de production implique des contraintes de vitesse de défilement des paquets. Les paquets sont généralement exempts de cellophane lors de l'acquisition de ces images de référence. In the enrollment phase, a camera is provided on the package production line to acquire a set of reference images. The production line involves constraints of packet scrolling speed. Packages are generally cellophane free when acquiring these reference images.
Dans la phase de contrôle, on prévoit un objet communicant, notamment un smartphone, pour acquérir des images candidates. Par concision, l'objet communicant, c'est-à-dire tout dispositif optoélectronique manipulable comprenant un objectif optique, des moyens programmables de calculs et des moyens de communication sans fil, est désigné par smartphone. De préférence, le smartphone est équipé d'un dispositif de grossissement, par exemple une bonnette grossissante, et/ou d'un flash.In the control phase, a communicating object is provided, in particular a smartphone, to acquire candidate images. For brevity, the communicating object, that is to say any manipulable optoelectronic device comprising an optical objective, programmable means of calculations and means of wireless communication, is referred to as a smartphone. Preferably, the smartphone is equipped with a magnifying device, for example a magnifying lens, and / or a flash.
On peut aussi mettre en oeuvre une technique dite de super-résolution obtenue par assemblage sub- pixelique d'images capturées lors d'un flux d'images candidates grâce à des mouvements, éventuellement involontaires, de l'utilisateur du smartphone. It is also possible to implement a so-called super-resolution technique obtained by sub-pixel assembly of images captured during a stream of candidate images by virtue of movements, possibly involuntary, of the user of the smartphone.
Lors d'une phase de contrôle, le paquet présente généralement un emballage cellophane, ce qui peut générer des reflets du flash du smartphone. Le code-barre peut aussi être disposé proche des plis du film de cellophane et des résidus de poussière peuvent aussi s'incruster sous le film de cellophane, ce qui génère des artéfacts ou parasites sur l'image de contrôle prise par le smartphone. During an inspection phase, the package generally has cellophane wrapping, which can generate reflections from the flash of the smartphone. The barcode can also be placed close to the folds of the cellophane film and dust residues can also become embedded under the cellophane film, which generates artefacts or interference on the control image taken by the smartphone.
Par exemple, un paquet de tabac illustré sur la figure 5 présente les parasites suivants, chacun d'eux pouvant venir perturber le contrôle optique : en référence 1, un repli de l'emballage cellophane ; en référence 2, des reflets du flash ; en référence 3, une déformation des points du code-barre après emballage ; et en référence 4, une incrustation de résidus de poussière. For example, a tobacco packet illustrated in FIG. 5 presents the following parasites, each of them being able to disturb the optical control: in reference 1, a fold of the cellophane packaging; in reference 2, reflections from the flash; in reference 3, a deformation of the points of the bar code after packaging; and in reference 4, an encrustation of dust residues.
* Calcul d'empreinte * Footprint calculation
Le calcul d'empreinte pendant la phase de contrôle comprend des étapes décrites ci-après. Un ensemble d'images candidates comprenant chacune le code-barre est obtenu, par exemple sous forme de flux, c'est-à-dire de séquence de trames vidéo obtenues en filmant le code-barre à contrôler par le smartphone. Chaque trame peut être une image candidate. The footprint calculation during the control phase comprises the steps described below. A set of candidate images each comprising the bar code is obtained, for example in the form of a stream, that is to say of a sequence of video frames obtained by filming the bar code to be checked by the smartphone. Each frame can be a candidate image.
1. Localisation du code-barre et rectification de l'image candidate 1. Localization of the barcode and correction of the candidate image
Dans cette première étape, on détermine la localisation du code-barre et son orientation dans un espace à 3 dimensions, par exemple grâce à des détecteurs de bords et un test de fréquence. In this first step, the location of the bar code and its orientation in a 3-dimensional space are determined, for example using edge detectors and a frequency test.
La localisation des QR Codes est connue, par exemple de « Fast QR Code Détection in Arbitrarily Acquired Images », Luiz Belussi & al, August 2011, DOI: 10.1109/SIBGRAPI.2011.16. The location of QR Codes is known, for example from “Fast QR Code Detection in Arbitrarily Acquired Images”, Luiz Belussi & al, August 2011, DOI: 10.1109 / SIBGRAPI.2011.16.
On peut ainsi déterminer les 4 points extrêmes d'un code-barre rectangulaire, donc son orientation dans l'espace. Ceci permet de calculer un vecteur de pose, exploité pour effectuer un redressement de l'image de contrôle. It is thus possible to determine the 4 extreme points of a rectangular barcode, therefore its orientation in space. This makes it possible to calculate a pose vector, used to rectify the control image.
Les dimensions de l'image candidate peuvent être avantageusement réduites selon un facteur prédéterminé, ce qui permet d'accélérer le traitement. The dimensions of the candidate image can be advantageously reduced by a predetermined factor, which makes it possible to speed up the processing.
Un prétraitement est appliqué sur l'image candidate pour éliminer le bruit pouvant perturber le traitement, en appliquant par exemple un flou gaussien, comme illustré sur la figure 7. A preprocessing is applied to the candidate image to eliminate the noise that can disturb the processing, for example by applying a Gaussian blur, as illustrated in FIG. 7.
Pour localiser le code-barre, dans un premier temps on prévoit d'appliquer une méthode de binarisation, en l'occurrence la binarisation d'Otsu, comme illustré sur la figure 8. To locate the barcode, initially we plan to apply a binarization method, in this case the Otsu binarization, as illustrated in figure 8.
Sur l'image binaire obtenue, on applique différentes opérations morphologiques pour mettre en évidence la forme du code-barre (forme carrée, rectangulaire ou autres formes), par un opérateur de morphologie mathématique, en l'espèce pour regrouper les blobs, par exemple au moins une opération parmi une dilatation, une érosion et l'application d'un laplacien morphologique. Par blob, on entend l'objet sur l'image candidate qui est interprété comme correspondant à un module du code-barre. On the binary image obtained, different morphological operations are applied to highlight the shape of the barcode (square, rectangular or other shapes), by a mathematical morphology operator, in this case to group the blobs, for example. at least one of dilation, erosion and the application of a morphological Laplacian. By blob is meant the object on the candidate image which is interpreted as corresponding to a module of the bar code.
Dans l'exemple du code-barre illustré sur la figure 9, on applique une série d'érosion suivie d'une fermeture, permettant ainsi de lier les points et de faire apparaître la forme carrée. In the example of the bar code illustrated in FIG. 9, a series of erosion followed by a closure is applied, thus making it possible to link the dots and reveal the square shape.
Ensuite, une simple détection de contour permet de localiser le code-barre et de déduire ainsi son orientation, comme l'illustre la figure 10. Then, a simple contour detection makes it possible to locate the bar code and thus deduce its orientation, as illustrated in figure 10.
Le vecteur de pose donne l'orientation du code-barre mais pas son échelle. The pose vector gives the orientation of the barcode but not its scale.
On peut donc prévoir une étape de rectification (d'angle et d'échelle) appliquée sur l'image candidate, en utilisant un modèle 2D qui est spécifique à la forme du code-barre. Dans l'exemple de la figure 8, le code-barre penche vers la gauche. Le modèle 2D appliqué est constitué de trois points, correspondant respectivement, aux points haut-gauche, bas-gauche et bas-droit du code-barre, et permet de redresser l'image candidate du code-barre, comme l'illustre la figure 11. It is therefore possible to provide a rectification step (of angle and of scale) applied to the candidate image, using a 2D model which is specific to the shape of the bar code. In the example of Figure 8, the bar code tilts to the left. The applied 2D model consists of three points, corresponding respectively to the top-left, bottom-left and bottom-right points of the barcode, and makes it possible to straighten the candidate image of the barcode, as shown in the figure. 11.
2. Quadrillage du code-barre et la localisation exacte des points le constituant 2. Grid of the barcode and the exact location of the points constituting it
On applique une grille 2D calculée à partir de la localisation des bords du code-barre et de la connaissance a priori du nombre et des dimensions des points du code-barre. Sur cette grille on prévoit de localiser les emplacements des points constituant le code-barre, selon un modèle prédéterminé qui dépend de la forme et du type du code-barre. Chaque cellule de la grille correspond à un point du code-barre. Chaque point comprend un blob si le module correspondant du code-carre est allumé (blanc) ou ne comprend rien si le module correspondant du code-carre est éteint (noir).We apply a 2D grid calculated from the location of the edges of the bar code and the a priori knowledge of the number and dimensions of the points of the bar code. On this grid, provision is made to locate the locations of the points constituting the bar code, according to a predetermined model which depends on the shape and type of the bar code. Each cell in the grid corresponds to a point in the barcode. Each point includes a blob if the corresponding module of the square code is on (white) or does not include anything if the corresponding module of the square code is off (black).
Un exemple est illustré sur la figure 12 avec une grille carrée régulière pour un code-barre de type datamatrix. An example is illustrated in FIG. 12 with a regular square grid for a datamatrix type barcode.
Avant d'appliquer un quelconque algorithme, il est nécessaire de pouvoir se repérer dans l'amas de points, ou blobs, de l'image candidate. Pour cela, il faut pouvoir organiser cet ensemble sous la forme d'une grille. Des opérations de filtrage, par exemple avec un filtre fréquentiel, sont appliquées pour réduire le bruit et des opérations de séparations, typiquement des opérateurs de morphologie mathématique pour séparer les blobs, sont éventuellement effectuées pour diviser les blobs qui sont collés entre eux. Une étape d'érosion peut être mise en oeuvre pour supprimer les blobs de taille inférieure à une valeur seuil. Before applying any algorithm, it is necessary to be able to locate oneself in the cluster of points, or blobs, of the candidate image. For this, it is necessary to be able to organize this set in the form of a grid. Filtering operations, for example with a frequency filter, are applied to reduce the noise and separation operations, typically mathematical morphology operators to separate the blobs, are optionally performed to divide the blobs which are stuck together. An erosion step can be implemented to remove the blobs of size less than a threshold value.
Ensuite, le centroïde de chaque blob est déterminé, par un algorithme connu, en l'espèce par un calcul de moments. On prévoit alors une opération de clusterisation sur chaque coordonnée verticale et horizontale de l'ensemble de blobs, pour les séparer selon l'un des deux critères : ligne, horizontale, ou colonne, verticale. Cela est possible car le nombre de colonnes et de lignes de blobs sur l'image candidate est connu. Chaque cluster correspond donc à une ligne ou à une colonne selon la dimension sur laquelle on l'applique, voir par exemple la figure 12. Then, the centroid of each blob is determined, by a known algorithm, in this case by a calculation of moments. A clustering operation is then provided on each vertical and horizontal coordinate of the set of blobs, in order to separate them according to one of the two criteria: row, horizontal, or column, vertical. This is possible because the number of columns and rows of blobs on the candidate image is known. Each cluster therefore corresponds to a row or a column depending on the dimension to which it is applied, see for example Figure 12.
On peut ainsi récupérer de façon robuste la position verticale et horizontale d'un blob et déterminer ses coordonnées sur la grille nouvellement constituée. La figure 13 illustre la nouvelle grille générée avec les coordonnées de chaque blob. On notera que les espaces sans blob laissent un vide effectif sur la grille. It is thus possible to recover in a robust way the vertical and horizontal position of a blob and to determine its coordinates on the newly formed grid. Figure 13 illustrates the new grid generated with the coordinates of each blob. Note that spaces without blobs leave an effective void on the grid.
On obtient ainsi une image candidate rectifiée et nettoyée. A rectified and cleaned candidate image is thus obtained.
3. Détermination de l'identifiant Unique inscrit dans le code-barre 3. Determination of the Unique identifier entered in the barcode
A partir de cette image candidate rectifiée et nettoyée, on peut appliquer une méthode de décodage du code-barre en fonction du type(lD, 2D, QR code, PDF417, etc.) de celui-ci. Par exemple pour un datamatrix, on peut employer la librairie DMTX. Une fois l'identifiant (UID) décodé, on pourra utiliser ce code pour identifier l'empreinte lors des traitements suivants et de sa transmission, par exemple vers une base de données. From this rectified and cleaned candidate image, a barcode decoding method can be applied as a function of the type (lD, 2D, QR code, PDF417, etc.) thereof. For example for a datamatrix, we can use the DMTX library. Once the identifier (UID) has been decoded, this code can be used to identify the fingerprint during subsequent processing and its transmission, for example to a database.
L'UID ainsi connu permet de connaître également le code-barre de référence, c'est-à-dire que la position des modules blanc ou noirs est connue. Ainsi, les positions auxquelles des blobs dans l'image candidate devraient apparaître sont connues. The UID thus known also makes it possible to know the reference bar code, that is to say that the position of the white or black modules is known. Thus, the positions at which blobs in the candidate image should appear are known.
On peut alors calculer un ensemble de descripteurs caractérisant chacun des points du code-barres candidat.2 It is then possible to calculate a set of descriptors characterizing each of the points of the candidate barcode. 2
Pour limiter l'influence des éventuels parasites évoqués ci-avant, on prévoit de mettre en oeuvre au moins l'une, et de préférence au moins deux, des méthodes suivantes. L'avantage de plusieurs méthodes est de bénéficier de leur complémentarité. La solution proposée gagne en robustesse. Par exemple la méthode 5.2 ci-après est plus sensible aux problèmes liés à la détérioration des points après cellophanage, alors que la méthode 5.1 reste relativement robuste à ce type de détérioration. In order to limit the influence of the possible parasites mentioned above, provision is made to implement at least one, and preferably at least two, of the following methods. The advantage of several methods is that they benefit from their complementarity. The proposed solution gains in robustness. For example, method 5.2 below is more sensitive to the problems associated with the deterioration of the points after cellophaning, while method 5.1 remains relatively robust to this type of deterioration.
4. Sélection des points du code-barre 4. Selection of barcode points
Une fois la grille 2D mise en place, on peut effectuer une étape de nettoyage, dans laquelle on commence par éliminer les positions de la grille qui ne correspondent pas à une gravure laser du code-barre, par exemple les espaces vides entre les gravures, celles où il n'y a pas de blob, les tâches non centrées, les lignes ou traces de cellophane d'emballage du paquet de tabac. Par exemple, si un point blanc sur l'image candidate correspond à une position dans l'image de référence pour laquelle le module est noir (éteint), alors ce point est éliminé, c'est-à-dire non traité, car il ne doit pas correspondre à un blob de gravure laser. Once the 2D grid is in place, we can perform a cleaning step, in which we start by eliminating the positions of the grid that do not correspond to a laser engraving of the bar code, for example the empty spaces between the engravings, those where there is no blob, non-centered spots, lines or traces of cellophane wrapping the tobacco package. For example, if a white point on the candidate image corresponds to a position in the reference image for which the module is black (off), then this point is eliminated, i.e. unprocessed, because it should not match a laser engraving blob.
Ensuite, on peut prévoir au moins l'une des étapes parmi : Then, at least one of the steps can be provided from:
- éliminer, c'est-à-dire ne pas traiter, les points correspondant aux éléments de repérage propres à chaque code-barre et qui sont invariants, - eliminate, that is to say do not process, the points corresponding to the identification elements specific to each bar code and which are invariant,
- sélectionner une zone prédéterminée de l'image de référence, telle que la sélection correspond à une sous-partie du code-barre, par exemple en sélectionnant une zone de 10x10 modules au lieu de 24x24 usuels pour un datamatrix, ce qui permet d'accélérer le traitement et de réduire la taille de l'empreinte. Dans ce cas, pour l'image candidate, on prévoit de sélectionner une zone de mêmes coordonnées pour le calcul d'empreinte. - select a predetermined area of the reference image, such that the selection corresponds to a sub-part of the barcode, for example by selecting an area of 10x10 modules instead of the usual 24x24 for a datamatrix, which makes it possible to speed up processing and reduce the size of the imprint. In this case, for the candidate image, provision is made to select an area with the same coordinates for the footprint calculation.
Par « éléments de repérage » on entend des éléments prédéterminés, inhérents au type de code- barre. Par exemple (figure 8) un datamatrix comprend 4 éléments de repérage sous forme de lignes sur ses bords : une ligne continue en bas et une autre à gauche, une ligne de pointillés noir/blanc à droite et une autre en haut. Dans ce cas, on élimine les lignes de repérage continues (invariantes en noir). Un QRcode comprend 3 éléments de repérage sous forme d'amers. Etc. Ces éléments de repérage permettent de déterminer l'échelle du code-barre, donc les dimensions de ses modules.The term “identification elements” is understood to mean predetermined elements inherent to the type of bar code. For example (figure 8) a datamatrix comprises 4 marking elements in the form of lines on its edges: a continuous line at the bottom and another on the left, a black / white dotted line on the right and another on the top. In this case, the continuous registration lines (invariant in black) are eliminated. A QRcode consists of 3 marking elements in the form of landmarks. Etc. These marking elements make it possible to determine the scale of the barcode, and therefore the dimensions of its modules.
Dans certains cas le choix des points à conserver est directement lié à la méthode de calcul de l'empreinte retenue. Elle se déroule alors dans l'étape 5 ci-dessous. In some cases the choice of points to keep is directly linked to the method of calculating the footprint selected. It then takes place in step 5 below.
5. Calcul des Propriétés 5. Calculation of Properties
On prévoit de mettre en oeuvre au moins l'une, et de préférence au moins 2, des méthodes suivantes.It is planned to implement at least one, and preferably at least 2, of the following methods.
Chacune de ces méthodes permet de calculer une empreinte respective. Les empreintes correspondant à chaque méthode sont indépendantes, mais dans les formats de stockage de l'empreinte, le format « lourd » décrit ultérieurement contient un résumé binarisé de l'image à partir duquel on peut regénérer l'ensemble des empreintes. On peut aussi stocker les empreintes sous forme vectorielle. En particulier, on peut prévoir un vecteur à N composantes, avec N le nombre total de méthodes de calcul d'empreintes, la position de chaque composante dans le vecteur correspondant à une méthode prédéfinie. Each of these methods makes it possible to calculate a respective footprint. The footprints corresponding to each method are independent, but in the footprint storage formats, the “heavy” format described later contains a binarized summary of the image from which all of the footprints can be regenerated. It is also possible to store the fingerprints in vector form. In particular, it is possible to provide a vector with N components, with N the total number of fingerprint calculation methods, the position of each component in the vector corresponding to a predefined method.
5.1. Analyse des rapports de surface de couples de blobs 5.1. Analysis of the area ratios of pairs of blobs
L'allure de l'image candidate, ou image de contrôle, prise avec une bonnette lors de la phase de contrôle est différente de l'image de référence du code-barre prise lors de la phase d'enrôlement. Ainsi, mettre en oeuvre un calcul de métrique brute telle que la surface ou le périmètre de chaque blob, et comparer les résultats entre les images de référence et les images candidates, peut aboutir à des résultats qui ne sont pas satisfaisants. The appearance of the candidate image, or control image, taken with a windshield during the control phase is different from the reference image of the bar code taken during the enrollment phase. Thus, implementing a calculation of raw metric such as the area or the perimeter of each blob, and comparing the results between the reference images and the candidate images, can lead to results which are not satisfactory.
Néanmoins, les variations qui ont affecté un point donné d'un code-barre 2D, par exemple un datamatrix, dont l'image candidate a été prise avec smartphone, ont normalement affecté de la même façon un autre point voisin. Il peut être ainsi intéressant de calculer des rapports entre ces points.However, the variations which affected a given point of a 2D barcode, for example a datamatrix, whose candidate image was taken with a smartphone, normally affected another neighboring point in the same way. It can thus be interesting to calculate the ratios between these points.
A cet effet, on prévoit un traitement d'image pour chaque image de référence. To this end, image processing is provided for each reference image.
Une image originale est acquise en couleur RGB par une caméra placée directement sur la ligne de production avant emballage du paquet. L'image originale est ensuite transformée niveaux de gris.An original image is acquired in RGB color by a camera placed directly on the production line before packaging the package. The original image is then transformed into grayscale.
Elle peut ensuite être redressée, par exemple en se basant sur les 3 points extrêmes formant le carré d'un datamatrix, ce qui revient à appliquer une grille dont chaque cellule est soit vide, soit comprend un point du datamatrix, comme illustré figure 14. It can then be straightened, for example based on the 3 extreme points forming the square of a datamatrix, which amounts to applying a grid in which each cell is either empty or includes a point of the datamatrix, as illustrated in figure 14.
* Calcul de la surface de chaque point du datamatrix. * Calculation of the area of each point of the datamatrix.
Depuis l'image binaire (« binaire » au sens où chaque cellule est vide ou comprend un point) calculée dans l'étape précédente, chaque point du datamatrix forme un objet dont on extrait les caractéristiques correspondantes. From the binary image (“binary” in the sense that each cell is empty or includes a point) calculated in the previous step, each point of the datamatrix forms an object from which the corresponding characteristics are extracted.
Par exemple pour les 2 premières lignes uniquement du datamatrix de la figure 14, on obtient le tableau de la figure 15 dans lequel les indices indiquent la position d'un point dans le datamatrix (allumé, blanc), et un tiret indique qu'il n'y a pas de point à cette position (point éteint, noir). For example for the first 2 lines only of the datamatrix of figure 14, we obtain the table of figure 15 in which the indices indicate the position of a point in the datamatrix (on, white), and a dash indicates that it there is no point at this position (point off, black).
Pour tous les points allumés, on en extrait la surface, c'est-à-dire l'aire. Par exemple, après avoir binarisé l'image et déposé la grille, on peut considérer chaque blob comme un objet connexe indépendant. Comme il s'agit d'un objet connexe binaire, blanc sur un fond noir, il est possible d'extraire sa surface en comptant le nombre de pixels blancs. Par exemple pour les 2 lignes susmentionnées, on obtient : For all the points on, we extract the surface, that is to say the area. For example, after having binarized the image and dropped the grid, we can consider each blob as an independent connected object. Since it is a related binary object, white on a black background, it is possible to extract its area by counting the number of white pixels. For example for the 2 lines mentioned above, we obtain:
Surface(0,0)=748, Surface(0,2)=814, Surface(0,4)=861, Surface(0,6)=979, Surface(0,8)=p899, Surface(0,10)=936, Surface(0,12)=868, Surface(014)=972, Surface(016)=875, Surface(018)=886, Surface(0 ,20)=896, Surface(0,22)=903, Area (0.0) = 748, Area (0.2) = 814, Area (0.4) = 861, Area (0.6) = 979, Area (0.8) = p899, Area (0.10 ) = 936, Area (0.12 ) = 868, Area (014) = 972, Area (016) = 875, Area (018) = 886, Area (0, 20) = 896, Area (0.22) = 903,
Surface(1,0)1024, Surface(1,2)=955, Surface((1,3)=952, Surface(1,5p899, Surface(1,9)= 1107, Surface((1,10)=1041, Surface(0 ,13)=1213, Surface(0 ,14)=1048, Surface(0 ,16)=1002, Surface(0 ,20)=1094, Surface(0,22)=1039, Surface(0,23)=981 Area (1.0) 1024, Area (1.2) = 955, Area ((1.3) = 952, Area (1.5 p899, Area (1.9) = 1107, Area ((1.10) = 1041, Area (0, 13) = 1213, Area (0, 14) = 1048, Area (0, 16) = 1002, Area (0, 20) = 1094, Area (0.22) = 1039, Area ( 0.23) = 981
En extrayant la surface de l'ensemble des points du code-barre de référence, on peut ainsi construire un vecteur V_Ref dont les éléments sont la surface des points allumés du datamatrix selon un ordre prédéterminé, en l'espèce de gauche à droite et de haut en bas. By extracting the surface of all the points of the reference barcode, it is thus possible to construct a vector V_Ref whose elements are the surface of the lit points of the datamatrix according to a predetermined order, in this case from left to right and from top to bottom.
Soit V_Ref l,m = Surface (i,j) avec i=0:23; j=0:23; m=0:nombre de points allumés On obtient par exemple pour les 2 lignes susmentionnées : V_Ref 1,0 = Surface (0,0) ; V_Ref 1,1 = Surface (0,2) ; V_Ref 1,2 = Surface (0,4) ; V_Ref 1,3 = Surface (0,6); V_Ref 1,4 = Surface (0,8) ; etc. ; V_Ref 1,23 = Surface (0,23). Let V_Ref l, m = Surface (i, j) with i = 0: 23; j = 0.23; m = 0: number of points lit For example, we obtain for the 2 aforementioned lines: V_Ref 1.0 = Area (0.0); V_Ref 1.1 = Area (0.2); V_Ref 1,2 = Area (0.4); V_Ref 1.3 = Area (0.6); V_Ref 1.4 = Area (0.8); etc. ; V_Ref 1.23 = Area (0.23).
On peut alors calculer des rapports de surface de chaque point avec son voisin, sur l'ensemble du datamatrix. Il existe plusieurs implémentations possibles, par exemple selon un parcours de gauche à droite et de haut en bas, un point à l'extrémité droite d'une ligne pouvant être voisin avec un point à l'extrémité gauche de la ligne suivante, comme illustré par les flèches de la figure 16. We can then calculate surface ratios of each point with its neighbor, over the entire datamatrix. There are several possible implementations, for example following a path from left to right and from top to bottom, a point at the right end of a line being able to be neighboring with a point at the left end of the following line, as illustrated. by the arrows in figure 16.
On obtient ainsi l'ensemble du datamatrix de référence sous forme de vecteur qui renferme l'ensemble des rapports de surface de 2 points successifs et qui forme ainsi l'empreinte dudit datamatrix. The whole of the reference datamatrix is thus obtained in the form of a vector which contains all of the surface ratios of 2 successive points and which thus forms the imprint of said datamatrix.
On peut aussi calculer V_Ref_Div i,m =V_Ref i,m / V_Ref i,m+i avec m=0:nombre de points allumés-1We can also calculate V_Ref_Div i , m = V_Ref i , m / V_Ref i , m + i with m = 0: number of points lit-1
Où V_Ref i,m+i est la surface de l'élément suivant dans le vecteur selon le parcours choisi, en l'espèce de gauche à droite et de haut en bas. Where V_Ref i , m + i is the surface of the next element in the vector according to the chosen path, in this case from left to right and from top to bottom.
Pour la phase de contrôle, on met en oeuvre le même algorithme sur l'image candidate que sur l'image de référence. On obtient ainsi : For the control phase, the same algorithm is implemented on the candidate image as on the reference image. We thus obtain:
V_Can l,m =Surface (i,j) avec i=0:23; j=0:23; m=0:nombre de points allumés dans le présent exemple ; et on peut calculer le vecteur qui contient les rapports de surface entre les points du datamatrix en allant de gauche à droite et de haut en bas, soit : V_Can l, m = Area (i, j) with i = 0: 23; j = 0.23; m = 0: number of points lit in this example; and we can calculate the vector which contains the area ratios between the points of the datamatrix by going from left to right and from top to bottom, namely:
V_Can_Div i,m =V Susi,m / V Sus i,m+i avec m=0:nombre de points allumés V_Can_Div i , m = V Susi , m / V Sus i , m + i with m = 0: number of points lit
Avec comme V faisant référence à un vecteur, l'indice Ref pour l'image de référence, l'indice Can ou l'indice Sus pour l'image candidate (également appelée suspecte). With as V referring to a vector, the index Ref for the reference image, the index Can or the index Sus for the candidate image (also called suspect).
Pour la phase de contrôle, on extrait de la base de données le ou les datamatrix de référence qui contiennent le même nombre de points, à la même position. La taille des 2 vecteurs de rapport de surface, de référence et candidat, qui sont des empreintes des datamatrix, doit être la même. For the control phase, the reference datamatrix (s) which contain the same number of points, at the same position, are extracted from the database. The size of the 2 area ratio vectors, reference and candidate, which are datamatrix fingerprints, must be the same.
Pour chaque image de référence, on calcule la valeur absolue de la différence entre le vecteur des rapports candidats et le vecteur des rapports références, à chaque fois. Si la différence d'un couple est plus petite qu'un seuil de valeur prédéterminé, alors on augmente un score d'authenticité du datamatrix, en l'espèce un score qui est initialisé à 0 et incrémenté de +1 à chaque fois que la condition est validée, de l'image candidate. Ensuite, on calcule le pourcentage de rapports qui sont plus petits que le seuil par rapport au nombre total de rapports établis, qui est la taille totale du vecteur, soit : For each reference image, the absolute value of the difference between the vector of candidate ratios and the vector of reference ratios is calculated each time. If the difference of a pair is smaller than a predetermined value threshold, then an authenticity score of the datamatrix is increased, in this case a score which is initialized at 0 and incremented by +1 each time the condition is validated, of the candidate image. Then, we calculate the percentage of reports that are smaller than the threshold compared to the total number of reports established, which is the total size of the vector, namely:
V_Diff n 1,m = |V_Sus_Div 1,m -V_Ref_Div i,m n | avec n=l:nombre d' images de référence V_Diff n 1, m = | V_Sus_Div 1, m -V_Ref_Div i , m n | with n = l: number of reference images
En l'espèce, la valeur du seuil est comprise entre 0.04 et 0.12, et par exemple égale à 0.08. Si la différence est strictement inférieure à ce seuil, on augmente le score d'authenticité de 1. Ensuite, on divise le score obtenu par la taille du vecteur et on multiplie par 100, si ce pourcentage est strictement supérieur à une valeur seuil, par exemple comprise entre 60% et 99% ; et en l'espèce égale à 78%, l'image candidate est authentique. Les valeurs peuvent être choisies d'une façon empirique par rapport à la base de données à disposition. In this case, the value of the threshold is between 0.04 and 0.12, and for example equal to 0.08. If the difference is strictly less than this threshold, we increase the authenticity score by 1. Then, we divide the score obtained by the size of the vector and we multiply by 100, if this percentage is strictly greater than a threshold value, by example between 60% and 99%; and in this case equal to 78%, the candidate image is authentic. The values can be chosen empirically from the database available.
A noter que le parcours décrit ici de gauche à droite et de bas en haut peut aussi être de droite à gauche, de bas en haut, en colonne ou en diagonale, ou non linéaire. Il importe juste qu'il soit prédéfini. Note that the route described here from left to right and from bottom to top can also be from right to left, from bottom to top, in column or diagonal, or non-linear. It just matters that it is predefined.
5.2 Position Angulaire des Irrégularités des Blobs Dans cette approche on détermine la position angulaire de points spécifiques situés sur le contour de chaque blob. On choisit deux points, un premier dont la distance avec le centroïde du blob est la plus faible et un deuxième point dont la distance avec ce même centroïde est la plus élevée. Pour chaque point, la position angulaire dans un repère prédéterminé est calculée. 5.2 Angular Position of Blob Irregularities In this approach, the angular position of specific points located on the contour of each blob is determined. We choose two points, a first whose distance from the centroid of the blob is the smallest and a second point whose distance from this same centroid is the highest. For each point, the angular position in a predetermined coordinate system is calculated.
On peut alors, par superposition des centroïdes, comparer les positions angulaires des points spécifiques pour un blob de l'image candidate aux positions angulaires des points spécifiques pour le blob correspondant de l'image de référence, et considérer que les 2 blobs sont identiques si les valeurs des positions angulaires sont inférieures à une valeur seuil prédéterminée, et que les 2 blobs sont différents sinon. We can then, by superposition of the centroids, compare the angular positions of the specific points for a blob of the candidate image with the angular positions of the specific points for the corresponding blob of the reference image, and consider that the 2 blobs are identical if the values of the angular positions are less than a predetermined threshold value, and that the 2 blobs are different otherwise.
Par exemple sur la figure 17 et la figure 18, on a un blob de l'image candidate CAND de centroïde O', un premier point 10' dont la distance avec le centroïde O' du blob est la plus grande et un deuxième point 20' dont la distance avec ce même centroïde est la plus petite. On a un également un blob de l'image de référence REF de centroïde O, un premier point 10 dont la distance avec le centroïde O du blob est la plus grande et un deuxième point 20 dont la distance avec ce même centroïde est la plus petite. Les 2 blobs sont superposés par leur centroïde respectif. For example in figure 17 and figure 18, we have a blob of the candidate image CAND of centroid O ', a first point 10' whose distance from the centroid O 'of the blob is the greatest and a second point 20 'whose distance from this same centroid is the smallest. We also have a blob of the reference image REF of centroid O, a first point 10 whose distance from the centroid O of the blob is the greatest and a second point 20 whose distance from this same centroid is the smallest. . The 2 blobs are superimposed by their respective centroid.
Sur la figure 17, les positions angulaires des points spécifiques entre le blog CAND et le blob REF sont les mêmes, par exemple en calculant l'angle entre la droite O'-10' et la droite O'-20' et en calculant l'angle entre la droite 0-10 et la droite 0-20. Ces deux blobs sont alors considérés comme les mêmes.In figure 17, the angular positions of the specific points between the CAND blog and the REF blob are the same, for example by calculating the angle between the line O'-10 'and the line O'-20' and by calculating the 'angle between line 0-10 and line 0-20. These two blobs are then considered the same.
Sur la figure 18, les positions angulaires des points spécifiques entre le blog CAND et le blob REF sont différentes, par exemple en calculant l'angle entre la droite O'-10' et la droite O'-20' et en calculant l'angle entre la droite 0-10 et la droite 0-20. Ces deux blobs sont considérés comme différents.In figure 18, the angular positions of the specific points between the CAND blog and the REF blob are different, for example by calculating the angle between the line O'-10 'and the line O'-20' and by calculating the angle between line 0-10 and line 0-20. These two blobs are considered different.
On peut calculer un score de similarité entre deux ensembles de blobs. We can calculate a similarity score between two sets of blobs.
On peut aussi ignorer les blobs qui présentent une irrégularité de contour qui n'est pas assez marquée, par exemple en faisant la différence de distance entre le point de distance minimale 20, 20' et le point de distance maximale 10, 10' et d'ignorer ce blob si cette différence est trop faible, c'est-à- dire inférieure à une valeur seuil prédéterminée. We can also ignore the blobs which present an irregularity of contour which is not marked enough, for example by making the difference in distance between the point of minimum distance 20, 20 'and the point of maximum distance 10, 10' and d 'ignore this blob if this difference is too small, that is to say less than a predetermined threshold value.
5.3 Cartographie des Irrégularités des Blobs 5.3 Mapping of Blob Irregularities
Cette approche consiste à repérer les principales irrégularités d'un blob et à les inscrire sur une carte pour pouvoir les comparer. This approach involves spotting the main irregularities in a blob and writing them down on a map so that you can compare them.
Sur chaque blob, on récupère son contour et on détermine, avec les gradients, l'orientation de ce même contour. On peut représenter les différentes valeurs d'orientations avec des couleurs. Une fois cette carte d'orientation obtenue pour un blob, on cherche à la comparer à une carte d'orientation parfaite, qui correspond à la carte d'orientation d'un cercle. On each blob, we recover its contour and we determine, with the gradients, the orientation of this same contour. We can represent the different orientation values with colors. Once this orientation map has been obtained for a blob, we try to compare it to a perfect orientation map, which corresponds to the orientation map of a circle.
Ainsi, en chaque point du contour, on vient comparer son orientation à celui d'un cercle parfait. Si l'écart des orientations dépasse une valeur seuil prédéfinie, alors ce point du contour est marqué sur une nouvelle carte, qui est la carte des irrégularités du blob traité. Thus, at each point of the contour, we compare its orientation with that of a perfect circle. If the deviation of the orientations exceeds a predefined threshold value, then this point of the contour is marked on a new map, which is the map of the irregularities of the processed blob.
Ainsi, comparé à la carte des orientations d'un cercle, on parvient à distinguer des points où les creux ou les bosses sont trop importants par rapport au seuil. Thus, compared to the map of the orientations of a circle, it is possible to distinguish points where the hollows or bumps are too large compared to the threshold.
On procède ainsi sur chaque blob pour obtenir une multitude de cartes d'irrégularités, propres à chacun. Dans le cadre d'une comparaison de deux blobs, on peut déterminer si les irrégularités communes et localisées aux mêmes endroits sont suffisamment importantes pour décider si les blobs sont similaires et obtenir un score de similarité entre chaque blob. 5.4 Construction d'un profil de blob We proceed in this way on each blob to obtain a multitude of irregularity cards, specific to each one. In a comparison of two blobs, it can be determined whether the irregularities that are common and located in the same places are large enough to decide whether the blobs are similar and to obtain a similarity score between each blob. 5.4 Building a blob profile
Cette approche consiste à construire une courbe caractérisant le profil d'un blob. Il permet ensuite de réaliser une comparaison de profils entre le profil d'un blob de l'image candidate et le profil du blob correspondant de l'image de référence. This approach consists in constructing a curve characterizing the profile of a blob. It then makes it possible to carry out a comparison of profiles between the profile of a blob of the candidate image and the profile of the corresponding blob of the reference image.
Le profil du blob est déterminé en extrayant la distance au centroïde de chaque point du contour du blob, le long d'un parcours prédéterminé, de préférence sur l'ensemble du contour du blob. The profile of the blob is determined by extracting the distance to the centroid of each point of the outline of the blob, along a predetermined path, preferably over the entire outline of the blob.
On obtient ainsi un profil pour un blob de l'image candidate et un profil pour le blob correspondant de l'image de référence. A partir de ces profils, on peut extraire une ou plusieurs métriques afin de déterminer si ces deux profils sont similaires ou non. Par exemple, on peut mesurer la corrélation entre les deux profils pour déterminer s'ils sont semblables ou non. A profile is thus obtained for a blob of the candidate image and a profile for the corresponding blob of the reference image. From these profiles, one or more metrics can be extracted in order to determine whether these two profiles are similar or not. For example, we can measure the correlation between the two profiles to determine if they are similar or not.
Par exemple sur la figure 19, les deux profils illustrés présentent une corrélation de 0.77 et les blobs sont considérés comme identiques. For example in Figure 19, the two profiles illustrated have a correlation of 0.77 and the blobs are considered identical.
Sur la figure 20, les deux profils illustrés présentent une corrélation de -0.07 et les blobs sont considérés comme différents. In Figure 20, the two profiles shown show a correlation of -0.07 and the blobs are considered to be different.
5.5 Caractérisations basées sur l'histogramme des gradients orientés (HOG) 5.5 Characterizations based on the oriented gradient histogram (HOG)
Chaque point extrait de l'image binaire est caractérisé par un ensemble d'histogrammes, calculés à partir de l'intensité et de l'orientation des gradients. En partant du centre de chaque point (ou blob), la boite englobante de ce dernier est centrée dans une fenêtre de 64x64 pixels qui est segmentée en blocs de 8x8. En partant de ces blocs de 8x8, les histogrammes sont calculés à partir de l'intensité et de l'orientation des gradients de chaque pixel constituant chacune des imagettes (8x8 pixels). Les histogrammes sont calculés sur des blocs de 8x8 pixels, puis normalisés par blocs de 16x16 pixels, en concaténant les 4 histogrammes. Les blocs de 16x16 se chevauchent de 8 pixels. En partant du centroïde de chaque point, l'image binaire de ce dernier est centrée dans une fenêtre de 64x64 pixels. Cette taille doit en fait être un multiple de 8 et peut varier selon le modèle de rectification et la taille des points. Pour l'exemple décrit ici, la taille de la boite englobante des points est limitée à 64x64 pixels. Ensuite on calcule les histogrammes normalisés sur cette image. Ainsi chaque point est représenté par 6x6 histogrammes permettant la caractérisation locale de sa forme. Each point extracted from the binary image is characterized by a set of histograms, calculated from the intensity and orientation of the gradients. Starting from the center of each point (or blob), its bounding box is centered in a 64x64 pixel window which is segmented into 8x8 blocks. Starting from these 8x8 blocks, the histograms are calculated from the intensity and the orientation of the gradients of each pixel constituting each of the images (8x8 pixels). The histograms are calculated on blocks of 8 × 8 pixels, then normalized by blocks of 16 × 16 pixels, by concatenating the 4 histograms. The 16x16 blocks overlap by 8 pixels. Starting from the centroid of each point, the binary image of the latter is centered in a window of 64x64 pixels. This size should actually be a multiple of 8 and may vary depending on the grinding pattern and stitch size. For the example described here, the size of the bounding box of the points is limited to 64x64 pixels. Then we calculate the normalized histograms on this image. Thus each point is represented by 6x6 histograms allowing the local characterization of its shape.
Dans le cas général, le descripteur d'une image I d'un code 2D représenté par une grille de NxM est constitué de l'ensemble des descripteurs de tous les points détectés. In the general case, the descriptor of an image I of a 2D code represented by a grid of NxM consists of all the descriptors of all the points detected.
Ainsi, on a : Descri pteur(l)={descripteur(pij ), iε[l..N], jε [1..M]} Avec pi,j un point détecté Thus, we have: Descri ptor (l) = {descriptor (pi j ), iε [l..N], jε [1..M]} With p i , j a detected point
Le descripteur d'un point p à la position i,j est constitué à son tour de l'ensemble des histogrammes des gradients orientés (Hog) de tous les blocs de taille B x B pixels qui se chevauchent de B/2 pixels. Le nombre total des blocs extraits de l'image du point p est de K x L. The descriptor of a point p at position i, j in turn consists of the set of histograms of the oriented gradients (Hog) of all the blocks of size B × B pixels which overlap by B / 2 pixels. The total number of blocks extracted from the image of point p is K x L.
On a ainsi : descripteur(pij)={Hlog(blockk,i ), kε[l..K], lε[l..L]} ; avec K=(w /0.5*B)-1 et L = (h/0.5 * B) -1 ; où h et w représentent les dimensions de G image du point py We thus have: descriptor (p ij ) = {Hlog (block k, i ), kε [l..K], lε [l..L]}; with K = (w /0.5*B)-1 and L = (h / 0.5 * B) -1; where h and w represent the dimensions of G image of point py
La mesure de similarité entre l'image de référence et l'image candidate consiste dans un premier temps à calculer un score de similarité pour chaque couple de points "référence-candidat". Ensuite, l'ensemble de ces scores sert à calculer un score global mesurant la similarité entre les deux images.The measurement of similarity between the reference image and the candidate image consists firstly in calculating a similarity score for each pair of “reference-candidate” points. Then, all of these scores are used to calculate an overall score measuring the similarity between the two images.
On peut effectuer une mesure de la similarité locale, par couples de points. It is possible to carry out a measurement of the local similarity, by pairs of points.
En se basant sur la grille 2D de chacune des deux images candidate et de référence, la mise en correspondance des points selon leur position dans la grille permet de constituer des couples de points. Une homogénéisation de la taille des points (de référence, candidats) est nécessaire pour chaque couple afin de palier au problème de variation des conditions d'acquisition entre le système d'enrôlement et le système de contrôle. Based on the 2D grid of each of the two candidate and reference images, the matching of the points according to their position in the grid makes it possible to constitute pairs of points. A homogenization of the size of the points (reference, candidates) is necessary for each pair in order to overcome the problem of variation of the acquisition conditions between the enrollment system and the control system.
Ainsi, la boite englobante du point candidat est redimensionnée à la taille de la boite englobante du point de référence correspondant. Thus, the bounding box of the candidate point is resized to the size of the bounding box of the corresponding reference point.
La similarité entre un point de référence p_Ref et point candidat p_Cand est mesurée par la moyenne des distances des histogrammes calculés à partir des images des boites englobantes des chacun des deux points. A cet effet, on peut utiliser la distance euclidienne, ou d'autres distances. The similarity between a reference point p_Ref and candidate point p_Cand is measured by the average of the distances of the histograms calculated from the images of the bounding boxes of each of the two points. For this purpose, we can use the Euclidean distance, or other distances.
On a ainsi : We thus have:
Similarité(p_Ref,p_Cand )=Σ KxLi=i distance(Hog Ref [block i],Hog cand [block i]) / KxL Similarity (p_Ref, p_Cand) = Σ KxL i = i distance (Hog Ref [block i], Hog cand [block i]) / KxL
Avec l'image de chacune des boites englobantes composée de KxL blocs. With the image of each of the bounding boxes made up of KxL blocks.
En alternative ou en complément, on peut effectuer une mesure de la similarité globale. As an alternative or in addition, a measurement of the overall similarity can be carried out.
Dans ce cas, la mesure de similarité globale entre l'image de référence et l'image candidate consiste à calculer le taux de points de référence dont la distance est inférieure à un seuil prédéterminé. In this case, the measurement of overall similarity between the reference image and the candidate image consists in calculating the rate of reference points whose distance is less than a predetermined threshold.
On peut aussi réaliser une autre mesure, en attribuant un poids plus important aux points de référence les plus pertinents, c'est-à-dire qui présentent une déformation liée à l'aléa de la gravure laser et qui s'avèrent plus riches d'un point de vue de leur caractérisation, c'est-à-dire dont le contour n'est pas parfaitement circulaire. Another measurement can also be carried out, by assigning a greater weight to the most relevant reference points, i.e. which present a deformation linked to the hazard of the laser engraving and which turn out to be richer in terms of reference. 'a point of view of their characterization, that is to say whose contour is not perfectly circular.
5.6 Carte de dissimilarité locale (CDL) 5.6 Local dissimilarity map (CDL)
On peut prévoir une étape de filtrage par carte de dissimilarité locale (CDL), éventuellement précédée d'une étape de débruitage. A local dissimilarity map (CDL) filtering step can be provided, possibly preceded by a denoising step.
Une carte de dissimilarité locale (CDL) permet de mesurer les écarts locaux entre deux images binaires, c'est à dire deux images en noir et blanc (pas en niveaux de gris). A local dissimilarity map (CDL) makes it possible to measure the local differences between two binary images, ie two images in black and white (not in gray levels).
Le calcul d'une carte de dissimilarité locale est une version modifiée de la distance de Hausdorff, il est notamment décrit par Morain-Nicolier, Frédéric & LANDRE, Jérome & Ruan, Su. (2009). « Détection d'objet par mesure de dissimilarités locales. ». The calculation of a local dissimilarity map is a modified version of the Hausdorff distance, it is notably described by Morain-Nicolier, Frédéric & LANDRE, Jérome & Ruan, Su. (2009). “Object detection by measuring local dissimilarities. ".
On définit par CDLbin la CDL de deux images binaires A et B comme étant : We define by CDLbin the CDL of two binary images A and B as being:
C D Lb ï n (A, B ) ( p ) = |A(p)-B(p) | max[dA(p), d B(p)] avec p = (x; y) et dX(p) la transformée en distance de l'image X au point p, où en l'espèce X = A ou B.C D Lb ï n (A, B) (p) = | A (p) -B (p) | max [dA (p), d B (p)] with p = (x; y) and dX (p) the transform into distance from image X to point p, where in this case X = A or B.
L'application d'une carte de dissimilarité locale est connue notamment dans le domaine médical pour la recherche de tumeurs, comme décrit par exemple dans l'article « Localisation de tumeurs dans des séquences TEP, par détection de changements au moyen de dissimilarités locales » Ketata et al. (CORESA 2013 - 16ème édition du colloque compression et REprésentation des Signaux Audiovisuels Le Creusot, FRANCE, 28 et 29 novembre 2013). The application of a local dissimilarity map is known in particular in the medical field for the search for tumors, as described for example in the article “Localization of tumors in PET sequences, by detection of changes by means of local dissimilarities” Ketata et al. (CORESA 2013 - 16th edition of the compression and REpresentation of Audiovisual Signals conference Le Creusot, FRANCE, November 28 and 29, 2013).
On prévoit ici de comparer les écarts entre une première image binaire A, par exemple une image de référence, et une deuxième image binaire B, par exemple une image candidate. Provision is made here to compare the differences between a first binary image A, for example a reference image, and a second binary image B, for example a candidate image.
On peut aussi prévoir de comparer les écarts entre une première sous-image de l'image binaire A, et une deuxième sous-image de l'image binaire B, dont la position et les dimensions sont les mêmes (à un rapport d'agrandissement près). On obtient d'abord une première sous-image par application d'un masque numérique comprenant une première fenêtre Fl correspondant à tout ou partie de l'image candidate, ce qui permet d'extraire la partie de l'image candidate inscrite dans la première fenêtre Fl. It is also possible to provide for comparing the differences between a first sub-image of binary image A, and a second sub-image of binary image B, the position and dimensions of which are the same (at an enlargement ratio close). A first sub-image is first obtained by applying a digital mask comprising a first window F1 corresponding to all or part of the candidate image, which makes it possible to extract the part of the candidate image recorded in the first window Fl.
De manière similaire, on obtient ensuite une deuxième sous-image par application d'un masque numérique comprenant une deuxième fenêtre F2 correspondant à tout ou partie de l'image de référence, ce qui permet d'extraire la partie de l'image de référence inscrite dans la deuxième fenêtre F2. Similarly, a second sub-image is then obtained by applying a digital mask comprising a second window F2 corresponding to all or part of the reference image, which makes it possible to extract the part of the reference image entered in the second window F2.
La forme de la fenêtre Fl est identique à celle de la fenêtre F2. La taille de la fenêtre F2 est égale à celle de la fenêtre Fl, au facteur d'échelle près. The shape of the window F1 is identical to that of the window F2. The size of the window F2 is equal to that of the window F1, up to the scale factor.
Si l'image candidate est une image déjà binaire, alors la première image binaire utilisée pour le calcul de la carte de dissimilarité locale est la première sous-image obtenue par la première fenêtre Fl, et la deuxième image binaire utilisée pour le calcul de la carte de dissimilarité local est la deuxième sous- image obtenue par la deuxième fenêtre F2. If the candidate image is an already binary image, then the first binary image used for the calculation of the local dissimilarity map is the first sub-image obtained by the first window F1, and the second binary image used for the calculation of the local dissimilarity map is the second sub-image obtained by the second window F2.
On calcule alors CDL(F1, F2) la CDL entre la première sous-image obtenue par la première fenêtre Fl, et la deuxième sous-image obtenue par la deuxième fenêtre F2. CDL (F1, F2) is then calculated the CDL between the first sub-image obtained by the first window F1, and the second sub-image obtained by the second window F2.
Puis on compare CDL(F1, F2) à un seuil D_CDL prédéterminé et : Then we compare CDL (F1, F2) to a predetermined D_CDL threshold and:
- si CDL(F1, F2) > D_CDL alors l'image candidate est considérée comme différente de l'image de référence, - if CDL (F1, F2)> D_CDL then the candidate image is considered to be different from the reference image,
- si CDL(F1, F2) < D_CDL alors l'image candidate est considérée comme identique à l'image de référence. - if CDL (F1, F2) <D_CDL then the candidate image is considered identical to the reference image.
La mise en valeur graphique peut être réalisée par au moins parmi : une modification de la valeur des pixels (couleur, luminance), l'affichage d'un cadre autour des points ou l'affichage d'un cadre à la périphérie des fenêtres Fl et F2, par exemple en pointillés ou en couleur, etc. The graphic enhancement can be carried out by at least among: a modification of the value of the pixels (color, luminance), the display of a frame around the points or the display of a frame at the periphery of the windows Fl and F2, for example dotted or colored, etc.
Si l'image candidate est en niveaux de gris, elle est découpée en plusieurs images binaires. If the candidate image is in gray levels, it is split into several binary images.
Par exemple, la valeur maximale et la valeur minimale des pixels de l'image candidate sont enregistrées dans une mémoire. L'écart entre la valeur maximale et la valeur minimale est divisé en plusieurs valeurs seuil intermédiaires, de préférence à intervalles réguliers. For example, the maximum value and the minimum value of the pixels of the candidate image are stored in a memory. The difference between the maximum value and the minimum value is divided into several intermediate threshold values, preferably at regular intervals.
Pour une première valeur de seuil intermédiaire, tous les pixels dont la valeur est inférieure à la valeur dudit seuil intermédiaire sont remplacés par du noir et tous les pixels dont la valeur est supérieure à la valeur dudit seuil intermédiaire sont remplacés par du blanc. On obtient ainsi une première image binaire. Ensuite, on fait varier la valeur du seuil et une deuxième image binaire est obtenue avec une deuxième valeur de seuil intermédiaire. Et ainsi de suite pour l'ensemble des valeurs de seuil intermédiaire. For a first intermediate threshold value, all the pixels whose value is less than the value of said intermediate threshold are replaced by black and all the pixels whose value is greater than the value of said intermediate threshold are replaced by white. A first binary image is thus obtained. Then, the threshold value is varied and a second binary image is obtained with a second intermediate threshold value. And so on for the set of intermediate threshold values.
On obtient ainsi N images binaires, avec N un entier naturel égal au nombre de valeurs de seuil choisies, c'est à dire le nombre de coupes. N binary images are thus obtained, with N a natural integer equal to the number of selected threshold values, ie the number of cuts.
Pour chaque image binaire i (i compris entre 1 et N), on calcule CDLJ(F1, F2) la CDL entre la première sous-image obtenue par la première fenêtre Fl, et la deuxième sous-image obtenue par la deuxième fenêtre F2. For each binary image i (i between 1 and N), CDLJ (F1, F2) is calculated the CDL between the first sub-image obtained by the first window F1, and the second sub-image obtained by the second window F2.
On peut ensuite calculer la CDL pondérée de l'ensemble des N images binaires, c'est à dire que l'on calcule CDL(F1, F2) = 1/N Σ CDL_N(F1, F2). We can then calculate the weighted CDL of the set of N binary images, that is to say that we calculate CDL (F1, F2) = 1 / N Σ CDL_N (F1, F2).
Plus généralement, on peut calculer la CDL globale de l'ensemble des N images binaires comme étant : More generally, we can calculate the global CDL of the set of N binary images as being:
Avec Ai (respectivement Bi) une coupe binaire i de A (respectivement B), i compris entre 1 et N. With Ai (respectively Bi) a binary cut i of A (respectively B), i between 1 and N.
Puis on compare CDL(F1, F2) à un seuil D_CDL prédéterminé, comme décrit ci avant. CDL (F1, F2) is then compared to a predetermined D_CDL threshold, as described above.
Si l'image candidate est en couleurs, elle peut être enregistrée en niveaux de gris et traitée comme décrit ci-dessus. If the candidate image is in color, it can be saved in grayscale and processed as described above.
Alternativement, on peut prévoir de convertir l'image candidate dans un espace colorimétrique à 3 dimensions, ou 3 canaux, en l'espèce dans l'espace RGB ou dans l'espace CIE XYZ. Alternatively, provision can be made to convert the candidate image into a 3-dimensional or 3-channel color space, in this case in the RGB space or in the CIE XYZ space.
L'image candidate est découpée en C images binaires, avec C un entier naturel correspondant au nombre de canaux, en l'espèce égale à 3. The candidate image is split into C binary images, with C a natural integer corresponding to the number of channels, in this case equal to 3.
On peut alors traiter chacune des C images binaires de manière similaire aux N images binaires obtenues lorsque l'image candidate est en niveaux de gris. Each of the C binary images can then be processed in a manner similar to the N binary images obtained when the candidate image is in gray levels.
Ainsi pour chaque image binaire C, on calcule CDL_C(F1, F2) la CDL entre la première sous-image obtenue par la première fenêtre Fl, et la deuxième sous-image obtenue par la deuxième fenêtre F2.Thus for each binary image C, CDL_C (F1, F2) is calculated the CDL between the first sub-image obtained by the first window F1, and the second sub-image obtained by the second window F2.
On peut ensuite calculer la CDL pondérée de l'ensemble des C images binaires, c'est à dire que l'on calcule CDL(F1, F2) = We can then calculate the weighted CDL of the set of C binary images, i.e. we calculate CDL (F1, F2) =
Plus généralement, on peut calculer la CDL globale de l'ensemble des C images binaires comme étant : CDL_XYZ(A,B)(p)=± More generally, we can calculate the global CDL of the set of C binary images as being: CDL_XYZ (A, B) (p) = ±
Avec dans ce cas C=3 With in this case C = 3
Pour deux images binaires on a : For two binary images we have:
C D Lb ï n (A, B ) ( p ) = |A(p)-B(p) | max[dA(p), d B(p)] C D Lb ï n (A, B) (p) = | A (p) -B (p) | max [dA (p), d B (p)]
Pour deux images en niveau de gris on a : For two grayscale images we have:
CDL(A,B)(p) CDL (A, B) (p)
Avec N entier naturel au plus égal au nombre de niveaux de gris, et en l'espèce égal au nombre d'images binaires issues du traitement de l'image originale en niveaux de gris. With N natural integer at most equal to the number of gray levels, and in this case equal to the number of binary images resulting from the processing of the original image in gray levels.
Pour deux images avec C canaux on a : For two images with C channels we have:
CDL_C(A,B)(p) CDL_C (A, B) (p)
Avec C le nombre de canaux, et Ak le canal k e (X;Y; Z) de l'image A. With C the number of channels, and Ak the channel k e (X; Y; Z) of image A.
Puis on compare CDL(F1, F2) à un seuil D_CDL prédéterminé, comme décrit ci avant. CDL (F1, F2) is then compared to a predetermined D_CDL threshold, as described above.
5.7 Détection de défauts de convexité 5.7 Detection of convexity defects
Cette méthode vise la détection de points où la convexité n'est pas parfaite sur les contours de chaque point du datamatrix. This method aims to detect points where the convexity is not perfect on the contours of each point of the datamatrix.
Pour une image de référence, acquise par une caméra placée directement sur la ligne de production avant emballage, on prévoit d'enregistrer l'image de référence sous forme d'image binaire comprenant les coordonnées des centres de chaque point du datamatrix. Puis on prévoit de calculer les contours des points du datamatrix à partir de l'image binaire, c'est-à- dire de produire une courbe joignant les points continus tout au long de la frontière des pixels ayant la même intensité, afin de permettre une analyse de forme. For a reference image, acquired by a camera placed directly on the production line before packaging, provision is made to record the reference image in the form of a binary image comprising the coordinates of the centers of each point of the datamatrix. Then we plan to calculate the contours of the points of the datamatrix from the binary image, that is to say to produce a curve joining the continuous points along the border of the pixels having the same intensity, in order to allow a form analysis.
On peut alors calculer l'enveloppe convexe du point correspondant à un module du datamarix, c'est-à- dire son contour. We can then calculate the convex envelope of the point corresponding to a modulus of the datamarix, ie its contour.
Ensuite, on calcule les défauts de convexité pour chaque enveloppe convexe. Pour déterminer les points de défauts de convexité, il suffit de comparer l'enveloppe convexe d'un blob par rapport à son vrai contour. Du moment où il y un point du vrai contour qui sort d'un côté ou de l'autre de l'enveloppe convexe, on peut dire qu'ici il y a un défaut. Tout écart de l'enveloppe par rapport à une enveloppe parfaitement convexe est considéré comme un défaut de convexité. Then, the convexity defects are calculated for each convex envelope. To determine the points of convexity defects, it suffices to compare the convex envelope of a blob with respect to its true contour. As long as there is a point of the true contour which comes out from one side or the other of the convex envelope, we can say that here there is a defect. Any deviation of the envelope from a perfectly convex envelope is considered a defect in convexity.
Pour une image candidate, on applique le même algorithme et on calcule les défauts de convexité de chaque blob. For a candidate image, the same algorithm is applied and the convexity defects of each blob are calculated.
On peut alors calculer la distance entre un défaut de convexité d'un blob de l'image candidate et un défaut de convexité d'un blob correspondant de l'image de référence. Si la distance est inférieure à une valeur seuil prédéfinie, alors on incrément la valeur d'un compteur, et ce pour tous les blobs du datamatrix. It is then possible to calculate the distance between a defect of convexity of a blob of the candidate image and a defect of convexity of a corresponding blob of the reference image. If the distance is less than a predefined threshold value, then the value of a counter is increased, for all the blobs of the datamatrix.
Une fois que tous les blobs ont été traités, on peut comparer la valeur du compteur à une valeur seuil prédéfinie et si le compteur est supérieur à la valeur seuil, alors l'image candidate est considérée comme similaire à l'image de référence, donc le code-barre candidat est considéré comme identique au code-barre de référence. Once all the blobs have been processed, we can compare the counter value to a predefined threshold value and if the counter is greater than the threshold value then the candidate image is considered similar to the reference image, so the candidate barcode is considered identical to the reference barcode.
On peut aussi calculer le pourcentage du nombre de points trouvés sur l'image candidate corne présentant un défaut de convexité par rapport au nombre total de points de défauts de convexité sur l'image de référence. A partir d'un certain pourcentage seuil, le datamatrix candidate est considéré comme authentique. It is also possible to calculate the percentage of the number of points found on the candidate horn image exhibiting a convexity defect relative to the total number of convexity defect points on the reference image. From a certain threshold percentage, the candidate datamatrix is considered authentic.
5.8 Calcul de moments 5.8 Calculation of moments
Une image de référence est généralement une image en couleurs RGB, acquise par une caméra placée directement sur la ligne de production avant emballage. A reference image is generally an RGB color image, acquired by a camera placed directly on the production line before packaging.
On prévoit de préférence de recaler l'image de référence, par exemple à l'aide de 3 points extrêmes formant le carré du datamatrix comme exposé précédemment. Provision is preferably made to readjust the reference image, for example using 3 end points forming the square of the datamatrix as explained previously.
On prévoit de transformer l'image de référence en niveaux de gris. It is planned to transform the reference image into gray levels.
Ensuite, on prévoit de calculer la grille, comme exposé précédemment, qui produit une image binaire avec les coordonnées des centres de chaque point du datamatrix. Then, provision is made to calculate the grid, as explained previously, which produces a binary image with the coordinates of the centers of each point of the datamatrix.
On peut alors calculer les contours externes des points du datamatrix à partir de l'image binaire, comme exposé ci-avant. It is then possible to calculate the external contours of the points of the datamatrix from the binary image, as explained above.
Pour chaque contour, on peut alors calculer les différents moments suivants. For each contour, we can then calculate the following different moments.
Des moments spatiaux : mOO, mOl, mlO pour 3 cas 00, 01, 10. Spatial moments: mOO, mOl, mlO for 3 cases 00, 01, 10.
Soit plus généralement : mji= Or more generally: m ji =
Avec array la fonction tableau. With array the function array.
Des moments centrés : m20, mil, m02, m30, m21, ml2, m03 pour les cas 20, 11, 02, 30, 21, 03, 12 Soit plus généralement : (x — x_)j (y — y_ )i) Centered moments: m20, mil, m02, m30, m21, ml2, m03 for cases 20, 11, 02, 30, 21, 03, 12 Or more generally: (x - x_) j (y - y_) i )
Avecx_ety_ les centres de masse tels que x_=ml0/m00 ety_=m01/m00 Des moments centrés normalisés : nu20, null, nu02, nu30, nu21, nul2, nu03 With x_ety_ the centers of mass such as x_ = ml0 / m00 ety_ = m01 / m00 Normalized centered moments: nu20, null, nu02, nu30, nu21, nul2, nu03
M1 M1
Pour chaque blob, on peut avoir un vecteur V_Refm avec m l'indice du blob. For each blob, we can have a vector V_Ref m with m the index of the blob.
Soit V_Refm = [m00m, m00 m, m01 m, m20 m, m11 m, m02 m, m30 m, m21 m, m12 m, m03 m, nU20 m, nu11 m, nu02 m, nu30m, nu02 m, nu02 m, nu03 m] Let V_Ref m = [m00 m , m 00 m , m 01 m , m 20 m , m 11 m , m 02 m , m 30 m , m 21 m , m 12 m , m 03 m , nU 20 m , nu 11 m , nude 02 m , nude30 m , nude 02 m , nude 02 m , nude 03 m ]
Avec m = 0 : nombre de points allumés With m = 0: number of points lit
On peut ainsi calculer l'ensemble des vecteurs V_Refm pour l'ensemble des m blobs. L'ensemble de ces vecteurs constitue l'empreinte du datamatrix de l'image de référence. We can thus calculate the set of vectors V_Ref m for the set of m blobs. All of these vectors constitute the imprint of the datamatrix of the reference image.
Pour une image candidate prise avec un smartphone, on applique le même algorithme pour calculer la valeur du vecteur V_Candm. For a candidate image taken with a smartphone, the same algorithm is applied to calculate the value of the vector V_Cand m .
Comme les coordonnées de tous les points qui forment la grille sont connus, on peut mettre en correspondance les points de l'image de référence et ceux de l'image candidate. En fait, pour chaque point du datamatrix de l'image candidate, on cherche le point correspondant dans l'image de référence ayant les coordonnées les plus proches. Ainsi, on a des couples de points. Since the coordinates of all the points which form the grid are known, the points of the reference image can be matched with those of the candidate image. In fact, for each point of the datamatrix of the candidate image, we look for the corresponding point in the reference image having the closest coordinates. Thus, we have pairs of points.
La comparaison se fait par métrique entre les moments, puis par une règle sur les ensembles de points. The comparison is made by metric between the moments, then by a rule on the sets of points.
Pour chaque couple de points, on peut alors calculer les différences entre les moments. V_Diffn=|V_Candn-V_Refn| avec n=l :nombre d'images de référence. For each pair of points, we can then calculate the differences between the moments. V_Diff n = | V_Cand n -V_Ref n | with n = l: number of reference images.
De préférence, on choisit les moments centrés normalisés, et plus précisément les moments nu20 et null. Preferably, the normalized centered moments are chosen, and more precisely the nu20 and null moments.
Quand la différence entre les moments pour une paire de points donnée est inférieure à une valeur seuil prédéterminée, on incrémente un score du datamatrix candidat. When the difference between the moments for a given pair of points is less than a predetermined threshold value, a score of the candidate datamatrix is incremented.
On peut calculer ensuite le pourcentage de paires de points ayant de petites différences de moments par rapport au nombre total de paires de points mis en correspondance. Si le pourcentage est supérieur à un seuil prédéfini, ou lorsque le score est supérieur à une valeur seuil prédéfinie, alors le datamatrix candidat est considéré comme authentique. We can then calculate the percentage of point pairs having small differences in moments from the total number of matched point pairs. If the percentage is greater than a predefined threshold, or when the score is greater than a predefined threshold value, then the candidate datamatrix is considered authentic.
L'invention n'est pas limitée aux moments décrits précédemment. On peut prévoir d'autres moments comme Zernike, Hu, Legendre, etc. puis de construire une empreinte à partir de ces moments. The invention is not limited to the times described above. We can foresee other moments like Zernike, Hu, Legendre, etc. then to build an imprint from those moments.
5.9 Analyse topologique des points irréguliers (TDA) 5.9 Topological Analysis of Irregular Points (TDA)
L'analyse des données topologiques (TDA) est une méthode mathématique qui permet d'extraire des informations à partir d'une structure de données. Avec le développement récent de l'homologie persistante, il est possible de déduire avec efficacité la structure géométrique d'un objet si les structures géométriques d'une paire de points sont similaires, par exemple comme décrit à l'adresse http://outlace.com/TDApartl.html. Topological Data Analysis (TDA) is a mathematical method that extracts information from a data structure. With the recent development of persistent homology, it is possible to efficiently infer the geometric structure of an object if the geometric structures of a pair of points are similar, for example as described at http: // outlace .com / TDApartl.html.
5.9. a. Mesure de similarité entre deux points Dans une première variante on prévoit de comparer la structure topologique d'un blob de référence et d'un blob candidat. 5.9. To. Similarity measure between two points In a first variant, provision is made to compare the topological structure of a reference blob and of a candidate blob.
Après filtrage des blobs du datamatrix qui ne présentent pas d'autre intérêt que la lecture de l'UlD encodé (par exemple un blob sans défaut), on prévoit de sélectionner un blob à analyser. After filtering the blobs of the datamatrix which are of no interest other than reading the encoded UID (for example a blob without defect), provision is made to select a blob to be analyzed.
Après binarisation, on transforme les contours du blob candidat en un nuage de points. After binarization, we transform the contours of the candidate blob into a cloud of points.
Selon une première variante pour construire ce nuage de points, on calcule le centroïde du blob sélectionné, et on projette sur ses contours un nombre fini de points suivant l'axe du centroïde. L'illustration de cette méthode correspond à la FIG.21 en bas à droite. Premièrement, on calcule le centroïde du blob, ensuite on projette sur le contour du blob un nombre fini de points. On peut imaginer un cercle trigonométrique dont l'origine du cercle est le centroïde du blob. On tourne autour du cercle avec un angle constant et on place un point à chaque incrémentation de déplacement.According to a first variant for constructing this cloud of points, the centroid of the selected blob is calculated, and a finite number of points is projected onto its contours along the axis of the centroid. The illustration of this method corresponds to FIG. 21 lower right. First, we calculate the centroid of the blob, then we project on the contour of the blob a finite number of points. We can imagine a trigonometric circle whose origin of the circle is the centroid of the blob. We turn around the circle with a constant angle and we place a point at each incrementation of displacement.
Une deuxième variante de construction du nuage de points consiste à parcourir le contour du blob sélectionné de façon géodésique et à dessiner un point toutes les n longueurs jusqu'à avoir parcouru l'intégralité du contour du blob. Cette méthode est illustrée en haut à droite de la FIG.21. On commence par calculer la distance totale du contour du blob. Ensuite, on choisit un nombre de points à dessiner sur le contour. Si on veut placer n points, on doit diviser le périmètre du blob par n. A second variant of construction of the cloud of points consists in traversing the contour of the selected blob in a geodetic manner and in drawing a point every n lengths until having traversed the entire contour of the blob. This method is illustrated at the top right of FIG. 21. We start by calculating the total distance from the outline of the blob. Then, we choose a number of points to draw on the outline. If we want to place n points, we must divide the perimeter of the blob by n.
Une troisième variante pour convertir les contours en nuage de points consiste à utiliser une approche similaire à celle qui est décrite pour la localisation Angulaire des Irrégularités du Blob. A third variant for converting the contours into a cloud of points consists in using an approach similar to that which is described for the Angular localization of the Irregularities of the Blob.
Ces 3 variantes sont illustrées sur la figure 21. Sur cette figure, à gauche est illustré un blob binarisé.These 3 variants are illustrated in FIG. 21. In this figure, on the left is illustrated a binarized blob.
Au centre est illustré le contour dudit blob. Le résultat de la première variante est illustré en haut à droite ; celui de la deuxième variante est illustré au centre à droite, et celui de la troisième variante est illustré en bas à droite. In the center is illustrated the outline of said blob. The result of the first variant is illustrated at the top right; that of the second variant is illustrated in the center on the right, and that of the third variant is illustrated at the bottom right.
À partir du nuage de points, on prévoit de réaliser des constructions géométriques, appelées filtrations. Une filtration, en analyse topologique, permet de faire ressortir une structure topologique d'un ensemble de données. L'objectif est de construire des familles d'objets à différentes échelles et d'étudier leurs évolutions. Le résultat obtenu après filtration est ensuite représenté sous forme d'un diagramme de persistance en utilisant les outils de l'information de l'homologie persistante, les outils de l'information étant les diagrammes du domaine de l'homologie persistante représentés FIG.22 et FIG.23, soit la représentation du changement d'échelle des points, le code-barre de persistance et le diagramme de persistance. From the point cloud, we plan to make geometric constructions, called filtrations. Filtration, in topological analysis, makes it possible to bring out a topological structure of a set of data. The objective is to build families of objects at different scales and to study their evolution. The result obtained after filtration is then represented in the form of a persistence diagram using the information tools of persistent homology, the information tools being the diagrams of the domain of persistent homology shown in FIG. 22 and FIG. 23, that is to say the representation of the change of scale of the points, the bar code of persistence and the persistence diagram.
Selon l'invention, on prévoit de construire un diagramme de persistance à partir du nuage de points. Durant l'étape de filtration, le diamètre des points est progressivement augmenté et le rayon de chaque point est reporté sous forme d'un code-barre de persistance. According to the invention, provision is made to construct a persistence diagram from the point cloud. During the filtration step, the diameter of the points is gradually increased and the radius of each point is reported in the form of a persistence bar code.
À chaque fois qu'une intersection apparaît entre deux points, on considère que l'un des points meurt et on arrête de suivre son évolution sur le code-barre de persistance. Le code-barre obtenu est converti sous forme d'un diagramme de persistance. On obtient alors un descripteur topologique que l'on peut utiliser dans un modèle d'apprentissage. On arrête de faire grossir les boules une fois qu'une seule composante évolue sur le diagramme de persistance. Selon la disposition des points initiaux, des cycles peuvent apparaître durant l'étape de filtration. Lorsqu'un cycle apparaît on suit son évolution sur le code-barre de persistance. La filtration est terminée lorsque qu'il ne reste plus qu'un seul point qui évolue (cf. Figure 22). En fait, on fait grossir les points de façon incrémentale (à gauche sur la FIG.22) et parallèlement on suit l'évolution du rayon de chaque point en construisant un code-barre de persistance (à droite sur la FIG.22). Une barre (haut droit FIG. 22) correspond à l'évolution du rayon d'un point. Les deux barres isolées sous le code-barre (centre droit et bas droit FIG. 22) correspondent à l'apparition d'un cycle. Un cycle apparaît quand les "boules" se touchent. Un cycle meurt quand le centre du cycle est "bouché". Un cycle est illustré sur la deuxième image de la FIG.22. En abscisse du code-barre de persistance, on a la durée de vie des "boules"/cycles et en ordonnée "l'identifiant" du point/cycle. Each time an intersection appears between two points, one considers that one of the points dies and one stops following its evolution on the persistence barcode. The resulting barcode is converted into a persistence diagram. We then obtain a topological descriptor which can be used in a training model. We stop making the balls grow once a single component evolves on the persistence diagram. Depending on the arrangement of the initial points, cycles may appear during the filtration stage. When a cycle appears, its evolution is followed on the persistence barcode. Filtration is finished when there is only one point left which evolves (see Figure 22). In fact, the points are increased incrementally (on the left in FIG. 22) and at the same time we follow the evolution of the radius of each point by building a persistence bar code (on the right in FIG. 22). A bar (top right FIG. 22) corresponds to the evolution of the radius of a point. The two isolated bars under the barcode (center right and bottom right FIG. 22) correspond to the appearance of a cycle. A cycle appears when the "balls" touch each other. A cycle dies when the center of the cycle is "clogged". A cycle is illustrated in the second image of FIG. 22. On the x-axis of persistence barcode, we have the lifespan of the "balls" / cycles and on the ordinate "the identifier" of the point / cycle.
Pour pouvoir obtenir un descripteur topologique à partir du code-barre de persistance obtenu, on prévoit de mettre en oeuvre une méthode d'homologie persistante. In order to be able to obtain a topological descriptor from the persistence bar code obtained, provision is made to implement a persistent homology method.
Enfin, on utilise le descripteur topologique du diagramme de persistance, qui est passé dans un modèle de classification (Machine Learning classique ou réseau de neurones), pour déterminer la similarité entre deux blobs. Finally, we use the topological descriptor of the persistence diagram, which is passed into a classification model (classic Machine Learning or neural network), to determine the similarity between two blobs.
5.9. b. Analyse topologique de l'ensemble des points irréguliers 5.9. b. Topological analysis of the set of irregular points
Dans une deuxième variante, le même principe est appliqué sur l'ensemble des blobs qui ont des défauts plutôt que sur le nuage de points des contours d'un seul blob. In a second variant, the same principle is applied to all of the blobs which have defects rather than to the point cloud of the contours of a single blob.
5.9.c. Graphe topologique 5.9.c. Topological graph
Dans une troisième variante, on prévoit de construire un graphe à partir des blobs qui ont des défauts. On peut ajouter une arête entre deux points voisins dont les contours comportent des irrégularités. In a third variant, provision is made to construct a graph from the blobs which have defects. We can add an edge between two neighboring points whose contours include irregularities.
6. Stockage de l'empreinte 6. Storage of the impression
On peut prévoir au moins l'un des deux modes de stockages suivants. At least one of the following two storage modes can be provided.
6.1. Un mode «lourd», dont la taille est en l'espèce d'environ 20 ko. Dans ce mode, après prétraitement et redressement selon le modèle 2D de la grille, on stocke l'image du code 2D selon un format binaire compressé (par exemple .png). 6.1. A "heavy" mode, the size of which is in this case about 20 kb. In this mode, after preprocessing and rectification according to the 2D model of the grid, the image of the 2D code is stored in a compressed binary format (for example .png).
6.2. Un mode «léger», dont la taille est en l'espèce d'environ 5ko. Dans ce mode, on stocke les coordonnées du centre des points dans le modèle 2D, ainsi que toutes les métriques qui leur sont associées. L'empreinte est plus petite mais elle n'est pas évolutive, contrairement au mode « lourd ». 6.2. A "light" mode, the size of which is in this case about 5kb. In this mode, we store the coordinates of the center of the points in the 2D model, as well as all the metrics associated with them. The footprint is smaller but it is not scalable, unlike the "heavy" mode.
7 - Préparation pour une Comparaison Optimale 7 - Preparation for an Optimal Comparison
On peut prévoir une étape de préparation pour une comparaison optimale. A preparation step can be provided for an optimal comparison.
Cette étape peut être mise en oeuvre en amont du calcul de l'empreinte. Dans ce cas l'empreinte peut être stockée sous une forme particulièrement compacte. Elle peut aussi être mise en oeuvre en aval du calcul de l'empreinte, pour une plus grande richesse de la représentation au moment de la comparaison. A cet effet, on considère les données véhiculées par chacune des empreintes (correspondant à chacune des méthodes de calcul) comme un ensemble de signaux. Ces signaux caractérisent à leur tour le lien qui existe entre les blobs. Cette information peut être quantifiée avant le stockage de l'empreinte, ce qui permet de réduire la taille de l'empreinte globale et optimiser ainsi la comparaison. On peut aussi stocker les empreintes calculées à partir de chacune des méthodes (stockage plus important) et au moment de la comparaison, on applique la quantification. Dans le premier cas on bénéficie d'un stockage compact mais avec une méthode de quantification non évolutive. Dans le deuxième cas, on stocke l'information brute des empreintes mais on gagne en souplesse car on peut améliorer en continu la quantification et le processus de comparaison, c'est à dire combiner différentes méthodes de quantification, différentes heuristiques de comparaison.This step can be implemented upstream of the calculation of the footprint. In this case the imprint can be stored in a particularly compact form. It can also be implemented downstream from the calculation of the footprint, for a greater richness of the representation at the time of the comparison. For this purpose, the data conveyed by each of the fingerprints (corresponding to each of the calculation methods) is considered as a set of signals. These signals in turn characterize the link that exists between the blobs. This information can be quantified before the footprint is stored, which makes it possible to reduce the size of the overall footprint and thus optimize the comparison. It is also possible to store the fingerprints calculated from each of the methods (larger storage) and at the time of the comparison, the quantification is applied. In the first case, we benefit from compact storage but with a non-scalable quantification method. In the second case, the raw information of the fingerprints is stored, but flexibility is gained because the quantification and the comparison process can be continuously improved, ie combining different quantification methods, different comparison heuristics.
Dans cette étape, les informations correspondant à chacune des méthodes de calcul des empreintes, c'est-à-dire les signaux véhiculés par les empreintes, sont réduites à un espace de représentation quantifié, comme par exemple une binarisation, en suivant un processus qui conserve les caractéristiques les plus importantes de ces signaux, c'est-à-dire la variation des empreintes d'un blob à l'autre et le lien qui existe entre les blobs voisins, tout en permettant une comparaison binaire point- à-point des valeurs induites, qui dépendent de la méthode de quantification. Dans le cas de la quantification binaire, ce sont les séquences binaires. Ainsi, la quantification des signaux véhiculés par les empreintes permet d'avoir un espace de représentation réduit et homogène et par conséquent un processus de comparaison optimal. On évite ainsi d'adapter le processus à chacune des méthodes (avec son propre espace de représentation, et ses propres mesures de similarité). Par exemple, avec une quantification binaire, le processus de comparaison consiste à comparer les séquences binaires et bénéficier ainsi des méthodes de comparaison qui sont connues par leur rapidité. In this step, the information corresponding to each of the fingerprint calculation methods, that is to say the signals conveyed by the fingerprints, are reduced to a quantified representation space, such as for example a binarization, by following a process which preserves the most important characteristics of these signals, i.e. the variation of fingerprints from one blob to another and the link that exists between neighboring blobs, while allowing a point-to-point binary comparison induced values, which depend on the quantification method. In the case of binary quantization, these are the binary sequences. Thus, the quantization of the signals conveyed by the imprints makes it possible to have a reduced and homogeneous representation space and consequently an optimal comparison process. This avoids adapting the process to each of the methods (with its own representation space, and its own similarity measures). For example, with binary quantization, the comparison process consists in comparing the binary sequences and thus benefiting from the comparison methods which are known for their speed.
Une méthode pour réaliser cela peut être la représentation des empreintes par une ou plusieurs séquences de bits. Ainsi la comparaison entre empreintes de références et empreintes candidates revient à comparer les séquences de bits qui les représentent. Cette comparaison peut être effectuée, par exemple, par un simple comptage de bits de différences. D'autres mesures adaptées aux séquences binaires peuvent être envisagées, par exemple la distance de Hamming, le taux de bits d'erreur par blocks de bits, etc. One method of doing this may be the representation of the fingerprints as one or more bit sequences. Thus the comparison between reference fingerprints and candidate fingerprints amounts to comparing the sequences of bits which represent them. This comparison can be performed, for example, by a simple count of difference bits. Other measures adapted to binary sequences can be envisaged, for example the Hamming distance, the rate of error bits per bit blocks, etc.
Une séquence de bits est calculée à partir de la variation des empreintes entre deux blobs voisins en mesurant le signe des différences des empreintes correspondantes. La séquence de bits entre deux blobs i, j est constituée de la concaténation des représentations binaires extraites à partir des empreintes de chacune des méthodes. Par, exemple pour méthode d'analyse des rapports de surface de couples de blobs (voir paragraphe 5.1 de la présente description), la séquence binaire est extraite à partir du signe de la différence entre les surfaces des deux blobs voisins i et j. A sequence of bits is calculated from the variation of the fingerprints between two neighboring blobs by measuring the sign of the differences of the corresponding fingerprints. The sequence of bits between two blobs i, j consists of the concatenation of the binary representations extracted from the fingerprints of each of the methods. For example, for a method of analyzing the area ratios of pairs of blobs (see paragraph 5.1 of the present description), the binary sequence is extracted from the sign of the difference between the areas of the two neighboring blobs i and j.
Si on désigne par k le nombre de méthodes choisies, la séquence de bits caractérisant le lien entre deux blobs voisins est définie comme suit : If we denote by k the number of methods chosen, the sequence of bits characterizing the link between two neighboring blobs is defined as follows:
C'est-à-dire que le calcul de la séquence de bits est adapté à chacune des méthodes de calcul d'empreinte choisies. That is to say that the calculation of the sequence of bits is adapted to each of the fingerprint calculation methods chosen.
Par exemple, si on prend les trois premières méthodes décrites ici. For example, if we take the first three methods described here.
Pour la méthode décrite au 5.1, la séquence de bits pour les deux blobs voisins i,j peut être calculée comme suit : For the method described in 5.1, the sequence of bits for the two neighboring blobs i, j can be calculated as follows:
Pour la méthode décrite au 5.2, la séquence de bits pour les deux blobs voisins i,j peut être calculée comme suit : avec R E {1,2} correspondant aux deux irrégularités détectées par la méthode 2 For the method described in 5.2, the bit sequence for the two neighboring blobs i, j can be calculated as follows: with RE {1,2} corresponding to the two irregularities detected by method 2
Pour la méthode décrite au 5.3, la séquence de bits pour les deux blobs voisins i,j peut être calculée comme suit : Ainsi un code-barre 2D est représenté par l'ensemble des séquences de bits de tous les couples de blobs voisins qui le constituent. Le type de voisinage est défini préalablement. For the method described in 5.3, the bit sequence for the two neighboring blobs i, j can be calculated as follows: Thus a 2D bar code is represented by the set of bit sequences of all the pairs of neighboring blobs which constitute it. The type of neighborhood is defined beforehand.
Décodage du code-barre Barcode decoding
Pour le décodage du datamatrix afin d'obtenir son UID, qui sert d'index dans la base de données, on peut prévoir une étape de nettoyage de l'image candidate, en l'espèce en supprimant les parasites et tâches dont la surface est supérieure à celle d'un module du datamatrix, par exemple en appliquant un filtre fréquentiel. On peut aussi prévoir une étape de détection de la qualité de l'image candidate, en l'espèce grâce à des détecteurs (ou analyseurs) de qualité d'image. En fonction de la réponse des détecteurs de qualité, c'est-à-dire si la qualité recherchée n'est pas atteinte, l'image candidate actuelle est abandonnée et on sélectionne une image candidate suivante du flux. On tente alors de décoder le code-barre présent sur la nouvelle image candidate. Si le code n'est pas lisible ou ne correspond pas à une règle (connue) de construction du numéro unique UID, on passe alors à l'image candidate suivante du flux. For the decoding of the datamatrix in order to obtain its UID, which serves as an index in the database, a step of cleaning the candidate image can be provided, in this case by removing the parasites and spots whose surface is greater than that of a data matrix module, for example by applying a frequency filter. It is also possible to provide a step of detecting the quality of the candidate image, in this case by virtue of image quality detectors (or analyzers). Depending on the response of the quality detectors, that is to say if the desired quality is not reached, the current candidate image is dropped and a next candidate image of the stream is selected. An attempt is then made to decode the bar code present on the new candidate image. If the code is not readable or does not correspond to a (known) rule for constructing the unique UID number, then we go to the next candidate image of the stream.
Le nettoyage éventuel n'est utilisé que pour le décodage du code-barre, qui permet via la lecture de l'UlD, de rechercher l'empreinte correspondante dans une base de données. Les étapes de traitement décrite ci-avant sont faites sur l'image candidate redressée (non nettoyée). Any cleaning is only used for decoding the bar code, which makes it possible, via reading the UID, to search for the corresponding fingerprint in a database. The processing steps described above are performed on the straightened (uncleaned) candidate image.
Grâce à l'invention, il est possible de répondre simultanément aux quatre contraintes fortes suivantesThanks to the invention, it is possible to respond simultaneously to the following four strong constraints
- Obtenir un très faible taux de faux négatifs, correspondant à des paquets authentiques considérés comme suspects, - Obtain a very low rate of false negatives, corresponding to authentic packets considered to be suspect,
- Obtenir un extrêmement faible taux de faux positifs, correspondant à des faux paquets considérés comme vrais, - Obtain an extremely low rate of false positives, corresponding to false packets considered to be true,
- Avoir une empreinte de la taille la plus petite possible, pour le stockage et le transport du paquet,- Have a footprint of the smallest possible size, for the storage and transport of the package,
- Calculer le plus rapidement possible (inférieur au temps de production du paquet) cette empreinte.- Calculate this footprint as quickly as possible (less than the production time of the package).
Enfin, le temps de comparaison entre deux empreintes n'a pas forcément de contraintes fortes en termes de temps de calcul. Finally, the comparison time between two fingerprints does not necessarily have strong constraints in terms of calculation time.

Claims

Revendications Claims
1. Procédé d'enrôlement d'un code-barre bidimensionnel de référence, par traitement d'une image de référence dudit code-barre bidimensionnel de référence, le code-barres comprenant un ensemble de points présentant des défauts aléatoires d'impression, chaque point du code-barre de référence correspondant à un blob respectif dans l'image de référence, le procédé comprenant des étapes consistant à : 1. A method of enrolling a reference two-dimensional bar code, by processing a reference image of said reference two-dimensional bar code, the bar code comprising a set of dots having random printing defects, each point of the reference barcode corresponding to a respective blob in the reference image, the method comprising the steps of:
- enregistrer dans une mémoire une image de référence en niveaux de gris du code-barre de référence, - save in a memory a reference image in gray levels of the reference barcode,
- enregistrer un identifiant (UID) du code-barre de référence sous forme d'index dans une base de données, caractérisé en ce qu'il comprend en outre des étapes consistant à : - recording an identifier (UID) of the reference barcode in the form of an index in a database, characterized in that it further comprises steps consisting in:
- calculer une empreinte de référence dudit code-barre de référence, l'empreinte étant fonction des défauts aléatoires d'impression, et - calculate a reference imprint of said reference bar code, the imprint being a function of the random printing defects, and
- enregistrer l'empreinte de référence dans la base de données sous forme de vecteur à N composantes, avec N le nombre total de méthodes de calcul d'empreintes, la position de chaque composante dans le vecteur correspondant à une méthode prédéfinie ; ou sous forme de résumé binarisé de l'image de référence tel que l'image du code-barre bidimensionnel est stockée selon un format binaire compressé. - record the reference fingerprint in the database in the form of a vector with N components, with N the total number of fingerprint calculation methods, the position of each component in the vector corresponding to a predefined method; or as a binarized summary of the reference image such that the image of the two-dimensional barcode is stored in a compressed binary format.
2. Procédé d'enrôlement selon la revendication 1, dans lequel lorsque l'empreinte de référence dans la base de données est enregistrée sous forme de vecteur, ledit vecteur de l'empreinte de référence comprend plusieurs composantes dont au moins une est non nulle, et chaque composante est calculée par une des étapes respectives parmi : 2. The enrollment method according to claim 1, wherein when the reference fingerprint in the database is recorded in the form of a vector, said vector of the reference fingerprint comprises several components, at least one of which is non-zero, and each component is calculated by one of the respective steps among:
- déterminer l'aire de chaque point du code-barre de référence et enregistrer un vecteur qui renferme l'ensemble des rapports de surface de 2 points successifs du code-barre de référence ; - determine the area of each point of the reference bar code and record a vector which contains all the area ratios of 2 successive points of the reference bar code;
- déterminer la position angulaire de points spécifiques situés sur le contour de chaque blob du code-barre de référence ; - determine the angular position of specific points located on the contour of each blob of the reference barcode;
- déterminer une cartographie des irrégularités des blobs ; - determine a map of the irregularities of the blobs;
- déterminer une courbe caractérisant le profil de chaque blob du code-barre de référence ;- determine a curve characterizing the profile of each blob of the reference barcode;
- déterminer un ensemble d'histogrammes de gradients orientés, calculés à partir de l'intensité et de l'orientation des gradients sur des blocs de pixels, pour chaque point du code- barre de référence ; - determining a set of oriented gradient histograms, calculated from the intensity and orientation of the gradients on blocks of pixels, for each point of the reference bar code;
- enregistrer l'image de référence sous forme d'image binaire comprenant les coordonnées des centres de chaque point du code-barre ; produire une courbe joignant les points continus tout au long de la frontière des pixels ayant la même intensité, calculer l'enveloppe convexe desdits points continus, et calculer les défauts de convexité pour chaque enveloppe convexe ; et - recording the reference image in the form of binary image comprising the coordinates of the centers of each point of the bar code; producing a curve joining the continuous points along the border of pixels having the same intensity, calculating the convex envelope of said continuous points, and calculating the convexity defects for each convex envelope; and
- produire une image binaire du code-barre de référence, avec les coordonnées des centres de chaque point dudit code-barre, calculer les contours externes des points dudit code-barre, et pour chaque contour, calculer un ensemble de moments des contours externes des points du code-barres. - produce a binary image of the reference bar code, with the coordinates of the centers of each point of said bar code, calculate the external contours of the points of said bar code, and for each contour, calculate a set of moments of the external contours of the barcode points.
3. Procédé de vérification d'un code-barre candidat comprenant un identifiant (UID), le procédé comprenant des étapes consistant à : 3. A method of verifying a candidate bar code comprising an identifier (UID), the method comprising the steps of:
- enregistrer dans une mémoire une image candidate en niveaux de gris du code-barre candidat, - record in a memory a candidate image in gray levels of the candidate barcode,
- décoder l'identifiant (UID) du code-barre candidat, - decode the identifier (UID) of the candidate barcode,
- identifier le code-barre de référence selon l'une quelconque des revendications 1 ou 2 dont l'index dans la base de données est égal audit identifiant du code-barre candidat, - identify the reference bar code according to any one of claims 1 or 2, of which the index in the database is equal to said identifier of the candidate barcode,
- calculer une empreinte dudit code-barre candidat, - calculate an imprint of said candidate barcode,
- comparer ladite empreinte du code-barre candidat avec l'empreinte de référence correspondante du code-barre de référence. comparing said imprint of the candidate barcode with the corresponding reference imprint of the reference barcode.
4. Procédé selon la revendication 3, dans lequel l'étape de comparaison comprend au moins l'une des étapes parmi : 4. The method of claim 3, wherein the step of comparing comprises at least one of the steps among:
- une étape de filtrage par carte de dissimilarité locale, éventuellement précédée d'une étape de débruitage ; et - a local dissimilarity map filtering step, optionally preceded by a denoising step; and
- une analyse topologique de points irréguliers. - a topological analysis of irregular points.
5. Procédé selon l'une quelconque des revendications 3 ou 4, comprenant des étapes consistant à : 5. Method according to any one of claims 3 or 4, comprising the steps of:
- déterminer la localisation du code-barre candidat et son orientation dans un espace à 3 dimensions, - determine the location of the candidate barcode and its orientation in a 3-dimensional space,
- calculer un vecteur de pose, - calculate a pose vector,
- redresser l'image du code-barre candidat, et - straighten the image of the candidate barcode, and
- optionnellement nettoyer ladite image du code-barre candidat. - optionally clean said image of the candidate barcode.
6. Procédé selon l'une quelconque des revendications 3 à 5, comprenant une étape de représentation de l'empreinte du code-barre candidat et de l'empreinte du code-barre de référence par une ou plusieurs séquences de bits, 6. Method according to any one of claims 3 to 5, comprising a step of representing the imprint of the candidate bar code and the imprint of the reference bar code by one or more sequences of bits,
- l'étape de comparaison étant mise en oeuvre par comparaison des séquences de bits qui les représentent. the comparison step being implemented by comparing the sequences of bits which represent them.
7. Procédé selon l'une quelconque des revendications 3 à 6, dans lequel le code-barre de référence et le code-barre candidat sont des codes-barres bidimensionnels, le procédé comprenant en outre au moins l'une des étapes parmi : 7. Method according to any one of claims 3 to 6, in which the reference bar code and the candidate bar code are two-dimensional bar codes, the method further comprising at least one of the steps among:
- appliquer un filtre fréquentiel à l'image candidate, - apply a frequency filter to the candidate image,
- détecter la qualité de l'image candidate, grâce à des détecteurs de qualité d'image. - detecting the quality of the candidate image, using image quality detectors.
8. Procédé selon l'une quelconque des revendications 3 à 7, dans lequel le code-barre de référence et le code-barre candidat sont marqués sur un paquet de tabac, optionnellement recouvert de cellophane. 8. A method according to any one of claims 3 to 7, wherein the reference bar code and the candidate bar code are marked on a tobacco package, optionally covered with cellophane.
9. Programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une quelconque des revendications 3 à 8, lorsque ledit programme est exécuté sur un ordinateur. 9. A computer program comprising program code instructions for executing the steps of the method according to any one of claims 3 to 8, when said program is executed on a computer.
10. Smartphone comprenant une mémoire dans laquelle est stockée le programme d'ordinateur selon la revendication 9. 10. Smartphone comprising a memory in which is stored the computer program according to claim 9.
EP21727776.3A 2020-04-30 2021-04-30 Method for verifying a barcode Pending EP4143733A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2004317A FR3109831B1 (en) 2020-04-30 2020-04-30 Process for verifying a barcode.
PCT/EP2021/061416 WO2021219852A1 (en) 2020-04-30 2021-04-30 Method for verifying a barcode

Publications (1)

Publication Number Publication Date
EP4143733A1 true EP4143733A1 (en) 2023-03-08

Family

ID=72470437

Family Applications (1)

Application Number Title Priority Date Filing Date
EP21727776.3A Pending EP4143733A1 (en) 2020-04-30 2021-04-30 Method for verifying a barcode

Country Status (3)

Country Link
EP (1) EP4143733A1 (en)
FR (1) FR3109831B1 (en)
WO (1) WO2021219852A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3129760A1 (en) * 2021-11-30 2023-06-02 Advanced Track And Trace METHOD AND DEVICE FOR AUTHENTICATING PRINTED CODE
CN114492706B (en) * 2022-04-15 2022-07-01 北京紫光青藤微系统有限公司 Method and device for estimating module size of DM (direct memory access) code, decoding equipment and storage medium

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8798328B2 (en) * 2011-04-15 2014-08-05 Hewlett-Packard Development Company, L.P. Forensic marking identifying objects
DK2820592T3 (en) * 2012-03-01 2018-04-23 Sys Tech Solutions Inc Unique identification information from labeled features
EP3103061B1 (en) * 2014-02-04 2024-04-03 Thymaris Ltd. Method and apparatus for generating and storing an individual imperfection profile related to an original item and method and apparatus for determining an authentication status of a suspect item
CN110310131A (en) * 2019-06-24 2019-10-08 江苏圆昱智能科技有限公司 Code fingerprint method for anti-counterfeit and code fingerprint anti-counterfeiting system

Also Published As

Publication number Publication date
WO2021219852A1 (en) 2021-11-04
FR3109831A1 (en) 2021-11-05
FR3109831B1 (en) 2023-09-15

Similar Documents

Publication Publication Date Title
EP0315515B1 (en) Method for optically reading bar-codes
FR3058543B1 (en) METHOD FOR AUTHENTICATING AN ILLUSTRATION
EP4143733A1 (en) Method for verifying a barcode
WO2012131181A1 (en) Method for the automated extraction of a planogram from images of shelving
BE1026095B1 (en) Image processing device
BE1022630A1 (en) Method and system for determining candidate vanishing points for projective correction
EP2145293A2 (en) Card-counting device
WO2013045593A1 (en) Improved method of checking the appearance of the surface of a tyre
CN110533704B (en) Method, device, equipment and medium for identifying and verifying ink label
EP3311333B1 (en) Pairing of images of postal articles with descriptors of singularities of the gradient field
CN110619060B (en) Cigarette carton image database construction method and cigarette carton anti-counterfeiting query method
EP3829995A1 (en) Secure bottle and corresponding authenticating method
WO2020025790A1 (en) Method for securing a bottle and verifying the bottle
FR2860902A1 (en) DETERMINATION OF TEXTUAL CHARACTERISTICS OF PIXELS
EP3908968A1 (en) Method for processing digital images
FR3095286A1 (en) Process for image processing of an identity document
EP3328655B1 (en) Device and method for optimising the digital transformation of a substrate
FR2688911A1 (en) METHOD FOR CREATING THE SIGNATURE OF AN OBJECT REPRESENTED ON A DIGITAL IMAGE, OF THE TYPE CONSISTING OF DEFINING AT LEAST ONE CHARACTERISTIC DIMENSIONAL SIZE OF THE OBJECT, AND CORRESPONDING METHOD FOR VERIFYING THE SIGNATURE OF AN OBJECT.
EP3577635B1 (en) Method for verifying the authenticity of a sensitive product
FR2671648A1 (en) METHOD FOR RECOGNIZING AN IMAGE FORM
FR3049094A1 (en) METHOD OF IDENTIFYING A SET OF ROW BOOKS TO AUTOMATICALLY ESTABLISH THEIR LIST
WO2023099571A1 (en) Method and device for authenticating printed codes
FR2910158A1 (en) Visual code e.g. bar code, reading method for e.g. phone-cam, involves iterating code identification, descriptor calculation and evaluation operations from subsequent image of sequence of images, when acceptable descriptor is defective
WO2021144427A1 (en) Method for processing a candidate image
CA3204557A1 (en) Methods and apparatus for grading images of collectables using image segmentation and image analysis

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20221026

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)