System and method for decoding two-dimensional matrix symbols - Patents.com

By using data reading algorithms in systems of image devices and processors, the problem of difficult to read two-dimensional matrix symbols with damaged or missing fixed patterns in the prior art is solved, and efficient decoding and data extraction of these symbols are achieved.

JP7649339B2Active Publication Date: 2025-03-19COGNEX CORP
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023036456
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2014-11-18
Filing Date
2023-03-09
Publication Date
2025-03-19
Estimated Expiration
2035-11-18

AI Technical Summary

Technical Problem

It is difficult to effectively read two-dimensional matrix symbols containing damaged or missing fixed patterns, especially if the fixed patterns of symbols are damaged or missing.

Method used

By using a system including an image device and a processor, the system is able to receive images and locate, match and decode two-dimensional matrix symbols without relying on fixed patterns. The system includes a data reading algorithm, which can process images through frequency domain analysis and other technologies, locate data modules, estimate module locations, determine module values, and extract binary matrix from them.

Benefits of technology

Efficient reading and decoding of two-dimensional matrix symbols with damaged or missing fixed patterns is achieved, ensuring reliable extraction and parsing of data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007649339000001
    Figure 0007649339000001
  • Figure 0007649339000002
    Figure 0007649339000002
  • Figure 0007649339000003
    Figure 0007649339000003
Patent Text Reader

Abstract

A system for reading a two-dimensional matrix symbol or determining whether a two-dimensional matrix symbol is decodable is provided. Systems and methods for reading two-dimensional matrix symbols or determining whether a two-dimensional matrix symbol is decodable are disclosed. The systems and methods can include a data reading algorithm that receives an image, locates at least a portion of a data module within the image without using a fixed pattern, fits a model of the module portion from the image, estimates the model to yield a predicted module position, determines module values ​​from the image at the predicted module position, and extracts a binary matrix from the module values.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present technology relates to imaging systems and methods for decoding symbols, and more particularly to imaging systems and methods for reading two-dimensional matrix symbols in which the fixed pattern is incomplete or absent. [Background technology]

[0002] Imaging systems use image capture devices, including image sensors, to deliver information about the object being viewed. The system then interprets this information according to various algorithms to perform programmed decision-making and / or discrimination functions. In order for an image to be most efficiently captured by the sensor within the visible and near-visible light range, the object is typically illuminated.

[0003] Symbol reading using an image sensor (also commonly referred to as "barcode" scanning) involves aiming an optical element (lens) and a sensor (CMOS camera, CCD, etc.) at a location on an object that contains a symbol (e.g., a "barcode") and capturing an image of that symbol. The symbol includes a set of predefined patterns representing an ordered group of characters or shapes from which an attached data processor (e.g., a microcomputer) can derive useful information about the object (e.g., its serial number, make, model, price, etc.). Symbols / barcodes are available in a variety of shapes and sizes. Two of the most commonly used symbol types used to mark and identify objects are the so-called one-dimensional barcodes, which consist of a series of bars and spaces of varying widths, and the so-called two-dimensional barcodes, which consist of a two-dimensional array of dots or rectangles.

[0004] Typically in symbol reading, the symbol / barcode is identified by first locating a fixed pattern, e.g., a finder pattern. If the fixed pattern is damaged or missing, the reader cannot read the symbol. Recent attempts to address damaged fixed patterns have included determining the location of the corners of a rectangular symbol. However, these attempts require identifying a fixed point within the symbol / barcode, which is useless if the fixed point cannot be located due to the symbol being damaged. Summary of the Invention [Problem to be solved by the invention]

[0005] In particular, improved systems and methods for decoding symbols are needed to overcome the shortcomings associated with symbols / barcodes in which the fixed pattern is damaged or missing. [Means for solving the problem]

[0006] In one aspect, the present disclosure provides a system for reading a two-dimensional matrix symbol or determining whether a two-dimensional matrix symbol is decodable. The two-dimensional matrix symbol may include an incomplete fixed pattern or may not include a fixed pattern. The two-dimensional matrix symbol may encode a data set. The system may include an imaging device and a processor. The system may optionally include a binary matrix decoder. The imaging device may be configured to acquire an image including at least a portion of the two-dimensional matrix symbol. The processor may be operatively coupled to the imaging device. The processor may be configured to execute a data reading algorithm. The data reading algorithm may receive an image, locate at least a portion of a data module in the image without using a fixed pattern, fit a model of the module portion from the image, estimate the model to yield a predicted module position, determine a module value from the image at the predicted module position, and extract a binary matrix from the module value. A binary matrix decoder may be operably coupled to the processor. The binary matrix decoder may be configured to execute a decoding algorithm to decode the binary matrix. The data reading algorithm may include a frequency domain analysis.

[0007] In another aspect, the present disclosure provides a method for reading a two-dimensional matrix symbol. The two-dimensional matrix symbol may include data modules, each having a module value and a module location. The two-dimensional matrix symbol may include an incomplete fixed pattern or may not include a fixed pattern. The two-dimensional matrix symbol may encode a data set. The method may include one or more of the following steps: receiving an image in a processor, the image including at least a portion of the two-dimensional matrix symbol; using the processor to locate at least a portion of the data modules in the image without using a fixed pattern; using the processor to fit a model to at least a portion of the module locations from the image; using the processor to estimate the model to define a predicted module location; using the processor to determine a module value from the image at the predicted module location; using the processor to extract a binary matrix from the module value; and using the processor to decode the binary matrix.

