Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MACHINE-READABLE PERIODIC PATTERN IDENTIFICATION
Document Type and Number:
WIPO Patent Application WO/2019/043553
Kind Code:
A1
Abstract:
A reader device acquires an image of a bar code formed on a label of an object. Additionally, one or more devices generate, based on the image of the bar code, a first set of data points. The one or more devices generate a second set of data points by applying a transform to the first set of data points. In addition, the one or more devices determine a pattern identifier of the bar code based on a spatial frequency corresponding to a data point in the second set of data points.

Inventors:
OIEN-ROCHAT MILO G (US)
TAGHVAEEYAN SABER (US)
SOMASUNDARAM GURUPRASAD (US)
TRAN THANH Q (US)
Application Number:
PCT/IB2018/056493
Publication Date:
March 07, 2019
Filing Date:
August 27, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
3M INNOVATIVE PROPERTIES CO (US)
International Classes:
G06K19/06; G06K7/14; G07D7/0043
Domestic Patent References:
WO2006063817A12006-06-22
WO2015091321A12015-06-25
WO2015108807A12015-07-23
Foreign References:
EP2023266A12009-02-11
US20150090797A12015-04-02
US7203361B12007-04-10
DE69233674T22007-10-18
US20150363625A12015-12-17
Attorney, Agent or Firm:
SILVERMAN, Eric E. et al. (US)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1. A method performed by one or more devices, the method comprising:

acquiring an image of a bar code, wherein the bar code is formed on a substrate affixed to an object or is formed directly on the object;

generating, based on the image of the bar code, a first set of data points;

generating, a second set of data points by applying a transform to the first set of data points;

determining a pattern identifier of the bar code based on a spatial frequency corresponding to a data point in the second set of data points; and

determining, based on the pattern identifier of the bar code, a type of the object.

2. The method of claim 1, wherein the data point in the second set of data points is a maximum data point in the second set of data points, the maximum data point in the second set of data points having a greatest magnitude among data points in the second set of data points.

3. The method of claim 1,

wherein the image of the bar code comprises a 1 -dimensional array of pixel values; wherein generating the first set of data points comprises:

identifying a maximum pixel value, the maximum pixel value having a greatest value in the 1 -dimensional array of pixel values;

determining a set of percentage values, each respective percentage value of the set of percentage values being equal to a respective pixel value in the 1 -dimensional array of pixel values divided by the maximum pixel value;

determining an average value equal to an average of percentage values in the set of percentage values; and

determining the first set of data points such that each respective data point in the first set of data points is equal to a respective percentage value in the set of percentage values minus the average value.

4. The method of claim 1,

wherein the image of the bar code comprises a 1 -dimensional array of pixel values, wherein generating the first set of data points comprises:

dividing the 1 -dimensional array of pixel values into a plurality of sections, generating a plurality of modified sections, wherein generating the plurality of modified sections comprises, for each respective section of the plurality of sections, modifying the respective section by dividing each pixel value in the respective section by a maximum pixel value in the respective section, thereby converting each pixel value in the respective section into a percentage value between 0 and 1 ;

determining an average percentage value that is equal to an average of the percentage values in the modified sections; and

subtracting the average percentage value from the percentage values in the modified sections, thereby generating the first set of data points.

5. The method of claim 4, further comprising:

determining a second maximum data point, the second maximum data point having a second greatest magnitude in the second set of data points; and

determining a confidence score equal to a magnitude of the overall peak magnitude divided by a magnitude of the second maximum data point, minus 1.

6. The method of claim 1, wherein the bar code is a first bar code,

acquiring the image of the first bar code comprises acquiring the image of the first bar code while illuminating the first bar code with light having a first wavelength, and

the method further comprising:

acquiring an image of a second bar code while illuminating the second bar code with light having a second wavelength, the first bar code overlapping the second bar code on a substrate, the first bar code printed with a first ink that absorbs light having the first wavelength, the second bar code printed with a second ink that absorbs light having the second wavelength;

generating, based on the image of the second bar code, a third set of data points;

generating a fourth set of data points by applying the transform to the third set of data points;

identifying a maximum data point in the fourth set of data points, the maximum data point in the fourth set of data points having a greatest magnitude among data points in the fourth set of data points; and

determining a pattern identifier of the second bar code based on a spatial frequency corresponding to the maximum data point in the fourth set of data points.

7. The method of claim 6, further comprising determining data based on a combination of the pattern identifier of the first bar code and the pattern identifier of the second bar code.

8. The method of claim 6, wherein the first ink absorbs infrared light.

9. The method of claim 1, further comprising: determining, based on the pattern identifier of the bar code, whether the object is made by a manufacturer.

10. The method of claim 9, wherein determining whether the object is made by the manufacturer comprises:

initializing a manufacturer confidence score;

determining, based on the image of the bar code, a frequency confidence score for the bar code;

determining a device score based on the pattern identifier for the bar code and the frequency confidence score for the bar code, wherein the manufacturer is associated with a particular value of the pattern identifier for the bar code;

updating the manufacturer confidence score based on the device score;

determining, based on a comparison of the updated manufacturer confidence score and a threshold, whether to perform a notification action; and

responsive to making a determination to perform the notification action, performing the notification action, wherein the notification action comprises outputting an indication that the object is not manufactured by the manufacturer.

11. The method of claim 1, wherein a luminometer comprises the reader device and a sample tube comprises the object, the method further comprising:

adjusting, based on the type of the sample tube, a setting of the luminometer; and performing, using the adjusted setting, a test for presence of a substance based on light emitted from within the sample tube.

12. The method of claim 1, wherein the object is a cylindrical object and the substrate is a label wrapped around an external surface of the cylindrical object in a circumferential direction.

13. The method of claim 1, wherein the transform is a discrete Fourier transform or a wavelet transform.

14. A reader device comprising:

an image sensor; and

one or more processing circuits configured to: acquire, based on signals from the image sensor, an image of a bar code, wherein the bar code is formed on a substrate affixed to an object or formed directly on the object;

generate, based on the image of the bar code, a first set of data points;

generate a second set of data points by applying a transform to the first set of data points;

determine a pattern identifier of the bar code based on a spatial frequency corresponding to a data point in the second set of data points; and

determine, based on the pattern identifier of the bar code, a type of the object.

15. The reader device of claim 14, wherein the data point in the second set of data points is a maximum data point in the second set of data points, the maximum data point in the second set of data points having a greatest magnitude among data points in the second set of data points.

16. The reader device of claim 14,

wherein the image of the bar code comprises a 1 -dimensional array of pixel values; wherein the one or more processing circuits are configured such that, as part of generating the first set of data points, the one or more processing circuits:

identify a maximum pixel value, the maximum pixel value having a greatest value in the 1 -dimensional array of pixel values;

determine a set of percentage values, each respective percentage value of the set of percentage values being equal to a respective pixel value in the 1 -dimensional array of pixel values divided by the maximum pixel value;

determine an average value equal to an average of percentage values in the set of percentage values; and

determine the first set of data points such that each respective data point in the first set of data points is equal to a respective percentage value in the set of percentage values minus the average value.

17. The reader device of claim 14,

wherein the image of the bar code comprises a 1 -dimensional array of pixel values, the one or more processing circuits are configured such that, as part of generating the first set of data point, the one or more processing circuits:

divide the 1 -dimensional array of pixel values into a plurality of sections, generate a plurality of modified sections, wherein one or more processors are configured such that, as part of generating the plurality of modified sections, the one or more processors, for each respective section of the plurality of sections, modify the respective section by dividing each pixel value in the respective section by a maximum pixel value in the respective section, thereby converting each pixel value in the respective section into a percentage value between 0 and 1 ;

determine an average percentage value that is equal to an average of the percentage values in the modified sections; and

subtract the average percentage value from the percentage values in the modified sections, thereby generating the first set of data points.

18. The reader device of claim 14, wherein the one or more processing circuits are configured to:

determine a second maximum data point, the second maximum data point having a second greatest magnitude in the second set of data points; and

determine a confidence score equal to a magnitude of the overall peak magnitude divided by a magnitude of the second maximum data point, minus 1.

19. The reader device of claim 14,

wherein the bar code is a first bar code,

the reader device further comprises a light source configured to illuminate, during acquisition of the first image, the bar code with light having a first wavelength, and

the one or more processing circuits are further configured to:

acquire an image of a second bar code while the light source illuminates the second bar code with light having a second wavelength, the first bar code overlapping the second bar code on a substrate, the first bar code printed with a first ink that absorbs light having the first wavelength, the second bar code printed with a second ink that absorbs light having the second wavelength;

generate, based on the image of the second bar code, a third set of data points; generate a fourth set of data points by applying the transform to the third set of data points;

identify a maximum data point in the fourth set of data points, the maximum data point in the fourth set of data points having a greatest magnitude among data points in the fourth set of data points; and

determine a pattern identifier of the second bar code based on a spatial frequency corresponding to the maximum data point in the fourth set of data points.

20. The reader device of claim 19, wherein the one or more processing circuits are configured to determine data based on a combination of the pattern identifier of the first bar code and the pattern identifier of the second bar code.

21. The reader device of claim 14, wherein the one or more processing circuits are further configured to determine, based on the pattern identifier of the bar code, whether the object is made by a manufacturer. 22. The reader device of claim 21, wherein the one or more processing circuits are configured such that, as part of determining whether the object is made by the manufacturer, the one or more processing circuits:

initialize a manufacturer confidence score;

determine, based on the image of the bar code, a frequency confidence score for the bar code;

