GAZE POINT CALCULATION APPARATUS AND DRIVING METHOD THEREFOR, AND ELECTRONIC DEVICE
20230015967 · 2023-01-19
Assignee
- Beijing Boe Optoelectronics Technology Co., Ltd. (Beijing, CN)
- Boe Technology Group Co., Ltd. (Beijing, CN)
Inventors
Cpc classification
G06F9/30
PHYSICS
G06T1/20
PHYSICS
International classification
G06V10/94
PHYSICS
Abstract
A gaze point calculation apparatus includes: a first cache register, a multiplexer, an arithmetic unit assembly, and a state machine. The first cache register is configured to receive and store first coordinates and a plurality of calibration parameters required when second required are obtained through calculation according to the first coordinates. The state machine is configured to control the multiplexer to select each time at least one value from the first cache register and transmit same to the arithmetic unit assembly. The arithmetic unit assembly is configured to perform a preset operation on the at least one value received each time until the second coordinates are obtained, and output the second coordinates under control of the state machine.
Claims
1. A gaze point calculation apparatus, comprising: a first cache register configured to receive and store first coordinates and a plurality of calibration parameters required when second coordinates are obtained through calculation according to the first coordinates, the first coordinates being position coordinates of a pupil, and the second coordinates being position coordinates of a gaze point; a multiplexer coupled to the first cache register; an arithmetic unit assembly coupled to the multiplexer; and a state machine coupled to the multiplexer and the arithmetic unit assembly, wherein the state machine is configured to control the multiplexer to select each time at least one value from the first cache register and transmit the at least one value to the arithmetic unit assembly; the at least one value is selected from the first coordinates and the plurality of calibration parameters; and the arithmetic unit assembly is configured to perform a preset operation on the at least one value received each time until the second coordinates are obtained, and output the second coordinates under control of the state machine.
2. The gaze point calculation apparatus according to claim 1, wherein the arithmetic unit assembly obtains the second coordinates through calculation according to following formulas:
X.sub.G=a.sub.0+a.sub.1x.sub.1+a.sub.2y.sub.1+a.sub.3x.sub.1y.sub.1+a.sub.4x.sub.1.sup.2+a.sub.5y.sub.1.sup.2;
Y.sub.G=b.sub.0+b.sub.1x.sub.1+b.sub.2y.sub.1+b.sub.3x.sub.1y.sub.1+b.sub.4x.sub.1.sup.2+b.sub.5y.sub.1.sup.2; wherein (x.sub.1, y.sub.1) is the first coordinates; a.sub.0 to a.sub.5 and b.sub.0 to b.sub.5 are the calibration parameters, and a.sub.0 to a.sub.5 and b.sub.0 to b.sub.5 are vectors; and (X.sub.G, Y.sub.G) is the second coordinates.
3. The gaze point calculation apparatus according to claim 2, wherein the arithmetic unit assembly includes: a multiplier coupled to the multiplexer, the multiplier being configured to calculate x.sub.1.sup.2, a.sub.1x.sub.1, a.sub.4(x.sub.1.sup.2), x.sub.1y.sub.1, y.sub.1.sup.2, a.sub.2y.sub.1, a.sub.3(x.sub.1y.sub.1), a.sub.5(y.sub.1.sup.2), b.sub.1x.sub.1, b.sub.2y.sub.1, b.sub.3(x.sub.1y.sub.1), b.sub.4(x.sub.1.sup.2) and b.sub.5(y.sub.1.sup.2); and an accumulator coupled to the multiplier, the multiplexer and the state machine, the accumulator being configured to calculate
a.sub.0+a.sub.1x.sub.1+a.sub.2y.sub.1+a.sub.3xy.sub.1+a.sub.4x.sub.1.sup.2+a.sub.5y.sub.1.sup.2 to output X.sub.G, and calculate
b.sub.0+b.sub.1x.sub.1+b.sub.2y.sub.1+b.sub.3x.sub.1y.sub.1+b.sub.4x.sub.1.sup.2+b.sub.5y.sub.1.sup.2 to output Y.sub.G.
4. The gaze point calculation apparatus according to claim 2, wherein the arithmetic unit assembly includes: a first multiplier coupled to the multiplexer, the first multiplier being configured to calculate a.sub.1x.sub.1, a.sub.4(x.sub.1.sup.2), a.sub.2y.sub.1, a.sub.3(x.sub.1y.sub.1), and a.sub.5(y.sub.1.sup.2); a first accumulator coupled to the first multiplier, the multiplexer and the state machine, the first accumulator being configured to calculate a.sub.0+a.sub.1x.sub.1+a.sub.2y.sub.1+a.sub.3xy.sub.1+a.sub.4x.sub.1.sup.2+a.sub.5y.sub.1.sup.2 to output X.sub.G; a second multiplier coupled to the multiplexer, the second multiplier being configured to calculate b.sub.1x.sub.1, b.sub.4(x.sub.1.sup.2), b.sub.2y.sub.1, b.sub.3(x.sub.1y.sub.1), and b.sub.5(y.sub.1.sup.2); and a second accumulator coupled to the second multiplier, the multiplexer and the state machine, the second accumulator being configured to calculate b.sub.0+b.sub.1x.sub.1+b.sub.2y.sub.1+b.sub.3x.sub.1y.sub.1+b.sub.4x.sub.1.sup.2+b.sub.5y.sub.1.sup.2 to output Y.sub.G, wherein at least one of the first multiplier and the second multiplier is further configured to calculate x.sub.1.sup.2, x.sub.1y.sub.1 and y.sub.1.sup.2; or, the first multiplier is further configured to calculate a part of x.sub.1.sup.2, x.sub.1y.sub.1 and y.sub.1.sup.2, and the second multiplier is further configured to calculate a remaining part of x.sub.1.sup.2, x.sub.1y.sub.1 and y.sub.1.sup.2.
5. The gaze point calculation apparatus according to claim 1, wherein the arithmetic unit assembly is further configured to: convert the received at least one value from an original code into a complement code; calculate the at least one value converted into the complement code to obtain an intermediate calculation result; and convert the intermediate calculation result from another complement code into another original code to obtain an operation result.
6. The gaze point calculation apparatus according to claim 1, wherein the arithmetic unit assembly is further coupled to the first cache register; the arithmetic unit assembly is further configured to transmit, under the control of the state machine, at least a part of intermediate values that need to be stored in intermediate values generated by the arithmetic unit assembly to the first cache register for storage.
7. The gaze point calculation apparatus according to claim 1, further comprising: a normalization processing module coupled to the first cache register, the normalization processing module being configured to: receive initial coordinates of the pupil in an acquired image of a human eye; and perform normalization processing on the initial coordinates to obtain the first coordinates, and transmit the first coordinates after the normalization processing to the first cache register.
8. The gaze point calculation apparatus according to claim 7, wherein the normalization processing module performs the normalization processing on the initial coordinates according to following formulas:
x.sub.1=x′/a lateral resolution of the acquired image of the human eye;
y.sub.1=y′/a vertical resolution of the acquired image of the human eye; wherein (x′, y′) is the initial coordinates, and (x.sub.1, y.sub.1) is the first coordinates.
9. The gaze point calculation apparatus according to claim 1, wherein the gaze point calculation apparatus is a field programmable gate array (FPGA) chip or an application specific integrated circuit (ASIC) chip.
10. An electronic device, comprising the gaze point calculation apparatus according to claim 1.
11. The electronic device according to claim 16, wherein the pupil coordinate extraction module includes: a camera configured to acquire the image of the human eye; and a processing module configured to determine, according to the acquired image of the human eye, the initial coordinates of the pupil in the image of the human eye based on an image processing algorithm.
12. The electronic device according to claim 10, wherein the electronic device comprises an augmented reality (AR) display device or a virtual reality (VR) display device.
13. A driving method for a gaze point calculation apparatus, the gaze point calculation apparatus including a first cache register, a multiplexer coupled to the first cache register, an arithmetic unit assembly coupled to the multiplexer, and a state machine coupled to the multiplexer and the arithmetic unit assembly, the driving method comprising: controlling, by the state machine, the multiplexer to select each time at least one value from the first cache register and transmit the at least one value to the arithmetic unit assembly; the at least one value is selected from first coordinates and a plurality of calibration parameters required when second coordinates are obtained through calculation according to the first coordinates, both the first coordinates and the plurality of calibration parameters are stored in the first cache register; performing, by the arithmetic unit assembly, a preset operation on the at least one value received each time until the second coordinates are obtained; and outputting, by the arithmetic unit assembly, the second coordinates under control of the state machine.
14. The gaze point calculation apparatus according to claim 1, wherein the arithmetic unit assembly further includes at least one second cache register; the arithmetic unit assembly is further configured to transmit, under the control of the state machine, at least a part of intermediate values that need to be stored in intermediate values generated by the arithmetic unit assembly to the at least one second cache register for storage.
15. The gaze point calculation apparatus according to claim 1, wherein the arithmetic unit assembly is further coupled to the first cache register; the arithmetic unit assembly is further configured to transmit, under the control of the state machine, some of at least a part of intermediate values that need to be stored in intermediate values generated by the arithmetic unit assembly to the first cache register for storage; and the arithmetic unit assembly further includes at least one second cache register; the arithmetic unit assembly is further configured to transmit, under the control of the state machine, another of the part of intermediate values that need to be stored in the intermediate values generated by the arithmetic unit assembly to the at least one second cache register for storage.
16. The electronic device according to claim 10, further comprising a pupil coordinate extraction module and a display driver module that are coupled to the gaze point calculation apparatus, wherein the pupil coordinate extraction module is configured to acquire an image of a human eye, and determine initial coordinates of the pupil in the image of the human eye according to the image of the human eye; the initial coordinates or initial coordinates after normalization processing are the first coordinates, and the first coordinates are the position coordinates of the pupil; the gaze point calculation apparatus is configured to obtain the second coordinates through calculation according to the first coordinates; the second coordinates are the position coordinates of the gaze point; and the display driver module is configured to process a displayed image according to the second coordinates.
17. The driving method according to claim 13, wherein the second coordinates are obtained according to following formulas:
X.sub.G=a.sub.0+a.sub.1x.sub.1+a.sub.2y.sub.1+a.sub.3x.sub.1y.sub.1+a.sub.4x.sub.1.sup.2+a.sub.5y.sub.1.sup.2;
Y.sub.G=b.sub.0+b.sub.1x.sub.1+b.sub.2y.sub.1+b.sub.3x.sub.1y.sub.1+b.sub.4x.sub.1.sup.2+b.sub.5y.sub.1.sup.2; wherein (x.sub.1, y.sub.1) is the first coordinates; a.sub.0 to a.sub.5 and b.sub.0 to b.sub.5 are the calibration parameters, and a.sub.0 to a.sub.5 and b.sub.0 to b.sub.5 are vectors; and (X.sub.G, Y.sub.G) is the second coordinates.
18. The driving method according to claim 13, further comprising: converting the received at least one value from an original code into a complement code; calculating the at least one value converted into the complement code to obtain an intermediate calculation result; and converting the intermediate calculation result from another complement code into another original code to obtain an operation result.
19. The driving method according to claim 13, further comprising: receiving initial coordinates of the pupil in an acquired image of a human eye; performing normalization processing on the initial coordinates to obtain the first coordinates, and transmitting the first coordinates after the normalization processing to the first cache register.
20. The driving method according to claim 19, wherein the normalization processing is performed according to following formulas:
x.sub.1=x′/lateral resolution of the acquired image of the human eye;
y.sub.1=y′/vertical resolution of the acquired image of the human eye; wherein (x′, y′) is the initial coordinates, and (x.sub.1, y.sub.1) is the first coordinates.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0027] In order to describe technical solutions in the present disclosure more clearly, accompanying drawings to be used in some embodiments of the present disclosure will be introduced briefly below. Obviously, the accompanying drawings to be described below are merely accompanying drawings of some embodiments of the present disclosure, and a person of ordinary skill in the art may obtain other drawings according to these drawings. In addition, the accompanying drawings to be described below may be regarded as schematic diagrams, and are not limitations on actual sizes of products, actual processes of methods and actual timings of signals to which the embodiments of the present disclosure relate.
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
DETAILED DESCRIPTION
[0041] Technical solutions in some embodiments of the present disclosure will be described clearly and completely with reference to the accompanying drawings below. Obviously, the described embodiments are merely some but not all embodiments of the present disclosure. All other embodiments obtained by a person of ordinary skill in the art based on the embodiments of the present disclosure shall be included in the protection scope of the present disclosure.
[0042] Unless the context requires otherwise, throughout the description and the claims, the term “comprise” and other forms thereof such as the third-person singular form “comprises” and the present participle form “comprising” are construed in an open and inclusive sense, i.e., “including, but not limited to”. In the description, the terms such as “one embodiment”, “some embodiments”, “exemplary embodiments”, “example”, “specific example” or “some examples” are intended to indicate that specific features, structures, materials or characteristics related to the embodiment(s) or example(s) are included in at least one embodiment or example of the present disclosure. Schematic representation of the above term does not necessarily refer to the same embodiment(s) or example(s). In addition, the specific features, structures, materials or characteristics may be included in any one or more embodiments or examples in any suitable manner.
[0043] Hereinafter, the terms “first” and “second” are only used for descriptive purposes, and are not to be construed as indicating or implying the relative importance or implicitly indicating the number of indicated technical features. Thus, features defined as “first” or “second” may explicitly or implicitly include one or more of the features. In the description of the embodiments of the present disclosure, the term “a plurality of” or “the plurality of” means two or more unless otherwise specified.
[0044] In the description of some embodiments, the expressions “coupled” and “connected” and derivatives thereof may be used. For example, the term “connected” may be used in the description of some embodiments to indicate that two or more components are in direct physical or electrical contact with each other. For another example, the term “coupled” may be used in the description of some embodiments to indicate that two or more components are in direct physical or electrical contact. However, the term “coupled” or “communicatively coupled” may also mean that two or more components are not in direct contact with each other, but still cooperate or interact with each other. The embodiments disclosed herein are not necessarily limited to the contents herein.
[0045] The phrase “at least one of A, B and C” has a same meaning as the phrase “at least one of A, B or C”, and they both include the following combinations of A, B and C: only A, only B, only C, a combination of A and B, a combination of A and C, a combination of B and C, and a combination of A, B and C.
[0046] The phrase “A and/or B” includes the following three combinations: only A, only B, and a combination of A and B.
[0047] As used herein, the term “if”, depending on the context, is optionally construed as “when”, “in a case where”, “in response to determining” or “in response to detecting”. Similarly, depending on the context, the phrase “if it is determined” or “if [a stated condition or event] is detected” is optionally construed as “in a case where it is determined”, “in response to determining”, “in a case where [the stated condition or event] is detected”, or “in response to detecting [the stated condition or event]”.
[0048] The use of the phrase “applicable to” or “configured to” herein means an open and inclusive language, which does not exclude devices that are applicable to or configured to perform additional tasks or steps.
[0049] In addition, the use of the phrase “based on” is meant to be open and inclusive, since a process, step, calculation or other action that is “based on” one or more of the stated conditions or values may, in practice, be based on additional conditions or values exceeding those stated.
[0050] Some embodiments of the present disclosure provide a gaze point calculation apparatus 100. As shown in
[0051] It will be noted that, the state machine 4 may determine, according to its own operation state, an overall operation progress of the gaze point calculation apparatus 100, so that it may be known that which values are stored in the first cache register 1, and in the stored values, which values are used, which values are not used, and which values require a second operation.
[0052] In some other examples, referring to
[0053] The first cache register 1 is configured to receive and store first coordinates and a plurality of calibration parameters required when second coordinates are obtained through calculation according to the first coordinates. The first coordinates are position coordinates of a pupil, and the second coordinates are position coordinates of a gaze point. When the position coordinates of the pupil are determined, the pupil may be simplified into a point for positioning. For example, the point may be a center point of the pupil, which is not limited in the embodiments of the present disclosure. In some other examples, the point may be a point at a position other than the center point of the pupil, such as a point on a border of the pupil.
[0054] The state machine 4 is configured to control the multiplexer 2 to select each time at least one value from the first cache register 1 and transmit the at least one value to the arithmetic unit assembly 3.
[0055] The arithmetic unit assembly 3 is configured to perform a preset operation (e.g., a multiplication operation, a root operation, or an addition operation) on the at least one value received each time until the second coordinates are obtained, and output the second coordinates under control of the state machine 4. For example, in a case where the second coordinates are (X.sub.G, Y.sub.G), under the control of the state machine 4, one of X.sub.G and Y.sub.G may be obtained through calculation and output first, and then the other one is obtained through calculation and output; alternatively, X.sub.G and Y.sub.G are sequentially obtained through calculation, and are then output at a same time.
[0056] It will be noted that, one or more intermediate values may be generated in a whole process of obtaining the second coordinates through calculation. When performing the preset operation, the arithmetic unit assembly 3 may perform a second operation on these intermediate values, so as to finally obtain the second coordinates. Processing of some intermediate values will be described below with reference to some examples.
[0057] In some examples, as shown in
[0058] In some other examples, as shown in
[0059] The arithmetic unit assembly 3 may include one group of arithmetic units or at least two groups of arithmetic units connected in parallel, and each group of arithmetic units may include at least two arithmetic units connected in series. A second cache register 11 may be integrated in an arithmetic unit.
[0060] In yet some other examples, as shown in
[0061] The gaze point calculation apparatus 100 includes a plurality of hardware (e.g., the first cache register 1, the multiplexer 2, the arithmetic unit assembly 3 and the state machine 4). That is, through a hardware-based implementation solution, the gaze point calculation apparatus 100 achieves processing of the first coordinates (i.e., the position coordinates of the pupil) to output the second coordinates (i.e., the position coordinates of the gaze point).
[0062] In some examples, the gaze point calculation apparatus 100 may be a field programmable gate array (FPGA) chip. In some other examples, the gaze point calculation apparatus 100 may be an application specific integrated circuit (ASIC) chip.
[0063] It is worth pointing out that, in terms of eye tracking, calculation of the gaze point achieved through a central processing unit (CPU) of a computer may result in problems of huge related devices, inconvenience for carrying, and being not conducive to human-computer interaction. However, the gaze point calculation apparatus 100 provided by the embodiments of the present disclosure may be well integrated into an all-in-one device (e.g., an augmented reality (AR) display device or a virtual reality (VR) display device) to achieve the calculation of the gaze point. As a result, it is possible to solve the technical problems of huge related devices, inconvenience for carrying, and being not conducive to the human-computer interaction. In addition, using the gaze point calculation apparatus 100 also has advantages of fast operation speed and low overall power consumption.
[0064] A process of achieving the calculation of the gaze point by using the gaze point calculation apparatus 100 will be described below through some embodiments.
[0065] In some embodiments, referring to
X.sub.G=a.sub.0+a.sub.1x.sub.1+a.sub.2y.sub.1+a.sub.3x.sub.1y.sub.1+a.sub.4x.sub.1.sup.2+a.sub.5y.sub.1.sup.2;
Y.sub.G=b.sub.0+b.sub.1x.sub.1+b.sub.2y.sub.1+b.sub.3x.sub.1y.sub.1+b.sub.4x.sub.1.sup.2+b.sub.5y.sub.1.sup.2.
[0066] Where (x.sub.1, y.sub.1) is the first coordinates (i.e., the position coordinates of the pupil); a.sub.0 to a.sub.5 and b.sub.0 to b.sub.5 are the calibration parameters, and a.sub.0 to a.sub.5 and b.sub.0 to b.sub.5 are vectors; and (X.sub.G, Y.sub.G) is the second coordinates (i.e., the position coordinates of the gaze point, e.g., the coordinates of the gaze point in the display area B shown in
[0067] It will be noted that, (x.sub.1, y.sub.1) here may be initial coordinates (x′, y′) of a center of the pupil in an acquired image A of a human eye shown in
[0068] Based on this, in some examples, as shown in
[0069] For example, the normalization processing module 5 may perform the normalization processing on the initial coordinates (x′, y′) according to the following formulas:
x.sub.1=x′/a lateral resolution of the acquired image of the human eye;
y.sub.1=y′/a vertical resolution of the acquired image of the human eye.
[0070] Where the lateral resolution of the acquired image of the human eye may be a resolution in an x-axis direction of the acquired image A of the human eye shown in
[0071] Through the above solution, it is possible to facilitate to obtain an accurate second coordinates through calculation, and in turn, the position of the gaze point may be accurately determined.
[0072] In some embodiments, the arithmetic unit assembly 3 is configured to: convert the received at least one value from an original code into a complement code; calculate the at least one value converted into the complement code to obtain an intermediate calculation result; and convert the intermediate calculation result from a complement code into an original code to obtain an operation result. With such a configuration, operations of signed (i.e., positive or negative) values may be accurately achieved. For example, in a case where at least one calibration parameter is a negative value, operations such as accumulation, multiplication and root may still be accurately achieved.
[0073] The arithmetic unit assembly 3 may be of various structures, which, for example, include but are not limited to the possible implementations described below.
[0074] In a possible implementation, as shown in
[0075] During operation, the signed fixed-point multiplier (or the signed fixed-point accumulator) may first convert the received value from the original code into the complement code, and then obtain the intermediate calculation result through calculation, and finally convert the intermediate calculation result from the complement code into the original code to obtain the operation result. In this way, the operations of the signed (i.e., positive or negative) values may be accurately achieved. For example, in the case where at least one calibration parameter is a negative value, the operations such as accumulation, multiplication and root may still be accurately achieved.
[0076] In addition, it is worth pointing out that, compared with a hardware circuit structure of a signed floating-point multiplier (or a signed floating-point accumulator), a hardware circuit structure of the signed fixed-point multiplier (or the signed fixed-point accumulator) is simpler and easier to achieve. Therefore, using the signed fixed-point multiplier (or the signed fixed-point accumulator) may facilitate to simplify a circuit structure of the arithmetic unit assembly 3, and further facilitate to simplify a structure of the gaze point calculation apparatus 100.
[0077] The multiplier 31 is coupled to the multiplexer 2, and the multiplier 31 is configured to calculate x.sub.1.sup.2, a.sub.1x.sub.1, a.sub.4(x.sub.1.sup.2), x.sub.1y.sub.1, y.sub.1.sup.2, a.sub.2y.sub.1, a.sub.3(x.sub.1y.sub.1), a.sub.5(y.sub.1.sup.2), b.sub.1x.sub.1, b.sub.2y.sub.1, b.sub.3(x.sub.1y.sub.1), b.sub.4(x.sub.1.sup.2) and b.sub.5(y.sub.1.sup.2). For example, for a frame of image of the human eye, the multiplier 31 may sequentially perform thirteen fixed-point multiplication operations according to the sequence shown in
[0078] It will be noted that, the intermediate values that need to be stored may include an operation result of x.sub.1.sup.2, an operation result of x.sub.1y.sub.1, and an operation result of y.sub.1.sup.2. These intermediate values may be stored in the first cache register 1 (as shown in
[0079] The accumulator 32 is coupled to the multiplier 31, the multiplexer 2 and the state machine 4. The accumulator 32 is configured to: calculate a.sub.0+a.sub.1x.sub.1+a.sub.2y.sub.1+a.sub.3xy.sub.1+a.sub.4x.sub.1.sup.2+a.sub.5y.sub.1.sup.2, so as to output X.sub.G; and calculate b.sub.0+b.sub.1x.sub.1+b.sub.2y.sub.1+b.sub.3x.sub.1y.sub.1+b.sub.4x.sub.1.sup.2+b.sub.5y.sub.1.sup.2, so as to output Y.sub.G. That is, for a frame of image of the human eye, the accumulator 32 may perform ten accumulation operations by means of time division multiplexing.
[0080] It will be noted that, the intermediate values may further include: an operation result of a.sub.1x.sub.1, an operation result of a.sub.2y.sub.1, an operation result of a.sub.3(x.sub.1y.sub.1), an operation result of a.sub.4(x.sub.1.sup.2), an operation result of a.sub.5(y.sub.1.sup.2), an operation result of b.sub.1x.sub.1, an operation result of b.sub.2y.sub.1, an operation result of b.sub.3(x.sub.1y.sub.1), an operation result of b.sub.4(x.sub.1.sup.2), and an operation result of b.sub.5(y.sub.1.sup.2). These intermediate values may be stored in the first cache register 1 (as shown in
[0081] In practical applications, for example, according to the example shown in
[0082] In step 1, the multiplexer 2, under the control of the state machine 4, selects x.sub.1 from the first cache register 1, and outputs x.sub.1 to both a multiplier port and a multiplicand port of the multiplier 31. Then, the multiplier 31 obtains a result of x.sub.1.sup.2 through calculation, and the multiplexer 2 transmits the result of x.sub.1.sup.2 (i.e., an intermediate value) to the first cache register 1 for storage, ready for calling.
[0083] In step 2, it is delayed for n (n being greater than or equal to 1 (n≥1)) clock(s) based on step 1, and then the multiplexer 2, under the control of the state machine 4, selects a.sub.1 and x.sub.1 from the first cache register 1, and outputs a.sub.1 and x.sub.1 to a multiplier port and a multiplicand port of the multiplier 31 respectively. Then, the multiplier 31 obtains a result of a.sub.1x.sub.1 through calculation. It will be noted that, the result of a.sub.1x.sub.1 here may also be stored in the first cache register 1 as an intermediate value.
[0084] In step 3, it is delayed for n (n≥1) clock(s) based on step 2, and then the multiplexer 2, under the control of the state machine 4, selects a.sub.4 and the operation result of x.sub.1.sup.2 (i.e., the intermediate value) from the first cache register 1, and outputs a.sub.4 and the operation result of x.sub.1.sup.2 to the multiplier port and the multiplicand port of the multiplier 31 respectively. Then, the multiplier 31 obtains a result of a.sub.4(x.sub.1.sup.2) through calculation. It will be noted that, the result of a.sub.4(x.sub.1.sup.2) here may also be stored in the first cache register 1 as an intermediate value.
[0085] In step 4, it is delayed for n (n≥1) clock(s) based on step 3, and then the multiplexer 2, under the control of the state machine 4, selects x.sub.1 and y.sub.1 from the first cache register 1, and outputs x.sub.1 and y.sub.1 to the multiplier port and the multiplicand port of the multiplier 31 respectively. Then, the multiplier 31 obtains a result of x.sub.1y.sub.1 through calculation, and the multiplexer 2 transmits the result of x.sub.1y.sub.1 (i.e., an intermediate value) to the first cache register 1 for storage, ready for calling.
[0086] In step 5, it is delayed for n (n≥1) clock(s) based on step 4, and then the multiplexer 2, under the control of the state machine 4, selects y.sub.1 from the first cache register 1, and outputs y.sub.1 to both the multiplier port and the multiplicand port of the multiplier 31. Then, the multiplier 31 obtains a result of y.sub.1.sup.2 through calculation, and the multiplexer 2 transmits the result of y.sub.1.sup.2 (i.e., an intermediate value) to the first cache register 1 for storage, ready for calling.
[0087] In step 6, it is delayed for n (n≥1) clock(s) based on step 5, and then the multiplexer 2, under the control of the state machine 4, selects a.sub.2 and y.sub.1 from the first cache register 1, and outputs a.sub.2 and y.sub.1 to the multiplier port and the multiplicand port of the multiplier 31 respectively. Then, the multiplier 31 obtains a result of a.sub.2y.sub.1 through calculation. It will be noted that, the result of a.sub.2y.sub.1 here may also be stored in the first cache register 1 as an intermediate value.
[0088] In step 7, it is delayed for n (n≥1) clock(s) based on step 6, and then the multiplexer 2, under the control of the state machine 4, selects a.sub.3 and the result of x.sub.1y.sub.1 (i.e., the intermediate value) from the first cache register 1, and outputs a.sub.3 and the result of x.sub.1y.sub.1 to the multiplier port and the multiplicand port of the multiplier 31 respectively. Then, the multiplier 31 obtains a result of a.sub.3(x.sub.1y.sub.1) through calculation. It will be noted that, the result of a.sub.3(x.sub.1y.sub.1) here may also be stored in the first cache register 1 as an intermediate value.
[0089] In step 8, it is delayed for n (n≥1) clock(s) based on step 7, and then the multiplexer 2, under the control of the state machine 4, selects a.sub.5 and the result of y.sub.1.sup.2 (i.e., the intermediate value) from the first cache register 1, and outputs a.sub.5 and the result of y.sub.1.sup.2 to the multiplier port and the multiplicand port of the multiplier 31 respectively. Then, the multiplier 31 obtains a result of a.sub.5(y.sub.1.sup.2) through calculation. It will be noted that, the result of a.sub.5(y.sub.1.sup.2) here may also be stored in the first cache register 1 as an intermediate value.
[0090] In step 9, it is delayed for n (n≥1) clock(s) based on step 8, and the multiplexer 2, under the control of the state machine 4, transmits a.sub.0, a.sub.1x.sub.1, a.sub.2y.sub.1, a.sub.3(x.sub.1y.sub.1), a.sub.4(x.sub.1.sup.2) and a.sub.5(y.sub.1.sup.2) in the first cache register to the accumulator 32 for accumulation, so as to obtain and output X.sub.G.
[0091] It can be understood that, at least one of the result of a.sub.1x.sub.1, the result of a.sub.2y.sub.1, the result of a.sub.3(x.sub.1y.sub.1), the result of a.sub.4(x.sub.1.sup.2) and the result of a.sub.5(y.sub.1.sup.2) may be stored in the first cache register 1 as an intermediate value, or may be stored in the second cache register integrated in the accumulator 32 as an intermediate value, or may be directly output by the multiplier 31 to the accumulator 32 for accumulation.
[0092] An operation method of Y.sub.G may be similar to the above steps. Moreover, in a case where the operation result of x.sub.1.sup.2, the operation result of x.sub.1y.sub.1 and the operation result of y.sub.1.sup.2 have been stored in the first cache register, the multiplier 31 may directly perform five operations, i.e., calculating b.sub.1x.sub.1, b.sub.2y.sub.1, b.sub.3(x.sub.1y.sub.1), b.sub.4(x.sub.1.sup.2) and b.sub.5(y.sub.1.sup.2). Thereafter, the accumulator 32 accumulates b.sub.0, a result of b.sub.1x.sub.1, a result of b.sub.2y.sub.1, a result of b.sub.3(x.sub.1y.sub.1), a result of b.sub.4(x.sub.1.sup.2) and a result of b.sub.5(y.sub.1.sup.2), so as to obtain and output Y.sub.G.
[0093] Likewise, at least one of the result of b.sub.1x.sub.1, the result of b.sub.2y.sub.1, the result of b.sub.3(x.sub.1y.sub.1), the result of b.sub.4(x.sub.1.sup.2) and the result of b.sub.5(y.sub.1.sup.2) may be stored in the first cache register 1 as an intermediate value, or may be stored in the second cache register integrated in the accumulator 32 as an intermediate value, or may be directly output by the multiplier 31 to the accumulator 32 for accumulation.
[0094] It is worth pointing out that, in a case where the result of a.sub.1x.sub.1, the result of a.sub.2y.sub.1, the result of a.sub.3(x.sub.1y.sub.1), the result of a.sub.4(x.sub.1.sup.2), and the result of a.sub.5(y.sub.1.sup.2), as well as the result of b.sub.1x.sub.1, the result of b.sub.2y.sub.1, the result of b.sub.3(x.sub.1y.sub.1), the result of b.sub.4(x.sub.1.sup.2), and the result of b.sub.5(y.sub.1.sup.2) are directly transmitted by the multiplier 31 to the accumulator 32 for accumulation, the multiplier 31 and the accumulator 32 not only achieve time division multiplexing separately, but also achieve a serial-parallel combination as a whole (i.e., in this case, the multiplier 31 and the accumulator 32 may work in parallel at a same time, and the multiplier 31 may also output the calculation results to the accumulator 32 to achieve serial working). As a result, operation capabilities of the multiplier 31 and the accumulator 32 may be fully utilized, and the operation speed may be improved.
[0095] In another possible implementation, as shown in
[0096] The first multiplier 31A is coupled to the multiplexer 2, and the first accumulator 32A is coupled to the first multiplier 31A, the multiplexer 2 and the state machine 4. The first multiplier 31A is configured to calculate x.sub.1.sup.2, a.sub.1x.sub.1, a.sub.4(x.sub.1.sup.2), a.sub.2y.sub.1, a.sub.3(x.sub.1y.sub.1), and a.sub.5(y.sub.1.sup.2). The first accumulator 32A is configured to calculate a.sub.0+a.sub.1x.sub.1+a.sub.2y.sub.1+a.sub.3xy.sub.1+a.sub.4x.sub.1.sup.2+a.sub.5y.sub.1.sup.2, so as to output X.sub.G.
[0097] The second multiplier 31B is coupled to the multiplexer 2, and the second accumulator 32B is coupled to the second multiplier 31B, the multiplexer 2 and the state machine 4. The second multiplier 31B is configured to calculate x.sub.1.sup.2, b.sub.1x.sub.1, b.sub.4(x.sub.1.sup.2), x.sub.1y.sub.1, y.sub.9.sup.2, b.sub.2y.sub.1, b.sub.3(x.sub.1y.sub.1), and b.sub.5(y.sub.1.sup.2). The second accumulator 32B is configured to calculate b.sub.0+b.sub.1x.sub.1+b.sub.2y.sub.1+b.sub.3x.sub.1y.sub.1+b.sub.4x.sub.1.sup.2+b.sub.5y.sub.1.sup.2, so as to output Y.sub.G.
[0098] In this possible implementation, X.sub.G may be obtained through calculation by using the first multiplier 31A and the first accumulator 32A, and at a same time, Y.sub.G may be obtained through calculation by using the second multiplier 31B and the second accumulator 32B. That is, in this way, synchronous processing of an abscissa and an ordinate may be realized, thereby facilitating to improve an overall operation speed of the arithmetic unit assembly 3.
[0099] The intermediate values stored in the first cache register 1 include at least an operation result of x.sub.1.sup.2, an operation result of x.sub.1y.sub.1, and an operation result of y.sub.1.sup.2. In this possible implementation, it will be noted that, it is not limited herein to the example in which x.sub.1.sup.2, x.sub.1y.sub.1 and y.sub.1.sup.2 are calculated twice by using the above two multipliers (i.e., the first multiplier 31A and the second multiplier 31B). That is, x.sub.1.sup.2, x.sub.1y.sub.1 and y.sub.1.sup.2 may be calculated by using only one multiplier (e.g., the first multiplier 31A or the second multiplier 31B); alternatively, a part of x.sub.1.sup.2, x.sub.1y.sub.1 and y.sub.1.sup.2 (e.g., x.sub.1.sup.2 and x.sub.1y.sub.1) may be calculated by using a multiplier (e.g., the first multiplier 31A), and a remaining part of x.sub.1.sup.2, x.sub.1y.sub.1 and y.sub.1.sup.2 (e.g., y.sub.1.sup.2) may be calculated by using the other multiplier (e.g., the second multiplier 31B). As a result, the operation result of x.sub.1.sup.2, the operation result of x.sub.1y.sub.1 and the operation result of y.sub.1.sup.2 may be obtained, and then are transmitted to and stored in the first cache register 1 for sharing. In this way, it is possible to facilitate to simplify an operation process and improve an operation efficiency.
[0100] Likewise, it can be understood that, for at least one of the first multiplier 31A, the second multiplier 31B, the first accumulator 32A or the second accumulator 32B, the second cache register may be integrated therein. For a function and beneficial effect of integrating the second cache register, reference may be made to the above description, and details will not be repeated herein.
[0101] Some embodiments of the present disclosure provide a driving method for a gaze point calculation apparatus. As shown in
[0102] In S1, the state machine 4 controls the multiplexer 2 to select each time at least one value from the first cache register 1 and transmit the at least one value to the arithmetic unit assembly 3. The at least one value is selected from first coordinates and a plurality of calibration parameters required when second coordinates are obtained through calculation according to the first coordinates, and the first coordinates and the plurality of calibration parameters are stored in the first cache register. The first coordinates are position coordinates of a pupil.
[0103] In S2, the arithmetic unit assembly 3 performs a preset operation on the at least one value received each time until second coordinates are obtained, and outputs the second coordinates under control of the state machine 4. The second coordinates are position coordinates of a gaze point (e.g., the position coordinates of the gaze point in the display area B shown in
[0104] Beneficial effects of the driving method are same as those of the above gaze point calculation apparatus, and details will not be repeated here.
[0105] Some embodiments of the present disclosure provide an electronic device 400. As shown in
[0106] The pupil coordinate extraction module 200 is configured to acquire an image of a human eye (e.g., the image A of the human eye shown in
[0107] The gaze point calculation apparatus 100 is configured to obtain second coordinates (X.sub.G, Y.sub.G) through calculation according to the first coordinates (x.sub.1, y.sub.1). The second coordinates (X.sub.G, Y.sub.G) are position coordinates of a gaze point (e.g., the position coordinates of the gaze point in the display area B shown in
[0108] The display driver module 300 is configured to process a displayed image according to the second coordinates. For example, display of local rendering of an image around the gaze point (i.e., the second coordinates) may be achieved. For example, the displayed image may be divided into a first display portion located around the gaze point (i.e., the second coordinates) and a second display portion other than the first display portion. During display, for example, a display effect may be improved by improving a rendering effect of the first display portion, or by controlling a display resolution of the first display portion to be greater than that of the second display portion, or by shrinking the displayed image to be an image only in the first display portion.
[0109] Based on this, for example, as shown in
[0110] The camera is configured to acquire the image of the human eye.
[0111] The processing module is configured to determine, according to the acquired image of the human eye, the initial coordinates of the pupil in the image of the human eye based on an image processing algorithm.
[0112] For example, referring to
[0113] It will be noted that, the electronic device 400 may be a display device, which may be, for example, any device with a display function, such as the AR display device or the VR display device.
[0114] The foregoing descriptions are merely specific implementations of the present disclosure, but the protection scope of the present disclosure is not limited thereto. Any changes or replacements that a person skilled in the art could conceive of within the technical scope of the present disclosure shall be included in the protection scope of the present disclosure. Therefore, the scope of the present disclosure shall be subject to the protection scope of the claims.