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 traditional data capture and/or image processing performed by a scanning device.

<CIT> discloses a method for operating an imaging device. The method includes activating a first image sensor at a first duty cycle within a first time period. The method further includes activating a second image sensor at a second duty cycle within the first time period. Additionally, the method includes modifying at least one of the first duty cycle or the second duty cycle based on at least a workflow associated an operator of the imaging device.

<CIT> discloses an on-axis aimer and distance measurement apparatus for a vision system which can include a light source configured to generate a first light beam along a first axis.

<CIT> discloses an optical reader including an image sensor, imaging optics, a short range aiming assembly, and a long range aiming assembly.

In accordance with an embodiment of the present disclosure, a system comprises a processor and a memory. The memory stores executable instructions that, when executed by the processor, cause the processor to capture, using a scanning device, a first frame and a second frame of image data related to an object associated with a barcode, wherein the first frame is captured using a laser aimer pattern and the second frame is captured without using the laser aimer pattern. The executable instructions, when executed by the processor, also cause the processor to compute a difference between first pixel data for a first grouping of pixels associated with the first frame and second pixel data for a second grouping of pixels associated with the second frame. The executable instructions, when executed by the processor, also cause the processor to determine a location of the laser aimer pattern in the first frame or the second 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, wherein the laser aimer pattern is created by the scanning device. The executable instructions, when executed by the processor, also cause the processor to compute a distance between an optical engine of the scanning device and the object based on the location of the laser aimer pattern. The executable instructions, when executed by the processor, also cause the processor to perform image processing with respect to the barcode included in the first frame associated with the laser aimer pattern based on the distance between the optical engine of the scanning device and the object.

In accordance with another embodiment of the present disclosure, a method provides for capturing, using a scanning device, a first frame and a second frame of image data related to an object associated with a barcode, wherein the first frame is captured using a laser aimer pattern and the second frame is captured without using the laser aimer pattern. The method also provides for computing a difference between first pixel data for a first grouping of pixels associated with the first frame and second pixel data for a second grouping of pixels associated with the second frame. The method also provides for determining a location of the laser aimer pattern in the first frame or the second 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, wherein the laser aimer pattern is created by the scanning device. The method also provides for computing a distance between an optical engine of the scanning device and the object based on the location of the laser aimer pattern. The method also provides for performing image processing with respect to the barcode included in the first frame associated with the laser aimer pattern based on the distance between the optical engine of the scanning device and the object.

In accordance with yet another embodiment of the present disclosure, a computer program product is provided. The computer program product comprises at least one computer-readable storage medium having program instructions embodied thereon, the program instructions executable by a processor to cause the processor to capture, using a scanning device, a first frame and a second frame of image data related to an object associated with a barcode, wherein the first frame is captured using a laser aimer pattern and the second frame is captured without using the laser aimer pattern. The program instructions are also executable by the processor to cause the processor to compute a difference between first pixel data for a first grouping of pixels associated with the first frame and second pixel data for a second grouping of pixels associated with the second frame. The program instructions are also executable by the processor to cause the processor to determine a location of the laser aimer pattern in the first frame or the second 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, wherein the laser aimer pattern is created by the scanning device. The program instructions are also executable by the processor to cause the processor to compute a distance between an optical engine of the scanning device and the object based on the location of the laser aimer pattern. The program instructions are also executable by the processor to cause the processor to perform image processing with respect to the barcode included in the first frame associated with the laser aimer pattern based on the distance between the optical engine of the scanning device and the object.

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..

To facilitate data capture via scanning device, a deconvolution process can be performed with respect to images based on a distance between an optical engine and a barcode to be decoded. A suitable filter for the deconvolution process can also be selected based on the distance between the optical engine and the barcode to be decoded. However, computation of the distance between the optical engine and the barcode to be decoded can result in inefficient usage of computing resources, which can increase an amount of time for decoding time and/or can reduce efficiency of the scanning device. Furthermore, errors during the deconvolution process and/or another image process associated with the scanning device can occur. For example, in certain instances, a scanning device may incorrectly identify a noise dot captured by a sensor of the scanning device as a laser aimer pattern (e.g., a laser aimer dot) in the image, resulting in an inaccurate distance between the optical engine and the barcode and/or incorrect selection of a filter for the deconvolution process.

