System and method for optimizing decoder parameters of an Indicia decoder
Patent Information
- Application Number
- JP2025517423
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-09-22
- Filing Date
- 2023-07-21
- Publication Date
- 2026-07-13
- Estimated Expiration
- 2043-07-21
AI Technical Summary
Conventional indicia decoders require manual adjustment of decoder parameters, which is time-consuming, involves guesswork, and often results in suboptimal configurations, reducing decoding accuracy, speed, and reliability in machine vision systems.
A system and method for optimizing decoder parameters using a decoder algorithm that automatically adjusts parameters based on image datasets, comparing decoding results to determine optimal settings for improved efficiency.
Automated parameter optimization enhances decoding accuracy, speed, and reliability, eliminating the need for manual configuration and ensuring optimal system performance.
Smart Images

Figure 0007888864000001 
Figure 0007888864000002 
Figure 0007888864000003
Abstract
Description
Background Art
[0003] , ,
[0001] Since the introduction of machine vision systems into the industrial environment, developers have tried to maximize the efficiency as a result of using these systems. In the case of machine vision systems tasked with detecting and decoding indicia, two of the most important metrics affecting efficiency are the decoding speed and the reliability of the decoding. Both the decoding speed and the reliability of the decoding of a machine vision system depend on the imaging parameters (e.g., exposure length) and decoder parameters (e.g., characteristics of the indicia) used to capture, detect, and decode the indicia.
[0002] However, since standard indicia decoders include a wide variety of decoder parameters, adjusting these parameters to produce an optimal balance between decoding speed and decoding reliability is a significant challenge. Conventionally, users have been forced to manually enter each decoder parameter in a guess-and-check manner until an appropriate combination is found. This method typically involves the user repeatedly applying the indicia decoder to the captured image data until the user determines that at least one configuration of the decoder parameters yields appropriate results, and manually recording the results of each iteration. This is very inconvenient for the user, and since it is very unlikely that the user has tested all possible combinations of decoder parameters, there is no guarantee that the selected configuration is truly appropriate, let alone the best configuration, which poses a significant problem. An inappropriately configured indicia decoder can cause extremely poor performance of the machine vision system, and as a result, the efficiency of the entire system may be significantly reduced.
Summary of the Invention
[0004] In embodiments, the present invention is a method for optimizing one or more decoder parameters of an indicia decoder. The method involves applying a decoder algorithm to a first image dataset of a target object, detecting and decoding one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes one or more indicia using a first set of parameters and a second set of parameters, detecting and decoding, 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 dataset, and adjusting the parameters of the second set of parameters from first values to second values, wherein the first value is the decoder algorithm to the first image dataset The process includes adjusting the parameters of a second set of parameters during the application of the algorithm, applying the decoder algorithm to a second image dataset of the target object to detect and decode one or more indicias 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 second decoded indicias from the second image dataset with the number of first decoded indicias from the first 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 rectangle 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 parameters of a second set of parameters to a first or second value during the subsequent application of the decoder algorithm further includes comparing the number of first decoded indicia from a first image dataset with the number of second decoded indicia from a second image dataset, and comparing the first decoding time for each decoded indicia from the first image dataset with the second decoding time for the corresponding decoded indicia from the second image dataset, where the corresponding decoded indicia is identical to the decoded indicia. Furthermore, in this variation, the method may further include determining that the first decoding time for the first decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset, and setting the parameters of a second set of parameters to a first value during the subsequent application of the decoder algorithm. Furthermore, in this variation, the method may include determining that (i) the number of first decoded indicias is less than the number of second decoded indicias, and (ii) the first decoding time for each decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset, and setting the parameters of the second set of parameters to the second values during the subsequent application of the decoder algorithm.
[0007] In yet another variation of this embodiment, determining the parameter-specific minimum and maximum values of the first set of parameters further includes adjusting the parameter-specific minimum and maximum values of the first set of parameters by a threshold for 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 subsequent application of the decoder algorithm.
[0008] In yet another variation of this embodiment, the second image dataset is the first image dataset, and one or more indicias represented in the second image dataset are one or more indicias represented in the first image dataset.
[0009] In yet another variation of this embodiment, the method further includes detecting the number of first indicias from one or more indicias represented in a first image dataset and detecting the number of second indicias from one or more indicias represented in a second image dataset, wherein the number of first indicias and the number of second indicias are different.
[0010] In yet another variation of this embodiment, the method further includes adjusting the parameters of a second set of parameters from a second value to a third value, applying a decoder algorithm to a third image dataset of the object in question to detect and decode one or more indicia represented in the third image dataset based on the minimum and maximum values of each parameter in the first set of parameters, as well as the third values of the parameters in the second set of parameters, and during subsequent application of the decoder algorithm, setting the parameters of the second set of parameters to one of (i) a first value, (ii) a second value, or (iii) a third value, based on a comparison of the number of second decoded indicia from the second image dataset with the number of third decoded indicia from the third image dataset and the number of first decoded indicia from the first image dataset.
[0011] In yet another variation of this embodiment, the method includes (a) designating a second image dataset as the current image dataset and the parameters of a second set of parameters as the current parameters, (b) automatically setting the current parameters to a first or second value, (c) adjusting the subsequent parameters of the second set of parameters from a first value to a second value, (d) acquiring subsequent images of the target object by an imaging device, wherein the subsequent images include a subsequent image dataset, and (e) applying a decoder algorithm to the subsequent image dataset and based on the second value of the subsequent parameters, The method further includes (f) detecting and decoding one or more indicias represented in a subsequent image dataset, (g) setting the subsequent parameters to one of a first or second value during the subsequent application of the decoder algorithm, (h) designating the subsequent image dataset as the current image dataset and the subsequent parameters as the current parameters, and (h) iteratively performing steps (c) to (h) until each parameter of the second set of parameters is set to either the first or second value and applied as part of the decoder algorithm to at least one image dataset of the object of interest.
[0012] In another embodiment, the present 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-temporary computer-readable memory coupled to an imaging device and one or more processors. The memory stores instructions, which, when executed by one or more processors, instruct one or more processors to apply a decoder algorithm to a first image dataset of an object, to detect and decode one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes one or more indicia using a first set of parameters and a second set of parameters, to determine 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 dataset, and to adjust the parameters of the second set of parameters from first values to second values. The first value is adjusted so that it is set to a parameter of the second set of parameters while the decoder algorithm is being applied to the first image dataset; the decoder algorithm is applied to the second image dataset of the target object, and based on the minimum and maximum values for each parameter of the first set of parameters, as well as the second value of the parameter of the second set of parameters, one or more indicias represented in the second image dataset are detected and decoded; and during subsequent applications of the decoder algorithm, the parameters of the second set of parameters are set to one of the first or second values, based on a comparison of the number of second decoded indicias from the second image dataset with the number of first decoded indicias from the first 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 rectangle 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) preferred barcode.
[0014] In another variation of this embodiment, when the instruction is executed by one or more processors, it causes one or more processors to set the parameters of a second set of parameters to a first or second value during subsequent application of the decoder algorithm by comparing the number of first decoded indicia from a first image dataset with the number of second decoded indicia from a second image dataset, and comparing the first decoding time for each decoded indicia from the first image dataset with the second decoding time for the corresponding decoded indicia from the second image dataset, so that the corresponding decoded indicia is identical to the decoded indicia. Furthermore, in this variation, when the instruction is executed by one or more processors, it causes one or more processors to determine that the first decoding time for the first decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset, and to set the parameters of a second set of parameters to a first value during subsequent application of the decoder algorithm. Furthermore, in this variation, when the instruction is executed by one or more processors, one or more processors are instructed to (i) determine that the number of first decoded indicias is less than the number of second decoded indicias, and (ii) that the first decoding time for each decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset, and to set the parameters of a second set of parameters to second values during the subsequent application of the decoder algorithm.
[0015] In yet another variation of this embodiment, when the instruction is executed by one or more processors, one or more processors are instructed to determine the minimum and maximum values for each parameter of the first set of parameters by adjusting the parameter-specific minimum and maximum values of the first set of parameters by the threshold of subsequent application of the decoder algorithm, and by setting each parameter of the first set of parameters to a value between the minimum and maximum values during subsequent application of the decoder algorithm.
[0016] In yet another variation of this embodiment, the second image dataset is the first image dataset, and one or more indicias represented in the second image dataset are one or more indicias represented in the first image dataset.
[0017] In yet another variation of this embodiment, when the instruction is executed by one or more processors, one or more processors cause one or more processors to detect the number of first indicias from one or more indicias represented in a first image dataset and to detect the number of second indicias from one or more indicias represented in a second image dataset, wherein the number of first indicias and the number of second indicias are different.
[0018] In yet another variation of this embodiment, when the instruction is executed by one or more processors, it causes one or more processors to (a) specify a second image dataset as the current image dataset and the parameters of the second set of parameters as the current parameters, (b) automatically set the current parameters to a first or second value, (c) adjust the subsequent parameters of the second set of parameters from a first value to a second value, (d) cause an imaging device to acquire subsequent images of the target object, the subsequent images including a subsequent image dataset, and (e) apply a decoder algorithm to the subsequent image dataset. (c) to detect and decode one or more indicia represented in a subsequent image dataset based on a second value of the subsequent parameter; (f) to set the subsequent parameter to one of the first or second value during subsequent application of the decoder algorithm; (g) to designate the subsequent image dataset as the current image dataset and the subsequent parameter as the current parameter; and (h) to iterate through steps (c) to (h) until each parameter in the set of the second parameter is set to either the first or second value and applied as part of the decoder algorithm to at least one image dataset of the target object.
[0019] In yet another embodiment, the present invention is a tangible machine-readable medium including instructions for optimizing one or more decoder parameters of an indicia decoder, the instructions which, when executed, instruct a machine to apply a decoder algorithm to a first image dataset of an object of interest, to detect and decode one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes one or more indicia using a first set of parameters and a second set of parameters, to determine 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 dataset, and to adjust the parameters of the second set of parameters from a first value to a third Adjusting to a value of 2 such that the first value is set to a parameter of a second set of parameters while the decoder algorithm is being applied to a first image dataset; applying the decoder algorithm to a second image dataset of the object in question, detecting and decoding one or more indicias 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 of the parameter of the second set of parameters; and setting the parameter of the second set of parameters to one of the first or second values during subsequent applications of the decoder algorithm based on a comparison of the number of second decoded indicias from the second image dataset with the number of first decoded indicias from the first image dataset.
[0020] Similar reference numerals refer to identical or functionally similar elements throughout separate figures. The accompanying figures, along with the detailed description below, are incorporated into the specification to form part of it and serve to further illustrate conceptual embodiments containing the claimed invention and to illustrate the various principles and advantages of those embodiments. [Brief explanation of the drawing]
[0021] [Figure 1] FIG. of an exemplary system for optimizing one or more decoder parameters of an indicia decoder according to embodiments described herein. [Figure 2] Perspective view of the imaging device of FIG. 1 according to embodiments described herein. [Figure 3] Block diagram of an exemplary logic circuit for implementing the exemplary methods and / or operations described herein. [Figure 4] FIG. showing an exemplary decoder parameter optimization sequence according to embodiments described herein. [Figure 5] FIG. of a flowchart representing a method for optimizing one or more decoder parameters of an indicia decoder according to embodiments described herein. DETAILED DESCRIPTION
[0022] Those skilled in the art will appreciate that the elements of the figures are illustrated for simplicity and clarity and are not necessarily drawn to scale. For example, the dimensions of some of the elements of the figures may be exaggerated relative to other elements to assist in improving the understanding of the embodiments of the present invention.
[0023] The components of the apparatus and method are represented in the drawings by conventional symbols where appropriate, showing only the specific details relevant to understanding the embodiments of the present invention so as not to obscure the disclosure with details that will be 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 to achieve optimal configuration of the Indicia decoder using conventional manual configuration processes. Manually configuring the Indicia decoder is extremely time-consuming, involves a considerable amount of guesswork by the user / operator, and generally results in an unoptimized configuration that reduces the accuracy, speed, and reliability of decoding. Therefore, the object of this disclosure is to eliminate these and other problems associated with conventional machine vision systems by enabling machine vision systems to automatically and intelligently configure the decoder parameters of an Indicia decoder included as part of the system. In particular, this disclosure provides a decoder algorithm in a manner that can systematically determine the optimal setting for each decoder parameter and, accordingly, ensure the optimal performance of the Indicia decoder. Thus, as described herein, embodiments of this disclosure can eliminate the need for expensive manual decoder parameter configuration and corresponding system downtime, improve the accuracy, speed, and reliability of the Indicia decoder's decoding, and ensure that the system maximizes the overall efficiency of image acquisition and processing.
[0025] FIG. 1 shows an exemplary smart imaging system 100 configured to analyze pixel data of an image of an object of interest to optimize one or more decoder parameters of an indicia decoder, according to various embodiments disclosed herein. In the example embodiment of FIG. 1, smart imaging system 100 includes a user computing device 102 and an imaging device 104 communicatively coupled to user computing device 102 via network 106. Generally speaking, user computing device 102 and imaging device 104 may execute instructions to perform the operations of the exemplary methods described herein, as may be represented, for example, by the flowcharts of the accompanying drawings. User computing device 102 is typically configured to enable a user / operator to create a machine vision job for execution on imaging device 104. Once created, the user / operator may then send / upload the machine vision job to imaging device 104 via network 106, and then the machine vision job is interpreted and executed. The machine vision job may include various machine vision tools (e.g., indicia decoder 120a) configured to perform various machine vision tasks (e.g., indicia detection and decoding). 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. Smart imaging application 116 may include an indicia decoder 116a, and indicia decoder 116a 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 a 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 obtain a job file containing one or more job scripts from the user computing device 102 via the network 106, the job scripts may define machine vision jobs, and the imaging device 104 may be configured to acquire and / or analyze images according to the machine vision jobs. For example, the imaging device 104 may include flash memory used to determine, store, or otherwise process the acquisition data / dataset and / or post-acquisition data. The imaging device 104 may then receive, recognize, and / or otherwise interpret triggers that cause the imaging device 104 to acquire an image of a target object, according to a configuration established via one or more job scripts. After acquisition and / or analysis, the imaging device 104 may send the image 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 for acquiring, interpreting, and executing job scripts that define machine vision jobs, such as any one or more job scripts contained in one or more job files, for example, acquired from a user computing device 102, and / or otherwise, may be configured to automatically perform a full range of functions of the imaging device 104.
[0027] The job file may be, broadly speaking, a JSON representation / data format of one or more job scripts transferable from the user computing device 102 to the imaging device 104. The job file may also be readable by a C++ runtime engine or other suitable runtime engine running on the imaging device 104. Furthermore, the imaging device 104 may run a server (not shown) configured to listen for and receive job files from the user computing device 102 via the network 106. Alternatively, the server configured to listen for and receive job files may be 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 or Amazon AWS.
[0028] In any case, the smart imaging application 116 may be configured to enable the construction of machine vision jobs, such that a user can typically construct a machine vision job using the smart imaging application 116 stored on a user computing device 102. In an exemplary implementation, the user may want the imaging device 104 to automatically detect and decode indicia characterized in the acquired images, and therefore may incorporate the indicia decoder 116a into the job script to send to the imaging device 104 as part of the job file. When incorporating the indicia decoder 116a into the job script, the user may choose an option and / or otherwise indicate that the decoder algorithm 116a1 should automatically calibrate a set of decoder parameters 116a2 when received by the imaging device 104 before active (e.g., runtime) execution of the indicia decoder 116a as part of a machine vision job, as described herein. Next, the decoder algorithm 120a1 may instruct the processor 118 of the imaging device 104 to perform an automatic calibration of a set of decoder parameters 120a2, and then, during the active (e.g., runtime) execution of the indicia decoder 120a as part of a machine vision job, the decoder algorithm 120a1 may instruct the processor 118 on how to detect and decode indicia based on the calibrated set of decoder parameters 120a2.
[0029] In any case, the 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. The imaging assembly 126 may include a digital camera and / or digital video camera for capturing or shooting 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 an image analysis task (e.g., indicia detection / decoding), as described herein. For example, the digital camera and / or digital video camera of the imaging assembly 126 may be configured to shoot, capture, or otherwise generate digital images, and in at least some embodiments, such images may be stored in the 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, the 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 containing RGB-based pixel data. In various embodiments, the imaging assembly 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 / data sets. In some embodiments, the photorealistic camera of the imaging assembly 126 may capture 2D images and associated 2D image data at the same or similar time point as the 3D camera of the imaging assembly 126, so that the imaging device 104 can have both sets of 3D and 2D image data available for a particular surface, object, area, or scene at the same or similar time point. In various embodiments, the imaging assembly 126 may include a 3D camera and a photorealistic camera as a single imaging device configured to acquire 3D depth image data simultaneously with 2D image data. As a result, the acquired 2D images and corresponding 2D image data may be depth-aligned with the 3D images and 3D depth image data.
[0031] In embodiments, the imaging assembly 126 may be configured to capture images of a predefined search space or the surface or area of an object within a predefined search space. For example, each tool included in a job script may further include a region of interest (ROI) corresponding to a specific area or object being imaged by the imaging assembly 126. A composite area defined by the ROI 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 the 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 ROI for all tools included in a particular job script. It should be noted herein that, in addition to the predefined search space, the imaging assembly 126 may capture 2D and / or 3D image data / data sets of various areas, so that further areas are intended. Furthermore, in various embodiments, the imaging assembly 126 may be configured to capture a set of other 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 datasets for use by other devices (e.g., a user computing device 102, an external server). For example, one or more processors 118 may process scanned or sensed image data or datasets acquired by the imaging assembly 126. Processing of the image data may generate post-imaging data, which may include metadata, simplified data, normalized data, result data, status data, or warning data, as determined from the original scanned or sensed image data. The image data and / or post-imaging data may be sent to a user computing device 102 running a smart imaging application 116 for display, operation, and / or other information exchange. In other embodiments, the image data and / or post-imaging data may be sent to a server for storage or further operation. 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 / or transmit the image data and / or post-imaging data to another application running on a 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, computer programs or computer-based products, applications, or code (e.g., smart imaging application 116, Indicia decoders 116a, 120a, decoder algorithms 116a1, 120a1, decoder parameter sets 116a2, 120a2, and / or other computational instructions described herein) are embodied on computer-readable storage media or tangible non-temporary computer-readable media (e.g., standard random access memory (RAM), optical disks, universal serial buses (USB)) that embody such computer-readable program code or computer instructions in order to facilitate, implement, or perform machine-readable instructions, methods, processes, elements, or limitations, as illustrated, depicted, or described in relation to the various flowcharts, examples, diagrams, figures, and / or other disclosures herein. Computer-readable program code or computer instructions may be stored in a bus (drive, etc.) and may be installed on one or more processors 108, 118 or otherwise adapted to be executed by one or more processors 108, 118 (for example, operating in relation to their respective operating systems in one or more memories 110, 120).In this regard, the program code may be implemented in any preferred programming language, and may be implemented as machine code, assembly code, bytecode, interpretable source code, etc. (for example, by Golang, Python, C, C++, C#, Objective-C, Java, Scala, ActionScript, JavaScript, HTML, CSS, XML, etc.).
[0034] 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. One or more memories 110 may also store a smart imaging application 116 which can be configured to enable the construction of machine vision jobs as described herein. Furthermore, or alternatively, the smart imaging application 116 may also be stored in one or more memories 120 of the imaging device 104 and / or an external database (not shown) which is accessible by a user computing device 102 via a network 106 or otherwise connected to communicate with the user computing device 102. 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 any features, functions, or other disclosures described herein, such as any methods, processes, elements, or limitations, as illustrated, depicted, or described in relation to the various flowcharts, examples, diagrams, figures, and / or other disclosures herein. For example, at least part of an application, software component, or API may be a machine vision-based imaging application, such as a smart imaging application 116, or include an imaging application, or otherwise be part of an imaging application, each of which may be configured to facilitate the various functions described herein. One or more other applications may be assumed, and it should be understood that they are executed by one or more processors 108, 118.
[0035] One or more processors 108, 118 may be connected to one or more memories 110, 120 via a computer bus that is responsible for transmitting electronic data, data packets, or other electronic signals between one or more processors 108, 118 and one or more memories 110, 120 in order to implement or perform machine-readable instructions, methods, processes, elements, or limitations as illustrated, depicted, or described in relation to various flowcharts, examples, diagrams, figures, and / or other disclosures herein.
[0036] One or more processors 108, 118 may interface with one or more memories 110, 120 via a computer bus to execute an operating system (OS). One or more processors 108, 118 may also interface with one or more memories 110, 120 via a computer bus to create, read, update, delete, or otherwise access or interact with data stored in 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 one or more memories 110, 120 and / or the external database may include all or part 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 the execution of a job script) and / or other appropriate information.
[0037] Network interfaces 112, 122 may be configured to transmit (e.g., send and receive) data to one or more networks or local terminals, such as network 106 described herein, via one or more external ports / network ports. In some embodiments, 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, which are responsible for receiving and responding to electronic requests. Network interfaces 112, 122 may implement client-server platform technologies that exchange information with one or more memories 110, 120 (including stored applications, components, APIs, data, etc.) via a computer bus in order to implement or execute machine-readable instructions, methods, processes, elements, or limitations, such as those illustrated, depicted, or described in relation to various flowcharts, examples, diagrams, figures, and / or other disclosures herein.
[0038] In some embodiments, network interfaces 112, 122 may include, or exchange information with, one or more transceivers (e.g., WWAN, WLAN, and / or WPAN transceivers) that function in accordance with IEEE standards, 3GPP® standards, or other standards and may be used in receiving and transmitting data via external ports / network ports connected to network 106. In some embodiments, network 106 may include a private network or a local area network (LAN). Furthermore, or alternatively, network 106 may include a public network such as the Internet. In some embodiments, network 106 may include, according to a non-limiting example, 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 communication based on any one or more of various wireless standards, including IEEE 802.11a / b / c / g (WIFI), BLUETOOTH® standards, etc.
[0039] I / O interfaces 114, 124 may include or implement an operator interface configured to present information to an administrator or operator and / or to receive input from an administrator or operator. The operator interface may provide a display screen (for example, via user computing device 102 and / or imaging device 104) that a user / operator may use to visualize any image, graphics, text, data, features, pixels, and / or other appropriate visualizations or information. User computing device 102 and / or imaging device 104 may at least partially include, implement, access, draw, or otherwise expose a graphical user interface (GUI) for displaying images, graphics, text, data, features, pixels, and / or other appropriate visualizations or information on the display screen. For example, I / O interfaces 114, 124 may draw a set of decoder parameters 116a2, 120a2 to the operator interface for display to the user / operator after the parameters 116a2, 120a2 have been calibrated according to instructions included as part of the decoder algorithms 116a1, 120a1.
[0040] The I / O interfaces 114, 124 may also include I / O components (e.g., ports, capacitive or resistive touch sensor input panels, keys, buttons, lights, LEDs, any number of keyboards, mice, USB drives, optical drives, screens, touchscreens, etc.) that can be directly or indirectly accessed via the user computing device 102 and / or imaging device 104, 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, enter responses and / or selections, and / or perform other functions.
[0041] As described herein, in some embodiments, the user computing device 102 may perform functions as described herein as part of a “cloud” network, or otherwise communicate with other hardware or software components in the cloud to transmit, retrieve, or otherwise analyze the data or information described herein.
[0042] Figure 2 is a perspective view of the imaging device 104 of Figure 1 according to an embodiment described herein. The imaging device 104 includes a housing 202, an imaging aperture 204, a user interface label 206, a dome-shaped switch / button 208, one or more light-emitting diodes (LEDs) 210, and a mounting point 212. As previously stated, the imaging device 104 obtains job files from a user computing device (e.g., user computing device 102), and then the imaging device 104 interprets and executes these job files. The instructions contained in the job files may include device configuration settings (also referred to herein as “imaging settings”) that can be manipulated to adjust the configuration of the imaging device 104 before capturing an image of a target object.
[0043] For example, device configuration settings may include instructions for adjusting one or more settings related to the imaging aperture 204. As an example, suppose at least part of the intended analysis corresponding to a machine vision job requires the imaging device 104 to maximize the brightness of any captured image. To meet this requirement, the job file may include device configuration settings 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 own configuration to best suit a particular machine vision job. Furthermore, the imaging device 104 may include, or be adaptable to include, 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, for example, affecting illumination on or otherwise received through the imaging aperture 204.
[0044] The user interface label 206 may include a dome-shaped switch / button 208 and one or more LEDs 210, thereby enabling a variety of interactive and / or directive functions. Typically, the user interface label 206 may allow the user to trigger and / or adjust the imaging device 104 (e.g., by the dome-shaped switch / button 208), and to recognize (e.g., by one or more LEDs 210) when one or more functions, errors, and / or other actions have been performed or taken with respect to the imaging device 104. For example, the trigger function of the dome-shaped switch / button (e.g., dome-shaped switch / button 208) may allow the user to acquire images using the imaging device 104 and / or display a trigger configuration screen of a user application (e.g., a smart imaging application 116). The trigger configuration screen may allow the user to configure one or more triggers for the imaging device 104, which can be stored in memory (e.g., one or more memories 110, 120) for use in machine vision jobs developed later.
[0045] As another example, the adjustment function of a dome-shaped switch / button (e.g., dome-shaped switch / button 208) may allow the 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 the user to configure one or more configurations of the imaging device 104 (e.g., aperture size, exposure length, etc.) which can be stored in memory (e.g., one or more memories 110, 120) for use in machine vision jobs developed later.
[0046] To further this example, as will be further described herein, the user may use the imaging configuration screen (or, more generally, the smart imaging application 116) to establish two or more configurations of imaging settings for the imaging device 104. The user may then save these two or more configurations of imaging settings as part of a machine vision job, and these configurations are then sent to the imaging device 104 in a job file containing one or more job scripts. One or more job scripts may then instruct the processor of the imaging device 104 (e.g., one or more processors 118) to automatically and sequentially 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 acquisition. Once the imaging settings are calibrated, the imaging device 104 may then proceed to execute the decoder algorithm 120a1 to calibrate the set of decoder parameters 120a2. However, in some cases, the imaging device 104 may calibrate the set of decoder parameters 120a2 before calibrating the imaging settings.
[0047] The mounting point 212 may allow the user to attach the imaging device 104 to mounting devices (e.g., imaging tripod, camera mount, etc.), structural surfaces (e.g., warehouse walls, warehouse ceilings, structural support beams, etc.), other accessory items, and / or any other suitable connecting devices, structures, or surfaces, and / or to detachably attach them. For example, the imaging device 104 may be optimally positioned on mounting devices in distribution centers, manufacturing plants, warehouses, and / or other facilities to image and thereby monitor the quality / consistency of products, packages, and / or other items as they pass through the imaging device 104's FOV. Furthermore, the mounting point 212 may allow the user to attach the imaging device 104 to a number of accessory items, including, but not limited to, one or more external lighting devices, one or more mounting devices / brackets, etc.
[0048] In addition, the imaging device 104 may include several hardware components contained within the enclosure 202 that enable connection to a computer network (e.g., network 106). For example, the imaging device 104 may include a network interface (e.g., network interface 122) that enables the imaging device 104 to connect to a network such as a Gigabit Ethernet connection and / or a dual Gigabit Ethernet connection. Furthermore, the imaging device 104 may include transceivers 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 a combination thereof.
[0049] Figure 3 is a block diagram representing an exemplary logic circuit that can implement, for example, one or more components of the exemplary imaging device 104 of Figure 2. The exemplary logic circuit of Figure 3 is a processing platform 300 that can execute instructions to implement the operations of the exemplary method described herein, for example, as can be represented by the flowcharts in the drawings accompanying this description. Other exemplary logic circuits that can implement the operations of the exemplary method described herein include, for example, field programmable gate arrays (FPGAs) and application-specific integrated circuits (ASICs).
[0050] The exemplary processing platform 300 in Figure 3 includes a processor 302, such as one or more microprocessors, controllers, and / or any suitable type of processor. The exemplary processing platform 300 in Figure 3 includes memory (e.g., volatile memory, non-volatile memory) 304 accessible by the processor 302 (e.g., via a memory controller). The exemplary processor 302 exchanges information with the memory 304 to retrieve, for example, machine-readable instructions stored in the memory 304, corresponding to operations represented, for example, by the flowchart of this disclosure.
[0051] Memory 304 also includes an indicia decoder 120a, a decoder algorithm 120a1, and a set of decoder parameters 120a2, each accessible by the exemplary processor 302. As previously stated, the decoder algorithm 120a1 may include, for example, rule-based instructions, artificial intelligence (AI) and / or machine learning-based models, and / or any other suitable algorithmic architecture, or a combination thereof, configured to optimize / calibrate the set of decoder parameters 120a2, detect indicia in an acquired image, and decode the indicia in the acquired image. For illustrative purposes, the exemplary processor 302 may access memory 304 and execute the decoder algorithm 120a1 when the imaging device 104 acquires a set of image data (by the imaging assembly 126) containing pixel data from multiple pixels, and detects and decodes any indicia represented by the pixel data.
[0052] Furthermore, or alternatively, machine-readable instructions corresponding to the exemplary operations described herein may be stored on one or more removable media (e.g., compact disks, digital versatile disks, removable flash memory, etc.) that can be coupled to the processing platform 300 to provide access to the stored machine-readable instructions.
[0053] The exemplary processing platform 300 in Figure 3 also includes, for example, a network interface 310 for enabling communication with other machines over one or more networks. The exemplary 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] The exemplary processing platform 300 in Figure 3 also includes an input / output (I / O) interface 312 for enabling the reception of user input and the transmission of output data to the user. Such user input and transmission may include, for example, any number of keyboards, mice, USB drives, optical drives, screens, touchscreens, etc.
[0055] Figure 4 shows an exemplary decoder parameter optimization sequence 400 according to an embodiment described herein. Generally speaking, the exemplary decoder parameter optimization sequence 400 may represent the imaging device 104 determining the parameter value setting of one or more decoder parameters in the set of decoder parameters 120a2 (for example, by executing instructions included as part of the decoder algorithm 120a1). Furthermore, as shown in Figure 4, the exemplary parameter optimization sequence 400 may include the imaging device 104 proceeding to determine such parameter value setting for each decoder parameter in the set of decoder parameters 120a2 by adjusting subsequent image datasets and subsequent parameters. As a result of the exemplary decoder parameter optimization sequence 400, the imaging device 104 can 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. Referring to Figures 4 and 5, it should be understood that the actions performed herein by the processor 118 may be performed according to instructions contained in memory (e.g., memory 120), and more specifically, according to instructions contained as part of the decoder algorithm 120a1.
[0056] An exemplary decoder parameter optimization sequence 400 may include two time instances 402a and 402b, during which the imaging device 104 makes decisions based on various inputs. In the first time instance 402a, the imaging device 104 receives a first image dataset as input and may determine a set of maximum values for the first parameter set, a set of minimum values for the first parameter set, and parameter adjustments for a second parameter set. Roughly speaking, the first image dataset may include image data representing an object of interest that includes at least one indicia (e.g., a barcode, a quick response (QR) code), the first parameter set may include decoder parameter values that directly correspond to the image data (e.g., quiet zone size, minimum number of rows, etc.), the second parameter set may include decoder parameter values that correspond to the overall detection / decode strategy (e.g., decode search intensity level, preferred barcode, etc.), and both the first and second parameter sets may be included in a set of decoder parameters 120a2. The first image dataset may contain one or more images representing the target object.
[0057] More specifically, in the first time instance 402a, the imaging device 104 may analyze the first image dataset using the indicia decoder 120a and detect all indicias in the first image dataset based on the 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 decode information for each successful decode. The decode information may typically include data corresponding to each of the first set of parameters. As one example, the decode information corresponding to a successful barcode decode may in part indicate that the minimum module size of the barcode is 4 pixels.
[0058] To detect indicia, the processor 118 may execute instructions using a decoder algorithm 120a1 configured to analyze pixel data from a first image dataset. Typically, pixel data contains points or squares of data within an image, where each point or square represents a single pixel in the image. Each pixel may be at a specific location within the image. In addition, each pixel may have a specific color (or lack thereof). The color of a pixel may be determined by the color format and associated channel data associated with that particular pixel. For example, common color formats include the red-green-blue (RGB) format, which has red, green, and blue channels. That is, in the RGB format, the data of a pixel is represented by the RGB components (red, green, and blue), which are three numerical values sometimes called channel data, to manipulate the color of the area of the pixel in 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 byte for each of RGB) are used to generate a 24-bit color. Each 8-bit RGB component can have 256 possible values in the range of 0 to 255 (i.e., in binary, an 8-bit byte can contain one of 256 numbers in the range of 0 to 255). This channel data (R, G, and B) can be assigned values from 0 to 255 and used to set the color of a pixel. For example, three values such as (250, 165, 0) mean (Red=250, Green=165, Blue=0) and can represent one orange pixel. As a further example, (Red=255, Green=255, Blue=0) means that Red and Green are each fully saturated (255 is the maximum brightness of 8 bits) and Blue is absent (zero), and the resulting color is yellow. As further examples, black has RGB values of (red=0, green=0, blue=0), and white has RGB values of (red=255, green=255, blue=255). Gray has the property of having equal or similar RGB values. Therefore, (red=220, green=220, blue=220) is a light (close to white) gray, and (red=40, green=40, blue=40) is a dark (close to 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 3 bytes, there can be 256 levels of red, 256 levels of green, and 256 levels of blue. This provides 256 × 256 × 256, or 16.7 million possible combinations or colors, for a 24-bit RGB color image. Thus, the RGB data value of a pixel indicates the composition of the pixel in units of red, green, and blue. The three colors and intensity levels are combined at that image pixel, i.e., at that pixel location on the display screen (e.g., of a user computing device 102), illuminating the display screen at that location with that color. However, it should be understood that other bit sizes, such as 10 bits, containing fewer or more bits, may be used to result in fewer or more overall colors and ranges.
[0061] Overall, a digital image is formed by various pixels arranged together in a grid pattern. A single digital image can contain thousands or even millions of pixels. Images can be captured, generated, stored, and / or transmitted in several formats, including JPEG, TIFF, PNG, and GIF. These formats use pixels to store and represent images.
[0062] Continuing to refer to Figure 4, the processor 118 may first determine, based on the pixel data (e.g., including their RGB values) contained in the first image dataset, whether the object represented in the first image dataset contains an indicia (e.g., a barcode, QR code®, etc.) and / or where the indicia is located on the object. The processor 118 may detect the indicia in the first image dataset by analyzing the various RGB values of the pixels associated with the indicia in the first image dataset, determining that the pixels represent the indicia, and identifying the region surrounding the indicia that indicates the boundary of all pixels associated with the indicia. For example, a dark or low RGB value (e.g., a pixel with R=25, G=28, B=31) may indicate a normally black area of a barcode. A brighter RGB value (e.g., a pixel with 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] Combining these factors, if a sequence of pixels within an analyzed region consistently and sequentially transitions from dark or low RGB values to brighter RGB values (or vice versa), it may indicate the presence of a barcode or other indicia represented by that sequence of pixels. For example, an image may feature the front of an object, which contains 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 that represent a barcode for the object. Processor 118 may recognize that pixels represent a barcode because pixels may contain a sequence of pixels with very dark RGB values contrasted with pixels with very bright RGB values. Thus, processor 118 may detect indicia using pixel data (which details one or more features of the object, such as the indicia of each object).
[0064] When an indicia is detected in the first image dataset, the decoder algorithm 120a1 may instruct the processor 118 to decode the detected indicia and generate decode information for each successfully decoded indicia. The decoder algorithm 120a1 may then instruct the processor 118 to analyze all of the decode information to determine the minimum and maximum values for each parameter of the first set of parameters. For illustrative purposes, suppose the first image dataset contains three indicia, and the processor 118 successfully detects and decodes these indicia as a result of running the decoder algorithm 120a1, and the processor 118 then analyzes three sets of decode information associated with each indicia. In this example, each set of decode information may contain a different maximum module size, such that the first set of decode information has a maximum module size of 20 pixels, the second set of decode information has a maximum module size of 15 pixels, and the third set of decode information has a maximum module size of 17 pixels. The processor 118 may analyze these maximum module sizes and determine that the maximum value of the maximum module size is 20 pixels and the minimum value of the maximum module size is 15 pixels.
[0065] Furthermore, in some embodiments, the processor 118 may 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 for subsequent application of the decoder algorithm 120a1. Referring to the previous example, the processor 118 may adjust the minimum value for a maximum module size of 15 pixels by a threshold of 2 pixels to an adjusted minimum value for a maximum module size of 13 pixels. Similarly, the processor 118 may adjust the maximum value for a maximum module size of 20 pixels by a threshold of 2 pixels to an adjusted maximum value for a maximum module size of 22 pixels. Of course, the thresholds may be any suitable values, and the processor 118 may apply different thresholds to some / all of the parameters, or different thresholds may be applied to the minimum / maximum values of a single parameter. For example, processor 118 may adjust the minimum value of the maximum module size by a threshold of 2 pixels, or processor 118 may adjust the maximum value of the maximum module size by a threshold of 5 pixels in order to predict 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 the parameters in the second set of parameters. As mentioned above, the second set of parameters may typically include decoder parameter values corresponding to the overall detection / decode strategy (e.g., decode search intensity level, preferred barcode, etc.) so that adjustments to the parameters from the second set of parameters can be adjusted to the overall detection / decode strategy performed by processor 118 when analyzing image data. For example, parameter adjustments to the parameters in the second set of parameters may include processor 118 adjusting the priority of indicia from one-dimensional (1D) indicia (e.g., barcode) to two-dimensional (2D) indicia (e.g., QR code). After this adjustment, processor 118 analyzing any subsequent image data may prioritize the detection and / or decoding of 2D indicia over 1D indicia.
[0067] In a second time instance 402b, the imaging device 104 may receive as input a set of maximum values for the first set of parameters, a set of minimum values for the first set of parameters, parameter adjustments for the second set of parameters, and a second image dataset, and may determine the parameter value settings for the parameters of the second set of parameters. Typically, the second image dataset may contain 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 one or more indicia represented in the second image dataset are one or more indicia represented in the first image dataset.
[0068] In particular, the processor 118 may analyze the second image dataset in the same way as the first image dataset, but may also execute the decoder algorithm 120a1 according to the decoder parameters 120a2, and the parameters in the second set of parameters will be adjusted according to the parameter adjustment. For example, if the processor 118 was able to analyze the first image dataset at a fast decoding search intensity level, the processor 118 may analyze the second image dataset at a moderate decoding search intensity level.
[0069] In any case, the processor 118 may detect a second number of indicias from one or more indicias represented in the second image dataset, such that the first number of indicias and the second number of indicias detected in the first image dataset are different. The processor 118 may then decode the second number of indicias and compare the second number of indicias with the number of indicias detected / decoded from the first image dataset to determine appropriate values for the 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 to a second value corresponding to the analysis performed during the second time instance 402b. The processor 118 may evaluate the number of decodes in both time instances 402a and 402b, the time taken to perform the decoding in both time instances 402a and 402b, and / or any other appropriate metrics.
[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 decoding time for each decoded indicia from the first image dataset with the second decoding time for the corresponding decoded indicia from the second image dataset, where the corresponding decoded indicia may be identical to the decoded indicia. The processor 118 may then determine that the first decoding time for the first decoded indicia from the first image dataset is less than, greater than, or equal to the second decoding time for the corresponding decoded indicia from the second image dataset. Thus, the processor 118 may set the parameter to the first value during subsequent application of the decoder algorithm. Alternatively, the processor 118 may determine that (i) the number of first decoded indicias is less than the number of second decoded indicias, and (ii) the first decoding time for each decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset. In these alternative examples, the processor 118 may set the parameter to the second value during the subsequent application of the decoder algorithm.
[0071] For example, processor 118 may detect and decode four barcodes using a first value of the parameter in the first time instance 402a, and processor 118 may detect and decode five barcodes using a second value of the parameter in the second time instance 402b. Furthermore, processor 118 may require an equal amount of time to perform decoding in both time instances 402a and 402b. In this example, processor 118 may determine that the second value of the parameter is the optimal value of the two because it resulted in a greater number of decodes.
[0072] In another example, processor 118 may, in the first time instance 402a, detect five barcodes and decode four using a first value of the parameter, and in the second time instance 402b, detect six barcodes and decode three using a second value of the parameter. Furthermore, processor 118 may require an equal amount of time to perform decoding in both time instances 402a and 402b. In this example, processor 118 may determine that the first value of the parameter is the optimal value of the two because the first value resulted in more decodes, even though the second value resulted in more detections. Of course, in some cases processor 118 may determine that the first value is the optimal value, but generally, the decoder algorithm 120a1 may include instructions configured to prioritize decoding indicia 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 in a first time instance 402a, and then detect and decode four barcodes using a second value of the parameter in a second time instance 402b. Furthermore, processor 118 may take less time to perform the decoding in the first time instance 402a than in 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 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 in a first time instance 402a, and then detect and decode five barcodes using a second value of the parameter in a second time instance 402b. Furthermore, processor 118 may take less time to perform the decoding in the first time instance 402a than in 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 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 indicias faster (per indicia) than the rate at which processor 118 decoded each of the five indicias as a result of the second value. However, as previously stated, the decoder algorithm 120a1 may include instructions configured to prioritize indicia decoding over any other metric, such as the decoding speed per indicia.
[0075] Optionally, the imaging device 104 may also determine subsequent parameter adjustments to the parameters of the second set of parameters during the second time instance 402b. The imaging device 104 may also acquire a subsequent image dataset and determine different parameter value settings based on the subsequent image dataset and subsequent parameter adjustments. That is, in some cases, the processor 118 may adjust the parameters from a second value to a third value, apply the decoder algorithm 120a1 to the third image dataset of the target object, and 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. 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 indicias from the first image dataset with the number of second decoded indicias from the second image dataset and the number of third decoded indicias from the third image dataset.
[0076] In other examples, the processor 118 may specify a second image dataset as the current image dataset, specify a parameter as the current parameter, and automatically set the current parameter to a first or second value. The processor 118 may also adjust the subsequent parameter of the second set of parameters from a first value to a second value, causing the imaging device to acquire subsequent images of the target object. The subsequent images 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 to detect and decode one or more indicia represented in the subsequent image dataset based on the second value of the subsequent parameter. During the subsequent application of the decoder algorithm 120a1, the processor 118 may set the subsequent parameter to one of the first or second values, and the processor 118 may also specify the subsequent image dataset as the current image dataset and specify the subsequent parameter as the current parameter. The processor 118 may also iteratively perform these steps until each parameter in the second set of parameters is set to either the first or second value and applied to at least one image dataset of the object as part of the decoder algorithm. In other words, the processor 118 may iteratively perform the steps described above until each parameter in the second set of parameters is evaluated for possible adjustments from the first value to the second value.
[0077] For example, the processor 118 may analyze a second image dataset and determine that the decode search intensity level has an optimal setting of medium (e.g., the second value) rather than fast (e.g., the first value). In this example, the processor 118 may have the imaging assembly 126 acquire the subsequent image dataset, apply subsequent parameter adjustments to the decode search intensity level parameter, and analyze the performance of the comprehensive (e.g., third value) decode search intensity level for the subsequent image dataset. The processor 118 may determine that the performance of the comprehensive decode search intensity level was worse than that of the medium decode search intensity level (e.g., less indicia decoding, slower indicia decoding, etc.), and as a result, the processor 118 may maintain the decode search intensity level parameter at the second value (medium). Alternatively, processor 118 may determine that the performance of a comprehensive decode search intensity level was better than that of a moderate decode search intensity level (e.g., more indicia decoding, faster indicia decoding, etc.), and as a result, processor 118 may change the decode search intensity level parameter to a third value (comprehensive).
[0078] Naturally, the processor 118 may repeat the subsequent acquisition of the image dataset and subsequent parameter adjustment as many times as necessary to determine the parameters that enable the indicia decoder 120a to detect and decode as many indicia as possible for a particular image dataset. For example, if the first parameter of a second set of parameters has three possible values (e.g., fast, medium, comprehensive) and the second parameter of a second set of parameters has six possible values, the processor 118 may perform this iterative acquisition of the image dataset and parameter adjustment at least three times for the first parameter (e.g., once for each possible value) and six times for the second parameter.
[0079] Figure 5 is a flowchart representing 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 embodiments described herein. Method 500 describes various methods for optimizing one or more decoder parameters of an Indicia decoder. However, generally speaking, 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 dataset, determining minimum and maximum values for each parameter in the first set of parameters, adjusting the parameters in a second set of parameters, applying the decoder algorithm to a second image dataset, and setting the parameters to the first or second values. It should be understood that the imaging device 104, the user computing device 102, their components (e.g., decoder algorithm 102a1), and / or other components described herein, as well as combinations thereof, may be configured to perform various actions and functions of Method 500 described herein.
[0080] Method 500 may include 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 (block 502). The decoder algorithm 120a1 may detect and decode one or more indicia using a first set of parameters and a second set of parameters. In one embodiment, the first set of parameters includes one or more of the following: (i) contrast threshold, (ii) quiet zone size, (iii) maximum rectangle 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.
[0081] For example, the contrast threshold may correspond to a black / white (or other appropriate color / value scheme) contrast mapping that typically defines the presence of barcodes or other indicia within the image dataset. The quiet zone size may correspond to an area surrounding a barcode or other indicia (e.g., whitespace surrounding a barcode) and may be expressed as the minimum number of pixels in the image dataset between the indicia and non-white areas. The maximum rectangle ratio may represent a measurement based on the height and width of an area within the image dataset, corresponding to a known height / width ratio of the indicia. The minimum / maximum module size may correspond to the minimum / maximum dots or other areas of the indicia within the image dataset, such as the pixels per meter (PPM) of the narrowest / widest bars of a barcode within the image dataset. The minimum / maximum number of rows / columns may correspond to the minimum / maximum number of rows / columns that are allowed to be part of an indicia within the image dataset. Naturally, the first set of parameters may include more or fewer parameters, such as an option to enable / disable the detection of rectangular indicia based on whether the indicia in the image dataset is known to be rectangular (e.g., a barcode) or square (e.g., a QR code).
[0082] In some embodiments, the second set of parameters may include one or more of (i) the decode search intensity level, (ii) the detection method, or (iii) the preferred barcode. For example, the decode search intensity level may indicate the decoding method typically performed 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 that the processor 118 can detect in the image dataset, and / or any other appropriate metric. The detection method may correspond to one or more methods typically performed 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 may correspond to prioritizing one or more specific types of indicia when detecting / decoding indicia in the image dataset, as described above. For example, the preferred barcode may include a one-dimensional (1D) indicia (e.g., a barcode) value and a two-dimensional (2D) indicia (e.g., a QR code) value. If the processor 118 determines that the 2D indicia should be preferred, the preferred barcode may be a 2D indicia value so that the processor 118 can analyze any subsequent image data by prioritizing the detection and / or decoding of the 2D indicia over the 1D indicia.
[0083] Method 500 may include determining minimum and maximum values for each parameter of a first set of parameters based on the detection and decoding of one or more indicias represented in a first image dataset (block 504). In one 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 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 subsequent application of the decoder algorithm. Method 500 may also include adjusting the parameters of a second set of parameters from a first value to a second value (block 506). The first value may be set for a parameter, for example, during the application of the decoder algorithm to the first image dataset.
[0084] Method 500 may include applying a decoder algorithm to a second image dataset of the object of interest to detect and decode one or more indicias represented in the second image dataset based on the minimum and maximum values for each parameter of a first set of parameters, as well as a second value for the parameter (block 508). In some embodiments, the second image dataset is the first image dataset, and one or more indicias represented in the second image dataset are one or more indicias represented in the first image dataset.
[0085] In one embodiment, method 500 may further include detecting the number of first indicias from one or more indicias represented in a first image dataset and detecting the number of second indicias from one or more indicias represented in a second image dataset. In these embodiments, the number of first indicias and the number of second indicias may be different.
[0086] Method 500 may include setting a parameter to one of a first or 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 a first decoding time for each decoded indicia from the first image dataset with a second decoding time for the corresponding decoded indicia from the second image dataset. The corresponding decoded indicia may be identical to the decoded indicia.
[0087] Furthermore, in the previous embodiment, the processor 118 may determine that the first decoding time for a first decoded indicia from a first image dataset is less than the second decoding time for the corresponding decoded indicia from a second image dataset. In this case, the processor 118 may set the parameter to the first value during subsequent application of the decoder algorithm. Alternatively, the processor 118 may determine that (i) the number of first decoded indicias is less than the number of second decoded indicias, and (ii) the first decoding time for each decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset. In such a case, the processor 118 may set the parameter to the second value during subsequent application of the decoder algorithm.
[0088] In some embodiments, Method 500 may further include adjusting the parameter from a second value to a third value. In these embodiments, Method 500 may include applying the decoder algorithm to a third image dataset of the object in question to detect and decode one or more indicia represented in the third image dataset based on the minimum and maximum values of each parameter in 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) a first value, (ii) a second value, or (iii) a 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 the number of third decoded indicia from the third image dataset.
[0089] In some embodiments, Method 500 may further include designating a second image dataset as the current image dataset and designating parameters as the current parameters. In these embodiments, Method 500 may further include automatically setting the current parameters to a first or second value and adjusting the subsequent parameters of the second parameter set from the first to the second value. Furthermore, Method 500 may include acquiring subsequent images of the object by an imaging device (e.g., imaging assembly 126), the subsequent images may include a 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 a second value of the subsequent parameters, and setting the subsequent parameters to one of the first or second values during the subsequent application of the decoder algorithm. Method 500 may further include specifying a subsequent image dataset as the current image dataset and specifying subsequent parameters as the current parameters, and iteratively performing each of the above actions until each parameter of the second set of parameters is set to either the first or second value and applied as part of the decoder algorithm to at least one image dataset of the object in question.
[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 any other combination suitable for optimizing one or more decoder parameters of the Indicia decoder. For example, some or all of the blocks in Method 500 may be performed once, multiple times, completely, or not at all.
[0091] (Additional considerations) The above description refers to the block diagram in the attached drawings. Alternative implementations of the examples represented by the block diagrams include one or more additional or alternative elements, processes, and / or devices. Furthermore, or alternatively, one or more of the exemplary blocks in the figures may be combined, split, rearranged, or omitted. The components represented by the blocks in the figures 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 comprising 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 operation by default configuration and / or by execution of 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 exemplary logic circuits, such as ASICs or FPGAs, are hardware specifically configured to perform operations (for example, the operations described herein and, if any, one or more of the operations represented by the flowcharts of this disclosure).Some exemplary logic circuits are hardware that executes machine-readable instructions to perform operations (e.g., operations described herein, and, if one or more of the operations represented by the flowcharts of this disclosure exist, those operations). Some exemplary logic circuits include combinations of specially configured hardware and hardware that executes machine-readable instructions. The above description refers to the various operations described herein and the flowcharts that may be attached herein to illustrate the flow of those operations. Any such flowchart represents an exemplary method disclosed herein. In some examples, the method represented by the flowchart implements the apparatus represented by the block diagram. Alternative implementations of the exemplary methods disclosed herein may include additional or alternative operations. Furthermore, the operations of alternative implementations of the methods disclosed herein may be combined, separated, rearranged, or omitted. In some examples, the operations described herein are performed by machine-readable instructions (e.g., software and / or firmware) stored in 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 circuits (e.g., ASICs). In some examples, the operations described herein are performed by a combination of a specially designed logic circuit and machine-readable instructions stored in a medium (e.g., a tangible machine-readable medium) for execution by the logic circuit.
[0092] When used herein, each of the terms “tangible machine-readable medium,” “non-temporary machine-readable medium,” and “machine-readable storage device” is explicitly defined as a storage medium (e.g., a hard disk drive platter, a digital versatile disk, a compact disk, flash memory, read-only memory, random access memory, etc.) on which machine-readable instructions (e.g., program code in the form of software and / or firmware) are stored for any appropriate period of time (e.g., permanently, for a long period (e.g., while a program associated with a machine-readable instruction is running), and / or for a short period (e.g., while a machine-readable instruction is cached and / or during a buffering process)). Furthermore, when used herein, each of the terms “tangible machine-readable medium,” “non-temporary machine-readable medium,” and “machine-readable storage device” is explicitly defined to exclude propagating signals. That is, when used in any claim of this patent, the terms “tangible machine-readable medium,” “non-temporary machine-readable medium,” and “machine-readable storage device” cannot be read if they are carried out by propagating signals.
[0093] The above specification describes specific embodiments. However, those skilled in the art will understand that various modifications and changes can be made without departing from the scope of the invention as set forth in the claims below. Accordingly, this specification and the drawings should be considered illustrative, not restrictive, and all such changes are intended to be within the scope of this teaching. Furthermore, the described embodiments / examples / implements should not be construed as mutually exclusive, but rather understood as potentially combinatorial if their combination is permissible in any way. In other words, any feature disclosed in any of the above embodiments / examples / implements may be included in any of the other above embodiments / examples / implements.
[0094] No advantage, superiority, solution to a problem, or any element that can produce or make more prominent any advantage, superiority, or solution should be construed as any material feature or element, essential feature or element, or intrinsic feature or element of any part or all of the claims. The claimed invention is defined solely by the attached claims, including any amendments made during the pendency of this application and all equivalents of the issued claims.
[0095] Furthermore, in this document, terms indicating relationships such as first and second, upper and lower may be used simply to distinguish one entity or action from another entity or action, without necessarily requiring or implying such an actual relationship or order between entities or actions. The terms “equip,” “have,” “possess,” “include,” “contain,” “contain,” or any other variation thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that equips, equips, equips, has, equips, or contains a list of elements may not contain only those elements, but may also contain other elements that are not expressly listed or that are inherent to such process, method, article, or apparatus. The element (~) in “...equips…a,” “...has…a,” “...includes…a,” and “...contains…a” does not, without further constraint, exclude the presence of additional identical elements in the process, method, article, or apparatus that equips, equips, has, equips, or contains this element. The terms “a” and “an” are defined as one or more unless otherwise expressly stated herein. The terms “substantially,” “basically,” “approximately,” “about,” or any other variation thereof are defined as “near,” as understood by those skilled in the art, and this term is defined as “within 10% in one non-limiting embodiment, within 5% in another embodiment, within 1% in another embodiment, and within 0.5% in another embodiment. The term “combined,” as used herein, is defined as “connected,” but not necessarily directly or mechanically. A device or structure “configured” in a certain way is configured at least in that way, but may also be configured in ways not listed.
[0096] To enable readers to quickly grasp the nature of the technical disclosure, an abstract of this disclosure is provided. This abstract is presented with the understanding that it is not used to interpret or limit the claims or their meaning. In addition, it can be understood that in the aforementioned “Modes for Carrying Out the Invention,” various features are grouped together in various embodiments in order to simplify the disclosure. The method of this disclosure should not be interpreted as reflecting an intention that the claimed embodiments require more features than those explicitly enumerated in each claim. Rather, as reflected in the following claims, the subject matter of the invention may consist of fewer features than all the features of a single disclosed embodiment combined. Accordingly, the following claims are incorporated herein into the “Modes for Carrying Out the Invention,” and each claim asserts itself as separately claimed subject matter.
Claims
1. A method for optimizing one or more decoder parameters of an Indicia decoder, The method involves applying a decoder algorithm to a first image dataset of a target object, detecting and decoding one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes the one or more indicia using a first set of parameters and a second set of parameters, and detecting and decoding. Based on the detection and decoding of one or more indicias represented in the first image dataset, the minimum and maximum values are determined for each parameter of the first set of parameters, The adjustment involves adjusting the parameters of the second set of parameters from a first value to a second value, wherein the first value is set to the parameter during the application of the decoder algorithm to the first image dataset. The decoder algorithm is applied to a second image dataset of the target object, and one or more indicias represented in the second image dataset are detected and decoded based on the minimum and maximum values of each parameter in the first set of parameters, and the second values of the parameters in the second set of parameters. A method comprising 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 second decoded indicia from the second image dataset with the number of first decoded indicia from the first image dataset.
2. The first set of parameters includes one or more of the following: (i) contrast threshold, (ii) quiet zone size, (iii) maximum rectangle ratio, (iv) minimum module size, (v) maximum module size, (vi) minimum number of rows, (vii) maximum number of rows, (viiii) minimum number of columns, or (ix) maximum number of columns. The method according to claim 1, wherein the second set of parameters includes one or more of (i) a decode search intensity level, (ii) a detection method, or (iii) a preferred barcode.
3. During the subsequent application of the decoder algorithm, setting the parameter of the second set of parameters to the first value or the second value is: The number of first decoded indicia from the first image dataset is compared with the number of second decoded indicia from the second image dataset, The method according to claim 1, further comprising comparing a first decoding time for each decoded indicia from the first image dataset with a second decoding time for the corresponding decoded indicia from the second image dataset, wherein the corresponding decoded indicia is identical to the decoded indicia.
4. It is determined that the first decoding time for the first decoded indicia from the first image dataset is smaller than the second decoding time for the corresponding decoded indicia from the second image dataset, The method according to claim 3, further comprising setting the parameters of the second set of parameters to the first values during subsequent application of the decoder algorithm.
5. (i) determining that the number of the first decoded indicia is less than the number of the second decoded indicia, and (ii) determining that the first decoding time for each decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset, The method according to claim 3, further comprising setting the parameters of the second set of parameters to the second value during subsequent application of the decoder algorithm.
6. Determining the minimum and maximum values for each parameter in the first set of parameters is The minimum and maximum values for each parameter of the first set of parameters are adjusted by the threshold of subsequent application of the decoder algorithm, The method according to claim 1, further comprising 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.
7. The method according to claim 1, wherein the second image dataset is the first image dataset, and the one or more indicias represented in the second image dataset are the one or more indicias represented in the first image dataset.
8. The number of first indicias is detected from the one or more indicias represented in the first image dataset, The method according to claim 1, further comprising detecting the number of second indicias from the one or more indicias represented in the second image dataset, wherein the number of first indicias and the number of second indicias are different.
9. Adjusting the parameters of the second set of parameters from the second value to the third value, The decoder algorithm is applied to a third image dataset of the target object, and one or more indicias represented in the third image dataset are detected and decoded based on the minimum and maximum values for each parameter in the first set of parameters, and the third values for the parameters in the second set of parameters. The method according to claim 1, further comprising, during the subsequent application of the decoder algorithm, 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, 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 the number of third decoded indicia from the third image dataset.
10. (a) Specifying the second image dataset as the current image dataset and specifying the parameters of the second set of parameters as the current parameters, (b) Automatically setting the current parameter to the first value or the second value, (c) Adjusting the subsequent parameters of the second set of parameters from the first value to the second value, (d) Acquiring subsequent images of the target object by an imaging device, wherein the subsequent images include a subsequent image dataset. (e) Applying the decoder algorithm to the subsequent image dataset and detecting and decoding one or more indicias represented in the subsequent image dataset based on the second value of the subsequent parameter, (f) During the subsequent application of the decoder algorithm, setting the subsequent parameter to one of the first value or the second value, (g) Specifying the subsequent image dataset as the current image dataset, and specifying the subsequent parameters as the current parameters, The method according to claim 1, further comprising (h) iteratively performing steps (c) to (h) until each parameter of the second set of parameters is set to either the first or the second value and applied as part of the decoder algorithm to at least one image dataset of the object in question.
11. A computer system for optimizing one or more decoder parameters of an Indicia decoder, One or more processors, The system comprises an imaging device and a non-temporary computer-readable memory coupled to one or more processors, wherein the memory stores instructions, and when an instruction is executed by one or more processors, the system provides the one or more processors with instructions. The method involves applying a decoder algorithm to a first image dataset of a target object, detecting and decoding one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes the one or more indicia using a first set of parameters and a second set of parameters, and detecting and decoding. Based on the detection and decoding of one or more indicias represented in the first image dataset, the minimum and maximum values are determined for each parameter of the first set of parameters, The adjustment involves adjusting the parameters of the second set of parameters from a first value to a second value, such that the first value is set to the parameter of the second set of parameters during the application of the decoder algorithm to the first image dataset. The decoder algorithm is applied to a second image dataset of the target object, and one or more indicias represented in the second image dataset are detected and decoded based on the minimum and maximum values of each parameter in the first set of parameters, and the second values of the parameters in the second set of parameters. A computer system that, during subsequent application of the decoder algorithm, performs the following: setting the parameters of the second set of parameters to one of the first or second values, based on a comparison of the number of second decoded indicia from the second image dataset with the number of first decoded indicia from the first image dataset.
12. The first set of parameters includes one or more of the following: (i) contrast threshold, (ii) quiet zone size, (iii) maximum rectangle ratio, (iv) minimum module size, (v) maximum module size, (vi) minimum number of rows, (vii) maximum number of rows, (viiii) minimum number of columns, or (ix) maximum number of columns. The computer system according to claim 11, wherein the second set of parameters includes one or more of (i) a decode search intensity level, (ii) a detection method, or (iii) a preferred barcode.
13. When the instruction is executed by one or more processors, the one or more processors: The number of first decoded indicia from the first image dataset is compared with the number of second decoded indicia from the second image dataset, The computer system according to claim 11, wherein, during subsequent application of the decoder algorithm, the parameters of the second set of parameters are set to the first or second values by comparing the first decoding time for each decoded indicia from the first image dataset with the second decoding time for the corresponding decoded indicia from the second image dataset, so that the corresponding decoded indicia is the same as the decoded indicia.
14. When the instruction is executed by one or more processors, the one or more processors: It is determined that the first decoding time for the first decoded indicia from the first image dataset is smaller than the second decoding time for the corresponding decoded indicia from the second image dataset, The computer system according to claim 13, wherein during the subsequent application of the decoder algorithm, the parameters of the second set of parameters are set to the first values.
15. When the instruction is executed by one or more processors, the one or more processors: (i) determining that the number of the first decoded indicia is less than the number of the second decoded indicia, and (ii) determining that the first decoding time for each decoded indicia from the first image dataset is less than the second decoding time for the corresponding decoded indicia from the second image dataset, The computer system according to claim 13, wherein during the subsequent application of the decoder algorithm, the parameters of the second set of parameters are set to the second values.
16. When the instruction is executed by one or more processors, the one or more processors: The minimum and maximum values for each parameter of the first set of parameters are adjusted by the threshold of subsequent application of the decoder algorithm, The computer system according to claim 11, wherein 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 during the subsequent application of the decoder algorithm.
17. The computer system according to claim 11, wherein the second image dataset is the first image dataset, and the one or more indicia represented in the second image dataset is the one or more indicia represented in the first image dataset.
18. When the instruction is executed by one or more processors, the one or more processors: The number of first indicias is detected from the one or more indicias represented in the first image dataset, The computer system according to claim 11, wherein the number of second indicias is detected from one or more indicias represented in the second image dataset, and the number of first indicias and the number of second indicias are different.
19. When the instruction is executed by one or more processors, the one or more processors: (a) Specifying the second image dataset as the current image dataset and specifying the parameters of the second set of parameters as the current parameters, (b) Automatically setting the current parameter to the first value or the second value, (c) Adjusting the subsequent parameters of the second set of parameters from the first value to the second value, (d) Having the imaging device acquire subsequent images of the target object, wherein the subsequent images include a subsequent image dataset. (e) Applying the decoder algorithm to the subsequent image dataset and detecting and decoding one or more indicias represented in the subsequent image dataset based on the second value of the subsequent parameter, (f) During the subsequent application of the decoder algorithm, setting the subsequent parameter to one of the first value or the second value, (g) Specifying the subsequent image dataset as the current image dataset, and specifying the subsequent parameters as the current parameters, (h) The computer system according to claim 11, which causes the computer system to iteratively perform steps (c) to (h) until each parameter in the second set of parameters is set to either the first value or the second value and applied as part of the decoder algorithm to at least one image dataset of the object in question.
20. A tangible machine-readable medium containing instructions for optimizing one or more decoder parameters of an Indicia decoder, wherein when the instructions are executed, the machine, The method involves applying a decoder algorithm to a first image dataset of a target object, detecting and decoding one or more indicia represented in the first image dataset, wherein the decoder algorithm detects and decodes the one or more indicia using a first set of parameters and a second set of parameters, and detecting and decoding. Based on the detection and decoding of one or more indicias represented in the first image dataset, the minimum and maximum values are determined for each parameter of the first set of parameters, The adjustment involves adjusting the parameters of the second set of parameters from a first value to a second value, such that the first value is set to the parameter of the second set of parameters during the application of the decoder algorithm to the first image dataset. The decoder algorithm is applied to a second image dataset of the target object, and one or more indicias represented in the second image dataset are detected and decoded based on the minimum and maximum values of each parameter in the first set of parameters, and the second values of the parameters in the second set of parameters. A tangible machine-readable medium that, 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, causes the decoder algorithm to at least set the parameters of the second set of parameters to one of the first or second values during subsequent application.
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