[0008] The invention further includes the following numbered items: 1. A system for reading a two-dimensional matrix symbol including data modules each having a module value and a module location, the two-dimensional matrix symbol encoding a data set, the system comprising: an imaging device configured to acquire an image including at least a portion of the two-dimensional matrix symbol; a processor operatively coupled to the imaging device and executing a data reading algorithm, the data reading algorithm being configured to receive the image, locate at least a portion of the data modules in the image without using a fixed pattern, fit a model of the module locations from the image, estimate the model to yield a predicted module location, determine module values ​​from the image at the predicted module locations, and extract a binary matrix from the module values; and a binary matrix decoder operatively coupled to the processor, the binary matrix decoder configured to execute a decoding algorithm to decode the binary matrix; 2. The system of item 1, wherein the data reading algorithm uses an error correction routine to correct errors in the binary matrix; 3. The system of item 1, wherein the system includes an illuminator that illuminates the target in the image with one or more illumination features; 4. The system of item 3, wherein the data reading algorithm uses illumination features to locate at least a portion of the data module within the image; 5. The system of item 1, wherein locating at least a portion of the data module includes identifying one or more salient features of the data module, the salient features being selected from the group consisting of shape, presence or absence of a saddle, presence or absence of a corner, presence or absence of a point, gradient, histogram, wavelet, and combinations thereof; 6. The processor or binary matrix decoder estimates or 3. The system of claim 1, configured to: 7. The system of item 6, wherein the plurality of symbol types are selected from the group consisting of Data Matrix, QR Code, Aztec Code, MaxiCode, and combinations thereof; 8. The system of item 1, in which the data reading algorithm includes attributes of two-dimensional matrix symbols; 9. The system of item 1, wherein the data reading algorithm can be executed by a single command to the processor; 10. A method of reading a two-dimensional matrix symbol containing data modules each having a module value and a module location, the two-dimensional matrix symbol encoding a data set, the method comprising the steps of receiving an image containing at least a portion of the two-dimensional matrix symbol in a processor, locating, using the processor, at least a portion of the data modules in the image without using a fixed pattern, fitting, using the processor, a model to at least a portion of the module locations from the image, estimating, using the processor, the model to define a predicted module location, determining, using the processor, a module value from the image at the predicted module location, extracting, using the processor, a binary matrix from the module values, and decoding the binary matrix; 11. The method of item 10, wherein the method further comprises the step of using a processor to correct errors in the binary matrix using an error correction routine; 12. The method of item 10, further comprising the step of illuminating the two-dimensional matrix symbol or a location proximate to the two-dimensional matrix symbol; 13. The method of claim 10, wherein locating at least a portion of the data module includes identifying one or more salient features of the data module, the salient features being selected from the group consisting of shape, presence or absence of a saddle, presence or absence of a corner, presence or absence of a point, gradient, histogram, wavelet, and combinations thereof; 14. The method of item 10, wherein the method includes the step of attempting to estimate or decode multiple symbol types; 15. The method of item 14, wherein the plurality of symbol types are selected from the group consisting of Data Matrix, QR Code, Aztec Code, MaxiCode, and combinations thereof; 16. The method of item 10, further comprising the step of training the processor to include one or more attributes of the two-dimensional matrix symbol prior to receiving the image; 17. The method of item 10, wherein the method can be executed by a single command to a processor; 18. A system for determining whether a two-dimensional matrix symbol is decodable, the two-dimensional matrix symbol including data modules each having a module value and a module location, the system comprising: an imaging device configured to acquire an image including the two-dimensional matrix symbol; and a processor operatively coupled to the imaging device and configured to execute a data reading algorithm, the data reading algorithm being configured to receive the image, locate at least a portion of the data modules in the image without using a fixed pattern, fit a model of the module locations from the image, estimate the model to yield a predicted module location, determine module values ​​from the image at the predicted module locations, and extract a binary matrix from the module values, the data reading algorithm including a frequency domain analysis; 19. The system of item 18, in which the data reading algorithm uses frequency domain analysis to fit a model; 20. The system of item 18, further comprising a binary matrix decoder operably coupled to the processor, the binary matrix decoder configured to execute a decoding algorithm to decode the binary matrix.

[0009] These and other aspects and advantages of the present invention will become apparent from the following description, in which reference is made to the accompanying drawings, which form a part hereof, and in which preferred embodiments of the invention are shown by way of example. Such embodiments do not, however, necessarily represent the full scope of the invention, and reference is therefore made to the claims and this specification in order to interpret the scope of the invention.

[0010] The present invention will be better understood, and features, aspects and advantages thereof, in addition to those described above, will become apparent, when consideration is given to the following detailed description of the invention, which refers to the accompanying drawings, in which: [Brief description of the drawings]

[0011] [Figure 1] 1 is a schematic diagram of a typical entitlement system configuration including a fixed scanner for acquiring multiple images of an object, according to an embodiment of the present invention. [Diagram 2] FIG. 1 is a diagram of the characteristics and style of certain two-dimensional matrix symbols. [Diagram 3] FIG. 1 is a diagram of the characteristics and style of certain two-dimensional matrix symbols. [Figure 4] FIG. 1 is a diagram of the characteristics and style of certain two-dimensional matrix symbols. [Diagram 5] FIG. 1 is a diagram of the characteristics and style of certain two-dimensional matrix symbols. [Figure 6] FIG. 1 is a diagram of the characteristics and style of certain two-dimensional matrix symbols. [Figure 7] FIG. 1 is a diagram of the characteristics and style of certain two-dimensional matrix symbols. [Figure 8] FIG. 2 is a diagram of a two-dimensional matrix symbol and background clutter in an image. [Figure 9] 4 is a flow diagram illustrating one embodiment of a two-dimensional matrix symbol reading method according to the present disclosure. [Figure 10] FIG. 1 is a diagram of an example of a QR Code matrix symbol. [Figure 11] FIG. 2 is an example of an Aztec Code Matrix symbol. [Figure 12] FIG. 2 is a diagram of an example of a MaxiCode matrix symbol. [Figure 13] FIG. 1 is a diagram of an example of a QR Code matrix symbol. [Figure 14] 1 is a schematic diagram of an Aztec Code Matrix symbol. [Figure 15] 1 is a schematic diagram of a particular portion of an Aztec Code matrix symbol; [Figure 16] 2 is a schematic diagram of a fixed pattern portion of a MaxiCode matrix symbol; [Figure 17] 2 is a schematic diagram of a data area within a MaxiCode matrix symbol. [Figure 18] 4 is a flow diagram illustrating an optional subroutine according to the present disclosure. [Figure 19] 4 is a flow diagram illustrating a fitting subroutine according to the present disclosure. [Figure 20] 11 is a flow diagram illustrating an optional robustness subroutine according to the present disclosure. [Figure 21] 4 is a flow diagram illustrating an extraction subroutine according to the present disclosure.

[0012] While the present technology is susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and are herein described in detail. However, the description herein of specific embodiments is not intended to limit the present technology to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present technology as defined by the appended claims. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0013] Various aspects of the technology of the present subject matter will now be described with reference to the accompanying drawings, in which like reference characters correspond to like elements throughout the several views. However, the drawings and the following detailed description related thereto are not intended to limit the claimed subject matter to the particular forms disclosed. Rather, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the claimed subject matter. It is to include substitutes.

[0014] As used herein, the terms "component," "system," "device," etc. are intended to refer to either hardware, a combination of hardware and software, software, or software in execution. The word "exemplary" is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs.

[0015] Furthermore, the disclosed subject matter may be implemented as a system, method, apparatus, or article of manufacture using standard programming and / or engineering techniques, and / or programming to manufacture hardware, firmware, software, or any combination thereof, to control electronics-based devices to implement aspects detailed herein.

