WO2021219852A1 - Procédé pour la vérification d'un code-barre - Google Patents

Procédé pour la vérification d'un code-barre Download PDF

Info

Publication number
WO2021219852A1
WO2021219852A1 PCT/EP2021/061416 EP2021061416W WO2021219852A1 WO 2021219852 A1 WO2021219852 A1 WO 2021219852A1 EP 2021061416 W EP2021061416 W EP 2021061416W WO 2021219852 A1 WO2021219852 A1 WO 2021219852A1
Authority
WO
WIPO (PCT)
Prior art keywords
image
bar code
barcode
candidate
points
Prior art date
Application number
PCT/EP2021/061416
Other languages
English (en)
Inventor
Marc Pic
Mohammed Amine OUDDAN
Original Assignee
Surys
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 filed Critical Surys
Priority to EP21727776.3A priority Critical patent/EP4143733A1/fr
Publication of WO2021219852A1 publication Critical patent/WO2021219852A1/fr

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

L'invention concerne un procédé de traitement d'une image de référence d'un code-barre de référence présentant des défauts aléatoires d'impression, le procédé comprenant des étapes consistant à : - enregistrer dans une mémoire une image de référence en niveaux de gris du code-barre de référence, - enregistrer un identifiant (UID) du code-barre de référence sous forme d'index dans une base de données. 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 - enregistrer l'empreinte de référence dans la base de données.

Description