Thus, to address these and/or other issues related to traditional data capture and/or image processing performed by a scanning device, image processing for scanning devices based on laser aimer position is disclosed herein. In various embodiments, the laser aimer position can be identified in a field of view of the scanning device and the identified laser aimer position can be employed to determine a distance between an optical engine of the scanning device and a barcode in the field of view to be decoded. As such, an amount of time to compute the distance between the optical engine and the barcode to be decoded can be reduced and efficiency for image processing by the scanning device can be improved. In various embodiments, an imager of the scanning device can capture multiple image frames of an object present in a field of view of the scanning device. For example, at least a first frame of image data related to an object can be captured with the laser aimer turned on by the scanning device and at least a second frame of image data related to the object can be captured with the laser aimer turned off by the scanning device. The object can include one or more barcodes to be decoded by the scanning device.

In certain embodiments, an absolute value of a difference between two images captured by the imager can be calculated and respective pixel values for respective columns in the two images can be added. Additionally, a pixel column with maximum accumulated pixel values as compared to other pixel columns can be identified as an x-coordinate location for the laser aimer position. In an alternate embodiment, an absolute value of a difference between two images captured by the imager can be calculated and respective pixel values for respective rows in the two images can be added. Additionally, a pixel row with maximum accumulated pixel values as compared to other pixel rows can be identified as a y-coordinate location for the laser aimer position. The x-coordinate location and/or the y-coordinate location of the laser aimer position can then be employed to compute a distance between an optical engine of the scanning device and the object. In various embodiments, the object can include a barcode to be decoded and the distance can be a distance between the optical engine the barcode. In various embodiments, the distance between the optical engine of the scanning device and the object can be employed for image processing associated with the barcode such as, for example, a deconvolution process with respect to the barcode, a decoding process for the barcode, or another type of imaging process with respect to the barcode.

<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>, a laser 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 laser 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 laser 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> can include at least one barcode <NUM> to be decoded by the scanning device <NUM>. The laser aimer <NUM> can be configured to project a laser aimer pattern <NUM> onto the object <NUM>. For example, the laser aimer <NUM> can project the laser aimer pattern <NUM> onto the barcode <NUM> associated with the object <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> can be 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 laser aimer position <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 laser aimer position <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> can include a pixel analysis component <NUM>, a laser aimer location component <NUM> and/or an image processing component <NUM>. Additionally, in certain embodiments, the processing device <NUM> can include a processor <NUM> and/or 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) can constitute executable instructions embodied within a computer-readable storage medium (e.g., the memory <NUM>). For instance, in an embodiment, the memory <NUM> can store computer executable component and/or executable instructions (e.g., program instructions). Furthermore, the processor <NUM> can facilitate 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> can be 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 pixel analysis component <NUM>, the laser aimer location component <NUM> and/or the image processing component <NUM> via a bus to, for example, facilitate transmission of data among the processor <NUM>, the memory <NUM>, the pixel analysis component <NUM>, the laser aimer location component <NUM> and/or the image processing 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 nonvolatile 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> (e.g., the pixel analysis component <NUM> of the processing device <NUM>) can receive a first frame <NUM> and a second frame <NUM>. The first frame <NUM> and the second frame <NUM> can be image frames of image data captured by the scanning device <NUM>. For example, the first frame <NUM> and the second frame <NUM> can be image frames of image data captured by the imager <NUM> of the scanning device <NUM>. The first frame <NUM> and the second 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 first frame <NUM> and the second frame <NUM> can also respectively include a set of pixels configured as groupings of pixels. For example, the first frame <NUM> can include a first set of pixels arranged in a set of pixel columns and/or a set of pixel rows. Additionally, the second frame <NUM> can include a second set of pixels arranged in a set of pixel columns and/or a set of pixel rows. In various embodiments, respective pixels included in the first frame <NUM> and/or the second frame <NUM> can correspond to respective electrical signals processed by the scanning device <NUM> (e.g., the imager <NUM> of the scanning device <NUM>). In one or more embodiments, the scanning device <NUM> (e.g., the imager <NUM> of the scanning device <NUM>) can capture the first frame <NUM> using the laser aimer pattern <NUM> via the laser aimer <NUM>. Furthermore, the scanning device <NUM> (e.g., the imager <NUM> of the scanning device <NUM>) can capture the second frame <NUM> without using the laser aimer pattern <NUM>.