determine a device score based on the pattern identifier for the bar code and the frequency confidence score for the bar code, wherein the manufacturer is associated with a particular value of the pattern identifier for the bar code;

update the manufacturer confidence score based on the device score;

determine, based on a comparison of the updated manufacturer confidence score and a threshold, whether to perform a notification action; and

responsive to making a determination to perform the notification action, perform the notification action, wherein the notification action comprises outputting an indication that the object is not manufactured by the manufacturer.

23. The reader device of claim 14, wherein the object comprises a sample tube, the one or more processing circuits further configured to;

adjust, based on the type of the sample tube, a setting; and

perform using the adjusted setting, a test for presence of a substance based on light emitted from within the sample tube.

24. The reader device of claim 14, wherein the object is a cylindrical object and the substrate is a label wrapped around an external surface of the cylindrical object in a circumferential direction.

25. The reader device of claim 14, wherein the transform is a discrete Fourier transform or a wavelet transform.

26. A method of manufacturing an object, the method comprising:

forming a bar code on an object;

wherein the bar code is formatted such that a pattern identifier is determinable by one or more devices by:

acquiring an image of the bar code;

generating, based on the image of the bar code, a first set of data points;

generating a second set of data points by applying a transform to the first set of data points; and

determining the pattern identifier based on a spatial frequency corresponding to a data point in the second set of data points.

27. The method of claim 26, wherein the data point in the second set of data points is a maximum data point in the second set of data points, the maximum data point in the second set of data points having a greatest magnitude among data points in the second set of data points.

28. The method of claim 26,

wherein the image of the bar code comprises a 1 -dimensional array of pixel values; wherein generating the first set of data points comprises:

identifying a maximum pixel value, the maximum pixel value having a greatest value in the 1 -dimensional array of pixel values;

determining a set of percentage values, each respective percentage value of the set of percentage values being equal to a respective pixel value in the 1 -dimensional array of pixel values divided by the maximum pixel value;

determining an average value equal to an average of percentage values in the set of percentage values; and

determining the first set of data points such that each respective data point in the first set of data points is equal to a respective percentage value in the set of percentage values minus the average.

29. The method of claim 26, wherein the bar code is a first bar code, the method further comprising: printing a second bar code on the label such that the second bar code overlaps the first bar code, the first bar code printed with a first ink that absorbs light having the first wavelength, the second bar code printed with a second ink that absorbs light having the second wavelength, the second bar code formatted such that a pattern identifier of the second bar code is determinable by:

acquiring an image of a second bar code while illuminating the second bar code with light having a second wavelength;

generating, based on the image of the second bar code, a third set of data points;

generating a fourth set of data points by applying the transform to the third set of data points;

identifying a maximum data point in the fourth set of data points, the maximum data point in the fourth set of data points having a greatest magnitude among data points in the fourth set of data points; and

determining a pattern identifier of the second bar code based on a spatial frequency corresponding to the maximum data point in the fourth set of data points.

30. The method of claim 26, wherein:

the object is a sample tube,

the method further comprises depositing an enzyme into a cylindrical tube member of the sample tube, the enzyme being a catalyst for a photochemical reaction when a substance is present, the photochemical reaction generating a light, and

affixing the label to the object comprises wrapping the label around the cylindrical tube member.

31. The method of claim 26, where forming the bar code on the object comprises:

printing a bar code on a label; and

affixing the label to an object.

32. The method of claim 26, wherein the transform is a discrete Fourier transform or a wavelet transform.

33. An obj ect comprising :

a surface;

a label affixed to the surface, the label having a bar code formed thereon, wherein: the bar code is formatted such that a pattern identifier is determinable by one or more devices by:

acquiring an image of the bar code;

generating, based on the image of the bar code, a first set of data points;

generating a second set of data points by applying a transform to the first set of data points; and

determining the pattern identifier based on a spatial frequency corresponding to a data point in the second set of data points.

34. The object of claim 33, wherein the data point in the second set of data points is a maximum data point in the second set of data points, the maximum data point in the second set of data points having a greatest magnitude among data points in the second set of data points.

35. The obj ect of claim 33 ,

wherein the image of the bar code comprises a 1 -dimensional array of pixel values; wherein generating the first set of data points comprises:

identifying a maximum pixel value, the maximum pixel value having a greatest value in the 1 -dimensional array of pixel values;

determining a set of percentage values, each respective percentage value of the set of percentage values being equal to a respective pixel value in the 1 -dimensional array of pixel values divided by the maximum pixel value;

determining an average value equal to an average of percentage values in the set of percentage values; and

determining the first set of data points such that each respective data point in the first set of data points is equal to a respective percentage value in the set of percentage values minus the average.

36. The object of claim 33, wherein the bar code is a first bar code, the label has a second bar code printed thereon, the first bar code overlapping the second bar code, the first bar code printed with a first ink that absorbs light having the first wavelength, the second bar code printed with a second ink that absorbs light having the second wavelength, and

the second bar code formatted such that a pattern identifier of the second bar code is determinable by the one or more devices by:

acquiring an image of a second bar code while illuminating the second bar code with light having a second wavelength; generating, based on the image of the second bar code, a third set of data points;

generating a fourth set of data points by applying the transform to the third set of data points;

identifying a maximum data point in the fourth set of data points, the maximum data point in the fourth set of data points having a greatest magnitude among data points in the fourth set of data points; and

determining a pattern identifier of the second bar code based on a spatial frequency corresponding to the maximum data point in the fourth set of data points.

The object of claim 36, wherein the first ink absorbs infrared light

38. The object of claim 33, wherein:

the object comprises a cylindrical tube member having a closed end and the surface, an enzyme is disposed within the cylindrical tube member, the enzyme being a catalyst for a photochemical reaction when a substance is present, the photochemical reaction generating a light detectable by a luminometer that comprises the reader device, and

the pattern identifier is indicative of: a type of the object associated with a particular set of settings of the luminometer, or a manufacturer whose object are authorized for use in the reader device.

39. The object of claim 33, wherein the transform is a discrete Fourier transform or a wavelet transform.

Description:
MACHINE-READABLE PERIODIC PATTERN IDENTIFICATION

CROSS REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of U.S. Provisional Patent Application No.

62/552,646, filed August 31, 2017, the disclosure of which is incorporated by reference in its entirety herein.

TECHNICAL FIELD

[0002] This disclosure relates to devices for reading machine-readable patterns.

BACKGROUND

[0003] Bar codes and other machine -readable patterns are used throughout the world for labeling objects. For example, bar codes are used to identify items in stores and warehouses. However, there may be a number of challenges when reading existing forms of bar codes.

SUMMARY

[0004] This disclosure describes techniques related to reading machine-readable patterns, such as bar codes. As described herein, a label is attached to an object. The label may include a bar code pattern for automated identification of individual and/or types of objects. Various examples are described in which a bar code reading device inspects and generates, from a bar code affixed to the object, a single dimensional periodic pattern indicative of a spatial frequency of alternating bars and spaces. Based on the spatial frequency conveyed by the periodic pattern, information associated with the object, such as an identity of the object, type of the object, manufacturer of the object, or other information, may be determined. In this way, the techniques may provide certain technical improvements, such as increased reliability of bar code reading in challenging environments.

[0005] In one aspect, this disclosure describes a method performed by one or more devices, the method comprising: acquiring an image of a bar code, wherein the bar code is formed on a substrate affixed to an object or is formed directly on the object; generating, based on the image of the bar code, a first set of data points; generating a second set of data points by applying a transform to the first set of data points; determining a pattern identifier of the bar code based on a spatial frequency corresponding to a data point in the second set of data points; and determining, based on the pattern identifier of the bar code, a type of the object.

[0006] In another aspect, this disclosure describes a reader device comprising: an image sensor; and one or more processing circuits configured to: acquire, based on signals from the image sensor, an image of a bar code, wherein the bar code is formed on a substrate affixed to an object or is formed directly on the object; generate, based on the image of the bar code, a first set of data points; generate a second set of data points by applying a transform to the first set of data points; determine a pattern identifier of the bar code based on a spatial frequency corresponding to a data point in the second set of data points; and determine, based on the pattern identifier of the bar code, a type of the object.

[0007] In another aspect, this disclosure describes a method of manufacturing an object, the method comprising: forming a bar code on an object, wherein the bar code is formatted such that a pattern identifier is determinable by one or more devices by: acquiring an image of the bar code; generating, based on the image of the bar code, a first set of data points; generating a second set of data points by applying a transform to the first set of data points; and determining the pattern identifier based on a spatial frequency corresponding to a data point in the second set of data points.

[0008] In another aspect, this disclosure describes an object comprising: a surface; a label affixed to the surface, the label having a bar code formed thereon, wherein: the bar code is formatted such that a pattern identifier is determinable by one or more devices by: acquiring an image of the bar code; generating, based on the image of the bar code, a first set of data points; generating a second set of data points by applying a transform to the first set of data points; and determining the pattern identifier based on a spatial frequency corresponding to a data point in the second set of data points.

[0009] The details of one or more aspects of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the techniques described in this disclosure will be apparent from the description, drawings, and claims.

BRIEF DESCRIPTION OF DRAWINGS

[0010] FIG. 1 is a block diagram illustrating an example reader device, object, and computing system, in accordance with one or more aspects of this disclosure.

[0011] FIG. 2 is a block diagram illustrating example components of a reader device, in accordance with one or more aspects of this disclosure.

[0012] FIG. 3 is a flowchart illustrating an example operation of a reader device, in accordance with one or more aspects of this disclosure.

[0013] FIG. 4 is a flowchart illustrating an example operation of a reader device, in accordance with one or more aspects of this disclosure.

