Method and apparatus for eye tracking

A method and apparatus for eye tracking are disclosed. The method may include obtaining feature points corresponding to at least one portion of a face area of the user in an image, determining an inner area of an eye area of a first eye of the user based on the feature points, determining a pupil area of the user based on a pixel value of at least one pixel of the inner area, and determining an eye position of the user based on a position value of each pixel of the pupil area.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority under 35 U.S.C. § 119 to Korean Patent Application No. 10-2015-0126149, filed on Sep. 7, 2015, at the Korean Intellectual Property Office, the entire contents of which are incorporated herein by reference in its entirety.

BACKGROUND

At least one example embodiment relates to eye tracking technology.

2. Description of the Related Art

There is technology for tracking a position of a user in association with a glassless three-dimensional (3D) display that provides a 3D effect using a binocular disparity principle. The 3D display may be controlled based on the position of the user. Accurately tracking a position of a user is a part of outputting a 3D image without deterioration in image quality to a glassless 3D display.

SUMMARY

At least some example embodiments relate to an eye tracking method.

In at least some example embodiments, the method may include obtaining feature points corresponding to at least one portion of a face area of the user in an image, determining an inner area of an eye area of a first eye of the user based on the feature points, determining a pupil area of the user based on a pixel value of at least one pixel of the inner area, and determining an eye position of the user based on a position value of each pixel of the pupil area.

The determining of the inner area may include determining the inner area of the eye area based on positions of pixels of the eye area and positions of the feature points of the eye area, wherein the inner eye area is within a boundary defined by the feature points.

The determining of the pupil area may include determining the pixels of the pupil area based on a first brightness average value of the pixels of the inner area and a second of adjacent pixels to an eye center feature point of the image, the eye center feature point being a feature point corresponding to a center of the first eye of the user of the feature points.

The determining of the pixels of the pupil area of the image may include determining whether a brightness value of a selected pixel of the inner area is less than a first threshold value and less than a second threshold value, the first threshold value being based on the first brightness value and the second threshold value being based on the second brightness average value.

The determining of the inner area may include calculating a first vector based on selected pixel of the eye area and a first eye contour feature point of the feature points, calculating a second vector based on the first eye contour feature point and a second eye contour feature point of the feature points, the second eye contour feature point being adjacent to the first eye contour feature point, and determining whether the selected pixel is in the inner area based on the first vector and the second vector.

The determining whether the selected pixel is in the inner area may include determining that the selected pixel is in the inner area when vector calculation results of each of the first and second eye contour feature points are indicated by a same sign.

In at least another example embodiment, the method further includes controlling a glassless display based on the determined eye position of the user.

At least other example embodiments relate to an eye tracking apparatus.

In at least some example embodiments, the eye tracking apparatus may include a memory configured to store computer readable instructions and a processor configured to obtain feature points corresponding to at least one portion of a face area of the user in an image, determine an inner area of an eye area of a first eye of the user based on the feature point; determine a pupil area of the user based on a pixel value of at least one pixel of the inner area, and determine an eye position of the user based on a position value of each pixel of the pupil area.

The processor may be configured to determine the pixels of the inner area in response to a vector calculation result based on a positional relationship between the feature points and pixels of the eye area.

The processor may be configured to determine the pixels of the pupil area based on a brightness value of the pixels of the inner area, a first brightness average value of the pixels of the inner eye area of the image and a second brightness average value of adjacent pixels of an eye center feature point of the feature points, the eye center feature point corresponds to a center of an eye of the user.

At least other example embodiments relate to an eye tracking apparatus.

In at least some example embodiments, the eye tracking apparatus may include a memory configured to store computer readable instructions and a processor configured to determine an eye area of a user in an image based on feature points, detect an edge component in a vertical direction of the eye area and detect an ellipse component associated with a pupil area based on the detected edge component, and determine a center of an ellipse as an eye position of the user based on the ellipse component

At least one example embodiment discloses an eye tracking method. The method includes determining an eye area of a first eye of a user in an image based on feature points of the eye area, determining an inner area of the eye area based on positions of pixels of the eye area and positions of the feature points of the eye area, determining a pupil area of the user based on a pixel value of each pixel of the inner area and determining an eye position of the user based on a position value of each pixel of the pupil area.

DETAILED DESCRIPTION

