# Patent

## Title
Code symbol reading system having adaptive autofocus

## Abstract

A system for reading code symbols includes an imaging subsystem that includes a focusing module and an image processor. The image processor selects an initial, predicted focal distance for the imaging subsystem's focusing module with respect to a code symbol. The focal distance for each successfully decoded code symbol is stored in memory, and a weighted average of a pre-selected number of memorized focal distances is used to calculate the next initial, predicted focal distance.

## Background
CROSS-REFERENCE TO RELATED APPLICATION
The present application claims the benefit of U.S. patent application Ser. No. 13/927,398 for a Code Symbol Reading System Having Adaptive Autofocus filed Jun. 26, 2013 (and published Jan. 1, 2015 as U.S. Patent Application Publication No. 2015/0001304), now U.S. Pat. No. 9,104,929. Each of the foregoing patent application, patent publication, and patent is hereby incorporated by reference in its entirety.
FIELD OF THE INVENTION
The present invention relates to the field of code symbol readers, more specifically, to a code symbol reading system having adaptive autofocus.
BACKGROUND
Mobile computer devices such as smartphones have become an increasingly popular way to scan code symbols (e.g., barcodes) because of their highly functional camera technology as well as their ubiquity. Generally speaking, the greatest challenge when scanning a barcode with a smartphone is first getting the barcode in focus. Presently, most smartphones utilize an autofocus routine that attempts to get an image into focus. This procedure is quite time consuming, principally because the autofocus routine initiates the process without any real sense of the proper focal distance. As a result, the smartphone often spends a great deal of time readjusting the focal distance as it searches for the proper focal setting that will bring the barcode into focus at least enough to read the barcode. Autofocus routines are often hampered in their efforts by excessive motion and poor lighting conditions. This often leads to a significant time delay when scanning a barcode and accounts for the vast majority of the overall scan time.
Therefore, a need exists for a system for reading code symbols that is capable of generating faster readings of code symbols by first making an educated guess at where the focus should be fixed before a barcode scan is attempted.
SUMMARY
Accordingly, in one aspect, the present invention embraces a system for reading code symbols having adaptive autofocus. The system for reading code symbols includes an imaging subsystem for capturing images within the imaging subsystem's field of view. The imaging subsystem includes a focusing module. The system for reading code symbols also includes an image processor. The image processor is configured for selecting an initial, predicted focal distance for the imaging subsystem's focusing module. The image processor is also configured for processing an image of a code symbol captured by the imaging subsystem in order to decode the code symbol. The image processor is also configured for storing in memory the focal distance associated with the decoded code symbol. The image processor is configured to select the initial, predicted focal distance as a function of memorized focal distance(s) associated with previously decoded code symbol(s).
In an exemplary embodiment, the image processor is configured to select the initial, predicted focal distance as a function of a plurality of memorized focal distances associated with previously decoded code symbols.
In another exemplary embodiment, the image processor is configured to perform an autofocus routine if processing the captured image of the code symbol at the initial, predicted focal distance fails to decode the code symbol.
In yet another exemplary embodiment, the image processor is configured to perform an autofocus routine if the number of memorized focal distances associated with previously decoded code symbols is less than a predetermined minimum.
In yet another exemplary embodiment, the imaging subsystem detects the presence of a code symbol within the imaging subsystem's field of view.
In yet another exemplary embodiment, the system for reading code symbols according to the present invention also includes an object detection subsystem for detecting the presence of an object (e.g., an object bearing a code symbol) within the imaging subsystem's field of view.
In yet another exemplary embodiment, the system for reading code symbols according to the present invention also includes a hand-supportable housing. The imaging subsystem and image processor are disposed within the hand-supportable housing.
In yet another exemplary embodiment, the system for reading code symbols according to the present invention also includes an input/output subsystem. The input/output subsystem outputs signals from the system for reading code symbols.
In another aspect, the present invention embraces a system for reading code symbols that includes an imaging subsystem and an image processor. The imaging subsystem captures images within the imaging subsystem's field of view. The imaging subsystem includes a focusing module. The image processor is configured for selecting an initial, predicted focal distance for the imaging subsystem's focusing module with respect to a code symbol, and to process one or more images of a code symbol captured by the imaging subsystem at the initial, predicted focal distance. The image processor is configured to perform an autofocus routine if processing a predetermined number of captured images of a code symbol fails to decode the code symbol. The image processor is also configured to store in memory the focal distance associated with the decoded code symbol if processing a captured image of the code symbol decodes the code symbol. The image processor is configured to select the initial, predicted focal distance as a function of a plurality of memorized focal distances associated with previously decoded code symbols.
In an exemplary embodiment, the image processor is configured to store in memory the initial, predicted focal distance associated with the decoded code symbol if processing a captured image of a code symbol at the initial, predicted focal distance decodes the code symbol.
In another exemplary embodiment, the image processor is configured to perform an autofocus routine if the number of memorized focal distances associated with previously decoded code symbols is less than a predetermined minimum.
In yet another exemplary embodiment, the image processor is configured to process one or more additional captured images of the code symbol after the image processor performs an autofocus routine.
In yet another exemplary embodiment, the imaging subsystem detects the presence of a code symbol within the imaging subsystem's field of view.
In yet another exemplary embodiment, the system for reading code symbols according to the present invention includes an object detection subsystem for detecting the presence of a code symbol within the imaging subsystem's field of view.
In yet another exemplary embodiment, the system for reading code symbols according to the present invention includes a hand-supportable housing. The imaging subsystem and image processor are disposed within the hand-supportable housing.
In yet another exemplary embodiment, the system for reading code symbols according to the present invention includes an input/output subsystem for outputting system signals.
The foregoing illustrative summary, as well as other exemplary objectives and/or advantages of the invention, and the manner in which the same are accomplished, are further explained within the following detailed description and its accompanying drawings.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of an exemplary system for reading code symbols according to the present invention.
FIG. 2 is a block diagram of a first alternative embodiment of the system for reading code symbols according to the present invention.
FIG. 3 is a block diagram of a second alternative embodiment of the system for reading code symbols according to the present invention.



