Eye tracking using an aspherical cornea model

The display system addresses depth perception challenges in VR, AR, and MR by estimating the eye's center of rotation and corneal curvature, improving comfort and natural image presentation.

JP7767552B2Active Publication Date: 2025-11-11MAGIC LEAP INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2024185849
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-01-21
Filing Date
2024-10-22
Publication Date
2025-11-11
Estimated Expiration
2041-07-14

AI Technical Summary

Technical Problem

Existing VR, AR, and MR technologies face challenges in accurately presenting virtual image elements with natural depth and comfort due to complexities in human visual perception, leading to issues like unstable imaging and eye strain.

Method used

A display system that projects light onto the eye, uses eye-tracking cameras to estimate the center of rotation and corneal curvature based on aspherical and spherical models, and adjusts virtual image content for depth perception.

Benefits of technology

Enhances depth perception and reduces eye strain by accurately projecting virtual images at correct depths, providing a more comfortable and natural VR, AR, or MR experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007767552000007
    Figure 0007767552000007
  • Figure 0007767552000008
    Figure 0007767552000008
  • Figure 0007767552000009
    Figure 0007767552000009
Patent Text Reader

Abstract

To provide a display system relating to eye tracking using a center of rotation of an eye calculated using cornea data.SOLUTION: A display system can include a head-mounted display configured to project light to an eye of a user to display a virtual image content at different amounts of divergence and collimation. The display system can include an inward-facing imaging system possibly comprising a plurality of cameras that image the user's eye and glints for thereon and processing electronics that are in communication with the inward-facing imaging system and that are configured to obtain an estimate of a center of cornea of the user's eye using data derived from the glint images. The display system may use spherical and aspheric cornea models to estimate a location of the corneal center of the user's eye.SELECTED DRAWING: Figure 25C
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This patent application claims priority under 35 U.S.C. §119(e) to U.S. Provisional Application No. 63 / 052392, filed July 15, 2020, entitled "EYE TRACKING USING ASPHERIC CORNEA MODEL," U.S. Provisional Application No. 63 / 139750, filed January 20, 2021, entitled "EYE TRACKING USING ASPHERIC CORNEA MODEL," and U.S. Provisional Application No. 63 / 140202, filed January 21, 2021, entitled "EYE TRACKING USING ASPHERIC CORNEA MODEL," which are incorporated herein by reference in their entireties.

[0002] This application is related to U.S. Application No. 16 / 250,931, filed January 17, 2019, entitled "EYE CENTER OF ROTATION DETERMINATION, DEPTH PLANE SELECTION, AND RENDER CAMERA POSITIONING IN DISPLAY SYSTEMS," and corresponding U.S. Publication No. 2019 / 0243448A1, published August 8, 2019, and U.S. Patent Publication No. 2018 / 0018515, entitled "IRIS BOUNDARY ESTIMATION USING CORNEA CURVATURE," published January 18, 2018, which are incorporated herein by reference. The aforementioned patent application, as well as International Application No. PCT / US2020 / 042178, entitled "EYE CENTER OF ROTATION DETERMINATION WITH ONE OR MORE EYE TRACKING CAMERAS," filed July 15, 2020, and corresponding International Publication No. WO2021 / 011686, published January 21, 2021, are each expressly incorporated by reference herein in their entirety for all purposes.

[0003] (Field) The present disclosure relates to display systems, virtual reality, and augmented reality imaging and visualization systems, and more particularly to eye tracking using an eye's center of rotation calculated using corneal data. [Background technology]

[0004] (background) Modern computing and display technologies have facilitated the development of systems for so-called “virtual reality,” “augmented reality,” or “mixed reality” experiences, in which digitally reproduced images, or portions thereof, are presented to a user in a manner that appears or can be perceived as real. Virtual reality, or “VR,” scenarios typically involve the presentation of digital or virtual image information without transparency to other actual real-world visual inputs. Augmented reality, or “AR,” scenarios typically involve the presentation of digital or virtual image information as an augmentation to the visualization of the real world around the user. Mixed reality, or “MR,” relates to the merging of real and virtual worlds to create new environments in which physical and virtual objects coexist and interact in real time. Consequently, the human visual perception system is highly complex, making it challenging to produce VR, AR, or MR technologies that facilitate comfortable, natural-feeling, and rich presentations of virtual image elements among other virtual or real-world image elements. The systems and methods disclosed herein address various challenges associated with VR, AR, and MR technologies. Summary of the Invention [Means for solving the problem]

[0005] (summary) Various embodiments of depth plane selection in a mixed reality system are disclosed.

[0006] The display system can be configured to project light onto a user's eye and display virtual image content within the user's field of view. The user's eye may have a cornea, an iris, a pupil, a lens, a retina, and an optical axis extending through the lens, pupil, and cornea. The display system can include a frame configured to be supported on the user's head, a head-mounted display disposed on the frame, the display configured to project light onto the user's eye and display virtual image content with one of different amounts of divergence and collimation, such that the displayed virtual image content appears to arise from different depths and at different time periods, one or more eye-tracking cameras configured to image the user's eye, and processing electronics in communication with the display and the one or more eye-tracking cameras, the processing electronics configured to obtain an estimate of the center of rotation of the eye based on images of the eye obtained using the one or more eye-tracking cameras.

[0007] The processing electronics may additionally estimate the location of the center of corneal curvature of the eye using a spherical and / or aspherical model of the cornea. In some cases, the processing electronics use the spherical and / or aspherical model in a numerical calculation to determine a value (e.g., a three-dimensional location such as an x, y, z location described by one or more coordinates such as x, y, z or r, θ, φ relative to a reference frame or coordinate system) or estimate the location of the center of corneal curvature based on the location of glint reflections in images produced by the one or more cameras, the location of one or more tracking cameras, and the location of the emitter that produced the individual glint reflections. In some implementations, the location of the center of corneal curvature may be determined relative to the reference frame or coordinate system of the eye camera or a fixed reference frame relative to a head-mounted display.

[0008] Described herein are various embodiments of display systems, such as those listed below, that project light onto one or both eyes of a user and display virtual image content within the user's field of view.

[0009] Example 1: A display system configured to project light onto a user's eye to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye and display virtual image content within the user's field of view; first and second eye tracking cameras configured to image the user's eye; a plurality of light emitters; and processing electronics in communication with the display and the first and second eye tracking cameras, the processing electronics configured to receive images of the user's eye captured by the first and second eye tracking cameras, where flash reflexes of different light emitters are observable in the images of the eye captured by the first and second eye tracking cameras, and to estimate the location of the center of corneal curvature of the user's eye based on the locations of the flash reflexes in the images produced by both the first and second eye tracking cameras, and based on the locations of both the first and second eye tracking cameras and the locations of the emitters that produced the individual flash reflexes.

[0010] Example 2: A display system configured to project light into a user's eyes to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eyes and display virtual image content within the user's field of view; first and second eye tracking cameras configured to image the user's eyes; a plurality of light emitters; and processing electronics in communication with the display and the first and second eye tracking cameras, the processing electronics configured to receive images of the user's eyes captured by the first and second eye tracking cameras, where flash reflexes of different light emitters are observable in the images of the eyes captured by the first and second eye tracking cameras, and to estimate a location of the center of rotation of the user's eyes based on locations of the flash reflexes in the images produced by both the first and second eye tracking cameras and based on locations of both the first and second eye tracking cameras and locations of the emitters that produced the flash reflexes with respect to a plurality of eye poses.

[0011] Example 3: A method for determining one or more parameters associated with an eye for rendering virtual image content in a display system configured to project light onto a user's eye for displaying virtual image content within the user's field of view, the eye having a cornea, the method comprising: capturing multiple images of the user's eye using multiple eye tracking cameras configured to image the user's eye and multiple light emitters positioned relative to the eye and forming flashes of light thereon, the images comprising the multiple flashes of light; and obtaining an estimate of the center of rotation of the eye based on the multiple flashes of light, the obtaining an estimate of the center of rotation of the eye comprising: determining multiple estimates of the center of corneal curvature of the user's eye based on the multiple flashes of light; generating a three-dimensional surface from the multiple estimates of the center of corneal curvature; and determining an estimate of the center of rotation of the user's eye using the three-dimensional surface.

[0012] Example 4: A display system configured to project light into a user's eyes to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eyes and display virtual image content; first and second eye-tracking cameras configured to image the user's eyes; and processing electronics in communication with the display and the first and second eye-tracking cameras, for processing captured images of multiple pairs of the user's eyes. and processing electronics configured to receive images from the first and second eye tracking cameras, and for paired images received from the first and second eye tracking cameras, respectively, obtain an estimate of the center of corneal curvature of the user's eye based at least in part on the respective paired captured images, and determine a three-dimensional surface, identify the center of curvature of the 3D surface, and obtain an estimate of the center of rotation of the user's eye based on the estimated center of corneal curvature of the user's eye obtained based on multiple paired captured images of the user's eye received from the respective first and second eye tracking cameras.

[0013] Example 5: A display system configured to project light into a user's eye to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye and display virtual image content within the user's field of view; an eye tracking camera configured to image the user's eye; a plurality of light emitters; and processing electronics in communication with the display and the eye tracking camera, the processing electronics configured to receive images of the user's eye captured by the eye tracking camera at first and second locations, where flash reflections of different light emitters are observable in the images of the eye captured by the eye tracking camera, and to estimate the location of the center of corneal curvature of the user's eye based on the locations of the flash reflections in the images produced by the eye tracking camera and based on the location of the eye tracking camera and the locations of the emitters that produced the individual flash reflections.

[0014] Example 6: A display system configured to project light into a user's eye to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display positioned on the frame, the display configured to project light into the user's eye and display virtual image content within the user's field of view; an eye tracking camera configured to image the user's eye; a plurality of light emitters; and processing electronics in communication with the display and the eye tracking camera, the processing electronics configured to receive images of the user's eye captured by the eye tracking camera at a first location and a second location, where flash reflexes of different light emitters are observable in the images of the eye captured by the eye tracking camera, and to estimate the location of the center of rotation of the user's eye based on the locations of the flash reflexes in the images produced by the eye tracking camera and based on the locations of the emitters that produced the flash reflexes for the first and second locations of the eye tracking camera and a plurality of eye poses.

[0015] Example 7: A method for determining one or more parameters associated with an eye for rendering virtual image content in a display system configured to project light onto a user's eye for displaying virtual image content within the user's field of view, the eye having a cornea, comprising: capturing multiple images of the user's eye using an eye tracking camera configured to image the user's eye and multiple light emitters positioned relative to the eye and forming flashes of light thereon, the images comprising the multiple flashes of light; and obtaining an estimate of the center of rotation of the eye based on the multiple flashes of light, the obtaining an estimate of the center of rotation of the eye comprising: determining multiple estimates of the center of corneal curvature of the user's eye based on the multiple flashes of light; generating a three-dimensional surface from the multiple estimates of the center of corneal curvature; and determining an estimate of the center of rotation of the user's eye using the three-dimensional surface.

[0016] Example 8: A display system configured to project light into a user's eye to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye and display virtual image content; an eye tracking camera configured to image the user's eye; and processing electronics in communication with the display and the eye tracking camera, the processing electronics configured to: receive multiple pairs of captured images of the user's eye from the eye tracking camera; obtain, for each pair of images received from the eye tracking camera, an estimate of the center of corneal curvature of the user's eye based, at least in part, on each individual pair of captured images; determine a three-dimensional surface based on the estimated center of corneal curvature of the user's eye obtained based on the multiple pairs of captured images of the user's eye received from the eye tracking camera; identify the center of curvature of the 3D surface; and obtain an estimate of the center of rotation of the user's eye.

[0017] Example 9: A display system configured to project light into a user's eye to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye and display virtual image content within the user's field of view; at least one eye tracking camera configured to image the user's eye; a plurality of light emitters; and processing electronics in communication with the display and the eye tracking camera, the processing electronics configured to receive images of the user's eye captured by the at least one eye tracking camera at first and second locations, where flash reflections of different light emitters are observable in the images of the eye captured by the eye tracking camera, and to estimate the location of the center of corneal curvature of the user's eye based on the locations of the flash reflections in the images produced by the at least one eye tracking camera and based on the location of the at least one eye tracking camera and the location of the emitter that produced the individual flash reflections.

[0018] Example 10:1. A display system configured to project light into a user's eye and display virtual image content within the user's field of view, the eye having a cornea and a pupil, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye and display virtual image content within the user's field of view; one or more eye tracking cameras configured to image the user's eye; a plurality of light emitters; and processing electronics in communication with the display and the one or more eye tracking cameras, the processing electronics configured to receive images of the user's eye captured by the one or more eye tracking cameras, wherein flashing reflexes of different light emitters are observable in the images of the eye captured by the one or more tracking cameras, and to estimate a location of the center of corneal curvature of the user's eye based, at least in part, on locations of the flashing reflexes in the images produced by the one or more eye tracking cameras, the processing electronics using an aspherical model of the cornea in numerical calculations to estimate the location of the center of corneal curvature of the user's eye.

[0019] Example 11:1. A display system configured to project light into a user's eye and display virtual image content within the user's field of view, the eye having a cornea and a pupil, the display system comprising: a frame configured to be supported on a user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye and display virtual image content within the user's field of view; one or more eye tracking cameras configured to image the user's eye; a plurality of light emitters; and processing electronics in communication with the display and the one or more eye tracking cameras, the processing electronics configured to receive images of the user's eye captured by the one or more eye tracking cameras, in which flash reflections of different light emitters are observable in the images of the eye captured by the one or more tracking cameras, and to estimate a first parameter of the user's eye based on the location of the flash reflections in the images produced by the one or more eye tracking cameras, the processing electronics using an aspherical model of the cornea in numerical calculations to estimate the first parameter of the user's eye.

[0020] Any of the above embodiments or additional embodiments can be combined. In addition, any of the above embodiments or additional embodiments can be integrated with a head-mounted display. In addition, any of the above embodiments or additional embodiments can be implemented using a single depth plane and / or one or more variable depth planes (e.g., one or more elements with variable focusing power that provide accommodation cues that vary over time).

[0021] Additionally, disclosed herein are devices and methods for determining various values, parameters, such as, but not limited to, anatomical, optical, and geometric features, locations, and orientations. Examples of such parameters include, but are not limited to, the center of rotation of the eye, the center of corneal curvature, the pupil center, the pupil boundary, the iris center, the iris boundary, the limbus boundary, the optical axis of the eye, the visual axis of the eye, and the center of gaze. Determinations of values, parameters, etc., such as those listed herein, include estimates thereof and do not necessarily correspond precisely to actual values. For example, determinations of the center of rotation of the eye, the center of corneal curvature, the pupil or iris center or boundary, the limbus boundary, the optical axis of the eye, the visual axis of the eye, the center of gaze, etc., may be estimates, approximations, or close values ​​that are not identical to actual (e.g., anatomical, optical, or geometric) values ​​or parameters. In some cases, for example, root-mean-square estimation techniques are used to obtain estimates of such values. As an example, certain techniques described herein relate to identifying locations or points where rays or vectors intersect. However, such rays or vectors may not intersect. In this example, the locations or points may be estimated. For example, the locations or points may be determined based on root mean square or other estimation techniques (e.g., the locations or points may be estimated to be close or nearest to the rays or vectors). Other processes may also be used to estimate approximate values ​​or otherwise provide values ​​that may not correspond to actual values. Thus, the terms “determine” and “estimate” or “determined” and “estimated” are used interchangeably herein. References to such determined values ​​may therefore include estimates, approximations, or values ​​near the actual values. Thus, references to determining a parameter or value above or elsewhere herein should not be limited to the exact actual value, but may include estimates, approximations, or values ​​near the actual value.

[0022] Details of one or more implementations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, drawings, and claims. Neither this summary nor the following detailed description purports to define or limit the scope of the inventive subject matter. The present invention provides, for example, the following. (Item 1) 1. A display system configured to project light onto an eye of a user and display virtual image content within a field of view of the user, the eye having a cornea and a pupil, the display system comprising: a frame configured to be supported on the user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye and display virtual image content in the user's field of view; one or more eye-tracking cameras configured to image the eyes of the user; a plurality of light emitters; processing electronics in communication with the display and the one or more eye tracking cameras, the processing electronics comprising: receiving images of the user's eyes captured by the one or more eye tracking cameras, in which flashing reflexes of the different light emitters are observable in the images of the eyes captured by the one or more tracking cameras; estimating a location of a corneal center of the user's eye based, at least in part, on a location of the glint in the image produced by the one or more eye-tracking cameras; and configured to: the processing electronics uses the aspheric model of the cornea in a numerical calculation to estimate a location of a corneal center of the user's eye; A display system comprising: (Item 2) Item 10. The display system of item 1, wherein the processing electronics additionally employs a spherical model of the cornea in numerical calculations to estimate the location of the corneal center. (Item 3) Item 3. The display system of item 2, wherein a spherical model of the cornea is used in a numerical calculation to determine the location of the corneal center based on the location of the glint reflection in the images produced by one or more eye tracking cameras, the location of one or more tracking cameras, and the location of the emitter that produced the individual glint reflection. (Item 4) 4. The display system of claim 2 or 3, wherein an estimate of the corneal center determined from a spherical model of the cornea is applied to the aspherical model in a numerical calculation to determine the location of the corneal center. (Item 5) 10. The display system of claim 1, wherein the processing electronics is configured to determine the estimate of the corneal center using an iterative process. (Item 6) 10. The display system of claim 1, wherein the aspherical model is used to predict the location of multiple flashes based on the location of a light emitter. (Item 7) Item 7. The display system of item 6, wherein the location of the glint predicted based on the aspherical model is used to determine the center of curvature of a spherical surface. (Item 8) 10. The display system of claim 1, wherein the processing electronics is configured to determine one or more parameters of the aspherical surface using a spherical model. (Item 9) 10. The display system of claim 1, wherein the processing electronics is configured to determine one or more parameters of the spherical surface using an aspherical model. (Item 10) 10. The display system of claim 1, wherein the aspherical model comprises a rotationally symmetric aspherical surface. (Item 11) 10. The display system of claim 1, wherein the aspherical model comprises a surface that is non-rotationally symmetric. (Item 12) Item 10. The display system of item 1, wherein the one or more eye tracking cameras configured to image the user's eyes comprise first and second eye tracking cameras. (Item 13) the processing electronics determining a first direction toward a center of corneal curvature of the user's eye based on a location of the flash reflex in one or more images produced by the first eye tracking camera and based on a location of the first eye tracking camera and a location of the emitter that produced the flash reflex; determining a second direction toward a corneal center of the user's eye based on a location of the flash reflex in one or more images produced by the second eye tracking camera and based on a location of the second eye tracking camera and a location of the emitter that produced the flash reflex; Item 13. The display system of item 12, configured to perform the following: (Item 14) Item 14. The display system of item 13, wherein the processing electronics is configured to estimate a location of the corneal center of the user's eye based on the first and second directions toward the corneal center of the user's eye. (Item 15) the processing electronics configured to obtain an estimate of a corneal center of the user's eye based on the convergence of the first and second directions. 15. A display system according to any one of items 12-14. (Item 16) 16. A display system according to any of items 12-15, wherein the processing electronics is configured to obtain an estimate of the corneal center of the user's eye based on multiple determinations of the corneal center of the user's eye for different eye postures. (Item 17) 10. The display system of claim 1, wherein the processing electronics is configured to use the corneal center to obtain an estimate of an orientation of an aspherical surface for application of the aspherical model. (Item 18) 18. A display system according to any of items 12-17, wherein the processing electronics is configured to obtain an estimate of the orientation of the aspherical surface for application of the aspherical model based on an estimate of the corneal center determined from images acquired by the first and second eye tracking cameras and an estimate of the convergence of multiple vectors passing through the pupil center. (Item 19) The display system of any of the preceding items, wherein the at least one eye tracking camera comprises first, second, and third eye tracking cameras configured to image the user's eyes, the processing electronics is in communication with the first, second, and third eye tracking cameras, and a flashing reflection of a light emitter is observable in images of the eyes captured by the first, second, and third eye tracking cameras. (Item 20) 20. The display system of claim 19, wherein the processing electronics is configured to estimate a corneal center of the user's eye based on parameters of the user's eye determined by the first and third eye tracking cameras and parameters of the user's eye determined by the first and second eye tracking cameras. [Brief explanation of the drawings]

[0023] [Figure 1] FIG. 1 depicts an illustration of a mixed reality scenario with a virtual reality object and a physical object viewed by a person.

[0024] [Figure 2] FIG. 2 illustrates diagrammatically an example of a wearable system.

[0025] [Figure 3] FIG. 3 diagrammatically illustrates example components of a wearable system.

[0026] [Figure 4] FIG. 4 diagrammatically illustrates an example of a waveguide stack of a wearable device for outputting image information to a user.

[0027] [Figure 5] FIG. 5 illustrates a schematic example of an eye.

[0028] [Figure 5A] FIG. 5A diagrammatically illustrates an exemplary coordinate system for determining the eye posture of the eye.

[0029] [Figure 6] FIG. 6 is a schematic diagram of a wearable system including an eye tracking system.

[0030] [Figure 7A] FIG. 7A is a block diagram of an example eye tracking module that may be used in a wearable system that includes an eye tracking system.

[0031] [Figure 7B] FIG. 7B is a block diagram of a rendering controller in a wearable system.

[0032] [Figure 7C] FIG. 7C illustrates an example eye, including the optical and visual axes of the eye and the center of rotation of the eye.

[0033] [Figure 8A] FIG. 8A is a schematic diagram of the eye showing the spherical cornea of ​​the eye.

[0034] [Figure 8B] FIG. 8B illustrates an exemplary corneal phosphene detected by an eye-tracking camera.

[0035] [Figure 8C] 8C-8E illustrate exemplary steps for locating a user's corneal center using an eye tracking module in a wearable system. [Figure 8D]8C-8E illustrate exemplary steps for locating a user's corneal center using an eye tracking module in a wearable system. [Figure 8E] 8C-8E illustrate exemplary steps for locating a user's corneal center using an eye tracking module in a wearable system.

[0036] [Figure 9A] 9A-E illustrate diagrams of example configurations of a wearable system for capturing eye image data for use by an eye tracking module. [Figure 9B] 9A-E illustrate diagrams of example configurations of a wearable system for capturing eye image data for use by an eye tracking module. [Figure 9C] 9A-E illustrate diagrams of example configurations of a wearable system for capturing eye image data for use by an eye tracking module. [Figure 9D] 9A-E illustrate diagrams of example configurations of a wearable system for capturing eye image data for use by an eye tracking module. [Figure 9E] 9A-E illustrate diagrams of example configurations of a wearable system for capturing eye image data for use by an eye tracking module.

[0037] [Figure 10] FIG. 10 shows a graphical illustration of an exemplary center of rotation (CoR) determination process that may be performed by the eye tracking module.

[0038] [Figure 11] FIG. 11 shows an example image of a phosphene on any eye, used by the eye tracking module to determine the estimated center of rotation.

[0039] [Figure 12A]12A-D illustrate steps in an exemplary determination of a first plane that includes the location of the first flash of light, a camera that captures an image of the flash of light, and an illumination source that produces the first flash of light. [Figure 12B] 12A-D illustrate steps in an exemplary determination of a first plane that includes the location of the first flash of light, a camera that captures an image of the flash of light, and an illumination source that produces the first flash of light. [Figure 12C] 12A-D illustrate steps in an exemplary determination of a first plane that includes the location of the first flash of light, a camera that captures an image of the flash of light, and an illumination source that produces the first flash of light. [Figure 12D] 12A-D illustrate steps in an exemplary determination of a first plane that includes the location of the first flash of light, a camera that captures an image of the flash of light, and an illumination source that produces the first flash of light.

[0040] [Figure 13A] 13A-D illustrate steps in an exemplary determination of a second plane, including the location of the second flash, the camera, and the illumination source that produces the second flash. [Figure 13B] 13A-D illustrate steps in an exemplary determination of a second plane, including the location of the second flash, the camera, and the illumination source that produces the second flash. [Figure 13C] 13A-D illustrate steps in an exemplary determination of a second plane, including the location of the second flash, the camera, and the illumination source that produces the second flash. [Figure 13D] 13A-D illustrate steps in an exemplary determination of a second plane, including the location of the second flash, the camera, and the illumination source that produces the second flash.

[0041] [Figure 14A] Figures 14A-C illustrate the intersection between the first plane of Figures 12A-D and the second plane of Figures 13A-D. This intersection corresponds to the vector along which the corneal center may lie. [Figure 14B]Figures 14A-C illustrate the intersection between the first plane of Figures 12A-D and the second plane of Figures 13A-D. This intersection corresponds to the vector along which the corneal center may lie. [Figure 14C] Figures 14A-C illustrate the intersection between the first plane of Figures 12A-D and the second plane of Figures 13A-D. This intersection corresponds to the vector along which the corneal center may lie.

[0042] [Figure 15A] 15A-15B illustrate multiple vectors, acquired using multiple cameras, along which the corneal center may lie, which may converge or intersect at a location corresponding to or near the corneal center. [Figure 15B] 15A-15B illustrate multiple vectors, acquired using multiple cameras, along which the corneal center may lie, which may converge or intersect at a location corresponding to or near the corneal center.

[0043] [Figure 16A] 16A-16C illustrate example steps in an example determination of a vector along which the corneal center may lie using a shared illumination source between multiple cameras. [Figure 16B] 16A-16C illustrate example steps in an example determination of a vector along which the corneal center may lie using a shared illumination source between multiple cameras. [Figure 16C] 16A-16C illustrate example steps in an example determination of a vector along which the corneal center may lie using a shared illumination source between multiple cameras.

[0044] [Figure 17A] 17A-17B show the 3D surface estimate based on the calculated corneal center. [Figure 17B] 17A-17B show the 3D surface estimate based on the calculated corneal center.

[0045] [Figure 18A] 18A and 18B show an exemplary estimate of the center of rotation at the convergence of multiple surface normal vectors normal to the 3D surface, calculated based on the corneal center. [Figure 18B] 18A and 18B show an exemplary estimate of the center of rotation at the convergence of multiple surface normal vectors normal to the 3D surface, calculated based on the corneal center.

[0046] [Figure 19-1] 19A-1 and 19A-2 illustrate an exemplary surface fit to a selected estimated corneal center.

[0047] [Figure 19-2] 19B-1 and 19B-2 show example surface normal vectors that may be normal to a surface that is fitted to the estimated corneal center.

[0048] [Figure 19-3] 19C-1 and 19C-2 illustrate the estimated CoR region based on the point of intersection of the surface normal vectors.

[0049] [Figure 19-4] 19D-1 and 19D-2 illustrate exemplary conforming surfaces to different selections of the center of the cornea.

[0050] [Figure 20] FIG. 20 illustrates an exemplary center of rotation extraction process that may be implemented by the eye tracking module.

[0051] [Figure 21] FIG. 21 illustrates an exemplary eye tracking process that may use the process of FIG. 20 to determine an estimated center of rotation using the center of corneal curvature.

[0052] [Figure 22A]FIG. 22A diagrammatically illustrates a perspective view of an eyeball.

[0053] [Figure 22B] FIG. 22B illustrates diagrammatically a 2D cross-section of the cornea of ​​the eye.

[0054] [Figure 22C] FIG. 22C illustrates diagrammatically a 2D cross section of the specular reflection of light from two light sources from a spherical and a spheroidal reflecting surface.

[0055] [Figure 23A] FIG. 23A shows the 2D cross-sectional profile of an axially symmetric spheroid plotted in the XZ plane for different values ​​of the conic parameter.

[0056] [Figure 23B] Figure 23B shows 2D cross sections of two axially symmetric spheroids, one with a conic parameter of zero (sphere) and the other with a conic parameter of -0.25 (Arizona Eye Model spheroid), plotted in the XZ plane. The specular reflection of light rays from each of these surfaces is also shown.

[0057] [Figure 24] FIG. 24 is a block diagram illustrating an example procedure that may be used to estimate the location of the center of the cornea based on a spheroidal corneal model using a monocular camera.

[0058] [Figure 25A] 25A-25D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG. [Figure 25B] 25A-25D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG. [Figure 25C] 25A-25D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG. [Figure 25D] 25A-25D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG.

[0059] [Figure 26] FIG. 26 is a block diagram illustrating a subset of interconnected sub-modules of an exemplary eye tracking module that, combined with a 3D spheroidal corneal center estimation module, can estimate the corneal center using a spheroidal corneal model based on the procedure illustrated in FIG. 24 .

[0060] [Figure 27] FIG. 27 is an example configuration in which two cameras are placed on the eyepieces of a head-mounted display frame and capture images of flashes of light generated by three light sources also positioned on the frame.

[0061] [Figure 28] FIG. 28 is a block diagram illustrating an exemplary procedure for estimating the location of the center of the cornea based on a spheroidal corneal model using images captured by two ocular cameras.

[0062] [Figure 29A] 29A-29D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG. [Figure 29B] 29A-29D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG. [Figure 29C] 29A-29D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG. [Figure 29D] 29A-29D illustrate exemplary steps in an exemplary determination of the corneal center based on the procedure illustrated in FIG.

[0063] [Figure 30] FIG. 30 is a block diagram illustrating a subset of interconnected sub-modules of an exemplary eye tracking module that, combined with a 3D spheroidal corneal center estimation module, can estimate the corneal center based on a spheroidal corneal model and the procedure illustrated in FIG. 28.

