Patent Description:
Scanning devices such as, for example, barcode scanners or other sensor devices, are often employed in material handling environments, as well as other environments related to access control, transportation and logistics, etc. However, inefficiencies and/or inaccuracies can occur as a result of factory pre-calibration of the aiming components within the scanning device.

<CIT> concerns devices and methods for reading picklists.

Aspects of the present invention are defined in the accompanying claims. According to a first aspect there is provided a scanning device in accordance with claim <NUM>. According to a second aspect there is provided a method in accordance with claim <NUM>. Advantageous optional features are defined in the dependent claims.

Various embodiments of the present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments of the invention are shown. Indeed, the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. The term "or" is used herein in both the alternative and conjunctive sense, unless otherwise indicated. The terms "illustrative," "example," and "exemplary" are used to be examples with no indication of quality level.

The phrases "in an embodiment," "in one embodiment," "according to one embodiment," and the like generally mean that the particular feature, structure, or characteristic following the phrase may be included in at least one embodiment of the present disclosure, and may be included in more than one embodiment of the present disclosure (importantly, such phrases do not necessarily refer to the same embodiment).

If the specification states a component or feature "can," "may," "could," "should," "would," "preferably," "possibly," "typically," "optionally," "for example," "often," or "might" (or other such language) be included or have a characteristic, that particular component or feature is not required to be included or to have the characteristic.

Scanning devices such as, for example, barcode scanners or other sensor devices, are often employed in material handling environments such as, for example, distribution centers, shipping centers, warehouses, factories, transportation and logistics environments, etc. Technological advancements have also resulted in the use of data capture devices in other types of environments such as access control for buildings or physical spaces, retail, healthcare, hospitality, etc..

Scanning devices can include aiming components to facilitate image data capture. For example, a scanning device can include one or more aiming devices to facilitate capturing data from a barcode that is associated with a particular object. It is therefore desirable for aiming components within a scanning device to be correctly calibrated for successful image data capture. However, factory-calibrated aiming components in a scanning device are generally only suitable for capturing image data (e.g., barcodes) that fall within a predefined tolerance. Thus, inaccuracies and/or inefficiencies may arise as an object that includes the barcode is moved closer or further away from the factory-calibrated aiming position of the aiming components within the scanning device. Furthermore, lateral and rotational movements of the scanning device itself may also cause the aiming components to fall outside of the factory-calibrated tolerances. An example aiming component is a laser aimer that generates laser aimer patterns (e.g., a laser aimer dot) that can be projected onto or near a barcode associated with an object in order to assist with image data capture. However, successful image data capture still relies on the object and/or scanning device to be within factory-calibrated tolerances even when utilizing laser aimer patterns for image data capture.

Certain types of scanning devices may employ a centering mode for aiming a barcode amongst multiple barcodes grouped closely together. For example, an object undergoing scanning by a scanning device may include multiple barcodes in close proximity of one another and the centering mode can be employed to scan a single barcode from the multiple barcodes. A centering mode generally employs a factory-calibrated position for the location of an aiming component such as, for example, a laser aimer. However, this calibrated position is only accurate for an object at a distance that corresponds to the calibration. As such, as the object that includes a barcode is moved from this calibrated distance, the actual position of the aiming component will differ from the calibration position. Further, scanning devices are generally configured to capture an image without a laser aimer pattern since the laser aimer pattern (e.g., a saturated laser aimer pattern) may interfere with decoding of a barcode.

Thus, to address these and/or other issues related to traditional image data capture by a scanning device, improved calibration for scanning device decoding is disclosed herein. The calibration for scanning device decoding is based on aimer pattern detection. Calibration of an aiming position is provided using correlation of a known position of an aimer pattern (e.g., a laser aimer pattern, a light source aimer pattern, a light-emitting diode (LED) aimer pattern, etc.) within two images. In various embodiments, improved center decode accuracy by aimer detecting after decoding can be provided. For instance, to improve accuracy of a centering mode, an aimer pattern can be captured and detected within the image. Additionally, the aimer pattern can be correlated to a position of a decoded barcode to calibrate an aiming position for the aimer pattern.

In various embodiments, the aimer pattern can be identified in a field of view of the scanning device and the identified aimer pattern can be correlated to an aimer pattern as it relates to a barcode in the field of view to be decoded. Once correlated, the aimer position can be calibrated, or "centered", such that the scanning device can more accurately sight barcodes in the field of view. As such, overall accuracy and efficiency of a scanning device can be increased. Additionally, an amount of time to successfully capture image data and/or decode a barcode can be reduced. In various embodiments, an imager of the scanning device can capture multiple image frames of an object with a barcode present in a field of view of the scanning device. At least a first image frame of first image data related to an object is captured by the scanning device with the aimer disabled and at least a second image frame of second image data related to the object is captured by the scanning device with the aimer enabled. Additionally, a location of an aimer pattern in the second image frame is determined based on a motion transform correlation between the barcode in the first image frame and the aimer pattern in the second image frame.