[0016] Unless otherwise specified or limited, "connected" and "coupled" and variations thereof are used broadly and include both direct and indirect mounting, connecting, supporting, and coupling. Furthermore, "connected" and "coupled" are not limited to physical or mechanical connections or couplings. As used herein, unless expressly stated otherwise, "connected" means that one element / feature is directly or indirectly connected to another element / feature, not necessarily electrically or mechanically. Similarly, unless expressly stated otherwise, "coupled" means that one element / feature is directly or indirectly coupled to another element / feature, not necessarily electrically or mechanically.

[0017] As used herein, the term "processor" may include one or more processors and memory and / or one or more programmable hardware elements. As used herein, the term "processor" is intended to include any type of processor, CPU, microcontroller, digital signal processor, or other device capable of executing software instructions.

[0018] As used herein, the term "memory" includes non-volatile media such as magnetic media, hard disks, optical storage devices, or flash memory, volatile media such as system memory, such as random access memory (RAM), such as DRAM, SRAM, EDO RAM, RAMBUS RAM, DR DRAM, installation media, such as software media, such as CD-ROMs, or floppy disks, on which programs can be stored and / or data communications can be buffered. The term "memory" may also include other types of memory or combinations thereof.

[0019] As used herein, the term "fixed pattern" includes a pattern that is repeated in every symbol and that can be used to locate the symbol, including finder patterns, timing patterns, alignment patterns, quiet zones, etc.

[0020] As used herein, the term "module value" refers to any difference between two modules that can be quantified, such as the difference in brightness of the modules with or without illumination, or the difference in the brightness of the modules when measured by a distance sensing device or visually by a particular value. In certain embodiments, the module value is binary between the foreground and background modules.

[0021] As used herein, the term "module position" includes the position of a module relative to some fixed point in an image, such as another module or a lighting feature.

[0022] As used herein, the term "binary" is intended to include other non-binary forms unless the context unambiguously dictates otherwise. For example, if a non-binary two-dimensional matrix symbol is utilized, the values ​​determined and extracted from the symbol may be non-binary. As another example, if a non-binary two-dimensional matrix symbol is utilized, decoding the binary matrix may include decoding the non-binary matrix.

[0023] The embodiments of the technology of the present invention are described below by using drawings to show either the structure of the embodiments or the processes used to implement the embodiments of the technology of the present invention. The use of drawings to present the embodiments of the technology of the present invention in this manner should not be construed as limiting its scope. The technology of the present invention contemplates a system and method for reading two-dimensional matrix symbols that have damaged or entirely missing fixed patterns.

[0024] Various aspects of the method for reading two-dimensional matrix symbols may be described in conjunction with a system adapted to read two-dimensional matrix symbols, since the features and advantages of the present technology are well suited for this purpose. It should also be understood that various aspects of the present technology may be applied to other forms of imaging systems, such as hand-held scanners, fixed-mount scanners, or built-in smart cameras, that may benefit from a reading process having the features described herein. Additionally, various aspects of the system for reading two-dimensional matrix symbols may be described in conjunction with a method for reading two-dimensional matrix symbols.

[0025] 1 illustrates an exemplary machine vision system 30 adapted to acquire one or more images 32 of an object 34 including a machine-readable symbol 36. A conveyor 38 transports the object 34 and causes relative motion between the object 34 and a field of view 40 of an imaging device 42. The exemplary machine vision system may be used in manufacturing assembly, test, measurement, automation, and / or control applications, among others, as non-limiting examples. The machine vision system 30 may employ image acquisition software 44 operable to perform any of various types of image acquisition.

[0026] The imaging device 42 may include a processor 46 used for image processing and decoding, for example. The processor 46 may be coupled to, be part of, or locally linked to the visual sensor 48. The processor 46 may have image capture software 44 encoded therein, or in some embodiments, the image capture software 44 may run on a separate computing device 50 or on the processor 46. The image capture software 44 may be configured to, among other things, capture multiple images in a single reading operation, control lighting, capture image data, and process / decode the captured image data into usable information. In certain embodiments, the imaging device 42 may be a distance sensing device.

[0027] The imaging device 42 may also include a memory medium 52 coupled to the visual sensor 48 and / or the processor 46. The memory medium 52 may be used to store scanned or processed images 32, buffer data and communications, and the like. A communication line 54, such as a wired or wireless connection capable of transmitting images, image pixel arrays, and the like, may also be coupled to the imaging device 42 and may provide a connection point to an optional computing device 50. The computing device 50 may be used, for example, to upload and download scanned or processed images 32. The imaging device 42 or computing device 50 may include further communication lines 54, such as a wired or wireless connection, capable of transmitting data to enable transfer of decoded data. The vision system 30 may include an optional trigger input 104 coupled to the imaging device 42 or computing device 50 by the communication line 54, such as a wired or wireless connection capable of transmitting a binary digital signal. It should be understood that wireless communication is also contemplated. In this example, imaging device 42 may be a conventional fixed-mount scanner, a handheld scanner, or a built-in smart camera capable of providing high-angle and / or low-angle illumination, or a combination of high-angle and low-angle illumination.

[0028] The imaging device 42 may also include a sight (not shown). The sight may be an auxiliary lighting system, such as a laser or LED, that may indicate a characteristic of the imaging device 42, such as the active area of ​​the imaging device 42. For example, the sight may indicate the center or boundary of the FOV of the imaging device 42.

[0029] The various aspects described herein enable the reading of two-dimensional matrix symbols that include an incomplete or no fixed pattern. In particular, the various embodiments are described in the context of imaging and decoding two-dimensional matrix symbols. In this example, a symbol 36 is affixed to a surface of an object 34. The object 34 may sometimes be partially covered, may be printed on the edge of a label, may not be properly illuminated, or for some other reason may render some portions of the symbol 36 unreadable. While the various aspects may be useful for reading symbols that have an incomplete or no fixed pattern, it should be understood that the various aspects are also suitable for reading symbols that have a complete fixed pattern.

[0030] 2-7, a two-dimensional matrix symbol 56 in the form of a data matrix may be composed of one or more data areas 58 containing typically square symbol modules 60 arranged in a rectangular array. Alternatively, the symbol modules 60 may be circular, such as those created by laser or dot peening, or may be of other shapes suitable for data storage. The data areas 58 are partially surrounded by a finder pattern 62, which is generally "L" shaped, and the data areas 58 may be surrounded on all four corners by quiet zones 64. A timing pattern 66 allows for the counting of the number of rows and columns in the symbol 36. FIG. 5 shows an example of a two-dimensional matrix symbol 56 in black on a white background, and FIG. 6 shows , on a black backgroundAn example of a white two-dimensional matrix symbol 70 is shown. In certain embodiments, the two-dimensional matrix symbol is a color-based code. Examples of color-based codes include, but are not limited to, High Capacity Color Barcode (HCCB) and UltraCode. An alignment pattern 72 may also be included and is typically used with symbols of larger grid sizes (see FIG. 7). It is these finder patterns 62, timing patterns 66, alignment patterns 72, etc. that are damaged or lost in the two-dimensional matrix symbol that is read by the present disclosure. FIG. 4 shows a two-dimensional matrix symbol 56 in the form of a data matrix without a finder pattern 62 or a timing pattern 66.