DETAILED DESCRIPTION
The present invention embraces a system for reading code symbols. The term “code symbol” is intended broadly to refer to any indicia or device used to store information about an object, including barcodes, linear barcodes, 1D barcodes, matrix barcodes, 2D barcodes, QR codes, RFID tags, and optical character recognition (OCR) symbols. When a code symbol is read, the information encoded in the code symbol is decoded. Referring now to FIG. 1, the system 100 for reading code symbols according to the present invention includes an imaging subsystem 110. The imaging subsystem 110 captures images within the imaging subsystem's 110 field of view (i.e., angle of view). Objects that can be viewed by the imaging subsystem when it is in a given position and orientation in space are within the imaging subsystem's 110 field of view. When a user wishes to capture an image of a code symbol, the user either positions the code symbol within the imaging subsystem's 110 field of view, or re-orients the imaging subsystem 110 to change its field of view to include the code symbol. For example, if using a camera-equipped smartphone as a code symbol reader, the user could reposition the smartphone until the code symbol comes into the field of view of the smartphone's camera.
The imaging subsystem 110 of the system 100 according to the present invention includes a focusing module 115. The focusing module 115 functions to bring into focus the code symbol of interest such that the code symbol may be read. Typically, the focusing module includes (i) a lens assembly having one or more lenses and (ii) a small autofocus motor which manipulates the lens assembly to adjust its field of focus. The autofocus motor manipulates the lens assembly by changing the distance between the lens assembly and the image plane, or by otherwise adjusting the lens configuration, to bring the code symbol into focus. Alternatively, the focusing module could include a liquid lens module. The liquid lens module has a liquid lens having a chamber containing at least one type of liquid. A liquid lens driver applies an electric current to the liquid, and can vary the focal characteristics of the liquid lens by varying the level of electric current. These types of liquid lens modules are particularly useful in smaller, mobile devices because they do not require moving parts.
The system 100 according to the present invention also includes an image processor 120. Rather than immediately initiating a potentially time-consuming autofocus routine prior to capturing an image of a code symbol, the image processor 120 first selects an initial, predicted focal distance for the imaging subsystem's 110 focusing module 120. In other words, the image processor 120 estimates the focal distance at which the system 100 should attempt to capture the image of the code symbol. The method used to estimate the focal distance is described below in detail.
After an image of a code symbol is captured by the system 100, the image processor 120 processes the image of the code symbol to decode (e.g., read) the code symbol. If the captured image of the code symbol is of sufficient quality (e.g., focal quality) to allow the image processor 120 to successfully decode the code symbol, then the image processor 120 stores in memory the focal distance associated with the decoded code symbol. In other words, when the system 100 captures an image of a code symbol, the image processor 120 (i) determines the focal distance of the focusing module at the time the image was captured, (ii) determines whether the code symbol can be decoded from the captured image, and (iii) stores in memory the focal distance of each successfully decoded code symbol at the time the image was captured. If the image processor 120 determines that the image quality is not sufficient to permit the decoding of the code symbol, the focal length associated with the unsuccessful image capture is not stored in memory. The process is repeated each time the system 100 captures an image of a code symbol, with the focal distance associated with each image capture resulting in a successful decoding being stored in memory. In this way, the system 100 creates a continuously updated record of each of the focal distances employed to decode the code symbol(s). It will be appreciated by a person of ordinary skill in the art that the number of focal distances stored in memory can vary depending on how large of a sample is desired. Prior to capturing an image of a code symbol, the image processor 120 selects the initial, predicted focal distance needed to capture an image that can successfully decode the code symbol. The initial, predicted focal distance is a function of the memorized focal distance(s) associated with the previously decoded code symbol(s).
In an exemplary embodiment of the system 100 for reading code symbols according to the present invention, the image processor 120 selects the initial, predicted focal distance as a function of a plurality of memorized focal distances associated with previously decoded code symbols. Typically, the image processor 120 selects the initial, predicted focal distance that will be used for the current scan operation (e.g., code symbol image capture) by calculating a weighted moving average of the memorized focal distances. Typically, the image processor 120 keeps a record of the temporal order of memorized focal distances. In other words, the image processor 120 records which focal distance is associated with the most recently captured image, which focal distance is associated with the next most recently captured image, and so on. Using this temporal information, the image processor 120 typically gives greater weight to the focal distances associated with the more recently captured images. This approach is particularly advantageous when reading code symbols from varying distances, because this weighted average approach assumes that the distance of the next code symbol to be scanned will be roughly the same as the distances of the latest successful scans. Because, in many instances, when a user is scanning multiple code symbols in succession, those code symbols will be at similar distances from the system 100, the approach of more heavily weighting the more recent scans typically yields improved results. For example, a worker holding the system in hand while scanning various boxes bearing a code symbol while the boxes are resting on a table of substantially uniform height would likely achieve improved results using this method since most of the code symbols will be at roughly the same distance from the system 100. Any weighting scheme could be applied to find an optimal balance between highly valuing the most recent focal length data while still taking into account focal length data over a longer trend. By way of example, a linear weighting system could be employed. By way of further example, the image processor 120 could employ an exponentially weighted moving average, which would place greater value on the focal distance associated with the most recent scan while taking into consideration all of the memorized focal distances.
In an exemplary embodiment, the image processor 120 first seeks to successfully decode an image by initiating a scan using the initial, predicted focal distance. If the image processor 120 fails to decode the image using the initial, predicted focal distance (for example, because the image is out of focus), the image processor retries the scan attempt using a traditional autofocus routine. In this way, the system 100 seeks to expedite the scanning process by first attempting to decode the code symbol using the faster, educated estimate approach described herein; if that approach is not successful, the system 100 falls back on a traditional autofocus routine.
In another exemplary embodiment, the image processor 120 first checks to see if a sufficiently large sample size of focal distances are stored in memory. If less than a predetermined minimum number of memorized focal distances associated with previously decoded code symbols reside in memory, then the image processor 120 does not attempt to generate an initial, predicted focal distance. Instead, the image processor 120 goes directly to the traditional autofocus routine to attempt to decode the code symbol. In this way, if the available data set of focal distances is below a predetermined minimum number deemed to be sufficient to generate a reliable (e.g., useful) initial, predicted focal distance, the image processor 120 will not waste time or system resources on an estimation step that is unlikely to yield an image with a suitable focal quality.
In an exemplary embodiment, the imaging subsystem 110 detects the presence of a code symbol within the imaging subsystem's 110 field of view. The presence of a code symbol may be detected by an analysis of the image pixels by the imaging subsystem 110 to determine if they are consistent with the presence of a code symbol. This analysis may be capable of detecting the presence of a code symbol even when the image quality is insufficient to support reading the code symbol. If the imaging subsystem 110 detects a code symbol within the field of view of the imaging subsystem 110, it initiates an image capture using the focal distance estimating techniques described herein.
Referring now to FIG. 2, in an alternative embodiment, the system 100 for reading code symbols includes an object detection subsystem 130 for detecting the presence of an object (e.g., an object bearing a code symbol) within the system's 100 field of view. The object detection subsystem can project an IR-based light beam into the field of view and detect a return signal from an object present in the field of view to detect the presence of that object. Upon detection of an object, the system 100 may initiate the attempted reading of a code symbol(s) within the field of view using the adaptive focusing techniques described herein.
Whether by successfully relying on the initial, predicted focal distance, or by falling back on a traditional autofocus routine, the system 100 ultimately obtains a successful scan of the code symbol. When the code symbol is decoded, the system 100 will need to output the resulting data (e.g., the data decoded from the code symbol) to another system (e.g., a data processing system). The data processing system may be housed either within the same device that houses the system 100 for reading code symbols, or it may be housed in a separate device (e.g., a host device). Referring now to FIG. 3, to output the system signals (e.g., data, bits, electrical signals) representing the data generated by decoding the code symbol, the system 100 includes an input/output subsystem 140. The input/output subsystem 140 manages the sending of system signals to other systems and/or devices.
The system 100 for reading code symbols according to the present invention may take a variety of forms. For instance, the system 100 may be a stationary unit at a checkout register (e.g., point of sale (POS)), similar to a bioptic scanner found in most grocery stores. More typically, the system 100 for reading code symbols according to the present invention will take the form of a hand-held device such as a smartphone, a tablet computer, or a hand-held scanner. For hand-held devices, the system 100 according to the present invention includes a hand-supportable housing in which the imaging subsystem 110 and the image processor 120 are disposed.
In another aspect, the present disclosure embraces a system 100 for reading code symbols that includes an imaging subsystem 110 and an image processor 120. The image processor 120 selects an initial, predicted focal distance for the imaging subsystem's 110 focusing module with respect to a code symbol. The image processor 120 processes one or more images of the code symbol captured by the imaging subsystem 110 at the initial, predicted focal distance. If, after processing a predetermined number of captured images of the code symbol, the image processor 120 fails to decode the code symbol, then the image processor 120 performs an autofocus routine. On the other hand, if the image processor 120 is able to decode a code symbol from a captured image, then the image processor 120 stores in memory the focal distance associated with the decoded code symbol. The image processor 120 selects the initial, predicted focal distance as a function of a plurality of memorized focal distances associated with previously decoded code symbols.
To supplement the present disclosure, this application incorporates entirely by reference the following patents, patent application publications, and patent applications: U.S. Pat. Nos. 6,832,725; 7,159,783; 7,413,127; 7,726,575; 8,390,909; 8,294,969; 8,408,469; 8,408,468; 8,381,979; 8,408,464; 8,317,105; 8,366,005; 8,424,768; 8,322,622; 8,371,507; 8,376,233; 8,457,013; 8,448,863; 8,459,557; 8,469,272; U.S. Patent Application Publication No. 2012/0111946; U.S. Patent Application Publication No. 2012/0223141; U.S. Patent Application Publication No. 2012/0193423; U.S. Patent Application Publication No. 2012/0203647; U.S. Patent Application Publication No. 2012/0248188; U.S. Patent Application Publication No. 2012/0228382; U.S. Patent Application Publication No. 2012/0193407; U.S. Patent Application Publication No. 2012/0168511; U.S. Patent Application Publication No. 2012/0168512; U.S. Patent Application Publication No. 2010/0177749; U.S. Patent Application Publication No. 2010/0177080; U.S. Patent Application Publication No. 2010/0177707; U.S. Patent Application Publication No. 2010/0177076; U.S. Patent Application Publication No. 2009/0134221; U.S. Patent Application Publication No. 2012/0318869; U.S. Patent Application Publication No. 2013/0043312; U.S. Patent Application Publication No. 2013/0068840; U.S. Patent Application Publication No. 2013/0070322; U.S. Patent Application Publication No. 2013/0075168; U.S. Patent Application Publication No. 2013/0056285; U.S. Patent Application Publication No. 2013/0075464; U.S. Patent Application Publication No. 2013/0082104; U.S. Patent Application Publication No. 2010/0225757; U.S. patent application Ser. No. 13/347,219 for an OMNIDIRECTIONAL LASER SCANNING BAR CODE SYMBOL READER GENERATING A LASER SCANNING PATTERN WITH A HIGHLY NON-UNIFORM SCAN DENSITY WITH RESPECT TO LINE ORIENTATION, filed Jan. 10, 2012 (Good); U.S. patent application Ser. No. 13/347,193 for a HYBRID-TYPE BIOPTICAL LASER SCANNING AND DIGITAL IMAGING SYSTEM EMPLOYING DIGITAL IMAGER WITH FIELD OF VIEW OVERLAPPING FIELD OF FIELD OF LASER SCANNING SUBSYSTEM, filed Jan. 10, 2012 (Kearney et al.); U.S. patent application Ser. No. 13/367,047 for LASER SCANNING MODULES EMBODYING SILICONE SCAN ELEMENT WITH TORSIONAL HINGES, filed Feb. 6, 2012 (Feng et al.); U.S. patent application Ser. No. 13/400,748 for a LASER SCANNING BAR CODE SYMBOL READING SYSTEM HAVING INTELLIGENT SCAN SWEEP ANGLE ADJUSTMENT CAPABILITIES OVER THE WORKING RANGE OF THE SYSTEM FOR OPTIMIZED BAR CODE SYMBOL READING PERFORMANCE, filed Feb. 21, 2012 (Wilz); U.S. patent application Ser. No. 13/432,197 for a LASER SCANNING SYSTEM USING LASER BEAM SOURCES FOR PRODUCING LONG AND SHORT WAVELENGTHS IN COMBINATION WITH BEAM-WAIST EXTENDING OPTICS TO EXTEND THE DEPTH OF FIELD THEREOF WHILE RESOLVING HIGH RESOLUTION BAR CODE SYMBOLS HAVING MINIMUM CODE ELEMENT WIDTHS, filed Mar. 28, 2012 (Havens et al.); U.S. patent application Ser. No. 13/492,883 for a LASER SCANNING MODULE WITH ROTATABLY ADJUSTABLE LASER SCANNING ASSEMBLY, filed Jun. 10, 2012 (Hennick et al.); U.S. patent application Ser. No. 13/367,978 for a LASER SCANNING MODULE EMPLOYING AN ELASTOMERIC U-HINGE BASED LASER SCANNING ASSEMBLY, filed Feb. 7, 2012 (Feng et al.); U.S. patent application Ser. No. 13/852,097 for a System and Method for Capturing and Preserving Vehicle Event Data, filed Mar. 28, 2013 (Barker et al.); U.S. patent application Ser. No. 13/780,356 for a Mobile Device Having Object-Identification Interface, filed Feb. 28, 2013 (Samek et al.); U.S. patent application Ser. No. 13/780,158 for a Distraction Avoidance System, filed Feb. 28, 2013 (Sauerwein); U.S. patent application Ser. No. 13/784,933 for an Integrated Dimensioning and Weighing System, filed Mar. 5, 2013 (McCloskey et al.); U.S. patent application Ser. No. 13/785,177 for a Dimensioning System, filed Mar. 5, 2013 (McCloskey et al.); U.S. patent application Ser. No. 13/780,196 for Android Bound Service Camera Initialization, filed Feb. 28, 2013 (Todeschini et al.); U.S. patent application Ser. No. 13/792,322 for a Replaceable Connector, filed Mar. 11, 2013 (Skvoretz); U.S. patent application Ser. No. 13/780,271 for a Vehicle Computer System with Transparent Display, filed Feb. 28, 2013 (Fitch et al.); U.S. patent application Ser. No. 13/736,139 for an Electronic Device Enclosure, filed Jan. 8, 2013 (Chaney); U.S. patent application Ser. No. 13/771,508 for an Optical Redirection Adapter, filed Feb. 20, 2013 (Anderson); U.S. patent application Ser. No. 13/750,304 for Measuring Object Dimensions Using Mobile Computer, filed Jan. 25, 2013; U.S. patent application Ser. No. 13/471,973 for Terminals and Methods for Dimensioning Objects, filed May 15, 2012; U.S. patent application Ser. No. 13/895,846 for a Method of Programming a Symbol Reading System, filed Apr. 10, 2013 (Corcoran); U.S. patent application Ser. No. 13/867,386 for a Point of Sale (POS) Based Checkout System Supporting a Customer-Transparent Two-Factor Authentication Process During Product Checkout Operations, filed Apr. 22, 2013 (Cunningham et al.); U.S. patent application Ser. No. 13/888,884 for an Indicia Reading System Employing Digital Gain Control, filed May 7, 2013 (Xian et al.); U.S. patent application Ser. No. 13/895,616 for a Laser Scanning Code Symbol Reading System Employing Multi-Channel Scan Data Signal Processing with Synchronized Digital Gain Control (SDGC) for Full Range Scanning, filed May 16, 2013 (Xian et al.); U.S. patent application Ser. No. 13/897,512 for a Laser Scanning Code Symbol Reading System Providing Improved Control over the Length and Intensity Characteristics of a Laser Scan Line Projected Therefrom Using Laser Source Blanking Control, filed May 20, 2013 (Brady et al.); U.S. patent application Ser. No. 13/897,634 for a Laser Scanning Code Symbol Reading System Employing Programmable Decode Time-Window Filtering, filed May 20, 2013 (Wilz, Sr. et al.); U.S. patent application Ser. No. 13/902,242 for a System For Providing A Continuous Communication Link With A Symbol Reading Device, filed May 24, 2013 (Smith et al.); U.S. patent application Ser. No. 13/902,144, for a System and Method for Display of Information Using a Vehicle-Mount Computer, filed May 24, 2013 (Chamberlin); U.S. patent application Ser. No. 13/902,110 for a System and Method for Display of Information Using a Vehicle-Mount Computer, filed May 24, 2013 (Hollifield); U.S. patent application Ser. No. 13/912,262 for a Method of Error Correction for 3D Imaging Device, filed Jun. 7, 2013 (Jovanovski et al.) and U.S. patent application Ser. No. 13/912,702 for a System and Method for Reading Code Symbols at Long Range Using Source Power Control, filed Jun. 7, 2013 (Xian et al.).
In the specification and/or figures, typical embodiments of the invention have been disclosed. The present invention is not limited to such exemplary embodiments. The use of the term “and/or” includes any and all combinations of one or more of the associated listed items. The figures are schematic representations and so are not necessarily drawn to scale. Unless otherwise noted, specific terms have been used in a generic and descriptive sense and not for purposes of limitation.