In various embodiments, calibration of an aiming position with respect to a position of a decoded barcode can be provided. For example, a first image frame of a barcode associated with an object can be captured without the aimer enabled and the barcode can be decoded. Additionally, after successful decoding of the barcode, a second image frame of the barcode containing an aimer pattern can be captured. In certain embodiments, the second image frame can be captured with the aimer enabled during exposure, thus capturing the aimer pattern in the second image frame. Movement between the first image frame containing the barcode and the second image frame containing the aimer pattern can then be calculated. In various embodiments, a motion transform correlation can be determined between the two captured image frames in order to identify the location of the aimer pattern in relation to the barcode and correlate the location information with a known position of the aimer within the scanning device. In certain embodiments, the position of the known aimer pattern can be correlated with the barcode to perform a centering mode and/or to adjust an aiming position of the scanning device based on the detected correlation. In various embodiments, an aimer of the scanning device can be calibrated, or "centered", such that the accuracy of the scanning device is improved, resulting in more efficient decoding of barcodes and resulting in fewer scanning errors. In various embodiments, once the calibration of the aimer has successfully completed, the decoded barcode data can be transmitted and/or further processed.

<FIG> illustrates a system <NUM> that provides an exemplary environment within which one or more described features of one or more embodiments of the disclosure can be implemented. The system <NUM> can be a scanning engine system in a material handling environment such as, for example, a distribution center, a shipping center, a warehouse, a factory, a transportation and logistics environment, or another type of material handling environment. However, it is to be appreciated that the system <NUM> can be similarly implemented in a different type of environment such as for access control for buildings or physical spaces, retail, healthcare, hospitality, etc. According to an embodiment, the system <NUM> provides a practical application of image processing with respect to one or more images to facilitate material handling and/or technical applications associated with access control for buildings or physical spaces, retail, healthcare, hospitality, etc..

The system <NUM> can be related to one or more technologies to facilitate image processing. Moreover, the system <NUM> can provide an improvement to one or more technologies such as conveyor system technologies, conveyor belt technologies, robotics technologies, sensor systems, material handling technologies, sortation system technologies, mixed stock-keeping unit (SKU) depalletizer technologies, mixed SKU palletizer technologies, industrial technologies, manufacturing technologies, distribution center technologies, warehouse technologies, automation technologies, imaging technologies, asset tracking and monitoring technologies, scanning technologies, digital technologies and/or other technologies.

The system <NUM> includes a scanning device <NUM>. The scanning device <NUM> can be a scanner (e.g., a barcode scanner, etc.), a smartphone, a tablet computer, a wearable device, a handheld computing device, an augmented reality device, a virtual reality device, a sensor device, or another type of scanning device capable of capturing imagery. In certain embodiments, the scanning device <NUM> can be a scan engine device (e.g., a two-dimensional scan engine device or a three-dimensional scan engine device). In one or more embodiments, the scanning device <NUM> includes an optical engine <NUM> and a processing device <NUM>. The optical engine <NUM> includes an imager <NUM>, an aimer <NUM>, and/or a processing device <NUM>. The imager <NUM> can be configured to obtain two or more frames (e.g., two or more image frames) associated with an object <NUM> within a field of view <NUM> of the imager <NUM>. In one or more embodiments, the imager <NUM> and/or the aimer <NUM> can be configured as portions of the optical engine <NUM> that includes light-generating devices, mirroring elements, electronic components, control components, and/or other components configured to obtain images within the field of view <NUM>. In various embodiments, the processing device <NUM> of the optical engine <NUM> can be configured with less processing power and/or a smaller physical size as compared to the processing device <NUM> of the scanning device <NUM>. For example, the processing device <NUM> of the scanning device <NUM> can be configured for image processing related to frames captured by the imager <NUM>. Additionally, the processing device <NUM> of the optical engine <NUM> can be configured for one or more calculations associated with the imager <NUM> and/or the aimer <NUM> that require less processing power than the image processing performed by the processing device <NUM> of the scanning device <NUM>. The object <NUM> can be a physical item, a digital item, an element, a device, equipment, or the like. For example, the object <NUM> can be a package, a parcel, a box, a case, a carton, a pallet, a piece of paper, a digital image, a display screen on a user device, and/or another object.

The object <NUM> includes at least one barcode <NUM> to be decoded by the scanning device <NUM>. The aimer <NUM> can be configured to project an aimer pattern <NUM> onto the object <NUM>. For example, the aimer <NUM> can project the aimer pattern <NUM> onto the barcode <NUM> associated with the object <NUM>. The aimer <NUM> can be a laser aimer, a light source aimer, an LED aimer, or another type of aimer configured to project the aimer pattern <NUM>. The aimer pattern <NUM> can be a laser aimer pattern, a light source aimer pattern, an LED aimer pattern, or another type of aimer pattern projected onto the object <NUM>. In one or more embodiments, the aimer pattern <NUM> can be configured as a customizable pattern (e.g., a customizable light source pattern) and/or a predefined pattern (e.g., a predefined light source pattern) projected by the aimer <NUM>. The barcode <NUM> can represent data in a visual machine-readable format. Additionally, the barcode <NUM> can be configured as a linear barcode (e.g., a one-dimensional barcode), a 2D barcode, a matrix barcode, a quick response (QR) code, or another type of machine-readable symbol configured to represent data in a visual machine-readable format.

