This disclosure relates generally to an eye-mounted device, such as an electronic contact lens.
Eye-mounted devices with projectors can be used for virtual reality (VR) applications and/or augmented reality (AR) applications. In AR applications, the images projected by the eye-mounted device augment what the user would normally see as his external environment, for example, as overlays on the external environment.
In some cases, eye-mounted devices may contain imagers used to capture image data from the external environment. Captured images may be used to generate processed image data to be displayed to the user. However, due to their size and location of being mounted on a user's eye, there may be restrictions on the area and maximum power consumption of components on the eye-mounted device, potentially limiting the types of image processing and analysis that can be performed.
Embodiments of the disclosure have other advantages and features which will be more readily apparent from the following detailed description and the appended claims, when taken in conjunction with the examples in the accompanying drawings, in which:
The figures and the following description relate to preferred embodiments by way of illustration only. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles of what is claimed.
An eye-mounted device includes a contact lens that contains a femtoimager and corresponding femtoprojector. The femtoimager captures images of a user's surrounding environment. Images captured by the femtoimager are transmitted to the femtoprojector via a signal path contained in the contact lens. The signal path contains digital image processing circuitry to perform one or more image processing functions on the captured images. In some embodiments, the image processing circuitry is configurable to implement different types of image processing, depending on the content of the images captured by the femtoimager. Components outside the contact lens may be used to determine the type of image processing, thus reducing power consumption within the contact lens. The femtoprojector then projects the resulting images onto the user's retina.
The image processing circuitry of the signal path performs image processing functions on the captured images to enhance the user's view of the local environment. For example, edge detection may be performed on the captured images to highlight edges of objects within the user's view, which may assist the user in being able to identify objects in their local environment. Other types of image processing functions may include enhancing a brightness or contrast of objects in the user's view. These types of functions may be especially useful for users with poor vision.
The signal path includes digital circuitry that forms a pipeline to process the images from the femtoimager. In some embodiments, the signal path includes a pipeline of convolution filters, each configured to perform a selected function, such as edge detection, blurring, sharpening, etc. In some embodiments, the signal path may further contain a linear pre-filter configured to apply a gain to received image data, to adjust a brightness or contrast of the image data. The functions performed by each filter are selected by one or more configuration parameters for the filter. By using multiple filters in series and/or parallel, a variety of different image processing functions can be performed on the captured images by changing the configuration parameters.
In some embodiments, the type of image processing performed may be based on a content of what the user is looking at. For example, depending on what type of object the user is looking at, the image processing circuitry may be configured to perform edge detection using a lower or higher edge detection threshold, to allow to increase or decrease an amount of edges detected. In some embodiments, certain types of image processing functions (e.g., brightness adjustment) may be used in certain contexts (e.g., the user is in a dark environment), as determined based upon images captured by the femtoimager.
Due to area and power restrictions of components that can be implemented on a contact lens, the signal path may further comprise a transmitter and receiver to communicate with an off-lens processing component for handling more computationally-intensive processing functions. For example, the transmitter may periodically transmit one or more captured images to the off-lens processing component, which determines a context of the captured images. The receiver receives a corresponding configuration parameter from the off-lens processing component, which is used to configure operations of the image processing circuitry of the signal path. By partitioning different types of processing functions between the on-lens circuitry and off-lens processing components, the amount of area and power consumed by the on-lens circuitry may be reduced. In addition, by separating context determination from the image processing performed on the signal path, the image processing can be performed with low latency in substantially real-time.
In some embodiments, power consumption by the image processing circuitry of the signal path may be further reduced by simplifying arithmetic operations performed by the image processing circuitry, such as by implementing multiplication with left/right bit shifters, implementing subtraction as bit inversion, etc. In addition, to reduce latency, the image processing circuitry may process captured images by streaming rows of the images rather than by storing and processing entire frames of the images.
In more detail,
The femtoimager 110 is a small imager that is outward facing and captures images of the external environment in a field of view of the femtoimager 110. The field of view of the femtoimager 110 can be the same, smaller or larger than a field of view of the user's eye. The femtoimager 110 includes imaging optics 111, a sensor array 112 and a sensor circuitry 114. The imaging optics 111 images a portion of the external environment onto the sensor array, which captures the image. The sensor array 112 may be an array of photodiodes. In some embodiments, the sensor array 112 operates in a visible wavelength band (i.e., ˜390 nm to 770 nm). Alternatively or additionally, the sensor array 112 operates in a non-visible wavelength band, such as an infrared (IR) band (i.e., ˜750 nm to 10 μm) or an ultraviolet band (i.e., <390 nm). For example, the sensor array 112 may be a thermal infrared sensor.
The sensor circuitry 114 is configured to sense and condition sensor signals produced by the sensor array 112. The sensor circuitry 114 may include analog-to-digital converters (ADC), so that the output signals are digital rather than analog. The sensor circuitry 114 may also have other functions. For example, the sensor circuitry 114 may amplify the sensor signals, convert them from current to voltage signals or filter noise from the sensor signals to keep a signal-to-noise ratio higher than a threshold value.
The imagery signals are sent along signal paths 120 from the sensor circuitry 114 through the processing circuitry 124 to driver circuitry 132 of the femtoprojector 130. The image processing circuitry 124 comprises logic circuitry to perform digital processing of the image data received from the femtoimager 110. The processing circuitry 124 may perform various types of image processing. One type of image processing is edge enhancement, where the processing circuitry 124 identifies edge boundaries in the imagery signals and increases a contrast around the identified edge boundaries. Consequently, the edge boundaries will look more defined when projected to the user. Other types of image processing may include contrast or brightness enhancement, blurring, sharpening, magnification, and the like. In some embodiments, the processing circuitry 124 may process images captured by the femtoimager 110 to generate an overlay. For example, where the femtoimager 110 operates in a thermal IR band, the processing circuitry 124 may process the image data to estimate a temperature of objects in the surrounding environment based on thermal IR image data captured by the femtoimager 110, which can be displayed to the user using the femtoprojector 130 overlaid on their existing view of the environment.
The femtoprojector 130 is a small projector that projects images corresponding to the imagery detected by the femtoimager 110 and processed by the processing circuitry 124 inward to the user's retina 140. The imagery projected by the femtoprojector 130 is visible to the user's retina 140 because the femtoprojector 130 operates at a visible wavelength band, regardless of whether the femtoimager 110 operates in a visible wavelength band, a non-visible wavelength band, or some combination thereof. The femtoprojector 130 includes driver circuitry 132, an LED (light emitting diode) array 134 and projection optics 135. In one approach, the driver circuitry 132 and LED array 134 are manufactured separately and later bonded together to form electrical connections. Alternately, they can be integrated on a single common substrate.
The driver circuitry 132 receives imagery signals from the processing circuitry 124 and converts these to drive signals to drive the LED array 134 (e.g., drive currents for LEDs). In some embodiments, the driver circuitry 132 enhances the imagery detected by the femtoimager 110, e.g., by amplifying the imagery signals. To save power, the driver circuitry 132 and LED array 134 may power down when no imagery signals are received. If the imagery signals are clocked data packets, the no signal situation may be detected when there is no clock present, for example if there is no clock signal on clock input pins or if no clock can be recovered from the incoming data stream. Also, the drive signals produced by the driver circuitry 132 may not be persistent. That is, the drive signals cause a corresponding subset of LEDs of the LED array 134 to produce light, but only when the drive signals are applied. Once the backplane no longer produces those drive signals, those LEDs also cease to produce light. In an example design, the driver circuitry 132 is an application specific integrated circuit (ASIC).
The LED array 134 contains an array of LEDs that produce light according to the drive signals from the driver circuitry 132, thus generating images corresponding to the images detected by the femtoimager 110. The array of light emitters 134 can have different geometries. One example geometry is a rectangular array of LEDs. Another example geometry is a hexagonal array of LEDs. The projection optics 135 project light from the LEDs to portions of the retina that in aggregate span a certain span of eccentricity (as described in more detail in
In some embodiments, the circuitry of the femtoimager 110, the processing circuitry 124, and the femtoprojector 130 are implemented on a single die. In other embodiments, the femtoimager 110, the processing circuitry 124, and the femtoprojector 130 are implemented on separate dies located at various locations on the electronic contact lens 105.
In some embodiments, the femtoimager 110 is regularly calibrated. In an example design, the femtoimager 110 runs a calibration cycle when the user's eyelid is closed.
The femtoimager 110 has a line of sight. The line of sight indicates a direction along which the femtoimager 110 detects imagery. The femtoprojector 130 has a line of projection, indicating a direction along which the femtoprojector 130 projects corresponding imagery to the user's retina 140. Depending on how the femtoimager 110 and the femtoprojector 130 are arranged, the line of sight of the femtoimager 110 may be parallel or not parallel to the line of projection of the femtoprojector 130. In some embodiments where the line of sight is parallel to the line of projection, the line of projection may be collinear with the line of sight. The femtoimager 110 and the femtoprojector 130 may have the same field of view/span of eccentricity and spatial resolution.
As shown in
The lead line from reference numeral 105 in
The electronic contact lens also includes other electronics, which may be located in a peripheral zone 150 of the contact lens. Electronic components in the lens may include microprocessors/controllers, motion sensors (such as accelerometers, gyroscopes and magnetometers), radio transceivers, power circuitry, antennas, batteries and elements for receiving electrical power inductively for battery charging (e.g., coils). For clarity, connections between the femtoprojector, femtoimager and electronics are not shown in
The femtoimager 110 is outward-facing, so that it “looks” away from the eye 100 and captures images of the surrounding environment. The femtoimager 110 is characterized by a line of sight 116 and a field of view (FOV) 118, as shown in
The femtoprojector 130 projects an image onto the user's retina. This is the retinal image 125 shown in
This particular design has a flexible printed circuit board 210 on which the different components are mounted. Conductive traces on the circuit board provide electrical connections between the different components. This flexible substrate 210 may be formed as a flat piece and then bent into the three-dimensional dome shape to fit into the contact lens. In the example of
The display pipeline 235 may comprise the signal paths 120 and processing circuitry 124 connecting the femtoimager 110 and femtoprojector. The display pipeline 235 may interface with the transmitter/receiver circuitry 215 to transmit/receive data to and from an external source. In some embodiments, the transmitter/receiver circuitry 215 transmits image data to the external source via an antenna (not shown). In addition, the transmitter/receiver circuitry 215 may comprise encryption circuitry configured to encrypt image data to be transmitted to the external source via the antenna. In some embodiments, the contact lens may also transmit other types data, such of eye tracking data, control data and/or data about the status of the contact lens. The display pipeline 235 receives from the external source, via the transmitter/receiver circuitry 215, control data (e.g., configuration parameters) for configuring the image processing functions of the processing circuitry 124. In other embodiments, the display pipeline 235 may receive image data from the external source.
Power may be received wirelessly via a power coil. This is coupled to circuitry 270 that conditions and distributes the incoming power (e.g., converting from AC to DC if needed). The power subsystem may also include energy storage devices, such as batteries 265 or capacitors. Alternatively, the electronic contact lens may be powered by batteries 265, and the batteries recharged wirelessly through a coil.
In addition to the on-lens components shown in
There are also many ways to implement the different off-lens system functions. Some portions of the system may be entirely external to the user, while other portions may be worn by the user in the form of a headpiece or glasses. Components may also be worn on a belt, armband, wrist piece, necklace, or other types of packs. In some embodiments, off-lens system functions may be performed by a plurality of off-lens components, such as an accessory device worn by the user, a remote server in communication with the accessory device, etc. For example, in some embodiments, off-lens image processing functions may be performed by a processing component on an off-lens accessory, on a remote server (e.g., a cloud server) in communication with the accessory, or some combination thereof.
In addition, the contact lens 300 is configured to communicate with an accessory device 340 containing an off-lens processing component 342. As discussed above, the accessory device 340 may be a device that is worn by the user, external to the user, or some combination thereof. For example, the accessory device 340 may comprise components worn by the user in the form of a headpiece, glasses, belt, armband, wrist piece, necklace, etc.
The image sensor 310 captures imagery of the user's surrounding environment, and generates image data based on the captured imagery. In some embodiments, the image sensor 310 comprises a digital linear filter 312 (also referred to as a pre-filter or a linear contrast filter) that performs one or more image processing functions on the captured image data. For example, the linear contrast filter 312 may apply a gain to the received image data, to adjust a brightness or contrast of the image data. The image sensor 310 further contains a register table 314 comprising a plurality of registers storing configuration parameters of the image sensor 310, which may comprise configuration parameters for the linear filter 312 (e.g., parameters specifying the gain applied by the linear filter 312 to the received image data, one or more thresholds used by the linear filter 312, etc.). In addition, the register table 314 may further store address mapping information (e.g., indicating addresses mapped to specific stored parameters).
The image processor 320 processes image data received from the image sensor 310 and transmits the processed image data to the display backplane 330. The image processor 320 comprises a cascade of convolution filters 322 configured to perform image processing functions on the received image data, such as edge detection, blurring, sharpening, etc. In some embodiments, to reduce memory storage requirements and processing latency, the cascaded convolution filters 322 process the received image data by streaming rows of the images through the filters, rather than by storing and processing entire frames of the images. The cascaded convolution filters 322 comprise at least two configurable convolution filters connected in series, and are described in greater detail below in relation to
The display backplane 330 receives processed image data from the image processor 320, and generates a drive signal to drive the femtoprojector 130. The display backplane 330 may access a register table 334 that stores configuration parameters for the driver circuitry of the display backplane, such as bit mode parameters (e.g., 1 bit mode, bits per pixel parameters), gamma function parameters (non-linear input/output characteristics), etc.
While
Due to area and power restrictions of components that can be implemented on a contact lens, the amount of processing that can be performed by the image processor 320 may be limited. In some embodiments, the image processor 320 comprises a transmitter and a receiver or interfaces with a transmitter/receiver (e.g., transmitter/receiver circuitry 215 in
In some embodiments, the image processor 320 transmits image data to the accessory device 340 periodically at a frame rate that is slower than a frame rate at which the images are captured by the image sensor 310. For example, the image processor 320 may be configured to transmit every Nth image captured by the image sensor, where N is an integer greater than 1. In some embodiments, the rate of image transmission is predetermined, based upon analysis of previously transmitted images, one or more user inputs, or some combination thereof. For example, in some embodiments, the off-lens processing component 342 determines a frequency parameter based upon analysis of one or more previously received images, which is received by the image processor 320 and used to control frequency of image transmission to the accessory device 340 (i.e., selection of N). In addition, in some embodiments, the image processor 320 further comprises an encryption module (not shown) configured to secure and encrypt image data to be transmitted to the accessory device 340.
In some embodiments, the image processor 320 transmits (encrypted) image data corresponding to a captured image frame to the accessory device 340 responsive to a received trigger. The trigger may correspond to an action by the user, such as a pre-determined sequence of eye blinking (e.g., three eye blinks in sequence or within a predetermined amount of time). Other types of triggers may comprise a user action performed on a component communicating with the electronic contact lens 105, change in lighting in the user's surrounding environment, recognition of an external image or pattern (e.g., a Quick Response code), and so on.
Examples of different types of image processing functions that may be performed by the linear filter 312 and the cascaded convolution filters 322 are illustrated in
In some embodiments, the linear filter 312 and cascaded convolution filters 322 perform multiple image processing functions on captured image data. For example, each filter may be configured to perform a different function on the image, and pass the results of the processing to the next filter on the path, in accordance with a set of configuration parameters stored in register tables 314/324, as explained in greater detail in
The image processor 320 uses the linear filter 312 and the cascaded convolution filters 322 to perform different combinations of image processing functions on captured image data, depending on the set of configuration parameters. In some embodiments, the configuration parameters are determined based on content of the captured images. For example, as discussed above in relation to
For example, when performing edge detection, an edge detection threshold is used to identify potential edges within captured image data. Depending on a content of the received images (corresponding to what the user is looking at), the edge detection threshold may be adjusted to decrease or increase an amount of detail captured in the highlighted edges of the processed image data (e.g., a lower threshold shows more edges including weaker edges, while a higher threshold emphasizes only stronger edges).
As such, different edge detection thresholds may be more useful to the user when performing edge detection on received image data, depending on what the user is looking at (e.g., a face or a sidewalk). The off-lens processing component 342 may analyze received image data to determine what type of scene the user is looking at, and set an edge detection threshold parameter accordingly. In some embodiments, the off-lens processing component 342 determines a “context” of what the user is looking at, and maps the context to a predetermined edge detection threshold value.
The off-lens processing component 342 may set different combinations of configuration parameters depending on the content of the received image data. For example, contrast enhancement may be useful for night vision applications. In some embodiments, the off-lens processing component 342 analyzes received image data to determine whether the user is in a daytime or nighttime environment (e.g., based on brightness levels of the received image data), and sets the configuration parameters for performing contrast enhancement accordingly. In some embodiments, where the image processor 320 applies a contrast and/or brightness function on the images, configuration parameters such as filter gain and threshold value may be determined based upon the content of the images, as determined by the off-lens processing component 342. In addition, in some embodiments, different types of contrast enhancement may be performed (e.g., enhancing contrast between different colors). An image may be sent to the off-lens processing component 342 to determine what form of contrast enhancement is needed in a given situation. For example, if red text on a green background is presented to a user who cannot distinguish red from green, then the red text could be highlighted in some other color or white. In some embodiments, a filter threshold may be set to a pixel value between green and red, such that pixels with red values are amplified, while green pixels are attenuated.
The off-lens processing component 342 may, by analyzing one or more images captured by the femtoimager, identify specific types of objects the user is looking at (e.g., faces), and/or determine a setting of the user (outdoor or indoor scene, daytime or nighttime, whether the user is driving a car or is just a passenger, etc.). In some embodiments, the off-lens processing component 342 may receive additional information (e.g., GPS location information, eye tracking information) from the contacts lens or from other devices to determine a context of what the user is looking at. Based on the content of the analyzed images, the off-lens processing component 342 determines a set of configuration parameters for the filters of the processing circuitry of the content lens, to be received and stored in the register tables of the content lens. The configuration parameters can be adjusted automatically as the off-lens processing component 342 analyzes additional received images.
The electronic contact lens is thus configured such that image processing functions (e.g., edge detection, contrast enhancement, etc.) are performed using the processing circuitry of the signal path on the contact lens, while image analysis functions are performed by an off-lens processing component. This partitioning of computing functions allows for computationally simpler image processing functions to be performed entirely on the lens, reducing a latency between image capture and projection. On the other hand, computationally more complex image analysis functions are performed on a separate device (e.g., accessory device 340), where minimizing power consumption and latency is less of a concern.
The image sensor 310 captures raw image data 805 that is received by the linear filter 312 (Filter 0, or linear pre-filter). The linear filter 312 scales the pixel values of the received image data x by a gain value m (as well as a bipolar offset value c) to produce processed image data pixel values y. In some embodiments, the scaling performed by the linear filter 312 is limited by lower and upper threshold values a and b, ensuring that the processed image data pixel values y remain within certain bounds.
The output of the linear filter 312 is received by cascaded convolution filters of the image processor 320. As illustrated in
As each convolution filter 810 processes received image data using one or more filter kernels that takes into account the neighboring pixels of each pixel of image data (e.g., for each pixel, calculating a sum of products of surrounding image data with a filter kernel), each convolution filter 810 receives image data from a respective data block 815 configured to store a plurality of rows of received image data, the number of rows corresponding to a filter kernel size (e.g., 3 rows for a 3×3 kernel). The data blocks 815 function as buffers that allow the convolution filters 810 to process the images by streaming rows of the images, rather than storing and then processing entire image frames.
Each convolution filter 810 comprises logic circuitry to convolve received image data using up to two filter kernels (e.g., a horizontal filter kernel and a vertical filter kernel) by calculating a sum of products of the image data and the filter kernels, and addition circuitry to sum the results of the two convolutions (e.g., convolution with horizontal filter kernel and convolution with vertical filter kernel). In addition, the convolution filter 810 contains threshold comparison circuitry to compare the convolved image data a threshold value to filter out values below the threshold. For example, when used for edge detection, the threshold value corresponds to the edge detection threshold, and filters out potential edges that do not meet the threshold. The convolution filter 810 may further contain gain circuitry to apply a gain to the remaining image data (e.g., to brighten detected edges).
In some embodiments, the signal path further comprises binning circuitry 820 (BIN) positioned before the convolution filters 810 configured to reduce a size of the received image data based on a binning factor. In some embodiments, the binning circuitry 820 samples every n-th pixel of the received image data along each dimension, where n corresponds to the binning factor. In some embodiments, the binning circuitry 820 determines an aggregate value of a cluster of pixels (e.g., a summation or average). For example, in an embodiment where the binning factor n is 2, the binning circuitry 820 may determine a sum or average pixel value for clusters of 2×2 pixels, effectively reducing a height and width of the output image by half along each dimension. In some embodiments, a memory (e.g., data block 815A) is used to store intermediate aggregate values produced by the binning circuitry 812 until pixel data for each cluster is received by the binning circuitry 820. The signal path may further comprise oversampling circuitry 825 (OS) positioned after the convolution filters 810, configured to increase a size of the image data based on an oversampling factor (e.g., by duplicating each pixel value m times along each dimension, where m corresponds to the oversampling factor). The binning circuitry 820 and oversampling circuitry 825 can thus be used to change the size and resolution of the image. In some embodiments, the binning circuitry 820 and oversampling circuitry 825 are used together to increase a line width of highlighted edges detected by the convolution filters 810 (e.g., by reducing the size of the image using the binning circuitry 820 prior to performing edge detection using the convolution filters 810, and then re-magnifying the image using the oversampling circuitry 825, magnifying the width of the detected edge lines). In some embodiments, the signal path may further comprise an image inversion circuit (not shown) configured to invert the pixel values of received image data.
While
As discussed above, the filter circuitry along the signal path is configurable to perform a variety of different image processing functions, each filter processing received image data based upon a set of configuration parameters. Configuration parameters for the linear filter 312 (Filter 0) may include a gain value (m), an offset value (c), and upper/lower threshold values (a, b). Configuration parameters for the convolution filters 810 of the cascaded convolution filters 322 (Filter 1, Filter 2) may include kernel values (e.g., horizontal kernel, vertical kernel), a threshold value, and a gain value. In addition, the binning and oversampling circuitry 820 and 825 may utilize respective configuration parameters (binning factor, oversampling factor).
In some embodiments, the off-lens processing component 422, responsive to analyzing one or more received images, transmits to the electronic contact lens a configuration parameter indicating a type of image processing to be performed (e.g., corresponding to a row of
By arranging the multiple filters (e.g., linear filter, at least two configurable convolution filters) in series, a variety of different image processing functions can be performed. Each filter processes image data received from the previous filter in the signal path, simplifying circuit design and reducing latency along the signal path. In cases where a particular filter is not needed to process the image data, the configuration parameters of the filter can be set to output image data in the same state as it was received (e.g., by setting gain values to 1, offset values to 0, filter kernels to identity kernels, etc.). In addition, in some embodiments, the image processor may comprise two or more filters arranged in a parallel configuration, or filters arranged in a series/parallel configuration.
In some embodiments, power consumption by the image processing circuitry of the signal path may be further reduced by simplifying arithmetic operations performed by the image processing circuitry. For example, any parameters to be used for multiplication or division (e.g., gain, filter kernel values) by the filters may be restricted to 0 or positive or negative powers of 2 (e.g., ±2°, ±2°, etc.), such that multiplication can be implemented using a bit shifter instead of a more complex multiplication circuit. Furthermore, subtraction may be implemented using bit inversion followed by addition.
By simplifying the logic circuitry for performing arithmetic operations in the linear and convolution filters, the power consumption and area of each filter may be reduced. For example, in some embodiments, each convolution filter consumes not more than 500 uW of power when processing 256 pixel by 256 pixel images at 50 FPS. In some embodiments, the linear filter/pre-filter consumes not more than 5 uW of power, or not more than 25 uW of power, when processing 256 pixel by 256 pixel images at 50 FPS.
Although the detailed description contains many specifics, these should not be construed as limiting the scope of the invention but merely as illustrating different examples. It should be appreciated that the scope of the disclosure includes other embodiments not discussed in detail above. Various other modifications, changes and variations which will be apparent to those skilled in the art may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope as defined in the appended claims. Therefore, the scope of the invention should be determined by the appended claims and their legal equivalents.