## Claims

1. A system for reading code symbols, comprising:
an imaging subsystem for capturing images within the imaging subsystem's field of view, the imaging subsystem including a focusing module; and
an image processor configured for:
selecting an initial, predicted focal distance for the imaging subsystem's focusing module;
processing an image of a code symbol captured by the imaging subsystem in order to decode the code symbol; and
storing in memory the focal distance associated with the decoded code symbol;
calculating a weighted moving average of the stored focal distances; and
selecting the initial, predicted focal distance based on the calculated, weighted moving average of the stored focal distances.

2. The system for reading code symbols according to claim 1, wherein the image processor is configured to perform an autofocus routine if processing the captured image of the code symbol at the initial, predicted focal distance fails to decode the code symbol.

3. The system for reading code symbols according to claim 1, wherein the image processor is configured to perform an autofocus routine if the number of memorized focal distances associated with previously decoded code symbols is less than a predetermined minimum.

4. The system for reading code symbols according to claim 1, wherein the imaging subsystem detects the presence of a code symbol within the imaging subsystem's field of view.

5. The system for reading code symbols according to claim 1, comprising an object detection subsystem for detecting the presence of an object within the imaging subsystem's field of view.

6. The system for reading code symbols according to claim 1, comprising a hand-supportable housing, wherein the imaging subsystem and image processor are disposed within the hand-supportable housing.