Procédé pour la vérification d'un code-barre.
DOMAINE DE L'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.
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.
Selon les cas, ils peuvent être inscrits sur un packaging primaire ou sur un packaging secondaire.
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.
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.
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.
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.
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.
RESUME DE L'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 à :
- enregistrer dans une mémoire une image de référence en niveaux de gris du code-barre de référence,
- enregistrer un identifiant (UID) du code-barre de référence sous forme d'index dans une base de données.
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
- 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é.
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 :
- 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 ;
- déterminer la position angulaire de points spécifiques situés sur le contour de chaque blob du code- barre de référence ;
- déterminer une courbe caractérisant le profil de chaque blob du code-barre de référence ;
- 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 ;
- 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
- 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.
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 à :
- enregistrer dans une mémoire une image candidate en niveaux de gris du code-barre candidat,
- décoder l'identifiant (UID) du code-barre candidat,
- 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,
- calculer une empreinte dudit code-barre candidat,
- comparer ladite empreinte du code-barre candidat avec l'empreinte de référence correspondante du code-barre de référence.
On peut prévoir que l'étape de comparaison comprend au moins l'une des étapes parmi :
- une étape de filtrage par carte de dissimilarité locale, éventuellement précédée d'une étape de débruitage ; et
- une analyse topologique de points irréguliers.
On peut prévoir des étapes consistant à :
- déterminer la localisation du code-barre candidat et son orientation dans un espace à 3 dimensions, - calculer un vecteur de pose,
- redresser l'image du code-barre candidat, et
- optionnellement nettoyer ladite image du code-barre candidat.
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,
- l'étape de comparaison étant mise en oeuvre par comparaison des séquences de bits qui les représentent.
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 :
- appliquer un filtre fréquentiel à l'image candidate,
- détecter la qualité de l'image candidate, grâce à des détecteurs de qualité d'image
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.
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.
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.
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.
DESCRIPTIF DES DESSINS
[FIG. 1] illustre un mode de réalisation d'un code-barres selon l'invention, et
[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. 3] illustre un agrandissement de l'encadrement de la figure 1,
[FIG. 4] illustre un agrandissement de l'encadrement de la figure 2,
[FIG. 5] illustre une image candidate comprenant des parasites,
[FIG. 6] illustre une image candidate selon l'invention,
[FIG. 7] illustre l'image de la figure 6 prétraitée et filtrée selon l'invention,
[FIG. 8] illustre l'image de la figure 7 binarisée selon l'invention,
[FIG. 9] illustre l'image de la figure 8 pour laquelle la forme du code-barre est mise en évidence,
[FIG. 10] illustre la figure 9 sur laquelle est appliquée une détection de contour,
[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. 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. 14] illustre une grille selon l'invention appliquée à un datamatrix,
[FIG. 15] illustre un tableau de points d'un datamatrix selon l'invention,
[FIG. 16] illustre le voisinage de points sur le tableau de la figure 15,
[FIG. 17] illustre deux blobs identiques selon l'invention,
[FIG. 18] illustre deux blobs différents selon l'invention,
[FIG. 19] illustre deux profils de blobs similaires selon l'invention,
[FIG. 20] illustre deux profils de blobs différents selon l'invention,
[FIG. 21] illustre une analyse topologique des points irréguliers selon 3 variantes selon l'invention,
[FIG. 22] illustre la construction de filtrations et leur représentation sous forme de code barre persistant selon l'invention,
[FIG. 23] illustre un diagramme de persistance du nuage de points de la Figure 22.
DESCRIPTION DETAILLEE
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.
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.
Dans le domaine des codes-barres des paquets de tabac, les UID répondent à une construction, une structure, imposée, connue.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
* Calcul d'empreinte
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.
1. Localisation du code-barre et rectification de l'image candidate
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.
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.
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.
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.
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.
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.
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.
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.
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.
Le vecteur de pose donne l'orientation du code-barre mais pas son échelle.
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.
2. Quadrillage du code-barre et la localisation exacte des points le constituant
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).
Un exemple est illustré sur la figure 12 avec une grille carrée régulière pour un code-barre de type datamatrix.
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.
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.
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.
On obtient ainsi une image candidate rectifiée et nettoyée.
3. Détermination de l'identifiant Unique inscrit dans le code-barre
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.
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.
On peut alors calculer un ensemble de descripteurs caractérisant chacun des points du code-barres candidat.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.
4. Sélection des points du code-barre
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.
Ensuite, on peut prévoir au moins l'une des étapes parmi :
- éliminer, c'est-à-dire ne pas traiter, les points correspondant aux éléments de repérage propres à chaque code-barre et qui sont invariants,
- 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.
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.
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.
5. Calcul des Propriétés
On prévoit de mettre en oeuvre au moins l'une, et de préférence au moins 2, des méthodes suivantes.
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.
5.1. Analyse des rapports de surface de couples de 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.
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.
A cet effet, on prévoit un traitement d'image pour chaque image de référence.
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.
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.
* Calcul de la surface de chaque point du 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.
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).
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 :
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,
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
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.
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).
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.
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.
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-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.
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 :
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_Div i,m =V Susi,m / V Sus i,m+i avec m=0:nombre de points allumés
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).
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.
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 :
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
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.
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.
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.
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.
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.
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.
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.
On peut calculer un score de similarité entre deux ensembles de 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.
5.3 Cartographie des Irrégularités des Blobs
Cette approche consiste à repérer les principales irrégularités d'un blob et à les inscrire sur une carte pour pouvoir les comparer.
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.
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é.
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.
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
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.
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.
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.
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.
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.
5.5 Caractérisations basées sur l'histogramme des gradients orientés (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.
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.
Ainsi, on a : Descri pteur(l)={descripteur(pij ), iε[l..N], jε [1..M]} Avec pi,j un point détecté
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.
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
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.
On peut effectuer une mesure de la similarité locale, par couples de 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.
Ainsi, la boite englobante du point candidat est redimensionnée à la taille de la boite englobante du point de référence correspondant.
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.
On a ainsi :
Similarité(p_Ref,p_Cand )=Σ KxLi=i distance(Hog Ref [block i],Hog cand [block i]) / KxL
Avec l'image de chacune des boites englobantes composée de KxL blocs.
En alternative ou en complément, on peut effectuer une mesure de la similarité globale.
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é.
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.
5.6 Carte de dissimilarité locale (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.
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).
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. ».
On définit par CDLbin la CDL de deux images binaires A et B comme étant :
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.
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).
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.
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.
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.
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.
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.
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.
Puis on compare CDL(F1, F2) à un seuil D_CDL prédéterminé et :
- si CDL(F1, F2) > D_CDL alors l'image candidate est considérée comme différente de l'image de référence,
- si CDL(F1, F2) < D_CDL alors l'image candidate est considérée comme identique à l'image de référence.
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.
Si l'image candidate est en niveaux de gris, elle est découpée en plusieurs images binaires.
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.
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.
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.
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.
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).
Plus généralement, on peut calculer la CDL globale de l'ensemble des N images binaires comme étant :
Figure imgf000015_0001
Avec Ai (respectivement Bi) une coupe binaire i de A (respectivement B), i compris entre 1 et N.
Puis on compare CDL(F1, F2) à un seuil D_CDL prédéterminé, comme décrit ci avant.
Si l'image candidate est en couleurs, elle peut être enregistrée en niveaux de gris et traitée comme décrit ci-dessus.
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.
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.
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.
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.
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) =
Figure imgf000015_0002
Plus généralement, on peut calculer la CDL globale de l'ensemble des C images binaires comme étant : CDL_XYZ(A,B)(p)=±
Figure imgf000015_0003
Avec dans ce cas C=3
Pour deux images binaires on a :
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 :
CDL(A,B)(p)
Figure imgf000015_0004
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.
Pour deux images avec C canaux on a :
CDL_C(A,B)(p)
Figure imgf000015_0005
Avec C le nombre de canaux, et Ak le canal k e (X;Y; Z) de l'image A.
Puis on compare CDL(F1, F2) à un seuil D_CDL prédéterminé, comme décrit ci avant.
5.7 Détection de défauts de convexité
Cette méthode vise la détection de points où la convexité n'est pas parfaite sur les contours de chaque point du 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.
On peut alors calculer l'enveloppe convexe du point correspondant à un module du datamarix, c'est-à- dire son 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é.
Pour une image candidate, on applique le même algorithme et on calcule les défauts de convexité de chaque blob.
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.
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.
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.
5.8 Calcul de 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.
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.
On prévoit de transformer l'image de référence en niveaux de gris.
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.
On peut alors calculer les contours externes des points du datamatrix à partir de l'image binaire, comme exposé ci-avant.
Pour chaque contour, on peut alors calculer les différents moments suivants.
Des moments spatiaux : mOO, mOl, mlO pour 3 cas 00, 01, 10.
Soit plus généralement : mji=
Figure imgf000016_0001
Avec array la fonction tableau.
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)
Figure imgf000017_0001
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
M1
Figure imgf000017_0002
Pour chaque blob, on peut avoir un vecteur V_Refm avec m l'indice du 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]
Avec m = 0 : nombre de points allumés
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.
Pour une image candidate prise avec un smartphone, on applique le même algorithme pour calculer la valeur du vecteur V_Candm.
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.
La comparaison se fait par métrique entre les moments, puis par une règle sur les ensembles de 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.
De préférence, on choisit les moments centrés normalisés, et plus précisément les moments nu20 et null.
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.
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.
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.
5.9 Analyse topologique des points irréguliers (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.
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.
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.
Après binarisation, on transforme les contours du blob candidat en un nuage de 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.
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.
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.
Ces 3 variantes sont illustrées sur la figure 21. Sur cette figure, à gauche est illustré un blob binarisé.
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.
À 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.
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.
À 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.
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.
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.
5.9. b. Analyse topologique de l'ensemble des points irréguliers
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.
5.9.c. Graphe topologique
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.
6. Stockage de l'empreinte
On peut prévoir au moins l'un des deux modes de stockages suivants.
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.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 ».
7 - Préparation pour une Comparaison Optimale
On peut prévoir une étape de préparation pour une comparaison optimale.
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.
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é.
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.
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.
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 :
Figure imgf000020_0001
C'est-à-dire que le calcul de la séquence de bits est adapté à chacune des méthodes de calcul d'empreinte choisies.
Par exemple, si on prend les trois premières méthodes décrites ici.
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 :
Figure imgf000020_0002
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 :
Figure imgf000020_0003
Figure imgf000020_0004
avec R E {1,2} correspondant aux deux irrégularités détectées par la méthode 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 :
Figure imgf000020_0005
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.
Décodage du code-barre
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.
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).
Grâce à l'invention, il est possible de répondre simultanément aux quatre contraintes fortes suivantes
- Obtenir un très faible taux de faux négatifs, correspondant à des paquets authentiques considérés comme suspects,
- Obtenir un extrêmement faible taux de faux positifs, correspondant à des faux paquets considérés comme vrais,
- Avoir une empreinte de la taille la plus petite possible, pour le stockage et le transport du paquet,
- Calculer le plus rapidement possible (inférieur au temps de production du paquet) cette empreinte.
Enfin, le temps de comparaison entre deux empreintes n'a pas forcément de contraintes fortes en termes de temps de calcul.

