TouchInsight: Uncertainty-aware Rapid Touch and Text Input for Mixed Reality from Egocentric Vision
<|reference_start|>TouchInsight: Uncertainty-aware Rapid Touch and Text Input for Mixed Reality from Egocentric Vision: While passive surfaces offer numerous benefits for interaction in mixed reality, reliably detecting touch input solely from head-mounted cameras has been a long-standing challenge. Camera specifics, hand self-occlusion, and rapid movements of both head and fingers introduce considerable uncertainty about the exact location of touch events. Existing methods have thus not been capable of achieving the performance needed for robust interaction. In this paper, we present a real-time pipeline that detects touch input from all ten fingers on any physical surface, purely based on egocentric hand tracking. Our method TouchInsight comprises a neural network to predict the moment of a touch event, the finger making contact, and the touch location. TouchInsight represents locations through a bivariate Gaussian distribution to account for uncertainties due to sensing inaccuracies, which we resolve through contextual priors to accurately infer intended user input. We first evaluated our method offline and found that it locates input events with a mean error of 6.3 mm, and accurately detects touch events (F1=0.99) and identifies the finger used (F1=0.96). In an online evaluation, we then demonstrate the effectiveness of our approach for a core application of dexterous touch input: two-handed text entry. In our study, participants typed 37.0 words per minute with an uncorrected error rate of 2.9% on average.<|reference_end|>
@article{streli2024touchinsight:,
    title={TouchInsight: Uncertainty-aware Rapid Touch and Text Input for Mixed
  Reality from Egocentric Vision},
    author={Paul Streli, Mark Richardson, Fadi Botros, Shugao Ma, Robert Wang,
  Christian Holz},
    journal={arXiv preprint arXiv:2410.05940},
    year={2024},
    doi={10.1145/3654777.3676330},
    archivePrefix={arXiv},
    eprint={2410.05940},
    primaryClass={cs.CV cs.HC}
}