[0064] Throughout the drawings, reference numbers may be reused to indicate correspondence between referenced elements. The drawings are provided to illustrate example embodiments described herein and are not intended to limit the scope of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0065] (Detailed explanation) Reference will now be made to the drawings, in which like reference numerals refer to like parts throughout. Unless otherwise indicated, the drawings are schematic and are not necessarily drawn to scale. A. Example of a 3D display for a wearable system

[0066] A wearable system (also referred to herein as an augmented reality (AR) system) can be configured to present 2D or 3D virtual images to a user. The images may be still images, frames of video, or videos, in combination or the like. At least a portion of the wearable system can be implemented on a wearable device, which may present a VR, AR, or MR environment, alone or in combination, for user interaction. A wearable device can be used synonymously with an AR device (ARD). Additionally, for purposes of this disclosure, the term "AR" is used synonymously with the term "MR."

[0067] Figure 1 depicts an illustration of a mixed reality scenario involving a virtual reality object and a physical object viewed by a person. In Figure 1, an MR scene 100 is depicted in which a user of the MR technology sees a real-world park-like setting 110 featuring people, trees, a building in the background, and a concrete platform 120. In addition to these items, the user of the MR technology also perceives as "seeing" a robotic figure 130 standing on the real-world platform 120 and a flying, cartoon-like avatar character 140 that appears to be an anthropomorphic bumblebee, although these elements do not exist in the real world.

[0068] In order for a 3D display to produce a true depth sensation, and more specifically, a simulated sensation of surface depth, it may be desirable for the display to generate, for each point in its field of view, an accommodation response that corresponds to that point's virtual depth. If the accommodation response to a display point does not correspond to that point's virtual depth as determined by convergence and stereoscopic binocular depth cues, the human eye may experience accommodation conflict, resulting in unstable imaging, adverse eye strain, headaches, and, in the absence of accommodative information, a near-complete lack of surface depth.

[0069] VR, AR, and MR experiences can be provided by a display system having a display that provides a viewer with images corresponding to multiple depth planes. The images may be different for each depth plane (e.g., providing slightly different presentations of a scene or object) and may be focused separately by the viewer's eyes, thereby serving to provide depth cues to the user based on the ocular accommodation required to focus on different image features of the scene located on different depth planes, or based on observing different image features on different depth planes that are out of focus. As discussed elsewhere herein, such depth cues provide a believable perception of depth.

[0070] FIG. 2 illustrates an example of a wearable system 200, which can be configured to provide an AR / VR / MR scene. The wearable system 200 may also be referred to as an AR system 200. The wearable system 200 includes a display 220 and various mechanical and electronic modules and systems for supporting the functionality of the display 220. The display 220 may be coupled to a frame 230, which is wearable by a user, wearer, or viewer 210. The display 220 can be positioned directly in front of the eyes of the user 210. The display 220 can present AR / VR / MR content to the user. The display 220 can comprise a head-mounted display (HMD) worn on the user's head.

[0071] In some embodiments, a speaker 240 is coupled to the frame 230 and positioned adjacent the user's ear canal (in some embodiments, another speaker, not shown, is positioned adjacent the user's other ear canal to provide stereo / shapeable sound control). The display 220 can include an audio sensor (e.g., a microphone) 232 to detect audio streams from the environment and capture ambient sounds. In some embodiments, one or more other audio sensors, not shown, are positioned to provide stereo sound reception. The stereo sound reception can be used to determine the location of a sound source. The wearable system 200 can perform voice or speech recognition on the audio stream.

[0072] The wearable system 200 may include an outward-facing imaging system 464 (shown in FIG. 4 ) that observes the world in the user's surrounding environment. The wearable system 200 may also include an inward-facing imaging system 462 (shown in FIG. 4 ) that may track the user's eye movements. The inward-facing imaging system may track either one eye's movements or both eyes' movements. The inward-facing imaging system 462 may be mounted to the frame 230 and may be in electrical communication with a processing module 260 or 270 that may process image information obtained by the inward-facing imaging system and determine, for example, the pupil diameter or orientation of the user's 210 eyes, eye movement, or eye posture. The inward-facing imaging system 462 may include one or more cameras. For example, at least one camera may be used to image each eye. Images obtained by the cameras may be used to determine pupil size or eye posture for each eye separately, thereby allowing the presentation of image information to each eye to be dynamically adjusted for that eye.

[0073] As an example, the wearable system 200 can obtain an image of the user's posture using an outward-facing imaging system 464 or an inward-facing imaging system 462. The image may be a still image, a frame from a video, or a video.

[0074] The display 220 can be operably coupled (250) to a local data processing module 260, which can be mounted in a variety of configurations, such as fixedly attached to the frame 230, by wired or wireless connection, fixedly attached to a helmet or hat worn by the user, built into headphones, or otherwise removably attached to the user 210 (e.g., in a backpack configuration, in a belt-coupled configuration).

[0075] Local processing and data module 260 may comprise a hardware processor and digital memory, such as non-volatile memory (e.g., flash memory), both of which may be utilized to aid in processing, caching, and storing data. The data may include (a) data captured from sensors (e.g., that may be operatively coupled to frame 230 or otherwise attached to user 210), such as image capture devices (e.g., cameras in inward-facing and / or outward-facing imaging systems), audio sensors (e.g., microphones), inertial measurement units (IMUs), accelerometers, compasses, global positioning system (GPS) units, wireless devices, or gyroscopes, or (b) data obtained or processed using remote processing module 270 or remote data repository 280, possibly for processing or retrieval and subsequent passage to display 220. Local processing and data module 260 may be operably coupled to remote processing module 270 or remote data repository 280 by communication link 262 or 264, such as via a wired or wireless communication link, so that these remote modules are available as resources to local processing and data module 260. In addition, remote processing module 280 and remote data repository 280 may be operably coupled to each other.

[0076] In some embodiments, remote processing module 270 may comprise one or more processors configured to analyze and process data or image information. In some embodiments, remote data repository 280 may comprise a digital data storage facility, which may be available through the Internet or other networking configuration in a "cloud" resource configuration. In some embodiments, all data is stored and all calculations are performed in the local processing and data module, allowing for fully autonomous use from the remote module. B. Exemplary Components of a Wearable System

[0077] FIG. 3 diagrammatically illustrates example components of a wearable system. FIG. 3 shows a wearable system 200, which may include a display 220 and a frame 230. A blowup 202 diagrammatically illustrates various components of the wearable system 200. In some implementations, one or more of the components illustrated in FIG. 3 may be part of the display 220. The various components, alone or in combination, may collect various data (e.g., auditory or visual data, etc.) associated with a user of the wearable system 200 or the user's environment. It should be understood that other embodiments may have additional or fewer components, depending on the application for which the wearable system is used. Note that FIG. 3 provides a basic idea of ​​some of the various components and the types of data that may be collected, analyzed, and stored through the wearable system.

[0078] FIG. 3 shows an exemplary wearable system 200, which may include a display 220. The display 220 may include a display lens 226 that may be mounted to a housing or frame 230 that corresponds to the user's head. The display lens 226 may include one or more transparent mirrors positioned by the housing 230 in front of the user's eyes 302, 304 and may be configured to bounce projected light 338 into the eyes 302, 304, facilitating beam shaping while also allowing transmission of at least some light from the local environment. The wavefront of the projected light beam 338 may be bent or focused to match a desired focal length of the projected light. As shown, two wide-field machine vision cameras 316 (also referred to as world cameras) are coupled to the housing 230 and can image the environment around the user. These cameras 316 may be dual-capture visible / invisible (e.g., infrared) light cameras. Camera 316 may be part of the outward-facing imaging system 464 shown in Figure 4. Images acquired by world camera 316 may be processed by pose processor 336. For example, pose processor 336 may implement one or more object recognizers 708 to identify the pose of the user or another person in the user's environment, or to identify physical objects in the user's environment.

[0079] Continuing with reference to FIG. 3 , a pair of scanning laser-shaped wavefront (e.g., for depth) light projection modules along with display mirrors and optics are shown configured to project light 338 into the eyes 302, 304. The depicted diagram also shows two miniature infrared cameras 324 paired with infrared light sources 326 (such as light-emitting diodes, or "LEDs") configured to track the user's eyes 302, 304 and support rendering and user input. The cameras 324 may be part of the inward-facing imaging system 462 shown in FIG. 4 . The wearable system 200 may further feature a sensor assembly 339, which may include X-, Y-, and Z-axis accelerometer capabilities, a magnetic compass, and X-, Y-, and Z-axis gyroscope capabilities, and may preferably provide data at a relatively high frequency, such as 200 Hz. The sensor assembly 339 may be part of an IMU, as described with reference to FIG. 2 . The depicted system 200 may also include a head pose processor 336, such as an ASIC (Application Specific Integrated Circuit), FPGA (Field Programmable Gate Array), or ARM processor (Advanced Reduced Instruction Set Machine), which may be configured to calculate real-time or near real-time user head pose from the wide FOV image information output from the capture device 316. The head pose processor 336 may be a hardware processor and may be implemented as part of the local processing and data module 260 shown in FIG.

[0080] The wearable system may also include one or more depth sensors 234. The depth sensors 234 may be configured to measure the distance between objects in the environment and the wearable device. The depth sensors 234 may include a laser scanner (e.g., LIDAR), an ultrasonic depth sensor, or a depth-sensing camera. In some implementations where the camera 316 has depth-sensing capabilities, the camera 316 may also be considered a depth sensor 234.

[0081] Also shown is a processor 332 configured to perform digital or analog processing and derive attitude from gyroscope, compass, or accelerometer data from sensor assembly 339. Processor 332 may be part of local processing and data module 260, shown in FIG. 2. Wearable system 200 may also include a positioning system, such as, for example, a GPS 337 (Global Positioning System), as shown in FIG. 3, to assist in attitude and positioning analysis. In addition, the GPS may further provide remotely based (e.g., cloud-based) information about the user's environment. This information may be used to recognize objects or information within the user's environment.