Claims

Revendications
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 à :
- enregistrer dans une mémoire une image de référence en niveaux de gris du code-barre de référence,
- 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 à :
- 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
- 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é.
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 :
- 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 ;
- déterminer la position angulaire de points spécifiques situés sur le contour de chaque blob du code-barre de référence ;
- déterminer une cartographie des irrégularités des blobs ;
- déterminer une courbe caractérisant le profil de chaque blob du code-barre de référence ;
- 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 ;
- 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
- 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.
3. Procédé de vérification d'un code-barre candidat comprenant un identifiant (UID), le procédé comprenant des étapes consistant à :
- enregistrer dans une mémoire une image candidate en niveaux de gris du code-barre candidat,
- décoder l'identifiant (UID) du code-barre candidat,
- 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,
- calculer une empreinte dudit code-barre candidat,
- comparer ladite empreinte du code-barre candidat avec l'empreinte de référence correspondante du code-barre de référence.
4. Procédé selon la revendication 3, dans lequel l'étape de comparaison comprend au moins l'une des étapes parmi :
- une étape de filtrage par carte de dissimilarité locale, éventuellement précédée d'une étape de débruitage ; et
- une analyse topologique de points irréguliers.
5. Procédé selon l'une quelconque des revendications 3 ou 4, comprenant des étapes consistant à :
- déterminer la localisation du code-barre candidat et son orientation dans un espace à 3 dimensions,
- calculer un vecteur de pose,
- redresser l'image du code-barre candidat, et
- optionnellement nettoyer ladite image du code-barre candidat.
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,
- l'étape de comparaison étant mise en oeuvre par comparaison des séquences de bits qui les représentent.
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 :
- appliquer un filtre fréquentiel à l'image candidate,
- détecter la qualité de l'image candidate, grâce à des détecteurs de qualité d'image.
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.
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.
10. Smartphone comprenant une mémoire dans laquelle est stockée le programme d'ordinateur selon la revendication 9.
PCT/EP2021/061416 2020-04-30 2021-04-30 Procédé pour la vérification d'un code-barre WO2021219852A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP21727776.3A EP4143733A1 (fr) 2020-04-30 2021-04-30 Procédé pour la vérification d'un code-barre

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2004317A FR3109831B1 (fr) 2020-04-30 2020-04-30 Procédé pour la vérification d’un code-barre.
FR2004317 2020-04-30