[0031] With reference to Figure 10, there is shown a two-dimensional matrix symbol 56 in the form of a QR Code® having a plurality of finder patterns 62. With reference to Figure 13, there is shown a two-dimensional matrix symbol 56 in the form of a QR Code® having a plurality of version information areas 82, a plurality of format information areas 84, a plurality of finder patterns 62, a plurality of alignment patterns 72, a plurality of timing patterns 66, and a quiet zone 64.

[0032] With reference to Figure 11, there is shown a two-dimensional matrix symbol 56 in the form of an Aztec code having a finder pattern 62 (which is highlighted by greying out the remainder of the two-dimensional matrix symbol 56). With reference to Figure 14, there is shown a two-dimensional matrix symbol 56 in the form of an Aztec code having a fixed pattern including a finder pattern 62, a timing pattern 66 or reference grid, and a direction pattern 86, and a variable structure including a mode message 88 and a data layer 90. With reference to Figure 15, there is shown a portion of a two-dimensional matrix symbol in the form of an Aztec code having a finder pattern 62, a direction pattern 86, a timing pattern 66, and a mode message 88.

[0033] With reference to Figure 12, there is shown a two-dimensional matrix symbol 56 in the form of a MaxiCode having a finder pattern 62. With reference to Figure 16, there is shown a portion of a two-dimensional matrix symbol 56 in the form of a MaxiCode having a directional pattern 86 formed by modules represented by the symbols "B" and "W". With reference to Figure 17, there is shown a two-dimensional matrix symbol 56 in the form of a MaxiCode having no finder pattern and having a directional pattern 86 formed by modules represented by the symbols "B" and "W" located within modules and a character string represented by serial numbers 1 to 144.

[0034] 9, a flow diagram is provided detailing steps of a method 200 according to the present disclosure. Details of the method 200 are described in the following paragraphs. The system 30 is configured to perform the methods described herein. The system 30 may perform the methods by the symbol location algorithm 74, the module measurement algorithm 100, the matrix decoding algorithm 102, or a combination thereof.

[0035] At process block 202, method 200 can begin by receiving an image pixel array at a processor, the image pixel array including at least a portion of an image of a two-dimensional matrix symbol captured by a sensor. The image pixel array can be received at the processor by using a camera to acquire an image pixel array that is then transmitted to the processor, or by simply receiving an image pixel array file at the processor. The particular means of acquiring the image pixel array is not intended to be a limitation to this disclosure.

[0036] A two-dimensional matrix symbol may contain data modules, each having a module value and a module position. A two-dimensional matrix symbol may contain an incomplete fixed pattern or no fixed pattern. A two-dimensional matrix symbol may encode a data set.

[0037] At process block 204, the method 200 continues by locating one or more candidate regions, validating the candidate regions, and prioritizing the candidate regions, as shown in FIG. The method may continue by executing an optional subroutine 204 that includes one or more of the steps of prioritizing and estimating the extent of the two-dimensional symbol within the image pixel array. Any or all steps of the optional subroutine 204 may be optional.

[0038] 18, the optional subroutine 204 may begin by locating one or more candidate regions within the image pixel array at process block 402. Locating the one or more candidate regions may be performed by methods known to those skilled in the art, such as the methods disclosed in U.S. Patent No. 7,181,066, which is incorporated herein by reference in its entirety.

[0039] At process block 404, the optional subroutine 204 may continue by validating one or more candidate regions. The validated candidate regions are more likely to contain a two-dimensional symbol. Validating the one or more candidate regions may be performed by methods known to those skilled in the art, such as the methods disclosed in U.S. Patent No. 7,181,066, which is incorporated herein by reference in its entirety.

[0040] At process block 405, the optional subroutine 204 may continue by prioritizing one or more candidate regions. Prioritization may be based on attributes of the candidate regions including, but not limited to, size, contrast, edge density, gradient histogram, other symbols present in the scene (one or two dimensional), etc., or combinations thereof.

[0041] At process block 406, the optional subroutine 204 may continue by estimating the extent of the two-dimensional symbol within the image pixel array.

[0042] It should be appreciated that in embodiments utilizing a handheld scanner as the imaging device, or in other embodiments in which a user orients the imaging device toward the two-dimensional matrix symbol or orients the two-dimensional matrix symbol toward the imaging device, locating the two-dimensional matrix symbol can be significantly less computationally demanding because the user is presumably pointing the imaging device toward the two-dimensional matrix symbol or aligning the two-dimensional matrix symbol with the imaging device.

[0043] 8, a symbol location algorithm 74 can be used to find the two-dimensional matrix symbol 56. If the remaining symbols 78 in the image pixel array 80, e.g., text and numbers, do not contain a sufficient number of features required to be two-dimensional matrix symbols, they are considered background clutter and can be ignored by the symbol location algorithm 74. Locating the two-dimensional matrix symbol can be implemented as part of a general image segmentation algorithm.

[0044] At process block 206, the method 200 may continue by locating at least a portion of the data module within the image pixel array. Typically in the prior art, locating a two-dimensional matrix symbol is accomplished by locating a fixed pattern, but in this case, the fixed pattern is damaged or missing. Locating at least a portion of the data module may be accomplished using a processor or auxiliary components. Locating at least a portion of the data module may include identifying one or more salient features of the data module, including, but not limited to, shape, presence or absence of a saddle, presence or absence of a corner, presence or absence of a point, edges, gradients, histograms, wavelets, or combinations thereof. Image pixel Locating at least a portion of the data module within the pixel array can be accomplished by methods known to those skilled in the art, such as those disclosed in U.S. Pat. No. 7,181,066 and U.S. patent application Ser. No. 13 / 797,910, which are incorporated herein by reference in their entireties.

[0045] 19, the module location subroutine 206 may include one or more of the following steps: At process block 502, the module location subroutine 206 may optionally include upsampling small regions and downsampling large regions. At process block 504, the module location subroutine 206 may include extracting an edge strength image from the candidate region or the two-dimensional matrix symbol. At process block 506, the module location subroutine 206 may include fast Fourier transforming the edge strength image to create a two-dimensional power spectrum. At process block 508, the module location subroutine 206 may include extracting one or more peaks from the two-dimensional power spectrum, the one or more peaks including a peak defining a major axis of the two-dimensional matrix symbol, a peak defining a pitch of the two-dimensional matrix symbol, or a combination thereof. It should be noted that due to symmetry in the power spectrum, when the data modules in the two-dimensional matrix symbol are arranged in an equally spaced array and scanned from an angle perpendicular to the two-dimensional matrix symbol, only a single peak needs to be extracted. At process block 510, the module location subroutine 206 can optionally include executing a robustness subroutine. At process block 512, the module location subroutine 206 can include locating one or more modules within the image pixel array. In aspects that utilize the robustness subroutine 510, this step determines the offset of a predicted module center within the image pixel array.