[0014] FIG. 5 illustrates an example square wave in a spatial domain and a spatial frequency domain, in accordance with one or more aspects of this disclosure.

[0015] FIG. 6 illustrates an example sine wave in a spatial domain and a spatial frequency domain, in accordance with one or more aspects of this disclosure. [0016] FIG. 7 illustrates an example graph generated from a bar code pattern with a spatial frequency of 16, in accordance with one or more aspects of this disclosure.

[0017] FIG. 8 illustrates an example graph generated from a bar code pattern with a spatial frequency of 16 read on a seam, in accordance with one or more aspects of this disclosure.

[0018] FIG. 9 is a flowchart illustrating an example operation for determining whether a user is using sample tubes from a manufacturer, in accordance with one or more aspects of this disclosure.

[0019] FIG. 10 is a flowchart illustrating an example operation for manufacturing an object, in accordance with one or more aspects of this disclosure.

[0020] FIG. 11 is a flowchart illustrating an example operation of a reader device, in accordance with one or more aspects of this disclosure.

[0021] FIG. 12 is a block diagram illustrating an example reader device and object, in accordance with one or more aspects of this disclosure.

[0022] FIG. 13 is a block diagram illustrating example components of a reader device, in accordance with one or more aspects of this disclosure.

[0023] FIG. 14 is a flowchart illustrating an example operation in accordance with one or more aspects of this disclosure.

DETAILED DESCRIPTION

[0024] In this disclosure, ordinal terms such as "first," "second," "third," and so on, are not necessarily indicators of positions within an order, but rather may simply be used to distinguish different instances of the same thing.

[0025] In general, this disclosure describes techniques related to reading bar codes. As described herein, a label is attached to an object, where the label includes a bar code pattern for automated identification of the individual object and/or a type of the object. A reader device may visually inspect and interpret the bar code pattern to extract information about the object. For instance, the reader device may be able to extract information regarding the manufacturer of the object, contents of the object, or a type of the object.

[0026] There are several challenges related to the use of bar codes. For example, reading bar codes that are affixed to or printed on a surface that is not flat, such as on an object that is cylindrically shaped, can be difficult. Prior art bar codes on a label that is wrapped all the way around a cylindrical object can be problematic because there can be a gap or overlap between the ends of the label, or a seam where the two ends of the label meet. This seam is not necessarily perfectly aligned. Also, if a cylindrically shaped object has a small radius, the portion of the bar code exposed to the bar code reader may be insufficient for the bar code reader to obtain all of the information that is encoded in the bar code. Yet another problem that can occur in the prior art is the loss of structural integrity of the bar code, that is, when a small portion the bar code rips, tears, stains, etc. the entire bar code may become unreadable.

[0027] Techniques of this disclosure may address these and other challenges. As described herein, one example of a bar code printed or otherwise formed on a label for an object, or directly on the object itself, may comprise a series of evenly spaced bars of even thickness, i.e., repeating cycles (pairs) of a black bar and a white space of the same width. A reader device inspects and generates, from the bar code affixed to or printed on the object, a signal representing a single dimensional periodic pattern indicative of a spatial frequency of the alternating black bars and white spaces. In some examples, based on the spatial frequency conveyed by the signal, the reader device may determine one or more pieces of information associated with the object to which the label is affixed, such as an identity of the object, content of the object, a type of the object, a manufacturer of the object, or other information. The techniques may provide certain technical improvements, such as increased reliability of bar code reading and object identification or classification in challenging environments, such as heat, cold, humidity, or dryness that may be encountered, for example, in storage or in transport, or in conditions where the bar code is exposed to physical damage, for example by abrasion upon bumping or rubbing against other objects or by exposure to chemicals, and the like.

[0028] In one example implementation, a reader device captures a 1 -dimensional image of the bar code. In this example, after normalizing the pixel values of the 1 -dimensional image, the reader device then applies a transform, such as a discrete Fourier transform or wavelet transform, to the normalized pixel values of the 1 -dimensional image to determine a set of one or more spatial frequency data points. The reader device may then identify a spatial frequency of a spatial frequency data point having a greatest magnitude. Thus, a bar code pattern's spatial frequency may be a spatial frequency with a largest magnitude (peak) as indicated by the transform of image data of the bar code pattern. The reader device may use the spatial frequency of the identified spatial frequency data point as a pattern identifier for the bar code. The pattern identifier may subsequently be used for various purposes, such as looking up predefined information corresponding to the pattern identifier. For instance, different types of objects may be mapped to different pattern identifiers. The use of this type of bar code may improve the reliability of devices, such as spectrophotometers or spectrometers, that read bar codes of this type.

[0029] FIG. 1 is a block diagram illustrating an example reader device 100, object 102, and computing system 104, in accordance with one or more aspects of this disclosure. In the example of FIG. 1, reader device 100 is a handheld or desktop device. In some examples, a reader device 100 comprises a spectrophotometer or spectrometer and object 102 has a cylindrical shape.

[0030] In other examples, reader device 100 may comprise various other types of devices, such as handheld or fixed-position bar code readers. Object 102 may comprise a wide variety of objects, such as boxes, luggage, tubes, appliances, devices, and so on. However, as described herein, techniques of this disclosure may have particular advantages when object 102 comprises a cylindrical member. Cylindrically shaped objects (102) include, but are not limited to, cables, pipes (such as water pipes, sewage pipes, oil and gas pipes, refrigeration or coolant pipes, industrial waste pipes, and pipes that are conduits for cables (such as fiber optic cables)), hoses, flexible tubing (such as plastic tubing for transporting liquids or gases), test tubes, sample vials, mail tubes; and cylindrical shafts that act as connectors between components in an object or provide support to an object. In some examples, the reader device comprises a spectrophotometer and the object is a sample container. In some examples, the sample container is a cylindrical container with a closed end. The closed end on the container can be rounded or tapered. Exemplary sample containers include test tubes, mini -test tubes, micro-test tubes, centrifuge tubes, microcentrifuge tubes, culture tubes, NMR tubes, and sample vials (for example a conical sample vials). Specific examples of a sample containers are EPPENDORF centrifuge and microcentrifuge tubes. In some examples, the open end of the container can be closed with a cap or a plug. The cap can be for example a screw cap, a snap-cap, a crimped seal, a cork, or a plastic or rubber septum. Furthermore, in some examples, the cap to the sample container further includes a swab attached to the cap through a post. Examples of sample containers comprising a cap with an attached swab include CLEAN-TRACE Swab devices manufactured by the 3M Company, St. Paul, MN; ACCUPOINT Sampler devices manufactured by Neogen, Lansing, MI; POCKETSWAB ATP Swab devices manufactured by Charm Sciences, Lawrence, MA.

[0031] In some examples where reader device 100 is a spectrophotometer, the

spectrophotometer detects light from the ultraviolet, visible, infrared spectrum, or microwave spectrum. In some examples, the spectrophotometer is a fluorescence spectrometer. In some examples, the spectrophotometer is a luminometer.

[0032] The sample container can contain a clinical sample (for example a throat culture sample, blood sample, or urine sample), environmental sample (for example a water sample or a sample obtained from swabbing a surface), chemical sample, or food sample. In some examples, reader device 100 comprises a chemical reactor (such as a microwave reactor) and the sample container is a chemical reaction tube. Furthermore, in some examples, reader device 100 comprises an autosampler that picks and places an object (such as a test tube or sample vial). [0033] In the example of FIG. 1, reader device 100 comprises a display screen 106 for displaying information to a user. A housing 108 of reader device 100 encloses internal components of reader device 100. The internal components of reader device 100 may include a bar reader device, a light detector, and one or more processing circuits, such as a programmable processor coupled to memory or other computer-readable storage device for storing data and executable instructions.

[0034] Computing system 104 may comprise one or more computing devices, such as special- purpose industrial or commercial devices (e.g., point of sale devices), personal computers, mobile devices, server devices, and so on.

[0035] A label 110 is attached or otherwise affixed to a surface 111 of object 102. In some examples, label 110 has an adhesive backing that adheres to an outer surface of object 102. In the example of FIG. 1, a bar code 112 is printed on label 110. In some examples where object 110 is a cylindrical object, since label 110 may initially be a flat rectangle, there is a seam 114 at the ends of label 110 when label 110 is wrapped around object 102 in a circumferential direction (i.e., a direction around the circumference of object 102). In the example of FIG. 1, due to imperfect application of label 110, seam 114 is not perpendicular to an axis 116 of object 102. In other examples, bar code 112 is directly printed on object 102.

[0036] Because seam 114 is not perpendicular to long axis 116 of object 102, bars in bar code 112 are not perfectly aligned on either side of seam 114. Hence, should reader device 100 scan bar code 112 along line 118, reader device 100 would read bars from different sides of seam

114. If reader device 100 were dependent on spacing or thicknesses of bars in the bar code, as may be the case for many conventional reader devices, reading bars from different sides of seam 114 may result in reader device 100 interpreting lines near where line 118 intersects seam 114 as extra thick or having extra narrow or wide spacing. This may cause a conventional reader device to misinterpret the information encoded in the bar code.

[0037] Furthermore, it has been observed that labels on objects are frequently scuffed or stained prior to use. For instance, the ink of a bar code may be partially scuffed off a label prior to use. Such scuffs or stains may cause reader devices dependent on spacing or thickness of bars to misinterpret the information encoded in the bar code.