7. The system for reading code symbols according to claim 1, comprising an input/output subsystem for outputting system signals.

8. A system for reading code symbols, comprising:
an imaging subsystem for capturing images, the imaging subsystem comprising a focusing module; and
an image processor configured for:
selecting an initial, predicted focal distance for the imaging subsystem's focusing module;
processing an image of a code symbol captured by the imaging subsystem in order to decode the code symbol; and
storing in memory the focal distance associated with the decoded code symbol;

wherein the image processor is configured to select the initial, predicted focal distance as a function of memorized focal distances associated with previously decoded code symbols if the number of memorized focal distances associated with previously decoded code symbols is equal to or greater than a predetermined minimum.

9. The system for reading code symbols according to claim 8, wherein the image processor is configured to perform an autofocus routine if processing the captured image of the code symbol at the initial, predicted focal distance fails to decode the code symbol.

10. The system for reading code symbols according to claim 8, wherein the imaging subsystem detects the presence of a code symbol within the imaging subsystem's field of view.

11. The system for reading code symbols according to claim 8, comprising an object detection subsystem for detecting the presence of an object within the imaging subsystem's field of view.

12. The system for reading code symbols according to claim 8, comprising a hand-supportable housing, wherein the imaging subsystem and image processor are disposed within the hand-supportable housing.

