Dynamic handwriting verification and handwriting-based user authentication
09747491 · 2017-08-29
Assignee
Inventors
Cpc classification
G06V40/33
PHYSICS
G06V30/1423
PHYSICS
International classification
Abstract
Handwriting verification methods and related computer systems, and handwriting-based user authentication methods and related computer systems are disclosed. A handwriting verification method comprises obtaining a handwriting test sample containing a plurality of available parameters, extracting geometric parameters, deriving geometric features comprising an x-position value and a y-position value for each of a plurality of feature points in the test sample, performing feature matching between geometric features of the test sample and a reference sample, determining a handwriting verification result based at least in part on the feature matching, and outputting the handwriting verification result. The geometric features may further comprise values derived from the geometric parameters, such as direction and curvature values. The handwriting verification result can be further based on a count of unlinked feature points. Handwriting-based user authentication methods can employ such handwriting verification methods, or other handwriting verification methods.
Claims
1. A handwriting verification method executed in a computer system, the method comprising: obtaining a test sample and a reference sample each containing a plurality of feature points, wherein each of the feature points includes: (i) geometric features including an x-coordinate value and a y-coordinate value, and (ii) a non-geometric feature; finding mappings between feature points of the test sample and feature points of the reference sample based on the geometric features of the test sample and reference sample, wherein the finding mappings comprises finding mappings between one or more of evenly distributed feature points in the test sample and one or more evenly distributed feature points in the reference sample; and after the finding mappings, comparing the non-geometric features of each of the mapped feature points of the test sample and the reference sample.
2. The method of claim 1, wherein the non-geometric feature comprises pen pressure, elapsed time, speed, or acceleration.
3. The method of claim 1, wherein the comparing is performed in the case that the mapping is determined to be a sufficient match.
4. The method of claim 1, wherein the finding mappings is done by an algorithm utilizing a pseudo-random value.
5. The method of claim 1, wherein the finding mappings is based on a count of unlinked feature points of the test sample.
6. The method of claim 1, wherein the finding mappings is based on a count of consecutive unlinked feature points in the test sample.
7. The method of claim 1, wherein the finding mappings comprises: determining, based on a pseudo-random value, whether to (a) remove a mapping from a selected feature point in the reference sample, or (b) define a new mapping between the selected feature point in the reference sample and a selected feature point in the test sample.
8. The method of claim 1, the geometric features further include direction (D) and curvature (C) derived from the x-coordinate values and y-coordinate values.
9. A handwriting verification method executed in a computer system, the method comprising: performing feature matching between geometric features of a handwriting test sample and geometric features of a reference sample, wherein the feature matching comprises defining one or more links between one or more feature points in the test sample and one or more feature points in the reference sample; obtaining a count of consecutive unlinked feature points in the test sample; and outputting a handwriting verification result based at least in part on the feature matching and the count of consecutive unlinked feature points in the test sample.
10. The method of claim 9, further including comparing non-geometric features of each of the linked feature points of the test sample and the reference sample.
11. The method of claim 9, wherein the feature matching includes: initializing a pseudo-random value generator to generate a sequence of pseudo-random values, wherein the feature matching is based on a pseudo random value generated by the pseudo random value generator; and if matching is not sufficient, performing another feature matching by the using another pseudo random value generated by the same uniform random value generator.
12. A handwriting verification method executed in a computer system, the method comprising: obtaining a test sample and a reference sample each containing a plurality of feature points, wherein each of the feature points includes: (i) geometric features including an x-coordinate value and a y-coordinate value, and (ii) a non-geometric feature, wherein the non-geometric feature comprises pen pressure, elapsed time, speed, or acceleration; finding mappings between feature points of the test sample and feature points of the reference sample based on the geometric features of the test sample and reference sample, wherein the finding mappings is done by an algorithm utilizing a pseudo-random value; and after the finding mappings, comparing the non-geometric features of each of the mapped feature points of the test sample and the reference sample.
13. The method of claim 12, wherein the comparing is performed in the case that the mapping is determined to be a sufficient match.
14. The method of claim 12, wherein the finding mappings is based on a count of unlinked feature points of the test sample.
15. The method of claim 12, wherein the finding mappings is based on a count of consecutive unlinked feature points in the test sample.
16. The method of claim 12, wherein the finding mappings comprises: determining, based on the pseudo-random value, whether to (a) remove a mapping from a selected feature point in the reference sample, or (b) define a new mapping between the selected feature point in the reference sample and a selected feature point in the test sample.
17. The method of claim 12, wherein the finding mappings comprises finding mappings between one or more of evenly distributed feature points in the test sample and one or more evenly distributed feature points in the reference sample.
18. The method of claim 12, wherein the geometric features further include direction (D) and curvature (C) derived from the x-coordinate values and y-coordinate values.
19. A handwriting verification method executed in a computer system, the method comprising: obtaining a test sample and a reference sample each containing a plurality of feature points, wherein each of the feature points includes: (i) geometric features including an x-coordinate value and a y-coordinate value, and (ii) a non-geometric feature; finding mappings between feature points of the test sample and feature points of the reference sample based on the geometric features of the test sample and reference sample, wherein the finding mappings is based on a count of unlinked feature points of the test sample; and after the finding mappings, comparing the non-geometric features of each of the mapped feature points of the test sample and the reference sample.
20. The method of claim 19, wherein the non-geometric feature comprises pen pressure, elapsed time, speed, or acceleration.
21. The method of claim 19, wherein the comparing is performed in the case that the mapping is determined to be a sufficient match.
22. The method of claim 19, wherein the finding mappings is done by an algorithm utilizing a pseudo-random value.
23. The method of claim 19, wherein the finding mappings is based on a count of consecutive unlinked feature points in the test sample.
24. The method of claim 19, wherein the finding mappings comprises: determining, based on a pseudo-random value, whether to (a) remove a mapping from a selected feature point in the reference sample, or (b) define a new mapping between the selected feature point in the reference sample and a selected feature point in the test sample.
25. The method of claim 19, wherein the finding mappings comprises finding mappings between one or more of evenly distributed feature points in the test sample and one or more evenly distributed feature points in the reference sample.
26. The method of claim 19, wherein the geometric features further include direction (D) and curvature (C) derived from the x-coordinate values and y-coordinate values.
27. A handwriting verification method executed in a computer system, the method comprising: obtaining a test sample and a reference sample each containing a plurality of feature points, wherein each of the feature points includes: (i) geometric features including an x-coordinate value and a y-coordinate value, and (ii) a non-geometric feature; finding mappings between feature points of the test sample and feature points of the reference sample based on the geometric features of the test sample and reference sample, wherein the finding mappings comprises determining, based on a pseudo-random value, whether to (a) remove a mapping from a selected feature point in the reference sample, or (b) define a new mapping between the selected feature point in the reference sample and a selected feature point in the test sample; and after the finding mappings, comparing the non-geometric features of each of the mapped feature points of the test sample and the reference sample.
28. The method of claim 27, wherein the non-geometric feature comprises pen pressure, elapsed time, speed, or acceleration.
29. The method of claim 27, wherein the comparing is performed in the case that the mapping is determined to be a sufficient match.
30. The method of claim 27, wherein the finding mappings is done by an algorithm utilizing a pseudo-random value.
31. The method of claim 27, wherein the finding mappings is based on a count of unlinked feature points of the test sample.
32. The method of claim 27, wherein the finding mappings is based on a count of consecutive unlinked feature points in the test sample.
33. The method of claim 27, wherein the finding mappings comprises finding mappings between one or more of evenly distributed feature points in the test sample and one or more evenly distributed feature points in the reference sample.
34. The method of claim 27, wherein the geometric features further include direction (D) and curvature (C) derived from the x-coordinate values and y-coordinate values.
Description
DESCRIPTION OF THE DRAWINGS
(1) The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
DETAILED DESCRIPTION
(31) The present disclosure is generally directed to techniques and tools for verifying electronic signatures or other electronic handwriting.
(32) Determining whether a signature is authentic poses many challenges. One challenge is that authentic signatures made by the same person will always have some degree of variability. Another challenge is that the degree of variability between authentic signatures will vary from person to person. Previously, a determination of the level of variability has been made by combining several reference samples collected at different times into a template that can be used for verification. However, collecting several reference samples at different times does not fit well with many business processes. For example, banks have traditionally stored a single reference signature for comparison purposes. Thus, the ability to improve the accuracy of a verification process while using a single reference would be advantageous.
(33) Accordingly, in described embodiments, a dynamic handwriting verification engine is configured to compare handwriting data associated with a handwriting test sample (e.g., a signature) with handwriting data associated with a reference sample to determine whether the test sample is authentic. Although some embodiments described herein refer to verification of signatures, it should be understood that embodiments described herein can be used to verify handwriting of all kinds, and are not limited to verification of signatures.
(34) In accordance with embodiments described herein, a verification process involves matching geometric features in a test sample and a reference sample while allowing for minor differences resulting from natural inconsistency between samples that are made by the same person. In addition to geometric features, the verification process also can take into account more data that can be generated by current handwriting collection technology (e.g., movement of a pen between strokes, pen pressure, pen angles, and the like), which can improve the quality of verification results. Because different input devices may provide different types of data, the verification process can adapt to the types of data provided by particular devices, in accordance with embodiments described herein. For example, if a test sample includes pressure information and a reference sample does not, the verification process can omit analysis of pressure information and focus instead on comparisons of data that are common to the two samples.
(35) The detailed description set forth below in connection with the appended drawings where like numerals reference like elements is intended as a description of various embodiments of the disclosed subject matter and is not intended to represent the only embodiments. Each embodiment described in this disclosure is provided merely as an example or illustration and should not be construed as preferred or advantageous over other embodiments. The illustrative examples provided herein are not intended to be exhaustive or to limit the claimed subject matter to the precise forms disclosed.
(36) In the following description, numerous specific details are set forth in order to provide a thorough understanding of exemplary embodiments of the present disclosure. It will be apparent to one skilled in the art, however, that many embodiments of the present disclosure may be practiced without some or all of the specific details. In some instances, well-known process steps have not been described in detail in order not to unnecessarily obscure various aspects of the present disclosure. Further, it will be appreciated that embodiments of the present disclosure may employ any combination of features described herein.
(37)
(38) When a handwritten signature is made on paper, an ink pen leaves a continuous trail of ink that forms the signature. A digital version of a handwritten signature generally comprises a collection of discrete data points measured at regular time intervals.
(39) Referring again to
(40) Alternatively, other handwriting input technology can be used. For example, an electronic pen may use other wireless technology or may be connected by a wire to a digitizer. As another example, an electronic pen may or may not be detectable away from the surface of a digitizer. As another example, an electronic pen may be powered or unpowered. Powered pens may receive power via a wire connected to an external power source or via an on-board battery. As another example, it is possible to input handwriting data without an electronic pen (e.g., via a stylus on a pressure sensitive digital writing pad, a touchscreen, or some other input device that does not require an electronic pen).
(41) However the handwriting data may be collected, handwriting data provided by the input devices 10, 12, and 14 may include pen event information, device information, and/or contextual information about the context in which the handwriting was made. In described embodiments, pen event information includes the x, y position of the pen-tip on or above the digitizer surface and the time since the start of the handwriting. Further, pen event information may optionally include additional information subject to the capabilities of the input devices 10, 12, and 14, such as pressure (pen force), angles (azimuth, altitude, and/or rotation) and pen-down status. Pen event information is typically collected at regular intervals during a signing process.
(42) Device information may include information needed to convert from digitizer units to real-world units. Contextual information for a signature may include the name of the person signing; the date and time of signature; the reason for signing; the type and version of operating system used on a host device; the type of digitizer; the version of the digitizer device driver; a unique identifier taken from the network interface controller (NIC) address of the a host device; if a cryptographic hash function is used, information about the type of hash function; and/or supplementary data that may be added by a software application at the time of capture. Contextual information also may include information about the document being signed, such as a cryptographic message digest.
(43) Referring again to
(44) The handwriting verification server 700 can verify the authenticity of handwriting input data provided in various forms (e.g., integrated data, streamed data, raw pen event data). For example, as shown in
(45)
(46) In the example shown in
(47) In the example shown in
(48) In the example shown in
(49) The arrangements shown in
(50) In accordance with embodiments described herein, a handwriting sample to be verified (or “test sample”) can be a handwritten signature (see
(51) In described embodiments, handwriting data can be represented as a sequence of pen events. Typically, a pen event records the position of the pen tip (e.g., while on the surface of or within a limited range of a digitizer) at a particular time. In addition to x/y-coordinate values, some handwriting input devices also may detect other information such as pen angle, writing speed, writing pressure, etc. Depending on device capabilities, pen data associated with pen events may include additional measurements such as pen pressure and angles. In the example shown in
(52) Referring again to
(53)
(54)
(55) In the example shown in
(56) An example dynamic handwriting verification process is shown in
(57) In the example shown in
(58) Because the speed of ordinary handwriting varies, the detection of x-coordinate and y-coordinate positions at regular time intervals results in variable spacing between the detected positions. Referring again to the example signature shown in
(59) Referring again to
(60)
(61) The particular spacing that is used can vary depending on implementation. For example, the spacing between feature points need not be uniform. According to one alternative approach, feature points can be positioned according to a density normalization process in which the spacing between densely packed pen events is expanded for the corresponding feature points. In such an approach, feature points may or may not be co-located with original pen events. The density normalization process also can include inserting feature points into portions of the handwriting path where pen events are sparse. The density normalization process can be applied to the test sample and to the reference sample to resolve point density differences between the samples while still allowing for some variation in spacing between feature points, which can help to preserve information relating to speed and acceleration of handwriting. The density normalization process can help to provide comparable sets of feature points between samples obtained by devices with different sampling rates.
(62) Referring again to
(63) In the example shown in
(64) In at least one embodiment, feature points are defined for the entire length of a handwriting sample, including pen-up areas in which the pen was not in contact with the tablet surface. In some circumstances, pen-up information will not be available between strokes. This can occur, for example, when a capture device is used that does not support pen-up data, or when a pen is held at a distance from the digitizer such that pen-up data cannot be detected. If pen-up information is not available, feature points can be generated within the limits of pen-down pen events.
(65) Referring again to
(66) In the example shown in
(67) Referring again to
(68)
(69) In at least one embodiment, the energy is measured according to the following equation:
e.sub.i=k.sub.x(X.sub.r−X.sub.t).sup.2+k.sub.y(Y.sub.r−Y.sub.t).sup.2+k.sub.d(D.sub.r−D.sub.t).sup.2+k.sub.c(C.sub.r−C.sub.t).sup.2,
where e.sub.i is the energy of the i.sup.th link, connecting a reference sample r with a test sample t; X.sub.r, Y.sub.r, D.sub.r, and C.sub.r are the x, y, direction and curvature values for the reference sample; X.sub.t, Y.sub.t, D.sub.t, and G are the x, y, direction and curvature values for the test sample; and k.sub.x, k.sub.y, k.sub.d, and k.sub.c are weighting factors for the different energy components.
(70) In at least one embodiment, an optimal set of links is one that achieves a minimum total energy (E) of the system, which can be defined according to the following equation:
E=Σe.sub.i+k.sub.un.sub.u,
where e.sub.i is the energy of the i.sup.th link; k.sub.u is a constant representing the energy of an unlinked feature; and n.sub.u is the number of unlinked features (if any).
(71) In at least one embodiment, numerical annealing is used to minimize the differences between the feature points at the ends of each link, and thereby minimize the energy E. In particular, in at least one embodiment, a method of simulated annealing is used to make pseudo-random changes to the link, which may increase or decrease the overall energy.
(72) In one example annealing process, which is now described with reference to
(73) “Energy” and “temperature” are related terms that can be used to model the annealing process. In at least one embodiment, a goal of the annealing process is to find the best set of links between corresponding features in two signatures. The relative merit of any of the possible linking patterns can be determined by assessing the similarity of the geometric features such as position, line direction and curvature at linked feature points. The energy of a link is a measure of the differences between the two feature points. Zero energy indicates a state of having identical features, and the energy increases as the differences become more substantial.
(74) The annealing process tries to minimize the total energy of the system by adjusting the set of links. However, if individual adjustments that increase the total energy were never permitted, the probability of the annealing process becoming trapped in a local minimum of total energy would increase. To address this situation, the annealing process can be designed to reduce the probability of the process becoming trapped in a local minimum by allowing some changes that result in an increase in energy, thereby allowing for the possibility that subsequent changes may achieve lower total energy.
(75) The temperature of the system can be used to control the likelihood of a change that increases the total energy. In at least one embodiment, the temperature is initially set at a relatively high value that allows increases in energy to occur more frequently. The temperature is reduced as the annealing process proceeds. As the temperature drops, the likelihood of increased energy is reduced until stability in the system is reached.
(76) Referring now to the example annealing process illustrated in
(77) At step S205, the total energy of the changed linkage (E_new) is compared with the total energy of the previous state of the linkage (E_prev). If E_new is less than or equal to E_prev, the change to the linkage is retained at step S207. If E_new is greater than E_prev, a determination is made at step S217 as to whether the change to the linkage can still be accepted.
(78) In at least one embodiment, increases in energy may be accepted depending on a ratio involving the magnitude of the change (dE) and the current temperature. In the example shown in
(79)
where U is a uniform deviate value in the range of 0≦U≦1.0, dE is the change in overall energy resulting from the change to the linkage, and T is the current temperature of the system. A uniform deviate is used to generate one or more pseudo-random values U. A single uniform deviate generator is used for the entire comparison between the test sample and the reference sample, and it is always initialized with the same seed. This ensures that the comparison of the test sample and the reference sample always returns the same result.
(80) An example process by which the linkage can be changed (see step S203 in
(81) In at least one embodiment, step S203-2 is performed at each change to the linkage by pseudo-randomly determining to either remove a link or set a new link by comparing the value U with the constant K_RemoveLink. The value of K_RemoveLink can be set to bias the determination towards either removing an existing link or setting a new link. Experiments indicate that it is desirable if about 30% of the changes consist of removing the link, in which case K_RemoveLink would be set to 0.3. The value of constant K_RemoveLink can vary depending on implementation.
(82) If U is less than K_RemoveLink, the link is removed from the selected feature point at step S203-3. (This step allows the annealing process to remove a link without inserting any others to replace it, to ensure that more possible changes to the linkage are achievable.) Otherwise, a feature point in the test sample is selected at step S203-4, and a link is inserted between the selected feature points in the reference sample and the test sample at step S203-5. At step S203-6, any previously existing links that are crossed by the newly inserted link are removed from the linkage. In the example shown in
(83) In general, it is desirable to ensure that enough changes are made to the linkage to allow the minimum energy state to be achieved and to ensure that the temperature is reduced sufficiently to allow the solution to settle in an optimal state. Referring again to
(84) The annealing process can be made more accurate, at the possible expense of processing speed, by using a larger number of cycles and more gradual temperature reductions. In at least one embodiment, annealing parameters (e.g., number of cycles, cooling factor for temperature reductions) are chosen to get adequate accuracy quickly in the majority of cases. However, this can occasionally result in poor linkage between two samples that would otherwise have acceptable linkage if the annealing was adequate.
(85) To help determine whether poor linkage is a result of dissimilarity between samples or an inaccurate initial annealing process, a second annealing process can be performed with a different initial seed. An example process by which annealing can be repeated is illustrated in
(86) If a good match is not found at step S305, a check is performed at step S307 to determine whether another annealing attempt will be made. The check performed at step S307 may involve comparing the number of annealing steps already performed with a maximum value. For example, in at least one embodiment, if 2 annealing attempts have not been made yet, the annealing step S303 is repeated without resetting the uniform deviate generator in order to guarantee that the same random sequence will not be used in the subsequent annealing step. Otherwise, with 2 annealing attempts having been made, a determination is made at step S313 that the samples are inconsistent.
(87) After annealing has been performed, the resulting linkage will include a set of links, each with a known energy. However, not all feature points will be linked unless the samples are identical or nearly identical. The quality of the linkage can be assessed by calculating a proportion (P.sub.l) of the feature points that are linked and the mean link energy (E.sub.m) according to the following equations:
(88)
where P.sub.l is the proportion of features that are linked, n.sub.l is the total number of links, n.sub.r is the number of features in the reference sample, and n.sub.t is the number of features in the test sample. In embodiments that use the above equations to assess linkage quality, consistent signatures will have high values of P.sub.l and low values of E.sub.m. Conversely, dissimilar samples will have low values of P.sub.l and high values of E.sub.m.
(89) The expected difference in P.sub.l and E.sub.m values for consistent signatures and inconsistent signatures can be measured empirically. In
(90) In the example shown in
(91) Although the P.sub.l and E.sub.m values are effective for measuring linkage quality in many scenarios, they may not reflect significant differences between a test sample and a reference sample if a substantial portion of the samples are very similar. It is possible to improve the accuracy of handwriting verification by performing an additional check to determine whether there is a significant section of unlinked feature points between the test sample and the reference sample.
(92) Referring again to
(93) The output produced at step S113 can be any output that is suitable to indicate a result of the verification, such as a Boolean value. Alternatively, a different value that allows for indicating more than just a binary or true/false result can be used. In least one embodiment, the output produced at step S113 comprises a floating point value ranging from 0 (indicating that the test sample and the reference sample are very different) to 1.0 (indicating that the test sample and the reference sample are very similar).
(94)
(95)
(96) The samples depicted in
(97) Referring again to
(98) In at least one embodiment, determining whether the unlinked feature points are significant includes determining whether the count of consecutive unlinked features points in an unlinked section is greater than a predetermined value N.sub.U. Counts that are greater than N.sub.U can be added, and the total length of these counts can be represented as a proportion (referred to as “proportion free,” or P.sub.f) of the overall sample length. Counts that are less than or equal to N.sub.U can be ignored. The value of N.sub.U can vary depending on implementation. Samples with a P.sub.f value exceeding a predetermined value can be deemed inconsistent.
(99) Referring again to
(100) In at least one embodiment, the additional evaluation performed at step S111 comprises non-geometric feature matching, which can include analysis of time-related pen event parameters, such as writing speed. Individuals tend to develop a habitual rhythm in the way they write with a pen, which means that pen speed and acceleration tend to be very similar (though not identical) for handwriting (e.g., signatures) made by the same person. Thus, time-related pen event parameters, which differ from the geometric features that are analyzed in other steps, can be useful in a handwriting verification process (e.g., as a supplement to geometric feature matching). In at least one embodiment, geometric features can be extracted from raw handwriting data along with elapsed time corresponding to the respective features, allowing comparison of elapsed time values.
(101)
(102) In the example shown in
(103) Referring again to
(104) Typically, pen pressures are measured as relative values, rather than as absolute force values. Pressure values are device-dependent, with variations in sensitivity occurring even between devices of the same model due to factors such as differences in construction, hysteresis, and aging of pen materials. Thus, it is not generally possible to make reliable comparisons between samples using absolute force values, particularly if the same person may have used different input devices to provide the samples.
(105)
(106)
(107) As shown in
(108) In the example shown in
(109)
(110) Referring again to
(111)
(112) In the example shown in
(113) In the example shown in
(114)
(115) Referring again to
(116)
(117) As shown in
(118) In the example shown in
(119)
(120) Referring again to
(121) In practice, any collection of information that allows a user to be reliably authenticated by a signature sign-in service (e.g., signature sign-in service 1920) can be used for user authentication. The particular information that may be used to look up a particular user in a database (e.g., database 1930) can vary depending on factors such as the information that is transmitted to the signature sign-in service, the information that is stored in the database, and the way the database is designed.
(122) For security purposes, any information relating to handwriting verification and related user authentication processes (e.g., handwriting data, device identifiers, service identifiers, authentication information, etc.) may be encrypted (e.g., using symmetric (e.g., shared-secret-key) or asymmetric (e.g., public-key) encryption). Encrypted information may be decrypted before further processing is performed on the underlying information. For example, encrypted test signature data may be decrypted prior to comparing the test signature data with reference signature data.
(123) Unless otherwise specified in the context of specific examples, described techniques and tools may be implemented by any suitable computing devices, including, but not limited to, laptop computers, desktop computers, smart phones, tablet computers, and/or the like. For example, although generation of handwriting data in some examples described herein may require certain hardware features, such as an electronic pen, the raw data generated by an electronic pen may be transmitted to and processed by suitably configured general purpose computing devices, including, but not limited to, laptop computers, desktop computers, smart phones, tablet computers, and/or the like.
(124) Some of the functionality described herein may be implemented in the context of a client-server relationship. In this context, server devices may include suitable computing devices configured to provide information and/or services described herein. Server devices may include any suitable computing devices, such as dedicated server devices. Server functionality provided by server devices may, in some cases, be provided by software (e.g., virtualized computing instances or application objects) executing on a computing device that is not a dedicated server device. The term “client” can be used to refer to a computing device that obtains information and/or accesses services provided by a server over a communication link. However, the designation of a particular device as a client device does not necessarily require the presence of a server. At various times, a single device may act as a server, a client, or both a server and a client, depending on context and configuration. Actual physical locations of clients and servers are not necessarily important, but the locations can be described as “local” for a client and “remote” for a server to illustrate a common usage scenario in which a client is receiving information provided by a server at a remote location.
(125)
(126) In its most basic configuration, the computing device 2000 includes at least one processor 2002 and a system memory 2004 connected by a communication bus 2006. Depending on the exact configuration and type of device, the system memory 2004 may be volatile or nonvolatile memory, such as read only memory (“ROM”), random access memory (“RAM”), EEPROM, flash memory, or other memory technology. Those of ordinary skill in the art and others will recognize that system memory 2004 typically stores data and/or program modules that are immediately accessible to and/or currently being operated on by the processor 2002. In this regard, the processor 2002 may serve as a computational center of the computing device 2000 by supporting the execution of instructions.
(127) As further illustrated in
(128) In the exemplary embodiment depicted in
(129) As used herein, the term “computer-readable medium” includes volatile and nonvolatile and removable and non-removable media implemented in any method or technology capable of storing information, such as computer-readable instructions, data structures, program modules, or other data. In this regard, the system memory 2004 and storage medium 2008 depicted in
(130) For ease of illustration and because it is not important for an understanding of the claimed subject matter,
(131) In any of the described examples, data can be captured by input devices and transmitted or stored for future processing. The processing may include encoding data streams, which can be subsequently decoded for presentation by output devices. Media data can be captured by multimedia input devices and stored by saving media data streams as files on a computer-readable storage medium (e.g., in memory or persistent storage on a client device, server, administrator device, or some other device). Input devices can be separate from and communicatively coupled to computing device 2000 (e.g., a client device), or can be integral components of the computing device 2000. In some embodiments, multiple input devices may be combined into a single, multifunction input device (e.g., a video camera with an integrated microphone). Any suitable input device either currently known or developed in the future may be used with described systems described herein.
(132) The computing device 2000 may also include output devices such as a display, speakers, printer, etc. The output devices may include video output devices such as a display or touchscreen. The output devices also may include audio output devices such as external speakers or earphones. The output devices can be separate from and communicatively coupled to the computing device 2000, or can be integral components of the computing device 2000. In some embodiments, multiple output devices may be combined into a single device (e.g., a display with built-in speakers). Any suitable output device either currently known or developed in the future may be used with described systems.
(133) In general, functionality of computing devices described herein may be implemented in computing logic embodied in hardware or software instructions, which can be written in a programming language, such as C, C++, COBOL, JAVA™, PHP, Perl, HTML, CSS, JavaScript, VBScript, ASPX, Microsoft .NET™ languages such as C#, and/or the like. Computing logic may be compiled into executable programs or written in interpreted programming languages. Generally, functionality described herein can be implemented as logic modules that can be duplicated to provide greater processing capability, merged with other modules, or divided into sub-modules. The computing logic can be stored in any type of computer-readable medium (e.g., a non-transitory medium such as a memory or storage medium) or computer storage device and be stored on and executed by one or more general-purpose or special-purpose processors, thus creating a special-purpose computing device configured to provide functionality described herein.
(134) Extensions and Alternatives
(135) Many alternatives to the systems and devices described herein are possible. For example, individual modules or subsystems can be separated into additional modules or subsystems or combined into fewer modules or subsystems. As another example, modules or subsystems can be omitted or supplemented with other modules or subsystems. As another example, functions that are indicated as being performed by a particular device, module, or subsystem may instead be performed by one or more other devices, modules, or subsystems. Although some examples in the present disclosure include descriptions of devices comprising specific hardware components in specific arrangements, techniques and tools described herein can be modified to accommodate different hardware components, combinations, or arrangements. Further, although some examples in the present disclosure include descriptions of specific usage scenarios, techniques and tools described herein can be modified to accommodate different usage scenarios. Functionality that is described as being implemented in software can instead be implemented in hardware, or vice versa.
(136) Many alternatives to the techniques described herein are possible. For example, processing stages in the various techniques can be separated into additional stages or combined into fewer stages. As another example, processing stages in the various techniques can be omitted or supplemented with other techniques or processing stages. As another example, processing stages that are described as occurring in a particular order can instead occur in a different order. As another example, processing stages that are described as being performed in a series of steps may instead be handled in a parallel fashion, with multiple modules or software processes concurrently handling one or more of the illustrated processing stages. As another example, processing stages that are indicated as being performed by a particular device or module may instead be performed by one or more other devices or modules.
(137) The principles, representative embodiments, and modes of operation of the present disclosure have been described in the foregoing description. However, aspects of the present disclosure which are intended to be protected are not to be construed as limited to the particular embodiments disclosed. Further, the embodiments described herein are to be regarded as illustrative rather than restrictive. It will be appreciated that variations and changes may be made by others, and equivalents employed, without departing from the spirit of the present disclosure. Accordingly, it is expressly intended that all such variations, changes, and equivalents fall within the spirit and scope of the claimed subject matter.