Patent ID: 12243352

Similar reference numerals may have been used in different figures to denote similar components.

DETAILED DESCRIPTION

The following describes example technical solutions of this disclosure with reference to accompanying drawings.

In various examples, the present disclosure describes methods and systems for pupil detection using adaptive binarization thresholding. The disclosed methods and systems are designed to determine an optimal pupil binarization threshold from a histogram of an eye image that maximally captures the geometric features of the pupil. An eye image is obtained and an eye image histogram is computed from the eye image. A pupil region and an iris region are identified in the eye image histogram and the second derivative of the eye image histogram is computed. The pupil binarization threshold is determined based on the gray value associated with a prominent peak of the second derivative of the eye image histogram, along with the identified pupil region and the identified iris region. The binarization threshold is then used to generate a binarized eye image, from which a pupil contour may be determined. The disclosed system may help to overcome challenges associated with robust and precise detection of a pupil contour, for example, in images of varying quality.

To assist in understanding the present disclosure, some existing techniques for pupil segmentation are now discussed.

Pupil segmentation refers to a process whereby eye image pixels are classified based on whether they are associated with a pupil-region of the eye or another non-pupil region of the eye (e.g. iris region, sclera region). Existing pupil segmentation methods can be categorized by the type of algorithm used to detect a pupil region from an image, for example, by detecting a pupil contour in an eye image that serves as a boundary separating the pupil region from a non-pupil region of the eye.

One common approach for pupil segmentation is histogram-based thresholding. Histogram-based thresholding often employs a binary classification approach assuming that elements of an image can be classified as belonging to either a “foreground” or a “background”, and where an optimum threshold level serves to divide the histogram into the two classes. For example, to expose the pupil and/or the iris of the eye depending on desired implementation. An example of a histogram-based thresholding method is described in: Yang, Fan, et al. “A pupil location method based on improved OTSU algorithm,” 2012IEEE2nd International Conference on Cloud Computing and Intelligence Systems, Vol. 3. IEEE, 2012, the entirety of which is hereby incorporated by reference. The approach presented in Yang et al. (2012) adapts the well-known OTSU global thresholding method to find an optimized threshold between the pupil and iris based on class-variance of an image histogram. Another histogram-based thresholding approach for pupil segmentation employing percentile histograms is described in: Bonteanu, Petronela, et al. “A robust pupil detection algorithm based on a new adaptive thresholding procedure,” 2019E-Health and Bioengineering Conference(EHB), IEEE, 2019, the entirety of which is hereby incorporated by reference. The approach presented in Bonteanu et al. (2019) examines prominent features and other qualities of the percentile function to determine an appropriate pupil threshold. In another example, a global thresholding method for pupil segmentation is described in: Wang, Yang, Xiaoyi Lu, and Wenjun Zhou. “Global adaptive optimization parameters for robust pupil location,” 2021 17th International Conference on Computational Intelligence and Security(CIS), IEEE, 2021, which is incorporated herein by reference.

Histogram-based thresholding methods can be tuned to perform with high accuracy in controlled or consistent conditions, but may suffer from limitations impacting pupil contour accuracy in variable conditions, for example, in variable lighting conditions producing low-contrast images or images with significant shadows or dark regions, or other conditions impacting image quality. Furthermore, image processing techniques designed to account for variable image conditions or to reduce image complexity may further hinder pupil segmentation accuracy by failing to preserve important features of the pupil in the image. As a result, current pupil segmentation methods designed for low computational complexity across a variety of technological platforms and real-world implementation scenarios cannot provide both high precision and robust, consistent performance.

Edge detectors are also frequently employed for pupil segmentation in order to detect the pupil contour within a region of interest, however they can perform poorly on out-of-focus images or images with low contrast. Furthermore, edge detectors may accurately detect edges of the pupil but may also produce unwanted artifacts by detecting edges of other features in an image, introducing additional noise and increasing processing complexity. Finally, machine learning-based pupil segmentation approaches are popular for their robust performance, however they tend to lack precision and may be computationally expensive, impacting performance particularly on low power hardware.