The processing device <NUM> is configured to execute one or more computing processes related to data capture and/or image processing performed by the scanning device <NUM>. In various embodiments, the processing device <NUM> can be configured to perform image processing with respect to barcode <NUM> based on the aimer pattern <NUM> determined by the processing device <NUM>. In various embodiments, the processing device <NUM> can improve performance of the scanning device <NUM>. For example, processing device <NUM> can provide improved efficiency and/or performance for the scanning device <NUM>, improved handling of objects scanned by the scanning device <NUM>, and/or increased speed of transportation of the objects via a material handling system, as compared to conventional material handling systems. Moreover, by performing image processing with respect to barcode <NUM> based on the aimer pattern <NUM> determined by the processing device <NUM>, a number of computing resources employed by the processing device <NUM> can be reduced.

<FIG> illustrates an exemplary embodiment of the processing device <NUM> within which one or more described features of one or more embodiments of the disclosure can be implemented. The processing device <NUM> includes a decoder component <NUM>, an aimer calibration component <NUM> and an optional image output component <NUM>. Additionally, the processing device <NUM> includes a processor <NUM> and a memory <NUM>. In certain embodiments, one or more aspects of the processing device <NUM> (and/or other systems, apparatuses and/or processes disclosed herein) constitute executable instructions embodied within a computer-readable storage medium (e.g., the memory <NUM>). For instance, in an embodiment, the memory <NUM> stores computer executable component and/or executable instructions (e.g., program instructions). Furthermore, the processor <NUM> facilitates execution of the computer executable components and/or the executable instructions (e.g., the program instructions). In an example embodiment, the processor <NUM> can be configured to execute instructions stored in the memory <NUM> or otherwise accessible to the processor <NUM>.

The processor <NUM> is a hardware entity (e.g., physically embodied in circuitry) capable of performing operations according to one or more embodiments of the disclosure. Alternatively, in an embodiment where the processor <NUM> is embodied as an executor of software instructions, the software instructions can configure the processor <NUM> to perform one or more algorithms and/or operations described herein in response to the software instructions being executed. In an embodiment, the processor <NUM> can be a single core processor, a multi-core processor, multiple processors internal to the processing device <NUM>, a remote processor (e.g., a processor implemented on a server), and/or a virtual machine. In certain embodiments, the processor <NUM> can be in communication with the memory <NUM>, the decoder component <NUM>, the aimer calibration component <NUM> and/or the image output component <NUM> via a bus to, for example, facilitate transmission of data among the processor <NUM>, the memory <NUM>, the decoder component <NUM>, the aimer calibration component <NUM> and/or the image output component <NUM>. The processor <NUM> can be embodied in a number of different ways and can, in certain embodiments, include one or more processing devices configured to perform independently. Additionally, or alternatively, the processor <NUM> can include one or more processors configured in tandem via a bus to enable independent execution of instructions, pipelining of data, and/or multi-thread execution of instructions. The memory <NUM> can be non-transitory and can include, for example, one or more volatile memories and/or one or more non-volatile memories. In other words, for example, the memory <NUM> can be an electronic storage device (e.g., a computer-readable storage medium). The memory <NUM> can be configured to store information, data, content, one or more applications, one or more instructions, or the like, to enable the processing device <NUM> to carry out various functions in accordance with one or more embodiments disclosed herein. As used herein in this disclosure, the term "component," "system," "device," and the like, can be and/or can include a computer-related entity. For instance, "a component," "a system," "a device," and the like disclosed herein can be either hardware, software, or a combination of hardware and software. As an example, a component can be, but is not limited to, a process executed on a processor, a processor, circuitry, an executable component, a thread of instructions, a program, and/or a computer entity.

The processing device <NUM> receives an image frame <NUM> and an aimer image frame <NUM>. The image frame <NUM> and the aimer image frame <NUM> are image frames of image data captured by the scanning device <NUM>. For example, the image frame <NUM> and the aimer image frame <NUM> are image frames of image data captured by the imager <NUM> of the scanning device <NUM>. The image frame <NUM> and the aimer image frame <NUM> can be encoded and/or represented in one or more formats such as JPEG, Bitmap, PNG, RAW, and/or another type of data format. The image frame <NUM> and the aimer image frame <NUM> can also respectively include a set of pixels configured as groupings of pixels. In various embodiments, the groupings of pixels for the image frame <NUM> and the aimer image frame <NUM> can be mapped into matrix representations. In such embodiments, the matrix values can represent coordinates that relate to the positions of objects in the first and second frames of image data. For example, the relative location of a captured barcode can be expressed as matrix coordinates. Additionally, the location of an aimer pattern can also be expressed in a matrix and its coordinates stored, for example, in processing device <NUM>. The image frame <NUM> is a first image frame related to an object (e.g., the object <NUM>) associated with a barcode (e.g., the barcode <NUM>). Additionally, the aimer image frame <NUM> is a second image frame that includes an aimer pattern (e.g., the aimer pattern <NUM>) generated by the aimer <NUM> of the scanning device <NUM>. In various embodiments, the barcode <NUM> can be configured as a linear barcode (e.g., a one-dimensional barcode), a 2D barcode, a matrix barcode, a QR code, or another type of machine-readable symbol configured to represent data in a visual machine-readable format.