It should be understood, however, that there is no intent to limit this disclosure to the particular example embodiments disclosed. On the contrary, example embodiments are to cover all modifications, equivalents, and alternatives falling within the scope of the example embodiments. Like numbers refer to like elements throughout the description of the figures.

Example embodiments may be applied for tracking an eye view of a user in various applications, for example, a glassless three-dimensional (3D) display, a glass-type wearable device, virtual reality (VR), a video game, a personal computer (PC), a tablet computer, a mobile device, a smart home appliance, and an intelligent car. For example, example embodiments may be applied to display a 3D image based on an eye position of a user by tracking the eye position of the user in a glassless 3D display.

Various example embodiments will now be described more fully with reference to the accompanying drawings in which some example embodiments are shown. In the drawings, the thicknesses of layers and regions are exaggerated for clarity.

FIG. 1illustrates an example of an eye tracking apparatus according to at least one example embodiment.

Referring toFIG. 1, an eye tracking apparatus100determines an eye position of a user from an image in which an eye area of the user is photographed. The image may be obtained by an image obtaining apparatus (not shown), for example, a camera, and the obtained image may be transmitted to the eye tracking apparatus100. The eye tracking apparatus100may determine an eye position of the user for each received image frame and output information on the determined eye position. The output information may be used for various applications based on information on an eye position of a user.

The eye tracking apparatus100includes a feature point detector110, an eye area determiner120, an inner eye area determiner130, a pupil area determiner140, and an eye position determiner150. Operations of the feature point detector110, the eye area determiner120, the inner eye area determiner130, the pupil area determiner140, and the eye position determiner150may be performed by at least one processor executing computer-readable instructions stored in a memory or by a field programmable gate array (FPGA).

The feature point detector110detects feature points of an eye from an image. The feature point detector110may detect a face area or an eye and nose area of the user in the image, and detect at least one eye contour feature point and an eye center feature point in the detected face area or the eye and nose area. The eye center feature point refers to a feature point detected in a vicinity of a center of the eye area, and the eye contour feature point refers to a feature point detected on a contour of the eye.

The feature point detector110may extract a local feature, for example, a local binary pattern (LBP), a scale invariant feature transform (SIFT), a histogram of oriented gradient (HOG), a modified census transform (MCT), and a Gabor jet, of an image, and detect the eye and nose area from the image by inputting the detected feature to an eye and nose area recognizer (not shown) trained in advance. In an example, the feature point detector110may detect eye contour feature points in the eye and nose area using an active contour model (ACM), an active shape model (ASM), an active appearance model (AAM), or a supervised descent method (SDM), and determine a center point among the detected eye contour feature points as an eye center feature point.

The eye area determiner120determines the eye area of the user in the image based on the feature points detected by the feature point detector110. The eye area determiner120may determine a maximum distance among distances between the eye center feature point and the eye contour feature points by calculating distances between the eye center feature point and each of the eye contour feature points, and determine the eye area based on the eye center feature point and the maximum distance. For example, the eye area determiner120may determine, as the eye area, an area located within the maximum distance based on the eye center feature point or an area horizontally and vertically located within the maximum distance based on the eye center feature point.

The inner eye area determiner130determines an inner eye area in the eye area. The inner eye area refers to an area corresponding to an actual eye of a user. The inner eye area determiner130may determine the inner eye area in response to a vector calculation result based on a position relationship between the eye contour feature points and pixels of the eye area. For example, the inner eye area determiner130may calculate a first vector based on a position of a current pixel of the eye area and a position of the eye contour feature point and calculate a second vector based on the position of the eye contour feature point and a position of an adjacent eye contour feature point. Another eye contour feature point positioned in a clockwise direction from the eye contour feature point may be determined as the adjacent eye contour feature point. The inner eye area determiner130may perform outer product calculation of a vector based on the first vector and the second vector.

The inner eye area determiner130may also calculate the first vector and the second vector and perform the outer product calculation with respect to other eye contour feature points. The inner eye area determiner130may determine that the current pixel is included in the inner eye area when outer product calculation results with respect to the current pixel and each of the eye contour feature points are indicated by a same sign. The inner eye area determiner130may determine that the current pixel is included in an outer eye area other than the inner eye area when the outer product calculation results are indicated by different signs.