[0046] 20, the robustness subroutine 510 may include one or more of the following steps: At process block 602, the robustness subroutine 510 may include creating a mask of the two-dimensional power spectrum using one or more peaks from the power spectrum created at process block 508. At process block 604, the robustness subroutine 510 may include inverse fast Fourier transforming the masked two-dimensional power spectrum to create a grayscale image of the predictor module centers. At process block 606, the robustness subroutine 510 may include locating the predicted grayscale module centers relative to the candidate regions and refining the placement using subpixel interpolation.

[0047] In alternative embodiments, the module localization subroutine may include using a point detector known to those skilled in the art, such as a Hessian determinant or a Gaussian difference, estimating the orientation, pitch, and offset using at least two points when the rows and columns of the two-dimensional matrix are perpendicular in the image pixel array, or at least three points when the row and column modules of the two-dimensional matrix are not perpendicular, using methods such as random sample consensus (RANSAC), geometric hashing, and the like, and continuing with process block 606 or 512. When fewer modules are used to estimate the orientation, pitch, and offset, the relative orientation of the placed modules will have a significant effect on the orientation and pitch estimation accuracy. Those skilled in the art will recognize that the orientation accuracy increases when the modules are separated (and decreases when the modules are closer together) due to the inherent measured position accuracy of the modules. Similarly, the pitch estimation may be performed with a larger separation and with a larger matrix. The offsets in rows and columns of the boxes are more accurately derived from the modules, where the offsets are known.

[0048] In certain aspects, other features of the modules may be used in the above described methods, including, but not limited to, edges between foreground and background modules.

[0049] At process block 208, the method may further include a fitting subroutine 208 that may include fitting a model to at least a portion of the module locations. Fitting a model to at least a portion of the module locations may be accomplished by techniques known to those skilled in the art. Fitting a model to at least a portion of the module locations may be performed using a processor or auxiliary components. The model itself may vary based on the type of two-dimensional matrix symbol being read (i.e., a model for a two-dimensional matrix symbol in which modules are arranged in a rectangular array will be different from a model for a two-dimensional matrix symbol in which modules are arranged in a hexagonal array). In certain embodiments, the model may be strictly equidistant, piecewise linear, perspective, affine. In certain embodiments, the model may be a polynomial or thin-plate spline, or a deformable template that can account for other effects such as mark substrate distortion or marking imperfections. In certain embodiments, the model may be a geometric fit that can account for effects such as marking on non-standard shapes (e.g., cylindrical). In certain aspects, the model can account for expected variations in mark printing, such as in continuous ink jet printers, which print dots of ink in a raster, resulting in highly correlated rows and low correlated columns, or vice versa.

[0050] In one non-limiting example of the fitting subroutine 208, a two-dimensional image can be segmented and features (i.e., foreground modules, such as black marks on a white surface or vice versa) can be extracted. It should be understood that not all features need to be extracted for the fitting subroutine 208 to run successfully. Next, a feature near the center of the group of extracted features is selected. Locally in a small area, the modules (foreground and background modules) are assumed to be aligned with the affine model. Starting with the feature near the center, features are selected moving outward from the center, and a model is constructed as these features are selected. From the central feature, nearby feature points are identified and a local affine model (e.g., a 5×5 module patch) is estimated. After the local affine model is fitted to the nearby feature points, all feature modules are extracted (foreground and background modules). The next step involves shifting this affine model in various directions. In an ideal model, the central feature can be defined as [0,0]. Starting with the local affine model described above, the affine model is transferred to one module in various directions (e.g., eight different directions: east, southeast, south, southwest, west, northwest, north, and northeast with respect to the local affine model). Once the affine model has been transferred to one module in a direction, an initial estimate of a new affine model is created. Feature points located near the new local affine model are used to refine the new local affine module. This transfer continues in each direction until no new feature points are identified in the respective new local affine model. Once all directions are completed and all of the respective correspondences have been identified, a polynomial model can be used to fit the correspondences. It should be understood that various rows and / or columns can be estimated to account for damage that may have occurred to the code.

[0051] At process block 210, the method 200 may further include estimating a model that results in a predicted module position. Estimating the model may be performed using a processor or auxiliary components. Estimating the model may include estimating a matrix code. The method may include mapping non-dimensional rows / columns of a pixel array (2-dimensional x-pitch, x-phase, y-pitch, y-phase) to an image pixel array. It should be understood that the present disclosure is not limited to Cartesian or 2-dimensional coordinates, and that hexagonal, polar, and other coordinate systems are contemplated.

[0052] The prediction module locations are locations relative to the image pixel array where the modules may be located to form a complete two-dimensional matrix symbol. It should be understood that the prediction module locations need not be integer pixel coordinates, so sub-pixel locations are explicitly contemplated. In addition, other coordinate systems with known mapping to the image pixel grid are contemplated, such as a calibrated real-world coordinate system with a known relationship to the image pixel array. When the prediction module locations are located outside the image pixel array, the module values ​​for these locations may be unknown. The step of decoding the binary matrix may use erasure correction to maximize resistance to damage caused by symbols extending beyond the image pixel array.

[0053] At process block 212, the method 200 may further include determining a module value from the image pixel array at the predicted module location. Determining the module value may be performed using a processor or auxiliary components. Determining the module value may be accomplished by techniques known to those skilled in the art. For example, the module value may be determined by a Data Matrix Reference Decoding algorithm, such as that set forth in ISO / IEC 16022:2006, Section 9. The sampling, or measurement of the module value, may be performed on either a binarized image or a grayscale image (optionally pre-filtering the image). In certain aspects, the sampling may include selecting a pixel having a location closest to the predicted center. In certain aspects, the sampling may be grayscale interpolated from pixels surrounding the predicted center. Determining the module value may include determining whether the module is foreground or background (i.e., whether the module is dark or light). In certain aspects, determining the module value may include measuring the intensity of reflected light from the module location, with a light module reflecting more light than a dark module. In certain aspects, determining the module value may include measuring the depth of the module from a distance sensing device.

[0054] In certain aspects, determining the module value may optionally include binarization using methods known in the art. For example, binarization using a single threshold on the gray value of the pixel may be used. As another example, local thresholding designed to accommodate illumination variations across the symbol may be used. In certain aspects, the module value may be the binary value of the pixel closest to the predicted module position.