The present disclosure describes examples that may help to address some or all of the above drawbacks of existing technologies.

To assist in understanding the present disclosure, the following describes some concepts relevant to pupil segmentation and binarization thresholding, along with some relevant terminology that may be related to examples disclosed herein.

In the present disclosure, “segmentation” can mean: a process whereby image pixels are classified as belonging to one or more classes, for example, corresponding to an object or a specific region of interest within an image. Within the context of pupil segmentation, pixels of an eye image may be segmented into a pupil-region of the eye or another non-pupil region of the eye (e.g. iris region, sclera region).

In the present disclosure, “binarization” or “image binarization” can mean: the segmentation of pixels in an eye image into binary classes, namely, a “foreground” and a “background”. In examples, binarization is commonly performed using thresholding.

In the present disclosure, a “binarization threshold” can mean: an optimized threshold value that serves to separate pixels into one of the binary classes by comparison of a pixel value with the threshold value. For example, binarization of a grayscale image to generate a binary image (e.g. black and white image) may include classifying pixels based on the threshold value as “foreground” or black (e.g. grayscale value of 0) and classifying pixels based on the threshold value as “background” or white (e.g. grayscale value of 255). In this regard, considering that a pupil is a dark region of an image, a binarization threshold optimized for pupil segmentation may isolate the pupil region from the remainder of the image.

In the present disclosure, “adaptive thresholding” can mean: a method of determining a threshold value for a histogram representing pixel values from a portion or a region of an image. In this regard, adaptive thresholding may account for spatial variations in illumination, or other spatial variations in an image and may produce a threshold value for segmenting classes of pixels for a specific portion or region of an image. In examples the adaptive threshold may be applied globally to binarize an entire image. In the present disclosure, “global thresholding” can mean: a method of determining a threshold value for a histogram representing pixel values for an entire image.

In the present disclosure, a “gray level histogram” can mean: a graph used to illustrate a frequency distribution of pixel gray value for a population of pixels in a grayscale image, for example, an eye image. In examples, the gray level histogram may appear as a bar chart where each bar contains the number of observations of a particular variable, or in other examples the gray level histogram may appear as a continuous line chart where data points have been interpolated at some resolution. In examples, a gray value histogram may be presented as a histogram of the number of pixels corresponding to a range of gray values or the histogram may be normalized such that the ranges of the axes of the histogram span from 0-1.

In the present disclosure, a “pupil contour” can mean: a boundary in an eye image separating the pupil region from a non-pupil region of the eye, for example, an iris region.

FIG.1is a block diagram illustrating an example hardware structure of a computing system100that is suitable for implementing embodiments described herein. Examples of the present disclosure may be implemented in other computing systems, which may include components different from those discussed below. The computing system100may be used to execute instructions for pupil segmentation, using any of the examples described herein. The computing system100may also be used to train blocks of the pupil segmentation system200, or blocks of the pupil segmentation system200may be trained by another computing system.

AlthoughFIG.1shows a single instance of each component, there may be multiple instances of each component in the computing system100. Further, although the computing system100is illustrated as a single block, the computing system100may be a single physical machine or device (e.g., implemented as a single computing device, such as a single workstation, single end user device, single server, etc.), and may include mobile communications devices (smartphones), laptop computers, tablets, desktop computers, vehicle driver assistance systems, smart appliances, wearable devices, assistive technology devices, medical diagnostic devices, gaming devices, virtual reality devices, augmented reality devices, Internet of Things (IoT) devices, interactive kiosks, advertising and interactive signage, and educational tools, among others.

The computing system100includes at least one processor102, such as a central processing unit, a microprocessor, a digital signal processor, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a dedicated logic circuitry, a dedicated artificial intelligence processor unit, a graphics processing unit (GPU), a tensor processing unit (TPU), a neural processing unit (NPU), a hardware accelerator, or combinations thereof.