The pupil area determiner140determines a pupil area based on a pixel value of pixels of the inner eye area. The pupil area determiner140may determine pixels of the pupil area based on a first brightness average value of pixels of the inner eye area and a second brightness average value of adjacent pixels of the eye center feature point. For example, the pupil area determiner140may determine that the current pixel is included in the pupil area when a brightness value of the current pixel of the inner eye area is less than a first threshold value based on the first brightness average value and a second threshold value based on the second brightness average value. In an example, the first threshold value may be equal to the first brightness average value, and the second threshold value may have a value greater than or equal to the second brightness average value.

The eye position determiner150determines an eye position of the user based on a position value (e.g., 2D coordinates) of each pixel of the pupil area. For example, the eye position determiner150determines an average value of position values of the pixels of the pupil area as the eye position of the user.

In another example, the feature point detector110may not fully detect the feature points with respect to the eye area in the image. Hereinafter, a process in which the eye tracking apparatus100determines the eye position of the user from the image when the feature point detector110detects a small number of the eye contour feature points from the image will be described.

The eye area determiner120determines the eye area of the user in the image based on the eye contour feature points detected in the image. For example, when the eye contour feature points positioned in an eye contour are detected, the eye area determiner120may calculate a center among the eye contour feature points and calculate a distance in a horizontal direction among the eye contour feature points based on the determined center. The eye area determiner120may determine a distance in a vertical direction by multiplying the distance in the horizontal direction by a predetermined and/or selected value and determine, as the eye area, an area based on the distance in the horizontal direction and the distance in the vertical direction according to the center among the eye contour feature points. The pupil area determiner140may detect an edge component in a vertical direction in the determined eye area and detect an ellipse component associated with the pupil area based on the detected edge component. Here, an ellipse of the ellipse component includes a circle. The eye position determiner150may estimate a virtual ellipse overlapping with the pupil area based on the detected ellipse component and determine a center of gravity of the ellipse as the eye position of the user.

The eye position determiner150converts eye position information of a two-dimensional (2D) coordinate value determined based on the aforementioned process to a 3D coordinate value. For example, the eye position determiner150may convert the eye position information to the 3D coordinate value based on distance information on a distance between both eyes and direction information on the face of the user. In this example, a standard value, for example, 65 millimeters (mm), may be used as the distance information on the distance between both eyes. However, the distance information on the distance between both eyes is not limited thereto. For example, the eye position determiner150may generate a personalized 3D face model by matching the feature points detected in the image and a 3D face model, and estimate the direction information on the face of the user based on direction information on the personalized face model.

Hereinafter, the eye tracking apparatus100which may accurately detect the eye position of the user in the image based on the aforementioned process, is described. The eye tracking apparatus100may reduce a vibration of the eye position generated between image frames by tracking centers of two pupil areas for each image frame.

FIGS. 2 through 8illustrate examples in which an eye tracking apparatus tracks an eye position of a user in an image according to at least one example embodiment.

Referring toFIG. 2, an eye tracking apparatus may detect an eye center feature point210estimated to be positioned in an eye center in an image and eye contour feature points222,224,226,228,230, and232positioned in an eye contour. The eye tracking apparatus may calculate a distance between the eye center feature point210and each of the eye contour feature points222,224,226,228,230, and232and determine a maximum distance value dmax based on values of each calculated distance (e.g., a maximum distance among the calculated distances).

Referring toFIG. 3, the eye tracking apparatus may determine an eye area310based on the maximum distance value dmax determined inFIG. 2. The eye tracking apparatus may determine an area horizontally and vertically located within the maximum distance value dmax based on the eye center feature point210. The eye area310may be a rectangular shape as illustrated inFIG. 4, or a circular shape of which a radius corresponds to the maximum distance value dmax based on the eye center feature point210, however, the scope of example embodiments is not limited thereto.

Referring toFIG. 4, the eye tracking apparatus may determine an inner eye area in the eye area310. The eye tracking apparatus may determine whether a pixel410is included in the inner eye area based on a positional relationship between the pixel410of the eye area310and the eye contour feature points222,224,226,228,230, and232. The eye tracking apparatus may perform outer product calculation between a first vector V1based on the eye contour feature point224and the pixel410, and a second vector V2based on the eye contour feature point224and the eye contour feature point226adjacent to the eye contour feature point224in a clockwise direction. In the same manner, the eye tracking apparatus may perform the outer product calculation between a first vector V3based on the eye contour feature point226and the pixel410and a second vector V4based on the eye contour feature point226and the eye contour feature point228adjacent to the eye contour feature point226in a clockwise direction. The eye tracking apparatus may perform the outer product calculation with respect to other eye contour feature points222,228,230, and232based on the same process and may determine whether all outer product calculation results are indicated by a same sign. In a case of the pixel410, outer product calculation results are indicated by a same sign, thereby determining that the pixel410is included in the inner eye area.