[0055] In another aspect, determining the module value can include sampling a value based on the image pixel array and the prediction module position. For example, the original captured image can be processed, such as by using a smoothing filter to reduce noise. The value of the pixel closest to the prediction module position can then be taken as the module value. Alternatively, the module position can be interpolated from the values ​​of pixels near the prediction module position.

[0056] After the module value is determined, the module value (raw measurement or binary) can be stored in an array. When the estimation 406 or the estimation step 210 of the range of the two-dimensional matrix symbol is inaccurate, the array is used to store the data in the two-dimensional matrix symbol. The module value array may be larger or smaller than the number of data module rows and / or columns. The module value array includes at least a portion of the two-dimensional matrix symbol and possibly a portion of the quiet zone and / or background clutter surrounding the symbol. The array is organized along the major axis of the symbol, but the offset and orientation of the actual symbols within the array is undetermined. The storage of the array may be one or two dimensional or multi-dimensional, as should be apparent to one skilled in the art.

[0057] When the range of the symbol is unknown when determining the module value from the predicted module position, the exact boundaries of the symbol are ignored when determining the module value. After the module value is determined, it can be stored in a one-dimensional or multi-dimensional array that includes at least a portion of the two-dimensional matrix symbol, and possibly a portion of the quiet zone and / or background clutter around the symbol. The array is organized along the major axis of the symbol, but the offset and orientation of the actual symbol within this array is undetermined. The size of the array can range from about 10x10 modules to about 200x200 modules, with rows and columns added in embodiments where the exact boundaries of the symbol are avenues. The size of these arrays is much smaller than the typical size of image pixel arrays, which may have sizes from 640x480 to 2500x1200 pixels or more. In certain aspects, partial fixed patterns can be more easily identified in the module value array than in the image pixel array. When the symbol is unknown, locating at least a portion of the fixed pattern within the module value array can be used to distinguish between symbols.

[0058] At process block 214, the method 200 may further include extracting a binary matrix from the modular value array. Extracting the binary matrix may include searching for fixed pattern fragments in the determined modular value array, creating hypotheses for symbol positions in the determined modular value array, and optionally binarizing the modular values ​​and assembling a binary symbol matrix by assigning the binarized modular values ​​to hypothetical positions in an array of a size corresponding to the two-dimensional matrix symbol size in hypothesized or known rows and columns. Similarly, the array may be stored in a one-dimensional or multi-dimensional manner, as would be apparent to one skilled in the art.

[0059] As shown in FIG. 21, the extraction of the binary matrix 214 may include multiple processes and decisions. In process block 702, the extraction of the binary matrix 214 may include searching for a fixed pattern fragment, optionally including a quiet zone, in the module value array or binary matrix. Searching for (and, if successful, locating) the fixed pattern may be done through methods known to those skilled in the art. Examples include, but are not limited to, correlation, normalized correlation, blob analysis, and the like. In decision block 704, the extraction of the binary matrix 214 proceeds via process block 706 if the fixed pattern fragment is found, or via process block 714 if the fixed pattern fragment is not found.

[0060] When a fixed pattern fragment is found, at process block 706, the extraction of a binary matrix 214 may include creating one or more hypotheses using the fixed pattern fragment. At process block 710, the extraction of a binary matrix 214 may include assembling a binary symbol matrix by assigning binarized module values ​​to hypothesis locations in an array of a size corresponding to the two-dimensional matrix symbol size in the hypothesized or known rows and columns. In some aspects, at process block 712, the extraction of a binary matrix 214 may include optionally Optionally, the method may include prioritizing the assembled binary symbol matrix, which may include evaluating the range of found fixed pattern fragments or range of identified module locations from 206 against the estimated module locations from 210.

[0061] In some aspects where binarization is not part of the module value determination, in process block 708, the extraction of binary matrix 214 may optionally include binarizing the module values ​​from the hypothetical positions using methods known in the art. For example, binarization using a single threshold on the gray value of the pixel may be used. As another example, local thresholding designed to accommodate illumination variations across the symbol may be used. In certain aspects, the module value may be the binary value of the pixel closest to the predicted module position.

[0062] In some aspects, the hypotheses include the position or offset of the binary symbol matrix within the modular value array, the orientation of the binary symbol matrix within the modular value array, the size of the binary symbol matrix with respect to symbol columns and rows, the symbol type, the mirror state, the polarity of the symbol, or a combination thereof. In some aspects, one or more attributes of the size of the binary symbol matrix, the mirror state, and the polarity of the symbol may be derived from prior knowledge or training from user input.

[0063] In embodiments where at least a portion of the fixed pattern is detected in a module value matrix or a binary matrix, the portion of the fixed pattern can then be used to create one or more hypotheses for the proposed decoding. Detection of the fixed pattern in a module value matrix can be performed in a raw value matrix where each value represents a module intensity or height measurement, or in a binary matrix where each binary bit represents a foreground or background module. The detection method can be one of normalized correlation, binary bit counting, or a combination thereof. As an example, if an 18x18 data matrix symbol having a 16x16 data region is identified by the presence of at least a portion of a finder pattern, but no clocking pattern is observed, the following hypotheses can be used: hypothesis 1, which may predict that the symbol is an 18x18 data matrix lacking a clocking pattern; hypothesis 2, which may predict that the symbol is an 18x18 data matrix lacking a clocking pattern and rotated 90 degrees from hypothesis 1; and hypothesis 3, which may predict that the symbol is a data matrix of size 20x20 or greater lacking multiple rows and columns adjacent to the clocking pattern. In certain aspects, hypothesis 3 from this example may not be decodable due to excessive data loss. In certain aspects, these hypotheses are prioritized and the sequence of decoding attempts for these hypotheses is from highest priority (most likely) to lowest priority (least likely). In certain aspects, a subset of the hypotheses is attempted. In certain aspects, the prioritization can be based on the range of observed fixed patterns, observed data domain histograms, or a combination thereof.

[0064] When a fixed pattern fragment is not detected, the extraction of binary matrices 214 may include making one or more hypotheses without using the fixed pattern fragment at process block 714. In some aspects, the extraction of binary matrices 214 may optionally include prioritizing the assembled binary symbol matrix at process block 712. The prioritizing may include evaluating a range of identified module positions from 206 against the estimated module positions from 210.