The decoder component <NUM> is configured to decode the image frame <NUM>. For example, the decoder component <NUM> performs one or more decoding processes to decode the image frame <NUM> and/or the barcode <NUM> included in the image frame <NUM>. In various embodiments, the decoder component <NUM> can decode the image frame <NUM> based on a pre-calibrated aiming position of the aimer <NUM>. In certain embodiments, the decoder component <NUM> can decode encoded data related to the barcode <NUM> to provide decoded data. The decoded data can be, for example, identifying information and/or data related to the object <NUM>. Additionally, the decoded data can include information such as, but not limited to, numbers, names, descriptions, locations, quantities, statuses, defects, deficiencies, routing data, ownership data, shipping data, fulfillment data, other barcode-related data, and the like. Additionally, in certain embodiments, the decoder component <NUM> can relay the decoded data to the image output component <NUM> to be compiled into one or more portions of image output data <NUM> for transmission by the scanning device <NUM>. In various embodiments, the aimer calibration component <NUM> can direct the optical engine <NUM> of the scanning device <NUM> to capture the aimer image frame <NUM> with the aimer <NUM> enabled during exposure such that the aimer image frame <NUM> comprises the aimer pattern <NUM>. In various embodiments, the aimer calibration component <NUM> can capture the aimer image frame <NUM> using the scanning device <NUM> in response to a determination that the decoding of the image frame <NUM> satisfies defined criteria such as, for example, that a decoding process is finished, that the barcode <NUM> is successfully recognized, etc. In various embodiments, the decoder component <NUM> can select the barcode <NUM> from a plurality of barcodes on the object <NUM> (e.g., during a centering mode of the scanning device <NUM>). Additionally, the decoder component <NUM> can decode a portion of the first image data associated with the barcode <NUM> and the aimer calibration component <NUM> can capture the aimer image frame <NUM> using the scanning device <NUM> in response to a determination that decoding of the first image data associated with the barcode <NUM> satisfies the defined criteria.

The aimer calibration component <NUM> can be configured to perform calibration for scanning device decoding related to the barcode <NUM>. The aimer calibration component <NUM> determines a location of the aimer pattern <NUM> in the aimer image frame <NUM> based on a motion transform correlation between the barcode <NUM> in the image frame <NUM> and the aimer pattern <NUM> in the aimer image frame <NUM>. Additionally, the aimer calibration component <NUM> calibrates an aiming position of the aimer <NUM> based on the location of the aimer pattern <NUM> determined by the motion transform correlation. In various embodiments, the aimer calibration component <NUM> can perform the motion transform correlation in response to a determination, based on an image recognition process with respect to the aimer image frame <NUM>, that the aimer pattern <NUM> is included in the aimer image frame <NUM>.

The motion transform correlation can determine movement and/or changes with respect to one or more pixels between the image frame <NUM> and the aimer image frame <NUM>. For example, in various embodiments, the aimer calibration component <NUM> can determine a location of the aimer pattern <NUM> in the aimer image frame <NUM> based on a comparison between respective differences between first pixel data for a first grouping of pixels related to the image frame <NUM> and second pixel data for a second grouping of pixels related to the aimer image frame <NUM>. Pixel movement can include translation, rotation, or other motion related to pixels. In certain embodiments, the motion transform correlation can correspond to a distance transform correlation with respect to one or more pixels between the image frame <NUM> and the aimer image frame <NUM>. For example, in certain embodiments, the distance transform correlation can be a distance measure associated with a x-direction translation, a y-direction translation, and/or a z-distance translation with respect to one or more pixels between the image frame <NUM> aimer image frame <NUM>.

In various embodiments, the motion transform correlation can employ keypoint detection. For example, the aimer calibration component <NUM> can detect a first set of keypoints in the image frame <NUM> related to the barcode <NUM>. The first set of keypoints can be a set of interest points related to the barcode <NUM>. In various embodiments, the first set of keypoints can correspond to a set of coordinate points (e.g., x-coordinates, y-coordinates, and/or z-coordinates) related to the barcode <NUM>. Additionally, the aimer calibration component <NUM> can detect a second set of keypoints in the aimer image frame <NUM> related to the aimer pattern <NUM>. The second set of keypoints can be a set of interest points related to the aimer pattern <NUM>. In various embodiments, the second set of keypoints can correspond to a set of coordinate points (e.g., x-coordinates, y-coordinates, and/or z-coordinates) related to the aimer pattern <NUM>. In addition, the aimer calibration component <NUM> can perform the motion transform correlation based on the first set of keypoints related to the barcode <NUM> and the second set of keypoints related to the aimer pattern <NUM>.

In various embodiments, the aimer calibration component <NUM> can generate a transform matrix based on the motion transform correlation. The transform matrix can be associated with relative motion between the image frame <NUM> and the aimer image frame <NUM>. In certain embodiments, the transform matrix can be configured to be applied to the image frame <NUM> to output the adjusted aimer position. For example, the aimer calibration component <NUM> can apply the transform matrix to the image frame <NUM> to determine a degree of calibration for the aiming position of the aimer <NUM>. Additionally or alternatively, the aimer calibration component <NUM> can configure a centering mode for the scanning device <NUM> based on the calibrated aiming position of the aimer <NUM>.

