Patent Publication Number: US-10310597-B2

Title: Portable eye tracking device

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority to, and is a continuation-in-part of, U.S. patent application Ser. No. 14/281,599 filed May 19, 2014, entitled “PORTABLE EYE TRACKING DEVICE,” the entire disclosure of which is hereby incorporated by reference, for all purposes, as if fully set forth herein. 
     U.S. patent application Ser. No. 14/281,599 claims priority to Provisional U.S. Patent Application No. 61/873,154 filed Sep. 3, 2013, entitled “PORTABLE EYE TRACKING DEVICE,” the entire disclosure of which is hereby incorporated by reference, for all purposes, as if fully set forth herein. 
     This application is also related to U.S. Pat. No. 9,041,787, issued May 26, 2015, filed May 19, 2014, entitled “PORTABLE EYE TRACKING DEVICE,” U.S. patent application Ser. No. 14/281,616, filed May 19, 2014, entitled “PORTABLE EYE TRACKING DEVICE,” and U.S. patent application Ser. No. 14/281,676, filed May 19, 2014, entitled “PORTABLE EYE TRACKING DEVICE,” the entire disclosures of which are hereby incorporated by reference, for all purposes, as if fully set forth herein. 
    
    
     BACKGROUND OF THE INVENTION 
     Methods for determining a point at which a user is looking are known in the art. The technology is often referred to as eye tracking or gaze detection technology. Eye tracking systems are typically found in two major forms. In one form, a sensor or other eye tracking device is located remote from a user&#39;s eye such as in or on a computer, display or similar device. 
     One known method of eye tracking includes the use of infrared light and an image sensor. The infrared light is directed towards the pupil of a user and the reflection of the light is captured by an image sensor. Through analysis of the reflection point, the direction of the user&#39;s gaze may be calculated. One such system is described in U.S. Pat. No. 7,572,008 assigned to Tobii Technology AB, Sweden (the “&#39;008 Patent”). The entire disclosure of the &#39;008 Patent is hereby incorporated by reference, for all purposes, as if fully set forth herein. 
     Portable or wearable eye tracking devices have also been previously described and are available for commercial purchase. One such eye tracking system is described in U.S. Patent Application Publication Number 2011/0279666 assigned to Tobii Technology AB, Sweden (the “&#39;666 Application”). The entire disclosure of the &#39;666 Application is hereby incorporated by reference, for all purposes, as if fully set forth herein. The &#39;666 Application describes a wearable eye tracking device that requires an external infrared light source to be placed in a scene as a reference point, to assist in determining the direction of a user&#39;s gaze. 
     Existing portable eye tracking systems may suffer severe performance degradation when the equipment moves relative to the wearer&#39;s head. For example, glasses may slip relative to a wearer&#39;s nose; in addition, a wearer may manually adjust glasses as they are worn. For designs requiring calibration, such movement of the glasses relative to the wearer&#39;s head may negate the calibration and significantly degrade the accuracy of the readings. As another example, a single-camera portable eye tracking system may render substantially degraded reading in certain conditions including when the wearer is in the presence of strong light sources; is exposed to direct sunlight; or when the single camera&#39;s view is obstructed such as by an eyelash. Furthermore, such single-camera systems may be unable to detect gaze directions at the extremities of a user&#39;s field of view. 
     BRIEF SUMMARY OF THE INVENTION 
     In one embodiment, a portable eye tracker device is provided. The portable eye tracer device may include a frame, at least one optics holding member, a movement sensor, and a control unit. The frame may be a frame adapted for wearing by a user. The at least one optics holding member may include at least one illuminator configured to selectively illuminate at least a portion of at least one eye of the user, and at least one image sensor configured to capture image data representing images of at least a portion of at least one eye of the user. The movement sensor may be configured to detect movement of the frame. The control unit may be configured to control the at least one illuminator for the selective illumination of at least a portion of at least one eye of the user, receive the image data from the image sensors, and receive information from the movement sensor. 
     In another embodiment, a method of determining a gaze direction for a user is provided. The method may include activating at least one illuminator on a frame worn by a user to selectively illuminate at least a portion of at least one of the user&#39;s eyes. The method may also include receiving image data representing images at least a portion of at least one of the user&#39;s eyes from at least one image sensor on the frame. The method may further include receiving information from a movement sensor configured to detect movement of the frame. The method may additionally include determining a gaze target area for the user based at least in part on the image data and information from the movement sensor. 
     In another embodiment, a non-transitory machine readable medium having instructions thereon for determining a gaze direction for a user is provided. The instructions may be executable by a processor for activating at least one illuminator on a frame worn by a user to selectively illuminate at least a portion of at least one of the user&#39;s eyes. The instructions may also be executable for receiving image data representing images at least a portion of at least one of the user&#39;s eyes from at least one image sensor on the frame. The instructions may further be executable for receiving information from a movement sensor configured to detect movement of the frame. The instructions may additionally be executable for determining a gaze target area for the user based at least in part on the image data and information from the movement sensor. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention is described in conjunction with the appended figures: 
         FIG. 1A  shows an eye tracking device according to some embodiments of the present invention; 
         FIG. 1B  shows an alternative eye tracking device according to other embodiments of the present invention; 
         FIG. 2A  shows a rear view of an eye tracking device according to some embodiments of the present invention; 
         FIG. 2B  shows a rear view of an eye tracking device according to other embodiments of the present invention; 
         FIG. 3  shows a first view of an optics holding member according to some embodiments of the present invention; 
         FIG. 4  shows a second view of an optics holding member according to some embodiments of the present invention; 
         FIG. 5  shows one possible method employed by various embodiments of the invention; 
         FIG. 6  is a block diagram of an exemplary computer system capable of being used in at least some portion of the apparatuses or systems of the present invention, or implementing at least some portion of the methods of the present invention; and 
         FIG. 7  shows another possible method employed by various embodiments of the invention. 
     
    
    
     In the appended figures, similar components and/or features may have the same numerical reference label. Further, various components of the same type may be distinguished by following the reference label by a letter that distinguishes among the similar components and/or features. If only the first numerical reference label is used in the specification, the description is applicable to any one of the similar components and/or features having the same first numerical reference label irrespective of the letter suffix. 
     DETAILED DESCRIPTION OF THE INVENTION 
     The ensuing description provides exemplary embodiments only, and is not intended to limit the scope, applicability or configuration of the disclosure. Rather, the ensuing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing one or more exemplary embodiments. It shall be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims. For example, any detail of one embodiment discussed herein may or may not be present in all possible variations of that embodiment, and may or may not be present in all possible variations of other embodiments discussed herein. 
     Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, circuits, systems, networks, processes, and other elements in the invention may be shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments. 
     Also, it is noted that individual embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process may be terminated when its operations are completed, but could have additional steps not discussed or included in a figure. Furthermore, not all operations in any particularly described process may occur in all embodiments. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function. 
     The term “machine-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing or carrying instruction(s) and/or data. A code segment or machine-executable instructions may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc. 
     Furthermore, embodiments of the invention may be implemented, at least in part, either manually or automatically. Manual or automatic implementations may be executed, or at least assisted, through the use of machines, hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium. A processor(s) may perform the necessary tasks. 
     Referring now to  FIG. 1A  a portable eye tracking device  10  according to one embodiment of the invention is shown. Eye tracking device  10  includes a frame  12  having a glasses lens (or pair of lenses)  14  coupled with it in such a manner so as to resemble a traditional pair of eye glasses or sunglasses. Frame  12  may include a center piece  15  to which glasses lens  14  is attached and from which two arms  17  (i.e., temples) extend. Arms  17  may fit above the ear of a user in the manner of a traditional pair of eye glasses or sun glasses. 
     In some embodiments, a nose piece  16  may be provided for comfort and to assist in fitting of device  10  to a user&#39;s nose. A scene camera  18  (which may capture still and/or video images and/or other image data) may be disposed in the middle of glass lens  14 , or between separate glass lenses, above the nose piece  16 . A microphone  20  may also be placed adjacent or near to scene camera  18 . 
     A control unit  22  may be located within one or both arms  17 , either in the front, middle, and/or end thereof. Any processor function described herein may be executed at control unit  22 , and/or an external processor in communication with control unit  22 . Control unit  22  may include elements for performing computational tasks, such as a printed circuit board (PCB) and other electronics, as will be described in further detail herein. Control unit  22  may also contain a communications port or component designed to communicate with an external computing device. This communications port or device may support any one or more form of known communication. For example, a communications port may include a Universal Serial Bus (USB) port, Firewire port, High-Definition Multimedia Interface (HDMI) port, Ethernet port or the like. A communications device may include a Wi-Fi transceiver, Bluetooth transceiver, or any other near-field or longer-range communication device. In other embodiments, the communications port or device may also be of a proprietary type especially designed for use in a portable eye tracking device. The communication port or device may for example include a low-powered wireless communications means. 
       FIG. 1B , shows an alternative eye tracking device  10 A with certain components in different positions. In this embodiment, control unit  22  may be located on the side of arm  17 , and include an HDMI interface  19 . 
       FIG. 2A  shows eye tracking device  10  according to certain embodiments of the invention as viewed from behind. For illustration purposes a portion of center piece  12  has been removed from the figure to show the placement of a circuit board  50  which may contain electronic components such as flex connectors  52  and microphone  20 . Circuit board  50  may also contain processing architecture such as a digital signal processor, field programmable gate array and/or another processor system on a chip. Circuit board  50  may be attached to center piece  12  by way of a conventional fastening means, such as screws  54 , adhesive, and/or other means. Center piece  12  may include one or more parts which fit over circuit board  50 , such that circuit board  50  is disposed within center piece  12 , and not visible during normal use. 
     Device  10  may also include two optics holding members  70 . In other embodiment only one contiguous optics holding member may be provided which provides the functionality of the two optics holding members  70  shown in  FIG. 2A . Each optics holding member  70  may include one or more image sensors and one or more illuminators as will be further explained below. Thus, an optics holding member  70  may include components that illuminate a user&#39;s eye, or some sub-portion thereof (for example, the iris), and capture images comprising reflection points of the illumination on the user&#39;s eye, or some sub-portion thereof.  FIG. 2B , shows the alternative eye tracking device  10 A of  FIG. 1B . 
       FIGS. 3 &amp; 4  show optics holding members  70  according to embodiments of the invention in further detail. Each optics holding member  70  may include two primary components, a cover  72  and a flexible member  74 . Cover  72  may cover flexible member  74  when properly coupled together as shown by optics holding member  70 B. Optics holding member  70 A is shown with flexible member  74  and cover  72  parted in order to show the interaction between the two components. Flexible member  74  and cover  72  may be configured such that the flexible member  74  snaps into the cover  72 . As another example, the flexible member  74  and cover  72  may be connected to one another using adhesive, screws and/or other conventional fastening means. 
     Flexible member  74  may include a flex circuit and have mounted on it one or more spaced illuminators  76  and/or one or more image sensors  78 . Any number of illuminators  76  (e.g., 1, 2, 3, 4, 5, 6, etc.) and image sensors (e.g., 1, 2, 3, 4, 5, 6, etc.) may be employed in each optics holding member  70 . Illuminator  76  may include infrared illuminators capable of emitting infrared light as would be readily understood by a person of skill in the art, but other illuminators may also be used, including illuminators emitting ultraviolet and/or visible light. Image sensor  78  may be sensitive to the light emitted by illuminator  76  as well as visible light and other light that may be present in the area of use. For example, when device  10  is used outside, ambient light in the visible and nonvisible spectrums (e.g., visible and ultraviolet light from the sun) may be present and image sensor  78  may be configured to detect and distinguish (e.g., filter out or otherwise compensate for) different wavelengths of ambient light. Flexible member  74  may include a power source (e.g. batteries, solar cell, etc.) to provide power to illuminator  76  and image sensor  78  in a manner that would be well understood by a person of normal skill in the art. An upper end of the flexible member  74  may include a contact element  80  that connects to circuit board  50  mounted on center piece  12 . The use of flexible circuits and electronics is well known, and a person skilled in the art would appreciate the way they can be used in the present invention. 
     In some embodiments of the invention, cover  72  may be formed from an optically transparent material such that light from illuminators  76  may pass through cover  72  substantially unhindered. In some embodiments, cover  72  may be shaped to transmit the light emitted by illuminators  76  to the appropriate location. Parts or areas of cover  72  may for example be shaped as a lens that diverges light from one or more of illuminators  76  (or even ambient lighting sources) to illuminate a larger area including the user&#39;s eyes. Parts or areas of cover  72  may also be shaped to converge or focus light on particular areas or locations. Cover  72  may be molded out of a single piece of material wherein areas of the material are shaped like lenses or otherwise shaped to transmit light as described above. In other embodiments the cover may include multiple parts that are affixed together by glue, welding, screws and/or other conventional fastening means, where some of the parts transmit light and some do not, or where different parts transmit light in different ways. In some embodiments, flexible member  74  and/or cover  72  may be double molded and include filters which prevent transmission of light more directly from illuminators  76  to image sensors  78  through cover  72 . Optical windows may be provided by cover  72  or elsewise at each image sensor  78 . 
     Eye tracking device  10  may emit light from illuminators  76  that illuminate at least part of at least one of the user&#39;s eyes. One or more image sensors  78  may then capture an image comprising at least the portion of the eye as illuminated by illuminators  76 . This captured image may be transmitted via the flexible member  74  to processing devices (e.g., control unit  22  or other processor, perhaps in a device separate from frame  12 ), where the direction of the gaze of the user may be determined by analyzing the image data. 
     To determine the gaze direction of the user, a cornea position of one or both eyes of the user may be determined. The cornea position of the user&#39;s eye(s) may be analyzed by detecting glints or reflections of the light that is emitted from illuminators  76  onto the eye(s) of the user. In order to obtain a high quality image showing a glint on the user&#39;s eye, various combinations of multiple illuminators  76  may be used to emit light. For example, one illuminator  76  may illuminate using infrared light, while another illuminates using another wavelength of light. The image sensors  78  may then capture images when the eye is illuminated with ambient light only, when the eye is illuminated by each illuminator  76  individually, or when the eye is illuminated by two (or more) illuminators  76  at the same time. In such embodiments, image sensors  78  may prepare differential images of the user&#39;s eye. 
     Detection of glints may be done with image differentiation techniques (i.e., comparing a first image to a second image to detect a change) and/or standard image analysis algorithms. For example, by toggling an illuminator  76  on and off and capturing an image of the user&#39;s eye in each state, the resulting glint may be detected via comparison of the images. However, in some embodiments, glints may be detected by analyzing an one or more images to identify areas of intensity corresponding to a glint. One method of glint detection is outlined in the article “Improved Video-Based Eye-Gaze Detection Method,” by Yoshinobu Ebisawa, published on 4 Aug. 1998, which is hereby incorporated by reference, for all purposes, as if fully set forth herein. Further methods of glint detection are discussed in U.S. Pat. No. 6,577,329 titled “Method and system for relevance feedback through gaze tracking and ticker interfaces” and U.S. Pat. No. 8,292,433 titled “Method and apparatus for communication between humans and devices.” The entire disclosures of the aforementioned patents are hereby incorporated by reference, for all purposes, as if fully set forth herein. Persons skilled in the art will be aware of a number of ways of determining a gaze direction from light reflecting from a user&#39;s eye, and the present invention is not limited to the examples recited above. 
     In some embodiments of the invention, a given number of infrared illuminators  76  may be used to illuminate each of a user&#39;s eyes. As discussed, other numbers and/or types of illuminators  76  may be used in other embodiments. In such embodiments one or more glints corresponding to each illuminator  76  would be expected. As there may also be other glints resulting from ambient lighting, such as a spotlight or sunlight, etc., different techniques may be used to identify which glints correspond to the illuminators  76 , and which ones do not. In some embodiments, an image taken of the user&#39;s eye without the illuminators  76  turned on may be compared to one taken with the illuminators  76  turned on to filter out glints caused by ambient light. However, in other embodiments, the size, shape, expected intensity, and expected positions of glints may be used to determine which glints correspond to which illuminators. 
     In other embodiments, a wavelength filter may be used in conjunction with image sensors  78  to filter out wavelengths of light that do not correspond to the wavelengths emitted by illuminators  76 . For example, where illuminators  76  emit infrared light, a filter that passes only infrared light through to image sensor  78  may be used. In this way, image sensors  78  may only detect glints resulting from light emitted by the illuminators  76 . Conversely, filters may be employed that filter infrared light emitted by illuminators  76  while passing ambient light. Such filters may work well with respect to various artificial sources of ambient light. In some embodiments, lenses  14  may also be configured to block ambient infrared or some other wavelength of light However, in the case of direct sunlight, which includes a spectrum of light comprising both infrared and ultraviolet, filters may not be able to adequately block all of the ambient light and pass only the light emitted by illuminators  76 . As a result, glints resulting from ambient light may not be distinguishable from glints resulting from light emitted by illuminators  76  when the illuminator is lit. 
     Ambient light conditions for a user of wearable eye-tracker device  10  may change drastically over time. For example, if the user is facing the sun, his or her eyes may be subject to substantial illumination by sunlight, whereas if the user is facing away from the sun, his/her eyes may be significantly less illuminated. Similarly, if the user is in an indoor environment, the illumination may vary significantly based on the proximity of various light sources. For example if the user is standing directly below a ceiling light, his/her face and eyes may be substantially more illuminated than if he/she were standing adjacent to the ceiling light. Furthermore, in some embodiments, depending on the placement and types of light sources, the levels of ambient light may be different between the two eyes being tracked. For example, the user might be positioned such that his/her left side is in direct sunlight while his/her right side is in a shadow. 
     As discussed, it may be possible to compensate for some changes in ambient light levels by using the built in illuminators  76 . It may further be possible to counter the effect of ambient light variations by using light outside the frequency range of light available in the ambient lighting setting. For example in an indoor setting, ultraviolet illuminators  76  may be used to illuminate the user&#39;s eyes with ultraviolet light that is not present or is present at lower levels in the indoor lighting. Similarly, infrared illuminators  76  may be used on some embodiments, given that infrared light is typically present at low levels in indoor settings. In some embodiments, illuminators  76  capable of emitting light over a range of wavelengths may be used. In such embodiments, the device  10  may be programmed to dynamically analyze the spectrum of ambient light, and select a wavelength to be emitted by illuminators  76  that is higher or lower than the detected spectrum or otherwise confined to a certain part of the detected spectrum, in which case sensor  78  may also be dynamically adjusted by the device  10 . Alternatively, more than one sensor  78  may be provided of different types attuned to different wavelengths. 
     In another embodiment, a wavelength of light may be employed which has a high level of absorption in water, such as 940 nm. This concept is discussed in European Patent Application No. 12192370.0, the entire disclosure of which is hereby incorporated by reference, for all purposes, as if fully set forth herein. At this wavelength the dark pupil effect of the eye may be at its maximum as a majority of light entering the eye will be absorbed. Additionally, ambient light levels in the atmosphere at this wavelength are relatively low. Further, ambient light may be addressed by providing glasses lens  14  in a suitable material or configuration to block light at the wavelength visible to sensor  78 . Functionally this improves the signal quality as light is blocked from passing through the glasses lens  14 . 
     In some embodiments, differential lighting applications may be used. For example, image sensor(s)  78  may capture images of the user&#39;s eye 60 times per second and illuminators  76  may be configured to change state (on/off) 60 times per second out of phase with exposure of sensor(s)  78 . In such a scenario, every other frame of image data represents the user&#39;s eye as illuminated by illuminators  76 , with the alternate frames representing the user&#39;s eye as illuminated by ambient light. When analyzing the image data, image processing may be employed to determine the difference between two adjacent frames and thus differentiate glints caused by reflection from illuminators  76  from those caused by reflection from ambient light. The intensity or exposure time of illuminators  76  may be adjusted dynamically in some embodiments, for example based on the level of ambient light around the wearer. For example, a higher level of illumination, or longer exposure time, may be applied when more ambient light is present, or a lesser level of illumination, or shorter exposure time, may be applied if glints from ambient light are advantageously used by the sensors. Furthermore, illuminators  76  may be controlled in groups to allow image sensors  78  and image processing algorithms to detect and compensate for noise from ambient light. 
     Ambient light may be used to detect contrasts in captured image data to determine the position of the user&#39;s pupil and/or iris. This information may be used together with information based on glints associated with illuminators  76  to determine the direction in which the user is looking. Different settings for pulse length and intensity of the illumination emitted from illuminators  76  and the exposure time of image sensors  78  may be used to compensate for brightness of ambient light, and may in particular improve performance in dark or bright ambient light conditions. 
     For example, when there is a high level of ambient light, illuminators  76  may be disabled and the position of the user&#39;s pupil may be triangulated based on glints or other image data detected as a result of the ambient light. Thus, image data may be analyzed to determine the location of the cornea using only ambient light. In some cases, illuminators  76  may be used to assist the contrast detection, with short flashes of illumination coordinated with image capture by image sensors  78  may be sufficient to detect the position of the user&#39;s pupils. The use of short intensive illumination pulses with shorter exposure times may help avoid effects such as over-exposure, motion blur and rolling shutter effects. For example, in a shopping research scenario, a mobile eye tracker user may move his/her head around quickly while scanning the store shelves for a desired product. Similarly, when there is too little ambient light in the environment, the illuminators  76  may be used to help produce light to make it possible to pick up the contrasts of the eye. Illuminators  76  may thus be configured to emit lower intensity longer pulses with longer exposure times, and/or constantly emitting low intensity light. In one embodiment of the present invention, all illuminators  76  may be activated concurrently such that multiple reflections on the cornea of emitted light may be captured by sensors  78 . Device  10  may then use measured pupil position to determine one or more of gaze direction, orientation data, cornea position, and pupil size. 
     In some embodiments, a calibration of at least one of the plurality of illuminators  76 , at least one of the plurality of image sensors  78 , or an algorithm of the control unit  22  may be conducted in controlled lighting conditions to determine the location of the pupil and or cornea. In yet other embodiments, the location of the iris may be tracked based on ambient light alone; for example the lines of the iris may be identified to determine the orientation of the eye. Various modes that rely on ambient light only may be activated based on a number of conditions. For example, such a mode may be activated when battery power is low so as to conserve power by disabling illuminators  76 . Furthermore, the mode may be activated when ambient lighting reaches a level to where the accuracy of glint-based tracking is at least comparable to the accuracy of another available mode. Persons skilled in the art will appreciate that a number of different configurations may be used to obtain image data, and that the invention is not limited to the examples recited above. Additional calibration methods will be further discussed herein. 
     Accuracy of portable eye tracker device  10  may be maximized by ensuring that the glints are of optimal size. Glints that are too small may be difficult to detect and therefore reduce accuracy. On the other hand, glints that are too large may be difficult to accurately place and may therefore similarly reduce performance by interfering with pupil detection or otherwise. The size of the glints may be affected by the intensity of light emitted by illuminators  76 . The size of the glints may further be affected by the sensitivity settings, aperture and/or exposure time for image sensors  78 . The setting(s) for image sensors  78  may be adjusted to compensate for ambient light, and the intensity of illuminators  76  may in turn be adjusted to obtain the optimal glint size. Furthermore, the intensity of illuminators  76  and the settings for image sensors  78  may be balanced to obtain the optimal contrast level of the glints such that they can be easily detected. A person skilled in the art will appreciate that the size, contrast and other characteristics of glints may be optimized in a number of ways, and that the invention is not limited to the examples recited above. 
     The light conditions for each eye can be determined by analyzing images captured by image sensors  78  or using external light sensors, or a combination of both. The result of this analysis may be used to control the eye tracker settings for each eye in real-time. In some embodiments of the invention, the relevant light levels may be determined by light sensors embedded in portable eye tracker device  10 . In other embodiments, the light levels may be determined using one or more scene cameras  18 . By individually controlling the illuminators in real-time based on the current light conditions for each eye, overall performance of the eye tracker device  10  may be improved compared to situation in which the settings are based on only one eye or an average of both eyes. 
     After the glints corresponding to illuminators  76  have been identified in the image data captured by image sensor  78 , the location of such glints relative to the user&#39;s eye is determined using known image processing techniques. Once the glint locations are determined, they may be analyzed to determine the position of the user&#39;s cornea. In some embodiments, the locations of the glints may be mapped on to a three-dimensional model of the human eye. For example, the glints may be mapped onto the cornea. In some embodiments the cornea may be assumed to be a perfect sphere; the locations of the glints may be used to determine the location of the cornea relative to the pupil. This location of the cornea relative to the pupil may in turn be used to determine the direction of the gaze and thereby the optical axis of the eye. Various means of determining a gaze direction based on glints are known in the art and a person skilled in the art would appreciate that the present invention is not limited to the examples recited above. 
     In some embodiments of the invention, more than one image sensor  78  is provided for capturing images of each eye. Where two image sensors  78  are used for each eye, this may be referred to as “stereo mode.” By capturing images of an eye from multiple points of view, additional information may be determined by processor such as control unit  22  or other processor, such as the distance of the eye from each image sensor  78 . Further, by operating more than one image sensor  78  there is a level of redundancy in the system whereby it may still function even if one or more image sensor  78  cease to function. 
     Any number of image sensors and/or configuration thereof may be combined with multiple illuminators  76  to operate in various configurations to optimize the reliability of the system. For example, device  10  may be configured to try various configurations of illuminators  76  (e.g., cycle through various illumination patterns/sequences) to determine which configuration of illuminators  76  creates the best image at each image sensor  78 . Illuminators  76  may then be configured to change state (on/off) at a frequency such that each image sensor  78  takes a picture in optimal illumination. For example, if there are three image sensors  78  for each eye, and each image sensor  78  captures 30 images per second, illuminators  76  may be configured to change state 90 times per second so that each image sensor  78  can capture an image in a dedicated illumination setting. This may further be used to provide an increased frame rate for the gaze data. Further, using more than one image sensor  78  for an eye reduces the necessity of calibration between the device  10  and the user, i.e., it may be possible to operate the device  10  without user calibration in some instances due to the extra data gathered by having more than one image sensor  78 . 
     More than one image sensor  78  may also allow for compensation of physical movement of the device  10 . For example, device  10 , when configured as a pair of glasses, may slide down the user&#39;s nose, and the user may in turn push it back up. Device  10  may also move relative to the user&#39;s head after rapid movement of the user&#39;s head or for any other reason. This type of movement of device  10  relative to the user&#39;s head may reduce or eliminate any accuracy gained from prior calibration. Using multiple image sensors  78  may improve accuracy without the need for recalibration. For example when two image sensors  78  are used for each eye, each glint is detected from two perspectives and it is possible to estimate the location of the cornea with greater accuracy even in cases where device  10  has moved relative to the user&#39;s head after any initial calibration. 
     In some embodiments of the present invention, device  10  further includes one or more movement sensor or positioning device  25 . Movement sensor or position device  25  may include one or more of a gyroscope; an accelerometer; a compass, a GPS or other satellite receiver; GLONASS compass; or any other location, positioning, or direction sensor. Movement sensor or positioning device  25  may enable tracking of the position and/or orientation of device  10  itself and in turn the location or position of the user&#39;s head. This may allow the device  10  to account for head movement and adjust gaze direction data based on the information about head movement to provide a better estimate of the direction of the gaze. A gaze direction determined based on the orientation of the user&#39;s eyes may be relative to the orientation of the user&#39;s head. Information about the gaze direction based on the user&#39;s eyes may therefore be augmented with information about the orientation of the user&#39;s head. For brief moments, this augmentation may be performed using an accelerometer or a gyroscope. However, the inaccuracies of these devices may lead to drift if they are used to determine the orientation over time. In some embodiments information about gaze direction based on the user&#39;s eyes and/or information about the orientation of the user&#39;s head may be further augmented using information from a compass which provides orientation information relative to absolute points of reference. Additionally information about the change in orientation of the device may be helpful when conducting fixation filtering of gaze data. Assuming that objects in the surrounding stay relatively stationary it may be much easier to determine that the user wearing the device fixates at a stationary object while moving their head if device orientation data is available. 
     In other embodiments, movement sensor or positioning device  25  may be embedded in an apparatus connected with device  10  or any portion of device  10 . For example, movement sensor or positioning device  25  may be connected with device  10  or any portion of device  10  wirelessly or with a cable. In some embodiments, such movement sensor or positioning device  25  may be carried in a backpack worn by the user, or otherwise carried by the user. When movement sensor or positioning device  25  is embedded in the device  10  it may be able to provide more accurate information about the location of the user&#39;s gaze. A number of different systems can provide or account for the required latency and accuracy. In particular, gyroscopes and compasses may provide more accurate information if embedded in the device  10  itself. 
     Furthermore, information from movement sensor or positioning device  25  may be used to stabilize image data from scene camera(s)  18 . For example, scene camera  18  may capture image data approximating the view seen by the user. Information from movement sensor or positioning device  25  may be used to stabilize this image data. Information about the user&#39;s gaze may further be used to crop or otherwise adjust this image data to more accurately represent the gaze direction of the user. Image stabilization or compensation may include line-shifting of the video data. There are a number of well-known image stabilization methods that involve the use of a gyroscope or accelerometer, and a person skilled in the art will appreciate how these methods may be combined with embodiments of the present invention. Furthermore, time based compensation may be applied to the image data to account for image capture delay inherent in scene camera  18 . In particular, images captured by video cameras, rolling shutter cameras as well as CCD type cameras may not show the correct view for when a gaze point was obtained due to image capture delay. Time compensation may differ depending on the type of scene camera  18  and/or where in the image the gaze point is positioned. 
     Image processing and stabilization may in some embodiments be performed in real-time on device  10 , or on an external device, as the data is captured. In other embodiments, the image data may merely be stored on device  10  or transferred to an external device (not shown), and the image stabilization or other processing may be performed later based on the captured data. The approach taken may depend on the processing power available in device  10 , as well as the energy available from on-board or otherwise connected power source(s). In particular, certain types of processing may require large amounts of computing power that in turn consume a lot of battery capacity. In some embodiments device  10  may be configurable to either optimize battery capacity or to optimize for real-time processing. 
     Furthermore, elements in the captured image or video from scene camera  18  may be analyzed to determine the orientation of a user&#39;s head and the speed of movement of the user&#39;s head. By analyzing the relative position of elements in successive images or video, adjustments to the calculation of a gaze direction may be made to compensate for movement. In further embodiments, image sensors  78  and/or the scene camera  18  may utilize a rolling shutter to further improve the accuracy of the accuracy of determining the orientation of the users head. By determining the orientation and movement of a user&#39;s head in combination with the readout information of rows of image sensors  78  and scene camera  18 , the determined gaze direction may be overlaid on an image captured by scene camera  18  in such a way that the gaze direction may be corrected to reflect the actual scene present in the user&#39;s field of view at the time the gaze direction was calculated. 
     For example, device  10  may calibrate captured data from scene camera  18  with gaze data derived from the sensors  78  so as to more correctly reflect where and when a user was looking at a particular time in relation to captured data from scene camera  18 . In embodiments of the invention, this approach may be adopted where image data captured by scene camera  18  has been distorted due to, for example, rolling shutter distortion or vibrations. Further embodiments include considering instantaneous movement data of the device and calibrating accordingly by utilizing a motion sensor and/or other sensor. 
     Video from scene camera  18  may be analyzed to identify objects in the user&#39;s field of view. By identifying the objects and the distance of the objects from the user, more accurate information regarding the direction and target of the gaze may be determined. Computer vision algorithms may be used to detect objects from the image data. In some embodiments, multiple scene cameras  18  may be used to provide stereo vision and more accurate computer vision algorithms. As with image stabilization and other processing, object identification may be done in real-time or as post processing depending on the computing power and power capacity available on device  10 . Alternatively or additionally, scene camera  18  may be a depth camera measuring the distance to objects within the field of view of the person wearing the device  10 . The depth camera may also determine the intensity level of the objects, thus also provide a grey scale image. 
     Furthermore, image analysis may be used to determine the location of the user based on identification of objects detected within the user&#39;s field of view. In other words, an object within the user&#39;s field of view, e.g., a landmark or object known to be associated with a given place or type of place may reveal the user&#39;s location. For example an object or other indicia, such as signage, types of products, pricing labels products, etc. may indicate that the user is present within a particular retail store or at least a type of retail store. As another example, scene camera  18  or another scanning device connected to device  10  may be configured to scan bar codes that appear within the user&#39;s field of view, which may reveal that the user is present within a retail store or other known location or type of location. Such location information may be compounded with information from location sensors and movement sensors to determine a path taken by a user to get to his/her present location and/or to navigate around that location. Where a user is in the vicinity of a television or display, for example displaying a computer game, the game may be able to process eye tracking input provided by device  10 ; image analysis may be used to determine the direction of the user&#39;s gaze relative to the television or display. 
     Furthermore, image analysis of images from scene camera  18  may be utilized for simultaneous localization and mapping (SLAM). SLAM is the process of building a map of a location while simultaneously mapping the position of a device within that map. SLAM is frequently used by robots and similar appliances and may include an image sensor for capturing images of the robot&#39;s environment for mapping. A device according to an embodiment of the present invention may also be used with SLAM. 
     Where the motion sensors are used to detect motion, there may be considerable drift within the data when they are relied on for longer periods of time. The information from these motion sensors may therefore be corrected by location information determined based on objects detected from scene camera(s)  18 . Objects detected using scene camera(s)  18  may include characteristic structures or objects as well as bar codes. In other embodiments, sound information detected via microphone  20  may be used to determine a location. For example ultrasound emitters may be placed at various points throughout a particular location, such as a retail store, and microphone  20  may be used to determine the closest emitter. Alternatively the ultrasound source may be mounted on device  10  and the microphone used to determine the distance to the closest object in the direction of the ultrasound source. In addition or in the alternative, microphone  20  may be used to detect other ambient sounds and such information may be used, at least in part, to determine a location or type of location in which the user is present. In some embodiments, an RFID tag reader may be included in device  10  so that RFID tags can be used to determine the user&#39;s location. As an additional example, Wi-Fi signals and/or other communication signals may be received and triangulated by appropriate transceivers and logic onboard the device  10  to determine the user&#39;s location. A person skilled in the art will appreciate that the invention is not limited to the examples recited above and that a number of location identification means may be used to aggregate or determine location information about the wearer. 
     In some embodiments, one or more additional devices may be embedded in or coupled with device  10 . For example, scene camera  18  may be used to record images in an area in which the user might move and/or look. A gyroscope may be used for a compass-like feature to identify which direction device  10  is pointing and thus in which direction the user is looking. Image sensors  78  in the device may then identify the angle and distance of the user&#39;s gaze point based on the direction of where the head is pointing. Information from these multiple sensors in combination may be used to compute a vector representing the wearer&#39;s gaze. This vector may be transformed and visualized in the view of scene camera  18 . The vector may be used in some embodiments to provide a heat map based on information about where the user&#39;s gaze has been focused. A display  30  provided on device  10  may allow the user to view this or other visual data provided by device  10 . Merely by way of example, such display  30  could include an LCD screen, an LED screen, a prism projector, and/or other display technologies. 
     In some embodiments of the invention, a gaze-vector can be used to simulate a perspective from the user&#39;s point of view along the gaze vector. As described above, the gaze-vector can be used to stabilize an image from scene camera  18  attached to device  10 . However, scene camera  18  may not capture video of sufficient quality or have the ability to transmit the video in sufficient quality. The gaze vector may therefore be used along with video data from other cameras, such as stationary or track cameras to prepare a composite view that mimics the view from scene camera  18 . Similarly, gaze vectors for one or more users may be displayed in an overview perspective. This application of the present invention may be particularly relevant to sporting events. For example in a football game, a gaze vector for an individual player may be displayed along with gaze vectors for some or all of the other players. Furthermore, a picture-in picture of the scene-camera view or an approximated scene-camera view may be displayed for the player that has the ball. A similar application may be used in large coordinated police actions. A person skilled in the art will appreciate that the invention is not limited to the examples recited above, and that applications with different sports and in other situations may be useful. 
     The gaze vector may further be used to optimize video data from one or more scene cameras  18  in a number of ways. In one embodiment of the invention, the gaze vector may be used to determine focus and light settings to scene camera  18 . For example, scene camera  18  may be focused on the target of the gaze vector. Furthermore, the lighting levels of scene camera  18  may be optimized for the target area of the determined gaze direction. In embodiments of the invention where computer vision is used to detect objects captured by scene camera  18 , information about the distance of the objects from the user may be determined and used to further improve the exposure or lighting settings of scene camera  18 . In some embodiments, a gaze target area may be determined within the image data representing images of at least a portion user&#39;s field of view. In some of these embodiments, the gaze target area may comprise less than five percent, less than ten percent, less than 15 percent, less than 20 percent, less than 25 percent, less than 30 percent, less than 35 percent, less than 40 percent, less than 45 percent, or less than 50 percent of the image data in an image from the scene camera. The control unit  22  may then control the scene camera to adjust at least one of focus or light sensitivity based on, and/or within, the gaze target area. 
     However, in other embodiments, adjustment of scene camera  18  may not be necessary. For example when a user is driving a car in bright daylight scene camera  18  may capture the dashboard of the car and the view through the windshield. The objects seen through the windshield may be illuminated at a much higher level than the dashboard, and are naturally much further away. Using standard autofocus and light detection, scene camera  18  may be adjusted based on the average brightness in the detected image and focused to the object in the center of the camera view. However, when the gaze vector is used, the image may be focused on the dashboard when the user looks at the dashboard, and focused on the road when the user looks at the road. Similarly, the lighting levels of the captured video may be adjusted to be appropriate for the dashboard when the user looks at the dashboard, and to be appropriate for the road when the user looks at the road. 
     In some embodiments, the gaze data may be used to prioritize areas of the image for more detail. Based on the video compression used, priority may be given to the area of the image targeted by the gaze. In other embodiments, the video stream may be divided into two or more feeds. One low quality feed may include the entire field of view of the scene camera, whereas a high quality feed may include a small area around the target of the gaze vector. In another embodiment a matrix of video feeds may be used and their bitrate may be dynamically adapted based on the location of the gaze vector. A person skilled in the art will appreciate that the video quality may be adjusted in a number of different ways and that the invention is not limited to the examples recited above. 
     In further embodiments, device  10  may include a speaker for emitting sounds to the user. The speaker may be placed on device  10  in proximity to the user&#39;s ear. 
     In embodiments where a processor is used to detect objects in images captured by scene camera  18 , the gaze vector can be used to select only a subset of the image data around the gaze target to process and thus reduce the amount of processing work to improve feedback time, battery time etc. 
     Embodiments of the present invention may employ action triggers which cause an action to be performed by device  10 , some subcomponent thereof, or a connected system, such as a computer, tablet, television, and/or game machine. According to some embodiments, an action trigger may be enacted by device  10  in many possible ways, including:
         Images captured by sensor  78  and processed by device  10  or a connected system, resulting in a detection of a present eye, an absent eye, a blink, a fixation, a saccade, a direction of the user&#39;s gaze or the movement of a user&#39;s gaze in a predetermined pattern.   Images captured by scene camera  18  and processed by device  10  or a connected system, resulting in a detection of changes in light, identified object(s), identified pattern(s) and identified gesture(s) using computer vision algorithms.   A switch or button based trigger. For example, a physical button on device  10  or another device.   An audio based trigger. For example, sounds, words or commands spoken by a user and detected by microphone  20 .   An accelerometer- or gyroscope-detected action trigger, such as a nod or other head movement.   A combination of actions described above.       

     Embodiments of the present invention include calibration techniques whereby external objects may be used to facilitate the calibration process of the device  10 . Merely by way of example, illuminators  76 , image sensors  78 , and/or algorithms of control unit  22  may be adjusted during such calibration. In some embodiments, an external device such as a printed medium, television, or other display may contain a feature readily identifiable by device  10 . In some embodiments, the feature may be a specific frame, QR code, invisible feature (i.e., infrared feature), and/or other visible feature. The feature may contain an identification code which, when recognized by device  10 , allows the device  10  to connect to the external device by way of a communication protocol such as the internet, Bluetooth, wi-fi or any other communications protocol. The external device may then enter a calibration mode whereby icons for calibration are displayed on the screen and calibration instructions shown or emitted through speakers. Specific calibration processes are well known but typically include an ordered display of icons on a screen, which a user then gazes at and device  10  determines the gaze direction relative to each displayed icon. 
     By way of specific example, some embodiments may perform a calibration method whereby when device  10  is worn by a user, and a pattern is placed in front of the user such that the pattern is within the field of view of the scene camera  18 . Scene camera  18  records images of the pattern, while image sensors  78  capture images of the user&#39;s eye(s). The processing device analyses the pattern and determines known components of the pattern. The processing device analyses the gaze direction of the user utilizing the images captured by the image sensors  78  and matches the gaze direction against the known components of the pattern. As the components are known, the processing device may determine the offset between the location of the components and the determined gaze direction of the user. By knowing this offset, the device is calibrated for the particular user and can consider the offset when determining the user&#39;s gaze direction relative to other objects. 
     Further, device  10  may utilize in an algorithm or mathematical model information obtained from analyzing the relationship between a user&#39;s gaze direction and known components of the pattern or similar. By way of example device  10  may set a value of a parameter used in an algorithm or eye model used to determine a gaze direction, as would be readily understood by a person skilled in the art. 
     In some embodiments, another calibration method may also or alternatively be provided. Turning to  FIG. 7 , a method  700  is provided where at step  710 , a virtual object is displayed in a virtual reality environment on a display of a wearable device worn by a user. For example, in a virtual gaming environment, an object within the game such as a aiming reticle may be presented. Any other interactable object could also be used, where ahead of time it may be anticipated that the user will at some point focus their attention and/or actions on such object. 
     At step  720 , whether or not the user is interacting with the virtual object is determined. In various embodiments this may include determining whether the user has interacted with the virtual object in the virtual space, or has otherwise instructed an associated processing system that they desire to interact with the virtual object. Merely by way of example, such an interaction could include an input being received at an input device associated with the processing system; an interaction with the virtual object which moves the object in virtual space, or otherwise causes some change to the virtual object (i.e., picking the object up, activating the object, and/or changing the shape or other characteristic of the object); and/or the user&#39;s gaze direction remaining consistent on the virtual object for a predetermined amount of time. If the user is not interacting with the virtual object, intermittent and/or continual rechecking occurs until it is determined that the user is interacting with the object. 
     Once the user interacts with the object, at step  730 , the gaze direction of the user relative to the virtual object may be determined with an eye tracking device of the wearable device. In some embodiments, the virtual object may include a salient feature such as a point of interest on the object, or any other feature which is expected to stand out from other features of the object. In these instances, determining the gaze direction of the user may include determining the gaze direction of the user relative to such salient feature. At step  740 , the eye tracking device may be calibrated based at least in part on the gaze direction relative to the object and/or salient feature. 
     In some embodiments, additional functionality may be provided when device  10  is used in the context of a retail or consumer purchasing environment, such as a supermarket. The device may preload information such as personal calibration data to match the profile of a user. Once device  10  is worn by a user it may change from a low power mode to normal power mode and enter operational mode. Device  10  may allow a user to interactively manage their shopping bill by adding and removing items from a virtual shopping cart. For example, when a user places an item into their shopping cart, they can look at a bar code on the item and swipe right to left with their finger across the barcode to indicate that the item should be added to the list. Device  10  may recognize the gesture and add the item to a virtual list either on device  10  or at a remote location in communication with device  10 . This virtual list may be controlled by the user for example by removing items by swiping left to right across a barcode, swiping top to bottom to obtain further information about an item and gazing at a shopping cart and touching a predetermined location to hear feedback about the list or other information. Upon checking out from the store, the virtual list may be retrieved by a cashier or automatic machine and the user may pay directly for the items in the shopping cart. In a further embodiment, the user may exit the store directly and upon exiting the store, the value of the list may be deducted from a monetary source such as a credit card or account. 
     In another embodiment, device  10  may perform optical character recognition (OCR) on image data including text that is read by a user. For example, scene camera  18  may record images of text read by a user as determined by the user&#39;s gaze direction. Device  10 , or a computing device in communication with device  10 , may perform OCR on the images of the text to determine the words comprising the text. OCR techniques are well understood and known in the art. Once text has been analyzed using an OCR technique, it may be sent to a text-to-speech functionality that reads out the text loud, translated to a result presented to the user in real time, and/or saved as text data or a string that may be readily manipulated and understood by a computing device. The text may be saved for retrieval by a user, or utilized by a computing device or service to understand habits of the user. For example, the text may indicate a product or service of particular desire to the user. In embodiments, the text data may be utilized to customize advertisements or the like to be displayed to the user. 
     In embodiments of the invention, device  10  may consider known information such as the size of a barcode or standard object. For example a product in a store may include a number of barcodes, one larger barcode containing the product identifier or SKU, and one smaller barcode containing the serial number of the particular item in that box. Device  10  may be configured to direct image sensors  78  to only read the larger code when preparing a shopping list. This may be based on the gaze focus distance for better accuracy. Further, many software solutions such as object recognition libraries require video of a standard size. Accordingly, device  10  may capture images or video only of the required size, or crop captured images or video such that they are in the required size. 
       FIG. 5  shows a block diagram of one possible method  500  of the invention for determining a gaze direction of a user using a wearable frame as described herein. At block  510 , as discussed above, device  10  may be calibrated prior to initial use. At block  520 , non-image information such as that from movement sensor or positioning device  25  may be acquired by control unit  22 . Other types of non-image information may also be received as described herein (e.g., information from microphone  20 ). At block  530 , image information from scene camera  18  may be received by control unit  22 . 
     At block  540 , control unit  22  may activate illuminators  76  according to settings established during calibration at step  510 . At block  550 , image data may be received by control unit  22  from image sensors  78 . At block  560 , control unit  22  may determine if from the information it has received if a gaze direction can be determined as described above. If not, at block  570 , illuminators  76 , image sensors  78 , and/or other components of device  10  may be adjusted as described herein, and then method  500  returns to block  520 . In some embodiments, method  500  may return to another step such as block  530  or block  540  if the gaze direction cannot be determined. If control unit  22  can determine gaze direction from the information it has received, at block  580  the gaze direction is determined. Method  500  may repeat at regular or irregular intervals to re-determine gaze direction as needed. 
       FIG. 6  is a block diagram illustrating an exemplary computer system  600  in which embodiments of the present invention may be implemented. This example illustrates a computer system  600  such as may be used, in whole, in part, or with various modifications, to provide and/or control the functions of control unit  22 , illuminators  76 , image sensors  78  and/or other components of the invention such as those discussed above. For example, various functions of control unit  22  may be controlled by the computer system  600 , including, merely by way of example, controlling illuminators  76 , receiving images from image sensors  78 , processing data from image sensors  78 , etc. 
     The computer system  600  is shown comprising hardware elements that may be electrically coupled via a bus  690 . The hardware elements may include one or more central processing units  610 , one or more input devices  620  (e.g., a mouse, a keyboard, hand held controller, etc.), and one or more output devices  630  (e.g., a display device, a printer, etc.). The computer system  600  may also include one or more storage device  640 . By way of example, storage device(s)  640  may be disk drives, optical storage devices, solid-state storage device such as a random access memory (“RAM”) and/or a read-only memory (“ROM”), which can be programmable, flash-updateable and/or the like. 
     The computer system  600  may additionally include a computer-readable storage media reader  650 , a communications system  660  (e.g., a modem, a network card (wireless or wired), an infra-red communication device, Bluetooth™ device, cellular communication device, etc.), and working memory  680 , which may include RAM and ROM devices as described above. In some embodiments, the computer system  600  may also include a processing acceleration unit  670 , which can include a digital signal processor, a special-purpose processor and/or the like. 
     The computer-readable storage media reader  650  can further be connected to a computer-readable storage medium, together (and, optionally, in combination with storage device(s)  640 ) comprehensively representing remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing computer-readable information. The communications system  660  may permit data to be exchanged with a network, system, computer and/or other component described above. 
     The computer system  600  may also include software elements, shown as being currently located within a working memory  680 , including an operating system  684  and/or other code  688 . It should be appreciated that alternate embodiments of a computer system  600  may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Furthermore, connection to other computing devices such as network input/output and data acquisition devices may also occur. 
     Software of computer system  600  may include code  688  for implementing any or all of the function of the various elements of the architecture as described herein. For example, software, stored on and/or executed by a computer system such as system  600 , can provide the functions of control unit  22 , illuminators  76 , image sensors  78 , and/or other components of the invention such as those discussed above. Methods implementable by software on some of these components have been discussed above. 
     The invention has now been described in detail for the purposes of clarity and understanding. However, it will be appreciated that certain changes and modifications may be practiced within the scope of the appended claims.