As illustrated inFIG. 5, when a process identical to the process ofFIG. 4is performed with respect to a pixel510that exists in the eye area310but is actually positioned in an external eye area, outer product calculation results between the pixel510and each of the eye contour feature points222,224,226,228,230, and232are not indicated by a same sign. For example, when an outer product calculation result between a first vector V5based on the eye contour feature point228and the pixel510and a second vector V6based on the eye contour feature point228and the eye contour feature point230adjacent to the eye contour feature point228in a clockwise direction is indicated by a sign “+”, an outer product calculation result between a first vector V7based on the eye contour feature point230and the pixel510and a second vector V8based on the eye contour feature point230and the eye contour feature point232adjacent to the eye contour feature point230in a clockwise direction is indicated by a sign “−”. Since the signs of the outer product calculation results between the pixel510and each of the eye contour feature points222,224,226,228,230, and232are not identical, the eye tracking apparatus may determine that the pixel510is not included in the inner eye area.

The eye tracking apparatus may determine pixels of the inner eye area in the eye area310by performing the process ofFIGS. 4 and 5with respect to each pixel included in the eye area310.FIG. 6illustrates an inner eye area610detected from the eye area310based on the process ofFIGS. 4 and 5.

Referring toFIG. 7, the eye tracking apparatus may determine a pupil area in the inner eye area610based on pixel value information on pixels within the inner eye area610. The eye tracking apparatus may calculate a first brightness average value corresponding to an average value of brightness values of pixels of the inner eye area610, and calculate a second brightness average value corresponding to an average value of brightness values of pixels of an adjacent area710of the eye center feature point210among the pixels of the inner eye area610.

For example, the eye tracking apparatus may determine that a predetermined and/or selected pixel is included in the pupil area when the predetermined and/or selected pixel included in the inner eye area610satisfies Equation 1.
brightness value of pixel<first brightness average value, and
brightness value of pixel<second brightness value+compensation value  [Equation 1]

As shown in Equation 1, a compensation value is a predetermined and/or selected value to adjust a condition of Equation 1 and has a value greater than or equal to “0”.

In most cases, a first brightness average value with respect to the inner eye area610may be considered to be a threshold value, since a brightness value of the pupil area is less than a brightness value of an adjacent area of the pupil area. However, since a size of the pupil area is less than the adjacent area of the pupil area in the inner eye area610, a pixel included in the adjacent area of the pupil area may be falsely determined as the pupil area when only the first brightness average value is considered. As shown in Equation 1, the eye tracking apparatus may more accurately determine the pupil area in the inner eye area610by considering the second brightness average value with respect to the adjacent area710of the eye center feature point210in addition to the first brightness average value.

The eye tracking apparatus may perform the aforementioned process with respect to all pixels included in the inner eye area610and store information, for example, a position value, on pixels determined as the pupil area.

FIG. 8illustrates a pupil area810determined based on the tracking process described with reference toFIG. 7. The eye tracking apparatus may determine an average value of position values of pixels included in the determined pupil area810as an eye position820of a user.

FIGS. 9 through 14illustrate other examples in which an eye tracking apparatus tracks an eye position of a user in an image according to at least one example embodiment.

Referring toFIG. 9, the eye tracking apparatus may detect an eye and nose area910in an image and detect feature points922,924,926, and928of an eye. InFIGS. 9 through 14, feature points are assumed to be detected in a contour of each eye as illustrated inFIG. 9. The eye tracking apparatus may detect a position of an eye of a user more quickly by using a small number of feature points.

Referring toFIG. 10, the eye tracking apparatus may calculate a center among feature points based on a position relationship between two feature points detected in each eye. The eye tracking apparatus may calculate a center1010between the feature points922and924and calculate a center1020between the feature points926and928.