[0065] In embodiments where no fixed pattern is observed, multiple hypotheses can be made. The number of hypotheses can vary depending on the computational demands of the hypotheses and the practicality of testing the hypotheses with or without prior knowledge. As an example, if a 20x20 data region of an unknown symbol is observed, the following hypotheses can be used: hypothesis 1, which may predict that the symbol is a 22x22 data matrix lacking a finder and clocking pattern in a particular orientation; hypothesis 2, which may predict that the symbol is a 21x21 QR Code with a damaged finder in a particular orientation; and hypothesis 3, which may predict that the symbol is a 24x24 data matrix lacking a finder and clocking pattern as well as some number of adjacent rows and columns. For hypothesis 1 from this example, the absence of a fixed pattern means that the orientation is unknown, so four separate orientations of the data region must be tested. For hypothesis 3 from this example, the missing rows / columns may be the two rows / columns located closest to the finder, the two rows / columns located closest to the clocking pattern, or one row / column located closest to the finder and one row / column located closest to the clocking pattern. Thus, the maximum number of combinations increases with the range of hypotheses, including multiple symbols, multiple orientations, and multiple damage levels. In certain embodiments, if the total number of combinations for a home exceeds a certain number, such as 10, 20, 30, 40, 50, 100, etc., proceeding with hypotheses may take too long to be efficiently decoded, and hypotheses may only be pursued when more information is known about the symbols (i.e., training). In certain embodiments, these hypotheses are prioritized, and the sequence of decoding attempts for these hypotheses is from highest priority (most likely) to lowest priority (least likely). In alternative embodiments, only a subset of the possible hypotheses may be attempted. In certain embodiments, the prioritization may be based on the range of fixed patterns observed, observed data domain histograms, or a combination thereof.

[0066] At process block 216, the method 200 may further include decoding the extracted binary matrix. Decoding the binary matrix may be performed using a processor or an auxiliary component, such as a binary matrix decoder, configured to execute a decoding algorithm. If the assumed module positions in the module value array are not an accurate representation of the positions or orientations of the two-dimensional matrix symbols in the module value array, decoding the binary matrix extracted from those assumed module positions will yield meaningless results. If the assumed module positions are an accurate representation of the module positions in the module value array, decoding the binary matrix determined from those assumed module positions will yield the data set as long as a sufficient portion of the data modules is included in the decoding.

[0067] The decoding step may be repeated for the extracted binary matrix or matrices based on one or more hypotheses from step 214. This sequence may be based on an optional prioritization step in 214.

[0068] In certain aspects, decoding the binary matrix may result in a data set.

[0069] In certain aspects, decoding the binary matrix can determine whether the binary matrix is ​​decodable. In certain aspects, the decoding algorithm can be a low-level decoding algorithm where the binary matrix is ​​not decoded sufficiently to provide a data set, but rather, the binary matrix is ​​decoded to a level where it is determined whether the binary matrix is ​​decodable. In certain aspects, decoding the binary matrix can be a low-level decoding algorithm where the binary matrix is ​​decoded to a level where it is determined whether the binary matrix is ​​decodable when a fixed pattern in the binary matrix was not used to locate the two-dimensional matrix symbol. Decoding the binary matrix may include locating a fixed pattern or a portion of a fixed pattern in the binary matrix and utilizing the fixed pattern to determine whether the binary matrix is ​​decodable. In certain embodiments, decoding the binary matrix may include locating a subset of the variable code data, such as the primary message of MaxiCode, QR version information, or a format information block that utilizes error detection to determine the code size and effective orientation, Aztec coding information (information about message size in the data area near the symbol and finder pattern), and utilizing the subset of the variable code data to determine whether the binary matrix is ​​decodable. In certain embodiments, decoding the binary matrix may yield information other than the encoded data set, such as the location of the symbol when the matrix is ​​decodable, or the hypothetical symbol location when the matrix is ​​not decodable. The location may be used to perform a quality assessment of the symbol, and the like.

[0070] The localization, estimation, determination, extraction and decoding steps may be repeated for several candidate regions generated in the localization step 204. These steps may be performed one candidate region at a time or for multiple candidate regions simultaneously.

[0071] The decoding step may be iterated for several binary matrices extracted in the extraction step 214. The order of the iterations may be based on a prioritization of the hypotheses.

[0072] In certain embodiments, the extracting and decoding steps can extract and decode multiple symbol types, for example, the extracting and decoding steps can extract and decode symbol types including, but not limited to, Data Matrix, QR Code, Aztec Code, MaxiCode, and combinations thereof.

[0073] In certain aspects, the extracting and decoding steps may prioritize or rank the hypotheses according to a user-defined set of criteria, and the prioritized or highly ranked hypotheses may be decoded first. For example, a user may define a preferred size for the matrix, and hypotheses having the preferred size may be prioritized or ranked higher.

[0074] In certain embodiments, estimating the range of the two-dimensional symbol can be performed after the binary matrix is ​​extracted.

[0075] In certain embodiments, fragments of a fixed pattern can be detected when estimating the range of a two-dimensional symbol.

[0076] In certain embodiments, estimating the range of a two-dimensional symbol can include observing a quiet zone. A quiet zone is known in the art as a region that contains modules with consistent values. This consistency can include variation to account for lighting variations and the like. In certain embodiments, the observed quiet zone may include variation that does not match the specifications of a particular symbol (e.g., a quiet zone with more or less than three modules in a particular symbol). In certain embodiments, the observed quiet zone may include variation that is accidental (e.g., a symbol is printed on the edge of a label). In certain embodiments, the observed quiet zone may include variation that is due to a portion of a symbol, such as a finder pattern or a data area. This may include variations due to damage or poor lighting that eliminates the need for additional lighting.

[0077] In certain aspects, the module may be damaged and the decoding 216 of the binary matrix may include using erasures for error correction, such as Reed-Solomon error correction, to improve error correction capabilities.

[0078] The systems and methods can utilize knowledge of the observed symbols through training. "Training" is a method of configuring a reading algorithm with prior knowledge of the attributes of the observed symbols to improve robustness and / or execution speed. Attributes may include, but are not limited to, symbol type, polarity, error correction type, number of rows / columns, module size in pixels, mirror reflection, symbol orientation, etc.

[0079] Algorithms can be constructed to take advantage of the trained attributes. For example, knowing the number of rows and columns in a matrix can improve decoding yield in direct part mark (DPM) where the number of rows and columns can be difficult to determine (e.g., by using a clocking pattern in the data matrix). Avoiding errors in determining the number of rows and columns improves decoding robustness and often reduces the overall run time until successful decoding.

[0080] Similarly, other a priori attributes may affect other elements of the decoding algorithm. For example, the prediction module size may affect at which scale to search for symbols, and may determine the image filtering kernel size used to improve image quality (reducing size, improving contrast, removing texture or noise, etc.).

[0081] If the processor or algorithm has knowledge of the symbols, such as the size and shape they are expected to take, then localization and estimation can be accomplished more efficiently. For example, if the system or method is trained to search for an 8×8 grid, then localization can look more specifically for areas that can cover an 8×8 module or less. Similarly, estimation can only sample spaces that are not significantly larger than an 8×8 module.

[0082] In certain embodiments, estimating the range of the two-dimensional symbol can include using a priori information, such as that determined by training or user input.