In one or more embodiments, the image output component <NUM> can receive data from the decoder component <NUM> and/or the aimer calibration component <NUM> such as, for example, data associated with the decoding of the barcode <NUM>, a decoded version of the barcode <NUM>, data associated with the known position of the aimer <NUM>, data associated with improved calibration settings for the aimer <NUM>, data associated with the location of the aimer pattern <NUM> as correlated by the motion transform between image frame <NUM> and aimer image frame <NUM>, and/or a transformed version of the image frame <NUM> based on the location of the aimer pattern <NUM> in the aimer image frame <NUM>. In various embodiments, the image output component <NUM> can compile the data received from the decoder component <NUM> and/or the aimer calibration component <NUM> into image output data <NUM>.

In various embodiments, the image output component <NUM> can transmit the image output data <NUM> to one or more components of the scanning device <NUM> and/or one or more devices in communication with the scanning device <NUM>. In various embodiments, the image output component <NUM> can transmit at least a portion of the image output data <NUM> in response to a determination that the location of the aimer pattern <NUM> satisfies a defined degree of tolerance with respect to the barcode <NUM>. In certain embodiments, the image output component <NUM> can transmit the image output data <NUM> to provide further data formatting associated with the image output data <NUM>. In various embodiments, the processing device <NUM> can transmit the image output data <NUM> to user computing devices through communication channels comprising one or more wired communication channels (e.g., universal serial bus (USB) connections, etc.), wireless communication networks utilizing application programming interface (API) function calls, near-field communication protocols such as Bluetooth®, radio signals, and the like. In various embodiments, the processing device <NUM> can format the image output data <NUM> for display on the scanning device <NUM> and/or via one or more graphical user interfaces of a user computing device.

<FIG> illustrates a system <NUM> related to calibration for scanning device decoding based on aimer pattern detection according to one or more embodiments of the disclosure. The system <NUM> includes a process <NUM> associated with image decoding and is configured to decode the image frame <NUM>. The image frame <NUM> is captured using a scanning device. Additionally, the image frame <NUM> is related to an object associated with a barcode (e.g., the barcode <NUM>). The process <NUM> can be performed by the processing device <NUM> (e.g., the decoder component <NUM>) of the scanning device <NUM>. For example, in various embodiments, the process <NUM> can include one or more processes performed by the decoder component <NUM>, the aimer calibration component <NUM>, and/or the image output component <NUM>. The process <NUM> can be configured to decode encoded barcode data from barcode <NUM> to generate decoded barcode data <NUM> based on image processing with respect to the image frame <NUM>. In various embodiments, the decoded barcode data <NUM> can be data related to the object <NUM>. In various embodiments, the decoded barcode data <NUM> can include identifying information and/or data related to the object <NUM> such as, for example, numbers, names, descriptions, locations, quantities, statuses, defects, deficiencies, routing data, ownership data, shipping data, fulfillment data, other barcode-related data.

The system <NUM> additionally includes a process <NUM> associated with calculating a motion transform correlation between two or more image frames (e.g., image frame <NUM> and aimer image frame <NUM>). The resulting motion transform correlation associated with the process <NUM> can include data regarding a location of an aimer pattern (e.g., aimer pattern <NUM>) as it relates to the barcode <NUM> associated with the object <NUM>. In various embodiments, the resulting motion transform correlation associated with the process <NUM> can include data regarding a location of the aimer pattern <NUM> in the aimer image frame <NUM>. The process <NUM> can be performed by the processing device <NUM> (e.g., the aimer calibration component <NUM>) of the scanning device <NUM>. Additionally, the process <NUM> can compute aimer position data <NUM> based on a comparison between the decoded barcode data <NUM> and the aimer pattern <NUM> in the aimer image frame <NUM>. The aimer position data <NUM> can be a correlation between the location of the aimer pattern <NUM> in the aimer image frame <NUM> as it relates to the barcode <NUM> in the image frame <NUM> based on the motion transform correlation. In various embodiments, the aimer position data <NUM> comprises a position of the aimer <NUM>, a location of the aimer pattern <NUM> as is relates to barcode <NUM> in image frame <NUM> or aimer image frame <NUM>, a distance of the scanning device <NUM> from the object <NUM>, and/or an orientation of the scanning device <NUM>. In various embodiments, the process <NUM> can additionally or alternatively compute the relative coordinates, boundaries, and/or measurements of the barcode <NUM> captured in the image frame <NUM> and aimer image frame <NUM>.

The system <NUM> additionally includes a process <NUM> associated with calibration of the scanning device <NUM> and/or the aimer <NUM> of the scanning device <NUM>. The process <NUM> can be performed by the processing device <NUM> (e.g., the aimer calibration component <NUM>) of the scanning device <NUM>. In various embodiments, the process <NUM> can employ the aimer position data <NUM> for one or more calibration processes to improve center decode accuracy for the scanning device <NUM>. In various embodiments, the process <NUM> is associated with calibrating, or "centering", the aimer <NUM> of the scanning device <NUM>. For example, the process <NUM> can employ data from the aimer position data <NUM> in order to calibrate, or recalibrate, the position of the aimer <NUM>. In various embodiments, the process <NUM> can provide at least a portion of the image output data <NUM> to, for example, calibrate an aiming position of the aimer <NUM> based on the location of the aimer pattern included in the aimer position data <NUM>. In one or more embodiments, the process <NUM> can directs the optical engine <NUM> to alter an aimer position of the aimer <NUM> based on the aimer position data <NUM> in order to improve the center decode accuracy of scanning device <NUM>. In various embodiments, the system <NUM> of <FIG>, as employed by the processing device <NUM>, can be configured to compile all data from its respective processes <NUM>, <NUM>, and <NUM> into image output data <NUM>. The image output data <NUM> can include the decoded barcode data <NUM>, the aimer position data <NUM>, the motion transform correlation, and/or data from image frame <NUM> and aimer image frame <NUM>. In one or more embodiments, the processing device <NUM> can transmit the image output data <NUM> to one or more other components of the scanning device <NUM> and/or one or more user computing devices.