Publications (1)

Publication Number Publication Date
WO2021219852A1 true WO2021219852A1 (fr) 2021-11-04

Family

ID=72470437

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2021/061416 WO2021219852A1 (fr) 2020-04-30 2021-04-30 Procédé pour la vérification d'un code-barre

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114492706A (zh) * 2022-04-15 2022-05-13 北京紫光青藤微系统有限公司 估算dm码模块大小的方法及装置、解码设备、存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3129760B1 (fr) * 2021-11-30 2024-04-26 Advanced Track & Trace Procédé et dispositif d’authentification de codes imprimés

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120263343A1 (en) * 2011-04-15 2012-10-18 Simske Steven J Forensic marking identifying objects
EP2820592A1 (fr) * 2012-03-01 2015-01-07 Systech International Information d'identification unique à partir de caractéristiques marquées
US20160342885A1 (en) * 2014-02-04 2016-11-24 Hicof Inc. Method and apparatus for proving an authentication of an original item and method and apparatus for determining an authentication status of a suspect item
CN110310131A (zh) * 2019-06-24 2019-10-08 江苏圆昱智能科技有限公司 码指纹防伪方法和码指纹防伪系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120263343A1 (en) * 2011-04-15 2012-10-18 Simske Steven J Forensic marking identifying objects
EP2820592A1 (fr) * 2012-03-01 2015-01-07 Systech International Information d'identification unique à partir de caractéristiques marquées
US20160342885A1 (en) * 2014-02-04 2016-11-24 Hicof Inc. Method and apparatus for proving an authentication of an original item and method and apparatus for determining an authentication status of a suspect item
CN110310131A (zh) * 2019-06-24 2019-10-08 江苏圆昱智能科技有限公司 码指纹防伪方法和码指纹防伪系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KETATA ET AL.: "CORESA 2013 - 16ème édition du colloque COmpression et REprésentation des Signaux Audiovisuels", 28 November 2013, article "Localisation de tumeurs dans des séquences TEP, par détection de changements au moyen de dissimilarités locales"

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114492706A (zh) * 2022-04-15 2022-05-13 北京紫光青藤微系统有限公司 估算dm码模块大小的方法及装置、解码设备、存储介质