[0082] The wearable system may combine data obtained by the GPS 337 and a remote computing system (e.g., the remote processing module 270, another user's ARD, etc.), which can provide more information about the user's environment. As one example, the wearable system can determine the user's location based on the GPS data and retrieve a world map (e.g., by communicating with the remote processing module 270) that includes virtual objects associated with the user's location. As another example, the wearable system 200 can monitor the environment using the world camera 316 (which may be part of the outward-facing imaging system 464 shown in FIG. 4). Based on the images obtained by the world camera 316, the wearable system 200 can detect objects in the environment (e.g., by using one or more object recognizers). The wearable system can further interpret characters using data obtained by the GPS 337.

[0083] The wearable system 200 may also include a rendering engine 334, which can be configured to provide local rendering information to the user for the user's view of the world and facilitate the operation of the scanner and imaging into the user's eye. The rendering engine 334 may be implemented by a hardware processor (e.g., a central processing unit or a graphics processing unit, etc.). In some embodiments, the rendering engine is part of the local processing and data module 260. The rendering engine 334 can be communicatively coupled to other components of the wearable system 200 (e.g., via wired or wireless links). For example, the rendering engine 334 can be coupled to the eye camera 324 via communication link 274 and to the projection subsystem 318 (which can project light into the user's eyes 302, 304 via a scanning laser array in a manner similar to a retinal scanning display) via communication link 272. The rendering engine 334 can also communicate with other processing units, such as the sensor pose processor 332 and the image pose processor 336, via links 276 and 294, respectively.

[0084] A camera 324 (e.g., a small infrared camera) may be utilized to track eye pose and support rendering and user input. Some example eye poses may include where the user is looking or the depth of focus (which may be estimated using eye convergence and divergence). A GPS 337, gyroscope, compass, and accelerometer 339 may be utilized to provide coarse or fast pose estimation. One or more of the cameras 316 may obtain images and poses, which, along with data from associated cloud computing resources, may be utilized to map the local environment and share the user's view with others.

[0085] The example components depicted in FIG. 3 are for illustrative purposes only. Multiple sensors and other functional modules are shown together for ease of illustration and description. Some embodiments may include only one or a subset of these sensors or modules. Furthermore, the locations of these components are not limited to the locations depicted in FIG. 3. Some components may be mounted or stored within other components, such as belt-mounted, handheld, or helmet-mounted components. As an example, the image pose processor 336, the sensor pose processor 332, and the rendering engine 334 may be located within a beltpack and configured to communicate with other components of the wearable system via wireless communications, such as ultra-wideband, Wi-Fi, Bluetooth, or via wired communications. The depicted housing 230 is preferably head-mountable and wearable by a user. However, some components of the wearable system 200 may be worn on other parts of the user's body. For example, the speaker 240 may be inserted into the user's ear to provide sound to the user.

[0086] With respect to projecting light 338 into the user's eyes 302, 304, in some embodiments, the camera 324 may be utilized to measure where the center of the user's eyes geometrically converges, which generally corresponds to the position of the eye's focal point or "depth of focus." The three-dimensional surface of all points at which the eyes converge may be referred to as the "monocular locus." The focal distance may have a finite number of depths or may vary infinitely. Light projected from the convergence distance appears focused on the subject's eyes 302, 304, while light in front of or behind the convergence distance is blurred. Examples of wearable systems and other display systems of the present disclosure are also described in U.S. Patent Publication No. 2016 / 0270656, which is incorporated herein by reference in its entirety.

[0087] The human visual system is complex, making it difficult to provide a realistic perception of depth. A viewer of an object may perceive the object as three-dimensional due to a combination of vergence and accommodation. Vergence movements of the two eyes relative to one another (e.g., rotation of the pupils toward or away from one another to converge the lines of sight and fixate on an object) are closely coupled to the focusing of the eye's lenses (or "accommodation"). Under normal conditions, a change in the focus of the eye's lenses or accommodation to change focus from one object to another at a different distance will automatically produce a corresponding change in vergence to the same distance, a relationship known as the "accommodation-vergence reflex." Similarly, a change in vergence will induce a corresponding change in accommodation under normal conditions. Display systems that provide a better match between accommodation and vergence may produce a more realistic and comfortable simulation of three-dimensional images.

[0088] Furthermore, spatially coherent light with a beam diameter of less than approximately 0.7 millimeters can be correctly resolved by the human eye regardless of where the eye is focused. Therefore, to create the proper illusion of depth of focus, the eye's convergence and divergence movements may be tracked using the camera 324, and the rendering engine 334 and projection subsystem 318 may be utilized to render all objects on or near the single visual path in focus and all other objects variably out of focus (e.g., using intentional blur). Preferably, the system 220 renders to the user at a frame rate of approximately 60 frames per second or greater. As described above, the camera 324 may preferably be utilized for eye tracking, and software may be configured to capture not only convergence and divergence geometry but also focus location cues to serve as user input. Preferably, such a display system is configured with brightness and contrast suitable for daytime or nighttime use.

[0089] In some embodiments, the display system preferably has a latency of less than about 20 milliseconds for visual object alignment, an angular alignment of less than about 0.1 degrees, and a resolution of about 1 arc minute, which, without being limited by theory, is believed to be approximately the limit of the human eye. The display system 220 may be integrated with a localization system, which may involve a GPS element, optical tracking, a compass, an accelerometer, or other data sources to assist in position and attitude determination. The localization information may be utilized to facilitate accurate rendering within the user's view of the relevant world (e.g., such information would help the glasses understand their location relative to the real world).

[0090] In some embodiments, the wearable system 200 is configured to display one or more virtual images based on the accommodation of the user's eyes. Unlike traditional 3D display approaches that force the user to focus where the image is projected, in some embodiments, the wearable system is configured to automatically vary the focus of the projected virtual content, allowing for a more comfortable viewing of one or more images presented to the user. For example, if the user's eyes have a current focus of 1 m, the image may be projected to match the user's focus. If the user shifts focus to 3 m, the image will be projected to match the new focus. Thus, rather than forcing a predetermined focus on the user, the wearable system 200 of some embodiments allows the user's eyes to function in a more natural manner.

[0091] Such a wearable system 200 may eliminate or reduce the incidence of eye strain, headaches, and other physiological symptoms typically observed with virtual reality devices. To achieve this, various embodiments of the wearable system 200 are configured to project virtual images at variable focal lengths through one or more variable focus elements (VFEs). In one or more embodiments, 3D perception may be achieved through a multi-plane focus system that projects images onto a fixed focal plane from the user. Other embodiments employ a variable plane focus, where the focal plane is moved back and forth in the z-direction to match the user's current state of focus.

[0092] In both multi-plane and variable-plane focus systems, the wearable system 200 may employ eye tracking to determine the convergence and divergence of the user's eyes, determine the user's current focus, and project a virtual image at the determined focus. In other embodiments, the wearable system 200 includes a light modulator that variably projects a variably focused light beam in a raster pattern across the retina through a fiber scanner or other light-generating source. Thus, the wearable system 200's display's ability to project images at variable focal lengths not only facilitates accommodation for the user to view objects in 3D, but may also be used to compensate for the user's ocular abnormalities, as further described in U.S. Patent Publication No. 2016 / 0270656 (incorporated herein by reference in its entirety). In some other embodiments, a spatial light modulator may project an image to the user through various optical components. For example, as further described below, the spatial light modulator may project an image onto one or more waveguides, which then transmit the image to the user. C. Waveguide Stack Assembly

[0093] FIG. 4 illustrates an example of a waveguide stack for outputting image information to a user. Wearable system 400 includes a stack of waveguides or stacked waveguide assembly 480 that can be utilized to provide three-dimensional perception to the eye / brain using multiple waveguides 432b, 434b, 436b, 438b, 4400b. In some embodiments, wearable system 400 can correspond to wearable system 200 of FIG. 2, and FIG. 4 diagrammatically illustrates several portions of wearable system 200 in more detail. For example, in some embodiments, waveguide assembly 480 can be integrated into display 220 of FIG. 2.

[0094] 4, the waveguide assembly 480 may also include multiple features 458, 456, 454, 452 between the waveguides. In some embodiments, the features 458, 456, 454, 452 may be lenses. In other embodiments, the features 458, 456, 454, 452 may not be lenses. Rather, they may simply be spacers (e.g., cladding layers or structures to form air gaps).

[0095] Waveguides 432b, 434b, 436b, 438b, 440b or multiple lenses 458, 456, 454, 452 may be configured to transmit image information to the eye using various levels of wavefront curvature or ray divergence. Each waveguide level may be associated with a particular depth plane and configured to output image information corresponding to that depth plane. Image injection devices 420, 422, 424, 426, 428 may be utilized to inject image information into waveguides 440b, 438b, 436b, 434b, 432b, respectively, which may be configured to disperse incident light across each individual waveguide for output toward the eye 410. Light exits the output surfaces of image injection devices 420, 422, 424, 426, 428 and is injected into the corresponding input edges of waveguides 440b, 438b, 436b, 434b, 432b. In some embodiments, a single beam of light (e.g., a collimated beam) may be injected into each waveguide, outputting an entire field of cloned collimated beams directed toward eye 410 at a particular angle (and divergence) corresponding to the depth plane associated with the particular waveguide.

[0096] In some embodiments, image input devices 420, 422, 424, 426, 428 are discrete displays that each generate image information for input into a corresponding waveguide 440b, 438b, 436b, 434b, 432b, respectively. In some other embodiments, image input devices 420, 422, 424, 426, 428 are outputs of a single multiplexed display that may send image information to each of image input devices 420, 422, 424, 426, 428 via, for example, one or more optical conduits (such as fiber optic cables).

[0097] A controller 460 controls the operation of stacked waveguide assembly 480 and image injection devices 420, 422, 424, 426, 428. Controller 460 includes programming (e.g., instructions in a non-transitory computer-readable medium) that coordinates the timing and provision of image information to waveguides 440b, 438b, 436b, 434b, 432b. In some embodiments, controller 460 may be a single integrated device or a distributed system connected by a wired or wireless communication channel. Controller 460 may, in some embodiments, be part of processing module 260 or 270 (shown in FIG. 2).

[0098] Waveguides 440b, 438b, 436b, 434b, 432b may be configured to propagate light within each individual waveguide by total internal reflection (TIR). Waveguides 440b, 438b, 436b, 434b, 432b may each be planar or have another shape (e.g., curved) with major top and bottom surfaces and edges extending between the major top and bottom surfaces. In the illustrated configuration, waveguides 440b, 438b, 436b, 434b, 432b may each include a light extraction optical element 440a, 438a, 436a, 434a, 432a configured to extract light from the waveguide by redirecting light propagating within each individual waveguide out of the waveguide and outputting image information to the eye 410. The extracted light may also be referred to as out-coupled light, and the light extraction optical element may also be referred to as out-coupling optical element. The extracted light beam is output by the waveguide where the light propagating within the waveguide strikes the light redirecting element. The light extraction optical element (440a, 438a, 436a, 434a, 432a) may be, for example, a reflective or diffractive optical feature. While shown disposed on the bottom major surfaces of the waveguides 440b, 438b, 436b, 434b, 432b for ease of explanation and clarity of drawing, in some embodiments, the light extraction optical element 440a, 438a, 436a, 434a, 432a may be disposed on the top or bottom major surfaces or directly within the volume of the waveguides 440b, 438b, 436b, 434b, 432b. In some embodiments, the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be formed in a layer of material that is attached to a transparent substrate and forms the waveguides 440b, 438b, 436b, 434b, 432b. In some other embodiments, the waveguides 440b, 438b, 436b, 434b, 432b may be a monolithic piece of material, and the light extraction optical elements 440a, 438a, 436a, 434a, 432a may be formed on or within that piece of material.

[0099] Continuing with reference to FIG. 4, as discussed herein, each waveguide 440b, 438b, 436b, 434b, 432b is configured to output light and form an image corresponding to a particular depth plane. For example, the waveguide 432b closest to the eye may be configured to deliver collimated light to the eye 410 as it is launched into such waveguide 432b. The collimated light may represent an optical infinity focal plane. The next upper waveguide 434b may be configured to send collimated light that passes through a first lens 452 (e.g., a negative lens) before reaching the eye 410. The first lens 452 may be configured to create a slight convex wavefront curvature so that the eye / brain interprets light emerging from the next upper waveguide 434b as emerging from a first focal plane closer inward from optical infinity toward the eye 410. Similarly, the third upper waveguide 436b passes its output light through both the first lens 452 and the second lens 454 before reaching the eye 410. The combined refractive power of the first and second lenses 452 and 454 may be configured to produce another, increasing amount of wavefront curvature such that the eye / brain interprets the light emerging from the third waveguide 436b as originating from a second focal plane that is closer inward from optical infinity towards the person than was the light from the next upper waveguide 434b.

[0100] Other waveguide layers (e.g., waveguides 438b, 440b) and lenses (e.g., lenses 456, 458) are similarly configured, with the highest waveguide 440b in the stack used to send its output through all of the lenses between it and the eye for a collective focal power representing the focal plane closest to the person. To compensate for the stack of lenses 458, 456, 454, 452 when viewing / interpreting light originating from the world 470 on the other side of the stacked waveguide assembly 480, a compensating lens layer 430 may be placed on top of the stack to compensate for the collective power of the lower lens stacks 458, 456, 454, 452. (The compensatory lens layer 430 and stacked waveguide assembly 480 may be configured collectively so that light originating from the world 470 is transmitted to the eye 410 with substantially the same level of divergence (or collimation) as the light had when originally received by the stacked waveguide assembly 480.) Such a configuration provides as many perceived focal planes as there are available waveguide / lens pairs. Both the light extraction optical elements of the waveguides and the focusing sides of the lenses may be static (e.g., not dynamic or electro-active). In some alternative embodiments, one or both may be dynamic using electro-active features.

[0101] Continuing with reference to FIG. 4 , light extraction optical elements 440a, 438a, 436a, 434a, 432a may be configured to redirect light out of their respective waveguides and output this light with an appropriate amount of divergence or collimation for the particular depth plane associated with the waveguide. As a result, waveguides with different associated depth planes may have different configurations of light extraction optical elements that output light with different amounts of divergence depending on the associated depth plane. In some embodiments, as discussed herein, light extraction optical elements 440a, 438a, 436a, 434a, 432a may be volume or surface features that can be configured to output light at specific angles. For example, light extraction optical elements 440a, 438a, 436a, 434a, 432a may be volume holograms, surface holograms, and / or diffraction gratings. Light extraction optical elements such as diffraction gratings are described in U.S. Patent Publication No. 2015 / 0178939, published June 25, 2015, which is incorporated herein by reference in its entirety.

[0102] In some embodiments, light extraction optical elements 440a, 438a, 436a, 434a, 432a are diffractive features or "diffractive optical elements" (also referred to herein as "DOEs") that form a diffraction pattern. Preferably, the DOEs have relatively low diffraction efficiency so that only a portion of the light in the beam is deflected toward the eye 410 at each intersection of the DOE, while the remainder continues traveling through the waveguide via total internal reflection. The light carrying the image information is thus split into several related output beams that exit the waveguide at multiple locations, which can result in a very uniform pattern of output emission toward the eye 304 for this particular collimated beam bouncing within the waveguide.

[0103] In some embodiments, one or more DOEs may be switchable between an "on" state in which they actively diffract and an "off" state in which they do not significantly diffract. For example, a switchable DOE may comprise a layer of polymer-dispersed liquid crystal in which microdroplets comprise a diffractive pattern within a host medium; the refractive index of the microdroplets may be switched to substantially match the refractive index of the host material (in which case the pattern does not significantly diffract incident light), or the microdroplets may be switched to a refractive index that does not match that of the host medium (in which case the pattern actively diffracts incident light).

[0104] In some embodiments, the number and distribution of depth planes or depths of field may be dynamically varied based on the pupil size or orientation of the viewer's eye. The depth of field may vary inversely with the viewer's pupil size. As a result, as the size of the viewer's eye pupil decreases, the depth of field increases so that a plane that is indistinguishable because its location exceeds the eye's depth of focus becomes distinguishable and may appear more focused with a corresponding decrease in pupil size and an increase in depth of field. Similarly, the number of spaced depth planes used to present different images to the viewer may be reduced with a decreased pupil size. For example, a viewer may not be able to clearly perceive details in both a first depth plane and a second depth plane at one pupil size without adjusting their eye's accommodation from one depth plane to the other. However, these two depth planes may simultaneously be sufficiently focused for the user at another pupil size without changing accommodation.

[0105] In some embodiments, the display system may vary the number of waveguides receiving image information based on a determination of pupil size or orientation, or in response to receiving an electrical signal indicating a particular pupil size or orientation. For example, if the user's eye is unable to distinguish between two depth planes associated with two waveguides, controller 460 (which may be an embodiment of local processing and data module 260) can be configured or programmed to stop providing image information to one of those waveguides. Advantageously, this may reduce the processing burden on the system, thereby increasing system responsiveness. In embodiments in which the DOE for a waveguide is switchable between on and off states, the DOE may be switched to the off state when the waveguide receives image information.

[0106] In some embodiments, it may be desirable to have the output beam satisfy the condition of having a diameter less than the diameter of the viewer's eye. However, meeting this condition may be difficult in light of the variability in the size of the viewer's pupil. In some embodiments, this condition is met over a wide range of pupil sizes by varying the size of the output beam in response to a determination of the size of the viewer's pupil. For example, as the pupil size decreases, the size of the output beam may also decrease. In some embodiments, the output beam size may be varied using a variable aperture.

[0107] The wearable system 400 may include an outward-facing imaging system 464 (e.g., a digital camera) that images a portion of the world 470. This portion of the world 470 may be referred to as the field of view (FOV) of the world camera, and the imaging system 464 is sometimes also referred to as the FOV camera. The world camera's FOV may or may not be the same as the viewer 210's FOV, which encompasses the portion of the world 470 that the viewer 210 perceives at a given time. For example, in some situations, the world camera's FOV may be larger than the viewer 210 of the wearable system 400. The entire area available for viewing or imaging by the viewer may be referred to as the field of view (FOR). The FOR may include a solid angle of 4π steradians surrounding the wearable system 400, since the wearer may move their body, head, or eyes and perceive virtually any direction in space. In other contexts, the wearer's movement may be more constrained, and the wearer's FOR may correspondingly subtend a smaller solid angle. Images obtained from the outward-facing imaging system 464 can be used to track gestures (e.g., hand or finger gestures) made by the user, detect objects in the world 470 in front of the user, etc.

[0108] The wearable system 400 includes an audio sensor 232, e.g., a microphone, that can capture ambient sounds. As described above, in some embodiments, one or more other audio sensors can be positioned to provide stereo sound reception useful in determining the location of a speech source. As another example, the audio sensor 232 can include a directional microphone, which can also provide such useful directional information regarding where an audio source is located. The wearable system 400 can use information from both the outward-facing imaging system 464 and the audio sensor 230 in locating a speech source or to determine the active speaker at a particular moment, etc. For example, the wearable system 400 can use voice recognition, alone or in combination with a reflected image of the speaker (e.g., as seen in a mirror), to determine the speaker's identity. As another example, the wearable system 400 can determine the speaker's location within the environment based on sound obtained from a directional microphone. The wearable system 400 can use speech recognition algorithms to analyze sounds originating from the speaker's location, determine the content of the speech, and use voice recognition techniques to determine the speaker's identity (e.g., name or other demographic information).

[0109] The wearable system 400 may also include an inward-facing imaging system 466 (e.g., a digital camera) that observes user movements, such as eye and facial movements. The inward-facing imaging system 466 may be used to capture images of the eyes 410 and determine the size and / or orientation of the pupils of the eyes 304. The inward-facing imaging system 466 may be used to obtain images for use in determining the direction the user is looking (e.g., eye pose) or for biometric identification of the user (e.g., via iris identification). In some embodiments, at least one camera may be utilized for each eye independently to separately determine the pupil size or eye pose of each eye, thereby allowing the presentation of image information to each eye to be dynamically adjusted for that eye. In some other embodiments, the pupil diameter or orientation of only a single eye 410 (e.g., using only a single camera per pair of eyes) is determined and assumed to be similar for both eyes of the user. Images obtained by inward-facing imaging system 466 may be analyzed to determine the user's eye posture or mood, which may be used by wearable system 400 to determine audio or visual content to be presented to the user. Wearable system 400 may also determine head pose (e.g., head position or head orientation) using sensors such as an IMU, accelerometer, gyroscope, etc.

[0110] The wearable system 400 may include a user input device 466 through which a user may input commands into the controller 460 and interact with the wearable system 400. For example, the user input device 466 may include a trackpad, touchscreen, joystick, multi-degree-of-freedom (DOF) controller, capacitive sensing device, game controller, keyboard, mouse, directional pad (D-pad), wand, tactile device, totem (e.g., functioning as a virtual user input device), etc. A multi-DOF controller may sense user input in possible translation (e.g., left / right, forward / backward, or up / down) or rotation (e.g., yaw, pitch, or roll) of some or all of the controller. A multi-DOF controller that supports translation may be referred to as 3DOF, while a multi-DOF controller that supports translation and rotation may be referred to as 6DOF. In some cases, a user may use a finger (e.g., a thumb) to press or swipe across a touch-sensitive input device to provide input to the wearable system 400 (e.g., to provide user input to a user interface provided by the wearable system 400). The user input device 466 may be held by the user's hand during use of the wearable system 400. The user input device 466 may communicate with the wearable system 400 via wired or wireless communication. D. Other Components of the Wearable System

[0111] In many implementations, the wearable system may include other components in addition to or as an alternative to the components of the wearable system described above. The wearable system may include, for example, one or more tactile devices or components. The tactile device or component may be operable to provide a tactile sensation to the user. For example, the tactile device or component may provide a tactile sensation of pressure or texture upon touching virtual content (e.g., a virtual object, virtual tool, other virtual structure). The tactile sensation may replicate the sensation of a physical object represented by the virtual object, or may replicate the sensation of an imaginary object or character (e.g., a dragon) represented by the virtual content. In some implementations, the tactile device or component may be worn by the user (e.g., a user-wearable glove). In some implementations, the tactile device or component may be held by the user.

[0112] A wearable system may include, for example, one or more physical objects that can be manipulated by a user to enable input to or interaction with the wearable system. These physical objects may be referred to herein as totems. Some totems may take the form of inanimate objects, such as a piece of metal or plastic, a wall, or the surface of a table. In some implementations, a totem may not actually have any physical input structures (e.g., keys, triggers, joysticks, trackballs, rocker switches). Instead, the totem may simply provide a physical surface, and the wearable system may render a user interface to appear to the user on one or more surfaces of the totem. For example, the wearable system may render images of a computer keyboard and trackpad to appear to reside on one or more surfaces of the totem. For example, the wearable system may render a virtual computer keyboard and virtual trackpad to appear on the surface of a thin rectangular plate of aluminum that serves as the totem. The rectangular plate itself does not have any physical keys, trackpads, or sensors. However, the wearable system may detect user manipulation or interaction or touch with the rectangular plate as a selection or input made via a virtual keyboard or virtual trackpad. User input device 466 (shown in FIG. 4) may be an embodiment of a totem, which may include a trackpad, touchpad, trigger, joystick, trackball, rocker or virtual switch, mouse, keyboard, multi-degree-of-freedom controller, or another physical input device. A user may use the totem alone or in combination with posture to interact with the wearable system or other users.

[0113] Examples of tactile devices and totems usable with the wearable devices, HMDs, and display systems of the present disclosure are described in U.S. Patent Publication No. 2015 / 0016777, which is incorporated herein by reference in its entirety. E. Example of an eye image

[0114] 5 illustrates an image of an eye 500 with eyelid 504, sclera 508 ("white of the eye"), iris 512, and pupil 516. Curve 516a indicates the pupillary boundary between the pupil 516 and iris 512, and curve 512a indicates the limbal boundary between the iris 512 and sclera 508. Eyelid 504 includes upper eyelid 504a and lower eyelid 504b. Eye 500 is illustrated in a natural resting position (e.g., oriented such that both the user's face and gaze would be directed toward a distant object directly in front of the user). The natural resting position of the eye 500 may be indicated by a natural resting direction 520, which is a direction perpendicular to the surface of the eye 500 when in the natural resting position (e.g., directly out from the plane relative to the eye 500 shown in FIG. 5), and in this embodiment is centered within the pupil 516.

[0115] As the eye 500 moves to look toward different objects, the eye pose will change relative to the natural resting direction 520. The current eye pose can be determined with reference to an eye pose direction 524, which is a direction orthogonal to the surface of the eye (and centered within the pupil 516), but oriented toward the object at which the eye is currently pointed. With reference to the exemplary coordinate system shown in FIG. 5A , the pose of the eye 500 can be represented as two angular parameters indicating the azimuth and zenith deflections of the eye's eye pose direction 524, both relative to the eye's natural resting direction 520. For illustrative purposes, these angular parameters can be represented as θ (the azimuth deflection, determined from the origin azimuth angle) and φ (the zenith deflection, sometimes also referred to as the polar deflection). In some implementations, the angular roll of the eye about the eye pose direction 524 can be included in the determination of eye pose, and the angular roll can be included in the following analysis. In other implementations, other techniques for determining eye pose can be used, for example, pitch, yaw, and optionally roll systems.

[0116] The eye images can be obtained from the video using any suitable process, for example, using a video processing algorithm that can extract images from one or more sequential frames. The eye pose can be determined from the eye images using various eye tracking techniques. For example, the eye pose can be determined by considering the lens effect of the cornea on the provided light source. Any suitable eye tracking technique can be used to determine the eye pose. F. Eye Tracking System Implementation Example

[0117] FIG. 6 illustrates a schematic diagram of a wearable system 600 including an eye tracking system. The wearable system 600, in at least some embodiments, may include components located in a head-mounted unit 602 and components located in a non-head-mounted unit 604. The non-head-mounted unit 604 may be, by way of example, a belt-mounted component, a handheld component, a component in a backpack, a remote component, etc. Incorporating some of the components of the wearable system 600 into the non-head-mounted unit 604 may help reduce the size, weight, complexity, and cost of the head-mounted unit 602. In some implementations, some or all of the functionality described as being performed by one or more components of the head-mounted unit 602 and / or the non-head-mounted unit 604 may be provided using one or more components included anywhere within the wearable system 600. For example, some or all of the functionality described below in connection with CPU 612 of head-mounted unit 602 may be provided using CPU 616 of non-head-mounted unit 604, or vice versa. In some embodiments, some or all of such functionality may be provided using peripheral devices of wearable system 600. Furthermore, in some implementations, some or all of such functionality may be provided using one or more cloud computing devices or other remotely located computing devices, in a manner similar to that described above with reference to FIG. 2.

[0118] As shown in FIG. 6 , the wearable system 600 may include an eye tracking system including a camera 324 that captures images of the user's eyes 610. If desired, the eye tracking system may also include light sources 326 a and 326 b (such as light-emitting diodes (LEDs)). The light sources 326 a and 326 b may generate a flash of light (e.g., a reflection from the user's eye that appears in an image of the eye captured by the camera 324). The position of the light sources 326 a and 326 b relative to the camera 324 may be known, so that the position of the flash of light in the image captured by the camera 324 may be used in tracking the user's eyes (as will be discussed in more detail below in connection with FIG. 7 ). In at least one embodiment, there may be one light source 326 and one camera 324 associated with one of the user's eyes 610. In another embodiment, there may be one light source 326 and one camera 324 associated with each of the user's eyes 610. In still other embodiments, there may be one or more cameras 324 and one or more light sources 326 associated with one or each of the user's eyes 610. As a specific example, there may be two light sources 326a and 326b and one or more cameras 324 associated with each of the user's eyes 610. As another example, there may be three or more light sources, such as light sources 326a and 326b, and one or more cameras 324 associated with each of the user's eyes 610. In some implementations described herein, two or more cameras may be employed to image a given eye.

[0119] The eye tracking module 614 may receive images from the eye tracking camera 324, analyze the images, and extract various information. As an example, the eye tracking module 614 may detect the user's eye posture, the three-dimensional position of the user's eyes relative to the eye tracking camera 324 (and the head-mounted unit 602), the direction in which one or both of the user's eyes 610 are focused, the user's convergence and divergence depth (e.g., the depth from the user at which the user is focused), the position of the user's pupils, the position of the user's cornea and / or corneal sphere, the center of rotation of one or each of the user's eyes, and the center of gaze of one or each of the user's eyes, or any combination thereof. The eye tracking module 614 may extract such information using techniques described below in connection with FIGS. 7-11. As shown in FIG. 6, the eye tracking module 614 may be a software module implemented using the CPU 612 in the head-mounted unit 602.

[0120] Although one camera 324 is shown in FIG. 6 as imaging the eye, in some implementations, multiple cameras may image the eye and be used for measurements such as corneal center and / or center of rotation measurements, or otherwise used for eye tracking or other purposes, as discussed herein.

[0121] Data from the eye tracking module 614 may be provided to other components within the wearable system. As an example, such data may be transmitted to components within the non-head-mounted unit 604, such as the CPU 616, including software modules for a light field rendering controller 618 and an alignment observer 620.

[0122] The rendering controller 618 may use information from the eye tracking module 614 to adjust the images displayed to the user via the rendering engine 622 (e.g., the rendering engine, which may be a software module within the GPU 620 and may provide images to the display 220). As an example, the rendering controller 618 may adjust the images displayed to the user based on the user's center of rotation or center of viewpoint. In particular, the rendering controller 618 may use information about the user's center of viewpoint to simulate a rendering camera (e.g., to simulate the collection of images from the user's viewpoint) and adjust the images displayed to the user based on the simulated rendering camera.

[0123] A "rendering camera," sometimes referred to as a "pinhole perspective camera" (or simply, a "perspective camera") or a "virtual pinhole camera" (or simply, a "virtual camera"), is a simulated camera for use in rendering virtual image content, possibly from a database of objects in a virtual world. The objects may have a location and orientation relative to a user or wearer, and possibly relative to real objects in the environment surrounding the user or wearer. In other words, the rendering camera may represent a viewpoint in the rendering space from which the user or wearer should view the 3D virtual content (e.g., virtual objects) of the rendering space. The rendering camera may render a virtual image based on a database of virtual objects to be presented to the eye, managed by a rendering engine. The virtual image may be rendered as if taken from the user's or wearer's perspective. For example, a virtual image may be rendered as if it were captured by a pinhole camera (corresponding to a "rendering camera") having a specific set of intrinsic parameters (e.g., focal length, camera pixel size, principal point coordinates, distortion / distortion parameters, etc.) and a specific set of extrinsic parameters (e.g., translation and rotation components relative to the virtual world). The virtual image is captured from the viewpoint of such a camera having the rendering camera's position and orientation (e.g., the rendering camera's extrinsic parameters). It follows that the system may define and / or adjust the intrinsic and extrinsic rendering camera parameters. For example, the system may define a particular set of extrinsic rendering camera parameters such that the virtual image is rendered as if it were captured from the viewpoint of a camera having a specific location relative to the user's or wearer's eyes to provide an image that appears as if it were from the user's or wearer's perspective. The system may later dynamically adjust the extrinsic rendering camera parameters on the fly to maintain alignment with the specific location. Similarly, intrinsic rendering camera parameters may also be defined and dynamically adjusted over time.In some implementations, the image is rendered as if it were captured from the viewpoint of a camera having an aperture (e.g., a pinhole) at a specific location (such as the center of viewpoint or center of rotation or other location) relative to the user's or wearer's eye.

[0124] In some embodiments, the system may create or dynamically reposition and / or reorient one rendering camera for the user's left eye and another rendering camera for the user's right eye as the user's eyes are physically separated from one another and therefore consistently positioned in different locations. In at least some implementations, virtual content rendered from the perspective of a rendering camera associated with the viewer's left eye may be presented to the user through a left eyepiece of a head-mounted display (e.g., head-mounted unit 602), and virtual content rendered from the perspective of a rendering camera associated with the user's right eye may be presented to the user through a right eyepiece of such head-mounted display. Further details discussing the creation, adjustment, and use of rendering cameras in the rendering process are provided in U.S. Patent Application No. 15 / 274,823, entitled "METHODS AND SYSTEMS FOR DETECTING AND COMBINING STRUCTURAL FEATURES IN 3D RECONSTRUCTION," which is expressly incorporated herein by reference in its entirety for all purposes.

[0125] In some embodiments, one or more modules (or components) of system 600 (e.g., light field rendering controller 618, rendering engine 620, etc.) may determine the position and orientation of a rendering camera within a rendering space based on the position and orientation of the user's head and eyes (e.g., as determined based on head pose and eye tracking data, respectively). That is, system 600 may, in effect, map the user's head and eye position and orientation to a specific location and angular position within the 3D virtual environment, install and orient the rendering camera to a specific location and angular position within the 3D virtual environment, and render virtual content for the user as it would be captured by the rendering camera. Further details discussing the real-world / virtual-world mapping process are provided in U.S. patent application Ser. No. 15 / 296,869, entitled "SELECTING VIRTUAL OBJECTS IN A THREE-DIMENSIONAL SPACE," which is expressly incorporated herein by reference in its entirety for all purposes. As an example, the rendering controller 618 may adjust the depth at which an image is displayed by selecting the depth plane (or depth planes) to be utilized at any given time to display the image. In some implementations, such depth plane switching may be performed through adjustment of one or more intrinsic rendering camera parameters. For example, the light field rendering controller 618 may adjust the focal length of the rendering camera when performing a depth plane switching or adjustment. As described in further detail below, depth planes may be switched based on the user's determined convergence-divergence movement or fixation depth.

[0126] The alignment observer 620 may use information from the eye tracking module 614 to identify whether the head-mounted unit 602 is properly positioned on the user's head. As an example, the eye tracking module 614 may provide eye location information, such as the location of the center of rotation of the user's eyes, which indicates the three-dimensional position of the user's eyes relative to the camera 324, and the head-mounted unit 602 and eye tracking module 614 may use the location information to determine whether the display 220 is properly aligned within the user's field of view or whether the head-mounted unit 602 (or headset) has slipped or is otherwise misaligned with the user's eyes. As examples, alignment observer 620 may be able to determine whether head-mounted unit 602 has slipped off the bridge of the user's nose, thus moving display 220 away from and downwardly away from the user's eyes (which may be undesirable), whether head-mounted unit 602 has moved above the bridge of the user's nose, thus moving display 220 closer to and upwardly away from the user's eyes, whether head-mounted unit 602 has been shifted left or right relative to the bridge of the user's nose, whether head-mounted unit 602 has been lifted above the bridge of the user's nose, or whether head-mounted unit 602 has been moved away from a desired position or range of positions in these or other ways. In general, alignment observer 620 may be able to determine whether head-mounted unit 602, and display 220 in particular, are properly positioned directly in front of the user's eyes. In other words, alignment observer 620 may determine whether the left display in display system 220 is properly aligned with the user's left eye, and whether the right display in display system 220 is properly aligned with the user's right eye. Alignment observer 620 may determine whether head-mounted unit 602 is properly positioned by determining whether head-mounted unit 602 is positioned and oriented within a desired range of position and / or orientation relative to the user's eyes.

[0127] In at least some embodiments, alignment observer 620 may generate user feedback in the form of alerts, messages, or other content. Such feedback may be provided to the user to inform the user of any misalignment of head-mounted unit 602, along with optional feedback on how to correct the misalignment (such as suggestions to adjust head-mounted unit 602 in a particular manner).

[0128] Exemplary alignment observation and feedback techniques that may be utilized by alignment observer 620 are described in U.S. patent application Ser. No. 15 / 717,747, filed Sep. 27, 2017 (Attorney Docket No. MLEAP.052A2), and U.S. provisional patent application Ser. No. 62 / 644,321, filed Mar. 16, 2018 (Attorney Docket No. MLEAP.195PR), both of which are incorporated by reference in their entireties herein. G. Eye Tracking Module Example

[0129] A detailed block diagram of an exemplary eye tracking module 614 is shown in Figure 7A. As shown in Figure 7A, the eye tracking module 614 may include a variety of different sub-modules, may provide a variety of different outputs, and may utilize a variety of available data in tracking the user's eyes. As an example, the eye tracking module 614 may utilize available data, including extrinsic and intrinsic properties of eye tracking, such as the geometry of the eye tracking camera 324 relative to the light source 326 and head-mounted unit 602, assumed eye dimensions 704, such as the typical distance between the center of curvature of the user's cornea and the average center of rotation of the user's eye (e.g., which may be 5.7 or 5.7 mm ± 1 mm or an approximation thereof) or the distance between the center of curvature of the user's cornea and the center of the pupil (e.g., which may be 4.7 or 4.7 mm ± 1 mm or an approximation thereof), or per-user calibration data 706, such as the distance between the user's center of rotation and the center of gaze, and the particular user's interpupillary distance. Additional examples of extrinsic properties, intrinsic properties, and other information that may be employed by the eye tracking module 614 are described in U.S. patent application Ser. No. 15 / 497,726, filed April 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated herein by reference in its entirety.

[0130] Image preprocessing module 710 may receive images from an eye camera, such as eye camera 324, and may perform one or more preprocessing (e.g., adjustment) operations on the received images. As examples, image preprocessing module 710 may apply Gaussian blur to the images, downsample the images to a lower resolution, apply an unsharp mask, apply an edge sharpening algorithm, or apply other suitable filters to aid in the subsequent detection, location, and labeling of phosphenes, pupils, or other features in images from eye camera 324. Image preprocessing module 710 may apply a low-pass filter or a morphological filter, such as an open filter, which may remove high-frequency noise from pupil boundary 516a (see FIG. 5), thereby removing noise that may interfere with pupil and phosphene determination. Image preprocessing module 710 may output the preprocessed images to pupil identification module 712 and phosphene detection and labeling module 714.

[0131] The pupil identification module 712 may receive preprocessed images from the image preprocessing module 710 and may identify regions of those images that contain the user's pupil. The pupil identification module 712, in some embodiments, may determine the coordinates of the location of the user's pupil within the eye tracking images from the camera 324, i.e., the coordinates of the center or centroid. In at least some embodiments, the pupil identification module 712 may identify contours within the eye tracking images (e.g., the contours of the pupil-iris boundary), identify contour moments (e.g., the center of mass), apply starburst pupil detection and / or Canny edge detection algorithms, filter out outliers based on intensity values, identify sub-pixel boundary points, correct for eye camera distortion (e.g., distortion in images captured by the eye camera 324), apply a random sample consensus (RANSAC) iterative algorithm, fit ellipses to boundaries within the eye tracking images, apply a tracking filter to the images, and identify sub-pixel image coordinates of the user's pupil centroid. Pupil identification module 712 may output pupil identification data (which may indicate regions of preprocessed image module 712 identified as indicative of the user's pupil) to flash detection and labeling module 714. Pupil identification module 712 may provide 2D coordinates of the user's pupil in each eye tracking image (e.g., 2D coordinates of the centroid of the user's pupil) to flash detection module 714. In at least some embodiments, pupil identification module 712 may also provide the same type of pupil identification data to coordinate system normalization module 718.

[0132] Pupil detection techniques that may be utilized by pupil identification module 712 are described in U.S. Patent Publication No. 2017 / 0053165, published February 23, 2017, and U.S. Patent Publication No. 2017 / 0053166, published February 23, 2017 (each of which is incorporated by reference in its entirety herein).

[0133] The flash detection and labeling module 714 may receive the preprocessed image from module 710 and the pupil identification data from module 712. The flash detection module 714 may use this data to detect and / or identify flashes (i.e., reflections of light from the light source 326 off the user's eye) in areas of the preprocessed image that represent the user's pupil. As an example, the flash detection module 714 may search for bright areas, sometimes referred to herein as "blobs" or local intensity maxima, in the eye tracking image that are in the vicinity of the user's pupil. In at least some embodiments, the flash detection module 714 may rescale (e.g., expand) the pupil ellipse to include additional flashes. The flash detection module 714 may filter flashes by size and / or intensity. The flash detection module 714 may also determine the 2D location of each flash within the eye tracking image. In at least some embodiments, the flash detection module 714 may determine the 2D position of the flash relative to the user's pupil, which may also be referred to as the pupil-flashing vector. The flash detection and labeling module 714 may label the flashes and output a preprocessed image with the labeled flashes to the 3D corneal center estimation module 716. The flash detection and labeling module 714 may also pass on data such as the preprocessed image from module 710 and the pupil identification data from module 712. In some implementations, the flash detection and labeling module 714 may determine the light source (e.g., among multiple light sources in the system, including infrared light sources 326a and 326b) that produced each identified flash. In these embodiments, the flash detection and labeling module 714 may label the flashes with information identifying the associated light source and output a preprocessed image with the labeled flashes to the 3D corneal center estimation module 716.

[0134] Pupil and phosphene detection, as performed by modules such as modules 712 and 714, can use any suitable technique. As an example, edge detection can be applied to the eye image to identify phosphenes and pupils. Edge detection can be applied by various edge detectors, edge detection algorithms, or filters. For example, a Canny edge detector can be applied to the image to detect edges, such as lines, in the image. Edges may include points located along the lines that correspond to local maximum derivatives. For example, pupil boundary 516a (see FIG. 5) can be located using a Canny edge detector. Once the location of the pupil is determined, various image processing techniques can be used to detect the “pose” of pupil 116. Determining the eye pose of the eye image may also be referred to as detecting the eye pose of the eye image. Pose may also be referred to as gaze, facing direction, or eye orientation. For example, the pupil may be looking left toward an object, and the pupil pose may be classified as a left-looking pose. Other methods can also be used to detect the location of the pupil or phosphene. For example, concentric rings may be located in the eye image using a Canny edge detector. As another example, an integro-differential operator may be used to find the limbal boundary of the pupil or iris. For example, a Daugman integro-differential operator, a Hough transform, or other iris segmentation techniques can be used to return a curve that estimates the boundary of the pupil or iris.

[0135] The 3D corneal center estimation module 716 may receive preprocessed images from modules 710, 712, and 714, including detected phosphene data and pupil identification data. The 3D corneal center estimation module 716 may use these data to estimate the 3D position of the user's cornea. In some embodiments, the 3D corneal center estimation module 716 may estimate the 3D position of the center of the eye's corneal curvature or the user's corneal sphere, e.g., the center of an imaginary sphere having a surface portion generally coextensive with the user's cornea. The 3D corneal center estimation module 716 may provide data indicating the estimated 3D coordinates of the corneal sphere and / or the user's cornea to the coordinate system normalization module 718, the optical axis determination module 722, and / or the light field rendering controller 618. Further details of the operation of the 3D corneal center estimation module 716 are provided herein in connection with FIGS. 11-16C. Exemplary techniques for estimating the position of ocular features, such as the cornea or corneal sphere, that may be utilized by the 3D corneal center estimation module 716 and other modules in the wearable system of the present disclosure are discussed in U.S. Patent Application No. 15 / 497,726, filed April 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated herein by reference in its entirety.

[0136] Coordinate system normalization module 718 may optionally be included within eye tracking module 614 (as indicated by its dashed outline). Coordinate system normalization module 718 may receive data indicating the estimated 3D coordinates of the center of the user's cornea (and / or the center of the user's corneal sphere) from 3D corneal center estimation module 716, and may also receive data from other modules. Coordinate system normalization module 718 may normalize the eye camera coordinate system, which may help to compensate for slippage of the wearable device (e.g., slippage of a head-mounted component from its normal resting position on the user's head, which may be identified by alignment observer 620). The coordinate system normalization module 718 may rotate the coordinate system to align the z-axis (e.g., the vergence-divergence depth axis) of the coordinate system with the corneal center (e.g., as indicated by the 3D corneal center estimation module 716) and may translate the camera center (e.g., the origin of the coordinate system) a predetermined distance away from the corneal center, such as 30 mm (e.g., module 718 may zoom in or out on the eye tracking image depending on whether the eye camera 324 is determined to be closer or farther than the predetermined distance). Using this normalization process, the eye tracking module 614 may be able to establish consistent orientations and distances in the eye tracking data relatively independent of variations in the headset positioning on the user's head. The coordinate system normalization module 718 may provide the 3D coordinates of the center of the cornea (and / or corneal sphere), pupil identification data, and preprocessed eye tracking images to the 3D pupil center locator module 720.

[0137] The 3D pupil center locator module 720 may receive data including the 3D coordinate of the center of the user's cornea (and / or corneal sphere), pupil location data, and preprocessed eye tracking images in a normalized or non-normalized coordinate system. The 3D pupil center locator module 720 may analyze such data to determine the 3D coordinate of the user's pupil center in a normalized or non-normalized eye camera coordinate system. The 3D pupil center locator module 720 may determine the location of the user's pupil in three dimensions based on the 2D location of the pupil centroid (as determined by module 712), the 3D location of the corneal center (as determined by module 716), assumed eye dimensions 704 such as the size of a typical user's corneal sphere and the typical distance from the corneal center to the pupil center, and optical properties of the eye such as the refractive index of the cornea (relative to the refractive index of air), or any combination thereof. Techniques for estimating the position of eye features, such as the pupil, that may be utilized by the 3D pupil center locator module 720 and other modules in the wearable system of the present disclosure are discussed in U.S. patent application Ser. No. 15 / 497,726, filed April 26, 2017 (Attorney Docket No. MLEAP.023A7), which is incorporated herein by reference in its entirety.

[0138] Optical axis determination module 722 may receive data from modules 716 and 720 indicating the 3D coordinates of the user's cornea and the user's pupil center. Based on such data, optical axis determination module 722 may identify a vector from the location of the corneal center (e.g., from the center of the corneal sphere) to the user's pupil center, which may define the optical axis of the user's eye. Optical axis determination module 722 may provide outputs to modules 724, 728, 730, and 732 that define the user's optical axis, as an example.

[0139] The center of rotation (CoR) estimation module 724 may receive data from module 722 including parameters of the optical axis of the user's eye (e.g., data indicating the orientation of the optical axis in a coordinate system with a known relationship to the head-mounted unit 602). For example, the CoR estimation module 724 may estimate the center of rotation of the user's eye. The center of rotation may indicate a point around which the user's eye rotates as the user's eye rotates left, right, up, and / or down. Even if the eye cannot rotate perfectly around a single point, it is assumed that a single point may be sufficient. In at least some embodiments, the CoR estimation module 724 may estimate the center of rotation of the eye by moving a specific distance along the optical axis (identified by module 722) from the pupil center (identified by module 720) or the center of corneal curvature (as identified by module 716) toward the retina. This specific distance may be the assumed eye dimension 704. As an example, the particular distance between the center of corneal curvature and the CoR may be, for example, 5.7 mm, 4.7 mm, 5.7 mm ± 1 mm, or an approximation thereof. This distance may be varied for a particular user based on any relevant data, including the user's age, gender, vision prescription, other relevant characteristics, etc.

[0140] In at least some embodiments, the CoR estimation module 724 may refine its estimate of the center of rotation of each of the user's eyes over time. As an example, over time, the user will eventually rotate their eyes (to look elsewhere, closer, or further away, or to the left, right, up, or down at certain times), causing a shift in the optical axis of each of their eyes. The CoR estimation module 724 may then analyze the two (or more) optical axes identified by module 722 and locate the 3D point of intersection of those optical axes. The CoR estimation module 724 may then determine a center of rotation that is at that 3D point of intersection. Such a technique may provide an estimate of the center of rotation with improving accuracy over time.

[0141] Various techniques may be employed to increase the accuracy of the CoR estimation module 724 and the determined CoR positions of the left and right eyes. As an example, the CoR estimation module 724 may estimate the CoR by finding the average point of intersection of the optical axes determined over time for a variety of different eye postures. As an additional example, the module 724 may filter or average the estimated CoR positions over time, calculate a running average of the estimated CoR positions over time, and / or apply a Kalman filter and known dynamics of the eye and eye tracking system to estimate the CoR positions over time. In some implementations, a least-squares approach may be taken to determine one or more points of intersection of the optical axes. In such implementations, the system may identify locations where, at a given time, the sum of the squared distances to a given set of optical axes is reduced or minimized as points of intersection of the optical axes. As a specific example, module 724 may calculate a weighted average of the determined point of optical axis intersection and the assumed CoR location (e.g., 4.7 mm, or 5.7 mm, or 5.7 mm ± 1 mm behind the center of corneal curvature of the eye or an approximation thereof) so that the determined CoR may slowly shift over time from the assumed CoR location (e.g., 4.7 mm, or 5.7 mm ± 1 mm behind the center of corneal curvature of the eye or an approximation thereof) to a slightly different location within the user's eye as eye tracking data is acquired for the user, thereby allowing for per-user refinement of the CoR location.

[0142] Under ideal conditions, the 3D position of the true CoR of a user's eye relative to the HMD should change by a negligible or minimal amount over time as the user moves their eye (e.g., as the user's eye rotates around its center of rotation). In other words, for a given set of eye movements, the 3D position of the true CoR of a user's eye (relative to the HMD) should hypothetically vary less over time than any other point along the optical axis of the user's eye. Thus, it follows that the farther a point along the optical axis is from the true CoR of the user's eye, the more variation or variance its 3D position will exhibit over time as the user moves their eye. In some embodiments, the CoR estimation module 724 and / or other sub-modules of the eye tracking module 614 may utilize this statistical relationship to improve CoR estimation accuracy. In such an embodiment, the CoR estimation module 724 and / or other sub-modules of the eye tracking module 614 may refine its estimate of the CoR 3D position over time by identifying variations in its CoR estimates that have low variations (e.g., low variance or standard deviation).