<FIG> illustrates an image <NUM> according to one or more embodiments of the disclosure. The image <NUM> can be an image captured by the scanning device <NUM>. For example, the image <NUM> can be an image captured by the imager <NUM> of the scanning device <NUM>. The image <NUM> can be encoded and/or represented in one or more formats such as JPEG, Bitmap, PNG, RAW, and/or another type of data format. The image <NUM> can also respectively include a set of pixels configured as a grouping of pixels. In one or more embodiments, the scanning device <NUM> (e.g., the imager <NUM> of the scanning device <NUM>) can capture the image <NUM> using the aimer pattern <NUM> via the aimer <NUM>. For instance, the image <NUM> can include the barcode <NUM> and the aimer pattern <NUM> employed by the aimer <NUM> to locate and/or identify the barcode <NUM>. In this regard, in one or more embodiments, the image <NUM> can correspond to the aimer image frame <NUM>.

<FIG> illustrates a computer-implemented method <NUM> for calibrating scanning device decoding based on aimer pattern detection in accordance with one or more embodiments described herein. In one or more embodiments, the computer-implemented method <NUM> can be employed by the processing device <NUM>. In various embodiments, the computer-implemented method <NUM> provides for calibrating, or "centering", an aimer (e.g., the aimer <NUM> of scanning device <NUM>) so as to improve the center decode accuracy of the scanning device after decoding a barcode (e.g., barcode <NUM> associated with object <NUM>). In one or more embodiments, the computer-implemented method <NUM> begins at step <NUM> where an image of a barcode is captured by a scanning device without enabling an aimer of a scanning device during exposure. For example, a barcode <NUM> can be captured in the image frame <NUM> by the scanning device <NUM>) without enabling the aimer <NUM>.

The computer-implemented method <NUM> also includes a step <NUM> where the barcode is decoded if the barcode is within a predefined tolerance set by a pre-calibrated position of the aimer. The computer-implemented method <NUM> also includes a step <NUM> that determines whether the barcode from step <NUM> has been successfully decoded. In various embodiments, a successfully decoded barcode can be formatted for transmission with a successfully recognized barcode. In various embodiments, if the barcode is not decoded (e.g., the barcode was not successfully decoded), the computer-implemented method <NUM> can return to step <NUM> to re-capture an image of the barcode associated with the object without enabling the aimer. Alternatively, if the barcode is decoded (e.g., the barcode is successfully decoded), the computer-implemented method <NUM> can proceed to step <NUM>. At step <NUM>, another image frame of the barcode associated with the object is captured with the aimer enabled during exposure. For example, the aimer <NUM> can be enabled and can project the aimer pattern <NUM> (e.g., a laser dot, etc.) onto or near the barcode <NUM> associated with object <NUM> such that the aimer pattern <NUM> is captured in the aimer image frame <NUM>.

The computer-implemented method <NUM> also includes a step <NUM> to determine whether an aimer pattern is detected. For example, the step <NUM> can determine whether an aimer pattern is detected within the other image frame captured at step <NUM>. In certain embodiments, image recognition can be employed to detect the aimer pattern <NUM> in the other image frame captured at step <NUM>. In various embodiments, once the captured image data containing the aimer pattern is processed, a search can be performed. In certain embodiments, the aimer image frame <NUM> can be searched for stored images of known aimer patterns (e.g., a dot or a crosshair) and, once located, the coordinates of the aimer pattern <NUM> can be stored in memory (e.g., memory <NUM>). In alternative embodiments, an aimer pattern can be determined in the other image frame based on a comparison between respective differences between the first pixel data for the first grouping of pixels and the second pixel data for the second grouping of pixels. In response to a determination that an aimer pattern is not detected, the computer-implemented method returns to step <NUM> to re-capture another image of the barcode associated with the object with the aimer enabled during exposure. However, in response to a determination that the aimer pattern is detected, the computer-implemented method proceeds to step <NUM>.

At step <NUM>, a motion transform between the image with the decoded barcode and the image containing the aimer pattern is computed. For example, a motion transform correlation can be performed in response to a determination, based on an image recognition process with respect to other image frame captured at step <NUM>, that the aimer pattern is included in the other image frame. In various embodiments, the motion transform correlation can be calculated between the image with the decoded barcode from step <NUM> (e.g., image frame <NUM>) and the other image containing the aimer pattern from step <NUM> (e.g., aimer image frame <NUM>). The results of the motion transform correlation can be employed, for example, by the processing device <NUM> to compute the location of the aimer pattern <NUM> as it relates to the barcode. Additionally, the known position of the aimer (e.g., the aimer <NUM>) in the scanning device is correlated with the aimer pattern as it relates to the barcode in the motion transform correlation. For example, the orientation and/or position of the aimer <NUM> in the scanning device <NUM> can be correlated with the location of the aimer pattern <NUM> as it relates to the barcode <NUM> of the resulting motion transform between the image frame <NUM> and the aimer image frame <NUM>.