[0038] In accordance with one or more aspects of this disclosure, to overcome these and other technical challenges, bar code 112 is not dependent on different bars in bar code 112 having significantly different thicknesses or different spacing. Rather, each bar of bar code 112 may have the same thickness and may be substantially evenly spaced, i.e., spaced relatively equally such that a periodic characteristic can be detected when read along a single direction, such as along the long axis 116 of object 102. However, in accordance with one or more aspects of this disclosure, the bars of different bar codes may have different spacing and thicknesses. For example, one bar code may have one bar per every ten pixel widths and another bar code may have one bar per every sixteen pixel widths. Thus, in accordance with one or more techniques of this disclosure, information can be encoded in bar code 112 based on a spatial frequency of the bars in bar code 112. Moreover, it is understood that when bar code 112 is formed on a cylindrical object, bars and spaces of bar code 112 may be perpendicular to a long axis 116 of the cylindrical object. However, in other examples, bars and spaces of bar code 112 may be parallel to long axis 116.

[0039] In this disclosure, a "period" or "cycle" is defined as being one bar and one space of a bar code. In one example, a bar code having three or more periods in the acquired image (e.g., in a particular distance, such as 7.866mm) is used to help ensure accurate spatial frequency determination. Noise in the signal is more likely to be low frequency (<3 periods).

Furthermore, in this example, the spatial frequency of the bar code may be a multiple of the inverse of the image sensor length. In this example, a sensor may include 124 or more sensor pixels and 7.866mm is a physical length of the middle 124 sensor pixels of the sensor. In this example, the middle sensor pixels are used because the sensor may have abnormal pixels on each end that are not used.

[0040] To read bar code 112, reader device 100 may first capture a 1 -dimensional image of bar code 112. For instance, reader device 100 may comprise a 1-dimensional array of photodiodes. Each of the photodiodes converts light into an electrical signal. Bars of bar code 112 may reflect less light at particular frequencies than non-printed parts of bar code 112. Hence, photodiodes receiving light from the bars of bar code 112 may detect less light in these particular frequencies than photodiodes receiving light from non-printed parts of bar code 112.

[0041] An analog -to-digital converter (ADC) of reader device 100 may convert analog signals generated by the photodiodes to digital pixel values. Additionally, for each respective pixel value, reader device 100 may normalize the pixel values. For example, reader device 100 may divide each of the pixel values by a greatest pixel value in the image to determine a pixel percentage value, determine an average of the resulting pixel percentage values, and then subtract the average from each of the pixel percentage value to generate amplitude values. The amplitude values may be considered a first set of data points. When the amplitude values are plotted against a displacement from a position of a first digital pixel value, the resulting plot may resemble a waveform with displacement used as one axis.

[0042] Next, reader device 100 may apply a transform, such as a discrete Fourier transform, to the waveform to generate a second set of data points. The transform decomposes the waveform into a set of spatial frequencies that make up the waveform. Each respective data point of the second set of data points has a spatial frequency component and a magnitude component. [0043] Reader device 100 may then identify which data point in the second set of data points has the greatest magnitude. The data point having the greatest magnitude corresponds to the dominant spatial frequency. The spatial frequency corresponding to the identified data point is the pattern identifier for bar code 112. Reader device 100 or computing system 104 may use the pattern identifier to look up additional information, such as information regarding a type of object 102. As described elsewhere in this disclosure, reader device 100 or computing system 104 may also use the frequency identifier in a process for determining a manufacturer of object 102.

[0044] The techniques of this disclosure may increase the ability of reader device 100 to reliably read bar codes printed on labels of objects. For instance, in examples where label 110 is imperfectly applied, bar code 112 may not be perfectly rotationally symmetric. Rather, where label 110 overlaps itself, a pattern of bar code 112 may have an offset. This offset may appear as a tear (i.e., discontinuity) in an image. However, this tear may render bar code 112 unreadable if the offset is one half (or close to one half) the spatial period of bars in bar code 112. In other words, the intended spatial frequency becomes less pronounced but so long as the offset of the tear is not equal to (or close to equal) half the spatial period the spatial frequency, reader device 100 may still identify a peak spatial frequency at the intended spatial frequency.

[0045] A loss or lack of pattern data (e.g., caused by scrapes, scuffs, scratches, or wrinkles on bar code 112) is another type of distortion potentially addressed by one or more techniques of this disclosure. Due to the nature of the discrete Fourier transform, as long as most of the cycles of the bar code pattern are imaged, the spatial frequency of the bar code pattern is a peak. When reading this type of distortion, reader device 100 may improve robustness improved by discounting lower spatial frequencies. The loss of pattern data from a scrape or a scratch may present itself as lower frequency content than the desired signal in the resulting Fourier transform because it can only remove bars from the pattern.

[0046] In some examples, rather than reader device 100 performing all or some of the processing steps described in this disclosure, reader device 100 may communicate data to computing system 104 for processing. Computing system 104 may use the communicated data to perform the processing steps. For example, reader device 104 may send image data to computing system 104 and computing system 104 may process the image data to determine a pattern identifier of a bar code. In another example, reader device 104 may send a pattern identifier to computing system 104 and computing system 104 may determine an object type or other information about object 102 based on the pattern identifier.

[0047] FIG. 2 is a block diagram illustrating example components of reader device 100, in accordance with one or more aspects of this disclosure. In the example of FIG. 2, reader device

100 comprises a main board 202. Main board 202 may comprise one or more circuit boards, that each comprise one or more processing circuits (i.e., processors and memory or other computer-readable storage devices). Example types of processing circuits comprise digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry.

[0048] Reader device 100 also comprises a lens 210, an image sensor 212, a light barrier 214, a light guide 216, a light source 218, and a communication interface 200. When reader device 100 reads a bar code, light source 218 emits light. In some examples, light source 218 comprises one or more Light Emitting Diodes (LEDs). Different LEDs of light source 218 may emit light of different wavelengths. For instance, one or more LEDs of light source 218 may emit light of a first wavelength (e.g., a red wavelength) and one or more LEDs of light source 218 may emit light of a second wavelength (e.g., an infrared wavelength). In one example, light source 218 comprises two banks of two LEDs, for four LEDs total. In this example, two of the LEDs emit an infrared wavelength and two of the LEDs emit a red wavelength.

[0049] Light guide 216 may direct light emitted by light source 218 to a bar code printed on a label affixed to an object. In other words, light guide 216 may guide light from light source 218 to illuminate a patterned area of the label (i.e., the bar code) that image sensor 212 can read. Lens 210 directs light reflected from the bar code to image sensor 212. In other words, lens 210 takes light rays reflected off the patterned label and guides the light rays to image sensor 212. In some examples, an imaging window of image sensor 212 is approximately 8mm long by approximately 0.5mm wide. In some examples, the bar code itself may be 21mm long. The imaging window of image sensor 212 is typically centered on the bar code.

[0050] Image sensor 212 generates electrical signals corresponding to the intensity of the light hitting image sensor 212. For instance, image sensor 212 may comprise one or more photodiodes. In some examples, the photodiodes of image sensor 212 are arranged in a 1- dimensional array aligned in a straight line with a long axis of a cavity defined by a housing of reader device 100. Each photodiode may be translated into one pixel of image data. Light barrier 214 may prevent light from passing directly from light guide 216 into lens 210. In some examples, light barrier 214 is made of a rubber material.

[0051] Image sensor 212 may measure light received by each photodiode over a period of time

(i.e., an integration period). Additionally, image sensor 212 may output a voltage relative to a total light received over the integration period for each photodiode. In some examples, image sensor 212 has a single output and 128 pixels. In some examples, main board 202 instructs image sensor 212 when to output the ADC values. To do this, image sensor 212 may have a simple state machine with a custom interface protocol. Transfer speeds from image sensor 218 may be faster in a real-time system. [0052] In some examples, the line image produced by image sensor 212 is not in focus. Thus, image sensor 212 may produce a blurry image. In general, blurring is a type of distortion caused by out of focus optics or low-quality printing. Focusing the image may require adjustment of the position of lens 210 and/or image sensor 212. In some examples, the added complexity and expense of a mechanism for adjusting the position of lens 210 and/or sensor

212 to bring the image into focus outweighs the benefit of adding such a mechanism. To the contrary, in some examples of this disclosure, the blurriness does not cause any significant problems. Rather, certain techniques of this disclosure may take advantage of the blur because the blur may make a bar code pattern's spatial frequency more pronounced. For instance, a blurred image of a bar code may have a smoother waveform than an in-focus image of the same bar code.

[0053] In one example, if a bar code is printed using a non-visible infrared absorbing ink, pattern identifiers above a particular threshold may become too blurred to be reliably recognized at 50% duty cycle. In this example, the particular threshold may have a value of 13, which may correspond to a bar width below 0.3mm. A duty cycle represents a portion of a cycle that is on relative to a portion that is off. In this system, a 50% duty cycle mean that a bar and a space are of the same width. If a bar is twice as wide as a space, the duty cycle is 66%. However, if the duty cycle of the pattern is adjusted so the bar width is greater than 0.3mm, the pattern can be reliably recognized up to a pattern ID with a value of 20. However, the contrast may be lower. That is, there may be a limit of 13 different pattern identifiers if a 50% duty cycle is maintained. However, by increasing the duty cycle (e.g., increasing the width of the bars but decreasing the width of the spaces) then an increased number of different pattern identifiers having corresponding spatial periodicity can be detected, up to 20 different pattern identifiers.

[0054] In one example, main board 202 includes an analog to digital converter (ADC) that converts the analog electrical signals from image sensor into digital pixel values. Main board 212 may process the pixel values as described elsewhere in this disclosure (e.g., with respect to FIG. 3, FIG. 4, and FIG. 11) to determine the pattern identifier of the bar code. In some examples, an ANDROIDâ„¢ package kit (APK) executing on main board 202 processes the image data.