13. The system for reading code symbols according to claim 8, comprising an input/output subsystem for outputting system signals.

14. A system for reading code symbols, comprising:
an imaging subsystem for capturing images within the imaging subsystem's field of view, the imaging subsystem including a focusing module; and
an image processor configured for:
selecting an initial, predicted focal distance for the imaging subsystem's focusing module with respect to a code symbol;
processing one or more images of a code symbol captured by the imaging subsystem at the initial, predicted focal distance;
if processing a predetermined number of captured images of a code symbol fails to decode the code symbol, then performing an autofocus routine; and
if processing a captured image of the code symbol decodes the code symbol, then storing in memory the focal distance associated with the decoded code symbol;
calculating a weighted moving average of the focal distances associated with decoded code symbols stored in memory;
selecting the initial, predicted focal distance based on the calculated, weighted moving average of the stored focal distances.

15. The system for reading code symbols according to claim 14, wherein the image processor is configured to store in memory the initial, predicted focal distance associated with the decoded code symbol if processing a captured image of a code symbol at the initial, predicted focal distance decodes the code symbol.

16. The system for reading code symbols according to claim 14, wherein the image processor is configured to perform an autofocus routine if the number of memorized focal distances associated with previously decoded code symbols is less than a predetermined minimum.

17. The system for reading code symbols according to claim 14, wherein, the image processor is configured to process one or more additional captured images of the code symbol after the image processor performs an autofocus routine.

18. The system for reading code symbols according to claim 14, wherein the imaging subsystem detects the presence of a code symbol within the imaging subsystem's field of view.

19. The system for reading code symbols according to claim 14, comprising an object detection subsystem for detecting the presence of a code symbol within the imaging subsystem's field of view.

20. The system for reading code symbols according to claim 14, comprising a hand-supportable housing, wherein the imaging subsystem and image processor are disposed within the hand-supportable housing.