Also Published As

Publication number Publication date
FR3109831A1 (fr) 2021-11-05
FR3109831B1 (fr) 2023-09-15
EP4143733A1 (fr) 2023-03-08

Similar Documents

Publication Publication Date Title
EP0315515B1 (fr) Procédé de lecture optique de codes à barres
FR3058543B1 (fr) Procede pour l&#39;authentification d&#39;une illustration.
WO2021219852A1 (fr) Procédé pour la vérification d&#39;un code-barre
BE1017547A6 (fr) Compression d&#39;images numeriques de documents scannes.
WO2012131181A1 (fr) Procédé d&#39;extraction automatisée d&#39;un planogramme à partir d&#39;images de linéaire
BE1026095B1 (fr) Dispositif de traitement d’images
BE1022630A1 (fr) Procédé et système pour déterminer des candidats points de fuite pour la correction projective
EP2145293A2 (fr) Dispositif de comptage de cartes
WO2013045593A1 (fr) Methode amelioree de controle de l&#39;aspect de la surface d&#39;un pneumatique
CN110533704B (zh) 油墨标签的识别验伪方法、装置、设备及介质
WO2016203149A1 (fr) Appariement d&#39;images d&#39;articles postaux avec des descripteurs de singularites du champ de gradient
CN110619060B (zh) 一种条烟图像数据库构建方法及条烟防伪查询方法
EP3829995A1 (fr) Bouteille securisee et procede d&#39;authentification correspondant
WO2020025790A1 (fr) Procede de securisation d&#39;une bouteille et verification de la bouteille.
FR2860902A1 (fr) Determination de caracteristiques textuelles de pixels
WO2020144225A1 (fr) Procédé de traitement d&#39;images numériques
FR3095286A1 (fr) Procédé de traitement d’image d’un document d’identité
EP3328655B1 (fr) Dispositif et procédé d&#39;optimisation de transformation par voie numérique d&#39;un substrat
FR2688911A1 (fr) Procede de creation de la signature d&#39;un objet represente sur une image numerique, du type consistant a definir au moins un calibre dimensionnel caracteristique dudit objet, et procede correspondant de verification de la signature d&#39;un objet.
EP3577635B1 (fr) Procédé de vérification de l&#39;authenticité d&#39;un produit sensible
FR2671648A1 (fr) Procede de reconnaissance d&#39;une forme d&#39;image.
FR3049094A1 (fr) Procede d&#39;identification d&#39;un ensemble de livres ranges pour etablir automatiquement leur liste
WO2023099571A1 (fr) Procédé et dispositif d&#39;authentification de codes imprimés
EP4091098A1 (fr) Procédé de traitement d&#39;une image candidate
CA3204557A1 (fr) Procedes et appareil pour evaluer des images d&#39;objets a collectionner utilisant une segmentation d&#39;image et une analyse d&#39;image

Legal Events

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

Ref document number: 21727776

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021727776

Country of ref document: EP

Effective date: 20221130