Referring toFIG. 11, the eye tracking apparatus may determine eye areas1110and1120based on the detected centers1010and1020and positions of the feature points922,924,926, and928. For example, the eye tracking apparatus may calculate a horizontal distance between the feature point922and the feature point924, and determine a vertical distance by multiplying the calculated horizontal distance by a predetermined and/or selected rate, for example, “⅓”. The eye tracking apparatus may determine, as the eye area1110, an area based on the horizontal distance and the vertical distance from the center1010. With respect to the center1020and the feature points926and928, the eye tracking apparatus may determine the eye area1120based on the aforementioned process.

Referring toFIG. 12, the eye tracking apparatus may detect edge components1212,1214,1216, and1218in a vertical direction in determined eye areas. For example, the eye tracking apparatus may detect the edge components1212,1214,1216, and1218based on a Sobel edge extracting scheme, a Prewitt edge extracting scheme, a Roberts edge extracting scheme, and a Canny edge extracting scheme.

Referring toFIG. 13, the eye tracking apparatus may detect ellipses1310and1320associated with a pupil area in an eye area by fitting an ellipse based on the detected edge components1212,1214,1216, and1218. Referring toFIG. 14, the eye tracking apparatus may calculate a center of gravity of each of the detected ellipses1310and1320and determine the calculated centers of gravity as eye positions1410and1420of the user.

FIG. 15Aillustrates an example of a display device according to at least one example embodiment.

Referring toFIG. 15A, a display device1510may be, for example, a glassless display to output a 3D image without 3D glasses. The display device1510may track an eye position of a user and output a 3D image by reconstructing the 3D image based on the tracked eye position of the user. The display device1510includes a camera1520, an eye position detector1530, an image processor1540, and a display1550.

The camera1520may obtain a face image in which a face area of the user is present by photographing the user positioned in front of the display device1510.

The eye position detector1530may detect the eye position of the user in the face image. The eye position detector1530may detect feature points of an eye in the face area or an eye and nose area in the face image, and detect the eye position of the user based on the detected feature points. The eye position detector1530may detect a position of an eye based on different methods according to a number of the detected feature points. For example, when a large number of eye contour feature points and an eye center feature point are detected in the face image, the eye position detector1530may detect the eye position of the user from the face image. The eye position detector1530may detect a position of an eye based on the processes described inFIGS. 1 through 14. In another example, the eye position detector1530may detect the eye position through a template matching in the eye and nose area and determine a center value of a template as a position of an eye center.

The eye position detector1530may convert eye position information of a 2D coordinate value determined based on the aforementioned process to a 3D coordinate value. In order to generate, by the display device1510, a 3D image corresponding to positions of the left and right eye of the user in a 3D space, the positions of both eyes of the user are required to be converted from the 2D coordinate value to the 3D coordinate value. The eye position detector1530may convert the eye position information to the 3D coordinate value based on distance information on a distance between both eyes of the user and direction information on a face of the user. A predetermined and/or selected value, for example, 65 mm, may be used as the distance information on both eyes, however, the distance information is not limited thereto. The direction information on the face of the user may be obtained by matching the feature points detected from the face image and a 3D face model and calculating an angle at which the 3D face model rotates. In another example, the eye position detector1530may determine the 3D coordinate value of the eye position of the user based on a triangulation method using at least two cameras, for example, the camera1520.

In an example, the eye position detector1530may convert the eye position information to the 3D coordinate value, correct the eye position information by estimating the eye position, and transfer the eye position information to the image processor1540. A predetermined and/or selected amount of time may be required for generating the 3D image corresponding to the eye position of the user after the image processor1540receives the eye position information from the eye position detector1530. When the user moves, the eye position information on the user may require corrections since a time delay occurs between a point of time at which the eye position of the user is detected and a point of time at which the image processor1540generates and outputs the 3D image. Thus, the eye position detector1530may estimate an eye position path of the user based on movement information of a user and the image processor1540may reconstruct the 3D image based on the estimated eye position path.

The image processor1540may reconstruct the 3D image, for example, a stereo image or 3D graphic data, based on the eye position of the user determined by the eye position detector1530. The image processor1540may reconstruct the 3D image to be output through the display1550such that the 3D image reaches to the eye position of the user.

The display1550may display the 3D image processed by the image processor1540. For example, display1550may display the 3D image using a lenticular lens, a parallax barrier, and a directional back light.

FIG. 15Billustrates a hardware block diagram of the display device1510.FIG. 15Billustrates a processor1560configured to send and receive data/instructions to/from the camera1520and to/from a non-transitory computer-readable medium1570.