The computing system100may include an input/output (I/O) interface104, which may enable interfacing with an input device106and/or an optional output device110. In the example shown, the input device106(e.g., a keyboard, a mouse, a microphone, a touchscreen, and/or a keypad) may also include a camera108. In examples, the camera108may be an infrared (IR) light camera or a visible light (e.g. RGB) camera, among others. In the example shown, the optional output device110(e.g., a display, a speaker and/or a printer) are shown as optional and external to the computing system100. In other example embodiments, there may not be any input device106and output device108, in which case the I/O interface104may not be needed.

The computing system100may include an optional communications interface112for wired or wireless communication with other computing systems (e.g., other computing systems in a network). The communications interface112may include wired links (e.g., Ethernet cable) and/or wireless links (e.g., one or more antennas) for intra-network and/or inter-network communications.

The computing system100may include one or more memories114(collectively referred to as “memory114”), which may include a volatile or non-volatile memory (e.g., a flash memory, a random access memory (RAM), and/or a read-only memory (ROM)). The non-transitory memory114may store instructions for execution by the processor102, such as to carry out examples described in the present disclosure. For example, the memory114may store instructions for implementing any of the methods disclosed herein. The instructions can include instructions200-I for implementing and operating the pupil segmentation system200described below with reference toFIG.2. The memory114may include other software instructions, such as for implementing an operating system (OS) and other applications/functions.

The memory114may also store other data116, information, rules, policies, and machine-executable instructions described herein, including eye images210captured by the camera108, or histogram references120, including stored histogram boundary locations or stored histogram peak locations corresponding to an eye image210, among others.

In some examples, the computing system100may also include one or more electronic storage units (not shown), such as a solid state drive, a hard disk drive, a magnetic disk drive and/or an optical disk drive. In some examples, data and/or instructions may be provided by an external memory (e.g., an external drive in wired or wireless communication with the computing system100) or may be provided by a transitory or non-transitory computer-readable medium. Examples of non-transitory computer readable media include a RAM, a ROM, an erasable programmable ROM (EPROM), an electrically erasable programmable ROM (EEPROM), a flash memory, a CD-ROM, or other portable memory storage. The storage units and/or external memory may be used in conjunction with memory114to implement data storage, retrieval, and caching functions of the computing system100. The components of the computing system100may communicate with each other via a bus, for example.

FIG.2is a block diagram illustrating an example architecture of the pupil segmentation system200that may be used to implement methods to generate a binarized eye image270, in accordance with examples of the present disclosure.

In some examples, the pupil segmentation system200receives an input of an eye image210and outputs an binarized eye image270. The eye image210may be captured by a camera108on the computing system100or may be a digital image taken by another camera on another electronic device and communicated to the computing system100(e.g., in the case where the computing system100provides a pupil binarization service to other devices). In examples, an eye image210may be an IR image or an RGB image represented as a 2D matrix encoding individual pixels of the input image. In examples, the eye image210may be captured as a video frame rather than a static image.

In some embodiments, for example, the eye image210may be a pre-processed eye image or may undergo processing in advance of being input to the pupil segmentation system200. In examples, the details of pre-processing may be dependent on the image conditions (e.g. contrast, noise, masking, cropping etc.). In examples, the eye image210may be a grayscale eye image in which each pixel of the grayscale eye image may have a corresponding gray value.

In some embodiments, for example, the eye image210may be extracted from a face image or another image captured by the camera108, where the eye image210includes an eye region300of an individual. In some embodiments, for example, the eye region300may be extracted using a machine learning (ML) approach, or in other embodiments, an eye region300may be obtained automatically by a head-mounted display (HMD), among others. In examples, the eye image210may be cropped and/or masked tightly to the eye region300, features of which are described with respect toFIG.3below.