[0055] Thus, reader device 100, as shown in the example of FIG. 2, is one example of a device comprising an image sensor (e.g., image sensor 212) and one or more processing circuits (e.g., processing circuits in tag board 200, main board 202, optics module controller (OMC) board 204). The one or more processing circuits are configured to acquire, based on signals from the image sensor, an image of a bar code. The one or more processors are further configured to generate, based on the image of the bar code, a first set of data points. Additionally, the one or more processors are configured to generate a second set of data points by applying a transform (e.g., a discrete Fourier transform) to the first set of data points. Furthermore, the one or more processors are configured to identify a data point in the second set of data points. For instance, the one or more processors may identify a maximum data point in the second set of data points. The maximum data point in the second set of data points has a greatest magnitude among data points in the second set of data points. In another example, the one or more processors may identify a data point in the second set of data points by interpolating between two or more of the data points. In addition, the one or more processors may determine a pattern identifier of the bar code based on a spatial frequency corresponding to the data point in the second set of data points.

[0056] In some examples, reader device 100 generates two line images. As indicated above, light source 218 may comprise LEDs that emit infrared light and LEDs that emit red light. To generate the first line image, the infrared LEDs illuminate a label bearing a bar code. To generate the second line image, the red light LEDs illuminate the label. Hence, in the first line image, darker areas indicate where the label absorbed infrared light. In the second line image, darker areas indicate where the label absorbed red light. Lighter areas in both the first line image and the second line image indicate where the label reflected infrared and red light, respectively.

[0057] In some examples where reader device 100 generates two line images, main board 202 may process each of the line images separately to determine separate pattern identifiers. For example, the pattern in the first line image may or may not match the pattern in the second line image. For instance, bars printed on a label with an infrared absorbing ink may be more or less closely spaced than bars on the same label with red light absorbing ink. Hence, main board 202 may determine two pattern identifiers from the same label. Various combinations of pattern identifiers from the first and second line images may correspond to different final pattern identifiers. Thus, the use of bar codes printed with different inks may increase the information density of the bar code.

[0058] In some examples where reader device 100 generates two line images, main board 202 may use the two line images together for confirmation. For instance, in one example, main board 202 determines a frequency confidence score. The frequency confidence score may indicate how close the image matches a sine wave. In this example, main board 202 determines a higher frequency confidence score if the spatial frequency with greatest magnitude is the same in both line images. As described elsewhere in this disclosure, main board 202 may also or alternatively use the two line images for manufacturer confirmation. [0059] In some examples, main board 202 determines, based on the pattern identifier of the bar code, a type of the object. For instance, main board 202 may use a predefined mapping of pattern identifiers to object types to determine the type of the object.

[0060] Communication interface 220 may enable reader device 100 to communicate with one or more other computing devices. In some examples, communication interface 200 includes wireless transmitters and receivers that enable reader device 100 to communicate wirelessly with the other computing devices. Examples of communication interface 220 may include network interface cards, Ethernet cards, optical transceivers, radio frequency transceivers, or other types of devices that are able to send and receive information. Other examples of such communication interfaces may include Bluetooth, 3G, and WiFi radios, Universal Serial Bus

(USB) interfaces, etc. Reader device 100 may use communication interface 220 to

communicate with one or more other devices, such as computing system 104 (FIG. 1). In some examples, main board 202 may send images, pattern identifiers, frequency confidence scores, or other information via communication interface 220 to a device (e.g., computing system 104) that uses the information (e.g., to determine a type of object corresponding to the bar code).

[0061] FIG. 3 is a flowchart illustrating an example operation of a reader device, in accordance with one or more aspects of this disclosure. The flowcharts of this disclosure are presented as examples. In other examples, more, fewer, or different actions may be performed, and/or actions may be performed in different orders. In some examples, reader device 100 as described in FIG. 1 and/or FIG. 2 performs the operation of FIG. 3. Although the operation of

FIG. 3 is described with respect to a reader device, the operation of FIG. 3 may be performed by one or more devices, such as the reader device, a computer, a mobile device, or another type of device.

[0062] In the example of FIG. 3, a reader device acquires an image of a bar code (300). The bar code is printed on a substrate, such as label 110 or object 102 (FIG. 1). The substrate may be wrapped around a cylindrical object, such as object 102 (FIG. 1), or the bar code may be printed directly on a cylindrical object. The image may be a 1 -dimensional line image, as described above. In addition, the reader device generates, based on the image of the bar code, a first set of data points (302). For example, the reader device may identify a maximum pixel value. The maximum pixel value has a greatest value in the 1-dimensional array of pixel values. Additionally, in this example, the reader device may determine a set of percentage values. Each respective percentage value of the set of percentage values is equal to a respective pixel value in the 1-dimensional array of pixel values divided by the maximum pixel value. Furthermore, in this example, the reader device may determine an average value equal to an average of percentage values in the set of percentage values. In this example, the reader device may determine the first set of data points such that each respective data point in the first set of data points is equal to a respective percentage value in the set of percentage values minus the average value.

[0063] Furthermore, in the example of FIG. 3, the reader device generates a second set of data points by applying a transform to the first set of data points (304). For example, the reader device may apply a discrete Fourier transform to the first set of data points. In some examples, the reader device uses a fast Fourier transform algorithm to apply the discrete Fourier transform. In some examples, the reader device applies a wavelet transform to the first set of data points to generate the second set of data points.

[0064] In addition, the reader device determines a pattern identifier of the bar code based on a spatial frequency corresponding to a data point in the second set of data points (306). For example, the data point may be a maximum data point in the second set of data points. The maximum data point in the second set of data points has a greatest magnitude among data points in the second set of data points. Thus, in some examples, the reader device may identify the maximum data point in the second set of data points. In some examples, a data point may be considered to be in the second set of data points if the data point is in a curve generated by performing a regression on the second set of data points. Thus, in such examples, the data point may be interpolated or extrapolated from the second set of data points. In some examples, the reader device determines that the pattern identifier of the bar code is equal to the spatial frequency corresponding to the data point in the second set of data points. In some examples, the reader device looks up or calculates the pattern identifier of the bar code using the spatial frequency of the data point in the second set of data points.

[0065] In some examples, the reader device may identify, based on the pattern identifier of the bar code, a type of the object (308). For example, where the reader device is a

spectrophotometer or spectrometer and the bar code is printed on a label affixed to a sample tube, the reader device may determine, based on the pattern identifier of the bar code, a type of the sample tube or the type of sample contained in the tube. Different types of sample tubes may include sample tubes for testing free adenosine triphosphate (ATP) in water samples, sample tubes for testing for total ATP, sample tubes for testing for allergens, sample tubes for testing for surface proteins, and so on. Additionally, in this example, the reader device may adjust, based on the type of the sample tube, a setting of the reader device. For example, the reader device may adjust a "Normalization" factor based on the swab type. The

"Normalization" factor may help the reader device provide consistent and accurate results. Additionally, in this example, the reader device may perform, using the adjusted setting, a test for presence of a substance based on light emitted from within the swab tube.

[0066] In accordance with some aspects of this disclosure, two or more bar codes may be printed or otherwise formed in an overlapping manner on a substrate, such as label 110 (FIG. 1). For instance, one or more additional bar codes may be printed on the same area of label 110 as bar code 112 (FIG. 1). Each of the overlapping bar codes may be printed with a different ink in a plurality of inks. Each respective ink of the plurality of inks absorbs (e.g., only absorbs) light of a particular wavelength (e.g., red, infrared, etc.). Following in the example of FIG. 3, when the reader device acquires the image of the bar code (i.e., a first bar code) in action (300), the reader device may acquire the image of the first bar code while illuminating the first bar code with light having a first wavelength. Additionally, the reader device may acquire an image of a second bar code while illuminating the second bar code with light having a second wavelength. In this example, the first bar code overlaps the second bar code on a substrate, the first bar code is printed with a first ink that absorbs light having the first wavelength, and the second bar code is printed with a second ink that absorbs light having the second wavelength. Furthermore, in this example, similar to action (302) the reader device may generate, based on the image of the second bar code, a third set of data points. Likewise, similar to action (304), the reader device may generate a fourth set of data points by applying the transform (e.g., discrete Fourier transform, wavelet transform) to the third set of data points. The reader device may identify a data point (e.g., a maximum data point) in the fourth set of data points. The data point in the fourth set of data points has a greatest magnitude among data points in the fourth set of data points. Furthermore, similar to action (306), the reader device may determine a pattern identifier of the second bar code based on a spatial frequency corresponding to the data point in the fourth set of data points. In this example, the reader device may determine data based on a combination of the pattern identifier of the first bar code and the pattern identifier of the second bar code.

[0067] Although FIG. 3 is described with respect to a reader device performing particular actions, in other examples, other devices (e.g., computing system 104 (FIG. 1)) may perform one or more of the actions of FIG. 3. For example, computing system 104 may perform any or all of actions (302) through (306).

[0068] FIG. 4 is a flowchart illustrating an example operation of a reader device, in accordance with one or more aspects of this disclosure. The operation of FIG. 4 is one example of the operation described in FIG. 3. In the example of FIG. 4, the reader device centers data points around zero and runs the modified image data through a transform, such as a discrete

Fourier transform. The output of the transform is analyzed to determine the image's pattern identifier and frequency confidence score.