[0143] As a first example, in embodiments in which the CoR estimation module 724 estimates the CoR based on the intersection of multiple different optical axes (each associated with the user looking in a different direction), the CoR estimation module 724 may take advantage of this statistical relationship (the true CoR should have low variance) by introducing a common offset into the direction of each of the optical axes (e.g., shifting each axis by a uniform amount) and determining whether the offset optical axes intersect each other at an intersection point with low variation, e.g., low variance or standard deviation. This can help correct for slight systematic errors in the calculation of the optical axis directions and refine the estimated location of the CoR to be closer to the true CoR.

[0144] As a second example, in an embodiment where the CoR estimation module 724 estimates the CoR by moving a specific distance (e.g., the distance between the center of corneal curvature and the CoR) along the optical axis (or other axis), the system may vary, optimize, adjust, or otherwise adjust the specific distance between the center of corneal curvature and the CoR over time (e.g., for a large group of images of the eye captured at different times) in a manner that reduces or minimizes the amount of variation, e.g., the amount of variance and / or standard deviation, in the estimated CoR position. For example, if the CoR estimation module 724 initially uses a particular distance value (along the optical axis from the center of corneal curvature) of 4.7 mm, or 5.7 mm, or 5.7 mm±1 mm, or an approximation thereof, to obtain CoR position estimates, but the true CoR of a given user's eye may be located 4.9 mm behind the center of corneal curvature of the eye (along the optical axis), the initial set of CoR position estimates obtained by the CoR estimation module 724 may exhibit a relatively high amount of variation, e.g., variance or standard deviation. In response to detecting such a relatively high amount of variation (e.g., variance or standard deviation), the CoR estimation module 724 may search for and identify one or more points along the optical axis having a lower amount of variation (e.g., variance or standard deviation), identify the 4.9 mm distance having the lowest amount of variation (e.g., variance or standard deviation), and accordingly adjust the particular distance value utilized to 4.9 mm.

[0145] The CoR estimation module 724 may search for alternative CoR estimates with lower variability (e.g., variance and / or standard deviation) in response to detecting that the current CoR estimate has a relatively high amount of variability (e.g., variance or standard deviation), or may search for alternative CoR estimates with lower variability (e.g., variance and / or standard deviation) as appropriate after obtaining an initial CoR estimate. In some embodiments, such optimization / adjustment may occur gradually over time, while in other embodiments, such optimization / adjustment may be performed during an initial user calibration session. In embodiments in which such a procedure is performed during a calibration procedure, the CoR estimation module 724 may not initially agree with / adhere to any assumed particular distance, but rather may collect sets of eye tracking data over time, perform statistical analysis on the sets of eye tracking data, and, based on the statistical analysis, determine a particular distance value that results in a CoR position estimate with the least possible amount of variability (e.g., variance or standard deviation) (e.g., a global minimum).