FIG.3is an example schematic diagram of an eye region300, including a dark pupil301, suitable for implementation of examples described herein. In examples, a pupil301may exhibit the characteristic of absorbing light very efficiently, therefore a pupil301may present as a dark prominent feature in an eye image210. Similarly, a pupil301may also present as a dark prominent feature in an eye image histogram230in one or more color spaces. In examples, the eye region300may also include an iris302and a sclera303. In examples, a plurality of eyelashes304may also be visible, or optionally, features such as eye makeup305may be visible corresponding to the eye region300.

Returning toFIG.2, the eye image210, for example, a grayscale eye image may then be normalized and may be input to a histogram generator220to generate an eye image histogram230. In examples, the eye image histogram230may be a gray level histogram, in which the pixel population (or pixel count) of the eye image210is distributed with respect to pixel gray value. In examples, the pixel gray value may be a normalized pixel gray value.

FIG.4is an example eye image histogram230, in accordance with examples of the present disclosure. It should be noted that the example eye image histogram230is a simplified example for the purposes of illustration. In examples, the eye image histogram230may show two prominent peaks, for example, a first peak representative of the pupil region405, the pupil region405being associated with a darker gray value, and a second peak representative of the iris region410, the iris region410being associated with a lighter gray value. In examples, determining an optimal adaptive threshold value between the greyscale value of the pupil region405and the iris region410is important in ensuring that the shape of the pupil is maximally preserved during pupil segmentation.

Returning toFIG.2, the eye image histogram230may be input to an eye feature extractor240to determine an optimal adaptive binarization threshold250. In examples, the functional blocks of the eye feature extractor240are described below with reference toFIG.5A.

FIG.5Ais a block diagram illustrating an example architecture of an eye feature extractor240, in accordance with examples of the present disclosure. In examples, a filter block510of the eye feature extractor240may receive the eye image histogram230and may output an interpolated eye image histogram520. In examples, the filter block510may serve to remove noise or other undesirable values from the eye image histogram, or to more effectively expose eye features in the histogram, for example, the pupil region405or the iris region410, among other benefits. In examples, the filter block510may also include a linear interpolation operation to help smooth the eye image histogram230. An example interpolated eye image histogram520is presented inFIG.5B, in accordance with examples of the present disclosure. In examples, a histogram features block530may determine upper and lower boundaries for both the pupil region405and the iris region410, where the boundaries correspond to a gray value in the interpolated eye image histogram520. In examples, the boundaries of the pupil region405and the iris region410may be used be used by the histogram features block530to define a pupil-iris window540that spans a gray value corresponding to the pupil region405and the iris region410in the interpolated eye image histogram520.

In some embodiments, for example, the upper and lower boundaries of the pupil region405and the iris region410for a first eye image210ain a sequence of eye images may be stored (e.g. in memory114) by the histogram features block530of the eye feature extractor240as at least one of a plurality of histogram references120. In some embodiments, for example, the histogram references120may be retrieved by the histogram features block530during processing of a second eye image210band used as starting boundaries for an initial search window when determining histographic features (e.g. upper and lower boundaries of the pupil region405and iris region410). In examples, storing and retrieving histogram references120may be beneficial in helping to reduce processing time between successive eye images210in a sequence of video frames or static images.

In examples, the interpolated eye image histogram520may also be input to a second derivative block550to generate a pixel population acceleration560. In examples, the second derivative of the interpolated eye image histogram520may be computed and filtered, to obtain the pixel population acceleration560with respect to the grey value. An example pixel population acceleration560is presented inFIG.5C, in accordance with examples of the present disclosure. In examples, prior to computing a second derivative of the interpolated eye image histogram520, a first derivative may be computed, and optionally filtered, to obtain a pixel population velocity. In examples, the pupil-iris window540may also be indicated inFIG.5C.