[0069] In the example of FIG. 4, the reader device detects the presence of an object (400). For example, the reader device may detect the presence of object 102 when a cap is closed. In one example, labels affixed to objects may be printed with an ink that absorbs infrared light at a particular wavelength. In this example, the reader device may detect the presence of the sample tube by illuminating LEDs of light source 218 that emit infrared light at the particular wavelength. If the reader device detects absorption of the infrared light at the particular wavelength, the reader device may determine that an object is present. However, differences in temperature may cause LEDs of light source 218 to generate light at different wavelengths and/or may cause changes to the sensitivity of image sensor 212. Hence, the reader device may compensate for the temperature by adjusting which the wavelength of the infrared light the reader device expects to be absorbed by the ink of the sample tube. In other words, the temperature may be fed into an algorithm that returns a temperature compensated threshold used in object detection.

[0070] After detecting the presence of the object, the reader device acquires an image of a label of the object (402). The image may be a 1 -dimensional line image, as described above. In some examples, the image may be bowed due to uneven illumination. The operation of FIG. 4 includes steps to correct for this bow by using dividing the image into sections and processing the sections separately.

[0071] For instance, in the example of FIG. 4, the reader device may separate the image into a plurality of sections (404). In other words, the reader device may divide the 1 -dimensional array of pixel values into a plurality of sections. The sections may be equally-sized. For example, the reader device may separate the image into four equal-size sections. Additionally, the reader device may divide each section of the plurality of sections by a maximum value of the section (406). In other words, for each respective section of the plurality of sections, the reader device may identify a maximum pixel value in the respective section and divide each pixel value in the respective section by the identified maximum pixel value in the respective section. Thus, each pixel value in the respective section is replaced by a percentage value between 0 and 1.

[0072] Next, the reader device may center the values around zero. To do so, the reader device may determine an average of the percentage values (408). Additionally, for each respective percentage value, the reader device subtracts a respective percentage value from the determined average (410).

[0073] Subsequently, the reader device applies a transform (e.g., a discrete Fourier transform, a wavelet transform, etc.) to the zero-centered percentage values (412). Applying the transform to the zero-centered percentage values results in a set of data points that each specify a spatial frequency value and a magnitude. The reader device may then identify the two highest peaks among the data points generated by applying the transform (414). The highest peak is the data point specifying the greatest magnitude.

[0074] The reader device then identifies a spatial frequency corresponding to the highest peak

(416). The spatial frequency corresponding to the highest peak is specified by the data point corresponding to the highest peak. The reader device may interpret the spatial frequency of the highest peak as the pattern identifier of the bar code.

[0075] In the example of FIG. 4, the reader device also determines a frequency confidence score (418). The frequency confidence score may indicate how close the image matches a sine wave. The reader device may use the previously identified two highest peaks to determine the frequency confidence score. For example, the reader device may calculate the frequency confidence score as the highest overall peak divided by the second highest peak, minus 1. In other words, the reader device may determine a frequency confidence score equal to a magnitude of the overall peak magnitude divided by a magnitude of the second maximum data point, minus 1. The frequency confidence score is always greater than 0. Higher frequency confidence scores indicate greater confidence. In some examples, the frequency confidence score is used to determine if the image is merely noise or an actual pattern. Thus, in such examples, if the frequency confidence score is below a certain number, the object is considered not to be labeled with a barcode.

[0076] As mentioned elsewhere in this disclosure, two line images may be acquired while illuminating a label with different colored light (e.g., infrared and red). The reader device may perform the operation of FIG. 4 for each of the images.

[0077] Thus, in the example of FIG. 4, the image of the bar code comprises a 1 -dimensional array of pixel values and the reader device may divide the 1 -dimensional array of pixel values into a plurality of sections. In this example, the reader device may generate a plurality of modified sections. To generate the plurality of modified sections, the reader device may, for each respective section of the plurality of sections, modify the respective section by dividing each pixel value in the respective section by a maximum pixel value in the respective section, thereby converting each pixel value in the respective section into a percentage value between 0 and 1. Additionally, the reader device may determine an average percentage value that is equal to an average of the percentage values in the modified sections. The reader device may then subtract the average percentage value from the percentage values in the modified sections, thereby generating a first set of data points. In this example, the reader device may generate a second set of data points by applying a transform (e.g., a discrete Fourier transform, a wavelet transform, etc.) to the first set of data points. Additionally, the reader device may identify a maximum data point in the second set of data points. The maximum data point in the second set of data points has a greatest magnitude among data points in the second set of data points. The reader device may then determine a pattern identifier of the bar code based on a spatial frequency corresponding to the maximum data point in the second set of data points.

Additionally, the reader device may determine, based on the pattern identifier of the bar code, a type of the object. [0078] Although FIG. 4 is described with respect to a reader device performing particular actions, in other examples, other devices (e.g., computing system 104 (FIG. 1)) may perform one or more of the actions of FIG. 4. For example, computing system 104 may perform any or all of actions (404) through (420).

[0079] FIG. 5 illustrates an example square wave in a spatial domain and a spatial frequency domain, in accordance with one or more aspects of this disclosure. In the example of FIG. 5, graph 500 shows a waveform based on zero-centered percentage values of the type described above with respect to action 408 of FIG. 4. In the example of FIG. 5, graph 502 shows a waveform generated by applying a discrete Fourier transform to the data of graph 500. In the example of FIG. 5, a point 504 at spatial frequency 5 has the greatest magnitude (1) and may therefore be identified as a highest peak (i.e., maximum data point). Other peaks (e.g., points 506, 508) in graph 502 may result from the waveform of graph 500 not being a true sine wave.

[0080] FIG. 6 illustrates an example sine wave in a spatial domain and a spatial frequency domain, in accordance with one or more aspects of this disclosure. In the example of FIG. 6, graph 600 shows a sine wave having the same frequency as the square wave of graph 500 of

FIG. 5. In the example of FIG. 6, graph 602 shows a waveform generated by applying a discrete Fourier transform to the data of graph 600. In the example of FIG. 6, a point 604 at spatial frequency 5 has the greatest magnitude. Because graph 600 has a perfect sine wave, there are no secondary peaks like those shown in graph 502 of FIG. 5. Thus, when an image is in focus (like the image used to generate graph 500 of FIG. 5), a 1-dimensional image of the pattern contains significant harmonic content because the pattern essentially is a square wave, as shown in graph 502 of FIG. 5). When blurred, a 1-dimensional image of the pattern becomes closer to a pure sine wave. Pure sine waves contain no harmonic content. The closer the captured image is to a sine wave, the more pronounced the pattern's spatial frequency becomes relative to the harmonic content.

[0081] FIG. 7 illustrates an example graph generated from a bar code pattern with a spatial frequency of 16, in accordance with one or more aspects of this disclosure. In the example of FIG. 7, graph 700 shows raw pixel values of an image plotted over displacement in pixels from a first pixel. Because of differences in illumination, smudges, stains, or other defects or image capture artifacts, the pixel values do not have the same value label to label. Thus, despite each bar of the bar code initially having approximately the same appearance, the pixel values may differ. Furthermore, because the image may be blurry, the pixel values to not have the sharp drop-offs that actually occur between bars of the bar code.

[0082] FIG. 8 illustrates an example graph generated from a bar code pattern with a spatial frequency of 16 read on a seam, in accordance with one or more aspects of this disclosure.

Like graph 700 of FIG. 7, graph 800 of FIG. 8 shows raw pixel values of an image plotted over displacement in pixels from a first pixel. The spatial frequency of the bar code used in FIG. 8 is the same as the spatial frequency of the bar code used in FIG. 7. However, the image of the bar code used in FIG. 8 is read along a seam, such as seam 114 (FIG. 1). As a result, the wave pattern shown in FIG. 8 becomes less discernable at higher displacement. Nevertheless, because of the approach of dividing the image into sections (as described with respect to the operation of FIG. 4), a reader device may be able to clearly determine the spatial frequency from the first section of the image used in FIG. 8.

[0083] FIG. 9 is a flowchart illustrating an example operation for determining whether a user is using objects from a manufacturer, in accordance with one or more aspects of this disclosure. For instance, a reader device may determine, based on a pattern identifier of a bar code, whether an object is made by a manufacturer. The example operation of FIG. 9 is described with reference to FIG. 1 and FIG. 2. In some examples, the operation of FIG. 9 is performed by a photospectrometer, spectrometer, luminometer, or other type of device and the object is a sample tube.

[0084] In the example of FIG. 9, reader device 100 initializes a manufacturer confidence score

(900). The manufacturer confidence score is a different score from the frequency confidence score discussed elsewhere in this disclosure that reflects the confidence that the correct spatial frequency has been determined. The manufacturer confidence score may indicate a confidence level that objects from a particular manufacturer are being used with reader device 100. It may be desirable to use only objects from the particular manufacturer with reader device 100 to ensure consistency in readings taken by reader device 100. For instance, reader device 100 may be calibrated based on objects from the particular manufacturer. In some examples, reader device 100 may initialize the manufacturer confidence score to 100%.

[0085] After initializing the manufacturer confidence score, reader device 100 may acquire one or more of images of a bar code printed on a label affixed to the sample tube (902). In some examples, reader device 100 acquires the one or more images of the bar code in response to detecting closure of a cap covering a cavity defined by a housing of reader device 100.