The computer-implemented method <NUM> also includes a step <NUM> that adjusts aimer position based on detected location of the aimer pattern. For example, an aimer position of the aimer (e.g., the aimer <NUM>) can be adjusted based on the detected location of the aimer pattern <NUM> determined in step <NUM>. In various embodiments, the aiming position of the aimer can be calibrated, or "centered", based on the location of the aimer pattern determined by the motion transform correlation of step <NUM>. For example, the aimer calibration component <NUM> of the processing device <NUM> can direct the optical engine <NUM> to change or alter the orientation of the aimer <NUM> based on the motion transform correlation between the original position of the aimer <NUM> and the aimer pattern <NUM> as it relates to the barcode <NUM> determined in step <NUM> so as to improve the accuracy and efficiency of scanning device <NUM>.

The computer-implemented method <NUM> also includes a step <NUM> that determines whether the aimer pattern is within a certain tolerance with respect to the barcode. For example, step <NUM> can determine whether the aimer is sighted within a predefined tolerance and/o whether the aimer pattern is projecting onto or near a barcode within an acceptable proximity tolerance. In various embodiments, if a calibration process related to step <NUM> causes the aimer <NUM> of scanning device <NUM> to re-position itself outside of an acceptable tolerance, the aimer pattern can be determined to exceed the certain tolerance with respect to the barcode. Additionally, the check related to step <NUM> may fail if the aimer pattern <NUM>, when projected onto or near the barcode <NUM>, falls outside of the accepted proximity tolerance after calibration. In response to a determination that the aimer pattern is not within the certain tolerance with respect to the barcode (e.g., if it is determined that the aimer position and/or the aimer pattern projection fail to meet the predefined tolerances), the computer-implemented method <NUM> can return to step <NUM> where an image is re-captured without enabling the aimer. However, in response to a determination that the aimer pattern is within the certain tolerance with respect to the barcode, the computer-implemented method <NUM> proceed to step <NUM>.

At step <NUM>, barcode data is transmitted. For example, in response to a determination that the location of the aimer pattern satisfies a defined degree of tolerance with respect to the barcode, the processing device <NUM> can transmit at least a portion of image data associated with the barcode. Additionally or alternatively, in various embodiments, the processing device <NUM> can transmit at least a portion of the image output data <NUM> associated with the decoded barcode data <NUM>, the aimer position data <NUM>, the calculated motion transform, and/or data from image frame <NUM> and aimer image frame <NUM>.

<FIG> illustrates a computer-implemented method <NUM> for calibrating scanning device decoding based on aimer pattern detection in accordance with one or more embodiments described herein. In one or more embodiments, the computer-implemented method <NUM> can be performed by the processing device <NUM>. In one or more embodiments, the computer-implemented method <NUM> begins with decoding a first image frame of first image data captured using a scanning device, where the first frame is related to an object associated with a barcode (step <NUM>). In one or more embodiments, the first frame of image data is captured by the scanning device without an aimer enabled during exposure. For example, image frame <NUM> is captured by scanning device <NUM> without enabling the aimer <NUM> to generate a aimer pattern <NUM> during exposure. Additionally, processing device <NUM> decodes the encoded data stored in the barcode captured in the image frame (e.g., barcode <NUM>). The encoded data can be identifying information and data related to the object comprising numbers, names, descriptions, locations, quantities, statuses, defects, deficiencies, routing data, ownership data, shipping data, fulfillment data, and/or other barcode-related data.

In one or more embodiments, decoding the first image frame of first image data comprises selecting the barcode from a plurality of barcodes on the object, decoding a portion of the first image data associated with the barcode, and/or capturing the second image frame using the scanning device in response to a determination that decoding of the first image data associated with the barcode satisfies defined criteria.

The computer-implemented method <NUM> further includes capturing, using the scanning device, a second image frame of second image data related to the object associated with the barcode, where the second image frame comprises an aimer pattern generated by an aimer of the scanning device (step <NUM>). For example, scanning device <NUM> can enable the aimer <NUM> which generates a aimer pattern <NUM> such that the aimer pattern <NUM> and the barcode <NUM> associated with the object <NUM> is captured in the aimer image frame <NUM>.

In one or more embodiments, the image frame <NUM> and the aimer image frame <NUM> can respectively include a set of pixels configured as groupings of pixels. The groupings of pixels for the image frame <NUM> and the aimer image frame <NUM> can be mapped into a matrix representation. In such embodiments, the matrix values can represent coordinates that relate to the positions of objects in the first and second image frames. For example, the relative location of a captured barcode can be expressed as matrix coordinates. Additionally, the location of an aimer pattern can also be expressed in a matrix and its coordinates stored, for example, in processing device <NUM>.

