With Note Pro.
I have done the calibration now twice, latter time giving slightly better results, but still a bit inaccurate in some parts of the display.
The issue is unfortunately quite common with almost all stylus-using devices; the calibration method is inadequate, made to be quick and easy for the user, but leaving the measurements with small errors, and the error-correction mapping too sparse.
Some ideas that might make it better, while also allowing it to be quick and easy, if so wanted…
Have more measurement points, not only 5 (corners and center), but e.g. 5x6 grid. This should reduce the errors from approximations between measured points.
Let the user tap each marker as many times wanted, calculating averages of all taps for each spot if tapped more than once. The averaging helps in reducing the tapping inaccuracy of the user (not the device). Just add a mark or counter next to each marker as the user taps them, so he knows which are done and how many times.
Show all the markers immediately, and let the user tap them in any order desired, and as many or few of them as wanted, by having a quality indication and “ready” button somewhere, shown immediately at the begin. Possibly untapped markers are left to use whatever default/factory/previous calibration they might have. This allows keeping it fast, yet also allows doing it more accurately with more effort and time.
Let the user see the device’s idea where that pen touched each time was/is. As the calibration progresses, the error estimation should get better and better, and the resulting marks closer and closer to how the user wants to see it. Once the outcome is good enough, the user knows it is done well, and can concentrate his efforts elsewhere. (The current calibration method will not give any feedback until it is over and the user starts e.g. the note-drawing app and tests… only to find out it is still bad in one or more parts of the display and needs to do it all over again, repeat ad nauseaum.)
For better local accuracy, even to-sub-pixel level…
Not only markers to be tapped in the center, but allow drawing arbitrary lines (with a ruler). When a suitably long and straight line is detected (with some tolerance to account for the sensor/calibration errors), the line can be used to estimate relative local error vector’s component that is perpendicular to the drawn line. If such error component estimated from the line differs from the estimate made from the markers, one can assume that the line gives better info when not near the markers.
To make the relative errors along lines into absolute error estimates, the lines need to go through or near at least two markers, whose measured absolute error can be used to shift the relative errors along the line. That is, near marker the line’s relative error should be equal to the absolute error at the marker, so shift the line’s data so that it matches.
The described line-drawing method does have a certain mathematical inaccuracy in it, but its remaining error would be visibly significant only if there are sharp local changes in the measurement error (e.g. change from 0mm to 2mm error within couple millimeters). However, even near such nasty spot on the display, the line-drawing method will give orders of magnitude better result (local small but visible error remaining) than the tap-markers -method (which would not even notice such local errors, and leave the error in full effect).
It is still easy to do, assuming one has plastic ruler, and relatively quick to do; just draw a criss cross of 20-40 lines across the display. Also somewhat easy to implement, even if that description may sound complex.
EDIT: a simpler version only uses (about) vertical and horizontal lines, going through the marker spots. Much easier to detect, and much easier with the math. Also, to clarify the benefit of lines: a single line is like hundreds of measurements for error (along the perpendicular axis) in a single stroke.
For ultimate accuracy, have a way for the user to define arbitrary correction vectors in arbitrary points around the display. For example, “add arbitrary correction vector” -> tap on the display to set where the correction needs to apply, then tap on a correction vector widget (somewhere else on the display) which is hugely magnified so that e.g. tapping at 40mm away from 0-error point would correspond to 2mm correction (20x magnification). Such arbitrary correction would then be combined with the other correction data smoothly and applied immediately. Use can immediately test how it affects, and keep adjusting such corrections (remove ones made before, add new ones, adjust existing ones, …)
That last method can give the best accuracy, as the area of effect can be exactly where needed, and the correction can be made “exact”. It can also be easier to implement than the line drawing method, but it can be slower to complete for the user if there is lots of small errors all over the display. Though, judging from my experience, if there was more marker points to start with, only 0-3 arbitrary corrections would be needed.
With my Note pro, I think the better grid would already handle it, but I’ve read about a Note, where I think even 4-6 arbitrary points would be needed, or as many lines if drawn over the problem area. (And one of my Samsung tablets would need twice as many, due to stupid design mistake of having two strong magnets under the display and their fields not calibrated away, and again, too sparse calibration method…)