In examples, a peak finder570may be used to identify acceleration peaks in the pixel population acceleration560. An example pixel population acceleration showing acceleration peaks572,574,576and578is presented inFIG.5D, in accordance with examples of the present disclosure. In examples, a first prominent acceleration peak572identified in the pixel population acceleration560that is located within the pupil-iris window540may be used to determine the optimal binarization threshold250for the eye image210. In examples, the gray value corresponding to the first prominent acceleration peak572may be defined as the optimal binarization threshold250, for example, the binarization threshold value that maximally captures the geometric features of the pupil in an eye image210.FIG.5Eillustrates an example interpolated eye image histogram520ofFIG.5B, including a binarization threshold250, in accordance with examples of the present disclosure. In examples, the binarization threshold250inFIG.5Ecorresponds to the first prominent peak572in the pixel population acceleration560ofFIG.5D, with respect to the pupil region405, the iris region410and the pupil-iris window540.

In some embodiments, for example, the acceleration peaks572,574,576and578, or other peaks corresponding to histographic eye features, for a first eye image210ain a sequence of eye images may be stored (e.g. in memory114) by the peak finder570as at least one of a plurality of histogram references120. In some embodiments, for example, the histogram references120may be retrieved by the peak finder570during processing of a second eye image210band a flow can be identified between histograms of subsequent images by tracking the 2-dimensional flow. In examples, storing and retrieving histogram references120may be beneficial in helping to reduce processing time between successive eye images210in a sequence of video frames or static images.

Returning toFIG.2, the binarization threshold250may be input to a binarization block260to generate a binarized eye image270. In examples, the binarization threshold250may be applied to the pixels of an eye image210to generate a binarized eye image270in which the gray value associated with each pixel is compared to the binarization threshold250and where the gray value of those pixels situated below the binarization threshold value may be set equal to zero (e.g. black) and the gray value of the remaining pixels situated above the binarization threshold value may be set equal to 1 (e.g. white). In this regard, the binarized image270may present a clearly exposed pupil where the shape of the pupil may be preserved very well across a variety of image conditions.

In some embodiments, for example, the binarized eye image270may be input to an optional pupil geometry estimator280to generate a pupil contour290and a pupil center295. In examples, a variety of methods may be used to estimate a pupil contour290and a pupil center295from the binarized eye image270.FIG.2illustrates the pupil geometry estimator280as being external to the pupil segmentation system200. In other examples, the pupil geometry estimator280may be part of the pupil segmentation system200.

FIG.6Aillustrates an example embodiment of the pupil segmentation system200, in accordance with examples of the present disclosure. In the example embodiment, an artifact binarization threshold255may also be generated by the eye feature extractor240and input to the binarization block260. In some examples, the eye image210may include areas of the image that appear to be darker than the pupil301, for example, when the eye image210includes pigments associated with eye makeup305worn by an individual, or due to insufficient lighting conditions, among others. In examples, dark areas of an image may be visible as a dark artifact region605feature adjacent to a pupil region405in a corresponding interpolated eye image histogram520. In this regard, dark artifacts that remain visible in a binarized eye image270may interfere with pupil contour detection or other processing of the binarized eye image270.

FIG.6Billustrates an example interpolated eye image histogram520, in accordance with the example embodiment of the present disclosure. In examples, a dark artifact region605is visible adjacent to a pupil region405in the interpolated eye image histogram520. In examples, the artifact binarization threshold255may effectively separate the pupil region405from the dark artifact region605. In some embodiments, for example, using the artifact threshold255, a preliminary binarization may be performed on the eye image210to remove the dark artifacts from the eye image210prior to performing threshold binarization using the binarization threshold250.

FIGS.6C-Eillustrate example eye images, in accordance with the example embodiment of the present disclosure. In examples,FIG.6Cillustrates an example eye image210including areas of the image (e.g. eye makeup305) that appear to be darker than the pupil301.FIG.6Dillustrates an example binarized eye image270corresponding to the eye image210ofFIG.6C, where the dark artifact region605and pupil region405are both visible. In examples, by applying the artifact binarization threshold255in a preliminary binarization operation, the exposed dark artifact region605can then be dilated and masked from the original image before pupil threshold binarization to generate a masked binarized eye image610.FIG.6Eillustrates an example artifact mask600obtained using dilated dark artifacts610. In some examples, to mitigate any negative impact to the resulting pupil contour caused by dark artifact masking, cascading of the binarization method steps may be performed on a region of interest (ROI) about the pupil. Although the disclosed methods have described the use of an artifact threshold255to assist the removal of dark artifacts from an eye image210, it is understood that other artifacts in an eye image210other than dark artifacts may be removed using the artifact threshold255.