[0146] The interpupillary distance (IPD) estimation module 726 may receive data from the CoR estimation module 724 indicating estimated 3D positions of the centers of rotation of the user's left and right eyes. The IPD estimation module 726 may then estimate the user's IPD by measuring the 3D distance between the centers of rotation of the user's left and right eyes. Generally, the distance between the estimated CoR of the user's left eye and the estimated CoR of the user's right eye may be approximately equal to the distance between the user's pupil centers when the user is looking at optical infinity (e.g., the optical axes of the user's eyes are approximately parallel to each other), which is a typical definition of the interpupillary distance (IPD). The user's IPD may be used by various components and modules within the wearable system. As an example, the user's IPD may be provided to the alignment observer 620 and used in assessing the degree to which the wearable device is aligned with the user's eyes (e.g., whether the left and right display lenses are properly spaced according to the user's IPD). As another example, the user's IPD may be provided to the convergence-divergence depth estimation module 728 and used in determining the user's convergence-divergence depth. The module 726 may employ various techniques to increase the accuracy of the estimated IPD, such as those discussed in connection with the CoR estimation module 724. As an example, the IPD estimation module 724 may apply filtering, averaging over time, weighted averaging including assumed IPD distances, Kalman filtering, etc. as part of estimating the user's IPD in an accurate manner.

[0147] The vergence-divergence movement depth estimation module 728 may receive data from various modules and sub-modules (as shown in connection with FIG. 7A ) within the eye tracking module 614. In particular, the vergence-divergence movement depth estimation module 728 may employ data indicative of an estimated 3D position of the pupil center (e.g., as provided by module 720 described above), one or more determined parameters of the optical axis (e.g., as provided by module 722 described above), an estimated 3D position of the center of rotation (e.g., as provided by module 724 described above), an estimated IPD (e.g., the Euclidean distance between the estimated 3D positions of the centers of rotation) (e.g., as provided by module 726 described above), and / or one or more determined parameters of the optical axis and / or visual axis (e.g., as provided by module 722 and / or module 730 described below). The convergence depth estimation module 728 may detect or otherwise obtain a measurement of the user's convergence depth, which may be the distance from the user at which the user's eyes are focused. As an example, when the user is looking at an object three feet in front of them, the user's left and right eyes have a convergence depth of three feet, while when the user is looking at a distant scene (e.g., the optical axes of the user's eyes are approximately parallel to one another such that the distance between the user's pupil centers may be approximately equal to the distance between the centers of rotation of the user's left and right eyes), the user's left and right eyes have a convergence depth of infinity. In some implementations, the convergence depth estimation module 728 may utilize data indicative of estimated centers of the user's pupils (e.g., as provided by module 720) and determine the 3D distance between the estimated centers of the user's pupils. The convergence-divergence depth estimation module 728 may obtain a measure of convergence-divergence depth by comparing such determined 3D distance between pupil centers with an estimated IPD (e.g., the Euclidean distance between the estimated 3D positions of the centers of rotation) (e.g., as shown by module 726 described above).In addition to the 3D distance between pupil centers and the estimated IPD, the convergence movement depth estimation module 728 may utilize known, assumed, estimated, and / or determined geometric shapes to calculate the convergence movement depth. As an example, the module 728 may combine the 3D distance between pupil centers, the estimated IPD, and the 3D CoR position in a trigonometric calculation to estimate (e.g., determine) the user's convergence movement depth. Indeed, an evaluation of such determined 3D distance between pupil centers relative to the estimated IPD may serve as an indication of the user's current convergence movement depth relative to optical infinity. In some examples, the convergence movement depth estimation module 728 may simply receive or have access to data indicating the estimated 3D distance between the estimated centers of the user's pupils for purposes of obtaining such a measurement of the convergence movement depth. In some embodiments, the vergence movement depth estimation module 728 may estimate the vergence movement depth by comparing the user's left and right optical axes. In particular, the vergence movement depth estimation module 728 may estimate the vergence movement depth by locating the distance from the user where the user's left and right optical axes intersect (or where projections of the user's left and right optical axes on a plane, such as a horizontal plane, intersect). The module 728 may utilize the user's IPD in this calculation by setting zero depth to be the depth where the user's left and right optical axes are separated by the user's IPD. In at least some embodiments, the vergence movement depth estimation module 728 may determine the vergence movement depth by triangulating eye tracking data with known or derived spatial relationships.

[0148] In some embodiments, the convergence-divergence depth estimation module 728 may estimate the user's convergence depth based on the intersection of the user's visual axis (instead of its optical axis), which may provide a more accurate indication of the distance the user is focusing. In at least some embodiments, the eye tracking module 614 may include an optical axis / visual axis mapping module 730. As discussed in further detail in connection with FIG. 10 , a user's optical axis and visual axis are generally not aligned. The visual axis is the axis along which a person looks, while the optical axis is defined by the center of the person's lens and pupil and may run through the center of the person's retina. In particular, the user's visual axis is generally defined by the location of the user's fovea, which may be offset from the center of the user's retina, thereby resulting in different optical and visual axes. In at least some of these embodiments, the eye tracking module 614 may include an optical axis / visual axis mapping module 730. The optical axis / visual axis mapping module 730 may correct for differences between the user's optical axis and visual axis and provide information about the user's visual axis to other components in the wearable system, such as the vergence-divergence depth estimation module 728 and the light field rendering controller 618. In some embodiments, the module 730 may use assumed eye dimensions 704 that include a typical offset of approximately 5.2° inward (nasally, toward the user's nose) between the optical axis and the visual axis. In other words, the module 730 may shift the user's left optical axis 5.2° nasally (toward the user's nose) to the right and the user's right optical axis 5.2° nasally (to the left) to estimate the direction of the user's left and right optical axes. In other embodiments, the module 730 may utilize per-user calibration data 706 when mapping the optical axis (e.g., as shown by module 722 described above) to the visual axis. As an additional example, module 730 may shift the user's optical axis nasally by 4.0° to 6.5°, 4.5° to 6.0°, 5.0° to 5.4°, etc., or any range formed by any of these values.In some arrangements, module 730 may apply the shift based, at least in part, on characteristics of the particular user, such as their age, gender, vision prescription, or other relevant characteristics, and / or may apply the shift based, at least in part, on a calibration process for the particular user (e.g., to determine the particular user's optical axis-visual axis offset). In at least some embodiments, module 730 may also shift the origins of the left and right optical axes to correspond to the user's CoP (as determined by module 732) instead of the user's CoR.

[0149] An optional center of perspective (CoP) estimation module 732, when provided, may estimate the location of the user's left and right centers of perspective (CoP). The CoP is a useful location for a wearable system and, in at least some embodiments, may be a location directly in front of the pupil. In at least some embodiments, the CoP estimation module 732 may estimate the location of the user's left and right centers of perspective based on the 3D location of the user's pupil center, the 3D location of the user's corneal curvature center, or any such suitable data, or any combination thereof. As an example, the user's CoP may be approximately 5.01 mm in front of the center of corneal curvature (e.g., 5.01 mm from the center of the corneal sphere, toward the cornea of ​​the eye, in a direction along the optical axis) and approximately 2.97 mm behind the outer surface of the user's cornea along the optical or visual axis. The user's center of perspective may be directly in front of their pupil center. As examples, the user's CoP may be less than about 2.0 mm from the user's pupil, less than about 1.0 mm from the user's pupil, or less than about 0.5 mm from the user's pupil, or any range between any of these values. As another example, the center of gaze may correspond to a location within the anterior chamber of the eye. As other examples, the CoP may be between 1.0 mm and 2.0 mm, about 1.0 mm, 0.25 mm and 1.0 mm, 0.5 mm and 1.0 mm, or 0.25 mm and 0.5 mm from the user's pupil.

[0150] The viewpoint centers described herein (as potentially desirable locations for the rendering camera's pinhole and anatomical locations within the user's eye) may be locations that serve to reduce and / or eliminate undesirable parallax shift. In particular, the optical system of the user's eye roughly parallels a theoretical system formed by a pinhole in front of a lens projecting onto a screen, with the pinhole, lens, and screen roughly corresponding to the user's pupil / iris, lens, and retina, respectively. Furthermore, it may be desirable for there to be little or no parallax shift when two point light sources (or objects) at different distances from the user's eye are rotated precisely around the pinhole opening (e.g., rotated along radii of curvature equal to their respective distances from the pinhole opening). Thus, one would think that the CoP should be located at the eye's pupil center (and such a CoP may be used in some embodiments). However, in addition to the lens and pupil pinhole, the human eye includes a cornea, which imparts additional refractive power to light propagating toward the retina. Thus, the anatomical equivalent of a pinhole in the theoretical system described in this paragraph may be a region of a user's eye that is located between the outer surface of the cornea of ​​the user's eye and the center of the pupil or iris of the user's eye. For example, the anatomical equivalent of a pinhole may correspond to a region within the anterior chamber of the user's eye. For various reasons discussed herein, it may be desirable to set the CoP at such a location within the anterior chamber of the user's eye.

[0151] As discussed above, the eye tracking module 614 may provide data such as estimated 3D positions of the left and right eye centers of rotation (CoR), vergence and divergence movement depth, left and right eye optical axes, 3D positions of the user's eyes, 3D positions of the user's left and right centers of corneal curvature, 3D positions of the user's left and right pupil centers, 3D positions of the user's left and right gaze centers, and the user's IPD to other components in the wearable system, such as the light field rendering controller 618 and the alignment observer 620. The eye tracking module 614 may also include other sub-modules that detect and generate data associated with other aspects of the user's eyes. As an example, the eye tracking module 614 may include an eye blink detection module that provides a flag or other alert whenever the user blinks, and a saccade detection module that provides a flag or other alert whenever the user's eyes saccade (e.g., rapidly shift focus to another point).

[0152] Other methods of determining eye tracking and the center of rotation are also possible. Thus, the eye tracking module 614 may vary. In various implementations of the eye tracking module described below, for example, an estimate of the center of rotation is determined based on multiple corneal center of curvature values. In some implementations, as discussed with reference to, for example, FIGS. 17A-19D , the eye tracking module 614 may estimate the eye's center of rotation by determining the convergence or intersection between surface normal vectors of surfaces fitted to multiple corneal centers of curvature, possibly for different eye postures. It should be noted that one or more features from the eye tracking module 614 described above or elsewhere herein may be included in other implementations of the eye tracking module. H. Rendering Controller Example

[0153] A detailed block diagram of an exemplary light field rendering controller 618 is shown in FIG. 7B. As shown in FIGS. 6 and 7B, the rendering controller 618 may receive eye tracking information from the eye tracking module 614 and provide output to the rendering engine 622, which may generate images to be displayed for viewing by a user of the wearable system. As an example, the rendering controller 618 may receive other eye data such as vergence and divergence depth, left and right eye rotation centers (and / or gaze centers), and eye blink data, saccade data, etc.

[0154] The depth plane selection module 750 may receive convergence-divergence depth information and other ocular data and, based on such data, may cause the rendering engine 622 to convey content to the user with a particular depth plane (e.g., a particular accommodation or focal length). As discussed in connection with FIG. 4 , the wearable system may include multiple discrete depth planes formed by multiple waveguides, each conveying image information with a variable level of wavefront curvature. In some embodiments, the wearable system may include one or more variable depth planes, such as optical elements, conveying image information with a time-varying level of wavefront curvature. In these and other embodiments, the depth plane selection module 750 may cause the rendering engine 622 to convey content to the user at a selected depth (e.g., cause the rendering engine 622 to instruct the display 220 to switch depth planes) based, in part, on the user's convergence-divergence depth. In at least some embodiments, depth plane selection module 750 and rendering engine 622 may render content at different depths and may also generate and / or provide depth plane selection data to display hardware, such as display 220. Display hardware, such as display 220, may perform electronic depth plane switching in response to depth plane selection data (which may be control signals) generated and / or provided by modules, such as depth plane selection module 750 and rendering engine 622.

[0155] In general, it may be desirable for depth plane selection module 750 to select a depth plane that matches the user's current convergence-divergence depth so that the user is provided with accurate accommodation cues. However, it may also be desirable to switch depth planes in a discreet and unobtrusive manner. As an example, it may be desirable to avoid excessive switching between depth planes and / or to switch depth planes at times when the user is unlikely to notice the switch, such as during an eyeblink or eye saccade.

[0156] The hysteresis band crossing detection module 752 may help avoid excessive switching between depth planes, particularly when the user's convergence-divergence depth fluctuates at the midpoint or transition point between two depth planes. In particular, module 752 may cause the depth plane selection module 750 to exhibit hysteresis in its selection of depth planes. As an example, module 752 may cause the depth plane selection module 750 to switch from a first, more distant depth plane to a second, closer depth plane only after the user's convergence-divergence depth passes a first threshold. Similarly, module 752 may cause the depth plane selection module 750 (and thus may indicate on a display, such as display 220) to switch to the first, more distant depth plane only after the user's convergence-divergence depth passes a second threshold that is farther from the user than the first threshold. In the overlap region between the first and second thresholds, module 750 may cause depth plane selection module 750 to maintain whichever depth plane is currently selected as the selected depth plane, thus avoiding excessive switching between depth planes.

[0157] The eye event detection module 750 may receive other eye data from the eye tracking module 614 of FIG. 7A and may cause the depth plane selection module 750 to delay some depth plane switches until an eye event occurs. As an example, the eye event detection module 750 may cause the depth plane selection module 750 to delay a planned depth plane switch until a user blink is detected, or may receive data from an eye blink detection component within the eye tracking module 614 indicating that the user is currently blinking, and in response, cause the depth plane selection module 750 to perform a planned depth plane switch during the blink event (e.g., by having the module 750 instruct the display 220 to perform a depth plane switch during the blink event). In at least some embodiments, the wearable system may be able to shift content onto a new depth plane during the blink event such that the user is unlikely to perceive the shift. As another example, the eye event detection module 750 may delay a planned depth plane switch until an eye saccade is detected. As discussed in connection with eye blinking, such an arrangement can facilitate discrete shifts in the depth plane.

[0158] If desired, depth plane selection module 750 may delay a planned depth plane switch for only a limited period of time before executing a depth plane switch, even in the absence of an ocular event. Similarly, depth plane selection module 750 may execute a depth plane switch when the user's convergence-divergence depth is substantially outside the currently selected depth plane (e.g., when the user's convergence-divergence depth exceeds a predetermined threshold that exceeds the normal threshold for a depth plane switch), even in the absence of an ocular event. These arrangements may help ensure that eye event detection module 754 does not delay a depth plane switch indefinitely and does not delay a delayed depth plane switch when a large accommodation error is present.

[0159] The rendering camera controller 758 may provide information indicating the locations of the user's left and right eyes to the rendering engine 622. The rendering engine 622 may then generate content by simulating cameras at the locations of the user's left and right eyes and generating content based on the perspectives of the simulated cameras. As discussed above, the rendering camera is a simulated camera for use in rendering virtual image content, possibly from a database of objects in the virtual world. The objects may have a location and orientation relative to the user or wearer, and possibly relative to real objects in the environment surrounding the user or wearer. The rendering camera may render virtual images based on a database of virtual objects contained within the rendering engine to be presented to the eyes. The virtual images may be rendered as if they were captured from the perspective of the user or wearer. For example, the virtual images may be rendered as if they were captured by a camera (corresponding to a "rendering camera") having an aperture, lens, and detector that views objects in the virtual world. The virtual images are captured from the perspective of such a camera, which has the location of the "rendering camera." For example, the virtual image may be rendered as if it were captured from a camera viewpoint having an aperture at a specific location relative to the user's or wearer's eyes, to provide an image that appears to be from the user's or wearer's point of view. In some implementations, the image is rendered as if it were captured from a camera viewpoint having an aperture at a specific location relative to the user's or wearer's eyes (such as a viewpoint center or rotation center or other location as discussed herein).

[0160] The rendering camera controller 758 may determine the positions of the left and right cameras based on the left and right eye centers of rotation (CoR) determined by the CoR estimation module 724 and / or based on the left and right eye centers of viewpoint (CoP) determined by the CoP estimation module 732. In some embodiments, the rendering camera controller 758 may switch between the CoR and CoP locations based on various factors. As examples, the rendering camera controller 758 may, in various modes, always align the rendering camera to the CoR location, always align the rendering camera to the CoP location, toggle or discretely switch between aligning the rendering camera to the CoR location and aligning the rendering camera to the CoP location over time based on various factors, or dynamically align the rendering camera to any of a range of different positions along the optical (or visual) axis between the CoR and CoP locations over time based on various factors. The CoR and CoP positions may optionally be passed through a smoothing filter 756 (in any of the aforementioned modes for rendering camera positioning), which may average the CoR and CoP locations over time to reduce noise in these positions and prevent jitter when rendering the simulated rendering camera.

[0161] In at least some embodiments, the rendering camera may be simulated as a pinhole camera with the pinhole placed at the location of the estimated CoR or CoP identified by the eye tracking module 614. Because the CoP is offset from the CoR, whenever the rendering camera's position is based on the user's CoP, the locations of both the rendering camera and its pinhole shift as the user's eyes rotate. In contrast, whenever the rendering camera's position is based on the user's CoR, the location of the rendering camera's pinhole does not move with eye rotation, although the rendering camera (behind the pinhole) may move with eye rotation in some embodiments. In other embodiments where the rendering camera's position is based on the user's CoR, the rendering camera may not move (i.e., rotate) with the user's eyes. I. Example of the difference between the optical axis and the visual axis

[0162] As discussed in connection with the optical axis / visual axis mapping module 730 of FIG. 7A , a user's optical axis and visual axis are generally not aligned, in part because the user's visual axis is defined by their fovea, which is generally not at the center of the person's retina. Thus, when a person desires to focus on a particular object, the person aligns their visual axis with the object, ensuring that light from the object falls on their fovea, while their optical axis (defined by their pupil center and the center of their corneal curvature) is actually slightly offset from the object. FIG. 7C is an example of an eye 900 illustrating the eye's optical axis 902, the eye's visual axis 904, and the offset between these axes. Additionally, FIG. 7C illustrates the eye's pupil center 906, the eye's center of corneal curvature 908, and the eye's mean center of rotation (CoR) 910. In at least some populations, the eye's center of corneal curvature 908 may be approximately 4.7 mm, or 5.7 mm, or 5.7 mm ± 1 mm in front of the eye's mean center of rotation (CoR) 910, or an approximation thereof, as indicated by dimension 912. Additionally, the eye's center of viewpoint 914 may be approximately 5.01 mm in front of the eye's center of corneal curvature 908, approximately 2.97 mm behind the outer surface 916 of the user's cornea, and / or directly in front of the user's pupil center 906 (e.g., corresponding to a location within the anterior chamber of the eye 900). As additional examples, dimension 912 may be 2.0 mm to 8.0 mm, 3.0 mm to 7.0 mm, 4.0 to 6.0 mm, 4.5 to 5.0 mm, or 4.6 to 4.8 mm, 5.0 mm to 6.0 mm, 5.6 mm to 5.8 mm, 5.5 mm to 6.0 mm, or any range between any value within any of these ranges. The eye's center of perspective (CoP) 914 may be a useful location for wearable systems because, at least in some embodiments, aligning the rendering camera with the CoP can help reduce or eliminate parallax artifacts.

[0163] 7C also illustrates such locations within the human eye 900 with which the rendering camera pinhole may be aligned. As shown in FIG. 7C , the rendering camera pinhole may be aligned with a location 914 along the optical axis 902 or visual axis 904 of the human eye 900 that is closer to the outer surface of the cornea than both (a) the center of the pupil or iris 906 and (b) the center of corneal curvature 908 of the human eye 900. For example, as shown in FIG. 7C , the rendering camera pinhole may be aligned with a location 914 along the optical axis 902 of the human eye 900 that is approximately 2.97 millimeters posterior to the outer surface of the cornea 916 and approximately 5.01 millimeters anterior to the center of corneal curvature 908. The rendering camera pinhole location 914 and / or the anatomical region of the human eye 900 to which the location 914 corresponds may be considered to represent the center of view of the human eye 900. The optical axis 902 of the human eye 900 as shown in Figure 7C represents the shortest line passing through the center of corneal curvature 908 and the center of the pupil or iris 906. The visual axis 904 of the human eye 900 differs from the optical axis 902 because it represents a line extending from the fovea of ​​the human eye 900 to the center of the pupil or iris 906. J. Example of Locating the Center of the Cornea Using a Single Camera

[0164] In some implementations, the 3D corneal center estimation module 716 may estimate the center of the cornea based on the measured positions of one or more phosphenes generated by one or more light sources on one or more images captured by a single camera. The 3D corneal center estimation module 716 illustrated in FIG. 7A above may provide an estimate of the center of corneal curvature based on one or more images acquired from a single eye-tracking camera, for example. In some implementations, a spherical eye model may also be used. This spherical model may model the shape or curvature of the cornea based on a surface having a spherical shape or curvature.

[0165] 8A is a schematic diagram of an eye showing the spherical cornea of ​​the eye. As shown in FIG. 8A, a user's eye 810 may have a cornea 812, a pupil 822, and a lens 820. The cornea 812 may have a generally spherical shape, as indicated by a spherical corneal surface 814. The spherical corneal surface 814 may have a center point 816, also referred to as the corneal center, and a radius 818. The hemispherical cornea of ​​the user's eye may curve around the corneal center 816.

[0166] 8B-8E illustrate an example of using the 3D corneal center estimation module 716 and the eye tracking module 614 to locate the corneal center 816 of a user.

[0167] 8B , the 3D corneal center estimation module 716 may receive an eye tracking image 852, including a corneal flash 854. The 3D corneal center estimation module 716 may then simulate the known 3D positions of the eye camera 324 and light source 326 (which may be based on data in the eye tracking extrinsic and intrinsic properties database 702, the assumed eye dimensions database 704, and / or the per-user calibration data 706) in the eye camera coordinate system 850 to project a ray 856 into the eye camera coordinate system. In at least some embodiments, the eye camera coordinate system 850 may have its origin at the 3D position of the eye tracking camera 324.

[0168] 8C, the 3D corneal center estimation module 716 simulates a corneal sphere 814a (which may be based on assumed eye dimensions from the database 704) and a corneal center of curvature 816a at a first position. The 3D corneal center estimation module 716 may then check whether the corneal sphere 814a will properly reflect light from the light source 326 to the glint position 854. As shown in FIG. 8C, the first position does not match because the light ray 860a does not intersect with the light source 326.

[0169] Similar to Figure 8D, the 3D corneal center estimation module 716 simulates the corneal sphere 814b and corneal center of curvature 816b at a second position. The 3D corneal center estimation module 716 then checks whether the corneal sphere 814b properly reflects light to the glint position 854 from the light source 326. As shown in Figure 8D, the second position also does not match.

[0170] 8E, the 3D corneal center estimation module 716 can ultimately determine that the correct location of the corneal sphere is corneal sphere 814c and corneal center of curvature 816c. The 3D corneal center estimation module 716 verifies that the illustrated location is correct by checking that light from source 326 will properly reflect off the corneal sphere and be imaged by camera 324 at the correct location of flash 854 on image 852. Using this arrangement and the known 3D positions of light source 326, camera 324, and the camera's optical properties (such as focal length), the 3D corneal center estimation module 716 can determine the 3D location (relative to the wearable system) of corneal center of curvature 816.

[0171] The process described herein with respect to at least FIGS. 8C-8E may effectively be an iterative, iterative, or optimization process for identifying the 3D location of the user's corneal center. Accordingly, any of a number of techniques (e.g., iterative, optimization, etc.) may be used to efficiently and quickly filter or reduce the search space of possible locations. Furthermore, in some implementations, the system may include two, three, four, or more light sources, such as light source 326, some of which may be positioned at different locations, resulting in multiple photes, such as photes 854, located at different locations on image 852, and multiple light rays, such as ray 856, having different origins and directions. Such a design may improve the accuracy of 3D corneal center estimation module 716, as module 716 may seek to identify a corneal position that results in some or all of the photes and light rays being properly reflected between that individual light source and that individual location on image 852. In other words, in these embodiments, the position of some or all of the light sources may rely on the 3D corneal position determination (e.g., iterative, optimization, etc.) process of Figures 8B-8E. In some implementations, the system may determine a vector or ray (i.e., a 2D corneal center position) along which the center of the cornea resides before performing the optimization process. In such implementations, the 3D corneal center estimation module 716 may search only for corneal positions along such vectors, which may serve to provide computational and / or time savings when performing an optimization process or other process to determine an estimate of the center of corneal curvature. In at least some of these implementations, before determining such a vector, the system may first (i) define a first plane between the origin of the eye camera coordinate system 850, the first light source (e.g., light source 326a), and the first flash of light produced by the first light source (e.g., flash 854a), and (ii) define a second plane between the origin of the eye camera coordinate system 850, the second light source (e.g., light source 326b), and the second flash of light produced by the second light source (e.g., flash 854b).The system may then simply calculate the cross product of the first and second planes and determine the vector or ray along which the center of the cornea resides (i.e., the 2D corneal center location). Variations of the approach and other methods and configurations may also potentially be employed. K. Exemplary Wearable Device Configurations

[0172] 9A-E illustrate an example configuration of components of an example wearable device 2000 for capturing eye image data for use by the eye tracking module 614. For example, as illustrated in FIG. 9A, the wearable device 2000 may be part of a wearable system such as those described above with reference to FIGS. 2-4. The wearable device 2000 may include a left eyepiece 2010A and a right eyepiece 2010B. The left eyepiece 2010A may be capable of imaging a user's left eye, and the right eyepiece 2010B may be capable of imaging a user's right eye.

[0173] As shown in FIG. 9B , the left eyepiece 2010A may include one or more illumination sources 2022. Similarly, the right eyepiece 2010B may include one or more illumination sources 2024. For example, there may be four illumination sources 2022 and four illumination sources 2024. The illumination sources 2022 may be positioned within the left eyepiece 2010A and emit light toward the user's left eye 2012A. The illumination sources 2022 may be positioned so as not to obstruct the user's view through the left eyepiece 2010A. For example, the illumination sources 2022 may be positioned around the edge of the display within the left eyepiece 2010A so as not to obstruct the user's view through the display. Similarly, the illumination sources 2024 may be positioned within the right eyepiece 2010B and emit light toward the user's right eye 2012B. The illumination source 2024 may be positioned so as not to obstruct the user's view through the right eyepiece 2010B. For example, the illumination source 20204 may be positioned around the edge of the display in the right eyepiece 2010B so as not to obstruct the user's view through the display. The illumination sources 2022, 2024 may emit light in the visible or non-visible range. For example, the illumination sources 2022, 2024 may be infrared (IR) LEDs. Alternatively, the illumination sources may be positioned or configured differently.

[0174] 9B, the left eyepiece 2010A may include a left eye imaging system. The left eye imaging system may include one or more inward-facing cameras (2014, 2016). For example, the left eye imaging system may include a left eye tracking camera 2014 for the left eyepiece 2010A and a right eye tracking camera 2016 for the left eyepiece 2010A, located to the left and right of each other, respectively, and possibly to the left and right of the center of the left eyepiece, respectively. Similarly, the right eyepiece 2010B may include a right eye imaging system. The right eye imaging system may include one or more inward-facing cameras (2018, 2020). For example, the right eye imaging system may include a left eye tracking camera 2018 for the right eyepiece 2010B and a right eye tracking camera 2020 for the right eyepiece 2010B, located to the left and right of each other, respectively, possibly to the left and right of the center of the right eyepiece, respectively. One or more cameras in the left eye tracking system 2010A and one or more cameras in the right eye tracking system 2010B may be positioned within the wearable device 2000 to unobtrusively capture images of the user's eyes. Other configurations are possible.

[0175] The field of view of the imaging system for the left eyepiece 2010A may be capable of imaging all or a useful portion of the user's left eye 2012A (not necessarily imaging the right eye or a portion thereof useful for eye tracking) in many different eye posture positions. Similarly, the field of view of the imaging system for the right eyepiece 2010B may be capable of imaging all or a useful portion of the user's right eye 2012B (not necessarily imaging the left eye or a portion thereof useful for eye tracking) in many different eye posture positions. For example, a user may be able to move their eyes up to 50 degrees from the central line of sight in any direction during normal movement. The imaging systems may collectively be positioned to image substantially all of the user's eyes' full range of motion (e.g., 50 degrees) during their normal movement. Figure 9C illustrates an example field of view 2030 of the right eye tracking camera 2016 in the left eyepiece 2010A and an example field of view 2032 of the right eye tracking camera 2020 in the right eyepiece 2010B. Figure 9D illustrates an example field of view 2040 of the right eye tracking camera 2014 in the left eyepiece 2010A and an example field of view 2042 of the right eye tracking camera 2018 in the right eyepiece 2010B. Figure 9E illustrates how the fields of view 2030 and 2040 from the left eye tracking camera 2014 and right eye tracking camera 2016, respectively, in the left eyepiece 2010A can overlap to image substantially all of the user's left eye 2012A. 9E illustrates how the fields of view 2040 and 2042 from the left eye-tracking camera 2018 and the right eye-tracking camera 2020, respectively, of the right eyepiece 2010B may overlap to image substantially all of the image user's right eye 2012B. Variations are possible. For example, the number and locations of the cameras may be different. Other types of imaging systems may also be used. L. Example of Locating the Center of Rotation Using an Eye Tracking System

[0176] To simplify the eye tracking system (or the processes within the eye tracking module 614), it may be desirable to reduce the number of variables required to determine the center of rotation (CoR) of a human eye. Advantageously, reducing the number of variables used to determine the CoR can also improve eye tracking accuracy. For example, because the CoR may be used to determine a gaze vector for use in eye tracking, increased errors in the CoR may result in less accurate eye tracking. Errors in the CoR may result from errors introduced during the determination of variables used to calculate the CoR. For example, CoR calculation may involve extracting the pupil center and modeling the corneal sphere. Both of these processes may introduce error and contribute to inaccuracy. Therefore, it may be advantageous to extract the CoR using a limited number of variables.

[0177] Described herein are systems and methods for extracting CoR primarily or entirely from corneal data. Advantageously, for reasons similar to those discussed above, the system can improve the accuracy of eye tracking systems. For example, the system may require fewer assumptions and thus reduce the potential for introducing errors. In addition to, or as an alternative to, improved accuracy, the system can improve other aspects of eye tracking systems. For example, the system may rely on shorter eye exposure to an illumination source. Shorter eye exposure can reduce risks associated with prolonged eye exposure to an illumination source, reduce illumination power consumption, and provide high ambient light rejection. In another example, the system may not require a wide field of view. A reduced field of view requirement can allow for more flexibility in the hardware design of a wearable system.

[0178] In some examples, the center of rotation (CoR) of a human eye can be extracted from corneal data. FIG. 10 shows a graphical representation of an exemplary CoR extraction system 1000 that may be implemented by the eye tracking module 614. For example, a wearable system may use an illumination system comprising one or more illumination sources to generate two or more phosphenes on the cornea 1020 of a user's eye 1010. In various implementations, the illumination system comprises multiple distinct regions from which light is output. These regions may correspond to separate light emitters or light sources. A phosphene detection and labeling module 714 may extract the phosphene locations on the cornea 1020 of the eye 1010. As described below, a 3D corneal center estimation module 716 may determine an approximated corneal curvature 1018 based on the phosphene locations and calculate an estimated center 1012 of the approximated corneal curvature 1018. Different eye postures may provide different approximated corneal curvatures 1018 and associated estimated centers of corneal curvature 1012. The CoR estimation module 724 may determine an estimated CoR based on multiple estimated centers of corneal curvature 1012 by applying a surface to the estimated centers 1012 and determining a region 1016 of convergence or intersection of a set of surface normal vectors 1014 normal to the surface. The estimated CoR may be obtained from this region 1016, e.g., the estimated CoR may be at or within this region 1016.

[0179] Optionally, the CoR estimate may be further checked using the eye tracking module 614. For example, as described in more detail below, if the CoR has moved relative to the wearable device during use, a new measurement of the corneal center 1012 may be tested by measuring the distance between the newly calculated corneal center 1012 and a surface fitted to the set of calculated corneal centers 1012. If the distance is too large, the eye tracking module 614 may pause eye tracking or switch to a different method of determining the CoR or a different eye tracking method. In some embodiments, the switch may be temporary until enough data has been collected to reduce the overall error.

[0180] Advantageously, the CoR extraction 1000 may employ several assumptions. For example, the CoR extraction 1000 may assume that the phosphene extraction is accurate, that the geometry of the eye 1010 is known, that the radius of the cornea (or two radii in the case of corneal astigmatism) is known, or that the data was collected during normal or random movements of the user's gaze. M. Exemplary Eye Tracking Environment

[0181] As discussed above, the CoR may be determined from multiple estimated centers of corneal curvature 1012. For example, a surface may be fitted to the estimated center of corneal curvature 1012, and multiple surface normal vectors 1014 normal to this surface may be obtained. A region 1016 of convergence of the set of these surface normal vectors 1014 may be identified. An estimated CoR may be obtained from this region of convergence 1016, e.g., the estimated CoR may be at or within this region 1016.

[0182] To obtain multiple estimated centers of corneal curvature 1012, phosphenes may be produced on the eye using an illumination source and imaged by a camera as described above. FIG. 11 shows an example image of any on-eye phosphenes used by the eye tracking module to determine the estimated center of rotation. For example, as discussed above, the wearable system may include an imaging system. The imaging system may image the user's eye 1110 and produce eye image 1101. The wearable system may include one or more illumination sources 1102 with spatially distinct regions that output light. Thus, light from illumination source 1102 may produce one or more phosphenes 1104 on the user's eye 1110 that are reflections of these spatially distinct regions illuminating the light.

[0183] The imaging system of the wearable system may be part of an eye tracking assembly (e.g., as shown in FIGS. 9A-E). The imaging system may include one or more cameras. For example, the imaging system may include a single camera at a location 1106 associated with the user's eye 1110. In another embodiment, the imaging system may include multiple cameras that may be located at different locations associated with the user's eye 1110.

[0184] The illumination source 1102 can include one or more light sources, such as light emitting diodes (LEDs). The illumination source may emit light in the visible or invisible range (e.g., infrared (IR) light). For example, the illumination source 1102 can be an infrared (IR) LED. The illumination source 1102 can be part of an eye tracking assembly (e.g., as illustrated in FIGS. 9A-E).

[0185] The illumination source 1102 may produce one or more specular reflections 1104 on the cornea of ​​the user's eye 1110. The specular reflections 1104 may also be referred to as phosphenes. For example, there may be two illumination sources (1102A, 1102B). The illumination sources may be configured to produce two or more discrete phosphenes (1104A, 1104B) on the user's eye 1110. FIG. 11 shows an image of the user's eye with the phosphenes thereon. FIG. 11 also shows a view of the camera 1106 (represented by the origin of the coordinate system) with respect to the eye 1110 and the illumination sources 1102A, 1102B in their relative locations compared to the location of the eye 1110 and the phosphenes 1104A, 1104B thereon. N. Exemplary extraction of the vector along which the corneal center is located using a single camera

[0186] As discussed above, a camera at location 1106 may image flashes of light 1104A, 1104B produced by illumination sources 1102A, 1102B onto a user's eye 1110. In Figures 12A-D, a first plane 1220 can be determined that includes the location of the flash of light 1104A, the camera capturing an image of the flash of light at location 1106, and the illumination source 1102A that produced the flash of light. In particular, the module may determine the first plane 1220 that includes the first illumination source 1102A and the first flash of light 1104A. Similarly, as illustrated in Figures 13A-D, a second plane 1320 can be determined that includes the location of the flash of light 1104B, the camera capturing an image of the flash of light at location 1106, and the illumination source 1102B that produced the flash of light. In particular, module 716 may determine a second plane 1320 based on the second illumination source 1102B and the second flash of light 1104B. As illustrated in Figures 14A-C, module 716 may determine an intersection between the first plane 1220 and the second plane 1320. The intersection between the first plane 1220 and the second plane 1320 may define a vector 1410 that is oriented along where the corneal center is located. As shown in Figures 14A-C, this vector 1410 may also extend along a direction that includes the camera location 1106.

[0187] In some implementations, module 716 may determine first plane 1220 by determining a set of lines 1210, 1212, 1214 between first illumination source 1102A, first flash of light 1104A, and camera location 1106. As illustrated in FIG. 12A , module 716 may determine first line 1210 extending between camera location 1106 and a location in image plane 1101A of first flash of light 1104A that may be produced by first illumination source 1102A. As illustrated in FIG. 12B , module 716 may determine second line 1212 extending between camera location 1106 and the location of illumination source 1102A that produced first flash of light 1104A. 12C, module 716 may determine a third line 1214 projected between a location in image plane 1101A of illumination source 1102A and first flash of light 1104A. As shown in FIG. 12D, any two of these lines 1210, 1210, and 1214 may define a plane 1220 within which the corneal center may reside.

[0188] Similarly, in some implementations, module 716 may determine second plane 1320 by determining a set of lines 1310, 1312, 1314 between second illumination source 1102B, second flash of light 1104B, and camera location 1106. As illustrated in FIG. 13A, module 716 may determine a first line 1310 extending between camera location 1106 and a location in image plane 1101A of second flash of light 1104B that may be produced by second illumination source 1102B. As illustrated in FIG. 13B, module 716 may determine a second line 1313 extending between camera location 1106 and a location of second illumination source 1102B that produced second flash of light 1104A. 13C, module 716 may determine a third line 1314 extending between the location in image plane 1101A of second flash of light 1104B and second illumination source 1102B. As shown in FIG. 13D, lines 1310, 1310, and 1314 may define a plane 1320 within which the corneal center may reside.

[0189] However, in some implementations, the first plane 1220 can be determined directly from the locations of the first illumination source 1102A and the first flash of light 1104A and the camera location 1106, without necessarily separately defining the lines 1210, 1210, and 1214. Similarly, the second plane 1320 can be determined directly from the locations of the second illumination source 1102B and the second flash of light 1104B and the camera location 1106, without necessarily separately defining the lines 1310, 1310, and 1314.

[0190] Module 716 may identify an intersection between first and second planes 1220 and 1320. As illustrated in Figures 14A and 14B, the intersection of first plane 1220 and second plane 1320 may define vector 1410 that extends along a direction that may involve the origin of, or otherwise include, camera location 1106. As shown in Figure 14C, vector 1410 may point toward the corneal center location.

[0191] Module 716 may repeat the estimation process multiple times to generate one or more corneal vectors 1410. For example, module 716 may determine a first plane 1220 and use it to define a vector based on the first illumination source 1102A and the first flash of light 1104A with multiple different camera locations 1106. The camera locations 1106 can be varied relative to the user's eye 1110 (e.g., with respect to distance to the user's eye 1110, or horizontal or vertical position relative to the eye, or any combination thereof) or with respect to the location of the illumination source (1102A, 1102B). Module 716 may determine vectors 1410 for one or more of the camera locations 1106. Module 716 may then determine the corneal center from the intersection of two or more vectors, as described above. If two or more vectors do not intersect, the corneal center may be interpolated or otherwise extrapolated from the vector data. Additionally or alternatively, the eye tracking module 614 may collect and analyze more data to determine the corneal center.

[0192] The module 716 may repeat the estimation process while varying one or more parameters associated with the eye tracking environment 1100. For example, the module 716 may repeat the process with different camera locations or for different gaze directions of the user's eyes. The eye tracking module 614 may utilize gaze targets to ensure that the user maintains their eye posture while parameters are varied. For example, the eye tracking module 614 may estimate one or more vectors 1410 while the user directs their gaze toward the gaze targets while varying parameters such as the camera location 1106 or the location of the illumination source 1102. Additionally or alternatively, the eye tracking module 614 may estimate one or more vectors 1410 while the user naturally moves their gaze while using the wearable device. For example, the eye tracking module 614 may capture data associated with different parameters during natural movement of the user's eyes.

[0193] The iterative estimation process may result in multiple vectors 1410 pointing toward the corneal center associated with a particular eye posture. Module 716 may determine the area of ​​intersection or convergence of the multiple vectors 1410 to generate an estimated center of corneal curvature. O. Exemplary extraction of the vector along which the corneal center is located using multiple cameras

[0194] In various implementations, multiple cameras may be employed to image the eye, and images from the multiple cameras may be used to determine the center of corneal curvature of the eye. In particular, module 716 may determine vectors (1510, 1530) along which the corneal center may be located. Figures 15A-16C illustrate steps in an exemplary process for determining such vectors using multiple cameras. For example, as illustrated in Figure 15A, a first camera at a first location 1506 may image flashes 1504A, 1504B produced by illumination sources 1502A, 1502B on a user's eye 1501, and a second camera at a location 1526 may image flashes 1524A, 1524B produced by illumination sources 1522A, 1522B on the user's eye 1501. Module 716 may determine a first vector 1510 based on data associated with a first camera and illumination source 1502A, 1502B at location 1506 and may determine a second vector 1530 associated with a second camera and illumination source 1522A, 1522B at location 1526. As shown in FIG. 15B , module 716 may estimate the corneal center 1520 by determining the convergence or intersection between the first vector 1510 and the second vector 1530.

[0195] To obtain the first vector 1510, the module 716 may identify a first plane 1512 by determining a set of lines (not shown) between the first illumination source 1502A, the first flash location 1504A in the image plane 1503A, and the first camera at the first location 1506. The module 716 may determine a second plane 1514 by determining a set of lines (not shown) between the second illumination source 1502B, the second flash location 1504B in the image plane 1503A, and the second camera location 1506. The module 716 may determine the vector 1510 by determining the intersection between these first and second planes 1512 and 1514. The intersection of these planes 1512 and 1514 may define a vector 1510 with an origin at the camera location 1506 that points toward the location of the center of corneal curvature.

[0196] However, in some implementations, the first plane 1512 can be determined directly from the locations of the first illumination source 1502A, the first flash 1504A, and the first camera 1506, without necessarily separately defining one or more lines. Similarly, the second plane 1514 can be determined directly from the locations of the second illumination source 1502B, the second flash 1504B, and the first camera 1506, without necessarily separately defining one or more lines.

[0197] Module 716 may similarly determine a first plane 1532 by determining a set of lines (not shown) between the first illumination source 1522A, the first flash location 1524A in the image plane 1503B, and the first camera at location 1526. Module 716 may determine a second plane 1534 by determining a set of lines (not shown) between the second illumination source 1522B, the second flash location 1524B in the image plane 1503B, and the camera location 1526. Module 716 may determine a second vector 1530 by determining the intersection between these first and second planes 1532 and 1534. The intersection of planes 1532 and 1534 may define a vector 1530 with an origin at the camera location 1526, which may point toward the location of the center of corneal curvature. However, in some implementations, the first plane 1532 can be determined directly from the locations of the first illumination source 1522A, the first flash 1524A, and the second camera 1526, without necessarily separately defining one or more lines. Similarly, the second plane 1534 can be determined directly from the locations of the second illumination source 1522B, the second flash 1524B, and the second camera 1526, without necessarily separately defining one or more lines.

[0198] 15B , module 716 may determine the location of the center of corneal curvature based on these first and second vectors 1510 and 1530. For example, module 716 may determine the convergence or intersection 1520 of these vectors 1510 and 1530. The convergence or intersection 1520 may correspond to an approximate corneal center location. If vectors 1510 and 1530 do not intersect, the center of corneal curvature may be interpolated or otherwise extrapolated from the vector data. Additionally or alternatively, eye tracking module 614 may collect and analyze more data to determine the center of corneal curvature 1520.

[0199] 16A-16C illustrate another exemplary process for determining the center of corneal curvature using multiple cameras. As illustrated in FIG. 16A, the wearable system may have a set of shared illumination sources 1602A, 1602B that can be used in conjunction with multiple eye cameras. The shared illumination sources 1602A, 1602B may additionally or alternatively be separate sets of illumination sources associated with one or more cameras. The set of shared illumination sources 1602A, 1602B may produce flashes of light 1604A, 1604B, 1604C, 1604D on the user's eye.

[0200] 16B, module 716 may determine a set of planes using shared illumination sources 1602A, 1602B. For example, module 716 may determine a first plane 1630 by determining a set of lines (not shown) between a first illumination source 1602A, a first flash location 1604A in image plane 1503A, and a first camera at location 1506. Module 716 may determine a second plane 1632 by determining a set of lines (not shown) between a second illumination source 1602B, a second flash location 1604B in first image plane 1503A, and the first camera at location 1506.

[0201] However, in some implementations, the first plane 1630 can be determined directly from the locations of the first illumination source 1602A, the first flash 1604A in the first image plane 1503A, and the first camera 1506, without necessarily separately defining one or more lines. Similarly, the second plane 1632 can be determined directly from the locations of the second illumination source 1602B, the second flash 1604B, and the first camera 1506, without necessarily separately defining one or more lines.

[0202] Module 716 may determine a different first plane 1634 by determining a set of lines (not shown) between the first illumination source 1602A, the first flash location 1604C in the image plane 1503B, and the second camera at location 1526. Module 716 may determine a separate different plane 1636 by determining a set of lines (not shown) between the second illumination source 1602B, the second flash location 1604D in the second image plane 1503B, and the second camera location 1526.

[0203] However, in some implementations, a different first plane 1634 can be determined directly from the locations of the first illumination source 1602A, the first flash 1604C in the image plane 1503B, and the second camera 1526, without necessarily separately defining one or more lines. Similarly, a different second plane 1636 can be determined directly from the locations of the second illumination source 1602B, the second flash 1604D, and the second camera 1526, without necessarily separately defining one or more lines.

[0204] 16C , module 614 may determine the intersection between planes 1630 and 1632 to determine vector 1610. The intersection of planes 1630 and 1632 may define vector 1610, with its origin at camera location 1506, which may point toward the corneal center location. Similarly, module 614 may determine the intersection between planes 1634 and 1636 to determine vector 1630. The intersection of planes 1634 and 1636 may define vector 1630, with its origin at camera location 1526, which may point toward the corneal center location.

[0205] 16C , module 716 may determine the location of the center of corneal curvature based on vectors 1610 and 1630. For example, module 716 may determine the convergence or intersection 1620 of first and second vectors 1610 and 1630. The convergence or intersection 1620 may correspond to the approximate location of the center of corneal curvature. If the first and second vectors 1610 and 1630 do not intersect, the center of corneal curvature may be interpolated or otherwise extrapolated from the vector data. Additionally or alternatively, eye tracking module 614 may collect and analyze more data to determine the center of corneal curvature.

[0206] Module 716 may repeat the estimation process for multiple gaze directions of the user's eyes. For example, the wearable system may display one or more gaze targets toward which the user can direct their gaze. The eye tracking module 614 may estimate one or more vectors 1410 while the user directs their gaze toward the gaze targets. Additionally or alternatively, the eye tracking module 614 may estimate one or more vectors 1410 while the user naturally moves their gaze while using the wearable device. For example, the eye tracking module 614 may capture data associated with different parameters during natural movement of the user's eyes. As described below, data captured at different eye postures or gaze vectors of the user's eyes may be used to calculate multiple corneal centers, which may be used by the CoR estimation module 724 to estimate the CoR. P. Estimating the center of rotation

[0207] The center of rotation (CoR) estimation module 724 may determine an estimated center of rotation based on an estimated center of corneal curvature 1012. For example, the CoR estimation module 724 may fit a surface to one or more estimated corneal centers of curvature and determine a set of surface normal vectors normal to the fitted surface. The surface normal vectors may converge or intersect at a point or region that may correspond to the estimated CoR.

[0208] To determine the surface, module 614 may analyze multiple eye images. For example, the wearable system may image the user's eye 1501 (e.g., with an inward-facing imaging system 462) while the user's eye 1501 is in one or more eye postures. In some implementations, module 614 may prompt one or more eye postures or gaze directions through the display of gaze targets on the wearable device's display. Additionally or alternatively, module 614 may collect data associated with one or more eye postures that occur naturally during use of the wearable device.

[0209] 17A and 17B, module 614 may determine multiple corneal centers of curvature 1712 based on data collected by the wearable system while the user's eye is in one or more eye postures. For example, module 614 may perform the corneal curvature center estimation process using one or more cameras as part of module 716, as described above, multiple times (e.g., for different gaze directions or eye postures of the user's eye 1501). The output of the corneal center estimation process of module 716 may include multiple estimated corneal centers of curvature 1712.

[0210] The multiple corneal centers of curvature 1712 may lie within a region 1710 in three-dimensional (3D) space. The region 1710 may fall within the corneal sphere 1022. Without subscribe to any particular scientific theory, the multiple corneal centers of curvature 1712 may approximately fit within the region 1710 according to the shape of the corneal curvature 1018. For example, the multiple corneal centers of curvature 1712 may fit within the region 1710 to outline a shape that is approximately parallel to or substantially identical to the shape of the cornea 1020. If the cornea is approximately spherical, the multiple corneal centers 1712 may approximately follow the corneal curvature 1018 at a distance that approximately corresponds to the radius of the cornea. In the case of astigmatism (or if the cornea is not approximately spherical), the multiple corneal centers 1712 may approximately follow the corneal curvature 1018 at a distance that approximately corresponds to one or more radii of the corneal geometry.

[0211] In various implementations, module 614 may determine whether multiple corneal centers 1712 fall within a determined tolerance of the expected distance from the corneal surface 1022 to the center 1022 of the corneal sphere. For example, the corneal sphere 1022 may be spherical or astigmatic (e.g., have a geometry other than a spherical shape). The expected distance may correspond to the distance to the center of the geometry of the corneal sphere 1022. For example, if the corneal geometry is spherical, the expected distance may be the radius of the corneal sphere 1022. If the corneal centers 1712 fall outside the determined tolerance, module 614 may reduce the contribution of outliers in further analysis. For example, module 614 may exclude the outlier data points from further analysis. Additionally or alternatively, if a threshold number of corneal centers 1712 fall outside the determined tolerance, module 614 may stop analysis until further data is obtained or switch to a different method of determining the center of rotation.

[0212] As shown in FIG. 17B , module 724 may fit a 3D surface 1714 to the multiple corneal centers 1712. Module 724 may fit the 3D surface using, for example, regression analysis. Module 724 may determine the fit utilizing a suitable surface or curve fitting technique. Module 724 may fit the corneal centers 1712 to a low-order polynomial 3D surface 1714 using, for example, polynomial regression. In another example, module 724 may apply a geometric fit to the corneal centers 1712 (e.g., a total least squares fit). In some examples, the surface 1714 may have a similar curvature to the corneal curvature 1018. In other examples, the surface 1714 may have a different shape than the corneal curvature 1018.

[0213] Module 724 may determine a set of surface normal vectors that are normal to surface 1714. FIG. 18A illustrates an example calculation 1800 of CoR (or eyeball center "EBC") using surface normal vectors 1814. For example, module 716 may determine a set of estimated corneal centers 1812. Module 724 may fit surface 1714 (as shown in FIG. 17B) to the estimated corneal centers 1812. Module 724 may then determine one or more surface normal vectors 1814 that are normal to surface 1714. The surface normal vectors 1814 may result from the estimated center of corneal curvature 1812. For example, module 724 may determine a surface normal vector 1814 for each estimated center of corneal curvature 1812 used to determine surface 1714. Fewer surface normals may be used in some implementations. Additionally or alternatively, the surface normal vector 1814 may originate from other points on the surface 1714 .

[0214] Module 724 may determine a region 1802 of convergence of surface normal vectors 1814. For example, as illustrated in inset 1801 of FIG. 18A , some or all of the surface normal vectors 1814 may converge or intersect within region 1802 of 3D space. Region 1802 of 3D space may be a point of intersection or a volume of 3D space (e.g., volume 1920 in FIGS. 19C and 19D ) where the normal vectors intersect and / or converge. The volume of 3D space may be centered around the central point of intersection or convergence of the surface normal vectors 1814. The volume of 3D space may be large enough to encompass most of the points of intersection.

[0215] The region of convergence 1802 may include different areas of convergence or intersection corresponding to different gaze directions or eye postures. For example, the region of convergence 1802 may include a sub-region 1820 corresponding to a first gaze direction (e.g., downward gaze) and a sub-region 1822 corresponding to a second gaze direction (e.g., upward gaze). In some examples, the sub-regions 1820, 1822 may correspond to approximate CoRs associated with regions of a display of a wearable device. For example, the first sub-region 1820 may correspond to an upper region of the display, and the second sub-region 1822 may correspond to a lower region of the display.

[0216] Module 724 may determine the CoR by analyzing the region of convergence 1802. For example, module 724 may determine the CoR by determining the mode or median of the convergence or intersection of vectors 1814. Additionally or alternatively, module 724 may first determine gaze-based convergence or intersection points, such as the mode or median of the convergence or intersection points of vectors 1814 within subregions 1820, 1822, and then determine the CoR by determining the mode or median based on those gaze-based convergence or intersection points. Additionally or alternatively, module 724 may perform a different analysis of the convergence or intersection points to determine the CoR. For example, module 724 may utilize a machine learning algorithm to determine the CoR.

[0217] In some examples, variations in the calculated corneal center of curvature may result in a wider region of convergence 1824, as opposed to a single point of intersection. FIG. 18B illustrates an example CoR calculation 1803 using region 1824. For example, the calculated corneal center of curvature 1832 may be noisy relative to the fitted 3D surface 1830. A noisy corneal center 1832 may result in region 1824 within which the CoR or eyeball center (EBC) is likely based on the intersection of a vector (not shown) with its origin at the corneal center 1832. In some implementations, module 614 may use region 1824 in calculating gaze direction. For example, module 614 may determine the CoR as the center of region 1824 or some other location within or on region 1824 or based otherwise thereon.

[0218] In various implementations, module 724 may select a portion of the estimated corneal center 1910 and determine the CoR. FIGS. 19A-1 and 19A-2 illustrate an example surface 1912 fitted to a portion of the estimated corneal center 1910, which may be selected using a data reduction process. FIGS. 19B-1 and 19B-2 show an example vector 1916, which may be normal to the surface 1912. The vector 1916 may occur at the selected estimated corneal center 1910. FIGS. 19C-1 and 19C-2 illustrate an estimated CoR region 1920 based on the points of convergence or intersection of the vectors 1916. As shown in FIGS. 19D-1 and 19D-2, where module 724 does not select the corneal center 1910 for fitting to the surface 1912, many of the vectors 1922 may not converge or intersect within the region 1920.

[0219] In various implementations, module 724 may select estimated corneal centers 1910 based on the determined region of convergence of normal vectors 1916. For example, module 724 may determine a large region within which normal vector 1922 intersects. In some implementations, if the large region has a volume that exceeds a threshold volume, module 724 may determine a smaller set of corneal centers 1910 and use it to determine the CoR. In one implementation, the threshold volume may include a preferred volume for determining the CoR that is associated with a threshold accuracy of eye tracking based on its CoR. For example, a volume that is 30 percent of the user's eye volume may be associated with an 80% decrease in accuracy in eye tracking. If the determined volume exceeds the threshold volume, module 724 may select a smaller set of corneal centers 1910 based on any number of suitable data selection criteria, as described below.

[0220] Additionally or alternatively, module 724 may select an estimated corneal center 1910 for analysis using any number of data reduction processes, such as a machine learning algorithm or a filtering process. For example, module 724 may filter data to eliminate outliers. The filtering may include determining a confidence score associated with a given corneal center 1910 and selecting the corneal center 1910 based on the confidence score. In some embodiments, the confidence score may be determined based on the deviation of the corneal center of curvature 1910 from a secondary calculation or the determination of the corneal center of curvature 1910 or surface 1912. In some embodiments, the confidence score may be based on the location of the corneal center of curvature 1910 relative to the fitting surface 1912 (e.g., the deviation of the corneal center 1910 from the fitting surface 1912). In some embodiments, the confidence score may be determined based on the error calculated within the scintillation extraction utilized to determine the corneal center of curvature 1910. For example, glint extraction may have high error if there is error in the eye image that is analyzed to extract the glint (e.g., due to blur, obstructions in the image, distortion, or other noise sources). Q. Example applications of rotational extraction of the center of corneal curvature

[0221] 20 illustrates an example center of rotation extraction process 2100 that may be implemented by the eye tracking module 614. For example, the center of rotation extraction process 2100 may include one or more corneal center estimation processes 2108, an apply block 2116, a vector determination block 2118, a convergence or intersection determination block 2120, and a center of rotation determination block 2122.

[0222] The module 614 may implement several blocks as part of one or more corneal center estimation processes 2108. For example, the corneal center estimation process 2108 may include an image receiving block 2110, a phosphene determination block 2112, and a corneal center determination block 2114.

[0223] In the image receiving block 2110, the module 614 can receive one or more images of the user's eye. The images can be obtained from an imaging system associated with a wearable device worn by the user. For example, the wearable device can be a head-mounted display including a left eyepiece 2010A and a right eyepiece 2010B with an imaging system including inward-facing cameras 2014, 2016, 2018, and 2020, as illustrated in FIGS. 9A-9D . The module 614 can optionally analyze the image for quality. For example, the module 614 can determine whether the image passes a quality threshold. The threshold can include metrics for image quality related to blur, obstructions, unwanted flashes, or other quality metrics that can affect the accuracy of the center of rotation analysis. If the module 614 determines that the image passes the image quality threshold, the module 614 may use the image in further analysis.

[0224] In a flash determination block 2112, module 614 may analyze the image received from block 2110 and determine the location of one or more flashes of light within the image. As described above with reference to Figures 12A-16C, the flash locations may correspond to the location of one or more flashes of light produced by one or more illumination sources within the image plane. Additionally, or alternatively, the flash locations may correspond to the location of one or more flashes of light produced by one or more illumination sources within the user's eye coordinate frame. Flashes of light can also be acquired with respect to different cameras and / or different camera locations.

[0225] In corneal center determination block 2114, module 614 can analyze the glint location and determine an estimated center of corneal curvature. As described above with reference to Figures 12A-16C, the determination can involve determining a vector along which the center of corneal curvature lies based on the glint, illumination source, and camera location. The determination can also involve determining an estimated center of corneal curvature based on the intersection location of one or more of those vectors.

[0226] Additionally or alternatively, module 614 may perform blocks 2110, 2112, and 2114 multiple times. For example, module 614 may perform blocks 2110 through 2112 and 2114 multiple times for each eye image or set of eye images to calculate one or more centers of corneal curvature. In another example, module 614 may perform blocks 2110, 2112, and 2114 for multiple eye postures or conditions. For example, module 614 may receive images of the user's eye at different eye postures or different gaze directions. Additionally or alternatively, module 614 may receive images of the user's eye using different camera conditions, such as camera distance from the user's eye, vertical or horizontal location relative to the user's eye, or any combination thereof, which may provide different camera viewpoints and / or different cameras with different locations and / or viewpoints. As described above, the wearable device can prompt the user to engage in different eye postures by causing the display of gaze targets in different regions of the display. For example, the wearable device may display five gaze targets corresponding to an upper central region of the display, a lower central region of the display, a central region of the display, a left of the central region of the display, and a right of the central region of the display. The five gaze targets may correspond to five different eye postures of the user. Additionally or alternatively, the wearable system may capture different eye postures that occur during natural movement of the user's eyes while using the wearable system.

[0227] Module 614 may continue collecting data until threshold criteria are met. For example, threshold criteria may include an error tolerance, a number of data points, or a minimum, threshold, or target variety of eye postures. In some embodiments, the error tolerance may correspond to a minimum, threshold, or target number of calculated corneal centers of curvature, a minimum, threshold, or target error level achieved within the deviation of the corneal center of curvature from the calculated center of rotation or fitted surface, some combination thereof, or the like. Other approaches are also possible.

[0228] In block 2116, module 614 may fit a surface to one or more corneal centers output from process 2108. As described above with reference to Figures 17A and 17B, module 614 may perform a regression analysis to generate the fitted surface. For example, module 614 may perform a polynomial regression to generate a low-order polynomial 3D surface for the corneal centers. However, other techniques may also be used.

[0229] In block 2118, module 614 may determine a surface normal vector from the surface fit in block 2116. As described above with reference to FIG. 18A, module 614 may determine a surface normal vector that is normal to the fitted surface, originating at or passing through the corneal center of curvature. Additionally, or alternatively, module 614 may determine a surface normal vector that originates from any point on the fitted surface. Other approaches are also possible.

[0230] In block 2120, module 614 may determine a region of convergence of the surface normal vectors determined in block 2118. As described above with reference to Figures 19A-19E, module 614 may determine a point or region of convergence of the surface normal vectors. The region of convergence may be a volume in space within which a substantial portion of the surface normal vectors converge and / or intersect. The point or region of convergence may approximately correspond to or help estimate the center of rotation of the user's eyes.

[0231] At block 2122, module 614 may determine a center of rotation based on the region of convergence determined from block 2120. The center of rotation may, for example, be at, within, or on the region of convergence. Other locations may also be determined for the center of rotation based on the region of convergence. In some implementations, as described above, module 614 may analyze the region of convergence with respect to threshold criteria (e.g., error). If module 614 determines that the region of convergence does not meet the threshold criteria (e.g., with respect to error and / or volume), module 614 may not output a center of rotation. If module 614 determines that the region of convergence meets the threshold criteria, module 614 may determine that the center of rotation is the center of the region of convergence. R. Exemplary eye tracking process using the center of corneal curvature for center of rotation extraction

[0232] 21 illustrates an example eye tracking process 2200 that may use the process 2100 for determining the center of corneal curvature (e.g., as described above with reference to FIG. 20) for center of rotation extraction. Process 2200, in this example, may include a center of rotation determination block 2210, an error determination block 2212, a threshold determination block 2214, an alternative eye tracking block 2216, and a corneal eye tracking block 2218.

[0233] In a center of rotation determination block 2210, the module 614 can determine the center of rotation using the corneal data. For example, the module 614 may determine the center of rotation using process 2100 described above with reference to FIG. 21 . In an error determination block 2212, the module 614 can determine an error associated with the center of rotation from block 2210. In block 2214, the module 614 can analyze the error from block 2212 and determine whether it exceeds a threshold error value. In some implementations, the threshold error value may correspond to a value associated with a deviation (e.g., a maximum or threshold deviation) of the center of rotation from an expected value. In some implementations, the expected value may include a center of rotation based on a different center of rotation determination process, an expected center of rotation based on ocular geometry, an average center of rotation across a population of users, or another suitable center of rotation value location. Other thresholds may also be used. If the error exceeds the threshold, the module 614 may utilize an alternative eye tracking or center of rotation estimation method in block 2216. If the error does not exceed the threshold, the module 614 may utilize the calculated center of rotation from block 2210 in block 2218 . S. Determining the 3D location of the center of the cornea using an aspheric corneal model

[0234] In most eyes, the cornea is not perfectly spherical, but rather is spheroidal. Figure 22A illustrates a schematic perspective view of an eyeball 2230. As shown, the cornea 2232 has an aspherical surface with a curvature that gradually decreases (e.g., the radius of curvature increases) from the corneal apex 2233 toward the periphery 2236 between the cornea 2232 and the sclera 2234. Figure 22B illustrates a 2D cross-sectional view of the eye, showing the cornea 2232, sclera 2234, iris 2238, pupil 2245, and natural lens 2240. While the spherical surface 2242 may be a very accurate approximation of the curvature of the corneal surface 2232 near the corneal apex 2233 toward the boundary 2236 between the sclera 2234 and the cornea 2232, the actual curvature of the cornea falls significantly below the curvature of the spherical surface used in some spherical corneal models. As discussed above, in various implementations, the corneal center of curvature (corneal center) may be one of the input parameters to the light field rendering controller 618 (see FIGS. 7A and 7B ), and therefore, its accuracy may directly affect the orientation and / or location of the image rendered by the head-mounted display (HMD). Furthermore, the corneal center is a parameter that may be used in estimating the optical axis and / or pupil center of the eye. In various methods and systems, the optical axis and / or pupil center may potentially be used to estimate the center of rotation (CoR) of the eye, which may be one of the input parameters to the light field rendering controller 618 in some cases. Thus, discrepancies between the estimated and actual location of the corneal center can potentially result in rendering an image that is not perceived as intended by the wearer of the HMD.

[0235] In some implementations, the center of corneal curvature (corneal center of curvature) or the center of the cornea refers to the center of curvature of a portion of the cornea or the center of curvature of a spherical surface that coincides with a portion of the surface of the cornea. For example, in some implementations, possibly with respect to an aspherical model such as the spheroid model of the eye discussed below, the center of corneal curvature or the center of curvature of a spherical surface that coincides with a portion of the surface at the corneal apex 2233. The corneal center may also refer to the center of a surface, such as a sphere, that approximately coincides with the shape of the cornea, the shape of the surface of the cornea, the shape of a portion of the cornea, or the shape of a portion of the surface of the cornea. Similarly, the corneal center may also refer to the center of an aspherical surface, such as an aspherical spheroid, that approximately coincides with the shape of the cornea, the shape of the surface of the cornea, the shape of a portion of the cornea, or the shape of a portion of the surface of the cornea.

[0236] As discussed above, the corneal center may be estimated using the locations of two or more phosphenes on one or more images captured by one or more eye cameras (eye tracking cameras). The phosphenes may be generated by specular reflection of light generated by two or more light sources (e.g., IR LEDs) affixed to the HMD frame. Using the known positions of the light sources and the measured positions of the one or more phosphenes relative to a coordinate system (e.g., the coordinate system of the eye cameras) as inputs, the processing module can estimate the corneal center based on a corneal model through a set of instructions stored in the non-transitory memory of the HMD. In some methods described above, a spherical corneal model is used to estimate the corneal center.

[0237] Some methods may use the locations of the phosphenes, eye cameras, and light sources to generate two or more corneal vectors pointing toward the corneal center, and then determine the area of ​​intersection or convergence of the generated corneal vectors to estimate the center of corneal curvature. For example, the corneal vectors may be generated using images captured by one camera and two light sources based on the procedure described above with reference to FIGS. 11-14. In other examples, the corneal vectors may be generated using images captured by two eye cameras and four light sources based on the procedure described with reference to FIG. 15. In yet other examples, the corneal vectors may be estimated using images captured by two cameras and two shared light sources based on the procedure described with reference to FIG. 16. In various implementations, the method used to calculate the corneal vectors provides an estimate of the location of the corneal center based on the assumption that the phosphenes are generated by specular reflection from the spherical corneal surface.

[0238] Some additional methods may also estimate the corneal center based on a spherical corneal model using the location of the phosphene on a captured image of the eye. For example, an algorithm may be used to find the center of a reflective spherical surface that, in response to illumination by a light source with a known location, produces a phosphene image that overlaps with the one that appears on the captured image. Examples of corneal center estimation procedures based on such methods, which may use two or more light sources and a camera, are described above with respect to Figures 8A-8E and in US2019 / 0243448A1 (incorporated herein by reference in its entirety).

[0239] However, using any of these methods, which assume the cornea has a spherical shape, can potentially result in an erroneous or at least partially incorrect or less accurate estimated corneal center (center of corneal curvature). Figure 22C, for example, illustrates how the law of reflection can be used to calculate the center of curvature for an axially symmetric reflecting surface (e.g., the surface of the cornea) based on the locations of two light sources 2220 / 2221 and the locations of the resulting light scintillations 2224 / 2225 on the image plane 2222 of the eye camera. In this example, the two light sources are equidistant from the axis of symmetry of the corneal surface. As illustrated by the figure, when the corneal surface is assumed to have a spherical shape 2242, the location of the estimated corneal center 2246 differs from the corneal center 2248, which would be estimated if the corneal surface were assumed to have an aspherical spheroidal shape 2244. In other words, when two images 2224 / 225 are generated as a result of two light sources 2220 / 2221 illuminating an axially symmetric reflective surface, the estimated center of curvature (e.g., the intersection between the normal to the surface at the point of incidence and the surface's axis of symmetry) for at least a particular portion of the surface potentially depends on the assumed surface shape (e.g., a spherical or aspherical spheroid or other aspherical shape). In the example shown in FIG. 22C , the magnitude of the difference between the two estimated values ​​of the corneal center of curvature 2246 / 2248 is greater when the phosphene is generated from specular reflection from a region of the cornea farther from the corneal apex 2233. Given the fixed locations of the light sources and eye cameras on the HMD frame and the fact that the wearer's gaze direction is constantly changing, it may not be practical to maintain a configuration that provides a phosphene image generated from specular reflection from a region of the cornea closer to that apex (to reduce or minimize the estimation error) at all times. As a result, in many configurations and scenarios (e.g., measurements at different gaze directions using different combinations of available light sources and cameras), estimated corneal center locations based on methods that rely solely on spherical eye models may not provide as accurate estimates of the corneal center as methods that employ aspherical models of the cornea.

[0240] Using a model that accounts for the aspherical shape of the cornea can improve the accuracy of estimated eye parameters and therefore the overall accuracy of the eye tracker. Specifically, estimation based on an aspherical model (e.g., an aspherical spheroidal model) can improve the accuracy of gaze tracking, corneal center, and CoR calculations. Advantageously, in some implementations, such a model can improve the accuracy of the eye tracker, potentially without the need for user-specific calibration. However, some various implementations include user-specific calibration, potentially further improving accuracy.

[0241] Unlike spherical corneal models, various aspherical models of the cornea, such as aspherical spheroidal models of the cornea, do not offer the benefit of producing a closed-form solution to the corneal center determination problem. The various methodologies discussed herein employ approaches and procedures for estimating the 3D location of the corneal center based on aspherical models, resulting in improved accuracy. The disclosed methodologies described below may include computationally efficient procedures for estimating the 3D location of the corneal center in HMD systems using a single eye camera and using two eye cameras, such as those described above. See also US 2019 / 0243448 A1 (incorporated herein by reference in its entirety). Spheroidal eye model

[0242] In some example methods and systems discussed herein, the spheroidal eye model may use, for example, a surface of revolution described by one or both of the following equations as an estimate of the shape of the user's cornea: [ka]

[0243] where R is the radius at the corneal apex 2303 / 2233, the Z-axis is the rotation axis of the spheroid and is also the optical axis of the cornea, and Q is an asphericity or conic parameter that modifies the shape of the ellipsoid in the XZ or YZ plane. The magnitude of R may have a mean of 7.8 mm (e.g., for an average adult user) but may vary from this value. The distribution of R magnitudes may approach a normal distribution, with a mean value of 7.8 mm and a standard deviation of 0.26 mm, for example, for an adult with emmetropia.

[0244] FIG. 23A shows equation (1A) plotted in the X-Z plane (Y = 0) for several values of Q. The surface defined by equation (1A) is rotationally symmetric (a rotational ellipsoid) about the Z-axis 2306, and thus, for a given value of R and different values of Q, the profile of such a surface in the Y-Z plane will be similar to that shown in FIG. 23A. In addition, the cross-section of the surface formed by equation (1A) in the X-Y plane will be circular. Values of Q from 0 to -1 (e.g., 0 > Q > -1) result in elliptical-shaped cross-sections 2314a and 2314b such as from an oblong rotational ellipsoid, while values of Q from 0 to +1 (e.g., 0 < Q < +1) result in elliptical-shaped cross-sections 2314c and 2314d such as from a flattened rotational ellipsoid. In FIG. 23A, the value for Q of +1.0 is shown to result in a parabolic 2310 cross-section, while the value for Q of +2.0 produces a hyperbolic 2308 cross-section. When Q is equal to zero, equation (1A) describes a sphere 2312 with radius R centered at Z = R, and the rotational ellipsoid model is scaled to the sphere model. A circular cross-section is thus shown in FIG. 23A for Q = 0. The parameters R and Q vary for different rotational ellipsoid models, resulting in different values for the distance between the corneal center 2218 and the corneal apex 2233 and different profiles (e.g., spherical, oblong, or flattened elliptical profiles). For example, in the well-known Arizona eye model, the corneal shape is based on an oblong rotational ellipsoid with R = 0.78 mm and Q = -0.25. FIG. 23B shows equation (1A) plotted in the X-Z plane (Y = 0) for Q = 0 and Q = -0.25, providing a comparison between the cross-sectional profiles of the cornea based on a spherical model and a more realistic aspherical rotational ellipsoid model (in this case, the Arizona rotational ellipsoid model). In FIGS. 23A and 23B, the origin of the coordinate axes 2303 is at the apex 2233 of the cornea 2232 (for both values of Q). As shown in FIG. 23B, the spherical cornea 2319 and the aspherical rotational ellipsoid cornea 2315 reflect a single incident beam 2317 in two different directions (assuming the apexes of the different-shaped corneas overlap).A comparison between the trajectories of ray 2320 reflected from a spherical cornea and ray 2322 reflected from an aspherical spheroidal cornea shows that, given the distance between the eye and the eye camera, the difference between the location of the phosphene image generated by these rays can be measurably different. As a result, the corneal center 2316 estimated based on the phosphene generated by reflection from a spherical cornea will likely differ from the corneal center 2318 estimated based on the phosphene generated by reflection from an aspherical spheroidal cornea. As discussed herein, for a given corneal radius R, an aspherical spheroidal model may be used to estimate the corneal center using one camera and at least two light sources. However, in addition, with two cameras, the corneal center can be estimated using two light sources without knowing the value of the corneal radius R.

[0245] Because normal corneas often exhibit astigmatism (e.g., the corneal radius of curvature is larger in the horizontal than in the vertical meridian), in some embodiments, the aspheric model may also take into account that the surface representing the cornea may not be rotationally symmetric about the Z-axis. For example, an astigmatic corneal surface may be a biconic surface having a conic profile in the XY plane and also a conic profile in the YZ plane that is different from and independent of the conic profile in XZ. The equation for such a biconic surface may be written as follows: [ka]

[0246] Equation 1C represents a general biconic surface, which can be used to model the corneal shape for most eyes, whether emmetropic, myopic, hyperopic, or astigmatic. (R x, Q x ) and (R y ,Q y ) define the radial and conic parameters of the corneal surface in the horizontal and vertical dimensions, respectively. R measured for different eyes x and R yThe distribution of Q measured for different eyes may be the same distribution as R (used in Equation 1A or 1B), which may have, for example, a mean value of 7.8 mm and a standard deviation of 0.26 mm. x and Q y The distribution of σ can be the same as Q (used in Equation 1A or 1B), which may have, for example, a mean of -0.26 and a standard deviation of 0.18. When the model is used to represent an astigmatic corneal surface, the surface defined by Equation 1C can be rotated (e.g., from 0 to 180 degrees) about the optical axis (Z-axis) to align with the astigmatism axis of the corneal surface. Thus, four independent t parameters may be required to define the shape of a general biconic surface, and a fifth independent parameter may be required to align the biconic surface with the astigmatism axis of the cornea.

[0247] In yet another embodiment, the astigmatic corneal surface may be modeled as a non-spheroid having a conic profile in the XY plane and also a different conic profile in the YZ plane (potentially not independent of the conic profile in XZ). The equation for such an ellipsoid may be written as follows: (X 2 / Q1 2 )+(Y 2 / Q2 2 )+[(Z-Q3) 2 / Q3 2 ]=1 (1D)

[0248] This defines an ellipsoid with one of its vertices (the corneal apex) located at Z = 0. Here, Q1, Q2, and Q3 are the semi-axes of the ellipsoid that determine the shape of the ellipsoid, and whose values ​​may be provided by the eye model.

[0249] Note that equations 1B (or 1A) and 1D can be special cases for the general biconic surface defined by equation 1C. A general biconic surface is a surface with a radius R x =R y = R and Q x =Qy = Q, it becomes an ellipsoid of revolution, and Rx = Q1 2 / Q3, Ry=Q2 2 / Q3, Q x =(Q1 2 / Q3 2 )-1, and Qy=(Q2 2 / Q3 2 )-1, it is an ellipsoid. In some embodiments, the fact that a non-spheroid has only three independent parameters may reduce the computational complexity when estimating the center of corneal astigmatism. Determining the 3D location of the corneal center using a monocular camera and an aspheric model

[0250] In some embodiments, an aspheric eye model can be used to estimate the corneal center based on the measured positions of several phosphenes on one or more images captured by a single eye camera. The phosphenes can be produced by specular reflection of light emitted by several light sources affixed to the HMD frame. The light sources can have known locations, e.g., known coordinates associated with the position of the light emitter in a coordinate system (e.g., the eye camera coordinate system). Figure 11, for example, illustrates two phosphenes 1104A / 1104B on an image 1110 produced by two light sources.

[0251] In some such examples, the number (e.g., minimum number) of flashes, and therefore light sources, to provide an estimate of the corneal center may be calculated using the number of unknown parameters in the model and the number of constraints imposed by the aspherical (e.g., aspherical spheroid) model, the camera location, and the light source location. Assuming that the corneal radius (R) and conic parameter (Q) at the apex of a specific eye model (e.g., from the Arizona Eye Model) are known, determining the three-dimensional location (e.g., the position coordinate of the corneal center) of the corneal center within a given coordinate system (e.g., the eye camera coordinate system) may involve calculating three parameters, namely, CX, CY, and CZ (the coordinates of the corneal center). However, an intermediate step in the corresponding calculation may also involve the orientation of the spheroid, defined by pitch and yaw parameters, about its axis of symmetry (e.g., the Z-axis in FIG. 23 ) measured relative to the same coordinate system. These two intermediate parameters are used because the relationship between the location of the phosphene on the image and the corneal center (the coordinates of the light source for given values ​​of R, Q) can be defined based on the specular reflection of the light rays generated by the light source from the corneal surface (and therefore can be affected by its orientation). In some examples, the value of R can be 7.8 mm and the value of Q can be −0.25 (e.g., from the Arizona eye model). In addition, the three-dimensional location of the phosphene on the corneal surface (GX, GY, and GZ, which correspond to the point where the light is reflected onto the corneal surface) can be estimated as well.

[0252] Therefore, using each flash in the estimation may add three more unknown parameters. As a result, the total number of unknowns may be (5 + 3) × N G , where N G is the total number of flashes used in the estimation. In some embodiments, the constraints are determined by three relationships: 1) the relationship between the flash locations (GX, GY, and GZ), the camera location, and the light source location. This relationship may result in two constraints: 2) the relationship between the flash locations (GX, GY, and GZ) and the corneal center location (CX, CY, and CZ). This relationship may result in one constraint: 3) the relationship between the flash locations (GX, GY, and GZ) and the camera location. This relationship results in two constraints. In conclusion, 5 × N G constraints may be used to estimate (5 + 3) × N G unknowns, which in some implementations results in a number of flashes greater than two. However, other variations are also possible. For example, the number of flashes and the number of light sources may be greater or less.