The non-transitory computer-readable medium1570stores instructions for performing the functions described inFIGS. 1-14. More specifically, the processor1560may perform the functions of the eye tracking apparatus100, the eye position detector1530and the image processor1540by executing the instructions stored in the non-transitory computer-readable medium1570. Thus, by executing the instructions stored by the non-transitory computer-readable medium1570, the processor1560becomes a special purpose computing device that performs eye tracking and eye position determination described above with reference toFIGS. 1 through 14. The processor1560may include one or more processing devices such as Central Processing Units (CPUs), digital signal processors (DSPs), application-specific-integrated-circuits, field programmable gate arrays (FPGAs) computers or the like.

The processor1560is also configured instruct the display1550to display the processed 3D image.

FIG. 16is a flowchart illustrating an example of an eye tracking method according to at least one example embodiment. The eye tracking method may be performed by the eye tracking apparatus100, for example.

Referring toFIG. 16, in operation1610, the eye tracking apparatus detects feature points from an image. For example, the eye tracking apparatus may detect an eye and nose area in an image in which a face of a user is photographed and detect an eye center feature point and at least one eye contour feature point in the eye and nose area.

In operation1620, the eye tracking apparatus determines an eye area in an image based on the detected feature points. For example, the eye tracking apparatus may determine a maximum distance among distances between the eye center feature point and each of the eye contour feature points by calculating distances between the eye center feature point and each of the eye contour feature points, and determine the eye area based on the eye center feature point and the maximum distance.

In operation1630, the eye tracking apparatus determines an inner eye area based on positions of pixels of the eye area and positions of the feature points. The eye tracking apparatus may calculate a first vector based on a position of a current (selected) pixel of the eye area and a position of an eye contour feature point and calculate a second vector based on the position of the eye contour feature point and a position of an adjacent eye contour feature point. The eye tracking apparatus may perform outer product calculation of a vector based on the first vector and the second vector. The eye tracking apparatus may identically calculate the first vector and the second vector with respect to other eye contour feature points. The eye tracking apparatus may determine that the current pixel is included in the inner eye area when outer product calculation results with respect to the eye contour feature points are indicated by a same sign, and determine that the current pixel is not included in the inner eye area when the outer product calculation results are indicated by different signs. The eye tracking apparatus may store information, for example, a brightness and a position, on pixels determined to be included in the inner area.

In operation1640, the eye tracking apparatus determines a pupil area based on a pixel value of each the pixels of the inner eye area. The eye tracking apparatus may determine that the current pixel is included in the pupil area when a brightness value of the current pixel of the inner eye area is less than a first threshold value based on a first brightness average value and a second threshold value based on a second brightness average value. In such an example, the first brightness average value refers to an average value of brightness values of the pixels of the inner eye area and the second brightness average value refers to an average value of brightness values of adjacent pixels of the eye center feature point. The eye tracking apparatus may store information, for example, a position, on the pixels determined to be included in the pupil area.

In operation1650, the eye tracking apparatus determines an eye position of the user based on a position value of each of the pixels of the pupil area. The eye tracking apparatus determines an average value of the position values of the pixels of the pupil area as the eye position of the user.

At operation1660, the processor1560controls the display based on the determined eye position of the user.

The units and/or modules (e.g., the feature point detector110, the eye area determiner120, the inner eye area determiner130, the pupil area determiner140, the eye position determiner150, the eye position detector1530and the image processor1540) described herein may be implemented using hardware components and hardware components executing software components. For example, the hardware components may include microphones, amplifiers, band-pass filters, audio to digital convertors, and processing devices. A processing device may be implemented using one or more hardware device configured to carry out and/or execute program code by performing arithmetical, logical, and input/output operations. The processing device(s) may include a processor, a controller and an arithmetic logic unit, a digital signal processor, a microcomputer, a field programmable array, a programmable logic unit, a microprocessor or any other device capable of responding to and executing instructions in a defined manner. The processing device may run an operating system (OS) and one or more software applications that run on the OS. The processing device also may access, store, manipulate, process, and create data in response to execution of the software. For purpose of simplicity, the description of a processing device is used as singular; however, one skilled in the art will appreciated that a processing device may include multiple processing elements and multiple types of processing elements. For example, a processing device may include multiple processors or a processor and a controller. In addition, different processing configurations are possible, such a parallel processors.