[0083] The method may further include correcting errors in the binary matrix using an error correction routine. The error correction routine may be implemented by methods known to those skilled in the art. For example, the error correction routine may include a block code, such as a linear block code, including Reed-Solomon, conventional codes, etc.

[0084] The method may further include illuminating the two-dimensional matrix symbol or a location proximate the two-dimensional matrix symbol. The illuminating may be performed by an illuminator. The illuminating may result in an illumination feature in the image pixel array. Once illuminated, the locating step may be based at least in part on the illumination or the illumination feature in the image pixel array.

[0085] In certain embodiments, the method includes locating one or more lighting features in one image pixel array and separately detecting the lighting features by, for example, determining the position of the one or more lighting features relative to landmarks that can be identified in both image pixel arrays. and estimating a location of the one or more illumination features within the image pixel array of the image captured by the image capture device, which allows the illumination to be turned off during an exposure in which the image to be decoded is exposed. Alternatively, the location of the one or more illumination features may be known prior to capturing the image, for example, by determining where the illumination features will reproducibly appear within the image pixel array (e.g., the center of the image, a location measured when stored in memory at manufacturing, etc.).

[0086] In certain aspects, the method may be performed by a single command or multiple commands to the processor, which may be provided by a user or may be automatically triggered to be provided by the processor or ancillary components.

[0087] In certain embodiments, the fixation pattern may be incomplete because a portion of the finder pattern is along the right edge of the paper and cannot be distinguished from the dark background. In certain embodiments, the fixation pattern may be incomplete because a portion of the finder pattern is simply missing, particularly in the top left portion of the symbol.

[0088] Although the present invention has been described above with reference to specific embodiments and examples, those skilled in the art will appreciate that the invention is not necessarily so limited, and that numerous other embodiments, examples, uses, modifications, and extensions therefrom are intended to be encompassed by the claims appended hereto. The entire disclosures of each patent document and publication described herein are incorporated by reference, as if each such patent document and publication were individually incorporated by reference herein. [Explanation of symbols]

[0089] 30 Machine Vision System 32 images 34 Object 36 Machine-readable symbols 38 Conveyor 40 field of view 42 Imaging Devices 44 Image Acquisition Software 46 processors 48 Visual Sensor 50 Computing Devices 52 Memory media 54 Communication Line 56, 70 2D matrix symbol 58 Data Area 60 Symbol Module 62 Finder Pattern 64 Quiet Zone 66 Timing Pattern 72 Alignment Pattern 74 Symbol Location Algorithm 78 Symbols 80 Image Pixel Array 82 Version Information Area 84 Format information area 86 Directional Pattern 88 Mode Message 90 Data Layer 100 module measurement algorithms 102 Matrix Decoding Algorithm 104 Trigger Input

Claims

1. 1. A system for reading a two-dimensional matrix symbology including data modules each having a module value and a module position and encoding a data set, comprising: an imaging device configured to capture an image including at least a portion of the two-dimensional matrix symbol; a processor operatively coupled to the imaging device and executing a data reading algorithm, the data reading algorithm receiving the image, prioritizing one or more candidate regions based on an edge density of the one or more candidate regions, and extracting a binary matrix from the one or more candidate regions; a binary matrix decoder operatively coupled to the processor and configured to execute a decoding algorithm to decode the binary matrix; A system comprising:

2. 2. The system of claim 1, wherein the data reading algorithm uses an error correction routine to correct errors in the binary matrix.

3. The system of claim 1 including an illuminator that illuminates a target in the image with one or more illumination features.

4. The system of claim 3 , wherein the data reading algorithm uses the illumination features to locate at least a portion of the data module within the image.

5. 2. The system of claim 1, wherein locating at least a portion of the data module comprises identifying one or more salient features of the data module, the salient features being selected from the group consisting of shape, presence or absence of a saddle, presence or absence of a corner, presence or absence of a point, gradient, histogram, wavelet, and combinations thereof.

6. The system of claim 1 , wherein the binary matrix decoder is configured to decode multiple symbol types.

7. 7. The system of claim 6, wherein the plurality of symbol types are selected from the group consisting of Data Matrix, QR Code, Aztec Code, MaxiCode, and combinations thereof.

8. The system of claim 1 , wherein the data reading algorithm comprises attributes of the two-dimensional matrix symbol.

9. The system of claim 1 , wherein the data reading algorithm is executable by a single command to the processor.

10. 1. A method of reading a two-dimensional matrix symbol containing data modules each having a module value and a module position and encoding a data set, comprising: receiving, by a processor, an image including at least a portion of the two-dimensional matrix symbol; prioritizing the one or more candidate regions based on an edge density of the one or more candidate regions; extracting a binary matrix from the modular values ​​using the processor; decoding the binary matrix; The method includes:

11. The method of claim 10 further comprising using the processor to correct errors in the binary matrix using an error correction routine.

12. The method of claim 10, further comprising illuminating the two-dimensional matrix symbol or a location proximate to the two-dimensional matrix symbol.

13. 11. The method of claim 10, wherein locating at least a portion of the data module comprises identifying one or more salient features of the data module, the salient features being selected from the group consisting of shape, presence or absence of a saddle, presence or absence of a corner, presence or absence of a point, gradient, histogram, wavelet, and combinations thereof.

14. 11. The method of claim 10, including attempting to decode multiple symbol types.

15. 15. The method of claim 14, wherein the plurality of symbol types are selected from the group consisting of Data Matrix, QR Code, Aztec Code, MaxiCode, and combinations thereof.

16. The method of claim 10 , further comprising training the processor to include one or more attributes of the two-dimensional matrix symbol prior to receiving the image.

17. The method of claim 10 , capable of being executed by a single command to the processor.

18. 1. A system for determining whether a two-dimensional matrix symbol containing data modules each having a module value and a module position is decodable, comprising: an imaging device configured to capture an image including the two-dimensional matrix symbol; a processor operatively coupled to the imaging device and executing a data reading algorithm, the data reading algorithm receiving the image, prioritizing one or more candidate regions based on an edge density of the one or more candidate regions, and extracting a binary matrix from the one or more candidate regions; The system wherein the data reading algorithm includes frequency domain analysis.

19. The system of claim 18 , wherein the data reading algorithm uses frequency domain analysis to fit a model of the module position from the image.

20. 20. The system of claim 18, further comprising a binary matrix decoder operably coupled to the processor, the binary matrix decoder configured to execute a decoding algorithm to decode the binary matrix.

Citation Information

Patent Citations

  • Image recognizing device

    JP1995234915A

  • Code-kind discrimination method and code border detecting method

    JP2005173646A

  • A system and method for processing image data related to the focus of attention within a whole image.

    JP2013531838A

  • Method for locating bar codes and symbols in an image

    US7181066B1