[0253] 24 is a block diagram illustrating an iterative procedure that can be used to estimate the location of the center of the cornea (e.g., a three-dimensional location such as an x, y, z location described by one or more coordinates such as x, y, z or r, θ, φ relative to a reference frame) based on an aspheric spheroidal corneal model using one or more images captured by potentially only one eye camera while one or more potentially multiple light sources affixed to the head-mounted display frame generate three or more flashes of light on the image plane of the eye camera. The position of the eye camera and the position of the light source relative to the eye camera can be known values ​​stored in system memory. In some implementations, the location of the center of corneal curvature can be determined relative to a reference frame or coordinate system of the eye camera or a reference frame fixed relative to the head-mounted display.

[0254] In some examples, the procedure may follow an estimation of the location of the center of the cornea using a spherical corneal model, for example, as described above with respect to Figures 8A-8E or in US 2019 / 0243448 A1 (incorporated herein by reference in its entirety). In certain other examples, the CoR may be determined as part of the procedure. In some implementations, the corneal radius of curvature (used in calculations based on spherical and aspherical spheroidal models) and / or the Q parameter (used in calculations based on aspherical spheroidal models) may be known values ​​of the model or may be estimated using a known eye model. In some examples, the values ​​for the corneal radius of curvature (R) and the spheroidal Q parameter may be values ​​of these parameters in a known eye model (e.g., the Arizona Eye Model).

[0255] In some embodiments, each iteration of the procedure may be broken down into five steps, which are described below.

[0256] Step 1: In block 2402, an image is captured by an eye camera (eye tracking camera) while multiple, e.g., three or more, light sources attached to a frame output light, causing the appearance of three or more flashes of light on the captured image. The location of the flashes on the image plane of the eye camera can be determined in block 2404. The flash detection and marking module 714 shown in FIG. 7A can possibly be used, for example. The corneal center of the eye (CSo) is determined based on a spherical model of the eye. For example, using the spherical corneal model referenced in block 2412, the known location of the light source represented by block 2406, and the measured value of the flash location determined in block 2404 within the image captured in block 2402, the corneal center of the eye (CSo) can be calculated in block 2410. In some example methods, CSo may correspond to the center of corneal curvature 816c and / or 1008 in Figures 8E and / or 10 of U.S. Patent Application No. 2019 / 0243448A1, respectively. Some operations that may be performed for this calculation are discussed, for example, in connection with one or more of Figures 8B-8E above and U.S. Patent Application No. 2019 / 0243448A1 (incorporated herein by reference in its entirety). In some processes, CSo may be estimated in block 2410 using only two light sources, such as, for example, using the procedure described with reference to Figures 11-14 above. Other approaches and other numbers of light sources are also possible.

[0257] As illustrated with reference to block 2419, the CoR may be determined from the estimated corneal central CSo value determined in block 2410, based on a spherical model. As illustrated with reference to block 2415, the pupil center may be determined from the estimated corneal central CSo value determined in block 2410, possibly based on a spherical model.

[0258] Step 2: Assuming that the cornea is represented by an aspherical spheroid model and an aspherical spheroid, an initial value for the center of the spheroid (CQe_1) is selected in block 2403. In the first iteration of the procedure, this initial value may be selected based on a backing assumption, which may take into account, for example, the fact that the center of the spheroid is within a fixed distance behind the center of the cornea (CSo), which is estimated based on the spherical model in step 1. In some embodiments, for example, the initial value for the center of the spheroid (CQe_1) used in block 2413 can be assumed to be equal to CSo as determined in block 2410 using the spherical model. In subsequent iterations, the value used in block 2408 may be the output value generated in the previous iteration (e.g., as shown by block 2428). Using the value for the center of the aspherical spheroid (CQe_1) from block 2408 and the eye's center of rotation (CoR) previously determined in block 2419, the orientation of the spheroid can be determined in block 2420 using the aspherical spheroid model as referenced in block 2413. As illustrated by the connections between blocks 2019 and 2015 and block 2013, the center of rotation (CoR) and / or pupil center may be used in the spheroid model of block 2013.

[0259] In some embodiments, the CoR (e.g., from block 2419) may be estimated by a module used for CoR estimation (see FIG. 7A ), possibly using the image captured in block 2402 in step-1 and / or one or more procedures described in US 2019 / 0243448 A1 (incorporated herein by reference in its entirety). In some embodiments, the CoR (e.g., referenced in block 2419) may be estimated using the image captured in step-1 and the procedures described above.

[0260] In some implementations, instead of using the CoR from block 2419, the pupil center from block 2415 may be used to determine the orientation of the spheroid in block 2420. In these implementations, the pupil center from block 2415 may be estimated by a 3D pupil center locator module, possibly using the image captured in block 2402 in step-1 and the procedure described above.

