US 8103082 B2
Systems and methods for assessing and optimizing virtual microscope slide image quality are provided. In order to determine whether a virtual slide image has any out of focus areas and is therefore a candidate for manual inspection, the various focus points used to scan the virtual slide image are used to calculate a best fit surface for the virtual slide image. The distance of each focus point from the best fit surface is then calculated and the largest distance is compared to a predetermined value. If the largest distance from a focus point to the best fit surface is larger than the predetermined value, then the virtual slide image is designated as needing a manual inspection and possible re-scan.
1. A computer implemented method for real-time image quality optimization of a virtual microscope slide image, comprising:
identifying a set of focus points corresponding to a tissue sample on a microscope slide;
calculating a best fit surface from the set of focus points;
determining a distance of each focus point from the best fit surface;
identifying a maximum distance of each focus point from the best fit surface;
comparing the identified maximum distance of each focus point from the best fit surface to a predetermined threshold distance to identify one or more outlier focus points in the set of focus points;
recalibrating at least one of the outlier focus points in the set of focus points, wherein recalibrating comprises changing the location, instead of eliminating, of an outlier focus point and recapturing the focus point at the changed location;
determining a focal surface in accordance with the set of focus points, including the at least one recalibrated outlier focus point; and
scanning the tissue sample on the microscope slide in accordance with the focal surface.
2. The method of
3. The method of
4. The method of
5. The method of
6. A computer implemented system for optimizing the image quality of a virtual microscope slide image in real-time, comprising:
a microscope slide scanning system configured to scan a specimen on a microscope slide to create a virtual microscope slide image;
a memory configured to store the scanned virtual microscope slide image;
the microscope slide scanning system comprising:
a focus point identifier module configured to identify a set of focus points corresponding to a tissue sample on the microscope slide;
a best fit surface module configured to calculate a best fit surface from the set of focus points;
a distance module configured to identify a maximum distance of each focus point from the best fit surface;
a comparison module configured to compare the maximum distance of each focus point from the best fit surface to a predetermined threshold distance to identify one or more outlier focus points in the set of focus points;
an adjustment module configured to recalibrate at least one of the outlier focus points in the set of focus points wherein recalibrating comprises changing the location, instead of eliminating, of an outlier focus point and recapturing the focus point at the changed location;
a focal surface module configured to generate a focal surface in accordance with the set of focus points, including the at least one recalibrated outlier focus point;
a scanning module configured to scan the tissue sample on the microscope slide in accordance with the focal surface.
7. The system method of
8. The system of
9. The system of
10. The system of
The present application is a continuation of U.S. patent application Ser. No. 11/140,589 filed on 26 May 2005, which claims the benefit of U.S. provisional patent application Ser. No. 60/575,047 filed on 27 May 2004 and which is a continuation-in-part of U.S. patent application Ser. No. 10/827,207 filed on 16 Apr. 2004, and which is a continuation-in-part of U.S. patent application Ser. No. 10/798,457 filed on 11 Mar. 2004, which is a continuation of U.S. patent application Ser. No. 09/563,437, now U.S. Pat. No. 6,711,283. Each of the aforementioned applications is incorporated herein by reference in its entirety.
1. Field of the Invention
The present invention relates to the field of virtual microscopy and more particularly relates to the assessment of image quality based upon the focus map of a line scan camera prior to and during the capture of imagery data from a specimen on a microscope slide.
2. Related Art
In conventional virtual microscopy systems, image tiling techniques produce individual image tiles that can be significantly out of focus over much of the image. An image tiling system is restricted to a single focus height for each individual snapshot taken by its camera, thus, each of these “fields of view” have areas that are out of focus when the subject specimen being scanned does not have a uniform surface. At the high magnification levels employed in virtual microscopy, specimens with a uniform surface are extremely rare. Moreover, conventional image tiling systems suffer from circular optical distortion that is inherent in the use of an area scan camera with an objective lens. This circular distortion causes the perimeter area of an image tile to be out of focus.
Conventional image tiling solutions are severely handicapped by these limitations, with their only recourse for the inherent circular optical distortion being to discard a significant amount of out of focus image data on the perimeter of each image tile. This results in an increased number of image tiles that must be scanned and a corresponding increase in the time to scan a microscope slide. Furthermore, even when the out of focus perimeter image data is discarded, the remaining image data still suffers from out of focus areas on each image tile due to the lack of a uniform surface and also from circular optical distortion.
Recently, new line scan camera systems have been introduced to the virtual microscopy industry such as the ScanScope® scanner created by Aperio Technologies, Inc. The revolutionary ScanScope® scanner system does not suffer from circular optical distortion due to its use of a line scan camera. Additionally, the line scan camera can adjust its focus for each line of pixels that are captured when scanning a microscope slide and can therefore track a non-uniform surface. Thus, the quality of the resulting image from a line scan camera system is inherently superior due to the sharp focus of each line of pixels captured by the line scan camera.
Although the imagery data captured by a line scan camera is objectively better, there are still focus problems that may arise during image capture. For example, pre-scan focus procedures that identify focus points may focus on non-tissue material, such as dirt, scratches, pen marks, labels, or other debris. This foreign material often resides on the top of the cover slip or the bottom surface of the slide. In these cases the distance between the measured pre-scan focus point and the optimal focus height may be quite large. Accordingly, any tissue that is in the neighborhood of these pre-scan focus points can be dramatically out of focus.
Additionally, when a tissue specimen does not lay flat on the glass (often referred to as having “folded” tissue) the field of view (“FOV”) of the objective lens cannot be brought into focus using a single focus height. In this case, it is important that the pre-scan focus points be focused on the non-folded parts of the tissue, which is increasingly unlikely as the amount of folded tissue increases.
Also, in some cases the tissue specimen does not have sufficient contrast to allow the pre-scan focus procedure to make an accurate measurement. In such a case, the pre-scan focus procedure may focus on other material as previously described. Fortunately, the likelihood of this happening can be greatly reduced by setting a contrast threshold that rejects focus points identified by the pre-scan focus procedure that have insufficient contrast. Finally, a microscope slide may not be held securely during the scanning process. If this occurs, the height of the slide will likely change during the scanning process, after which the focus points identified in the pre-scan focus procedure will no longer be valid.
If any of these conditions occurs, some part of the resulting virtual slide image will be out of focus. However, identifying virtual slide images with out of focus areas requires a manual inspection of each virtual slide image. This is a very costly and time consuming quality control problem. And when out of focus virtual slide images are detected, an operator must use a manual procedure to re-scan the virtual slide image, which is also time consuming. During the manual procedure, the operator will identify known good tissue locations on the slide that are used for focus point placement. After this, the operator will either manually focus the points prior to scanning, or allow the system to proceed automatically using the good focus point locations.
Accordingly, the advancements in the virtual microscopy industry have created a need for improved systems and methods for assessing and optimizing virtual slide image quality that overcome the costly and time consuming manual inspection process and capitalizes on the focusing capabilities and speed of the revolutionary line scan camera systems.
Accordingly, systems and methods for optimizing virtual slide image quality are described that assess the quality of a virtual microscope slide image and identify those virtual slide images that are highly likely to have out of focus portions and need to be re-scanned. Initially, a set of focus points are identified that were used in the scan of a virtual slide image. These focus points are used to determine a best fit surface for the virtual slide image. The largest distance of any focus point from the best fit surface is then identified and compared to a predetermined maximum distance value. If the largest distance is greater than the maximum distance, then the virtual slide image is designated as needing a manual inspection.
Alternatively, the assessment can be done in real time during the scanning process. This allows focus points that have a distance from the best fit surface that exceeds the predetermined maximum value to be identified and discarded or recalibrated prior to the image capture process in order to increase the likelihood that all of the imagery data captured during the scanning of a virtual microscope slide image is in sharp focus and also to increase the likelihood that time consuming re-scans will be unnecessary.
Furthermore, when a set of slides are automatically scanned in succession, a resulting graphical display can be presented that identifies the slides in a fashion that easily demonstrates to an operator the virtual slide images that need manual inspection. This also identifies for the operator the physical microscope slides that may need to be re-scanned. The graphical display may also provide the operator with easy access to viewing a designated virtual slide image so that the manual inspection process is streamlined. The graphical display may also provide the operator with easy access to a re-scan mode so that the re-scanning process is also streamlined.
The details of the present invention, both as to its structure and operation, may be gleaned in part by study of the accompanying drawings, in which like reference numerals refer to like parts, and in which:
Certain embodiments as disclosed herein provide for systems and methods for assessing virtual microscope slide image quality to determine whether a virtual slide image has any out of focus areas and is therefore a candidate for manual inspection. For example, one method as disclosed herein allows for the various focus points used to scan the virtual slide image to be used in calculating a best fit surface for the virtual slide image. The distance of each focus point from the best fit surface is then calculated and the largest distance is compared to a predetermined value. If the largest distance from a focus point to the best fit surface is larger than the predetermined value, then the virtual slide image is designated as needing a manual inspection and possible re-scan.
After reading this description it will become apparent to one skilled in the art how to implement the invention in various alternative embodiments and alternative applications. However, although various embodiments of the present invention will be described herein, it is understood that these embodiments are presented by way of example only, and not limitation. As such, this detailed description of various alternative embodiments should not be construed to limit the scope or breadth of the present invention as set forth in the appended claims.
In one embodiment, during a pre-scan focus procedure, various focus points 1050 are selected on the slide, either manually or by some automatic procedure. These focus points are visited prior to the scan in order to identify the optimum focus height at the location. These optimum focus heights are used to assist in focusing the microscope objective lens during the scanning process. In the illustrated embodiment, each focus point  has a location (X, Y) on the slide.
The procedure for determining the height of best focus 2070 (described in more detail in the aforementioned patent application Ser. No. 10/827,207) involves first positioning the objective lens above each focus point 1050 and then determining the height 2040 on the Z axis that provides the best focus for that location on the slide. From this set of points, a focal surface is determined and the objective follows this focal surface during the scanning process. The scanning system performs the focusing automatically and in one embodiment the points are refocused at regular intervals in order to account for system drift.
As illustrated in
A pre-scan focus value (also referred to herein as a pre-focus value or a focus value) is determined by the three Cartesian coordinates (X, Y, Z). Each focus point has a focus value. The scan direction 1030 value (X coordinate) and the scan width 1040 value (Y coordinate) specify a point on the slide and the height 2040 value (Z coordinate) specifies the height of the objective lens above this location that brings the tissue into optimum focus. Together, the X, Y, and Z coordinates establish a pre-focus value. Alternative procedures for determining these coordinates are discussed in more detail in the aforementioned patent application Ser. No. 10/827,207. In general, there are N such focus points, where N can be any positive number, but for practical purposes it is most often in the range between 1 and 100.
In the illustrated embodiment, the best fit surface is calculated in steps 205, 210, and 215. The best fit surface does not necessarily coincide with the previously mentioned focal surface. Rather, the best fit surface is a substantially planar surface that represents an average of the various focus points over the scanned area (or area to be scanned in a real time embodiment). In one embodiment, a least-squares method can be used to calculate the best fit surface from the various focus points. In other embodiments, other methods can be used to calculate the best fit surface.
In a simple embodiment where the best fit surface is a plane, the best fit surface may be specified by the three parameters (a, b, c). Thus, all points (X, Y, Z) that lie on the best fit surface satisfy the surface equation:
In step 205, the surface equation is applied to each focus value. The various focus values can be numbered from 1 to N, with the i'th value designated as (Xi, Yi, Zi). This set of equations comprises a matrix equation that is assembled in step 210. Mathematically, the matrix equation may be written as:
The ellipses in the matrix equation indicate a repeating pattern in the matrix representation. If N=3, then the matrix is a 3-by-3, which can be solved exactly, due to the fact that three points uniquely determine a plane. In practice, N is much greater than 3. In step 215, the parameters (a, b, c) are determined, for example, by using standard least-squares methods. These parameters allow for the final calculation of the best fit surface for the matrix equation. A variety of known techniques exist for finding the least squares solution, including Gaussian elimination or one of its derivatives, such as Cholesky factorization. Alternatively, the least squares solution can be calculated directly using Singular Value Decomposition with generalized inverse. These methods of solution are well known to anyone skilled in the art of matrix linear algebra.
In other embodiments, best fit surfaces other than a plane may be used. For example, a parabolic surface would be advantageous if the glass slide were not flat, but instead had some amount of curvature or bending. Using a polynomial representation, the equation for a parabolic surface can be written as:
In this equation, there are six parameters (a, b, c, d, e, f). Accordingly, the corresponding matrix equation would have six columns, and would be written as:
The matrix formulation can be extended to any arbitrary surface, with the result that the matrix equation will have the number of parameters and columns necessary to describe the surface. Once the matrix equation is generated in this fashion, the parameters are found using the same least-squares solution method, independent of the complexity of the surface. Those having skill in the art will understand how the matrix formulation can be applied to surfaces that are more complex than a plane or parabola.
In step 220 the distance of each focus point from the best fit surface is calculated by subtracting the best fit surface Z value from the focus point Z value (Zi) using the equation:
With any tilt of the best fit surface removed, the adjusted Z values for each focus point will be clustered within a small range around zero. The value of the largest distance of any of the focus points from the best fit surface is then identified. This largest distance value is referred to as Dmax.
Next, the Dmax value is compared to a predetermined threshold to see if the Dmax value exceeds the threshold. If Dmax exceeds the threshold, as determined in step 225, then an outlier has been detected and the virtual slide image is flagged in step 230 as having suspect image quality and needing manual inspection. If Dmax is less than the threshold value, as determined in step 225, then no outlier is detected and the virtual slide image is classified as having good image quality, as shown in step 235. In one embodiment, a reasonable value for the threshold is 5 microns, however, the threshold can be set to any value, for example to optimize the identification of virtual slide images with poor image quality. For example, in an alternative embodiment the value of the threshold can be set to 10 microns.
In the illustrated example, the good images 5010 are shown as star symbols and the bad images 5020 as shown as squares. A reference line 5030 is shown at 5 microns and clearly separates the bad images from the good images. Accordingly, by setting the threshold at 5 microns, the outlier detection procedure did not miss a single bad quality image—a sensitivity of 1.0. More importantly, 28 of the 30 images that exceed the threshold are in fact bad—a specificity of 28/30=0.93. Thus, only two good images were identified as needing a manual inspection. This means that operators of the scanner can confidently use the outlier detection procedure to identify suspect images and restrict manual inspection to just those images. This greatly reduces the number of images that need to be inspected for good focus quality.
Initially, in step 600 the process begins with locating the tissue sample on the microscope slide and then placing focus points at various locations on the tissue sample, as shown in step 605. Next, in step 610 the scanning system obtains the focus value for the various focus points and then in step 615 the best fit surface is calculated. At this point the outlier detection procedure is employed in step 620 to determine if any of the focus points are outliers. If there are outliers, these focus points are modified in step 625, for example by eliminating them from the set of focus points or by changing the location slightly and then recapturing the focus value for the new location of the focus point. For example, moving the focus point slightly might eliminate a pen mark or other marking that caused the focus value to be incorrectly read.
Additionally, in step 625 a flag can optionally be set that indicates that an outlier was initially detected. This may advantageously allow the virtual slide image to be flagged as needing a manual inspection in order to improve the overall quality of captured virtual slide images. Alternatively, no flag may be set when an outlier focus point is eliminated and replaced with a focus point that is not an outlier. Advantageously, replacing an outlier focus point with a non-outlier focus point may reduce the total number of virtual slide images that need manual inspection.
After the outlier focus points are modified, or if there were no outlier focus points, in step 630 the virtual slide is scanned. It is important to note at this point that in alternative embodiments, the steps 605-630 may be taken repeatedly for each individual stripe that is captured as part of a virtual slide image capture process (interleaved) or the steps may be taken once in advance of the entire virtual slide image capture process.
After the scanning process is complete, if the optional outlier flag has been set, as determined in step 635, the virtual slide image may be designated for manual inspection as shown in step 645. Alternatively, the presence of the outlier flag may just be recognized for statistical tracking of the scanning system. If no outliers were detected, as determined in step 635, or alternatively if a flag was set but only for statistical tracking purposes, then the virtual slide image is classified as having good quality, as shown in step 640.
One benefit of designating for manual inspection those virtual slide images that had modified or eliminated focus points is the improved quality control. Advantageously, the resulting virtual slide image has a higher likelihood of being of good quality upon inspection, even if outliers were initially detected, since the outlier points were not used or were modified such that the modified focus points were not outliers. This means that although manual inspection is still performed, a re-scan is less likely to be necessary, thereby providing an additional time savings with improved quality control.
For those virtual slide images that are classified as good images such as virtual slide image 7010, the operator does not need to conduct a manual inspection. For those virtual slide images that are flagged as needing a manual inspection, such as virtual slide image 7020, the operator may efficiently conduct a manual inspection by, for example, clicking on the rectangle that represents the suspect virtual slide image. Advantageously, this may cause a viewing application to be executed that results in the actual virtual slide image being displayed on the same display screen.
In one embodiment, the coordinates of the outlier focus point may be captured when the outlier is detected and then when the suspect virtual slide image is displayed to an operator for manual inspection, the specific area that is suspect may be initially presented to the operator to further streamline the inspection process. Alternatively, a region surrounding the identified outlier focus point may be outlined with an overlay on the virtual slide image or otherwise highlighted or identified to facilitate rapid manual inspection of the virtual slide image. Of course, the operator will also be able to pan and zoom the entire virtual slide image to inspect the quality and determine whether the image quality is good, or whether the slide needs to be re-scanned.
Advantageously, the operator only needs to manually inspect those virtual slide images that are identified as needing a manual inspection. The operator can easily tell at a glance whether there are any images to inspect and go directly to those images for visual inspection. This saves the operator time and makes the entire process more efficient, by quickly recognizing whether any images require further inspection. Furthermore, the graphical display may also provide the operator with easy access to a re-scan mode so that the re-scanning process is also streamlined.
The computer system 550 preferably includes one or more processors, such as processor 552. Additional processors may be provided, such as an auxiliary processor to manage input/output, an auxiliary processor to perform floating point mathematical operations, a special-purpose microprocessor having an architecture suitable for fast execution of signal processing algorithms (e.g., digital signal processor), a slave processor subordinate to the main processing system (e.g., back-end processor), an additional microprocessor or controller for dual or multiple processor systems, or a coprocessor. Such auxiliary processors may be discrete processors or may be integrated with the processor 552.
The processor 552 is preferably connected to a communication bus 554. The communication bus 554 may include a data channel for facilitating information transfer between storage and other peripheral components of the computer system 550. The communication bus 554 further may provide a set of signals used for communication with the processor 552, including a data bus, address bus, and control bus (not shown). The communication bus 554 may comprise any standard or non-standard bus architecture such as, for example, bus architectures compliant with industry standard architecture (“ISA”), extended industry standard architecture (“EISA”), Micro Channel Architecture (“MCA”), peripheral component interconnect (“PCI”) local bus, or standards promulgated by the Institute of Electrical and Electronics Engineers (“IEEE”) including IEEE 488 general-purpose interface bus (“GPIB”), IEEE 696/S-100, and the like.
Computer system 550 preferably includes a main memory 556 and may also include a secondary memory 558. The main memory 556 provides storage of instructions and data for programs executing on the processor 552. The main memory 556 is typically semiconductor-based memory such as dynamic random access memory (“DRAM”) and/or static random access memory (“SRAM”). Other semiconductor-based memory types include, for example, synchronous dynamic random access memory (“SDRAM”), Rambus dynamic random access memory (“RDRAM”), ferroelectric random access memory (“FRAM”), and the like, including read only memory (“ROM”).
The secondary memory 558 may optionally include a hard disk drive 560 and/or a removable storage drive 562, for example a floppy disk drive, a magnetic tape drive, a compact disc (“CD”) drive, a digital versatile disc (“DVD”) drive, etc. The removable storage drive 562 reads from and/or writes to a removable storage medium 564 in a well-known manner. Removable storage medium 564 may be, for example, a floppy disk, magnetic tape, CD, DVD, etc.
The removable storage medium 564 is preferably a computer readable medium having stored thereon computer executable code (i.e., software) and/or data. The computer software or data stored on the removable storage medium 564 is read into the computer system 550 as electrical communication signals 578.
In alternative embodiments, secondary memory 558 may include other similar means for allowing computer programs or other data or instructions to be loaded into the computer system 550. Such means may include, for example, an external storage medium 572 and an interface 570. Examples of external storage medium 572 may include an external hard disk drive or an external optical drive, or and external magneto-optical drive.
Other examples of secondary memory 558 may include semiconductor-based memory such as programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), electrically erasable read-only memory (“EEPROM”), or flash memory (block oriented memory similar to EEPROM). Also included are any other removable storage units 572 and interfaces 570, which allow software and data to be transferred from the removable storage unit 572 to the computer system 550.
Computer system 550 may also include a communication interface 574. The communication interface 574 allows software and data to be transferred between computer system 550 and external devices (e.g. printers), networks, or information sources. For example, computer software or executable code may be transferred to computer system 550 from a network server via communication interface 574. Examples of communication interface 574 include a modem, a network interface card (“NIC”), a communications port, a PCMCIA slot and card, an infrared interface, and an IEEE 1394 fire-wire, just to name a few.
Communication interface 574 preferably implements industry promulgated protocol standards, such as Ethernet IEEE 802 standards, Fiber Channel, digital subscriber line (“DSL”), asynchronous digital subscriber line (“ADSL”), frame relay, asynchronous transfer mode (“ATM”), integrated digital services network (“ISDN”), personal communications services (“PCS”), transmission control protocol/Internet protocol (“TCP/IP”), serial line Internet protocol/point to point protocol (“SLIP/PPP”), and so on, but may also implement customized or non-standard interface protocols as well.
Software and data transferred via communication interface 574 are generally in the form of electrical communication signals 578. These signals 578 are preferably provided to communication interface 574 via a communication channel 576. Communication channel 576 carries signals 578 and can be implemented using a variety of wired or wireless communication means including wire or cable, fiber optics, conventional phone line, cellular phone link, wireless data communication link, radio frequency (RF) link, or infrared link, just to name a few.
Computer executable code (i.e., computer programs or software) is stored in the main memory 556 and/or the secondary memory 558. Computer programs can also be received via communication interface 574 and stored in the main memory 556 and/or the secondary memory 558. Such computer programs, when executed, enable the computer system 550 to perform the various functions of the present invention as previously described.
In this description, the term “computer readable medium” is used to refer to any media used to provide computer executable code (e.g., software and computer programs) to the computer system 550. Examples of these media include main memory 556, secondary memory 558 (including hard disk drive 560, removable storage medium 564, and external storage medium 572), and any peripheral device communicatively coupled with communication interface 574 (including a network information server or other network device). These computer readable mediums are means for providing executable code, programming instructions, and software to the computer system 550.
In an embodiment that is implemented using software, the software may be stored on a computer readable medium and loaded into computer system 550 by way of removable storage drive 562, interface 570, or communication interface 574. In such an embodiment, the software is loaded into the computer system 550 in the form of electrical communication signals 578. The software, when executed by the processor 552, preferably causes the processor 552 to perform the inventive features and functions previously described herein.
Various embodiments may also be implemented primarily in hardware using, for example, components such as application specific integrated circuits (“ASICs”), or field programmable gate arrays (“FPGAs”). Implementation of a hardware state machine capable of performing the functions described herein will also be apparent to those skilled in the relevant art. Various embodiments may also be implemented using a combination of both hardware and software.
Furthermore, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and method steps described in connection with the above described figures and the embodiments disclosed herein can often be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled persons can implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the invention. In addition, the grouping of functions within a module, block, circuit or step is for ease of description. Specific functions or steps can be moved from one module, block or circuit to another without departing from the invention.
Moreover, the various illustrative logical blocks, modules, and methods described in connection with the embodiments disclosed herein can be implemented or performed with a general purpose processor, a digital signal processor (“DSP”), an ASIC, FPGA or other 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 can be a microprocessor, but in the alternative, the processor can be any processor, controller, microcontroller, or state machine. A processor can also be implemented as a combination of computing devices, for example, a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
Additionally, the steps of a method or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium including a network storage medium. An exemplary storage medium can be coupled to the processor such the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The processor and the storage medium can also reside in an ASIC.
The above description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles described herein can be applied to other embodiments without departing from the spirit or scope of the invention. Thus, it is to be understood that the description and drawings presented herein represent a presently preferred embodiment of the invention and are therefore representative of the subject matter which is broadly contemplated by the present invention. It is further understood that the scope of the present invention fully encompasses other embodiments that may become obvious to those skilled in the art and that the scope of the present invention is accordingly limited by nothing other than the appended claims.