Touch Input Calibration
Patent Information
- Application Number
- JP2022574627
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2020-06-03
- Publication Date
- 2025-03-07
- Estimated Expiration
- 2040-06-03
Smart Images

Figure 0007641993000001 
Figure 0007641993000002 
Figure 0007641993000003
Abstract
Description
[Technical field]
[0001] Technical Field The present description relates to computing devices that receive touch input. [Background technology]
[0002] background Computing devices may include a touchscreen display to present visual output and receive touch input. Some computing devices may include a camera internal to the touchscreen display. It may be difficult to accurately process touch input near the camera. Summary of the Invention [Means for solving the problem]
[0003] overview According to an example, a non-transitory computer-readable storage medium may have instructions stored thereon that, when executed by at least one processor, may be configured to cause a computing device to receive a first measured touch value indicative of a first touch input at a first location (which may be near a camera included in the computing device) and receive a second measured touch value indicative of a second touch input at a second location that is farther from the camera than the first location. A density of touch sensors at the second location is greater than a density of touch sensors at the first location. The instructions may be further configured to generate a first compensated touch value based on the first measured touch value and a first scaling value, generate a second compensated touch value based on the second measured touch value and a second scaling value that is less than the first scaling value, and process the first touch input and the second touch input based on the first compensated touch value and the second compensated touch value.
[0004] According to an example, a non-transitory computer-readable storage medium may store instructions that, when executed by at least one processor, may be configured to cause a computing device to determine that a measured position of a touch input on a touch screen is within a predefined area proximate to a camera (i.e., meets a proximity criterion to the camera), determine a shift value for the touch input based on the measured position of the touch input, determine a shifted position for the touch input based on the measured position and the shift value, and process the touch input based on the shifted position. In practice, an area where an object, such as a stylus or a user's finger, contacts a touch screen may include multiple positions where touch input is included (i.e., where the applied force is a non-zero measured value). Some of these may be within a predefined area and some may not be within the predefined area. A shift value may be applied to the shift value of the measured positions that are within the area. An operation may then be applied (e.g., based on the shifted position and the measured value outside the predefined area) to estimate a position of a center of the area where the object touched the touch screen.
[0005] According to one example, a method may include contacting a touchscreen at a plurality of known locations, the plurality of known locations including at least a first location having a first density of touch sensors and a second location having a second density of touch sensors, the second density of touch sensors being less than the first density of touch sensors. The method further includes determining a plurality of measured locations on the touchscreen corresponding to the plurality of known locations and generating a map mapping the plurality of measured locations to the plurality of known locations.
[0006] According to an example, a non-transitory computer-readable storage medium may store instructions that, when executed by at least one processor, may be configured to cause a computing device to receive a plurality of touch inputs received at different times and included on a single movable contact, determine a measured position of at least one touch input of the plurality of touch inputs is distorted, and based on determining that a position of at least one touch input of the plurality of touch inputs is distorted, correct the distorted position of the at least one touch input of the plurality of touch inputs based on the distorted position of the at least one touch input of the plurality of touch inputs and positions of at least two other touch inputs of the plurality of touch inputs, and process the plurality of touch inputs at the corrected position.
[0007] In a further example, a computer system is provided that includes a processor and a computer-readable storage medium of any type defined above and configured to execute instructions. The details of one or more implementations are set forth in the accompanying drawings and the following description. Other features will become apparent from the following description and the accompanying drawings, as well as from the appended claims. [Brief description of the drawings]
[0008] [Figure 1A] FIG. 2 illustrates a computing device according to one implementation. [Figure 1B] FIG. 1B is a partial cross-sectional view of the computing device shown in FIG. 1A according to one implementation. [Diagram 2] FIG. 1B illustrates an enlarged area of the touch screen and camera included in the computing device shown in FIG. 1A according to one implementation. [Figure 3A] FIG. 13 illustrates a finger touching a portion of a magnified area near a camera according to one implementation. [Figure 3B] FIG. 13 illustrates measured touch values for locations within a magnified area contacted by a finger according to one implementation. [Figure 3C] FIG. 13 illustrates a scaling map for positions within a magnification area according to one implementation. [Figure 3D] FIG. 13 illustrates compensated touch values for locations within a magnified area contacted by a finger according to one implementation. [Figure 3E] 4 is a graph illustrating measured and compensated touch values as a function of position according to one implementation. [Figure 4A] FIG. 13 illustrates a predefined area within which a measured position will be shifted according to one implementation. [Figure 4B] FIG. 13 illustrates shift values for correcting a measured position according to one implementation. [Figure 4C] FIG. 13 illustrates an arm that contacts a stylus with an enlarged area according to one implementation. [Diagram 5] FIG. 1 illustrates measured and corrected touch positions according to one implementation. [Figure 6] FIG. 1 is a schematic diagram of a computing device according to one implementation. [Figure 7] FIG. 2 illustrates a pipeline of functions performed by a computing device according to one implementation. [Figure 8] 1 is a flowchart illustrating a method performed by a computing device according to one implementation. [Figure 9] 1 is a flowchart illustrating a method performed by a computing device according to one implementation. [Figure 10] 1 is a flowchart illustrating a method performed by a computing system according to one implementation. [Figure 11] 1 is a flowchart illustrating a method performed by a computing device according to one implementation. [Figure 12] FIG. 1 illustrates an example of a computing device and a mobile computing device that can be used to implement the techniques described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] Detailed Description A touch screen may have a low density of touch sensors near and / or above the camera to improve the camera's ability to capture an image. The lower the density of touch sensors near the camera, the smaller the measured touch value will be than a location with a higher density of touch sensors further away from the camera. The computing device may generate a compensated touch value based on the measured touch value and a scaling value. The scaling value may be associated with the location of the touch input at which the touch value was measured. The density of the touch sensors is the number of touch sensors per unit area of the touch screen; for example, the density of the touch sensors at any location may be defined as the number of touch sensors within a circle, rectangle, or square of a predetermined size and / or orientation centered at that location.
[0010] When sensors are less dense and / or when transitioning between locations of touch sensors with different densities, the measured location of the touch input may be shifted from the actual and / or true location of the touch input. Computing device 100 may determine the shifted location based on the measured location and either a shift value or a shifted location associated with the measured location. In some examples, another computing system may determine the shift value or shifted location by contacting the touchscreen with a stylus at multiple known locations and mapping the known locations where the stylus contacted the touchscreen to the measured touch locations.
[0011] When sensors are less dense and / or when transitioning between locations of touch sensors with different densities, the measured position of the touch input may be distorted from the actual and / or true position of the touch input. The computing device may determine that the measured position is distorted by comparing the measured and / or shifted position to other measured and / or shifted positions in the contiguous contact. The computing device may correct the distorted position based on the other measured positions, such as by applying a filter to the multiple positions.
[0012] 1A illustrates a computing device 100 according to one implementation. Computing device 100 may include, for example, a smartphone with a touchscreen 102, a tablet computing device with a touchscreen 102, a notebook or laptop computing device with a touchscreen 102, or a personal computing device with a touchscreen 102.
[0013] The touchscreen 102 can present visual output to a user. The touchscreen 102 can include pixels that emit colored light to collectively display pictures, icons, text, or other images.
[0014] The touchscreen 102 may also receive touch input from a user. The touch input may include a physical contact on the touchscreen 102 that causes a measurable change, such as a change in capacitance and / or a change in resistance, in the touchscreen 102. In some examples, the touchscreen 102 may include a capacitive touchscreen that detects touch input by measuring a change in capacitance caused by a part of the human body, such as a user's finger, contacting the touchscreen 102. In some examples, the touch sensor included in the touchscreen 102 may include metal traces that surround pixels. In some examples, the touchscreen 102 may detect touch input by measuring a change in resistance.
[0015] Computing device 100 may include a frame 104 that supports, encapsulates, and / or surrounds the touchscreen. Frame 104 may also support, encapsulate, and / or surround other components of computing device 100 not shown in FIG. 1A, such as, by way of non-limiting examples, memory, a processor, a speaker, a microphone, a wired communication interface, and / or a wireless communication interface.
[0016] Computing device 100 may include a camera 106. Camera 106 may capture visual data from outside computing device 100. Camera 106 may be included within and / or behind touchscreen 102 and may be configured to capture visual data from light passing through touchscreen 102.
[0017] 1A shows a front portion of computing device 100 that includes a touchscreen 102 and a camera 106. In some examples, computing device 100 may include a rear portion opposite the front portion that includes a second camera but does not include a touchscreen or other display.
[0018] To allow the touchscreen 102 to present visual output in the area over the camera 106 while also allowing the camera 106 to capture visual data, the pixel density in the area of the touchscreen 102 over the camera 106 may be lower than the pixel density in the area of the touchscreen 102 not over the camera 106. Here, the phrase "over the camera" refers to the portion of the touchscreen where the normal direction intersects with the camera. For some such portions of the touchscreen, the normal direction may block the light capture area of the camera. A lower pixel density allows the camera 106 to capture visual data accurately enough to present a visual output of sufficient quality. However, a lower pixel density may result in non-uniform parasitic capacitance measured to determine touch input compared to other portions of the touchscreen. FIG. 2, described below, shows an expanded area 108 of the touchscreen 102 over and around the camera 106, with some portions of the touchscreen 102 within the expanded area 108 having a lower pixel density than other portions of the touchscreen 102.
[0019] Figure 1B illustrates a partial cross-sectional view of the computing device 100 shown in Figure 1A according to one implementation, the cross-sectional view being taken along dashed line A in Figure 1A.
[0020] The touchscreen 102 may include a cover 112, a touch sensor layer 114, and / or a display layer 116. The cover 112 may be made of a transparent material, such as glass or plastic. The cover 112 may cover and / or protect other components of the touchscreen 102, such as the touch sensor layer 114 and / or the display layer 116. The cover 112 may overlay and / or be disposed above the other components of the touchscreen 102, such as the touch sensor layer 114 and / or the display layer 116.
[0021] The touch screen 102 may include a touch sensor layer 114. The touch sensor layer 114 may detect and / or measure touch input. The touch sensor layer 114 may detect and / or measure touch input, such as by detecting and / or measuring a change in capacitance and / or a change in resistance in response to the touch input. In some examples, the touch sensor layer 114 may be disposed and / or positioned between the cover 112 and the display layer 116. In some examples, portions of the touch sensor layer 114 may surround portions of the display layer 116, such as by metal traces included in the touch sensor layer 114 that surround display pixels included in the display layer 116.
[0022] The touch screen 102 may include a display layer 116. The display layer 116 may generate and / or display visual output, such as graphical output. The display layer 116 may include a number of pixels that each generate colored light to collectively display pictures, icons, text, or other images.
[0023] The computing device 100 may include a camera 106. In some examples, the camera 106 may be disposed and / or positioned below the touchscreen 102 (i.e., normal to the cover 112, toward the display layer 116). In some examples, the camera 106 may be disposed and / or positioned between the touchscreen 102 and the frame 104. In some examples, the camera 106 may be disposed and / or positioned within the touch sensor layer 114 and / or the display layer 116 of the touchscreen 102.
[0024] Computing device 100 may include a frame 104. Frame 104 may support, surround, and / or enclose components of computing device 100, such as touchscreen 102 and / or camera 106.
[0025] FIG 2 illustrates the magnification area 108 of the touch screen 102 and camera 106 included in the computing device 100 shown in FIG IA according to one implementation. The magnification area 108 includes a number of locations 211-288. As shown in FIG 2, the second digit of the reference number for the locations 211-288 indicates the row of the respective location, and the third digit of the reference number indicates the column. Although FIG 2 illustrates the magnification area 108 divided into 64 locations, other levels of granularity are possible, and the magnification area may be divided into more or less than 64 locations.
[0026] In this example, the shaded locations 233, 234, 235, 243, 244, 245, 253, 254, 255 have a lower density of touch sensors than other locations in the enlarged area 108. The density of touch sensors may represent the number of touch sensors per unit area of the touch screen 102 overlying the touch sensors and / or the number of touch sensors under a given area of the touch screen 102. In some examples, the lower density of touch sensors may include a lower density of pixels and / or a lower density of metal traces surrounding the pixels and their capacitance changes are measured. In some examples, the shaded locations 233, 234, 235, 243, 244, 245, 253, 254, 255 with a lower density of touch sensors may be closer to and / or closer to the camera 106 than other locations in the enlarged area 108. The term "proximity" is used to mean "meeting a proximity criterion." For example, the proximity criterion may be that the location is within a predetermined distance from the camera, or that the location is over the camera (i.e., the normal to the sensor layer at the location occludes the camera), or that the location is within a predetermined distance in the plane of the sensor layer 114 from a portion of the sensor layer 114 that is on the optical axis of the camera. The change in density may be abrupt, where the density of touch sensors at adjacent locations is much higher or lower than each other, or may be gradual, where the density of touch sensors gradually increases or decreases along the path of the location. In some examples, the other locations with a higher density of touch sensors may be located farther away from the camera 106 and / or closer to the camera 106 than the locations 233, 234, 235, 243, 244, 245, 253, 254, 255. In some examples, the locations 233, 234, 235, 243, 244, 245, 253, 254, 255 with less dense touch sensors may completely overlie the camera 106 (i.e., looking across the cover 112, completely covering the camera 106).
[0027] 3A shows finger 300 touching a portion of magnification area 108 near camera 106, according to one implementation. Finger 300 can touch any number of locations 211-288 inside or outside magnification area 108.
[0028] FIG. 3B illustrates measured touch values for locations within the enlarged area 108 contacted by a finger 300 according to one implementation. FIG. 3B illustrates a measured touch value map 310 corresponding to the locations 211-288 illustrated in FIG. 2 and FIG. 3A. For ease of viewing, the reference numbers of the locations 211-288 to which the measured touch values correspond are not illustrated in FIG. 3B. However, locations with a low density of touch sensors are shaded for ease of reference. Although FIG. 3B graphically illustrates the measured touch values in a two-dimensional map, the measured touch values may be represented and / or stored in other formats, such as a comma separated value file or a two-dimensional array. The measured touch values may represent raw data received from the touch sensors, such as a change in capacitance and / or a change in resistance. The measured touch values may include a range of values, such as a lower limit of zero (0) to indicate no contact or touch was detected, and an upper limit to represent a maximum measurable force or change in capacitance and / or resistance. The measured location of the touch input may represent a location where the measured touch value is greater than zero (0).
[0029] 3B, the areas with a value of 0 indicate that no contact or touch was measured or detected at the locations corresponding to the areas with a value of 0. Also in this example, the areas corresponding to locations 232, 242, 243, and 252 have a measured touch value of 50. Also in this example, the areas corresponding to locations 233, 234, 244, 253, and 254 have a measured touch value of 50. These measured touch input values are examples, and computing device 100 could measure other touch input values. Based on this raw touch input data alone, contacts by finger 300 would appear to be most densely located toward the left along the second column, as reflected by the measured touch values of 50 for locations 232, 242, and 252. However, as discussed above, locations 233, 234, 235, 243, 244, 245, 253, 254, 255 have a lower density of touch sensors than other locations, which can cause the measured values at locations 233, 234, 235, 243, 244, 245, 253, 254, 255 to be lower than what an actual contact by finger 300 should reflect. To correct for the inaccurately low measured touch values, computing device 100 can compensate for the lower density of touch sensors by increasing the touch values for locations 233, 234, 235, 243, 244, 245, 253, 254, 255.
[0030] 3C illustrates a scaling map 320 (or "scaling value map") for locations within the enlarged area according to one implementation. A scaling map can associate multiple scaling values with multiple locations. The locations can be identified by x and y values where the location represents a point on the touch screen 102 and / or by a range of x and y values where the location represents a rectangular area on the touch screen 102. The scaling map 320 illustrates scaling values by which the measured touch values would be multiplied to compensate for a lower density of touch sensors at locations 233, 234, 235, 243, 244, 245, 253, 254, 255 that are close to and / or near the camera 106. The scaling value can be a value associated with position that will compensate for the low density of touch sensors, so that even if you have touch sensors with different densities in different locations, when touched by the same object with the same amount of force, the compensated touch value will be the same at the different locations after correction based on the measured touch value and the scaling value.
[0031] In this example, the scaling value for locations 233, 234, 235, 243, 244, 245, 253, 254, 255 that are proximate and / or near the camera 106 is 2, and the scaling value for other locations is 1. This is merely an example, and other scaling values can be included and / or stored in the scaling value map 320 to compensate for a lower density of touch sensors at some locations. The scaling value may include two values in the example shown in FIG. 3C, or the scaling value may be more fine-grained and many separate values, three or more, may be represented on the scaling map. Although FIG. 3C graphically illustrates the scaling value map 320 as a two-dimensional map, the scaling value map 320 may be represented and / or stored in other formats, such as a comma-separated value file or a two-dimensional array. In some examples, the scaling value for each location may be inversely proportional to the density of touch sensors at the respective location, and / or the ratio of the scaling values of two different locations to one another may be inversely proportional to the ratio of the densities of touch sensors at those two different locations to one another.
[0032] Computing device 100 can correct and / or compensate for the low density of touch sensors at locations 233, 234, 235, 243, 244, 245, 253, 254, 255 by multiplying the measured touch values shown in Figure 3B by the scaling values of Figure 3C. The result of multiplying the measured touch values shown in Figure 3B by the scaling values of Figure 3C can be compensated touch values.
[0033] FIG. 3D illustrates compensated touch values for finger contact locations within the enlarged area 108 according to one implementation. The compensated touch values are represented in FIG. 3D in a compensated touch value map 330 (or "compensation value map"). FIG. 3D illustrates the compensation value map 330 graphically as a two-dimensional map, which may be represented and / or stored in other formats, such as a comma-separated value file or a two-dimensional array. The compensated touch value may be a numerical value having the same range as the measured touch value, representing the force an object applies after correcting and / or compensating the measured touch value with a scaling value. The compensated touch value may be passed to and / or processed by an application and / or operating system as touch input to be processed by the application and / or operating system.
[0034] The computing device 100 can process the compensated touch values as touch inputs to determine how to respond to the touch inputs. A compensated touch value of 100 for location 243 and a compensated touch value of 50 for locations 232, 233, 234, 242, 244, 252, 253, 254 indicate that the contact by finger 300 was strongest and / or heaviest at location 243 and was also significant at locations 232, 233, 234, 242, 244, 252, 253, 254.
[0035] FIG. 3E is a graph showing measured touch values 315 and compensated touch values 335 as a function of position according to one implementation. The graph in FIG. 3E shows touch values as a function of position in only a single direction, such as vertical or horizontal. The smooth curves of measured touch values 315 and compensated touch values 335 shown in FIG. 3E indicate that the granularity of the measured touch values is greater and / or that the touch screen 102 and / or the enlarged area 108 are divided into more positions than shown in the previous figures. Furthermore, in this example, there may be different scaling values for different corresponding positions in the low-density area, e.g., the scaling values are larger toward the center of gravity of the low-density area 350. The difference between the compensated touch values 335 and the measured touch values 315 in the low-density area 350 may correspond to positions 233, 234, 235, 243, 244, 245, 253, 254, 255 where the touch sensors are less dense, and shows the effect of multiplying the measured touch values by the scaling values. A distorted curve for measured touch values 315 would inaccurately place the strongest touch contacts to the right of the contact point. A symmetrical curve for compensated touch values 335 would accurately place the strongest touch contacts in the center of the contact point.
[0036] 3E, the distorted curve of the measured touch values 315 shows a measured center 360 that is distorted and / or shifted to the right of the actual center 370 of the contact at the peak of the measured touch value curve 315, as indicated by the peak of the compensated touch value 335 curve. By compensating the measured touch values based on the compensated touch value map 330, the computing device 100 can determine the exact location of the center of the contact at the actual center 370 and / or at the peak of the compensated touch value 335 curve.
[0037] 4A illustrates a predefined area 400 within the expansion area 108 where the measured location will be shifted, according to one implementation. The predefined area 400 may be an area on the touch screen 102 where the measured location may be shifted and / or inaccurate due to a change in density of touch sensors. The predefined area 400 may be stored on the computing device 100, such as in a memory of the computing device 100. In some examples, the predefined area 400 is on and / or at an edge of a location where the density of touch sensors is lower. In some examples, the predefined area 400 is at an interface between a location where the density of touch sensors is lower and a location where the density of touch sensors is normal and / or standard.
[0038] In some examples, the predefined area 400 has a shape homeomorphic to an annulus. Two shapes can be considered homeomorphic if they can be deformed to one another by bending or stretching their respective parts without breaking, cutting, or attaching their respective parts to one another. The predefined area 400 can define a location 402 that is not part of the predefined area 400 and / or the location 402 can be bounded by the predefined area 400. The predefined area 400 can have a shape that encompasses the location 402, such as, for non-limiting examples, a square, a circle, a rectangle, or an oval. The location 402 can overlap at least a portion of the camera 106 (not shown in FIG. 4A ).
[0039] In some examples, the predefined area 400 has a shape that is homeomorphic to a square, such as, by way of non-limiting example, a square, a circle, a rectangle, or an oval, etc. The predefined area 400 may overlap at least a portion and / or the entirety of the camera 106.
[0040] In some examples, a transition from a low density of touch sensors to a higher density of touch sensors within the expanded area of the touch screen 102 within the predefined area 400 may cause the measured touch location to shift outward and / or away from the camera 106 compared to the actual contact location at which the touch location is measured. The computing device 100 may compensate for the outward shift by shifting the measured location inward toward the camera 106. The computing device 100 may shift the measured location inward by adding a vector, such as an x value and a y value, to the measured touch location. The computing device 100 may determine the vector to add to the measured touch location by mapping the measured touch location to a vector. The measured touch locations and vectors may be associated with each other in a stored map and / or table, a comma separated value file, or a two-dimensional array, as non-limiting examples.
[0041] 4B illustrates shift values for correcting measured positions according to one implementation. The shift values may be vectors by which the measured touch values will be modified to arrive at corrected and / or shifted values. In this example, the shift values are shown graphically on the shift map 410. For measured positions indicated by the locations of the black circles, no shifting is required. The arrows graphically indicate the shift values. The shift values may also be represented as pairs of values, such as positive or negative values for each of the horizontal (x) and vertical (y) directions.
[0042] The computing device 100 may add the shift value to the measured touch location to determine a correct shifted location. The computing device 100 may determine the shift value based on the measured touch location, such as by mapping the measured touch value to a shifted location. The computing device 100 may process the touch input based on the shifted value and / or the shifted location. The shifted value and / or the shifted location may be a location where the touch input would be processed after correcting for a shift caused by a change in density of the touch sensor. In some examples, the computing device 100 may determine the shifted location and / or the corrected location directly based on the measured touch location, such as by mapping the measured touch location to the corrected location and / or the shifted location. In practice, an area where an object, such as a stylus or a user's finger, is located may include multiple locations with non-zero touch values. Some of these may be within a predefined area and some may not be within a predefined area. The shift value may be applied to the shift values of the measured locations that are within the area. An operation may then be applied (e.g., based on the shifted positions and the (unshifted) measured values outside the predefined area) to estimate the location of the center of the area where the object touched the touch screen. For example, the estimated position may be a weighted average of the shifted and unshifted positions, where the weights are the respective touch values or compensated touch values. Alternatively, the touch values (or compensated touch values) at the shifted and unshifted positions may be used in a curve fitting process to find the peak of the curve.
[0043] The computing device 100 and / or another computing system can experimentally determine the shift value. In some examples, the computing system can contact the touch screen 102, or another touch screen having similar hardware features as the touch screen 102 and / or computing device 100, with a stylus or other object at multiple known locations on the touch screen. The computing system can map and / or associate the known touch locations with corresponding measured touch locations. The computing system can determine the difference between the known touch locations and the corresponding measured touch locations. The computing system can store the difference between the known touch locations and the corresponding measured touch locations as a shift value in association with the corresponding measured touch locations. The computing system can store the shift value in association with the corresponding measured touch locations as a shift map 410 as shown in FIG. 4B or in other formats such as a table, a comma-separated value file, or a two-dimensional array, as non-limiting examples.
[0044] 4C illustrates an arm 430 contacting a stylus 420 with the enlarged area 108 according to one implementation. The arm 430 and / or the stylus can be controlled by a computing system that contacts the stylus 420 with the touchscreen 102 and / or the enlarged area 108 within the touchscreen 102 at a number of known locations. The known locations can be predetermined locations on the touchscreen 102 and / or locations where the stylus 420 is intended to contact the touchscreen 102 and / or locations where an instrument external to the computing device 100 and / or computing system with which the stylus 420 is in contact measures the stylus contact. The locations on the touchscreen 102 where the stylus 420 contacts the touchscreen 102 may be known and / or predetermined to the computing system. The computing system can determine a shift value based on the difference between the known location of the contact and the measured touch location of the contact. The computing system may store the determined shift values, such as in a shift map 410 as shown in FIG. 4B, or in other formats, such as a table, a comma separated value file, or a two-dimensional array, as non-limiting examples. In some examples, the computing system may generate the shift map 410 based on known positions for the contacts and measured touch positions for the contacts. The computing system and / or an intermediate computing system may provide the stored shift values to the computing device 100.
[0045] In some examples, the measured touch location may be a measured center of the contact, such as the measured center 360 shown in FIG. 3E, due to distortion caused by reduced sensor density in some areas. In these examples, the computing device 100 may shift the location of the measured center 360 to the actual center based on the shift map 410.
[0046] FIG. 5 illustrates measured touch locations 502, 504, 506, 508, 510, 512 and corrected touch locations 507, 509 according to one implementation. The computing device 100 can receive multiple touch inputs at different times. The computing device 100 can receive multiple touch inputs within a predetermined period of time, such as within one second of each other. This can be done using the respective recorded times associated with the measured touch locations. The multiple touch inputs can be part of and / or included in a single movable contact across the touch screen 102 and / or the extended area 108 of the touch screen 102. The measured touch locations 502, 504, 506, 508, 510, 512 can represent measured locations of multiple touch inputs. In some examples, the density of the touch sensors can vary, distorting some of the measured locations from the actual contact locations. In some examples, changes in density of touch sensors can distort some of the measured positions from the actual touch position, even after performing the shifts described above with respect to Figures 4A, 4B, and 4C.
[0047] The computing device 100 may determine that the position of at least one touch location of the plurality of measured touch locations 502, 504, 506, 508, 510, 512 is distorted. In the example shown in Figure 5, the computing device 100 determines that the measured touch locations 506, 508 are distorted. The distance between the locations 506, 508 and the corrected locations 507, 509 is exaggerated in Figure 5 for illustrative purposes. The computing device 100 can determine that at least one of the measured touch locations 502, 504, 506, 508, 510, 512 is distorted based on comparing the positions and / or times of the multiple measured touch locations 502, 504, 506, 508, 510, 512 to one another (wherein a "time of a measured touch location" means the time at which a force is measured at that location, which time may be recorded), such as by comparing the positions and / or times of the measured touch locations 502, 504, 506, 508, 510, 512 to a predicted curve and / or arc, and / or by applying one or more filters to the positions and / or times of the measured touch locations 502, 504, 506, 508, 510, 512 and determining that the position of the at least one of the measured touch locations 502, 504, 506, 508, 510, 512 is distorted.
[0048] Based on determining that the position of at least one of the measured touch locations 502, 504, 506, 508, 510, 512 is distorted, the computing device 100 may correct the measured position of the touch input determined to be distorted, such as the measured touch location 506, 508, based on the position of the touch value and / or the measured touch location 506, 508 and at least two other touch values, such as the measured touch locations 502, 504, 510, 512. In some examples, the computing device 100 may correct the distorted position by applying a filter to the measured touch locations 502, 504, 506, 508, 510, 512. In some examples, the filter may include an infinite impulse response filter, a Kalman filter, and / or a Butterworth filter.
[0049] 5, vectors 530, 532 represent corrections to the measured touch locations 506, 508. The computing device 100 can add the vectors 530, 532 to the measured touch locations 506, 508 to arrive at corrected locations 507, 509 and / or corrected paths. The computing device 100 can process the touch input based on the corrected locations 507, 509 and / or corrected paths 540 and the measured touch locations 502, 504, 510, 512 that are determined to be undistorted.
[0050] 6 is a schematic diagram of a computing device 100 according to one implementation. The computing device 100 may include a touch input processor 602. The touch input processor 602 may process touch input, such as by measuring a change in capacitance of a touch sensor caused by an object contacting the touch screen 102.
[0051] The touch input processor 602 may include a touch value measurer 604. The touch value measurer 604 may measure values associated with touch input to the touch screen 102, such as position, magnitude, and / or time.
[0052] A position measurement unit 606 included in the touch value measurement unit 604 can measure the position of the touch input. The position can be measured based on which touch sensor changes capacitance. The position can be represented and / or stored as x and y values that can represent a horizontal distance from a corner of the touch screen 102 and a vertical distance from the corner of the touch screen 102. In some examples, the horizontal distance can be measured in pixels and / or the vertical distance can be measured in pixels.
[0053] The magnitude measurement unit 608 included in the touch value measurement unit 604 can measure the magnitude and / or force of the touch input. The magnitude can be measured based on the amount of capacitance change experienced by the touch sensor. The magnitude can be expressed and / or stored as an absolute value.
[0054] A time measurement unit 609 included in the touch value measurement unit 604 can measure the time and / or duration of the touch input. The time can be measured by comparing the change in capacitance to a clock internal to and / or accessed by the computing device 100. The time can be represented and / or stored as an absolute date and / or time, or relative to a particular time. The duration can be the time from when the touch input begins to when the touch input ends. The duration can be represented and / or stored as seconds and / or tenths of a second.
[0055] The computing device can include a touch value compensator 610. The touch value compensator 610 can compensate, augment, and / or multiply the measured touch value with a scaling value that is based on and selected to compensate for a smaller number of touch sensors at the location of the touch contact.
[0056] The touch value compensator 610 may include a scale mapper 612. The scale mapper 612 can map the location of a touch contact to a scaling value, such as the scaling values included in the scaling value map 320 shown in FIG. 3C. The touch value compensator 610 can multiply the measured touch value by the scaling value to generate a compensated touch value.
[0057] The computing device 100 may include a shift corrector 614. The shift corrector 614 may correct shifted touch location values resulting from changes in touch sensor density, such as the shifted touch location values within the predefined area 400 described above in connection with FIG.
[0058] The shift compensator 614 may include a shift mapper 616. The shift mapper 616 may map the detected and / or measured touch locations to a shift value. The shift mapper 616 may, for example, determine whether a measured location of the touch input is within the predefined area 400. If the measured location is within the predefined area, the shift mapper 616 may determine a shift value based on the measured touch location. In some examples, the shift mapper 616 may determine a shift value, for example, by mapping the measured touch location to a shift value included on the shift map 410. In some examples, the shift mapper 616 may determine a shift value by finding a shift value associated with the measured touch location and stored in a file. In some examples, the shift compensator 614 may determine a corrected location for the touch input by finding a corrected location associated with the measured touch location and stored in a file, instead of a shift value.
[0059] The shift corrector 614 can determine a corrected and / or shifted position for the touch input based on the measured position and the shift value. The computing device 100 can process the touch input based on the shifted and / or corrected position.
[0060] The computing device 100 may include a distortion correction unit 618. The distortion correction unit 618 may correct distorted positions where the multiple touch inputs indicated that the position of at least one of the touch inputs is distorted. In some examples, the distortion correction unit 618 may correct the distorted position after the touch value compensation unit 610 corrects and / or compensates the measured touch value and / or after the shift correction unit 614 corrects the shifted position.
[0061] The distortion correction unit 618 may include a distortion determination unit 620. The distortion determination unit 620 may determine that a position of at least one of the plurality of touch inputs is distorted. The distortion determination unit 620 may determine that a position of at least one of the plurality of touch inputs is distorted based on a time and a position of the plurality of touch inputs. The distortion determination unit 620 may determine that a position of at least one of the plurality of touch inputs is distorted based on the plurality of touch inputs not conforming to a pre-stored pattern such as an arc or a line.
[0062] The distortion correction unit 618 may include a filter 622. The filter 622 may correct the position of the touch input position that the distortion determination unit 620 determines to be distorted. The filter 622 may correct the position of the distorted touch input position by applying a filter, such as an infinite impulse response filter, a Kalman filter, and / or a Butterworth filter, to the multiple touch inputs.
[0063] Computing device 100 may include a display processor 624. Display processor 624 may control graphical output generated by touch screen 102, such as based on instructions from one or more applications executing on computing device 100 and / or instructions from an operating system executing on computing device 100.
[0064] The computing device 100 may include a camera processor 626. The camera processor 626 may receive and / or process visual data received by the camera 106.
[0065] Computing device 100 may include at least one processor 628. The at least one processor 628 may execute instructions, such as instructions stored in at least one memory device 630, to cause computing device 100 to perform any combination of the methods, functions and / or techniques described herein.
[0066] Computing device 100 may include at least one memory device 630. At least one memory device 630 may include a non-transitory computer-readable storage medium. At least one memory device 630 may store data and instructions that, when executed by at least one processor, such as processor 628, are configured to cause computing device 100 to perform any combination of the methods, functions, and / or techniques described herein. Thus, in any of the implementations described herein (even if not expressly stated in connection with a particular implementation), software (e.g., processing modules, stored instructions) and / or hardware (e.g., processors, memory devices, etc.) associated with or included in computing device 100, alone or in combination with computing device 100, may be configured to perform any combination of the methods, functions, and / or techniques described herein.
[0067] The memory 630 may store maps, such as the scaling map 320 and / or the shift map 410 described above. The memory 630 may store touch values 632, such as the touch values described above. For each stored touch value 632, the memory 630 may store a position 634, a magnitude 636, and / or a time 638 and / or duration.
[0068] Computing device 100 may include at least one input / output node 640 (i.e., interface). At least one input / output node 640 may, for example, receive data from a server and / or send data to a server, and / or receive input from a user and / or provide output to a user. Input and output functions may be combined into a single node or may be split into separate input and output nodes. Input / output node 640 may include, for example, touch screen 102, camera 106, a speaker, a microphone, one or more buttons, and / or one or more wired or wireless interfaces for communicating with other computing devices.
[0069] 7 illustrates a pipeline 700 of functions performed by computing device 100 according to one implementation. Computing device 100 may receive touch input (702). Computing device 100 may receive touch input via touch screen 102.
[0070] The computing device 100 may process the measured touch value (704). The computing device 100 may process the measured touch value by, for example, determining a magnitude of the touch value based on the amount of change to the capacitance of the touch sensor that detected the touch input.
[0071] The computing device 100 may compensate the measured touch value (706). The computing device 100 may compensate the measured touch value, for example, by determining a scaling value associated with the position of the touch input and multiplying the measured touch value by the scaling value.
[0072] Computing device 100 may determine (708) whether the location of the touch input is within predefined area 400. If the touch input is located within predefined area 400, computing device 100 may shift (710) the measured location of the touch input, such as by shifting the measured location of the touch input based on shift map 410.
[0073] The computing device 100 may reduce jitter in the measured touch input (712). The computing device 100 may reduce jitter in the measured touch input by, for example, applying a filter, such as an averaging filter, to the multiple touch inputs.
[0074] The computing device 100 may determine whether one or more positions that may have been shifted or not shifted in (710) are distorted (714). The computing device 100 may determine whether the positions are distorted based on the positions and times of the multiple touch inputs, such as by applying a filter to the multiple positions and times. If the computing device determines that the positions are not distorted, the computing device 100 may process the touch values (716). If the computing device 100 determines that the positions are distorted, the computing device 100 may correct the distortion (718) and then process the corrected touch values (716).
[0075] FIG. 8 is a flow chart illustrating a method performed by computing device 100 according to one implementation. The method may include receiving (802) a first measured touch value. The first measured touch value may indicate a first touch input at a first location, such as location 243 near camera 106 included in computing device 100. An example of a measured touch value is shown in FIG. 3B. The method may also include receiving (804) a second measured touch value. The second measured touch value may indicate a second touch input at a second location, such as location 242, that is farther from camera 106 than the first location. A density of touch sensors at the second location may be greater than a density of touch sensors at the first location. The method may also include generating (806) a first compensated touch value. The first compensated touch value may be generated based on the first measured touch value and a first scaling value. An example of a scaling value is shown in FIG. 3C. The method may also include generating (808) a second compensated touch value. A second compensated touch value may be generated based on the second measured touch value and the second scaling value. The second scaling value may be less than the first scaling value. The method may also include processing (810) the first touch input and the second touch input. The first touch input and the second touch input may be processed based on the first compensated touch value and the second compensated touch value.
[0076] According to one example, the ratio between the first scaling value and the second scaling value can be inversely proportional to the ratio of the density of touch sensors at the first location to the density of touch sensors at the second location.
[0077] According to one example, the first measured touch value may indicate a change in capacitance in response to a first touch input.
[0078] According to an example, the second measured touch value may indicate a change in capacitance in response to the second touch input.
[0079] According to one example, a first measured touch value can be received from a touch screen, such as touch screen 102.
[0080] According to one example, the first measured touch value can be received from a capacitive touch screen.
[0081] 9 is a flow chart illustrating a method performed by a computing device according to one implementation. The method may include determining (902) that a measured position of a touch input on a touch screen is within a predefined area. The predefined area, such as predefined area 400, may be proximate to camera 106. The method may include determining (904) a shift value. The shift value, an example of which is shown diagrammatically in FIG. 4B, may be for the touch input based on the measured position of the touch input. The method may include determining (906) a shifted position. The shifted position may be determined for the touch input based on the measured position and the shift value. The method may include processing (908) the touch input. The touch input may be processed based on the shifted position.
[0082] According to one example, the predefined area may have a shape that is homeomorphic to an annulus, and a location, such as location 402, may be delimited by that shape. The location may overlap at least a portion of the camera.
[0083] According to one example, determining the shift may include mapping a position of the touch input to a shift value.
[0084] FIG. 10 is a flow chart illustrating a method performed by a computing system according to an implementation. The method may include contacting the touch screen at a plurality of known locations (1002). An example of contacting the touch screen 102 at a plurality of known locations is shown in FIG. 4C. An example of identifying the known locations is shown in FIG. 2. The plurality of known locations may include at least a first location, such as location 242, where the touch sensors are at a first density, and a second location, such as location 243, where the touch sensors are at a second density. The second density of the touch sensors may be less than the first density of the touch sensors. The method may also include determining a plurality of measured locations (1004). The plurality of measured locations may be on the touch screen 102. The plurality of measured locations may correspond to a plurality of known locations. The method may also include generating a map (1006). The map may map the plurality of measured locations to a plurality of known locations, an example of which may be either the shift map 410 shown in FIG. 4B or a map that replaces the measured locations with known locations.
[0085] According to one example, the method may further include storing the map in a memory of the mobile computing device, such as memory 630 of computing device 100 .
[0086] According to an example, the touch screen may be a first touch screen, such as a first touch screen on a measurement device and / or a calibration device. The method may further include receiving a touch input on a second touch screen, such as touch screen 102. The method may further include determining that a location of the touch input on the second touch screen 102 was within a predefined area, such as predefined area 400 proximate to camera 106. The method may further include determining a shift value for the touch input based on the location of the touch input and the generated map, such as the shift value shown in FIG. 4B. An example of the generated map may be shift map 410 shown in FIG. 4B. The method may also include processing the touch input based on the location of the touch input and the determined shift value. The touch input may be processed by a client device, such as computing device 100.
[0087] FIG. 11 is a flow chart illustrating a method performed by the computing device 100 according to an implementation. The method may include receiving (1102) a plurality of touch inputs. The plurality of touch inputs may be received at different times and may be included in a single moving contact. An example of the plurality of touch inputs 502, 504, 506, 508, 510, 512 is shown in FIG. 5. The method may include determining (1104) that a measured position for at least one touch input of the plurality of touch inputs is distorted. In the example of FIG. 5, touch inputs 506, 508 are determined to be distorted. The method may include correcting (1106) the distorted position of at least one touch input of the plurality of touch inputs based on determining that the position of the at least one touch input of the plurality of touch inputs is distorted. The distorted position may be corrected based on the distorted position of the at least one touch input of the plurality of touch inputs and the positions of at least two other touch inputs of the plurality of touch inputs. Examples of the at least two other touch inputs of the plurality of touch inputs include touch inputs 502, 504, 510, and 512. The method may also include processing (1108) the plurality of touch inputs with a corrected position. The corrected position may include corrected touch positions 507 and 509.
[0088] According to one example, correcting the distorted positions may include applying a filter to the positions of the multiple touch inputs.
[0089] According to one example, correcting the distorted positions may include applying an infinite impulse response filter to the positions of the multiple touch inputs.
[0090] According to one example, correcting the distorted positions may include applying a Kalman filter to the positions of the multiple touch inputs.
[0091] According to one example, correcting the distorted positions may include applying a Butterworth filter to the positions of the multiple touch inputs.
[0092] According to one example, the touch inputs can be received via a touch screen, such as touch screen 102.
[0093] According to one example, the touch inputs can be received via a capacitive touch screen.
[0094] According to an example, the method may further include determining that the plurality of touch inputs are received within a predetermined time period. Correcting the distorted position may include correcting the distorted position based on determining that the plurality of touch inputs are received within the predetermined time period and determining that a position of at least one touch input of the plurality of touch inputs is distorted.
[0095] 12 illustrates an example of a general purpose computing device 1200 and a general purpose mobile computing device 1250 that may be used with the techniques described herein. Computing device 1200 is intended to represent various forms of digital computers, such as laptops, desktops, tablets, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other suitable computing devices. Computing device 1250 is intended to represent various forms of mobile devices, such as personal digital assistants, mobile phones, smartphones, and other similar computing devices. The components illustrated herein, their connections and relationships, and their functions are intended to be exemplary only and are not intended to limit the implementation of the inventions described and / or claimed herein.
[0096] The computing device 1200 includes a processor 1202, a memory 1204, a storage device 1206, a high-speed interface 1208 that connects to the memory 1204 and a high-speed expansion port 1210, and a low-speed interface 1212 that connects to a low-speed bus 1214 and the storage device 1206. The processor 1202 can be a semiconductor-based processor. The memory 1204 can be a semiconductor-based memory. Each of the components 1202, 1204, 1206, 1208, 1210, and 1212 can be interconnected using various buses and implemented on a common motherboard or in other manners as appropriate. The processor 1202 can process instructions for execution within the computing device 1200, including instructions stored in the memory 1204 or the storage device 1206, to display graphical information for a GUI on an external input / output device, such as a display 1216 coupled to the high-speed interface 1208. In other implementations, multiple processors and / or multiple buses can be used as appropriate, along with multiple memories and types of memories. Also, multiple computing devices 1200 may be connected, each providing a portion of the required operations (eg, as a bank of servers, as a group of blade servers, or as a multi-processor system).
[0097] The memory 1204 stores information within the computing device 1200. In one implementation, the memory 1204 is one or more volatile memory units. In another implementation, the memory 1204 is one or more non-volatile memory units. The memory 1204 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.
[0098] The storage device 1206 can provide mass storage for the computing device 1200. In one implementation, the storage device 1206 can be or include a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, or an array of devices including flash memory or other similar solid-state memory devices, or devices in a storage area network or other configuration. The computer program product can be tangibly embodied in an information carrier. The computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, such as the memory 1204, the storage device 1206, or a memory on the processor 1202.
[0099] The high-speed controller 1208 manages bandwidth-intensive operations for the computing device 1200, and the low-speed controller 1212 manages less bandwidth-intensive operations. Such an allocation of functions is merely an example. In one implementation, the high-speed controller 1208 is coupled to the memory 1204, the display 1216 (e.g., via a graphics processor or accelerator), as well as to a high-speed expansion port 1210 that may accept various expansion cards (not shown). In this implementation, the low-speed controller 1212 is coupled to the storage device 1206 and the low-speed expansion port 1214. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled, for example, via a network adapter, to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router.
[0100] The computing device 1200 may be implemented in a number of different forms, as shown in the figure. The computing device 1200 may be implemented, for example, as a standard server 1220 or multiple times within a group of such servers. The computing device 1200 may also be implemented as part of a rack server system 1224. In addition, the computing device 1200 may be implemented in a personal computer, such as a laptop computer 1222. Alternatively, components from the computing device 1200 may be combined with other components in a mobile device (not shown), such as device 1250. Each such device may include one or more of the computing devices 1200, 1250, and the entire system may be composed of multiple computing devices 1200, 1250 in communication with each other.
[0101] Computing device 1250 includes, among other components, a processor 1252, memory 1264, input / output devices such as a display 1254, a communication interface 1266, and a transceiver 1268. Device 1250 may also include a storage device, such as a microdrive or other device, to provide additional storage. Each of components 1250, 1252, 1264, 1254, 1266, and 1268 are interconnected using various buses, and some of the components may be implemented on a common motherboard or in other manners, as appropriate.
[0102] The processor 1252 can execute instructions within the computing device 1250, including instructions stored in the memory 1264. The processor may be implemented as a chipset of chips including separate analog and digital processors. The processor may provide coordination of other components of the device 1250, such as, for example, control of a user interface, applications executed by the device 1250, and wireless communication by the device 1250.
[0103] The processor 1252 may communicate with a user via a control interface 1258 and a display interface 1256 coupled to a display 1254. The display 1254 may be, for example, a thin-film-transistor liquid crystal display (TFT LCD) or an organic light emitting diode (OLED) display, or other suitable display technology. The display interface 1256 may include appropriate circuitry for driving the display 1254 to present graphical and other information to the user. The control interface 1258 may receive commands from a user and translate and submit the commands to the processor 1252. In addition, an external interface 1262 may be provided in communication with the processor 1252 to enable short-range communication between the device 1250 and other devices. The external interface 1262 may provide, for example, wired communication in some implementations or wireless communication in other implementations, and multiple interfaces may be used.
[0104] The memory 1264 stores information within the computing device 1250. The memory 1264 may be realized as one or more of one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 1274 may be provided and connected to the device 1250 via an expansion interface 1272, which may include, for example, a Single In Line Memory Module (SIMM) card interface. Such expansion memory 1274 may provide additional storage space for the device 1250 or may store applications or other information for the device 1250. In particular, the expansion memory 1274 may include instructions for performing or supplementing the processes described above, and may also include secure information. Thus, for example, the expansion memory 1274 may be provided as a security module for the device 1250 and may be programmed with instructions that enable secure use of the device 1250. Additionally, secured applications may be provided via the SIMM card along with additional information, such as by placing identifying information on the SIMM card in a non-hackable manner.
[0105] The memory may include, for example, flash memory and / or NVRAM memory, as described below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as the methods described above. The information carrier may be a computer-readable or machine-readable medium, such as memory 1264, expansion memory 1274, or memory on processor 1252, and may be received, for example, via transceiver 1268 or external interface 1262.
[0106] Device 1250 may communicate wirelessly via communication interface 1266, which may include digital signal processing circuitry as necessary. Communication interface 1266 may provide for communication under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio frequency transceiver 1268. In addition, short-range communication may occur using Bluetooth, WiFi, or other such transceivers (not shown), or the like. In addition, Global Positioning System (GPS) receiver module 1270 may provide device 1250 with additional navigation-related and location-related wireless data that may be used as appropriate by applications executing on device 1250.
[0107] Device 1250 may also communicate speech-enabled using voice codec 1260, which may receive and convert spoken information from a user into usable digital information. Voice codec 1260 may likewise generate audible sounds for the user, such as through a speaker in a handset of device 1250. Such sounds may include sounds from a voice telephone call, may include recorded sounds (e.g., voice messages, music files, etc.), and may include sounds generated by applications running on device 1250.
[0108] Computing device 1250 may be implemented in a number of different forms, as shown in the figure. For example, computing device 1250 may be implemented as a mobile phone 1280. Computing device 1250 may also be implemented as part of a smartphone 1282, personal digital assistant, or other similar mobile device.
[0109] Various implementations of the systems and techniques described herein may be realized in digital electronic circuitry, integrated circuits, specially designed application specific integrated circuits (ASICs), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementations in one or more computer programs executable and / or interpretable on a programmable system including at least one programmable processor, which may be special purpose or general purpose, coupled to receive and transmit data and instructions from / to a storage system, at least one input device, and at least one output device.
[0110] These computer programs (also known as programs, software, software applications or code) contain machine instructions for a programmable processor and may be implemented in a high-level procedural and / or object-oriented programming language and / or in assembly / machine language. The terms "machine-readable medium" and "computer-readable medium" as used herein refer to any computer program product, apparatus, and / or device (e.g., magnetic disk, optical disk, memory, Programmable Logic Device (PLD)) used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and / or data to a programmable processor.
[0111] To provide for user interaction, the systems and techniques described herein can be implemented on a computer having a display device (e.g., a cathode ray tube (CRT) or liquid crystal display (LCD) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) that the user can use to provide input to the computer. Other types of devices can be used to provide user interaction, for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic, speech, or tactile input.
[0112] The systems and techniques described herein may be implemented in a computing system that includes back-end components (e.g., as data servers), or includes middleware components (e.g., application servers), or includes front-end components (e.g., client computers having a graphical user interface or web browser that allows a user to interact with an implementation of the systems and techniques described herein), or includes any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.
[0113] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact with each other through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0114] Although a number of embodiments have been described, it will be understood that various modifications can be made without departing from the spirit and scope of the invention.
[0115] Additionally, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desired results. Additionally, other steps may be provided or steps may be eliminated from the described flows, and other components may be added to or removed from the described systems. Accordingly, other embodiments are within the scope of the following claims.
Claims
1. A program having instructions that, when executed by at least one processor, cause a computing device including a touchscreen and a camera positioned behind the touchscreen and configured to capture visual data from light passing through the touchscreen to: receiving a first measured touch value via the touchscreen indicative of a first touch input at a first location; and receiving, via the touch screen, a second measured touch value indicative of a second touch input at a second location farther from the camera than the first location, a density of touch sensors at the second location being greater than a density of touch sensors at the first location, the instructions further comprising: generating a first compensated touch value based on the first measured touch value and a first scaling value; generating a second compensated touch value based on the second measured touch value and a second scaling value that is less than the first scaling value; processing the first touch input and the second touch input based on the first compensated touch value and the second compensated touch value; the second position is not overlying the camera on the touch screen; the first location is a location on the touch screen that overlaps with the camera, and a density of touch sensors at the first location is reduced compared to other locations on the touch screen, thereby causing the camera to capture the visual data from light passing through the first location; processing the first touch input and the second touch input based on the first compensated touch value and the second compensated touch value includes processing the first touch input and the second touch input based on the first compensated touch value and the second compensated touch value to compensate for a reduced density of touch sensors at the first location compared to a density of touch sensors at the second location.
2. 2. The computer-readable medium of claim 1, wherein a ratio between the first scaling value and the second scaling value is inversely proportional to a ratio of the density of the touch sensors at the first position to the density of the touch sensors at the second position.
3. The method of claim 1 or 2, wherein the first measured touch value indicates a change in capacitance in response to the first touch input.
4. The method of claim 3 , wherein the second measured touch value indicates a change in capacitance in response to the second touch input.
5. The computer-implemented program of claim 1 , wherein the touch screen comprises a capacitive touch screen.
6. 1. A computer system comprising: a processor; a touchscreen; a camera disposed behind the touchscreen and configured to capture visual data from light passing through the touchscreen; and a storage medium storing a program having instructions for execution by the processor; A computer system, wherein the program stored on the storage medium includes the program according to any one of claims 1 to 5.
7. A method implemented by one or more processors of a computing device, comprising: the computing device includes a touchscreen and a camera disposed behind the touchscreen and configured to capture visual data from light passing through the touchscreen; The method comprises: receiving a first measured touch value via the touchscreen indicative of a first touch input at a first location; receiving, via the touch screen, a second measured touch value indicative of a second touch input at a second location farther from the camera than the first location, a density of touch sensors at the second location being greater than a density of touch sensors at the first location, the method further comprising: generating a first compensated touch value based on the first measured touch value and a first scaling value; generating a second compensated touch value based on the second measured touch value and a second scaling value that is less than the first scaling value; and processing the first touch input and the second touch input based on the first compensated touch value and the second compensated touch value; the second position is not overlying the camera on the touch screen; the first location is a location on the touchscreen that overlaps the camera, and the density of touch sensors at the first location is reduced relative to other locations on the touchscreen, thereby causing the camera to capture the visual data from light passing through the first location; processing the first touch input and the second touch input based on the first compensated touch value and the second compensated touch value includes processing the first touch input and the second touch input based on the first compensated touch value and the second compensated touch value to compensate for a reduced density of the touch sensor at the first location compared to the density at the second location.
8. 8. The method of claim 7, wherein a ratio between the first scaling value and the second scaling value is inversely proportional to a ratio of the density of the touch sensors at the first location to the density of the touch sensors at the second location.
9. The method of claim 7 or 8, wherein the first measured touch value is indicative of a change in capacitance in response to the first touch input.
10. The method of claim 9 , wherein the second measured touch value indicates a change in capacitance in response to the second touch input.
11. The method of claim 7 , wherein the touch screen comprises a capacitive touch screen.
Citation Information
Patent Citations
Touch panel device
JP2011048663A
Electronic device, control method, and control program
JP2014011512A
Systems and methods for improved touch screen accuracy
JP2017506399A