SYSTEM AND METHOD FOR OPTIMIZING DECODER PARAMETERS OF INDICATOR DECODERS - Patent application
The system automatically optimizes decoder parameters in machine vision systems using a decoder algorithm to enhance decoding accuracy and speed, addressing inefficiencies in manual configuration methods.
Patent Information
- Application Number
- JP2025517423
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-09-22
- Filing Date
- 2023-07-21
- Publication Date
- 2025-10-01
- Estimated Expiration
- 2043-07-21
AI Technical Summary
Existing machine vision systems face challenges in optimizing decoder parameters for indicia decoding, leading to inefficient and unreliable performance due to manual configuration processes that are time-consuming and prone to suboptimal results.
A system and method for automatically optimizing decoder parameters using a decoder algorithm that adjusts parameters based on image datasets to achieve optimal decoding speed and reliability, involving a first and second set of parameters with iterative adjustments.
Enables fast and efficient real-time optimization of decoder parameters, improving decoding accuracy, speed, and reliability by eliminating the need for manual configuration and ensuring optimal system performance.
Smart Images

Figure 2025532678000001_ABST
Abstract
Description
[Background technology]
[0001] Since the introduction of machine vision systems into industrial environments, developers have attempted to maximize the efficiency resulting from the use of these systems. For machine vision systems tasked with detecting and decoding indicia, two of the most important metrics affecting efficiency are decoding speed and decoding reliability. Both the decoding speed and decoding reliability of a machine vision system depend on the imaging parameters (e.g., exposure length) and decoder parameters (e.g., indicia characteristics) used to capture, detect, and decode the indicia.
[0002] However, because standard indicia decoders include a wide variety of decoder parameters, tuning these parameters to produce the optimal balance between decoding speed and decoding reliability presents a significant challenge. Traditionally, users have been forced to manually input each decoder parameter, a guess-and-check approach, until they find a suitable combination. This method typically involves the user repeatedly applying the indicia decoder to captured image data and manually recording the results of each iteration until the user determines that at least one configuration of decoder parameters produces suitable results. This poses a significant problem because it is highly inconvenient for the user and, because it is highly unlikely that the user has tested all possible combinations of decoder parameters, there is no guarantee that the selected configuration is truly suitable, let alone the best configuration. An improperly configured indicia decoder can cause extremely poor performance in a machine vision system, resulting in a significant reduction in overall system efficiency. Summary of the Invention [Problem to be solved by the invention]
[0003] Therefore, there is a need for a system and method for optimizing decoder parameters of an indicia decoder that enables fast and efficient real-time decoder parameter adjustment for machine vision systems during the execution of a machine vision job that includes detecting and decoding indicia. [Means for solving the problem]
[0004] In an embodiment, the present invention is a method for optimizing one or more decoder parameters of an indicia decoder, the method comprising: applying a decoder algorithm to a first image data set of a target object, detecting and decoding one or more indicia represented in the first image data set, the decoder algorithm utilizing a first set of parameters and a second set of parameters to detect and decode the one or more indicia; determining minimum and maximum values for each parameter of the first set of parameters based on the detection and decoding of the one or more indicia represented in the first image data set; and adjusting a parameter of the second set of parameters from a first value to a second value, the first value being a decoder algorithm for the first image data set. adjusting the parameters of the second set of parameters during application of the decoder algorithm; applying the decoder algorithm to a second image dataset of the target object to detect and decode one or more indicia represented in the second image dataset based on the minimum and maximum values for each parameter of the first set of parameters and the second values of the parameters of the second set of parameters; and setting the parameters of the second set of parameters to one of the first value or the second value during subsequent application of the decoder algorithm based on a comparison of the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset.
[0005] In a variation of this embodiment, the first set of parameters includes one or more of (i) contrast threshold, (ii) quiet zone size, (iii) maximum rectangular ratio, (iv) minimum module size, (v) maximum module size, (vi) minimum number of rows, (vii) maximum number of rows, (viii) minimum number of columns, or (ix) maximum number of columns, and the second set of parameters includes one or more of (i) decode search intensity level, (ii) detection method, or (iii) barcode priority.
[0006] In another variation of this embodiment, setting the parameter of the second set of parameters to the first value or the second value during a subsequent application of the decoder algorithm further comprises comparing a number of first decoded indicia from the first image dataset with a number of second decoded indicia from the second image dataset, and comparing a first decode time for each decoded indicia from the first image dataset with a second decode time for a corresponding decoded indicia from the second image dataset, wherein the corresponding decoded indicia are identical to the decoded indicia. Further, in this variation, the method may further comprise determining that the first decode time for the first decoded indicia from the first image dataset is less than the second decode time for the corresponding decoded indicia from the second image dataset, and setting the parameter of the second set of parameters to the first value during a subsequent application of the decoder algorithm. Further, in this variation, the method may include determining that (i) the number of first decoded indicia is less than the number of second decoded indicia, and (ii) a first decoding time for each decoded indicia from the first image data set is less than a second decoding time for the corresponding decoded indicia from the second image data set, and setting a parameter of the second set of parameters to a second value during subsequent application of the decoder algorithm.
[0007] In yet another variation of this embodiment, determining the minimum and maximum values for each parameter of the first set of parameters further includes adjusting the minimum and maximum values for each parameter of the first set of parameters by a threshold value of a subsequent application of the decoder algorithm, and setting each parameter of the first set of parameters to a value between the minimum and maximum values during the subsequent application of the decoder algorithm.
[0008] In yet another variation of this embodiment, the second image dataset is the first image dataset, and the one or more indicia represented in the second image dataset are one or more indicia represented in the first image dataset.
[0009] In yet another variation of this embodiment, the method further includes detecting a number of first indicia from one or more indicia represented in the first image data set and detecting a number of second indicia from one or more indicia represented in the second image data set, wherein the number of first indicia and the number of second indicia are different.
[0010] In yet another variation of this embodiment, the method further includes adjusting a parameter of the second set of parameters from the second value to a third value; applying a decoder algorithm to a third image dataset of the target object to detect and decode one or more indicia represented in the third image dataset based on the minimum and maximum values for each parameter of the first set of parameters and the third value of the parameter of the second set of parameters; and setting the parameter of the second set of parameters to one of (i) the first value, (ii) the second value, or (iii) the third value during subsequent application of the decoder algorithm based on a comparison of the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset and with the number of third decoded indicia from the third image dataset.
[0011] In yet another variation on this embodiment, the method includes: (a) designating a second image dataset as a current image dataset and designating a parameter of a second set of parameters as a current parameter; (b) automatically setting the current parameter to a first value or a second value; (c) adjusting a subsequent parameter of the second set of parameters from the first value to the second value; (d) capturing, with an imaging device, a subsequent image of the object, the subsequent image comprising a subsequent image dataset; and (e) applying a decoder algorithm to the subsequent image dataset and, based on the second value of the subsequent parameter, (f) during subsequent application of the decoder algorithm, setting the subsequent parameters to one of the first value or the second value; (g) designating the subsequent image dataset as the current image dataset and designating the subsequent parameters as the current parameters; and (h) iteratively performing steps (c)-(h) until each parameter of the second set of parameters is set to either the first value or the second value and applied to at least one image dataset of the target object as part of the decoder algorithm.
[0012] In another embodiment, the invention is a computer system for optimizing one or more decoder parameters of an indicia decoder. The computer system includes one or more processors and a non-transitory computer-readable memory coupled to the imaging device and the one or more processors. The memory stores instructions that, when executed by the one or more processors, cause the one or more processors to apply a decoder algorithm to a first image dataset of a target object to detect and decode one or more indicia represented in the first image dataset, where the decoder algorithm detects and decodes the one or more indicia utilizing a first set of parameters and a second set of parameters; determine minimum and maximum values for each parameter of the first set of parameters based on the detection and decoding of the one or more indicia represented in the first image dataset; and adjust the parameters of the second set of parameters from first values to second values. and adjusting the first values to be set for the parameters of the second set of parameters during application of the decoder algorithm to the first image dataset; applying the decoder algorithm to a second image dataset of the target object to detect and decode one or more indicia represented in the second image dataset based on the minimum and maximum values for each parameter of the first set of parameters and the second values for the parameters of the second set of parameters; and setting the parameters of the second set of parameters to one of the first or second values during subsequent application of the decoder algorithm based on a comparison of the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset.
[0013] In a variation of this embodiment, the first set of parameters includes one or more of (i) contrast threshold, (ii) quiet zone size, (iii) maximum rectangular ratio, (iv) minimum module size, (v) maximum module size, (vi) minimum number of rows, (vii) maximum number of rows, (viii) minimum number of columns, or (ix) maximum number of columns, and the second set of parameters includes one or more of (i) decoding search intensity level, (ii) detection method, or (iii) preferred barcode.
[0014] In another variation of this embodiment, the instructions, when executed by one or more processors, cause the one or more processors to set a parameter of a second set of parameters to a first value or a second value during subsequent application of the decoder algorithm by comparing a number of first decoded indicia from the first image dataset with a number of second decoded indicia from the second image dataset, and comparing a first decode time for each decoded indicia from the first image dataset with a second decode time for a corresponding decoded indicia from the second image dataset, where the corresponding decoded indicia is identical to the decoded indicia. Further, in this variation, the instructions, when executed by one or more processors, cause the one or more processors to determine that the first decode time for the first decoded indicia from the first image dataset is less than the second decode time for the corresponding decoded indicia from the second image dataset, and set the parameter of the second set of parameters to the first value during subsequent application of the decoder algorithm. Further, in this variation, the instructions, when executed by one or more processors, cause the one or more processors to determine (i) that the number of first decoded indicia is less than the number of second decoded indicia, and (ii) that a first decoding time for each decoded indicia from the first image data set is less than a second decoding time for a corresponding decoded indicia from the second image data set, and set a parameter of a second set of parameters to a second value during subsequent application of the decoder algorithm.
[0015] In yet another variation of this embodiment, the instructions, when executed by one or more processors, cause the one or more processors to determine minimum and maximum values for each parameter of the first set of parameters by adjusting the minimum and maximum values for each parameter of the first set of parameters by a threshold value of a subsequent application of the decoder algorithm, and setting each parameter of the first set of parameters to a value between the minimum and maximum values during the subsequent application of the decoder algorithm.
[0016] In yet another variation of this embodiment, the second image dataset is the first image dataset, and the one or more indicia represented in the second image dataset are one or more indicia represented in the first image dataset.
[0017] In yet another variation of this embodiment, the instructions, when executed by one or more processors, cause the one or more processors to detect a number of first indicia from one or more indicia represented in a first image data set and detect a number of second indicia from one or more indicia represented in a second image data set, wherein the number of first indicia and the number of second indicia are different.
[0018] In yet another variation on this embodiment, the instructions, when executed by one or more processors, cause the one or more processors to: (a) designate the second image dataset as a current image dataset and designate parameters of the second set of parameters as current parameters; (b) automatically set the current parameters to the first value or the second value; (c) adjust subsequent parameters of the second set of parameters from the first value to the second value; (d) cause the imaging device to capture a subsequent image of the object, the subsequent image comprising the subsequent image dataset; and (e) apply the decoder algorithm to the subsequent image dataset. (f) detecting and decoding one or more indicia represented in the subsequent image dataset based on the second value of the subsequent parameter; (g) setting the subsequent parameter to one of the first value or the second value during subsequent application of the decoder algorithm; (g) designating the subsequent image dataset as the current image dataset and designating the subsequent parameter as the current parameter; and (h) iteratively performing steps (c)-(h) until each parameter of the second set of parameters is set to either the first value or the second value and applied to at least one image dataset of the target object as part of the decoder algorithm.
[0019] In yet another embodiment, the invention is a tangible machine-readable medium containing instructions for optimizing one or more decoder parameters of an indicia decoder, which instructions, when executed, cause a machine to apply a decoder algorithm to a first image dataset of a target object to detect and decode one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes the one or more indicia utilizing a first set of parameters and a second set of parameters; determining minimum and maximum values for each parameter of the first set of parameters based on the detection and decoding of the one or more indicia represented in the first image dataset; and optimizing one or more decoder parameters of the second set of parameters from the first value to the second value. and adjusting the parameters of the second set of parameters to at least two values, where the first value is set for the parameters of the second set of parameters during application of the decoder algorithm to the first image dataset; applying the decoder algorithm to a second image dataset of the target object and detecting and decoding one or more indicia represented in the second image dataset based on the minimum and maximum values for each parameter of the first set of parameters and the second value for the parameter of the second set of parameters; and setting the parameters of the second set of parameters to one of the first value or the second value during subsequent application of the decoder algorithm based on a comparison of the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset.
[0020] The accompanying drawings, in which like reference numbers refer to identical or functionally similar elements throughout the different views, and together with the following detailed description, are incorporated into and form a part of the specification, and serve to further illustrate embodiments of the concepts comprising the claimed invention(s) and to explain various principles and advantages of those embodiments. [Brief explanation of the drawings]
[0021] [Figure 1] 1 is a diagram of an example system for optimizing one or more decoder parameters of an indicia decoder according to embodiments described herein. [Figure 2] 2 is a perspective view of the imaging device of FIG. 1 according to embodiments described herein. [Figure 3] FIG. 10 is a block diagram of example logic circuitry for implementing example methods and / or operations described herein. [Figure 4] FIG. 2 illustrates an exemplary decoder parameter optimization sequence according to embodiments described herein. [Figure 5] 1 is a flowchart illustrating a method for optimizing one or more decoder parameters of an indicia decoder according to embodiments described herein. DETAILED DESCRIPTION OF THE INVENTION
[0022] Those skilled in the art will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.
[0023] Device and method components are represented in the drawings by conventional symbols, where appropriate, and only specific details relevant to understanding the embodiments of the invention are shown, so as not to obscure the disclosure with details that are readily apparent to those skilled in the art having the benefit of the description herein.
[0024] Owners / operators of machine vision systems have traditionally struggled with the inability to achieve optimal configuration of indicia decoders using traditional manual configuration processes. Manually configuring an indicia decoder is very time-consuming, involves a significant amount of guesswork from the user / operator, and generally results in a suboptimal configuration that reduces decoding accuracy, speed, and reliability. It is therefore an object of the present disclosure to eliminate these and other problems associated with traditional machine vision systems by enabling the machine vision system to automatically and intelligently configure decoder parameters for indicia decoders included as part of the system. In particular, the present disclosure provides a decoder algorithm in a manner that can systematically determine optimal settings for each decoder parameter and accordingly ensure optimal performance of the indicia decoder. Thus, as described herein, embodiments of the present disclosure can eliminate the need for expensive manual decoder parameter configuration and corresponding system downtime, improve indicia decoder decoding accuracy, speed, and reliability, and ensure the system maximizes overall image capture and processing efficiency.
[0025] FIG. 1 illustrates an exemplary smart imaging system 100 configured to analyze pixel data of an image of a target object to optimize one or more decoder parameters of an indicia decoder, according to various embodiments disclosed herein. In the example embodiment of FIG. 1, the smart imaging system 100 includes a user computing device 102 and an imaging device 104 communicatively coupled to the user computing device 102 via a network 106. Generally speaking, the user computing device 102 and the imaging device 104 may be capable of executing instructions to perform operations of the exemplary methods described herein, for example, as may be represented by the flowcharts in the figures accompanying this description. The user computing device 102 is typically configured to enable a user / operator to create machine vision jobs for execution on the imaging device 104. Once created, the user / operator may then transmit / upload the machine vision jobs via the network 106 to the imaging device 104, where they are then interpreted and executed. The machine vision jobs may include various machine vision tools (e.g., indicia decoder 120a) configured to perform various machine vision tasks (e.g., indicia detection and decoding). The user computing device 102 may include one or more operator workstations and may include one or more processors 108, one or more memories 110, a network interface 112, an input / output (I / O) interface 114, and a smart imaging application 116. The smart imaging application 116 may include an indicia decoder 116a, which may further include a decoder algorithm 116a1 and a set of decoder parameters 116a2.
[0026] The imaging device 104 is connected to the user computing device 102 via the network 106 and is configured to interpret and execute machine vision jobs received from the user computing device 102. Typically, the imaging device 104 may retrieve a job file containing one or more job scripts from the user computing device 102 via the network 106, where the job script may define a machine vision job and configure the imaging device 104 to capture and / or analyze images according to the machine vision job. For example, the imaging device 104 may include flash memory used to determine, store, or otherwise process imaging data / datasets and / or post-imaging data. The imaging device 104 may then receive, recognize, and / or otherwise interpret triggers that cause the imaging device 104 to capture images of target objects according to the configuration established via the one or more job scripts. After being captured and / or analyzed, the imaging device 104 may transmit the images and any associated data to the user computing device 102 via the network 106 for further analysis and / or storage. In various embodiments, the imaging device 104 may be a “smart” camera and / or may otherwise be configured to automatically perform sufficient functions of the imaging device 104 to retrieve, interpret, and execute job scripts defining machine vision jobs, such as any one or more job scripts contained in one or more job files as retrieved from the user computing device 102.
[0027] A job file may generally be a JSON representation / data format of one or more job scripts that can be transferred from the user computing device 102 to the imaging device 104. The job file may also be loadable / readable by a C++ runtime engine or other suitable runtime engine executing on the imaging device 104. Additionally, the imaging device 104 may execute a server (not shown) configured to listen for and receive job files from the user computing device 102 over the network 106. Additionally or alternatively, the server configured to listen for and receive job files may be implemented as one or more cloud-based servers, such as a cloud-based computing platform. For example, the server may be any one or more cloud-based platforms, such as MICROSOFT AZURE, AMAZON AWS, etc.
[0028] In any event, the smart imaging application 116 may be configured to enable construction of machine vision jobs, typically allowing a user to construct the machine vision job using the smart imaging application 116 as stored on the user computing device 102. In an exemplary implementation, a user may desire that the imaging device 104 automatically detect and decode indicia featured in captured images and, therefore, may incorporate an indicia decoder 116a into a job script for transmission to the imaging device 104 as part of a job file. When incorporating the indicia decoder 116a into a job script, the user may select an option and / or otherwise indicate that the decoder algorithm 116a1 should automatically calibrate the set of decoder parameters 116a2 when received at the imaging device 104, prior to active (e.g., runtime) execution of the indicia decoder 116a as part of a machine vision job, as described herein. The decoder algorithm 120a1 may then instruct the processor 118 of the imaging device 104 to perform automatic calibration of the set of decoder parameters 120a2, and the decoder algorithm 120a1 may then instruct the processor 118 how to detect and decode indicia based on the calibrated set of decoder parameters 120a2 during active (e.g., runtime) execution of the indicia decoder 120a as part of a machine vision job.
[0029] In any event, imaging device 104 may include one or more processors 118, one or more memories 120, a network interface 122, an I / O interface 124, and an imaging assembly 126. Imaging assembly 126 may include a digital camera and / or a digital video camera for capturing or filming digital images and / or frames. Each digital image may include pixel data that can be analyzed by one or more tools, each configured to perform image analysis tasks (e.g., indicia detection / decoding), as described herein. For example, the digital camera and / or digital video camera of imaging assembly 126 may be configured to film, capture, or otherwise generate digital images, which, at least in some embodiments, may be stored in memory (e.g., one or more memories 110, 120) of the respective device (e.g., user computing device 102, imaging device 104).
[0030] For example, imaging assembly 126 may include a photorealistic camera (not shown) for capturing, sensing, or scanning 2D image data. The photorealistic camera may be an RGB (red, green, blue)-based camera for capturing 2D images including RGB-based pixel data. In various embodiments, imaging assembly 126 may further include a three-dimensional (3D) camera (not shown) for capturing, sensing, or scanning 3D image data. The 3D camera may include an infrared (IR) projector and associated IR camera for capturing, sensing, or scanning 3D image data / datasets. In some embodiments, the photorealistic camera of imaging assembly 126 may capture 2D images and associated 2D image data at the same or similar time as the 3D camera of imaging assembly 126, such that imaging device 104 may have both sets of 3D and 2D image data available for a particular surface, object, area, or scene at the same or similar time. In various embodiments, imaging assembly 126 may include a 3D camera and a photorealistic camera as a single imaging device configured to capture 3D depth image data simultaneously with 2D image data, so that the captured 2D image and corresponding 2D image data may be depth-aligned with the 3D image and 3D image data.
[0031] In an embodiment, the imaging assembly 126 may be configured to capture images of a predefined search space or a surface or area of a target object within the predefined search space. For example, each tool included in a job script may further include a region of interest (ROI) corresponding to a particular region or target object to be imaged by the imaging assembly 126. The composite area defined by the ROIs for all tools included in a particular job script may thereby define a predefined search space that the imaging assembly 126 can capture to facilitate execution of the job script. However, the predefined search space may be user-specified to include a field of view (FOV) that is more or less distinctive than the composite area defined by the ROIs of all tools included in a particular job script. It should be noted herein that the imaging assembly 126 may capture 2D and / or 3D image data / data sets of various areas, in addition to the predefined search space, such that additional areas are contemplated. Furthermore, in various embodiments, the imaging assembly 126 may be configured to capture other sets of image data, such as grayscale image data or amplitude image data, in addition to the 2D / 3D image data, each of which may be depth-aligned with the 2D / 3D image data.
[0032] The imaging device 104 may also process 2D image data / datasets and / or 3D image data sets for use by other devices (e.g., the user computing device 102, an external server). For example, the one or more processors 118 may process scanned or sensed image data or data sets captured by the imaging assembly 126. The processing of the image data may generate post-imaging data, which may include metadata, simplified data, normalized data, result data, status data, or alert data, as determined from the original scanned or sensed image data. The image data and / or post-imaging data may be transmitted to the user computing device 102 executing the smart imaging application 116 for display, manipulation, and / or other interaction. In other embodiments, the image data and / or post-imaging data may be transmitted to a server for storage or further manipulation. As described herein, the user computing device 102, the imaging device 104, and / or an external server or other centralized processing unit and / or storage may store such data and may also transmit the image data and / or post-capture data to another application running on the user device, such as a mobile device, tablet, handheld device, or desktop device.
[0033] Each of the one or more memories 110, 120 may include one or more forms of volatile and / or non-volatile, fixed, and / or removable memory, such as read-only memory (ROM), electronic programmable read-only memory (EPROM), random access memory (RAM), erasable electronic programmable read-only memory (EEPROM), and / or other hard drives, flash memory, MicroSD cards, etc. Generally, a computer program or computer-based product, application, or code (e.g., the smart imaging application 116, the indicia decoders 116a, 120a, the decoder algorithms 116a1, 120a1, the sets of decoder parameters 116a2, 120a2, and / or other computational instructions described herein) may be stored on a computer-usable storage medium, or tangible, non-transitory computer-readable medium (e.g., a standard random access memory (RAM), an optical disk, a universal serial bus (USB) or a similar storage medium) in which such computer-readable program code or computer instructions are embodied, to facilitate, implement, or perform the machine-readable instructions, methods, processes, elements, or limitations as illustrated, depicted, or described with respect to the various flowcharts, examples, diagrams, figures, and / or other disclosures herein. The computer-readable program code or computer instructions may be stored on a network bus (e.g., a network bus), a network drive, or the like, and may be installed on or otherwise adapted to be executed by one or more processors 108, 118 (e.g., operating in association with a respective operating system in one or more memories 110, 120).In this regard, the program code may be implemented in any desired programming language and may be implemented as machine code, assembly code, bytecode, interpretable source code, etc. (e.g., via Golang, Python, C, C++, C#, Objective-C, Java, Scala, ActionScript, JavaScript, HTML, CSS, XML, etc.).
[0034] The one or more memories 110, 120 may store an operating system (OS) (e.g., Microsoft Windows, Linux, Unix, etc.) that can facilitate functions, apps, methods, or other software as described herein. The one or more memories 110 may also store a smart imaging application 116 that can be configured to enable building machine vision jobs as described herein. Additionally or alternatively, the smart imaging application 116 may also be stored in one or more memories 120 of the imaging device 104 and / or in an external database (not shown) accessible by or otherwise communicatively coupled to the user computing device 102 via the network 106. The one or more memories 110, 120 may also store machine-readable instructions, including one or more applications, one or more software components, and / or one or more application programming interfaces (APIs), which may be implemented to facilitate or perform features, functions, or other disclosures described herein, such as any methods, processes, elements, or limitations as illustrated, depicted, or described with respect to the various flowcharts, illustrations, diagrams, figures, and / or other disclosures herein. For example, at least some of the applications, software components, or APIs may be, include, or otherwise be part of a machine-vision-based imaging application, such as smart imaging application 116, each of which may be configured to facilitate various functions described herein. It should be understood that one or more other applications may be contemplated and executed by one or more processors 108, 118.
[0035] The one or more processors 108, 118 may be connected to the one or more memories 110, 120 via a computer bus that is responsible for transmitting electronic data, data packets, or other electronic signals between the one or more processors 108, 118 and the one or more memories 110, 120 to perform or execute machine-readable instructions, methods, processes, elements, or limitations as illustrated, depicted, or described in connection with the various flowcharts, examples, diagrams, figures, and / or other disclosures herein.
[0036] The one or more processors 108, 118 may interface with the one or more memories 110, 120 via a computer bus to execute an operating system (OS). The one or more processors 108, 118 may also interface with the one or more memories 110, 120 via a computer bus to create, read, update, delete, or otherwise access or interact with data stored in the one or more memories 110, 120 and / or an external database (e.g., a relational database such as Oracle, DB2, MySQL, or a NoSQL-based database such as MongoDB). The data stored in the one or more memories 110, 120 and / or an external database may include all or a portion of any of the data or information described herein, including, for example, machine vision job images (e.g., images captured by the imaging device 104 in response to execution of a job script) and / or other suitable information.
[0037] The network interfaces 112, 122 may be configured to communicate (e.g., send and receive) data via one or more external / network ports to one or more networks, such as the network 106 described herein, or to local terminals. In some embodiments, the network interfaces 112, 122 may include client-server platform technologies, such as ASP.NET, Java J2EE, Ruby on Rails, Node.js, web services, or online APIs, that are responsible for receiving and responding to electronic requests. The network interfaces 112, 122 may implement client-server platform technologies that communicate with one or more memories 110, 120 (including stored applications, components, APIs, data, etc.) via a computer bus to implement or execute machine-readable instructions, methods, processes, elements, or limitations, such as those illustrated, depicted, or described in connection with the various flowcharts, illustrations, diagrams, figures, and / or other disclosures herein.
[0038] According to some embodiments, network interfaces 112, 122 may include or interact with one or more transceivers (e.g., WWAN, WLAN, and / or WPAN transceivers) that function according to IEEE, 3GPP, or other standards and that may be used in receiving and transmitting data via an external / network port connected to network 106. In some embodiments, network 106 may include a private network or a local area network (LAN). Additionally or alternatively, network 106 may include a public network such as the Internet. In some embodiments, network 106 may include a router, wireless switch, or other such wireless connection point that communicates with user computing device 102 (via network interface 112) and imaging device 104 (via network interface 122) via wireless communications based on any one or more of a variety of wireless standards, including, by non-limiting example, IEEE 802.11a / b / c / g (WIFI), BLUETOOTH, etc.
[0039] The I / O interfaces 114, 124 may include or implement an operator interface configured to present information to and / or receive input from an administrator or operator. The operator interface provides a display screen (e.g., via the user computing device 102 and / or the imaging device 104) that a user / operator may use to visualize any images, graphics, text, data, features, pixels, and / or other suitable visualizations or information. The user computing device 102 and / or the imaging device 104 may at least partially include, implement, access, render, or otherwise expose a graphical user interface (GUI) for displaying images, graphics, text, data, features, pixels, and / or other suitable visualizations or information on the display screen. For example, the I / O interface 114, 124 may render the set of decoder parameters 116a2, 120a2 to an operator interface for display to a user / operator after the parameters 116a2, 120a2 have been calibrated according to instructions included as part of the decoder algorithm 116a1, 120a1.
[0040] The I / O interfaces 114, 124 may also include I / O components (e.g., ports, capacitive or resistive touch-sensitive input panels, keys, buttons, lights, LEDs, any number of keyboards, mice, USB drives, optical drives, screens, touchscreens, etc.) that may be directly / indirectly accessible through or attached to the user computing device 102 and / or imaging device 104. According to some embodiments, an administrator or user / operator may access the user computing device 102 and / or imaging device 104 to build jobs, review images or other information (e.g., calibrated decoder parameters), make changes, input responses and / or selections, and / or perform other functions.
[0041] As previously described herein, in some embodiments, user computing device 102 may perform functions as described herein as part of a “cloud” network or may otherwise communicate with other hardware or software components in the cloud to transmit, retrieve, or otherwise analyze data or information as described herein.
[0042] 2 is a perspective view of the imaging device 104 of FIG. 1 in accordance with an embodiment described herein. The imaging device 104 includes a housing 202, an imaging aperture 204, a user interface label 206, a dome switch / button 208, one or more light emitting diodes (LEDs) 210, and mounting points 212. As previously described, the imaging device 104 obtains job files from a user computing device (e.g., the user computing device 102), which the imaging device 104 then interprets and executes. The instructions included in the job files may include device configuration settings (also referred to herein as “imaging settings”) that are operable to adjust the configuration of the imaging device 104 before capturing an image of a target object.
[0043] For example, the device configuration settings may include instructions for adjusting one or more settings related to the imaging aperture 204. As an example, assume that at least a portion of the intended analysis corresponding to a machine vision job requires the imaging device 104 to maximize the brightness of any captured images. To accommodate this requirement, the job file may include a device configuration setting for increasing the aperture size of the imaging aperture 204. The imaging device 104 may interpret these instructions (e.g., by one or more processors 118) and increase the aperture size of the imaging aperture 204 accordingly. Thus, the imaging device 104 may be configured to automatically adjust its configuration to optimally follow a particular machine vision job. Additionally, the imaging device 104 may include or otherwise be adaptable to include, for example, but not limited to, one or more bandpass filters, one or more polarizers, one or more DPM diffusers, one or more C-mount lenses, and / or one or more C-mount liquid lenses that affect the illumination received on or otherwise through the imaging aperture 204.
[0044] The user interface label 206 may include a dome switch / button 208 and one or more LEDs 210, which may enable various interactive and / or instructional functions. Typically, the user interface label 206 may enable a user to trigger and / or adjust the imaging device 104 (e.g., via the dome switch / button 208) and to recognize when one or more functions, errors, and / or other actions have been performed or taken with respect to the imaging device 104 (e.g., via the one or more LEDs 210). For example, the trigger function of the dome switch / button (e.g., the dome switch / button 208) may enable a user to capture an image using the imaging device 104 and / or display a trigger configuration screen of a user application (e.g., the smart imaging application 116). The trigger configuration screen may enable a user to configure one or more triggers for the imaging device 104, which may be stored in memory (e.g., one or more memories 110, 120) for use in later-developed machine vision jobs.
[0045] As another example, the adjustment function of the dome switch / button (e.g., dome switch / button 208) may allow a user to automatically and / or manually adjust the configuration of the imaging device 104 according to a preferred / default configuration and / or display an imaging configuration screen of a user application (e.g., smart imaging application 116). The imaging configuration screen may allow a user to configure one or more configurations of the imaging device 104 (e.g., aperture size, exposure length, etc.), which may be stored in memory (e.g., one or more memories 110, 120) for use in later developed machine vision jobs.
[0046] To further this example, as described further herein, a user may utilize an imaging configuration screen (or, more generally, smart imaging application 116) to establish two or more configurations of imaging settings for imaging device 104. The user may then save these two or more configurations of imaging settings as part of a machine vision job, which are then transmitted to imaging device 104 within a job file including one or more job scripts. The one or more job scripts may then instruct a processor (e.g., one or more processors 118) of imaging device 104 to automatically and continuously adjust the imaging settings of the imaging device according to one or more of the two or more configurations of imaging settings after each successive image capture. Once the imaging settings are calibrated, imaging device 104 may then proceed to execute decoder algorithm 120a1 to calibrate set of decoder parameters 120a2. However, in some cases, imaging device 104 may calibrate set of decoder parameters 120a2 before calibrating the imaging settings.
[0047] The mounting points 212 may allow a user to connect and / or removably affix the imaging device 104 to a mounting device (e.g., an imaging tripod, a camera mount, etc.), a structural surface (e.g., a warehouse wall, a warehouse ceiling, a structural support beam, etc.), other accessory items, and / or any other suitable connecting device, structure, or surface. For example, the imaging device 104 may be optimally placed on a mounting device within a distribution center, manufacturing plant, warehouse, and / or other facility to image and thereby monitor the quality / consistency of products, packages, and / or other items as they pass through the FOV of the imaging device 104. Additionally, the mounting points 212 may allow a user to connect the imaging device 104 to numerous accessory items, including, but not limited to, one or more external lighting devices, one or more mounting devices / brackets, etc.
[0048] Additionally, imaging device 104 may include multiple hardware components contained within housing 202 that enable connection to a computer network (e.g., network 106). For example, imaging device 104 may include a network interface (e.g., network interface 122) that enables imaging device 104 to connect to a network, such as a Gigabit Ethernet connection and / or a dual Gigabit Ethernet connection. Further, imaging device 104 may include a transceiver and / or other communication components as part of the network interface for communicating with other devices (e.g., user computing device 102) via, for example, Ethernet / IP, PROFINET, Modbus TCP, CC-Link, USB 3.0, RS-232, and / or any other suitable communication protocol, or combination thereof.
[0049] Figure 3 is a block diagram representing an example logic circuit that can implement, for example, one or more components of the example imaging device 104 of Figure 2. The example logic circuit of Figure 3 is a processing platform 300 that can execute instructions to perform operations of the example methods described herein, for example, as may be represented by the flowcharts of the figures accompanying this description. For example, other example logic circuits that can perform operations of the example methods described herein include field programmable gate arrays (FPGAs) and application specific integrated circuits (ASICs).
[0050] The example processing platform 300 of Figure 3 includes a processor 302, such as, for example, one or more microprocessors, controllers, and / or any suitable type of processor. The example processing platform 300 of Figure 3 includes memory (e.g., volatile memory, non-volatile memory) 304 accessible (e.g., via a memory controller) by the processor 302. The example processor 302 interacts with the memory 304 to, for example, retrieve machine-readable instructions stored in the memory 304, corresponding to, for example, the operations represented by the flowcharts of the present disclosure.
[0051] Memory 304 also includes indicia decoder 120a, decoder algorithm 120a1, and set of decoder parameters 120a2, each accessible by exemplary processor 302. As previously mentioned, decoder algorithm 120a1 may include, for example, rule-based instructions, artificial intelligence (AI) and / or machine learning-based models, and / or any other suitable algorithm architecture, or combination thereof, configured to optimize / calibrate set of decoder parameters 120a2, detect indicia in captured images, and decode indicia in captured images. To illustrate, exemplary processor 302 may access memory 304 to execute decoder algorithm 120a1 when imaging device 104 captures (via imaging assembly 126) a set of image data including pixel data from a plurality of pixels and detects and decodes any indicia represented by the pixel data.
[0052] Additionally or alternatively, machine-readable instructions corresponding to the example operations described herein may be stored on one or more removable media (e.g., compact discs, digital versatile discs, removable flash memory, etc.) that can be coupled to processing platform 300 to provide access to the stored machine-readable instructions.
[0053] 3 also includes a network interface 310 to enable communication with other machines, for example, over one or more networks. The example network interface 310 includes any suitable type of communication interface (e.g., a wired interface and / or a wireless interface) configured to operate according to any suitable protocol (e.g., Ethernet for wired communication and / or IEEE 802.11 for wireless communication).
[0054] 3 also includes an input / output (I / O) interface 312 for allowing receipt of user input and transmission of output data to a user. Such user input and transmission may include, for example, any number of keyboards, mice, USB drives, optical drives, screens, touchscreens, etc.
[0055] 4 illustrates an exemplary decoder parameter optimization sequence 400 according to embodiments described herein. Generally speaking, the exemplary decoder parameter optimization sequence 400 may represent the imaging device 104 determining parameter value settings for one or more decoder parameters in the set of decoder parameters 120a2 (e.g., by executing instructions included as part of the decoder algorithm 120a1). Further, as illustrated in FIG. 4, the exemplary parameter optimization sequence 400 may include the imaging device 104 proceeding to determine such parameter value settings for each decoder parameter in the set of decoder parameters 120a2 through subsequent image datasets and subsequent parameter adjustments. As a result of the exemplary decoder parameter optimization sequence 400, the imaging device 104 may optimize / calibrate each decoder parameter in the set of decoder parameters 120a2 (by the decoder algorithm 120a1), thereby maximizing the accuracy, speed, and reliability of the indicia decoder 120a. With reference to Figures 4 and 5, it should be understood that the actions performed herein by processor 118 may be performed according to instructions contained in a memory (e.g., memory 120), and more particularly, according to instructions contained as part of decoder algorithm 120a1.
[0056] The exemplary decoder parameter optimization sequence 400 may include two time instances 402a, 402b, during which the imaging device 104 makes decisions based on various inputs. At the first time instance 402a, the imaging device 104 may receive a first image data set as input and determine a set of maximum values for a first set of parameters, a set of minimum values for the first set of parameters, and parameter adjustments for a second set of parameters. Broadly speaking, the first image data set may include image data representing a target object including at least one indicia (e.g., a barcode, a quick response (QR) code), the first set of parameters may include decoder parameter values (e.g., quiet zone size, minimum number of rows, etc.) that directly correspond to the image data, the second set of parameters may include decoder parameter values (e.g., a decoding search strength level, a preferred barcode, etc.) that correspond to an overall detection / decoding strategy, and both the first set of parameters and the second set of parameters may be included in the set of decoder parameters 120a2. The first image data set may include one or more images representing the target object.
[0057] More specifically, at a first time instance 402a, the imaging device 104 may analyze the first image data set using the indicia decoder 120a to detect all indicia in the first image data set based on default settings of each decoder parameter in the set of decoder parameters 120a2. The indicia decoder 20a may then attempt to decode each detected indicia, and the indicia decoder 20a may generate decoding information for each successful decode. The decoding information may typically include data corresponding to each of the first set of parameters. As one example, the decoding information corresponding to a successful barcode decode may indicate, in part, that the minimum module size of the barcode is four pixels.
[0058] To detect the indicia, the processor 118 may execute instructions in a decoder algorithm 120a1 configured to analyze pixel data of the first image data set. Typically, the pixel data includes dots or squares of data within the image, with each dot or square representing a single pixel within the image. Each pixel may be at a specific location within the image. Additionally, each pixel may have a specific color (or lack of a specific color). The color of a pixel may be determined by a color format and associated channel data associated with the particular pixel. For example, a common color format includes a red-green-blue (RGB) format, having red, green, and blue channels. That is, in the RGB format, the data for a pixel is represented by three numerical RGB components (red, green, and blue), sometimes referred to as channel data, to manipulate the color of the pixel's area within the image.
[0059] In some implementations, the three RGB components may be represented as three 8-bit numbers per pixel. Three 8-bit bytes (one for each of RGB) are used to generate a 24-bit color. Each 8-bit RGB component can have 256 possible values ranging from 0 to 255 (i.e., in binary notation, an 8-bit byte can contain one of 256 numbers ranging from 0 to 255). This channel data (R, G, and B) can be assigned values from 0 to 255 and used to set the pixel's color. For example, three values such as (250, 165, 0) could represent (red = 250, green = 165, blue = 0) and indicate an orange pixel. As a further example, (red = 255, green = 255, blue = 0) represents fully saturated red and green (255 is the maximum brightness for 8 bits) and no blue (zero), resulting in a yellow color. As a further example, black has RGB values of (red=0, green=0, blue=0), and white has RGB values of (red=255, green=255, blue=255). Grays have the property of having equal or similar RGB values. Thus, (red=220, green=220, blue=220) is a light (near white) gray, and (red=40, green=40, blue=40) is a dark (near black) gray.
[0060] In this way, the combination of the three RGB values creates the final color of a particular pixel. In a 24-bit RGB color image using three bytes, there can be 256 shades of red, 256 shades of green, and 256 shades of blue. This provides 256 x 256 x 256, or 16.7 million, possible combinations or colors for a 24-bit RGB color image. Thus, a pixel's RGB data value indicates the pixel's configuration in terms of red, green, and blue. The three colors and intensity levels are combined at that image pixel, i.e., at that pixel's location on a display screen (e.g., of the user computing device 102), to illuminate the display screen at that location with that color. However, it should be understood that other bit sizes, including fewer or more bits, e.g., 10 bits, may be used to provide fewer or more overall colors and ranges.
[0061] Collectively, the various pixels arranged together in a grid pattern form a digital image. A single digital image can contain thousands or even millions of pixels. Images can be captured, generated, stored, and / or transmitted in several formats, such as JPEG, TIFF, PNG, and GIF. These formats use pixels to store and represent images.
[0062] Continuing with FIG. 4 , processor 118 may initially determine whether the target object represented in the first image dataset includes an indicia (e.g., a barcode, a QR code, etc.) and / or where the indicia is located on the target object based on pixel data (e.g., including their RGB values) included in the first image dataset. Processor 118 may detect the indicia in the first image dataset by analyzing the various RGB values of pixels associated with the indicia in the first image dataset, determining that the pixel represents the indicia, and identifying a region surrounding the indicia that indicates the boundary of all pixels associated with the indicia. For example, dark or low RGB values (e.g., pixels having values of R=25, G=28, B=31) may indicate a normally black area of a barcode. Lighter RGB values (e.g., pixels having R=210, G=234, and B=241) may indicate a normally white area of a barcode (e.g., the space between black barcode bars or the black square of a QR code).
[0063] Taken together, a consistent, continuous transition of a series of pixels within the analyzed region from dark or low RGB values to lighter RGB values (or vice versa) may indicate the presence of a barcode or other indicia represented by the series of pixels. For example, an image may feature the front surface of an object, which includes a barcode near the bottom of the image. Processor 118 may analyze one or more regions of the image until it analyzes each region containing pixels representing the object's barcode. Processor 118 may recognize that a pixel represents a barcode because the pixel may include a series of pixels with very dark RGB values contrasted with pixels with very bright RGB values. In this manner, processor 118 may detect indicia using pixel data (e.g., detailing one or more features of the object, such as the respective object's indicia).
[0064] When indicia are detected in the first image data set, decoder algorithm 120a1 may instruct processor 118 to decode the detected indicia and generate decoding information for each successfully decoded indicia. Decoder algorithm 120a1 may then instruct processor 118 to analyze all of the decoding information to determine minimum and maximum values for each parameter of the first set of parameters. To illustrate, assume that the first image data set includes three indicia, processor 118 successfully detects and decodes these indicia as a result of executing decoder algorithm 120a1, and processor 118 then analyzes three sets of decoding information associated with each indicia. In this example, each set of decoding information may include a different maximum module size, such that the first set of decoding information has a maximum module size of 20 pixels, the second set of decoding information has a maximum module size of 15 pixels, and the third set of decoding information has a maximum module size of 17 pixels. The processor 118 may analyze these maximum module sizes and determine that the maximum maximum module size is 20 pixels and the minimum maximum module size is 15 pixels.
[0065] Further, in some embodiments, processor 118 may determine minimum and maximum values for each parameter in the first set of parameters by adjusting the minimum and maximum values for each parameter in the first set of parameters by a threshold value for subsequent application of decoder algorithm 120a1. Referring to the previous example, processor 118 may adjust a minimum value of 15 pixels for a maximum module size by a threshold value of 2 pixels, resulting in an adjusted minimum value of 13 pixels for a maximum module size. Similarly, processor 118 may adjust a maximum value of 20 pixels for a maximum module size by a threshold value of 2 pixels, resulting in an adjusted maximum value of 22 pixels for a maximum module size. Of course, the threshold values may be any suitable values, and processor 118 may apply different threshold values to some / all of the parameters, and different threshold values may be applied to the minimum / maximum values of a single parameter. For example, the processor 118 may adjust the minimum value of the maximum module size by a threshold of 2 pixels, and the processor 118 may adjust the maximum value of the maximum module size by a threshold of 5 pixels to anticipate a maximum module size that may be larger than the maximum module size characterized in the first image dataset, instead of a significantly smaller maximum module size.
[0066] When processor 118 determines the maximum and minimum values of the first set of parameters, processor 118 may also determine adjustments to parameters in a second set of parameters. As described above, the second set of parameters may typically include decoder parameter values corresponding to an overall detection / decoding strategy (e.g., decoding search strength level, prioritized barcodes, etc.), such that adjustments to parameters from the second set of parameters can adjust the overall detection / decoding strategy implemented by processor 118 when analyzing image data. For example, a parameter adjustment to a parameter in the second set of parameters may include processor 118 adjusting the priority of indicia from one-dimensional (1D) indicia (e.g., barcodes) to two-dimensional (2D) indicia (e.g., QR codes). After this adjustment, processor 118 analyzing any subsequent image data may prioritize detection and / or decoding of 2D indicia over 1D indicia.
[0067] At the second time instance 402b, the imaging device 104 may receive as input the set of maximum values for the first set of parameters, the set of minimum values for the first set of parameters, parameter adjustments for the second set of parameters, and the second image dataset, and may determine parameter value settings for the parameters in the second set of parameters. Typically, the second image dataset may include the same object as the object characterized in the first image dataset. In one embodiment, the second image dataset is the first image dataset, and the one or more indicia represented in the second image dataset are the one or more indicia represented in the first image dataset.
[0068] In particular, processor 118 may analyze the second image data set similarly to the first image data set, but may execute decoder algorithm 120a1 according to decoder parameters 120a2, with parameters in the second parameter set adjusted according to the parameter adjustment. For example, if processor 118 was able to analyze the first image data set at a fast decoding search intensity level, processor 118 may analyze the second image data set at a medium decoding search intensity level.
[0069] In either case, the processor 118 may detect a second number of indicia from one or more indicia represented in the second image data set, where the first number of indicia and the second number of indicia detected in the first image data set are different. The processor 118 may then decode the second number of indicia and compare the second number of indicia with the number of indicia detected / decoded from the first image data set to determine appropriate values for parameters of the second set of parameters. That is, as a result of the comparison, the processor 118 may determine that the parameters should be set to a first value corresponding to the analysis performed during the first time instance 402a or a second value corresponding to the analysis performed during the second time instance 402b. The processor 118 may evaluate the number of decodes at both time instances 402a, 402b, the time taken to perform the decodes at both time instances 402a, 402b, and / or any other suitable metric.
[0070] In some cases, the processor 118 may compare the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset. The processor 118 may also compare the first decode time for each decoded indicia from the first image dataset with the second decode time for the corresponding decoded indicia from the second image dataset, which may be identical to the decoded indicia. The processor 118 may then determine that the first decode time for the first decoded indicia from the first image dataset is less than, greater than, or equal to the second decode time for the corresponding decoded indicia from the second image dataset. Accordingly, the processor 118 may set the parameter to the first value during subsequent applications of the decoder algorithm. Alternatively, the processor 118 may determine that (i) the number of first decoded indicia is less than the number of second decoded indicia, and (ii) the first decoding time for each decoded indicia from the first image data set is less than the second decoding time for the corresponding decoded indicia from the second image data set. In these alternative examples, the processor 118 may set the parameter to the second value during subsequent application of the decoder algorithm.
[0071] For example, the processor 118 may detect and decode four barcodes using a first value of the parameter at a first time instance 402a, and the processor 118 may detect and decode five barcodes using a second value of the parameter at a second time instance 402b. Furthermore, the processor 118 may take an equal amount of time to perform the decoding at both time instances 402a, 402b. In this example, the processor 118 may determine that the second value of the parameter is the optimal value of the two values because the second value resulted in a greater number of decodes.
[0072] In another example, the processor 118 may detect five barcodes and decode four barcodes using a first value of the parameter at a first time instance 402a, and the processor 118 may detect six barcodes and decode three barcodes using a second value of the parameter at a second time instance 402b. Furthermore, the processor 118 may take an equal amount of time to perform the decoding at both time instances 402a, 402b. In this example, the processor 118 may determine that the first value of the parameter is the optimal value of the two values because the first value resulted in a greater number of decodes, even though the second value resulted in a greater number of detections. Of course, in some cases, the processor 118 may determine that the first value is the optimal value, but in general, the decoder algorithm 120a1 may include instructions configured to prioritize indicia decoding over any other metric (e.g., decoding speed, indicia detection, etc.).
[0073] In yet another example, processor 118 may detect and decode four barcodes using a first value of the parameter at a first time instance 402a, and processor 118 may detect and decode four barcodes using a second value of the parameter at a second time instance 402b. Furthermore, processor 118 may have taken less time to perform the decoding at the first time instance 402a than at the second time instance 402b. In this example, processor 118 may determine that the first value of the parameter is the optimal value of the two values because the first value resulted in the same number of decodes as the second value and the first value caused processor 118 to decode four indicia faster than the second value.
[0074] In yet another example, processor 118 may detect and decode four barcodes using a first value of the parameter at a first time instance 402a, and processor 118 may detect and decode five barcodes using a second value of the parameter at a second time instance 402b. Furthermore, processor 118 may have taken less time to perform the decoding at the first time instance 402a than at the second time instance 402b. In this example, processor 118 may determine that the second value of the parameter is the optimal value of the two values because the second value resulted in a greater number of decodes than the first value. The first value could have resulted in processor 118 decoding each of the four indicia faster (per indicia) than the rate at which processor 118 decoded each of the five indicia as a result of the second value. However, as previously mentioned, decoder algorithm 120a1 may include instructions configured to prioritize indicia decoding over any other metric, such as per-indicia decoding speed.
[0075] Optionally, imaging device 104 may also determine subsequent parameter adjustments for parameters of the second set of parameters during the second time instance 402b. Imaging device 104 may also capture subsequent image data sets and determine different parameter value settings based on the subsequent image data sets and the subsequent parameter adjustments. That is, in some cases, processor 118 may adjust a parameter from the second value to a third value, apply decoder algorithm 120a1 to a third image data set of the target object, and detect and decode one or more indicia represented in the third image data set based on the minimum and maximum values for each parameter of the first set of parameters and the third value of the parameter. The processor 118 may also set the parameter to one of (i) a first value, (ii) a second value, or (iii) a third value during subsequent application of the decoder algorithm 120a1 based on a comparison of the number of first decoded indicia from the first image data set with the number of second decoded indicia from the second image data set and with the number of third decoded indicia from the third image data set.
[0076] In another example, the processor 118 may designate a second image dataset as the current image dataset, designate a parameter as the current parameter, and automatically set the current parameter to the first value or the second value. The processor 118 may also adjust a subsequent parameter of the second set of parameters from the first value to the second value and cause the imaging device to capture a subsequent image of the target object. The subsequent image may include a subsequent image dataset representing the target object and its associated indicia. The processor 118 may also apply the decoder algorithm 120a1 to the subsequent image dataset and detect and decode one or more indicia represented in the subsequent image dataset based on the second value of the subsequent parameter. The processor 118 may set the subsequent parameter to one of the first value or the second value during the subsequent application of the decoder algorithm 120a1, and the processor 118 may also designate the subsequent image dataset as the current image dataset and designate the subsequent parameter as the current parameter. The processor 118 may also perform these steps iteratively until each parameter in the second set of parameters has been set to either the first value or the second value and applied to at least one image dataset of the target object as part of a decoder algorithm. In other words, the processor 118 may perform the above steps iteratively until each parameter in the second set of parameters has been evaluated for possible adjustment from a first value to a second value.
[0077] As an example, processor 118 may analyze a second image data set and determine that the decoding search intensity level has an optimal setting of medium (e.g., a second value) instead of fast (e.g., a first value). In this example, processor 118 may cause imaging assembly 126 to capture a subsequent image data set, and processor 118 may apply subsequent parameter adjustments to the decoding search intensity level parameter and analyze the performance of the exhaustive (e.g., third value) decoding search intensity level for the subsequent image data set. Processor 118 may determine that the performance of the exhaustive decoding search intensity level was worse than the medium decoding search intensity level (e.g., less indicia decoding, slower indicia decoding, etc.), and as a result, processor 118 may maintain the decoding search intensity level parameter at the second value (medium). Alternatively, processor 118 may determine that performance at the exhaustive decoding search intensity level was better than at the medium decoding search intensity level (e.g., more indicia decoding, faster indicia decoding, etc.), and as a result, processor 118 may change the decoding search intensity level parameter to a third value (exhaustive).
[0078] Of course, processor 118 may repeat this process of capturing subsequent image data sets and subsequent parameter adjustments as many times as necessary to determine parameters that enable indicia decoder 120a to detect and decode as many indicia as possible for a particular image data set. For example, if a first parameter of the second set of parameters has three possible values (e.g., fast, medium, exhaustive) and a second parameter of the second set of parameters has six possible values, processor 118 may perform this iterative process of capturing image data sets and adjusting parameters at least three times for the first parameter (e.g., once for each possible value) and six times for the second parameter.
[0079] 5 is a flowchart illustrating a method 500 for optimizing one or more decoder parameters (e.g., decoder parameter 120a2) of an indicia decoder (e.g., indicia decoder 120a) according to an embodiment described herein. Method 500 illustrates various methods for optimizing one or more decoder parameters of an indicia decoder. Generally speaking, however, method 500 for optimizing one or more decoder parameters of an indicia decoder includes applying a decoder algorithm (e.g., decoder algorithm 120a1) to a first image data set, determining minimum and maximum values for each parameter of a first set of parameters, adjusting parameters of a second set of parameters, applying the decoder algorithm to the second image data set, and setting the parameters to first or second values. It should be understood that the imaging device 104, the user computing device 102, these components (e.g., decoder algorithm 102a1), and / or other components described herein, as well as combinations thereof, may be configured to perform the various actions and functions of method 500 described herein.
[0080] The method 500 may include applying a decoder algorithm to a first image dataset of the target object to detect and decode one or more indicia represented in the first image dataset (block 502). The decoder algorithm 120a1 may detect and decode the one or more indicia utilizing a first set of parameters and a second set of parameters. In one embodiment, the first set of parameters includes one or more of: (i) a contrast threshold, (ii) a quiet zone size, (iii) a maximum rectangle ratio, (iv) a minimum module size, (v) a maximum module size, (vi) a minimum number of rows, (vii) a maximum number of rows, (viii) a minimum number of columns, or (ix) a maximum number of columns.
[0081] For example, the contrast threshold may typically correspond to a black / white (or other suitable color / value scheme) contrast mapping that defines the presence of a barcode or other indicia in the image dataset. The quiet zone size may typically correspond to an area surrounding a barcode or other indicia (e.g., white space surrounding a barcode) and may be expressed as the minimum number of pixels in the image dataset between the indicia and a non-white area in the image dataset. The maximum rectangle ratio may represent a measurement based on the height and width of an area in the image dataset that corresponds to a known height / width ratio of the indicia. The minimum / maximum module size may correspond to the minimum / maximum dot or other area of the indicia in the image dataset, such as the pixels per meter (PPM) of the narrowest / widest bar of a barcode in the image dataset. The minimum / maximum number of rows / columns may correspond to the minimum / maximum number of rows / columns allowed to be part of the indicia in the image dataset. Of course, the first set of parameters may include more or fewer parameters, such as the option to enable / disable detection of rectangular indicia based on whether the indicia in the image dataset are known to be rectangular (e.g., barcodes) or square (e.g., QR codes).
[0082] In some embodiments, the second set of parameters may include one or more of: (i) a decoding search intensity level, (ii) a detection method, or (iii) a preferred barcode. For example, the decoding search intensity level may generally indicate a decoding method implemented by the processor 118, and the decoding strategy may be set to fast, medium, or exhaustive. Each setting may correspond to the length of time the processor 118 searches for indicia in the image dataset, the number of indicia the processor 118 can detect in the image dataset, and / or any other suitable indicator. The detection method may generally correspond to one or more methods implemented by the processor 118 to detect indicia in the image dataset, such as a uniform detection method, a quiet zone detection method, and / or a finder pattern detection method. The preferred barcode, as described above, may generally correspond to a prioritization of one or more particular indicia types when detecting / decoding indicia in the image dataset. For example, the prioritized barcode may include one-dimensional (1D) indicia (e.g., barcode) values and two-dimensional (2D) indicia (e.g., QR code) values. If processor 118 determines that 2D indicia should be prioritized, the prioritized barcode may be the 2D indicia value so that processor 118 can analyze any subsequent image data by prioritizing detection and / or decoding of 2D indicia over 1D indicia.
[0083] Method 500 may include determining minimum and maximum values for each parameter of the first set of parameters based on the detection and decoding of one or more indicia represented in the first image data set (block 504). In an embodiment, method 500 may further include adjusting the minimum and maximum values for each parameter of the first set of parameters by a threshold for a subsequent application of the decoder algorithm, and setting each parameter of the first set of parameters to a value between the minimum and maximum values during the subsequent application of the decoder algorithm. Method 500 may also include adjusting a parameter of the second set of parameters from a first value to a second value (block 506). The first value may, for example, be set for the parameter during application of the decoder algorithm to the first image data set.
[0084] The method 500 may include applying a decoder algorithm to a second image dataset of the target object to detect and decode one or more indicia represented in the second image dataset based on the minimum and maximum values for each parameter of the first set of parameters and the second values of the parameters (block 508). In some embodiments, the second image dataset is the first image dataset, and the one or more indicia represented in the second image dataset are one or more indicia represented in the first image dataset.
[0085] In some embodiments, the method 500 may further include detecting a first number of indicia from the one or more indicia represented in the first image data set and detecting a second number of indicia from the one or more indicia represented in the second image data set. In these embodiments, the number of first indicia and the number of second indicia may be different.
[0086] The method 500 may include setting a parameter to one of a first value or a second value during subsequent application of the decoder algorithm based on a comparison of the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset (block 510). In some embodiments, the processor 118 may compare the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset. In these embodiments, the processor 118 may compare the first decode time for each decoded indicia from the first image dataset with the second decode time for the corresponding decoded indicia from the second image dataset. The corresponding decoded indicia may be identical to the decoded indicia.
[0087] Further, in the previous embodiment, processor 118 may determine that a first decode time of a first decoded indicia from a first image data set is less than a second decode time of a corresponding decoded indicia from a second image data set. In this case, processor 118 may set the parameter to a first value during a subsequent application of the decoder algorithm. Alternatively, processor 118 may determine that (i) the number of first decoded indicia is less than the number of second decoded indicia, and (ii) the first decode time per decoded indicia from the first image data set is less than the second decode time of the corresponding decoded indicia from the second image data set. In such a case, processor 118 may set the parameter to a second value during a subsequent application of the decoder algorithm.
[0088] In certain embodiments, method 500 may further include adjusting the parameter from the second value to a third value. In these embodiments, method 500 may include applying a decoder algorithm to a third image dataset of the target object and detecting and decoding one or more indicia represented in the third image dataset based on the minimum and maximum values for each parameter of the first set of parameters and the third value of the parameter. Furthermore, method 500 may further include setting the parameter to one of (i) the first value, (ii) the second value, or (iii) the third value during subsequent application of the decoder algorithm based on a comparison of the number of first decoded indicia from the first image dataset with the number of second decoded indicia from the second image dataset and with the number of third decoded indicia from the third image dataset.
[0089] In some embodiments, method 500 may further include designating the second image dataset as a current image dataset and designating the parameters as current parameters. In these embodiments, method 500 may further include automatically setting the current parameters to the first value or the second value and adjusting subsequent parameters of the second parameter set from the first value to the second value. Additionally, method 500 may include capturing a subsequent image of the object by an imaging device (e.g., imaging assembly 126), where the subsequent image may comprise the subsequent image dataset. Method 500 may further include applying a decoder algorithm to the subsequent image dataset to detect and decode one or more indicia represented in the subsequent image dataset based on the second value of the subsequent parameter, and setting the subsequent parameter to one of the first value or the second value during the subsequent application of the decoder algorithm. The method 500 may further include designating the subsequent image dataset as a current image dataset and designating the subsequent parameters as current parameters, and iteratively performing each of the foregoing actions until each parameter of the second set of parameters is set to either the first value or the second value and applied to at least one image dataset of the target object as part of a decoder algorithm.
[0090] Furthermore, it should be understood that each of the actions described in method 500 may be performed in any order, number of times, or in any other combination suitable for optimizing one or more decoder parameters of an indicia decoder. For example, some or all of the blocks of method 500 may be performed once, multiple times, in their entirety, or not at all.
[0091] (Additional Considerations) The above description refers to block diagrams in the accompanying drawings. Alternative implementations of the examples represented by the block diagrams include one or more additional or alternative elements, processes, and / or devices. Additionally or alternatively, one or more of the illustrative blocks of the diagrams may be combined, divided, rearranged, or omitted. The components represented by the diagram blocks are implemented by hardware, software, firmware, and / or any combination of hardware, software, and / or firmware. In some examples, at least one of the components represented by the blocks is implemented by a logic circuit. As used herein, the term “logic circuit” is expressly defined as a physical device including at least one hardware component configured to control one or more machines and / or to perform the operations of one or more machines (e.g., by operating according to a predefined configuration and / or by executing stored machine-readable instructions). Examples of logic circuits include one or more processors, one or more coprocessors, one or more microprocessors, one or more controllers, one or more digital signal processors (DSPs), one or more application-specific integrated circuits (ASICs), one or more field programmable gate arrays (FPGAs), one or more microcontroller units (MCUs), one or more hardware accelerators, one or more special-purpose computer chips, and one or more system-on-a-chip (SoC) devices. Some example logic circuits, such as an ASIC or FPGA, are hardware specifically configured to perform operations (e.g., one or more of the operations described herein and represented by the flowcharts of this disclosure, if present).Some example logic circuits are hardware that executes machine-readable instructions to perform operations (e.g., one or more of the operations described herein and represented by flowcharts of the present disclosure, if present). Some example logic circuits include a combination of specially configured hardware and hardware that executes machine-readable instructions. The above description refers to flowcharts that may accompany the present specification to illustrate various operations described herein and the flow of those operations. Any such flowcharts represent example methods disclosed herein. In some examples, methods represented by flowcharts implement apparatuses represented by block diagrams. Alternative implementations of example methods disclosed herein may include additional or alternative operations. Furthermore, operations of alternative implementations of methods disclosed herein may be combined, divided, rearranged, or omitted. In some examples, the operations described herein are implemented by machine-readable instructions (e.g., software and / or firmware) stored on a medium (e.g., a tangible machine-readable medium) for execution by one or more logic circuits (e.g., processors). In some examples, the operations described herein are performed by one or more configurations of one or more specially designed logic circuitry (e.g., ASICs). In some examples, the operations described herein are performed by a combination of specially designed logic circuitry and machine-readable instructions stored on a medium (e.g., a tangible machine-readable medium) for execution by the logic circuitry.
[0092] As used herein, each of the terms “tangible machine-readable medium,” “non-transitory machine-readable medium,” and “machine-readable storage device” is expressly defined as a storage medium (e.g., a hard disk drive platter, a digital versatile disk, a compact disk, a flash memory, a read-only memory, a random access memory, etc.) on which machine-readable instructions (e.g., program code, e.g., in the form of software and / or firmware) are stored for any suitable period of time (e.g., permanently, for a long period (e.g., while a program associated with the machine-readable instructions is executing), and / or for a short period (e.g., while the machine-readable instructions are cached and / or during a buffering process)). Furthermore, as used herein, each of the terms “tangible machine-readable medium,” “non-transitory machine-readable medium,” and “machine-readable storage device” is expressly defined to exclude propagating signals. That is, when used in any claim of this patent, none of the terms “tangible machine-readable medium,” “non-transitory machine-readable medium,” and “machine-readable storage device” can be read as being embodied by a propagating signal.
[0093] In the foregoing specification, specific embodiments have been described. However, those skilled in the art will understand that various modifications and changes can be made without departing from the scope of the present invention as set forth in the claims below. Accordingly, the specification and drawings should be regarded as illustrative rather than restrictive, and all such modifications are intended to be included within the scope of the present teachings. Furthermore, the described embodiments / examples / implementations should not be construed as mutually exclusive, but instead should be understood as potentially combinable where such combination is in any way permissible. In other words, any feature disclosed in any of the foregoing embodiments / examples / implementations may be included in any of the other foregoing embodiments / examples / implementations.
[0094] Benefits, advantages, solutions to problems, and any elements that may cause or make more pronounced any benefit, advantage, or solution should not be construed as any or all of the key, essential, or essential features or elements of the claims. The claimed invention is defined solely by the appended claims, including any amendments made during the pendency of this application, and all equivalents of the claims as issued.
[0095] Furthermore, terms indicating relationships, such as first and second, upper and lower, etc., may be used in this document merely to distinguish one entity or action from another, without necessarily requiring or implying such an actual relationship or order between the entities or actions. The terms "comprise," "comprising," "having," "having," "including," "including," "containing," "containing," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises, has, includes, or contains a list of elements may include not only those elements, but also other elements not expressly listed or inherent to such process, method, article, or apparatus. The element (-) in "comprising...a," "having...a," "including...a," or "containing...a" does not, without further constraints, preclude the presence of additional identical elements in the process, method, article, or apparatus that comprises, has, includes, or contains this element. The terms "a" and "an" are defined herein as one or more, unless expressly stated otherwise. The terms "substantially," "essentially," "approximately," "about," or any other variation thereof, as understood by one of ordinary skill in the art, are defined as close, which in one non-limiting embodiment is defined as within 10%, in another embodiment within 5%, in another embodiment within 1%, and in another embodiment within 0.5%. The term "coupled," as used herein, is defined as connected, but not necessarily directly, and not necessarily mechanically. A device or structure "configured" in a certain way is configured in at least that way, but may also be configured in ways not listed.
[0096] An Abstract of the Disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. This Abstract is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. Additionally, in the foregoing Detailed Description, it can be understood that various features have been grouped together in various embodiments to streamline the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may lie in less than all features of a single disclosed embodiment. Accordingly, the following claims are hereby incorporated into this Detailed Description, with each claim standing on its own as separately claimed subject matter.
Claims
1. 1. A method for optimizing one or more decoder parameters of an indicia decoder, comprising: applying a decoder algorithm to a first image dataset of a target object to detect and decode one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes the one or more indicia utilizing a first set of parameters and a second set of parameters; determining minimum and maximum values for each parameter of the first set of parameters based on the detecting and decoding of the one or more indicia represented in the first image data set; adjusting parameters of the second set of parameters from first values to second values, the first values being set to the parameters during application of the decoder algorithm to the first image dataset; applying the decoder algorithm to a second image data set of the target object to detect and decode one or more indicia represented in the second image data set based on the minimum and maximum values for each parameter of the first set of parameters and the second values for the parameters of the second set of parameters; and setting the parameters of the second set of parameters to one of the first value or the second value during subsequent application of the decoder algorithm based on a comparison of a first number of decoded indicia from the first image data set with a second number of decoded indicia from the second image data set.
2. the first set of parameters includes one or more of: (i) a contrast threshold, (ii) a quiet zone size, (iii) a maximum rectangular ratio, (iv) a minimum module size, (v) a maximum module size, (vi) a minimum number of rows, (vii) a maximum number of rows, (viii) a minimum number of columns, or (ix) a maximum number of columns; The method of claim 1 , wherein the second set of parameters includes one or more of: (i) a decoding search intensity level; (ii) a detection method; or (iii) a preferred barcode.
3. setting the parameters of the second set of parameters to the first value or the second value during subsequent applications of the decoder algorithm; comparing the number of the first decoded indicia from the first image data set with the number of the second decoded indicia from the second image data set; 2. The method of claim 1, further comprising: comparing a first decode time for each decoded indicia from the first image data set with a second decode time for a corresponding decoded indicia from the second image data set, wherein the corresponding decoded indicia are identical to the decoded indicia.
4. determining that the first decode time of a first decoded indicia from the first image data set is less than the second decode time of the corresponding decoded indicia from the second image data set; 4. The method of claim 3, further comprising: during subsequent applications of the decoder algorithm, setting the parameters of the second set of parameters to the first values.
5. (i) determining that the number of the first decoded indicia is less than the number of the second decoded indicia, and (ii) that the first decoding time for each decoded indicia from the first image data set is less than the second decoding time for the corresponding decoded indicia from the second image data set; 4. The method of claim 3, further comprising: setting the parameters of the second set of parameters to second values during subsequent applications of the decoder algorithm.
6. Determining the minimum and maximum values for each parameter of the first set of parameters comprises: adjusting the minimum and maximum values for each parameter of the first set of parameters by a threshold for subsequent applications of the decoder algorithm; 2. The method of claim 1, further comprising: during subsequent applications of the decoder algorithm, setting each parameter of the first set of parameters to a value between the minimum value and the maximum value.
7. 2. The method of claim 1 , wherein the second image dataset is the first image dataset, and the one or more indicia represented in the second image dataset are the one or more indicia represented in the first image dataset.
8. Detecting a number of first indicia from the one or more indicia represented in the first image data set; 2. The method of claim 1, further comprising: detecting a second number of indicia from the one or more indicia represented in the second image data set, wherein the first number of indicia and the second number of indicia are different.
9. adjusting the parameters of the second set of parameters from the second values to third values; applying the decoder algorithm to a third image data set of the target object to detect and decode one or more indicia represented in the third image data set based on the minimum and maximum values for each parameter of the first set of parameters and the third values for the parameters of the second set of parameters; 2. The method of claim 1, further comprising: setting the parameters of the second set of parameters to one of (i) the first value, (ii) the second value, or (iii) the third value during the subsequent application of the decoder algorithm based on a comparison of a first number of decoded indicia from the first image dataset with a second number of decoded indicia from the second image dataset and with a third number of decoded indicia from the third image dataset.
10. (a) designating the second image dataset as a current image dataset and designating the parameters of the second parameter set as current parameters; (b) automatically setting the current parameter to the first value or the second value; (c) adjusting a subsequent parameter of the second set of parameters from a first value to a second value; (d) capturing, with an imaging device, a subsequent image of the target object, the subsequent image comprising a subsequent image data set; (e) applying the decoder algorithm to the subsequent image data set to detect and decode one or more indicia represented in the subsequent image data set based on the second value of the subsequent parameter; (f) setting the subsequent parameter to one of the first value or the second value during a subsequent application of the decoder algorithm; (g) designating the subsequent image dataset as the current image dataset and the subsequent parameters as the current parameters; and (h) iteratively performing steps (c) through (h) until each parameter in the second set of parameters is set to either the first value or the second value and applied to at least one image dataset of the target object as part of the decoder algorithm.
11. 1. A computer system for optimizing one or more decoder parameters of an indicia decoder, comprising: one or more processors; a non-transitory computer-readable memory coupled to the imaging device and the one or more processors, the memory storing instructions that, when executed by the one or more processors, cause the one or more processors to: applying a decoder algorithm to a first image dataset of a target object to detect and decode one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes the one or more indicia utilizing a first set of parameters and a second set of parameters; determining minimum and maximum values for each parameter of the first set of parameters based on the detecting and decoding of the one or more indicia represented in the first image data set; adjusting a parameter of the second set of parameters from a first value to a second value, the first value being set for the parameter of the second set of parameters during application of the decoder algorithm to the first image dataset; applying the decoder algorithm to a second image data set of the target object to detect and decode one or more indicia represented in the second image data set based on the minimum and maximum values for each parameter of the first set of parameters and the second values for the parameters of the second set of parameters; and setting the parameters of the second set of parameters to one of the first value or the second value during subsequent application of the decoder algorithm based on a comparison of a first number of decoded indicia from the first image data set with a second number of decoded indicia from the second image data set.
12. the first set of parameters includes one or more of: (i) a contrast threshold, (ii) a quiet zone size, (iii) a maximum rectangular ratio, (iv) a minimum module size, (v) a maximum module size, (vi) a minimum number of rows, (vii) a maximum number of rows, (viii) a minimum number of columns, or (ix) a maximum number of columns; 12. The computer system of claim 11, wherein the second set of parameters includes one or more of: (i) a decoding search intensity level; (ii) a detection method; or (iii) a preferred barcode.
13. The instructions, when executed by the one or more processors, cause the one or more processors to: comparing the number of the first decoded indicia from the first image data set with the number of the second decoded indicia from the second image data set; 12. The computer system of claim 11, wherein during subsequent application of the decoder algorithm, the parameters of the second set of parameters are set to the first value or the second value by comparing a first decode time for each decoded indicia from the first image data set with a second decode time for a corresponding decoded indicia from the second image data set, and the corresponding decoded indicia is identical to the decoded indicia.
14. The instructions, when executed by the one or more processors, cause the one or more processors to: determining that the first decode time of a first decoded indicia from the first image data set is less than the second decode time of the corresponding decoded indicia from the second image data set; and setting the parameters of the second set of parameters to the first values during subsequent applications of the decoder algorithm.
15. The instructions, when executed by the one or more processors, cause the one or more processors to: (i) determining that the number of the first decoded indicia is less than the number of the second decoded indicia, and (ii) that the first decoding time for each decoded indicia from the first image data set is less than the second decoding time for the corresponding decoded indicia from the second image data set; and setting the parameters of the second set of parameters to the second values during subsequent applications of the decoder algorithm.
16. The instructions, when executed by the one or more processors, cause the one or more processors to: adjusting the minimum and maximum values for each parameter of the first set of parameters by a threshold for subsequent applications of the decoder algorithm; 12. The computer system of claim 11, wherein during subsequent applications of the decoder algorithm, the minimum and maximum values for each parameter of the first set of parameters are determined by setting each parameter of the first set of parameters to a value between the minimum and maximum values.
17. 12. The computer system of claim 11, wherein the second image dataset is the first image dataset and the one or more indicia represented in the second image dataset are the one or more indicia represented in the first image dataset.
18. The instructions, when executed by the one or more processors, cause the one or more processors to: Detecting a number of first indicia from the one or more indicia represented in the first image data set; and detecting a second number of indicia from the one or more indicia represented in the second image data set, wherein the first number of indicia and the second number of indicia are different.
19. The instructions, when executed by the one or more processors, cause the one or more processors to: (a) designating the second image dataset as a current image dataset and designating the parameters of the second parameter set as current parameters; (b) automatically setting the current parameter to the first value or the second value; (c) adjusting a subsequent parameter of the second set of parameters from a first value to a second value; (d) causing an imaging device to capture a subsequent image of the target object, the subsequent image comprising a subsequent image data set; (e) applying the decoder algorithm to the subsequent image data set to detect and decode one or more indicia represented in the subsequent image data set based on the second value of the subsequent parameter; (f) setting the subsequent parameter to one of the first value or the second value during a subsequent application of the decoder algorithm; (g) designating the subsequent image dataset as the current image dataset and the subsequent parameters as the current parameters; and (h) repeatedly performing steps (c) through (h) until each parameter in the second set of parameters is set to either the first value or the second value and applied to at least one image dataset of the target object as part of the decoder algorithm.
20. 1. A tangible, machine-readable medium containing instructions for optimizing one or more decoder parameters of an indicia decoder, the instructions, when executed, causing a machine to: applying a decoder algorithm to a first image dataset of a target object to detect and decode one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes the one or more indicia utilizing a first set of parameters and a second set of parameters; determining minimum and maximum values for each parameter of the first set of parameters based on the detecting and decoding of the one or more indicia represented in the first image data set; adjusting a parameter of the second set of parameters from a first value to a second value, the first value being set for the parameter of the second set of parameters during application of the decoder algorithm to the first image dataset; applying the decoder algorithm to a second image data set of the target object to detect and decode one or more indicia represented in the second image data set based on the minimum and maximum values for each parameter of the first set of parameters and the second values for the parameters of the second set of parameters; and setting the parameters of the second set of parameters to one of the first value or the second value during subsequent application of the decoder algorithm based on a comparison of a first number of decoded indicia from the first image dataset with a second number of decoded indicia from the second image dataset.
Citation Information
Patent Citations
Indicia reading terminals and methods for decoding decodable indicia employing light field imaging
US20140239071A1
Coded image capture and decoding system
US20190065799A1
System and methods for situational adaptive image capture improvements for barcode reading
US20210110123A1
Adaptive bar code scanner
US6478225B1
Methods and apparatus for dynamic adjustment of bar code reader parameters
US6796503B1