[0086] Reader device 100 may use different colors of light to illuminate the bar code when acquiring different images in the one or more images. For example, reader device 100 may acquire a plurality of images and may use infrared light to illuminate the bar code when acquiring a first image in the plurality of images and may use red light to illuminate the bar code when acquiring a second image in the plurality of images. In this example, two bar codes are printed in the same location on the label with different ink colors. One of the bar codes is a manufacturer test bar code and the other is an object information bar code. In some instances, the manufacturer test bar codes of certain objects manufactured by the particular manufacturer may have the same pattern identifier (i.e., a manufacturer test pattern identifier). In some examples, the manufacturer test pattern identifier is equal to 8. Object information bar codes of different objects manufactured by the particular manufacturer may have different pattern identifiers. In some examples, the ink used to print the manufacturer test bar code may be cyan in color, and hence may absorb red light. The ink used to print the object information bar code may absorb only infrared light, and hence may be invisible to the human eye. In some examples, a bar code may be overprinted with yellow, red, or magenta inks that do not absorb red or infrared light, and therefore may be invisible in images acquired while illuminating the label with red and infrared light. Green pigmented ink may absorb some red light.

[0087] Next, reader device 100 may determine a pattern identifier and a frequency confidence score based on a first image of the plurality of acquired images (904). Reader device 100 may determine the pattern identifier and the frequency confidence score in accordance with the techniques described elsewhere in this disclosure. For ease of explanation, this disclosure assumes, in the context of FIG. 9, that reader device 100 uses the image acquired while illuminating the bar code with red light (i.e., the red light image). Hence, this disclosure may refer to the first image as the red light image. However, in other examples, other colors of light may be used instead. Because the cyan ink of the manufacturer test bar code absorbs the red light, the spaces between the bars of the manufacturer test bar code may have high pixel values in the red light image and the bars of the manufacturer test bar code may have low pixel values in the red light image.

[0088] Reader device 100 may then determine a device score for the object (906). In some examples, to determine the device score for the object, reader device 100 may categorize the object into one of a plurality of categories. Each of the categories is associated with a different frequency confidence score. Reader device 100 may categorize the object based on a combination of light absorption in the one or more images, the pattern identifier for the red light image, and the frequency confidence score for the red light image. As noted above, the ink of the manufacturer test bar code is printed using a cyan ink that absorbs only red light. However, due to various image capture conditions (e.g., stains, scuffs, etc.), the contrast in the red light image may be such that the other colors of light may appear to be absorbed. In this example, if reader device 100 determines that the ink absorbs only red light, the pattern identifier of the red light image is equal to the predefined manufacturer test pattern identifier

(e.g., 8), and the frequency confidence score for the red light image is greater than or equal to a first threshold (e.g., 0.7), reader device 100 may determine the device score is equal to 100%. In this example, if reader device 100 determines that the ink absorbs no light, absorbs infrared light, or absorbs both red light and infrared light, the pattern identifier of the red light image is equal to the predefined manufacturer test pattern identifier, and the frequency confidence score for the red light image is greater than or equal to the first threshold, reader device 100 may determine the device score is equal to 10%. In this instance, it is possible that the object is manufactured by the particular manufacturer, but the color absorption is wrong because of low contrast. Furthermore, in this example, if the ink absorbs any color of light and the frequency confidence score is greater than or equal to a second threshold (e.g., 0.4), reader device 100 may determine the tub score is equal to 4%. If the ink absorbs any color of light, the pattern identifier of the red light image has any value other than the manufacturer test pattern identifier, reader device 100 may determine the device score is equal to 2%, regardless of the frequency confidence score for the red light image. In other examples, other thresholds and device scores may be used for different categories. Furthermore, in other examples, different numbers of categories may be used.

[0089] In the example of FIG. 9, after determining the device score, reader device 100 may update the manufacturer confidence score based on the device score (908). For example, reader device 100 may set the updated manufacturer confidence score equal to the current

manufacturer confidence score multiplied by the device score.

[0090] After updating the manufacturer confidence score, reader device 100 may determine whether the updated manufacturer confidence score is below a threshold (910). In one example, the threshold is equal to 0.0025%. In response to determining the manufacturer confidence score is not below the threshold ("NO" branch of 910), reader device 100 may reader device 100 may perform actions (902) through (910) again.

[0091] However, in response to determining that the manufacturer confidence score is below the threshold ("YES" of 910), reader device 100 may perform a notification action (912). In various examples, reader device 100 may perform various types of notification actions. For example, reader device 100 may display a message on display screen 106. In some examples, reader device 100 may transmit, e.g., via a communication network, a message to a remote service indicating that objects are being used in reader device 100 that are not manufactured by the particular manufacturer.

[0092] Thus, in the example of FIG. 9, as part of determining whether the object is made by the manufacturer, reader device 100 may initialize a manufacturer confidence score.

Additionally, reader device 100 may determine, based on the image of the bar code, a frequency confidence score for the bar code. Furthermore, in this example, reader device 100 may determine a device score based on the pattern identifier for the bar code and the frequency confidence score for the bar code. The manufacturer is associated with a particular value of the pattern identifier for the bar code. For instance, all sample tubes or certain sample tubes made by a particular manufacturer may have the same pattern identifier. Additionally, as described with respect to action (908), reader device 100 may update the manufacturer confidence score based on the device score. Furthermore, as described with respect to action (910), reader device 100 may determine, based on a comparison of the updated manufacturer confidence score and a threshold, whether to perform a notification action. In this example, as described with respect to action (912), responsive to making a determination to perform the notification action, reader device 100 may perform the notification action. In some instances, the notification action comprises outputting an indication that the object bearing the bar code is not manufactured by the manufacturer.

[0093] FIG. 10 is a flowchart illustrating an example operation for manufacturing an object, in accordance with one or more aspects of this disclosure. In some examples, an object may be manufactured by forming a bar code on an object. In some such examples, the bar code is printed directly on the object. In the example of FIG. 10, to form a bar code on an object, a printing device prints a bar code on a label (1000). A machine or human may affix the label to the cylindrical tube member such that label is affixed to the object (1002). In the example of FIG. 10, the bar code is formatted such that the pattern identifier is determinable by a reader device by acquiring, by the reader device, an image of the bar code. Additionally, the reader device may generate, based on the image of the bar code, a first set of data points. The reader device may generate the first set of data points in accordance with examples provided elsewhere in this disclosure. Furthermore, the reader device may generate a second set of data points by applying a transform (e.g., a discrete Fourier transform, a wavelet transform, etc.) to the first set of data points. Additionally, the reader device may identify a maximum data point in the second set of data points. The maximum data point in the second set of data points has a greatest magnitude among data points in the second set of data points. Furthermore, the reader device may determine the pattern identifier based on a spatial frequency corresponding to the maximum data point in the second set of data points.

[0094] In some examples where the object is a sample tube, a manufacturer deposits an enzyme (e.g., luciferase) into a cylindrical tube member of the sample tube (e.g., object 102 of

FIG. 1) (1000). The enzyme is a catalyst for a photochemical reaction when a substance is present (e.g., ATP, an allergen, a protein, or another substance). The photochemical reaction generates light detectable by a photospectrometer, spectrometer, or luminometer. The enzyme may be in a solution, such as water.

[0095] FIG. 11 is a flowchart illustrating an example operation of reader device 100, in accordance with one or more aspects of this disclosure. In the example of FIG. 11, reader device 100 acquires an image of a bar code (1100). The bar code may be formed on a substrate that may be affixed to object 102. In some examples, the bar code is formed directly on object 102. In addition, reader device 100 generates, based on the image of the bar code, a first set of data points (1102). Furthermore, reader device 100 generates a second set of data points by applying a transform (e.g., a discrete Fourier transform, a wavelet transform, etc.) to the first set of data points (1104). Reader device 100 also identifies a maximum data point in the second set of data points (1106). The maximum data point in the second set of data points has a greatest magnitude among data points in the second set of data points. In addition, reader device 100 determines a pattern identifier of the bar code based on a spatial frequency corresponding to the maximum data point in the second set of data points (1108). Reader device 100 may perform actions (1100) through (1108) in the manner described above with respect to actions (300) through (308).

[0096] Furthermore, in the example of FIG. 11, reader device 100 or another device (e.g., computing system 104) may determine, based on the pattern identifier of the bar code, a type of object 102 (1110). For example, object 102 may be a sample tube. In this example, different types of sample tubes may include sample tubes for testing free ATP in water samples, sample tubes for testing for total ATP, sample tubes for testing for allergens, sample tubes for testing for surface proteins, and so on. In this example, different types of sample tubes may correspond to different pattern identifiers in a predetermined mapping.

[0097] Reader device 100 or another device may perform various actions based on the type of the object. For example, reader device 100 or another device may generate output to send the object to different locations depending on the type of object. In another example, as shown in FIG. 11, when reader device 100 is a photospectrometer and the object is a sample tube, the photospectrometer may adjust, based on the type of the sample tube, a setting of the photospectrometer (1112). For instance, the photospectrometer may adjust a normalization setting, as discussed elsewhere in this disclosure. Additionally, in this example, the photospectrometer may perform, using the adjusted setting, a test for presence of a substance based on light emitted from within the sample tube (1114). Performing the test may comprise detecting a light level (e.g., light flux) of light emitted from within the sample tube. For instance, if the photospectrometer detects light emitted from within the sample tube, or a certain light flux emitted from within the sample tube, the photospectrometer may output an indication for display on display screen 106 indicating whether a significant amount substance is present. In some examples, the photospectrometer may communicate (e.g., via a wired or wireless connection) whether sufficient light is detected indicating the presence of significant amount of the substance .

