Pour souligner l'évidence: la non-régularité de votre mise en œuvre de la souris vient du fait que le rectangle donné par Camshift est seulement une précision de la précision d'un pixel d'image, de sorte que le plus petit mouvement possible sera screensize/encadrer arrondi au pixel d'écran le plus proche. Si tel est le cas, une sorte d'accélération du pointeur pourrait être appliquée, comme c'est le cas lorsque de vraies souris de faible qualité sont utilisées (bien sûr, dans le cas de plusieurs souris laser de 1000 dpi, il n'y a pas besoin pour une telle chose). Fondamentalement, la distance parcourue par le curseur sur l'écran n'est pas la distance prise par l'entrée du pointeur (dans ce cas, le déplacement rectangle camshift), mais une fonction judicieusement choisie. Ainsi, en utilisant une fonction d'accélération f (x), les étapes consistant à déplacer le pointeur sera comme suit:
- Calculer le vecteur de déplacement d'entrée de pointeur, sans que l'on désignera par v.
- Calculer le vecteur de longueur unitaire correspondant, soit u.
- Le sur l'écran de déplacement de pointeur est v » = f (| v |) * u
je choisi f (x) sous une forme analogue bêta * e^(alpha * x - 1), où 0 < alpha et 0 < beta < = 1 sont des paramètres qui doivent être choisis de façon empirique. Fondamentalement, n'importe quelle fonction qui a un dérivé de 1 ou moins à 0 (vous permet d'utiliser la pleine précision de l'entrée pour des mouvements précis du curseur), va à l'infini lorsque x augmente (les grands mouvements doivent correspondre à grands mouvements du curseur), augmente de façon monotone et a un premier dérivé monotone croissant. Editer: Il est également nécessaire que la fonction d'accélération ait une valeur de 0 à 0, sinon des mouvements très étranges se produiront.:)
Il est également souhaitable d'avoir f (FrameWidth) = screenwidth de sorte que le déplacement de l'objet suivi à travers les résultats de la trame dans le curseur étant déplacé à travers l'écran. Une formule exponentielle est très agréable à utiliser, mais l'utilisation d'un polynôme quadratique ou de degré supérieur peut s'avérer plus simple en fonction des exigences de performance ...
Je ferai les calculs et je reviendrai vers vous. – nishant
J'ai le même problème, monsieur pourriez-vous me référer à quelques liens avec plus de matériel sur ce que vous avez expliqué? J'ai besoin d'effectuer le regard estimé mouvement du curseur pour mon projet HCI de suivi des yeux basé sur la webcam. J'ai des emplacements de pupilles qui varient avec le regard, mais j'ai besoin de les cartographier pour un mouvement de curseur en bonne santé et en douceur. Ce serait utile, merci. –