FIGS.7A and7Billustrate an example interpolated eye image histogram520and high-pass filtered eye image histogram720, respectively, in accordance with an example embodiment of the present disclosure. In certain circumstances, significant noise705may be visible between the peaks of the pupil region405and iris region410in an interpolated eye image histogram520, as shown inFIG.7A. In this regard, such noise may pose challenges with determining an optimal binarization threshold250for an eye image210, for example, by introducing a prominent acceleration peak in the pixel population acceleration560that may not maximally capture the pupil contour. In some embodiments, for example, an incremental high-pass filter may be applied to the interpolated eye image histogram520as an optional element of the filter block510of the eye feature extractor240to generate a high-pass filtered eye image histogram720. In examples, one or more plateaus (e.g. pupil region plateau710and iris region plateau715) may be introduced by the high-pass filter that correspond with local maxima in the interpolated eye image histogram520. In examples, a pupil-iris window740may be defined using the intersection of the pupil region plateau710and the interpolated eye image histogram520as the upper search boundary of the pupil-iris window740. In examples, as shown inFIG.7B, a binarization threshold250may be determined from a prominent acceleration peak in the pixel population acceleration560corresponding to the pupil-iris window740. In examples, the binarization threshold250may correspond to a gray value immediately before the intersection of the pupil region plateau710and the interpolated eye image histogram520.

FIG.8is a flowchart illustrating an example method800for obtaining a binarized eye image270, which can be used for estimating a pupil contour290or a pupil center295, in accordance with examples of the present disclosure. The method800may be performed by the computing system100. For example, the processor102may execute computer readable instructions (which may be stored in the memory114) to cause the computing system100to perform the method800. The method800may be performed using a single physical machine (e.g., a workstation or server), a plurality of physical machines working together (e.g., a server cluster), or cloud-based resources (e.g., using virtual resources on a cloud computing platform).

Method800begins with step802in which an eye image210is obtained. The eye image210may be captured by a camera108on the computing system100or may be a digital image or video frame taken by another camera on another electronic device and communicated to the computing system100.

At step804, an eye image histogram230is computed based on the eye image210. In examples, the eye image histogram230may represent a frequency distribution of pixel population with respect to gray value in a grayscale eye image210. In examples, the eye image histogram230may show two prominent peaks, for example, a first peak representative of the pupil region405, the pupil region405being associated with a darker gray value, and a second peak representative of the iris region410, the iris region410being associated with a lighter gray value.

At steps806and808, upper and lower boundaries may be identified corresponding the pupil region405and the iris region410, respectively. In examples, the upper and lower boundaries of the pupil region405and iris region410, respectively, may be used to define a pupil-iris window540.

At step810, a binarization threshold250may be determined based on the second derivative of the eye image histogram230, the identified pupil region405and the identified iris region410. In examples, the eye image histogram230may be filtered and interpolated to generate an interpolated eye image histogram520and the second derivative of the interpolated eye image histogram520may be computed to generate a pixel population acceleration560. A prominent acceleration peak572may be identified in the pixel population acceleration560that is located within the pupil-iris window540, where the prominent acceleration peak572has a corresponding gray value. In examples, the gray value corresponding to the prominent acceleration peak572may be defined as the optimal binarization threshold250.