[0098] FIG. 12 is a block diagram illustrating an example reader device 1200 and object 1202, in accordance with one or more aspects of this disclosure. In the example of FIG. 12, reader device 1200 may be a photospectrometer, a luminometer, a spectrometer, or other type of device. These types of devices may be used in detecting luminescence, light absorption, magnetic resonance, and other physical properties. In the example of FIG. 12, object 1202 is a sample tube. Photospectrometers, luminometers, spectrometers, and are devices frequently used in the food safety industry to test whether surfaces are contaminated with harmful microorganisms or other substances. To use reader device 1200 to test a surface, a worker may remove a swab from a sample tube. The swab includes an absorbent portion that touches the surface and an elongated handle portion held by the worker. Typically, the absorbent portion of the swab is made of a foam or cotton and is moistened with water. The sample tube may be cylindrical in shape with one closed end. After removing the swab from the sample tube, the worker wipes the surface with a swab and inserts the swab back into the sample tube, which typically seals the open end of the sample tube. After inserting the swab into the sample tube, the worker inserts the sample tube into reader device 1200 for testing.

[0099] Plant, animal, and microbial cells generate the chemical marker ATP. Hence, the presence of ATP may serve to indicate whether cells are present. Water or other solvent in the sample tube extracts the ATP, if present, from the swab. The swab holding tube may contain an enzyme, such as luciferase, that catalyzes a chemical reaction with ATP that causes emission of light. Reader device 1200 is configured to detect light emitted from within the sample tube. Reader device 1200 converts the amount of detected light into a relative light unit (RLU) that an operator or device may interpret as passing or failing. For instance, if the wiped surface is free of microbes, i.e., contains an amount of microbes below a level that would give rise to safety concerns, the RLU is below a particular threshold.

[0100] In the example of FIG. 12, reader device 1200 is a handheld or desktop device defining a cavity 1204 into which swab device 1202 may be inserted. Reader device 1200 comprises a display screen 1206 for displaying information to a user. A housing 1208 of reader device 1200 encloses internal components of reader device 1200. The internal components of reader device 1200 may include a reader device (e.g., reader device 100 of FIG. 1), a light detector, and one or more processing circuits, such as a programmable processor coupled to memory or other computer-readable storage device for storing data and executable instructions. Although not shown in the example of FIG. 12, reader device 1200 may comprise a tube cap that blocks light from entering cavity 1204 while object 1202 is in cavity 1204.

[0101] A swab 1210 is inserted into an interior cavity of object 1202. Swab 1210 comprises an absorbent tip 1212 and a handle member 1214. Absorbent tip 1212 may comprise a foam or cotton material. Object 1202 also contains a solvent 1216, such as water or a buffer. Solvent

1216 may include an enzyme, such as luciferase, that catalyzes a chemical reaction in causes light emission in the presence of ATP. A user may wipe absorbent tip 1212 of swab 1210 across a surface to be tested for microbes. The user may then reinsert swab 1210 into object 1202.

[0102] A label 1218 is attached to object 1202. In some examples, label 1218 has an adhesive backing that adheres to an outer surface of object 1202. A bar code 1220 is printed on label 1218. Since label 1218 may initially be a flat rectangle, there is a seam 1222 at the ends of label 1218 when label 1218 is wrapped around object 1202. In the example of FIG. 12, due to imperfect application of label 1218, seam 1222 is not perpendicular to a long axis 1224 of object 1202.

[0103] Reader device 1200 may read bar code 1220 when object 1202 is inserted into cavity

1204 of reader device 1200. Reader device 1200 may read bar code 1220 in accordance with the techniques described elsewhere in this disclosure.

[0104] FIG. 13 is a block diagram illustrating example components of reader device 1200, in accordance with one or more aspects of this disclosure. In the example of FIG. 13, reader device 1200 comprises a tag board 1300, a main board 1302, and an OMC board 1304. Each of tag board 1300, main board 1302, and OMC board 1304 may comprise one or more circuit boards, that each comprise one or more processing circuits (i.e., processors and memory or other computer-readable storage devices). Example types of processing circuits comprise digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Additionally, reader device 1200 comprises a cap 1306 and a cap switch 1308. Housing 1208 of reader device 1200 defines cavity 1204. Reader device 1200 also comprises a light detector 1320.

[0105] Tag board 1300 is so named because tag board 1300 is primarily responsible for reading tags (i.e., bar codes) on labels affixed to sample tubes. Tag board 1300 comprises a lens 1310, an image sensor 1312, a light barrier 1314, a light guide 1316, and a light source 1318. Lens 1310, image sensor 1312, light barrier 1314, light guide 1316, and light source 1318 may operate in substantially the same manner as described elsewhere in this disclosure with respect to lens 210, image sensor 212, light barrier 214, light guide 216, and light source 218. In some examples, photodiodes of image sensor 1312 are arranged in a 1-dimensional array aligned in a straight line with a long axis of cavity 1204. Each photodiode may be translated into one pixel of image data.

[0106] Thus, reader device 1200, as shown in the example of FIG. 13, is one example of a device comprising an image sensor (e.g., image sensor 1312) and one or more processing circuits (e.g., processing circuits in tag board 1300, main board 1302, OMC board 1304). The one or more processing circuits are configured to acquire, based on signals from the image sensor, an image of a bar code. The one or more processors are further configured to generate, based on the image of the bar code, a first set of data points. Additionally, the one or more processors are configured to generate a second set of data points by applying a transform (e.g., a discrete Fourier transform, a wavelet transform, etc.) to the first set of data points.

Furthermore, the one or more processors are configured to identify a maximum data point in the second set of data points. The maximum data point in the second set of data points has a greatest magnitude among data points in the second set of data points. In addition, the one or more processors may determine a pattern identifier of the bar code based on a spatial frequency corresponding to the maximum data point in the second set of data points.

[0107] In the example of FIG. 13, cap switch 1308 generates signals that indicate whether cap

1306 is open or closed. The signals from cap switch 1308 run through OMC board 1304 to main board 1302. When main board 1302 detects cap 1306 has been closed, main board 1302 instructs tag board 1300 to operate light source 1318 and image sensor 1312 to produce one or more line images. In some examples, main board 1302 may instruct tag board 1300 to operate light source 1318 and image sensor 1312 to produce one or more line images in response to other events, such as main board 1302 receiving an indication of a signal change (e.g., a difference in absorption of light), a spring that activates a switch or similar when a sample tube is present, and so on. In some examples, a kernel driver, such as a Linux kernel driver, executes on main board 1302 and instructs tag board 1300 to operate light source 1318 and image sensor 1312. Tag board 1300 may generate line images in accordance with examples provided elsewhere in this disclosure with respect to reader device 100.

[0108] In some examples, the pattern lines of a bar code are 0 to 10 degrees from

perpendicular to an image line due to the mechanics of the product. The image line is the physical line that image sensor 1312 is reading. The long dimension of the sample tube is nominally parallel to this line but light barrier 1314 may push the bottom end of the sample tube sideways once it is fully inserted into reader device 1200. This may cause the barcode (if the label was perfectly wrapped) to be at a slight angle away from perpendicular from the sensor line. The angle contribution from light barrier 1314 is <1 degree. More contribution comes from the wrapping of the label. For example, the contribution from the wrapping of the label may be to 4 degrees. This may translate to an advantage when reading on the seam because it is unlikely that the seam is parallel to image sensor 1312. Thus, even when the offset is exactly half the spatial period and the sensor line is somewhat over the seam it is likely to detect the correct pattern but with a lower confidence level.

[0109] OMC board 1304 may measure the temperature within cavity 1204 and may pass temperature information to main board 1302. Main board 1302 may perform a thermal compensation algorithm. The thermal compensation algorithm changes the device detection threshold depending on the temperature at a time of calibration and the temperature at a time of image capture. The thermal compensation algorithm compensates for changes in light output of the LEDs of light source due to temperature. Without thermal compensation, a 9-degree Celsius decrease in ambient temperature from the ambient temperature at the time of calibration may make reader device 1200 detect a swab in cavity 1204 when there is none. [0110] In some examples, main board 1302 or another device may determine, based on the pattern identifier of the bar code, a type of the sample tube. For instance, main board 1302 may use a predefined mapping of pattern identifiers to sample tube types to determine the type of the sample tube. Furthermore, main board 1302 may adjust, based on the type of the sample tube, a setting of the reader device 1200. Furthermore, light detector 1320 may detect light emitted from within the sample tube. Main board 1302 may perform, using the adjusted setting, a test for presence of a substance based on light emitted from within the sample tube.

[0111] FIG. 14 is a flowchart illustrating an example operation in accordance with one or more aspects of this disclosure. In the example of FIG. 14, a system of one or more devices (e.g., reader device 100, computing system 104, etc.) acquires an image of a bar code (1400). The system may acquire the image as described elsewhere in this disclosure. Additionally, the system may extract spatial frequency content of the image using a filtering method (1402). For example, the system may apply a discrete Fourier transform, a fast Fourier transform, a wavelet transform, or another type of transform to extract spatial frequency content of the image. The system may also determine, based on the extracted spatial frequency content, information represented in the bar code (1404). For example, the system may identify a maximum data point generated by applying the filtering method. The maximum data point may correspond to the information represented in the bar code.

[0112] It is to be recognized that depending on the example, certain acts or events of any of the techniques described herein can be performed in a different sequence, may be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the techniques). Moreover, in certain examples, acts or events may be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially.

[0113] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over, as one or more instructions or code, a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer- readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processing circuits to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0114] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, cache memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer- readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0115] Functionality described in this disclosure may be performed by fixed function and/or programmable processing circuitry. For instance, instructions may be executed by fixed function and/or programmable processing circuitry. Such processing circuitry may include one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor," as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements. Processing circuits may be coupled to other components in various ways. For example, a processing circuit may be coupled to other components via an internal device interconnect, a wired or wireless network connection, or another communication medium.

[0116] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.

[0117] Various examples have been described. These and other examples are within the scope of the following claims.