[0261] FIG. 25A illustrates the specular reflection of four light rays generated by four light sources 2506 (e.g., four IR LEDs) from a spherical corneal surface 2508, centered on a center calculated based on a spherical model CSo2510. These light rays generate four flash images 2504 on the image plane 2503 of an eye camera (e.g., on the camera's detector array). FIG. 25B illustrates an example of an aspherical spheroid 2514 centered on CQe2508 and possibly oriented in a direction initially determined using CoR2518, determined from the spheroid model. As discussed above, the initial value of the spheroid center CQe2508 may be estimated based on the corneal center calculated based on the spherical model CSo2510, and thus may be calculated or determined based on the spherical model.

[0262] Step 3: In various implementations, using the known locations of the light sources 2406, the expected locations of the flash images in the image plane (e.g., relative to the eye camera reference frame) are estimated in block 2422 using a spheroid model as referenced in block 2414. An aspheric spheroid representing the cornea of ​​the eye is assumed to be centered on CQe and oriented with respect to a coordinate system (e.g., the eye camera coordinate system) according to the estimated value of the spheroid orientation calculated in step -2 (e.g., block 2420). Figure 25C illustrates an example of estimates of the locations of the four flash images 2504 on the image plane 2503 based on the locations of the specular reflections from the four light sources 2506 (e.g., four IR LEDs) and the spheroidal reflective surface 2514, whose center CQe 2508 and orientation were calculated in step 2.

[0263] Step 4: Using the expected location of the phosphene determined in step 3 (block 2422), the known location of the light source 2406, and the spherical corneal model referenced in block 2417, the center of the spherical cornea (CSe) is determined in block 2424, which will generate the phosphene image at the expected location 2422 estimated in step 3. The center of the spherical cornea (CSe) determined using a partially aspherical spheroidal model and the center of the cornea (CSo) determined using a spherical model rather than a spheroidal model may differ from each other by Δ. For example, Δ may be determined by subtracting CSo and CSe, and in some implementations may correspond to the absolute value of CSo-Cse. Figure 25D illustrates the relative locations of CoR 2518, CQe 2508, CSo 2510, and CSe 2524. In various implementations, CQe, CSo, and CSe may be three-element vectors, i.e., vectors with three components or terms that define the vectors.

[0264] Step 5: Using the difference Δ and the previously estimated value of CQe, a new value for the center of the aspherical spheroid (CQo_1) in the aspherical spheroid model of block 2421 is determined in block 2428, in various implementations, completing the first iteration of the procedure. In some examples, CQo_1 may be estimated using a simplified version of Newton's method. For example, in some implementations, the process may employ the following relationship: X(j+1)=CQo=X(j)-(J(X)) -1 *F(X) (2)

[0265] where F(X) = CSe - CSo, J(X) = the Jacobian matrix of F(X), and X = CQe. With the convergence of the values ​​of CSe and CSo, the difference between CSe and CSo (e.g., CSe - CSo) approaches zero. As shown by equation (2), as the difference between CSe and CSo approaches zero, the difference between X(j) and X(j+1) will also become smaller. Therefore, in various implementations, the equation F(X) = 0 is solved, for example, numerically. Newton's method may be used, for example, to solve the equations F(X) = 0, F(X) = CSe - CSo.

[0266] Jacobian matrix [ka] may be assumed to be an identity matrix over a single iteration, e.g., the values ​​of CSo and CSe are close to each other. Equation (2) may therefore be considered in some cases to be: CQe_updated=CQe+K*(CSo-CSe) (3)

[0267] In the formula, K=(J(X)) -1 is equal to the identity matrix, and J(X) is a 3x3 Jacobian matrix. The elements of this matrix can vary from the identity matrix by up to about 30% standard deviation. In some embodiments, a single iteration of the method described above can provide a reasonable solution that reduces the error associated with corneal center estimation by as much as 60%. Additional iterations can further reduce the error, but a single iteration may be used in some cases.

[0268] In some embodiments, two or more iterations may be used to potentially improve the accuracy of the corneal center estimation by a desired percentage (e.g., greater than 60%). In such embodiments, the final value of the spheroid center (CQo_1) generated in the last (fifth) step of the first iteration will be used as the initial value of the spheroid center (CQe_2) in step-2 of the second iteration. Similarly, in subsequent iterations, the initial value for the spheroid center (CQe_n) required in step-2 of each iteration will be the final value of the spheroid center (CQo_n-1) generated in the last (fifth) step. In some embodiments, CQo_n in a given iteration may be estimated using a simplified Newton's method.

[0269] In some other embodiments, CQo_n at a given iteration may be calculated as a function of Δ (e.g., Δ) using, for example, gradient descent at block 2428. 2 ) may be determined by reducing or minimizing

[0270] In various implementations, for example, to solve F(X)=0, a cost function such as H(x) may be reduced or minimized. H(X)=(CSe-CSo) 2 (4)

[0271] Gradient descent may be used in some implementations, for example the relationship is: [ka]

[0272] where K is the step size, which may be constant or, for example, adaptively changed over the steps. In some implementations, the step size K may vary with different steps (e.g., for multiple steps or with each step). Various forms of gradient descent may be used and / or various step sizes may be selected.

[0273] In some implementations, the step size may be a Newton step, which may return to equation (3) since: [ka]

[0274] For example, substituting equation (6) into equation (5) leads to equation (3).

[0275] Other methods may be employed in addition to Newton-based approaches or gradient descent and variations thereof.

[0276] In some embodiments, a new image or images may be captured, e.g., to capture a phosphene, and used for a different iteration, e.g., possibly each iteration or multiple iterations. In some such embodiments, the CoR or pupil center value may be recalculated based on the new image or images. In certain other embodiments, the CoR and / or pupil center value may be fixed and predetermined for multiple iterations (e.g., all iterations, all iterations in a series, or otherwise).

[0277] The corneal center, estimated using the aspherical spheroidal corneal model based on the above procedure, may be used by the wearable display system's optical axis determination module (see, e.g., FIG. 7A and associated discussion) to provide more accurate values ​​for various ocular parameters (e.g., vergence-divergence depth, CoR, perspective center, or other parameters). Such parameters may be provided, for example, to the light field rendering controller module 618. The corneal center may be used in other ways in different implementations.

[0278] In some embodiments, different variations of the method described above may be used to estimate the center of the cornea based on an aspheric corneal model. In some variations, one or more steps may be added, omitted, modified, or substituted by other steps. In certain other variations, the order and / or arrangement of the steps may be different. Similarly, different variations of the procedure represented by the block diagram in FIG. 24 may be implemented without departing from the main aspects of the procedure. For example, blocks may be added, omitted, modified, or substituted by other blocks, blocks may be reordered or rearranged, or any combination thereof.

[0279] The above procedures may be implemented by one or more processors and one or more non-transitory memories that may store associated instructions in conjunction with modules of an HMD system (see, e.g., FIG. 7A). FIG. 26 is a block diagram illustrating a subset of sub-modules used in an exemplary eye tracking module (e.g., eye tracking module 614 shown in FIG. 7A) that may be combined with a second 3D corneal center estimation sub-module 2660 configured for 3D corneal center estimation based on an aspheric spheroidal corneal model and using a numerical procedure, such as an iterative procedure, which may, in some implementations, be similar to the procedure described above. The eye camera 2634, image processing module 2610, pupil identification module 2612, and glint detection module 2614 may together provide the location of the glint, which may be used by the first 2616 and second 2660 3D corneal center estimation modules. The coordinate system normalization module 2618, the 3D pupil center locator module 2620, and the first 3D corneal center estimation module 2616 may provide parameters to the optical axis determination module 2622 for estimating the orientation of the eye's optical axis. The CoR estimation module 2624 can estimate the CoR using the orientation of the optical axis estimated by the optical axis determination module 2622. In some embodiments, the CoR provided by the CoR estimation module 2624 and the glint location provided by the glint detection and labeling module 2614 may be used by the first 2616 and second 2660 3D corneal center estimation modules to estimate the center of the aspheric spheroid cornea. In some embodiments, one or more of the aforementioned modules may be implemented using a shared non-transitory memory and a set of processors. In some embodiments, different subsets of modules, including one or more modules, may share a set of non-transitory memory and a processor. In some embodiments, one or more of the modules may be an algorithm written in a tangible programming language, stored in non-transitory memory, and executed by one or more processors.In some implementations, one or more subsets of these modules, including one or more modules, may be implemented on separate hardware (eg, FPGA).

[0280] Simulations were performed to estimate the corneal center using a single iteration of the procedure described above, with J(X) equal to the identity matrix for a spheroid model with R=7.8 mm and Q=-0.25. Results were obtained from simulations of 1,000 random eye gazes within + / -20 degrees in the horizontal and vertical directions using four light flashes. Table 1 shows the RMS error (in mm) for the three coordinates that define the location of the estimated corneal center. The total RMS error for the three coordinates is also shown. The RMS error for the center of curvature calculated using both the spherical model and the aspherical spheroid model is shown. [Table 1]

[0281] A comparison between data points calculated using the aspherical spheroid model and those calculated using the spherical model shows an error reduction of approximately 60% when the spheroid model is used. Determining the 3D location of the corneal center using two ocular cameras and a spheroid model

[0282] As discussed above, different procedures may utilize aspherical models, such as aspherical spheroidal models, and a wide range of variables may be included within such procedures. In some processes, for example, two cameras may be employed. The two cameras may image the phosphenes on the eye and provide information regarding the position and / or orientation of the eye.

[0283] 27 shows an example configuration in which two cameras 2739 / 2737 are positioned on the eyepiece 2731 of a head mounted display frame 2741 and capture images of flashes of light generated by three light sources 2735 also positioned on the frame 2741. These images may be used to estimate the location of the center 2718 of the cornea of ​​the eye 2733 using methods described below.

[0284] FIG. 28 is a block diagram illustrating a procedure for estimating the location of the center of the cornea (e.g., a three-dimensional location such as an x, y, z location described by one or more coordinates, such as x, y, z or r, θ, φ, relative to a reference frame) based on an aspheric spheroidal corneal model using images captured by two eye cameras while multiple light sources affixed to the head-mounted display frame generate two or more, e.g., four or more, flashes of light on the image plane of each eye camera. A different number of light sources may be used in other implementations. The positions of the eye cameras and the light sources relative to a coordinate system (e.g., the coordinate system of the eye cameras) may be known values ​​stored in non-transient memory of the HMD system. However, in some implementations, the use of two eye cameras enables determination of the corneal center of the eye without knowing the radius (R) of the cornea. In some implementations, the location of the center of corneal curvature may be determined relative to the reference frame of the eye cameras or a reference frame fixed relative to the coordinate system or the head-mounted display.

[0285] Advantageously, using images captured by two cameras and the procedure described below may reduce the time to estimate the corneal center based on an aspheric model (e.g., an aspheric spheroid model) compared to methods using a single camera (e.g., the method described above). In some cases, the procedure is non-iterative.

[0286] In some embodiments, the procedure may include some or part of the estimation of corneal and / or pupil vectors (based on a spherical model) described above (e.g., with reference to Figures 9, 11, 13, 14, 15, and 16). In some embodiments, the corneal and / or pupil vectors may be determined as part of the procedure.

[0287] For some implementations, the procedure may include the seven steps described below or one or more parts thereof.

[0288] Step 1: As referenced by first and second blocks 2802 and 2804, respectively, shown in FIG. 28 , a first image is captured by a first eye camera (eye tracking camera), and a second image is captured by a second eye camera (eye tracking camera). Two or more light sources affixed to a frame are configured to output light and cause the appearance of two or more flashes of light on each captured image. In some implementations, the first and second cameras may correspond to cameras 2014 and 2016 or cameras 2018 and 2020 in FIGS. 9B-9E. The location of the flashes of light relative to the image planes of the first and second eye cameras may be determined (see blocks 2808 and 2806, respectively). This determination of the flash location may be performed by the image preprocessing module 710 and the flash detection and marking module 714. In some examples, a pair of light sources may generate two flashes of light on the first and second images captured by the first and second eye cameras, respectively. See, for example, Figure 29A. In some embodiments, a first pair of light sources may generate two flashes of light on a first image captured by a first camera, and a second pair of light sources may generate two flashes of light on a second image captured by a second camera. A different number of light sources may be employed in other implementations.

[0289] Step 2: Figure 29B illustrates a method that can be employed to determine the vector along which the phosphenes are directed toward the eye, for example, toward the center of the corneal curvature. Using the positions of the two phosphenes on a first image captured by a first camera, a first corneal vector CV1 is determined in block 2812. Using the positions of the two phosphenes on a second image captured by a second camera, a second corneal vector CV2 is determined in block 2810.

[0290] In some examples, CV1 and CV2 may be determined using two phosphenes in the first captured image and two phosphenes in the second captured image generated by the first and second pairs of light sources, respectively, based on the procedure described above with reference to Figures 15A and 15B. The first and second corneal vectors CV1 and CV2 may correspond to vectors 1510 and 1530 in Figures 15A and 15B, for example. In these examples, CV1 is determined in block 2812 using the location of the first camera, the location of the first pair of light sources, and the locations of the two phosphenes in the first captured image. Similarly, CV2 is determined in block 2810 using the location of the second camera, the location of the second pair of light sources, and the locations of the two phosphenes on the second captured image.

[0291] In certain other examples, CV1 and CV2 may be determined using only two light sources that generate two phosphenes on each of the captured images, possibly based on the assumption of a spherical corneal shape, based on the procedure described above with reference to Figures 16A-16C. The first and second corneal vectors CV1 and CV2 may correspond to vectors 1610 and 1630 in Figures 16A-16C. In these examples, CV1 may be determined 2812 using the location of the first camera, the locations of the two light sources, and the locations of the two phosphenes on the first captured image. Similarly, CV2 is determined 2810 using the location of the second camera, the locations of the two light sources, and the locations of the two phosphenes on the second captured image. In some implementations, CV1 and CV2 are additionally transformed to the coordinate system of the wearable device by coordinate system normalization module 718 (see Figure 7).

[0292] Step 3: Using the corneal vectors CV1 and CV2 determined in step 2, the three-dimensional coordinates of the corneal center (CC) may be identified with respect to the coordinate system of the wearable device, as represented by block 2814 (because in step 2, CV1 and CV2 are transformed to the coordinate system of the wearable device in various implementations). In some examples, such as in FIG. 29B, the three-dimensional coordinates of the corneal center or a region centered thereon may be determined by finding the point or region where vectors CV1 and CV2 intersect. This intersection may correspond to point 1520 or 1620 in FIGS. 15A-16C and may be determined using the procedure described in paragraph 172 (or 179). In some cases, the vectors do not intersect at a point; however, the vectors may converge. Thus, in various implementations, there is a location where the vectors converge or where the distance between the vectors is reduced or minimized. In some other examples, the corneal center may be estimated using one or more estimation techniques, such as a root-mean-square estimation technique.

[0293] Step 4: Additionally, using the first image captured by the first eye camera, a first pupil vector PV1 may be determined 2816. Similarly, using the second image captured by the second eye camera, a second pupil vector PV2 may be determined 2818. In some examples, the first and second pupil vectors PV1 and PV2 may extend from the origin of the first and second eye camera coordinate systems through the locations of the pupil centers in the first and second image planes, respectively, as illustrated in FIG. 29C. In some examples, the first 2816 and second 2818 pupil vectors PV1 and PV2 may be similar to the first and second corneal vectors CV1 and CV2.

[0294] Step 5: The three-dimensional coordinates of the point (PC) where PV1 2816 and PV2 2818 intersect are determined 2820 relative to the same coordinate system (e.g., the coordinate system of the wearable device) used in step 3. In some cases, the vectors do not intersect at a point; however, the vectors may converge. Thus, in various implementations, there exists a location where the vectors converge or where the distance between the vectors is reduced or minimized. In such cases, a location associated with, e.g., within, this region may correspond to PC. In some embodiments, the point PC may be approximated using one or more estimation techniques, such as a root-mean-square estimation technique.

[0295] Step 6: Using the intersection or convergence location CC determined in step 3 (block 2814 of FIG. 28 ) and the intersection point or convergence area PC determined in step 5 (block 2820), a vector PC-CC extending through points PC and CC is determined in block 2822. Points CC and PC and the vector PC-CC may be determined with respect to the coordinate system of the wearable device in various implementations. In some examples, the vector PC-CC may approximately correspond to the optical axis of the user's eye. In some examples, the corneal center may be located along the estimated vector PC-CC.

[0296] Step 7: Using the aspherical spheroid corneal model 2824 (e.g., with a given Q value), the location of the phosphene on the first and second images (blocks 2806 and 2808), the point CC determined in step 3 (block 2814), and the vector PC-CC determined in step 6 (block 2822), the position and orientation of the aspherical spheroid in three-dimensional space can be estimated, as referenced in block 2826. The orientation of the spheroid can be determined from the PC-CC; for example, the axis of the spheroid can be parallel to and / or aligned with the PC-CC. The location of the center of the spheroid can also be estimated by knowing the PC-CC vector. The location of the spheroid center can be assumed to be along the PC-CC vector in various implementations. In some embodiments, a spherical model is used to estimate the position of the aspherical spheroid, for example, along the PC-CC vector. In these embodiments, the location of the center of the spherical reflective surface associated with the spherical model is calculated, for example, using the intersection point CC determined in block 2814, the camera and light source location information, and the location of the glint on the first and second images. For example, a shift value is calculated based at least in part on a given conic parameter Q associated with the aspherical spheroid corneal model, and the location of the center of the aspherical spheroid is determined using the shift value, e.g., to determine the shift from the CC point. In particular, in some examples, the center of the aspherical spheroid is determined by shifting the center of the spherical reflective surface along the PC-CC vector by a shift value, which may be calculated based on the shape of the spheroid, e.g., based on the Q value. In some cases, the shift value is calculated at least in part based on the camera and light source location information and the location of the glint on the first and second images. In some examples, the given value of Q may be an average value of Q based on a specific eye model (e.g., −0.25 for the Arizona eye model or −0.26 for the Navarro eye model), a published value of Q (e.g., published in a research paper or textbook), or a user-specified value of the Q parameter.

[0297] Additionally, or alternatively, the location of the spheroid's center may be determined iteratively. For example, the center of the aspherical spheroid may be assumed to be located at a location along the PC-CC vector, e.g., the CC point, or a fixed distance from the CC, such as the above-referenced shifted location, where the shift is based on the spheroid's shape (e.g., Q-factor). Knowing the location of the light emitter, the location of the flash can be calculated, e.g., by ray tracing rays of light from the light emitter reflected from the aspherical spheroid. These calculated flashes can be compared to the measured flash locations. The aspherical spheroid can be shifted along the PC-CC vector, e.g., by shifting the spheroid's center along the PC-CC vector. Again, knowing the location of the light emitter, the location of the flash can be calculated by ray tracing rays of light from the light emitter reflected from the aspherical spheroid. These calculated flashes can be compared to the measured flash locations. This process can be repeated, for example, until the location of the spheroid (and spheroid center) along the PC-CC vector is identified, and the calculated glint location approximates the measured location of the glint, e.g., is close enough, e.g., with respect to a threshold. In some implementations, for example, the spheroid location that produces the reduced or shortest distance may be selected. Thus, in some designs, the position of the aspherical spheroid in three-dimensional space is estimated as referenced in block 2826.

[0298] As referenced above, in some examples, the orientation of the spheroid in three-dimensional space may correspond to the orientation of the PC-CC vector 2822, e.g., the orientation of the spheroid in three-dimensional space may correspond to an orientation where the vector PC-CC 2822 passes through the center of the aspherical spheroid and both vertices / poles of the spheroid. In some such examples, the orientation of the aspherical spheroid may be sufficient to estimate the direction of the user's gaze vector. In these examples, estimating a large set of gaze vectors based on images captured at different gaze directions of the user may be used to estimate the CoR with reduced computational cost. For example, as discussed above and in U.S. Patent Publication No. US 2019 / 0243448 A1, entitled "Eye Center of Rotation Determination, Depth Plane Selection, and Render Camera Positioning in Display Systems," which is incorporated herein by reference in its entirety, multiple gaze vectors or optical axes may be evaluated for different gaze directions to identify an intersection or convergence of the gaze vectors or optical axes, which may be used as an estimate of the eye's center of rotation. Thus, in some embodiments, the eye tracking module 614 may use the orientation of the aspheric spheroid without determining the location of the corneal center or center of curvature. In these embodiments, a significant amount of computation time can potentially be saved by enabling tracking of the eye's gaze direction while not calculating the center of corneal curvature.

[0299] In some implementations, all of the above-described steps may be performed by module 716 (see FIG. 7A).

[0300] 29A-29D diagrammatically illustrate a procedure for determining vector PC-CC 2836 based on the procedure discussed above with respect to FIG. 28, for example, where two pairs of light sources are used to generate a pair of flashes of light on two separate images generated by two individual eye cameras. As shown, a first pair of light sources 2902 generates a first pair of flashes of light 2905 on the image plane 2908 of the first eye camera. A second pair of light sources 2904 produces a second pair of flashes of light 2912 on the image plane 2910 of the second eye camera (see FIG. 29A). Using the coordinates of the first eye camera 2914, the first pair of flashes of light 2906, and the first pair of light sources 2902, a first corneal vector CV1 2918 is determined. Using the coordinates of the second eye camera 2916, the second pair of flashes of light 2912, and the second pair of light sources 2904, a second corneal vector CV2 2920 is determined. As discussed above, a single pair of light sources can, in some implementations, be used to produce two flashes of light that are imaged by both the first and second cameras. In some examples where the two corneal vectors CV1 2918 and CV2 2920 intersect or converge, the coordinates of the intercept or convergence point CC3 330 are determined (see FIG. 29B and FIGS. 16A-16C discussed above).

[0301] As discussed above, the location of the pupil 2922 on the image plane 2908 and the origin of the first eye camera coordinate system 2914 are used to determine a first pupil vector PV1 2926. The location of the pupil 2924 on the second image plane 2910 and the origin of the second eye camera coordinate system 2916 are used to determine a second pupil vector PV2 2928. In some examples where the two corneal vectors PV1 2926 and CV2 2928 intersect or converge, the coordinates of the intercept or convergence point or region PC 2932 may be determined relative to the same coordinate system used to determine the coordinates of the estimated corneal curvature center location CC 2930 in FIG.

[0302] Also, as discussed above, the orientation of the aspherical spheroid 2944, which represents the cornea, is determined using the vector PC-CC 2942 (defined as the vector connecting CC 2930 and PC 2932) (see FIG. 29D). In some embodiments, the orientation of the spheroid may be determined by assuming that the vector PC-CC 2942 passes through the center of the aspherical spheroid and both vertices / poles of the spheroid.

[0303] Additionally, in some embodiments, the location of the center of the aspherical spheroid along vector PC-CC 2942 may be estimated by matching the measured location of the flash 2906 / 2912 on the first and second image planes 2908 / 2910 with the calculated location of the flash on each image plane 2908 / 2910 based on specular reflection of a light ray (generated by a light source at a known location) from a spheroid whose center is at a point along vector PC-CC 2942. Other methods may also be used.

[0304] In some embodiments, different variations of the method described above may be used to estimate the center and orientation of the cornea based on an aspheric spheroidal corneal model. In some variations, one or more steps may be added, omitted, modified, substituted by other steps, or any combination thereof. In certain other variations, the order of steps may be changed or steps may be rearranged differently. Similarly, different variations of the procedure represented by the block diagram in FIG. 28 may be implemented without departing from the main aspects of the procedure. For example, certain blocks may be added, omitted, modified, rearranged, substituted by other blocks, or any combination thereof. Other variations are also possible.

[0305] The above-described procedures may be implemented by one or more processors and one or more non-transitory memories that may store associated instructions in conjunction with the modules of an HMD system (FIG. 7A). FIG. 30 is a block diagram illustrating a subset of sub-modules that may be used in an exemplary eye tracking module (e.g., eye tracking module 614 shown in FIG. 7A) and combined with a novel 3D corneal center estimation sub-module 3060 configured for 3D corneal center estimation based on an aspheric spheroidal corneal model. In some implementations, the process may employ, for example, the procedure described above with respect to FIG. 28. Note that in some implementations of the procedure described above with respect to FIG. 28, the two eye cameras 3034 / 3035, the image processing module 3010, the pupil identification module 3012, and the glint detection module 3014 may all provide the location of the glint to the 3D corneal center of curvature estimation module 3060. The phosphene location may be used by the 3D corneal center estimation module 3060 to determine corneal vectors 2918 / 2920 (CV1 and CV2), which may be used by the 3D corneal center estimation module 3060 to estimate the center and / or orientation of an aspherical spheroid representing the cornea, as described in step-7. The coordinate system module 3018 and the 3D pupil center locator module 3020 may provide the pupil location needed to determine the pupil vectors 2926 / 2928 (PV1 and PV2). Using the corneal vector, pupil vector, and phosphene location, the 3D corneal center estimation module 3060 can estimate the center and orientation of an aspherical spheroid representing the cornea. Other methods and / or configurations are also possible.

[0306] In various implementations, estimating the location of the corneal center of a user's eye based on the location of the glint reflection in images produced by one or more eye tracking cameras includes numerical calculations to determine a value or estimate or location of the center of corneal curvature (e.g., a three-dimensional location such as an x, y, z location described by one or more coordinates such as x, y, z or r, θ, φ relative to a reference frame) based on the location of the glint reflection in images produced by the one or more cameras, the location of the one or more tracking cameras, and the location of the emitter that produced the individual glint reflection.

[0307] In some embodiments, the aforementioned modules may be implemented using a shared non-transitory memory and set of processors, however, other configurations are possible. In some embodiments, a subset of the modules, comprising one or more modules, may share a non-transitory memory and set of processors. In some embodiments, one or more of the modules may comprise an algorithm written in a tangible programming language, stored in non-transitory memory, and executed by one or more processors. In some implementations, a subset of one or more of these modules, comprising one or more sub-modules, may be implemented using separate hardware (e.g., an FPGA or dedicated processor).

[0308] In some implementations, the center and orientation of the eye's cornea may be estimated using an aspherical eye model, where the cornea is represented by a non-rotationally symmetric surface. The aspherical eye model may employ, for example, a bicone or an ellipsoid, which is not rotationally symmetric about any axis. These shapes may be used to capture different curvatures of the cornea in different planes (e.g., horizontal or vertical). See, for example, equations (1C) and (1D) above and their discussion. Thus, in various implementations, such non-rotationally symmetric models that use non-rotationally symmetric surfaces, such as a bicone or an ellipsoid, to model the cornea may be used in conjunction with the methods described herein.

[0309] In some such implementations, for example, a non-spheroid may be used to model the surface of the cornea (e.g., the surface defined by Equation 1D). In such cases, a third known parameter (in addition to Q and R) may be used to estimate the position and / or orientation of the ellipsoid that models the cornea. In some examples, the value of the third parameter may be provided by an eye model. Methods comprising the same or modified versions of the procedures described with reference to FIGS. 24, 28, or elsewhere herein may be used in conjunction with a non-rotationally symmetric model of the cornea, such as a non-spheroidal eye model of the cornea, instead of an aspherical spheroidal model of the cornea.

[0310] In some other implementations, the aspheric corneal model may be a biconic model, where the surface of the cornea is represented by a general biconic surface (e.g., the biconic surface defined by Equation 1C). As noted above, the biconic model may be used to model corneal shapes for a variety of eye shapes, for example, associated with emmetropic, myopic, hyperopic, or astigmatic eyes. In some such examples, the biconic surface may be defined using five parameters. Referring to Equation 1C, (R x, Q x ) and (R y ,Q y ) may define the radius and conic parameters of the corneal surface in the horizontal and vertical dimensions, respectively. Additionally, the orientation of the biconic surface relative to the corneal astigmatism axis may be defined by an angle (a fifth parameter), ranging from 0 to 180 degrees. In some embodiments, values ​​for these parameters may be obtained from known eye models or average values ​​reported in the literature. Methods comprising the same or modified versions of the procedures described with reference to Figures 24, 28, or elsewhere herein may be used in conjunction with a biconic eye model of the cornea instead of an aspheric spheroid model of the cornea.

[0311] In some such embodiments, the five parameters of the biconic spheroid model may be estimated based on an extended version of the procedure described with reference to Figures 24 and 28, and additional steps may be added to estimate one or more unknown parameters in the model. In some cases, additional flashes of light and possibly additional light sources and / or images may be employed. In some such embodiments, four or more flashes of light may be used to estimate the corneal center, gaze direction, and eye center.

[0312] In certain other embodiments, some constraints on the range or statistical distribution of one or more parameters in the eye model can be used to expedite the calculation (e.g., to reduce additional steps in the dilation procedure). x and R y The statistical distribution of Q may be the same as R, and therefore they may have the same mean value (e.g., 7.8 mm) and the same standard deviation (e.g., 0.26 mm). x and Q y The distribution of R may be the same as Q, and therefore they may have the same mean value (e.g., -0.26 or -0.25) and the same standard deviation (e.g., 0.18). Most astigmatic corneas may have an astigmatism axis closer to the vertical or horizontal axis, for example, as defined based on the eyewear coordinate system. In addition, many eye parameters are often similar in right and left eye pairs. In some embodiments, if the eye (cornea of ​​the eye) is not astigmatic, R x is R y and can be equal to R. Similarly, for a non-astigmatic eye, Q x Q y and may be equal to Q. In such a case, the biconic ellipsoid eye model may be scaled to a spheroid eye model.

[0313] As discussed above, corneal center and gaze direction may be estimated using flash images captured by one or more eye cameras.

[0314] In some embodiments, the user-specific value of the Q parameter may be estimated using a Q calibration process. In some embodiments, during the Q calibration process, one or more procedures, such as those described herein, such as with respect to FIGS. 24 and 28 or portions thereof, may be used, or methods described anywhere may be employed, to determine the user-specific value of the Q parameter for an aspheric spheroid model used to estimate the corneal center of the eye of a user wearing an HMD. For example, as described above and shown in FIG. 7A , the corneal center (e.g., estimated in block 716) and the corresponding center of rotation (CoR) of the eye (e.g., estimated in block 724 based on the corneal center) may be input parameters to, for example, the light field rendering controller 618. Thus, the estimated corneal center may affect the characteristics of the image rendered by the HMD. Advantageously, the user-specific value of the Q parameter may be used by the light field rendering controller 618 and / or one or more other modules to feed parameter values ​​to the light field rendering controller 618 (e.g., the CoR estimation module 732 and the CoP estimation module 724) to render the image in a manner that is closer to how it was intended to be perceived by the user.