Optionally, in some embodiments, for example, steps802to810may be iterated to obtain a further refined threshold. In examples, a first binarization threshold may be obtained and used to roughly localize the pupil, and then subsequent binarization thresholds may be determined and applied one or more times on a sub-frame region of interest (ROI) containing the pupil. In examples, an advantage of cascading the binarization threshold approach is that a refined binarization threshold may be obtained that maximally captures the geometric features of the pupil.

Optionally, at step812, a binarized eye image270may be generated based on the eye image210and the pupil binarization threshold250. In examples, the binarization threshold250may be applied in a segmentation approach to binarize the pixels of the eye image210into one of two classes (e.g. pupil and non-pupil) based on the binarization threshold.

Optionally, at step814, a pupil contour290may be determined using a variety of pupil geometry estimation approaches, based on the binarized eye image270. Optionally, at step816a pupil center295may be determined using a variety of pupil geometry estimation approaches, based on the pupil contour290. In examples, at least one of the pupil contour290or the pupil center295may be input to a gaze estimation system to estimate a gaze vector representing a gaze direction or to estimate a point of gaze (POG), for example, on a screen or in the surrounding environment. In other embodiments, for example, at least one of the pupil contour290or the pupil center295may be used to localize other features of the eye or regions of the eye.

While described primarily in the context of a gaze estimation, various other eye-tracking or eye movement monitoring applications that require precise tracking of the eye or pupil may benefit from some or all aspects of the present disclosure. Some examples include: medical devices and software (e.g. ocular surgical and testing procedures require precise feature tracking to align instruments), neurological tests to asses pupil state and response to stimulus, iris biometric identification (e.g. accurate positioning of a pupil may improve iris recognition), lightfield rendering and on-eye display projection. For example, lightfield rendering is a complex field of computational optics and is currently only practical when rendering for a limited number of 3D viewpoints. If lightfields are rendered for users, these 3D viewpoints are at the exact center of the optical aperture of an eye (pupil). Therefore, determining the center of the pupil as precisely as possible may result in more accurate lightfield rendering for a user. Similarly, on-eye projection displays require precise localization of the same aperture.

Various embodiments of the present disclosure having been thus described in detail by way of example, it will be apparent to those skilled in the art that variations and modifications may be made without departing from the disclosure. The disclosure includes all such variations and modifications as fall within the scope of the appended claims.

Although the present disclosure describes methods and processes with steps in a certain order, one or more steps of the methods and processes may be omitted or altered as appropriate. One or more steps may take place in an order other than that in which they are described, as appropriate.

Although the present disclosure is described, at least in part, in terms of methods, a person of ordinary skill in the art will understand that the present disclosure is also directed to the various components for performing at least some of the aspects and features of the described methods, be it by way of hardware components, software or any combination of the two. Accordingly, the technical solution of the present disclosure may be embodied in the form of a software product. A suitable software product may be stored in a pre-recorded storage device or other similar non-volatile or non-transitory computer readable medium, including DVDs, CD-ROMs, USB flash disk, a removable hard disk, or other storage media, for example. The software product includes instructions tangibly stored thereon that enable a processing device (e.g., a personal computer, a server, or a network device) to execute examples of the methods disclosed herein. The machine-executable instructions may be in the form of code sequences, configuration in-formation, or other data, which, when executed, cause a machine (e.g., a processor or other processing device) to perform steps in a method according to examples of the present disclosure.

The present disclosure may be embodied in other specific forms without departing from the subject matter of the claims. The described example embodiments are to be considered in all respects as being only illustrative and not restrictive. Selected features from one or more of the above-described embodiments may be combined to create alternative embodiments not explicitly described, features suitable for such combinations being understood within the scope of this disclosure.

All values and sub-ranges within disclosed ranges are also disclosed. Also, although the systems, devices and processes disclosed and shown herein may comprise a specific number of elements/components, the systems, devices and assemblies could be modified to include additional or fewer of such elements/components. For example, although any of the elements/components disclosed may be referenced as being singular, the embodiments disclosed herein could be modified to include a plurality of such elements/components. The subject matter described herein intends to cover and embrace all suitable changes in technology.