The pixel analysis <NUM> can analyze the respective set of pixels for the first frame <NUM> and the second frame <NUM> to facilitate image processing with respect to barcode <NUM>. In an embodiment, the pixel analysis component <NUM> can compute a difference between first pixel data associated with the first frame <NUM> and second pixel data associated with the second frame <NUM>. The first pixel data can be for a first grouping of pixels associated with the first frame <NUM> and the second pixel data can be for a second grouping of pixels associated with the second frame <NUM>. The first grouping of pixels can correspond to one or more pixel columns and/or one or more pixels rows of the first frame <NUM>. The second grouping of pixels can correspond to one or more pixel columns and/or one or more pixels rows of the second frame <NUM>.

Additionally, the laser aimer location component <NUM> can determine a location of the laser aimer pattern <NUM> in the first frame <NUM> (or the second frame <NUM>) 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. The laser aimer location component <NUM> can also compute a distance between the optical engine <NUM> and the object <NUM> based on the location of the laser aimer pattern <NUM> within the first frame <NUM> (or the second frame <NUM>. In certain embodiments, the laser aimer location component <NUM> can determine the location of the laser aimer pattern in the first frame <NUM> (or the second frame <NUM>) based on an absolute value of the difference between the first pixel data associated with the first frame <NUM> and the second pixel data associated with the second frame <NUM>.

In certain embodiments, the first grouping of pixels is a first pixel column associated with the first frame <NUM> and the second grouping of pixels is a second pixel column associated with the second frame <NUM>. The laser aimer location component <NUM> can compute a difference between respective pixel values in the first pixel column and other respective pixel values in the second pixel column to determine a pixel column associated with pixel difference values. The laser aimer location component <NUM> can also add the pixel difference values associated with the pixel column to determine the location of the laser aimer pattern <NUM>. For example, the laser aimer location component <NUM> can add the pixel difference values associated with the pixel column to determine an x-coordinate of the laser aimer pattern <NUM>. In certain embodiments, the first grouping of pixels is a first pixel row associated with the first frame <NUM> and the second grouping of pixels is a second pixel row associated with the second frame <NUM>. The laser aimer location component <NUM> can compute a difference between respective pixel values in the first pixel row and other respective pixel values in the second pixel row to determine a pixel row associated with pixel difference values. For example, the laser aimer location component <NUM> can add the pixel difference values associated with the pixel row to determine a y-coordinate of the laser aimer pattern <NUM>. In certain embodiments, the laser aimer location component <NUM> can also add the pixel difference values associated with the pixel row to determine the location of the laser aimer pattern <NUM>.

The image processing component <NUM> can perform image processing with respect to the barcode <NUM> based on the distance between the imager <NUM> and the object <NUM>. The image processing component <NUM> can also generate image processing data <NUM> related to the image processing. In an embodiment, the image processing can include a deconvolutional process with respect to the image <NUM> or the image <NUM>. For example, the image processing component <NUM> can perform a deconvolutional process with respect to the image <NUM> or the image <NUM> based on the distance between the imager <NUM> and the object <NUM>. One or more portions of the image processing data <NUM> can include data associated with the deconvolutional process. Additionally or alternatively, in an embodiment, the image processing can include a decoding of the barcode <NUM> included in the image <NUM> or the image <NUM>. For example, the image processing component <NUM> can decode the barcode <NUM> included in the image <NUM> or the image <NUM> based on the distance between the imager <NUM> and the object <NUM>. One or more portions of the image processing data <NUM> can additionally or alternatively include data associated with the decoding. In certain embodiments, the image processing component <NUM> can select a filter for the image processing based on the distance between the imager <NUM> and the object <NUM>. In certain embodiments, the image processing component <NUM> can select a filter for a deconvolutional process of the image processing based on the distance between the imager <NUM> and the object <NUM>. One or more portions of the image processing data <NUM> can include a filter identifier and/or other filter data associated with the filter selected for the deconvolutional process. In certain embodiments, to facilitate the image processing (e.g., the deconvolutional process and/or the decoding of the barcode <NUM>), the image processing component <NUM> can select the barcode <NUM> from a plurality of barcodes on the object <NUM>.

<FIG> illustrates a system <NUM> related to image processing for scanning devices according to one or more embodiments of the disclosure. The system <NUM> includes a process <NUM> associated with a laser aimer search. The process <NUM> can be performed by the processing device <NUM> of the scanning device. For example, in various embodiments, the process <NUM> can include one or more processes performed by the pixel analysis component <NUM> and/or the laser aimer location component <NUM>. The process <NUM> can be configured to determine a laser aimer pattern location <NUM> based on laser aimer search processing with respect to the first frame <NUM> and the second frame <NUM>. In various embodiments, the scanning device <NUM> can generate the first frame <NUM> and the second frame <NUM>. For example, the process <NUM> can compute a difference between first pixel data for the first frame <NUM> (e.g., first pixel data for a first grouping of pixels associated with the first frame <NUM>) and second pixel data for the second frame <NUM> (e.g., second pixel data for a second grouping of pixels associated with the second frame <NUM>). Additionally, the process <NUM> can determine the laser aimer pattern location <NUM> based on a comparison between respective differences between the first pixel data for the first frame <NUM> and the second pixel data for the second frame <NUM>. The laser aimer pattern location <NUM> can be a location of a laser aimer pattern in the first frame <NUM> or the second frame <NUM>. The laser aimer pattern can be generated by the laser aimer <NUM> during capture of the first frame <NUM> and/or the second frame <NUM>.

<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. For example, the image <NUM> can include a set of pixels arranged in a set of pixel columns and/or a set of pixel rows. 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 laser aimer pattern <NUM> via the laser aimer <NUM>. For instance, the image <NUM> can include the barcode <NUM> and the laser aimer pattern <NUM> employed by the laser 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 first frame <NUM>. The laser aimer pattern <NUM> included in the image <NUM> can be associated with an x-coordinate <NUM> and a y-coordinate <NUM>. The x-coordinate <NUM> and a y-coordinate <NUM> can correspond to a location of the laser aimer pattern <NUM> (e.g., the laser aimer patten location <NUM>). For example, the x-coordinate <NUM> and a y-coordinate <NUM> can correspond to a pixel location with respect to a set of pixels arranged in the set of pixel columns and/or the set of pixel rows.

<FIG> illustrates the first frame <NUM> and the second frame <NUM> according to one or more embodiments of the disclosure. The first frame <NUM> and the second frame <NUM> can be images captured by the scanning device <NUM>. In one or more embodiments, the processing device <NUM> (e.g., the pixel analysis component <NUM>) can determine a region of interest <NUM> for the first frame <NUM> based on the laser aimer pattern <NUM> and/or a noise pattern <NUM> included in the first frame <NUM>. The noise pattern <NUM> can be a noise dot (e.g., a sensor noise pattern) in the first frame <NUM>. For example, the noise pattern <NUM> can be a false laser aimer pattern in the first frame <NUM> that is generated during capture of the first frame <NUM> due to, for example, sensor noise and/or sensor inaccuracies associated with the imager <NUM>. The region of interest <NUM> can correspond to the first set of pixels configured as a first grouping of pixels. For example, the region of interest <NUM> can include a first set of pixel columns and a first set of pixel rows.

The processing device <NUM> (e.g., the pixel analysis component <NUM>) can also determine a region of interest <NUM> for the first frame <NUM> based on the region of interest <NUM>. The region of interest <NUM> can include, for example, the noise pattern <NUM>. The region of interest <NUM> can correspond to the second set of pixels configured as a second grouping of pixels. For example, the region of interest <NUM> can include a second set of pixel columns and a second set of pixel rows. In one or more embodiments, dimensionality of the region of interest <NUM> (e.g., a number of pixel columns, a number of pixel rows, and/or a total number of pixels) can correspond to dimensionality of the region of interest <NUM>.

<FIG> illustrates a system <NUM> associated with a laser aimer search according to one or more embodiments of the disclosure. The system <NUM> includes a region of interest comparison <NUM>. The region of interest comparison <NUM> can be determined based on differences between respective pixels of the first frame <NUM> and the second frame <NUM>. For example, the region of interest comparison <NUM> can be determined based an absolute value of differences between respective pixels of the first frame <NUM> and the second frame <NUM>. The region of interest comparison <NUM> can represent a set of pixels (e.g., a set of pixel difference values) configured as a grouping of pixels (e.g., a grouping of pixel difference values). For example, the region of interest comparison <NUM> can include a set of pixels arranged in a set of pixel columns and a set of pixel rows. In an aspect, the region of interest comparison <NUM> can include a grouping of pixels <NUM> arranged as a pixel column. The grouping of pixels <NUM> can include a first pixel (e.g., a first pixel difference value) equal to "<NUM>", a second pixel (e.g., a second pixel difference value) equal to "<NUM>", a third pixel (e.g., a third pixel difference value) equal to "<NUM>", a fourth pixel (e.g., a fourth pixel difference value) equal to "<NUM>", and a fifth pixel (e.g., a fifth pixel difference value) equal to "<NUM>". For example, the first pixel in the grouping of pixels <NUM> can represent an absolute value of a difference between a corresponding pixel in the first frame <NUM> and a corresponding pixel in the second frame <NUM>, the second pixel in the grouping of pixels <NUM> can represent another absolute value of another difference between another corresponding pixel in the first frame <NUM> and another corresponding pixel in the second frame <NUM>, etc. In one or more embodiments, the pixel values in the grouping of pixels <NUM> can be added to determine an x-coordinate value. In an example, the pixel values in the grouping of pixels <NUM> can be a maximum accumulated value <NUM> with respect to other pixel values for other column grouping of pixels in the region of interest comparison <NUM> and therefore can be identified as the x-coordinate location for the laser aimer pattern <NUM>.

Additionally or alternatively, the region of interest comparison <NUM> can include a grouping of pixels <NUM> arranged as a row of pixels. The grouping of pixels <NUM> can include respective pixels that represent an absolute value of a difference between a corresponding pixel in the first frame <NUM> and a corresponding pixel in the second frame <NUM>. In one or more embodiments, the pixel values in the grouping of pixels <NUM> can be added to determine a y-coordinate value. In an example, the pixel values in the grouping of pixels <NUM> can be a maximum accumulated value with respect to other pixel values for other row grouping of pixels in the region of interest comparison <NUM> and therefore can be identified as the y-coordinate location for the laser aimer pattern <NUM>. In one or more embodiments, the processing device <NUM> (e.g., the laser aimer location component <NUM>) can identify the location of the laser aimer pattern <NUM> (e.g., the laser aimer pattern location <NUM>) as the x-coordinate value and/or the y-coordinate value.

Returning back to <FIG>, the system <NUM> also includes a process <NUM> associated with a triangulation. The process <NUM> can be performed by the processing device <NUM> of the scanning device. For example, in various embodiments, the process <NUM> can include one or more processes performed by the laser aimer location component <NUM>. The process <NUM> can employ the laser aimer pattern location <NUM> to determine distance data <NUM>. The distance data <NUM> can include, for example, a distance between the optical engine <NUM> and the object <NUM>. The process <NUM> can determined the distance data <NUM> based on the laser aimer pattern location <NUM>. The triangulation performed by the process <NUM> can be associated with a triangulation computation between the imager <NUM>, the laser aimer <NUM>, and the object <NUM>.

<FIG> illustrates a system <NUM> associated with triangulation according to one or more embodiments of the disclosure. The system <NUM> includes the imager <NUM>, the laser aimer <NUM>, and the object <NUM>. In one or more embodiments, the process <NUM> can employ the following equation to compute the distance between the optical engine <NUM> and the object <NUM>: <MAT>
where d is the distance between the optical engine <NUM> and the object <NUM>, X is a location (e.g., an x-coordinate and/or a y-coordinate) of the laser aimer pattern <NUM>, s is a distance between the imager <NUM> and the laser aimer <NUM>, and β is an angle between d and s. The distance data <NUM> can include, for example, the X value employed to determine d. In various embodiments, the process <NUM> can employ a predefined data structure (e.g., a predefined table) that indexes d with respect to X to determine the distance between the optical engine <NUM> and the object <NUM> based on the distance data <NUM>. In various embodiments, the distance s can be defined based on a structure of the optical engine <NUM> (e.g., a structure of the scanning device <NUM>).

Returning back to <FIG>, the system <NUM> also includes a process <NUM> associated with image processing. The process <NUM> can be performed by the processing device <NUM> of the scanning device. For example, in various embodiments, the process <NUM> can include one or more processes performed by the image processing component <NUM>. The process <NUM> can employ the distance data <NUM> for image processing. For instance, in an embodiment, the process <NUM> can employ the distance data <NUM> to decode the barcode <NUM> based on the distance data <NUM>. In another embodiment, the process <NUM> can employ the distance data <NUM> to perform a deconvolutional process with respect to the barcode <NUM> based on the distance data <NUM>. In another embodiment, the process <NUM> can employ the distance data <NUM> to select a filter for the image processing and/or the deconvolutional process based on the distance data <NUM>.

<FIG> illustrates a computer-implemented method <NUM> for performing a laser aimer position search in accordance with one or more embodiments described herein. The computer-implemented method <NUM> can be performed by the processing device <NUM>, for example. In one or more embodiments, the computer-implemented method <NUM> begins at step <NUM> that determines an absolute difference value for respective pixels between the first frame (e.g., the first frame <NUM>) and the second frame (e.g., the second frame <NUM>) to determine a region of interest comparison between the first frame and the second frame. The computer-implemented method <NUM> also includes a step <NUM> that adds pixel values for respective pixel columns in the region of interest comparison. The computer-implemented method <NUM> also includes a step <NUM> that determines a pixel column number and a maximum accumulated value for a particular pixel column. The pixel column number can correspond to an x-coordinate location. The computer-implemented method <NUM> also includes a step <NUM> that estimates a distance between an optical engine and a barcode. For example, the distance between the optical engine and the barcode can be estimated based on the pixel column number (e.g., the x-coordinate location) with the maximum accumulated value with respect to other pixel column numbers.

In certain embodiments, the computer-implemented method <NUM> can additionally include a step <NUM> that adds pixel value for the particular pixel column identified with the maximum accumulated value in each frame. For example, an accumulated value for pixel values for the particular pixel column identified as the maximum accumulated value can be determined for the first frame <NUM>. Additionally, an accumulated value for pixel values for the particular pixel column identified as the maximum accumulated value can also be determined for the second frame <NUM>. In certain embodiments, the computer-implemented method <NUM> can additionally include a step <NUM> that determines which frame comprises a laser aimer pattern based on a comparison between respective accumulated pixel values for the particular pixel column. For example, the accumulated value for the pixel values associated with the first frame <NUM> can be compared to the accumulated value for the pixel values associated with the second frame <NUM> to determine the frame that comprises the laser aimer pattern. In certain embodiments, the frame determined to comprise the laser aimer pattern can be selected as the frame for the image processing performed based on the estimated distance.

<FIG> illustrates a computer-implemented method <NUM> for image processing for scanning devices based on laser aimer position in accordance with one or more embodiments described herein. The computer-implemented method <NUM> can be associated with the processing device <NUM>, for example. In one or more embodiments, the computer-implemented method <NUM> begins with capturing, using a scanning device, a first frame and a second frame of image data related to an object associated with a barcode (block <NUM>).

The computer-implemented method <NUM> further includes computing a difference between first pixel data for a first grouping of pixels associated with the first frame and second pixel data for a second grouping of pixels associated with the second frame (block <NUM>).

The computer-implemented method <NUM> further includes determining a location of a laser aimer pattern in the first frame or the second 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, where the laser aimer pattern is created by the scanning device (block <NUM>).

In certain embodiments, the first grouping of pixels is a first pixel column associated with the first frame and the second grouping of pixels is a second pixel column associated with the second frame. Additionally, in certain embodiments, the computer-implemented method <NUM> further computing a difference between respective pixel values in the first pixel column and other respective pixel values in the second pixel column to determine a pixel column associated with pixel difference values. In certain embodiments, the computer-implemented method <NUM> includes adding the pixel difference values to determine the location of the laser aimer pattern.

In certain embodiments, the first grouping of pixels is a first pixel row associated with the first frame and the second grouping of pixels is a second pixel row associated with the second frame. Additionally, in certain embodiments, the computer-implemented method <NUM> includes computing a difference between respective pixel values in the first pixel row and other respective pixel values in the second pixel row to determine a pixel row associated with pixel difference values. In certain embodiments, the computer-implemented method <NUM> includes adding the pixel difference values to determine the location of the laser aimer pattern.

In certain embodiments, the determining the location of the laser aimer pattern the first frame or the second frame comprises determining the location of the laser aimer pattern in the first frame or the second frame based on an absolute value of the difference between the first pixel data associated with the first frame and the second pixel data associated with the second frame.

The computer-implemented method <NUM> further includes computing a distance between an optical engine of the scanning device and the object based on the location of the laser aimer pattern (block <NUM>).

The computer-implemented method <NUM> further includes performing image processing with respect to the barcode based on the distance between the optical engine of the scanning device and the object (block <NUM>).

In certain embodiments, the computer-implemented method <NUM> includes capturing the first frame using the laser aimer pattern. In certain embodiments, the computer-implemented method <NUM> includes capturing the second frame without using the laser aimer pattern. In certain embodiments, the computer-implemented method <NUM> includes performing the image processing with respect to the barcode included in the first frame associated with the laser aimer pattern.

In certain embodiments, the computer-implemented method <NUM> includes decoding the barcode based on the distance between the optical engine of the scanning device and the object.

In certain embodiments, the computer-implemented method <NUM> includes selecting a filter for the image processing based on the distance between the optical engine of the scanning device and the object.

In certain embodiments, the computer-implemented method <NUM> includes selecting a filter for a deconvolutional process of the image processing based on the distance between the optical engine of the scanning device and the object.

In certain embodiments, the computer-implemented method <NUM> includes selecting the barcode from a plurality of barcodes on the object and/or selecting a filter for the image processing with respect to the barcode based on the distance between the optical engine of the scanning device and the object.

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 system (<NUM>), comprising:
a processor (<NUM>); and
a memory (<NUM>) that stores executable instructions that, when executed by the processor (<NUM>), cause the processor (<NUM>) to:
capture, using a scanning device (<NUM>), a first frame (<NUM>) and a second frame (<NUM>) of image data related to an object (<NUM>) associated with a barcode (<NUM>), wherein the first frame (<NUM>) is captured using a laser aimer pattern (<NUM>) and the second frame (<NUM>) is captured without using the laser aimer pattern (<NUM>);
compute a difference between first pixel data for a first grouping of pixels associated with the first frame (<NUM>) and second pixel data for a second grouping of pixels associated with the second frame (<NUM>);
determine a location of the laser aimer pattern (<NUM>) in the first frame (<NUM>) or the second frame (<NUM>) 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, wherein the laser aimer pattern (<NUM>) is created by the scanning device (<NUM>);
compute a distance between an optical engine (<NUM>) of the scanning device (<NUM>) and the object (<NUM>) based on the location of the laser aimer pattern (<NUM>); and
perform image processing with respect to the barcode (<NUM>) included in the first frame (<NUM>) associated with the laser aimer pattern (<NUM>) based on the distance between the optical engine (<NUM>) of the scanning device (<NUM>) and the object (<NUM>).