[0315] In some embodiments, the user-specific value of the Q parameter may be estimated using a process comprising measurement / data collection and analysis / estimation. The measurement and data collection may be an iterative procedure involving one or more light emitters illuminating the user's eye, forming a light flash thereon, and providing a target for the user to view while one or more eye-tracking cameras are used to capture one or more images of the eye, the one or more images being associated with a gaze direction determined by the location of the target. In some cases, this process can be repeated as the target location is changed to alter the user's gaze direction.

[0316] Using these procedures, multiple images of the eye may be collected, for example, different images captured by a single camera or different pairs of images captured by two eye-tracking cameras associated with different respective gaze directions. In some cases, an image captured by a single camera or a pair of images captured by two eye-tracking cameras may include a phosphene reflex associated with one or more light emitters. The multiple images may be stored, for example, in the memory of the eye-tracking module 614 or the memory of the HMD.

[0317] In the analysis and estimation step, multiple images of the eye may be used to determine a user-specific value for the Q parameter. In some implementations, the analysis and estimation may be an iterative process. In some implementations, the iterations may include estimating multiple CoR values ​​using one or more procedures / methods described herein (e.g., one or more procedures described with respect to FIG. 24 or FIG. 28) or other methods. The CoR estimation may potentially employ multiple images of the eye, the location of the emitter that produced the flash, an initial value of the Q parameter or a value of the Q parameter generated in a previous iteration, or any one or more of these. For example, a statistical parameter or metric (e.g., variance, standard deviation) associated with estimated CoR values ​​for different predetermined Q values ​​may be calculated. The statistical metric may measure or otherwise indicate the variation, instability, uncertainty, or error in the CoR for a particular Q value. The statistical parameter or metric (e.g., variance, standard deviation) may be calculated using multiple estimated CoR values ​​or a process for determining CoR values. The statistical metric may be correlated with, for example, the region of convergence 1824 in FIG. 18B , or the estimated CoR region 1920 in FIGS. 19C-1 , 19C-2, 19C-3, and 19C-4 , or the size of the region of convergence of the optical axis calculated for different gaze directions as described in U.S. Patent Publication No. US 2019 / 0243448 A1 (incorporated herein by reference in its entirety), from which the CoR may be determined. A new value for the Q parameter may be generated based, at least in part, on the calculated statistical parameter or metric. For example, the statistical metric may be monitored, and the selection of Q may be based on the value of the statistical metric. For example, a Q value corresponding to a reduced or minimum statistical metric or a statistical metric below a threshold may be selected. In some cases, the Q value may be similarly modified (e.g., averaged, scaled, etc.), possibly based on other Q values ​​and / or statistical metrics or values ​​based thereon.

[0318] In some embodiments, the first iteration may use an initial value of the Q parameter. Subsequent iterations may, in some implementations, use the value of the Q parameter generated in the iteration performed immediately before each subsequent iteration, although other approaches are possible. The initial value of the Q parameter may be an estimated value based on measured data collected, for example, from several subjects, one or more eye models, and the like. In some examples, the initial value of the Q parameter may be −0.25±0.1.

[0319] In some implementations, the analysis and estimation may be a non-iterative process. For example, the estimation may include selecting one or more Q values ​​from a plurality of predetermined values ​​of the Q parameter. In some examples, the non-iterative process may include estimating a plurality of CoR values ​​for different Q values. As described above, the CoR may be determined using a method described herein (e.g., one or more methods described with respect to FIG. 24 or FIG. 28) or other methods. The CoR estimation may possibly employ multiple images of the eye, the location of the emitter that produced the phosphene, a plurality of predetermined values ​​of the Q parameter, or one or more of these. For example, a statistical parameter or metric (e.g., variance, standard deviation) associated with the estimated CoR values ​​for different predetermined Q values ​​may be calculated. The statistical metric may measure or otherwise indicate the variation, instability, uncertainty, or error in the CoR for a particular Q value (as discussed above, the statistical metric may correlate, for example, to the region of convergence 1824 in FIG. 18B , or the estimated CoR region 1920 in FIGS. 19C-1 , 19C-2, 19C-3, 19C-4 , or the size of the region of convergence of the optical axes calculated for different gaze directions as described in U.S. Patent Publication No. US 2019 / 0243448 A1 (incorporated herein by reference in its entirety), from which the CoR may be determined). Thus, the Q parameter that results in the desired or improved, e.g., reduced, minimal, or other more desirable or best statistical parameter or metric, may be selected. In some cases, the Q value may similarly be modified (e.g., averaged, scaled, etc.), possibly based on other Q values ​​and / or statistical metrics or values ​​based thereon.

[0320] In some embodiments, the plurality of predetermined values ​​of the Q parameter may be values ​​published in the literature (e.g., research papers, textbooks, reference books, and the like). In certain other embodiments, the plurality of predetermined values ​​of the Q parameter may be a plurality of calculated values ​​of the Q parameter for a population. For example, a corneal topographer may be used to measure the corneal topography of the eyes of a group of subjects (e.g., 10, 50, 100 or more subjects), and the value of the Q parameter may be calculated using the measured corneal topography. Other methods of obtaining the Q value are also possible.

[0321] Thus, in various implementations, the calculated statistical metric may be, for example, a measure of the variance in the statistical distribution of estimated CoR values ​​for different gaze directions. In some implementations, a new value for the Q parameter may be selected to reduce or minimize the variance. Alternatively, the metric may be determined for multiple Q values, and the Q values ​​are selected based on the metric, for example, to reduce the value of the metric, so as to reduce the variance, uncertainty, error, etc. in the CoR values ​​obtained for different gaze directions.

[0322] In some implementations, the processes described above may be performed by the HMD's eye tracking module 614. In certain other configurations, the measurement and data collection may be performed by the eye tracking module, and the analysis and estimation may be performed by another module of the HMD (e.g., a processing module comprising a processor and memory).

[0323] In some embodiments, three or more eye cameras may be used to capture eye images to estimate parameters such as the center of the cornea. Parameters, e.g., the center of the cornea, may be estimated using a spherical model and / or an aspherical spheroid model. In some such embodiments, the eye tracking module 614 may select a pair of eye cameras from the three or more eye cameras and use the pair of cameras to estimate parameters, e.g., the 3D corneal center, the 3D pupil center CoR, or other parameters. For example, a pair of eye cameras of the three or more eye cameras can be selected to capture two (or more) images of a user's (e.g., a user wearing an HMD) eye, from which parameters can be estimated, e.g., using the methods described above. A different pair of eye cameras of the three or more eye cameras can be selected to capture two (or more) images of a user's (e.g., a user wearing an HMD) eye, and parameters can again be estimated based on the images from this pair of cameras. This process can be repeated, potentially selecting another different pair of cameras. For example, the first and second cameras can be selected first, followed by the second and third cameras, then the first and third cameras, etc. The order or procedure can vary. Values ​​obtained using different camera pairs can be statistically combined, e.g., averaged, or otherwise used together to determine an estimate of a parameter. The parameter may comprise physical, optical, and / or structural characteristics of the user's eye, such as an estimate of the corneal center, center of rotation, center of perspective, or an intermediate value, to obtain such a parameter. In some implementations, such values ​​can be employed in rendering an image based on the estimated corneal center and / or other parameters. In various embodiments described above, locations (e.g., three-dimensional locations) of various eye parameters (e.g., corneal center, pupil center, center of rotation, and the like) may be calculated relative to one or more normalized coordinate systems. In some cases, the eye camera coordinate system may be a normalized coordinate system, and the location of the image plane may be determined relative to the eye camera coordinate system. The normalized coordinate system may be determined, for example, by a coordinate system normalization module 718 (see FIG. 7A ) of the eye tracking module 614, using, for example, the method discussed in U.S. Patent Publication No. US2019 / 0243448A1, entitled “Eye Center of Rotation Determination, Depth Plane Selection, and Render Camera Positioning in Display Systems,” which is incorporated herein by reference in its entirety; however, other variations or approaches may also be employed to normalize or otherwise convert coordinates / locations to another system, such as, for example, another coordinate system. T. Examples When Eye Tracking Is Unavailable

[0324] In some embodiments, eye tracking may not be provided or may be temporarily unavailable. Examples include the eye tracking camera 324 or light source 326 becoming cloudy, damaged, or disabled by the user; environmental lighting conditions may make eye tracking significantly more difficult; the wearable system may be improperly fitted so as to interfere with eye tracking; the user may be glaring or have an eye condition that is not easily tracked; etc. At such times, the wearable system may be configured to rely on various strategies for positioning the rendering camera and selecting the depth plane in the absence of eye tracking data.

[0325] For example, with respect to the rendering camera, the wearable system may position the rendering camera at a default position if the user's pupil is not detected for a time longer than a predetermined threshold, such as a few seconds or longer than a typical blink. The wearable system may move the rendering camera to the default position, possibly in a smooth motion that may follow, for example, an overdamped oscillator model. In some implementations, the default position may be determined as part of a calibration process of the wearable system for a particular user. However, the default position may also be the center of rotation of the user's left and right eyes. These are merely illustrative examples. U. Computer Vision for Detecting Objects in the Environment

[0326] As discussed above, the display system may be configured to detect objects or properties thereof in the environment surrounding the user. Detection may be accomplished using various techniques, including various environmental sensors (e.g., cameras, audio sensors, temperature sensors, etc.), as discussed herein.

[0327] In some embodiments, objects present in the environment may be detected using computer vision techniques. For example, as disclosed herein, a forward-facing camera of a display system may be configured to image the surrounding environment, and the display system may be configured to perform image analysis on the images to determine the presence of objects in the surrounding environment. The display system may analyze images obtained by an outward-facing imaging system to perform scene reconstruction, event detection, video tracking, object recognition, object pose estimation, learning, indexing, motion estimation, image restoration, or the like. As another example, the display system may be configured to perform face and / or eye recognition to determine the presence and location of faces and / or human eyes within a user's field of view. One or more computer vision algorithms may be used to perform these tasks. Non-limiting examples of computer vision algorithms include Scale Invariant Feature Transform (SIFT), Speed-Up Robust Features (SURF), Orientation FAST and Rotation BRIEF (ORB), Binary Robust Invariant Scalable Keypoints (BRISK), Fast Retinal Keypoints (FREAK), Viola-Jones algorithm, Eigenfaces approach, Lucas-Kanade algorithm, Horn-Schunk algorithm, Mean-shift algorithm, visual simultaneous localization and mapping (vSLAM) techniques, sequential Bayes estimators (e.g., Kalman filter, extended Kalman filter, etc.), bundle adjustment, adaptive thresholding (and other thresholding techniques), iterative nearest neighbor (ICP), semi-global matching (SGM), semi-global block matching (SGBM), feature point histograms, various machine learning algorithms (e.g., support vector machines, k-nearest neighbor algorithms, naive Bayes, neural networks (including convolutional or deep neural networks), or other supervised / unsupervised models, etc.), etc.

[0328] One or more of these computer vision techniques may also be used in conjunction with data obtained from other environmental sensors (e.g., microphones, etc.) to detect and determine various properties of objects detected by the sensors.

[0329] As discussed herein, objects within the surrounding environment may be detected based on one or more criteria. When the display system detects the presence or absence of a criterion within the surrounding environment using computer vision algorithms or using data received from one or more sensor assemblies (which may or may not be part of the display system), the display system may then signal the presence of the object. V. Machine Learning

[0330] Various machine learning algorithms may be used to learn to identify the presence of objects in the surrounding environment. Once trained, the machine learning algorithms may be stored by the display system. Some examples of machine learning algorithms may include supervised or unsupervised machine learning algorithms, including regression algorithms (e.g., ordinary least squares regression, etc.), instance-based algorithms (e.g., learning vector quantization, etc.), decision tree algorithms (e.g., classification and regression trees, etc.), Bayesian algorithms (e.g., naive Bayes, etc.), clustering algorithms (e.g., k-means clustering, etc.), association rule learning algorithms (e.g., a priori algorithm, etc.), artificial neural network algorithms (e.g., Perceptron, etc.), deep learning algorithms (e.g., Deep Boltzmann Machine, i.e., deep neural network, etc.), dimensionality reduction algorithms (e.g., principal component analysis, etc.), ensemble algorithms (e.g., stacked generalization, etc.), and / or other machine learning algorithms. In some embodiments, individual models may be customized for individual datasets. For example, the wearable device may generate or store a base model. The base model may be used as a starting point to generate additional models specific to a data type (e.g., a particular user), a data set (e.g., a set of additional images acquired), a conditional situation, or other variations. In some embodiments, the display system can be configured to utilize multiple techniques to generate models for analysis of aggregated data. Other techniques may include using predefined thresholds or data values.

[0331] The criteria for detecting an object may include one or more threshold conditions. If analysis of the data obtained by the environmental sensors indicates that the threshold condition has been reached, the display system may provide a signal indicating the detection of the presence of an object in the surrounding environment. The threshold condition may involve a quantitative and / or qualitative measurement. For example, the threshold condition may include a score or percentage associated with the likelihood that a reflection and / or object is present in the environment. The display system may compare the score calculated from the environmental sensor data to the threshold score. If the score is higher than the threshold level, the display system may detect the presence of the reflection and / or object. In some other embodiments, the display system may signal the presence of an object in the environment if the score is lower than the threshold. In some embodiments, the threshold condition may be determined based on the user's emotional state and / or the user's interaction with the surrounding environment.

[0332] In some embodiments, threshold conditions, machine learning algorithms, or computer vision algorithms may be specialized for a specific context. For example, in a diagnostic context, a computer vision algorithm may be specialized to detect certain responses to stimuli. As another example, a display system may run a facial recognition algorithm and / or an event tracing algorithm to sense a user's reaction to a stimuli, as discussed herein.

[0333] It should be understood that each of the processes, methods, and algorithms described herein and / or depicted in the accompanying figures may be embodied in code modules, and thereby fully or partially automated, executed by one or more physical computing systems, hardware computer processors, application-specific circuits, and / or electronic hardware configured to execute specific computer instructions. For example, a computing system may include a general-purpose computer (e.g., a server) or a special-purpose computer, special-purpose circuitry, etc., programmed with specific computer instructions. Code modules may be compiled and linked into an executable program, installed within a dynamic link library, or written in an interpreted programming language. In some implementations, particular operations and methods may be performed by circuitry specific to a given function.

[0334] Furthermore, certain implementations of the functionality of the present disclosure may be sufficiently mathematically, computationally, or technically complex that special-purpose hardware (utilizing appropriate specialized executable instructions) or one or more physical computing devices may be required to perform the functionality, e.g., due to the amount or complexity of the calculations involved or to provide results in substantially real time. For example, a video may contain many frames, each frame may have millions of pixels, and specifically programmed computer hardware may be required to process the video data to provide the desired image processing task or application in a commercially reasonable amount of time.

[0335] Code modules or any type of data may be stored on any type of non-transitory computer-readable medium, such as physical computer storage, including hard drives, solid-state memory, random access memory (RAM), read-only memory (ROM), optical disks, volatile or non-volatile storage devices, combinations of the same, and / or the like. In some embodiments, the non-transitory computer-readable medium may be part of one or more of the local processing and data module (140), the remote processing module (150), and the remote data repository (160). The methods and modules (or data) may also be transmitted as a data signal generated over various computer-readable transmission media, including wireless-based and wired / cable-based media, (e.g., as part of a carrier wave or other analog or digital propagated signal), and may take various forms (e.g., as part of a single or multiplexed analog signal, or as multiple discrete digital packets or frames). The results of the disclosed processes or process steps may be stored, persistently or otherwise, in any type of non-transitory tangible computer storage device or communicated via a computer-readable transmission medium.

[0336] Any process, block, state, step, or functionality in the flow diagrams described herein and / or depicted in the accompanying figures should be understood as potentially representing a code module, segment, or portion of code, comprising one or more executable instructions for implementing a specific function (e.g., logical or arithmetic) or step in the process. Various processes, blocks, states, steps, or functionality may be combined, rearranged, added, deleted, modified, or otherwise changed from the illustrative examples provided herein. In some embodiments, additional or different computing systems or code modules may perform some or all of the functionality described herein. The methods and processes described herein are also not limited to any particular sequence, and the blocks, steps, or states associated therewith can be performed in other suitable sequences, e.g., serially, in parallel, or in some other manner. Tasks or events may be added to or removed from the disclosed exemplary embodiments. Furthermore, the separation of various system components in the embodiments described herein is for illustrative purposes and should not be understood as requiring such separation in all embodiments. It should be understood that the program components, methods, and systems described may generally be integrated together in a single computer product or packaged into multiple computer products. W. Other Considerations

[0337] Each of the processes, methods, and algorithms described herein and / or depicted in the accompanying figures may be embodied in code modules executed by one or more physical computing systems, hardware computer processors, application-specific circuits, and / or electronic hardware configured to execute specific computer instructions, and thereby may be fully or partially automated. For example, a computing system may include a general-purpose computer (e.g., a server) or a special-purpose computer programmed with specific computer instructions, special-purpose circuitry, etc. Code modules may be compiled and linked into an executable program, installed within a dynamic link library, or written in an interpreted programming language. In some implementations, particular operations and methods may be performed by circuitry specific to a given function.

[0338] Furthermore, certain implementations of the functionality of the present disclosure may be sufficiently mathematically, computationally, or technically complex that special-purpose hardware (utilizing appropriate specialized executable instructions) or one or more physical computing devices may be required to perform the functionality, e.g., due to the amount or complexity of the calculations involved or to provide results in substantially real time. For example, a moving picture or video may contain many frames, each frame having millions of pixels, and specifically programmed computer hardware may be required to process the video data to provide the desired image processing task or application in a commercially reasonable amount of time.

[0339] Code modules or any type of data may be stored on any type of non-transitory computer-readable medium, such as physical computer storage devices, including hard drives, solid-state memory, random-access memory (RAM), read-only memory (ROM), optical disks, volatile or non-volatile storage devices, combinations of the same, and / or the like. The methods and modules (or data) may also be transmitted as data signals (e.g., as part of a carrier wave or other analog or digital propagated signal) generated over various computer-readable transmission media, including wireless-based and wired / cable-based media, and may take various forms (e.g., as part of a single or multiplexed analog signal, or as multiple discrete digital packets or frames). The results of the disclosed processes or process steps may be stored, persistently or otherwise, in any type of non-transitory tangible computer storage device or communicated via a computer-readable transmission medium.

[0340] Any process, block, state, step, or functionality in the flow diagrams described herein and / or depicted in the accompanying figures should be understood as potentially representing a code module, segment, or portion of code, comprising one or more executable instructions for implementing a specific function (e.g., logical or arithmetic) or step in the process. Various processes, blocks, states, steps, or functionality can be combined, rearranged, added to, deleted from, modified, or otherwise altered from the illustrative examples provided herein. In some embodiments, additional or different computing systems or code modules may perform some or all of the functionality described herein. The methods and processes described herein are also not limited to any particular sequence, and the blocks, steps, or states associated therewith can be performed in other suitable sequences, e.g., serially, in parallel, or in some other manner. Tasks or events may be added to or removed from the disclosed exemplary embodiments. Furthermore, the separation of various system components in the implementations described herein is for illustrative purposes and should not be understood as requiring such separation in all implementations. It should be understood that the described program components, methods, and systems may generally be integrated together in a single computer product or packaged in multiple computer products. Many implementation variations are possible.

[0341] The processes, methods, and systems can be implemented in a network (or distributed) computing environment. Network environments include enterprise-wide computer networks, intranets, local area networks (LANs), wide area networks (WANs), personal area networks (PANs), cloud computing networks, crowdsourced computing networks, the Internet, and the World Wide Web. The network can be a wired or wireless network or any other type of communication network.

[0342] The systems and methods of the present disclosure each have several innovative aspects, none of which is solely responsible for or required for the desirable attributes disclosed herein. The various features and processes described above may be used independently of one another or combined in various ways. All possible combinations and subcombinations are intended to fall within the scope of the present disclosure. Various modifications of the implementations described in the present disclosure may be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other implementations without departing from the spirit or scope of the present disclosure. Accordingly, the claims are not intended to be limited to the implementations shown herein, but are to be accorded the widest scope consistent with the present disclosure, the principles, and novel features disclosed herein.

[0343] Certain features described herein in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation can also be implemented separately in multiple implementations or in any suitable subcombination. Furthermore, while features may be described above as operative in a combination and may even be initially claimed as such, one or more features from the claimed combination may, in some cases, be deleted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination. No single feature or group of features is required or essential to every embodiment.

[0344] In particular, conditional statements used herein, such as "can," "could," "might," "may," "eg," and the like, are generally intended to convey that certain embodiments include certain features, elements, and / or steps, while other embodiments do not, unless specifically stated otherwise or understood otherwise within the context as used. Thus, such conditional statements are generally not intended to imply that features, elements, and / or steps are in any way required for one or more embodiments, or that one or more embodiments necessarily include logic for determining whether those features, elements, and / or steps are to be included or performed in any particular embodiment, with or without authorial input or prompting. The terms "comprising," "including," "having," and the like, are synonymous and used inclusively in a non-limiting manner and do not exclude additional elements, features, acts, operations, etc. Also, the term "or," when used, for example, to connect a list of elements, is used in its inclusive sense (and not its exclusive sense) to mean one, some, or all of the elements in the list. Additionally, the articles "a," "an," and "the," as used in this application and the appended claims, should be construed to mean "one or more" or "at least one," unless otherwise specified.

[0345] As used herein, a phrase referring to "at least one of" a list of items refers to any combination of those items, including single elements. As an example, "at least one of A, B, or C" is intended to cover A, B, C, A and B, A and C, B and C, and A, B, and C. Transitional phrases such as "at least one of X, Y, and Z" are generally understood differently in the context in which they are used to convey that an item, term, etc. may be at least one of X, Y, or Z, unless specifically stated otherwise. Thus, su...

Claims

1. 1. A method for determining one or more parameters associated with an eye for rendering virtual image content in a display system configured to project light to an eye of a user for displaying the virtual image content within a field of view of the user, the eye having a cornea, the method comprising: capturing a plurality of images of the user's eye using a plurality of eye tracking cameras configured to image the user's eye and a plurality of light emitters positioned relative to the eye to form flashes of light thereon, the images comprising a plurality of flashes of light; obtaining an estimate of a center of rotation of the eye based on the plurality of flashes of light; and obtaining an estimate of the center of rotation of the eye comprises: determining a plurality of estimates of centers of corneal curvature of the user's eye based on the plurality of flashes of light; generating a three-dimensional surface from the plurality of estimates of the center of corneal curvature; using the three-dimensional surface to determine the estimate of the center of rotation of the user's eye; A method comprising:

2. Determining the plurality of estimates of the corneal curvature of the eye of the user comprises: determining a first vector directed toward the center of corneal curvature based on locations of at least some of the plurality of light emitters and a location of a first eye tracking camera of the plurality of eye tracking cameras; determining a second vector directed toward the center of corneal curvature based on locations of at least some of the plurality of light emitters and a location of a second eye tracking camera of the plurality of eye tracking cameras; determining a region of convergence between the first vector and the second vector to determine an estimate of the center of corneal curvature of the user's eye; and The method of claim 1 , comprising:

3. The first vector is defining a first plane that includes the first eye tracking camera, a location of a first flash of light reflection, and a location of the light emitter corresponding to the first flash of light reflection; defining a second plane that includes the first eye tracking camera, a location of a second flash of light reflection, and a location of the light emitter corresponding to the second flash of light reflection; determining a region of convergence of the first plane and the second plane, the region of convergence extending along the first vector; The method of claim 2 , wherein the value is determined by

4. The second vector is defining a third plane that includes the second eye tracking camera, a location of a third flash of light reflection, and a location of the light emitter corresponding to the third flash of light reflection; defining a fourth plane that includes the second eye tracking camera, a location of a fourth flash of light reflection, and a location of the light emitter corresponding to the fourth flash of light reflection; determining a region of convergence of the third plane and the fourth plane, the region of convergence extending along the second vector; The method of claim 2 , wherein the value is determined by

5. 5. The method of claim 1, wherein generating a three-dimensional surface from the multiple estimates of the center of corneal curvature comprises fitting a surface to the multiple estimates of the center of corneal curvature.

6. 5. The method of claim 1, wherein generating a three-dimensional surface from the plurality of estimates of the center of corneal curvature comprises fitting a sphere to the plurality of estimates of the center of corneal curvature.

7. Determining the estimate of the center of rotation of the user's eye comprises: determining two or more vectors normal to the three-dimensional surface; determining a region of convergence of the two or more vectors normal to the three-dimensional surface, the region of convergence comprising the estimate of the center of rotation of the user's eye; The method according to any one of claims 1 to 6, comprising:

8. The method of any preceding claim, wherein the plurality of images of the user's eye comprises images associated with different gaze directions of the user's eye.

9. The method of any preceding claim, further comprising mapping the cornea of ​​the user's eye using a gaze target.

10. 1. A display system configured to project light into a user's eye to display virtual image content within the user's field of view, the display system comprising: a frame configured to be supported on the user's head; a head-mounted display disposed on the frame, the display configured to project light into the user's eye to display virtual image content; first and second eye-tracking cameras configured to image the user's eye; and processing electronics in communication with the display and the first and second eye-tracking cameras, the processing electronics comprising: receiving captured images of a plurality of pairs of the user's eyes from the first and second eye-tracking cameras; obtaining, for pairs of images received from the first and second eye tracking cameras, respectively, an estimate of a center of corneal curvature of the user's eye based at least in part on the pairs of captured images; determining a three-dimensional surface based on an estimated center of corneal curvature of the user's eye obtained based on the plurality of pairs of captured images of the user's eye received from the first and second eye tracking cameras; Identifying a center of curvature of the three-dimensional surface to obtain an estimate of a center of rotation of the user's eye; A display system configured to execute the

11. 11. The display system of claim 10, wherein the processing electronics is configured to fit a three-dimensional surface to the estimated center of corneal curvature of the user's eye obtained based on the multiple pairs of captured images of the user's eye received from the first and second eye tracking cameras.

12. To obtain the estimate of the center of the corneal curvature of the user's eye based at least in part on the pair of captured images, the processing electronics: determining a first vector along which the center of corneal curvature of the user's eye is estimated to lie based on a first image received from the first eye tracking camera; determining a second vector along which the center of corneal curvature of the user's eye is estimated to lie based on a second image received from the second eye tracking camera, the first and second images corresponding to one of the pair of images; identifying a region of convergence between paths extending in the direction of the first vector and the second vector to obtain an estimate of a center of corneal curvature of the user's eye; 12. A display system according to claim 10 or 11, configured to execute:

13. further comprising a plurality of light emitters configured to illuminate the user's eyes to form a glint reflection thereon; To determine the first vector based on the first image of the pair of captured images, the processing electronics: defining a first plane that includes the first eye tracking camera, a location of a first flash of light reflection, and a location of the light emitter corresponding to the first flash of light reflection; defining a second plane that includes the first eye tracking camera, a location of a second flash of light reflection, and a location of the light emitter corresponding to the second flash of light reflection; identifying a region of convergence of the first plane and the second plane, the region of convergence extending along a direction of the first vector; 13. The display system of claim 12 configured to execute:

14. To determine the second vector based on the second image in each pair of captured images, the processing electronics: defining a third plane that includes the second eye tracking camera, a location of a third flash of light reflection, and a location of the light emitter corresponding to the third flash of light reflection; defining a fourth plane that includes the second eye tracking camera, a location of a fourth flash of light reflection, and a location of the light emitter corresponding to the fourth flash of light reflection; determining a region of convergence of the third plane and the fourth plane, the region of convergence extending along a direction of the second vector; 14. The display system of claim 13 configured to execute:

15. A display system as described in any one of claims 10 to 14, wherein the processing electronics is configured to render a virtual image to be presented to the eye of the user using a rendering camera, the rendering camera having a position determined by the center of rotation.

16. 16. A display system as described in any one of claims 10 to 15, wherein the display is configured to project light into the user's eyes with at least one of different amounts of divergence and collimation to display virtual image content in the user's field of view, such that the displayed virtual image content appears to originate from different depths at different time periods.

17. A display system as described in any one of claims 10 to 16, wherein at least a portion of the display is transparent, and the at least a portion of the display is positioned in a location in front of the user's eyes when the user wears the head-mounted display such that the transparent portion transmits light from a portion of the environment in front of the user and the head-mounted display to the user's eyes and provides a view of the portion of the environment in front of the user and the head-mounted display.

Citation Information

Patent Citations

  • Eye-tracking using GPU

    JP2011081807A

  • Corneal tracking for generating eyeball models

    JP2019512726A

  • Visual display with illuminators for gaze tracking

    US20110069277A1

  • Eye tracking using time multiplexing

    US20190042842A1

  • Eye center of rotation determination, depth plane selection, and render camera positioning in display systems

    WO2019143844A1