The computer-implemented method <NUM> further includes determining a location of the aimer pattern in the second image frame based on a motion transform correlation between the barcode in the first image frame and the aimer pattern in the second image frame (step <NUM>). For instance, the location of aimer pattern <NUM> can be determined based a motion transform correlation between the image frame <NUM> and the aimer image frame <NUM>. In certain embodiments, the aimer pattern can be identified and located in a frame of image data using one or more image recognition techniques. For instance, once the captured image data containing the aimer pattern is processed, a search for a predefined aimer pattern can be performed. In certain embodiments, the aimer image frame <NUM> can be analyzed to determine whether the aimer pattern matches one or more stored images of known aimer patterns (e.g., a dot or a crosshair) and, once located, the coordinates of the aimer pattern <NUM> can be stored in memory (e.g., memory <NUM>). In alternative embodiments, a location of an aimer pattern can be determined in the second image frame based on a comparison between respective differences between the first pixel data for the first grouping of pixels and the second pixel data for the second grouping of pixels. In certain embodiments, the location of the aimer pattern in the second image frame can be determined based on a distance transform correlation between the barcode in the first image frame and the aimer pattern in the second image frame. For example, in certain embodiments, the motion transform correlation can correspond to a distance transform correlation with respect to one or more pixels between the first image frame and the second image frame.

Additionally, the computer-implemented method <NUM> can correlate an aiming position of the aimer in the scanning device with the location of the aimer pattern as it relates to the barcode in the motion transform. In certain embodiments, executable instructions stored in the processing device (e.g., processing device <NUM>) can cause the processor to compute the motion transform between the first frame of image data and the second image frame using a keypoint detection algorithm to detect areas of interest such as barcode <NUM>. For example, the processing device <NUM> can detect a first set of keypoints in the first image frame related to the barcode, detect a second set of keypoints in the second image frame related to the aimer pattern and perform the motion transform correlation based on the first set of keypoints related to the barcode and the second set of keypoints related to the aimer pattern. Furthermore, the executable instructions can cause the processing device to correlate the keypoints between the first and second image frames of image data and calculate the relative motion between the first frame and the second image frame to generate a transform matrix. In various embodiments, the results of the motion transformation calculations can be employed to correlate the position of the aimer in the scanning device (e.g., aimer <NUM>) with the transform matrix coordinates of the aimer pattern (e.g., aimer pattern <NUM>). Additionally, the transform matrix can be applied to the first image frame to determine a degree of calibration for the aiming position of the aimer. In various embodiments, the degree of calibration for the aiming position of the aimer can be checked against predefined aiming tolerances to provide improved accuracy and/or efficiency for the scanning device.

The computer-implemented method <NUM> further includes calibrating an aiming position of the aimer based on the location of the aimer pattern determined by the motion transform correlation (step <NUM>). In various embodiments, the correlation between the aiming position of the aimer and the location of the aimer pattern in relation to the barcode in the image frame can be employed to calibrate the position of the aimer. For example, the aimer calibration component <NUM> of the processing device <NUM> can direct the optical engine <NUM> to change or alter the orientation of the aimer <NUM> based on the correlation between the original position of the aimer <NUM> and the aimer pattern <NUM> as it relates to the barcode <NUM> of the motion transform correlation to improve accuracy and/or efficiency of scanning device <NUM>. Furthermore, in one or more embodiments, the aimer calibration component <NUM> can additionally or alternatively configure a centering mode for the scanning device based on the calibrated aiming position of the aimer.

The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may include a general purpose processor, a digital signal processor (DSP), a special-purpose processor such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA), a programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any processor, controller, microcontroller, or state machine. Alternatively, or in addition, some steps or methods may be performed by circuitry that is specific to a given function.

In one or more example embodiments, the functions described herein may be implemented by special-purpose hardware or a combination of hardware programmed by firmware or other software. In implementations relying on firmware or other software, the functions may be performed as a result of execution of one or more instructions stored on one or more non-transitory computer-readable media and/or one or more non-transitory processor-readable media. These instructions may be embodied by one or more processor-executable software modules that reside on the one or more non-transitory computer-readable or processor-readable storage media. Non-transitory computer-readable or processor-readable storage media may in this regard comprise any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable media may include random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), FLASH memory, disk storage, magnetic storage devices, or the like. Disk storage, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc™, or other storage devices that store data magnetically or optically with lasers. Combinations of the above types of media are also included within the scope of the terms non-transitory computer-readable and processor-readable media. Additionally, any combination of instructions stored on the one or more non-transitory processor-readable or computer-readable media may be referred to herein as a computer program product.

Claim 1:
A scanning device (<NUM>), wherein the scanning device (<NUM>) comprises:
a processor (<NUM>);
an aimer (<NUM>) for generating an aimer pattern; and
a memory (<NUM>) that stores executable instructions that, when executed by the processor (<NUM>), cause the processor (<NUM>) to:
decode (<NUM>) a first image frame (<NUM>) of first image data captured using the scanning device (<NUM>), wherein the first image frame is related to an object (<NUM>) associated with a barcode;
capture (<NUM>), using the scanning device (<NUM>), a second image frame (<NUM>) of second image data related to the object associated with the barcode, wherein the second image frame comprises the aimer pattern (<NUM>) generated by the aimer (<NUM>) of the scanning device (<NUM>);
characterized in that the executable instructions, when executed by the processor, further cause the processor to: determine (<NUM>) a location of the aimer pattern in the second image frame based on a motion transform correlation between the barcode in the first image frame and the aimer pattern in the second image frame; and
calibrate (<NUM>) an aiming position of the aimer based on the location of the aimer pattern determined by the motion transform correlation.