ACCUEIL MON ITCH.IO MA CHAINE ME CONTACTER

Dessiner avec Fourier

PARTIE 3 : Normaliser une signature

Introduction


Quand on pose notre signature, on dessine un chemin sur la feuille, du coup il nous est possible de récupérer la série de Fourier associée à notre signature.
Fixons nous un entier n, alors notre signature est assimilable au couple de vecteurs \( \left( a^x_{0},a^x_{1},a^x_{2},...,a^x_{n} \right) \) et \( \left( a^y_{0},a^y_{1},a^y_{2},...,a^y_{n} \right) \)
Dans le sens où la courbe paramétrée \( \left( X(t)= \sum_{k=0}^{n} a^x_{k}cos(kt) , Y(t)= \sum_{k=0}^{n} a^y_{k}cos(kt) \right) \) est une approximation de notre signature
Comparer deux signatures reviendrait donc à comparer ce couple de vecteurs avec un autre couple.

Mais il y a un problème, outre le fait que l'on ne signe jamais exactement de la même manière, nos coefficients de Fourier ne seront pas les mêmes selon que l'on écrive petit ou grand, mais aussi selon que l'on écrive en ligne droite ou avec la feuille penchée ou encore que l'on signe à des endroits différents la feuille, et ceci même si le tracé de la signature est exactement le même.
On ne peut donc pas utiliser les coefficients de Fourier sans les travailler un peu au préalable !



Normalisation des coefficients de Fourier


Avant de pouvoir utiliser notre couple de vecteurs \( \left( a^x_{0},a^x_{1},a^x_{2},...,a^x_{n} \right) \) et \( \left( a^y_{0},a^y_{1},a^y_{2},...,a^y_{n} \right) \) , il va falloir les normaliser. Ceci va se faire en trois étapes :

  1. Appliquer une rotation à notre signature pour qu'elle soit "horizontale". Dès lors il n'y a aura plus à se soucier de l'orientation de la feuille quand on signe.
  2. Appliquer une translation à notre signature pour qu'elle soit centrée en une origine. Dès lors il n'y aura plus à se soucier de où l'on signe sur la feuille.
  3. Appliquer une dilatation à notre signature. Dès lors il n'y aura plus à se soucier de la taille de notre signature.

Appliquer une rotation

C'est surement la partie la plus délicate des trois points présentés ci-dessus.

Etape 1 : Régression linéaire

Premièrement, remarquons que le point\( A_0 \left( a^x_{0} , a^y_{0} \right)\) est le point moyen de la signature, do,nt on sait qu'il appartient à la droite de régression linéaire. Il ne reste qu'à récupérer un vecteur directeur de la droite de régression linéaire de notre signature.

Pour cela calculons trois quantités :
  • \( Var_X = \sum (X_t - a^x_0)^2 \)
  • \( Var_Y = \sum (Y_t - a^y_0)^2 \)
  • \( Cov_{XY} = \sum (X_t - a^x_0) \times (Y_t - a^y_0) \)
(\( M_t (X_t , Y_t) \) étant l'ensemble des points formant notre signature)

Calculons maintenant \( m = \dfrac{Cov_{XY}}{Var_X} \), le vecteur \( \overrightarrow{u}(1,m) \) est alors un vecteur directeur de notre droite de régression linéaire.
Remarquons qu'il est possible (mais hautement improbable) que \( Var_X=0 \), dans ces conditions, on remplace \(m\) par \( m' = \dfrac{Cov_{XY}}{Var_Y} \), ainsi le vecteur \( \overrightarrow{u}(m',1) \) est aussi un vecteur directeur de notre droite de régression linéaire,... et à celui qui me dit : " Que fait-on si l'on a aussi \( Var_Y=0 \) ?", je lui réponds , déssine un truc et ça marchera mieux !

Reste encore une dernière chose à décider : prendre le vecteur \( \overrightarrow{u}(1,m) \) ou \( -\overrightarrow{u}(-1,-m) \) ?
Ceci va dépendre de l'orientation du texte : si l'abscisse du premier point de la courbe est inférieure à l'abscisse du dernier point de la courbe, alors on choisira : \( \overrightarrow{u} \) sinon on choisira \( -\overrightarrow{u} \).

Etape 2 : Fabrication d'un repère orthonormé

Une fois le vecteur directeur \( \overrightarrow{u} \) de notre droite de régression identifié, on le normalise puis on calcule sa normale \( \overrightarrow{v}(-u_y,u_x) \).
\( (A_0 , \overrightarrow{u},\overrightarrow{v}) \) est alors le repère orthonormé idéal dans lequel appliqué notre rotation.

Etape 3 : Appliquer le bon produit scalaire pour faire tourner notre signature autour de \(A_0\)

Pour faire tourner notre signature, il suffit de projeter les coordonnées des vecteurs \( \overrightarrow{A_{0}X_{t}}\) sur \( \overrightarrow{u}\) et \( \overrightarrow{v}\),
ce qui revient à calculer les produits scalaires \( <\overrightarrow{A_{0}M_{t}} , \overrightarrow{u}>\) et \( <\overrightarrow{A_{0}M_{t}} , \overrightarrow{v}>\).
Or \( <\overrightarrow{A_{0}M_{t}} , \overrightarrow{u}> = \begin{pmatrix} \sum_{k=0}^n a^x_{k}cos(kt) -a^x_0 \\ \sum_{k=0}^n a^y_{k}cos(kt) -a^y_0 \end{pmatrix} . \begin{pmatrix} u_x \\ u_y \end{pmatrix} = \begin{pmatrix} \sum_{k=1}^n a^x_{k}cos(kt) \\ \sum_{k=1}^n a^y_{k}cos(kt) \end{pmatrix} . \begin{pmatrix} u_x \\ u_y \end{pmatrix} \)
\[= \sum_{k=1}^n a^x_{k}cos(kt)\times u_x + \sum_{k=1}^n a^y_{k}cos(kt)\times u_y \] \[= \sum_{k=1}^n (a^x_{k}\times u_x + a^y_{k}\times u_y )cos(kt) \] \[= \sum_{k=1}^n < \overrightarrow{a_k} , \overrightarrow{u}>cos(kt) \] en posant \( \overrightarrow{a_k}= (a^x_k,a^y_k)\)

Par un raisonnement analogue, on obtient : \( <\overrightarrow{A_{0}M_{t}} , \overrightarrow{v}> =\sum_{k=1}^n < \overrightarrow{a_k} , \overrightarrow{u}>cos(kt) \)

On en déduit que notre signature une fois tournée admet les coefficients de Fourier suivants : \( \left( a^x_0 ,< \overrightarrow{a_1},\overrightarrow{u} >,...,< \overrightarrow{a_n},\overrightarrow{u}> \right) \) et \( \left( a^y_0 ,<\overrightarrow{a_1},\overrightarrow{v}>,...,<\overrightarrow{a_n},\overrightarrow{v}> \right) \)

Appliquer une translation

Rien de plus simple ! En effet le point\( A_0 \left( a^x_{0} , a^y_{0} \right)\) est le point moyen de la signature, il suffit donc d'annuler ces deux coefficients. On va même faire mieux, on va littéralement les éliminer car inutile de les garder puisqu'ils vallent maintenant 0.

Appliquer une dilatation

Concaténons les deux vecteurs de la façon suivante : \( \left( a^x_{1},a^x_{2},...,a^x_{n} , a^y_{1},a^y_{2},...,a^y_{n} \right) \) , on obtient un vecteur de taille \( 2n\)
Si l'on multiplie ce vecteur par un réel k quelconque, on obtiendra la même signature, mais k fois plus grosses. Pour ne plus avoir à se soucier de la taille de notre signature, il suffit tout simplement de normaliser ce veteur. On calcule sa norme Euclidienne et on divise chacun des coefficients par cette norme.
Et si la norme est nulle me direz-vous, on risque de diviser par zéro ! Je vous répondrai que si votre norme est nulle c'est que vous n'avez rien dessiné !



Une fois toutes nos transformations effectuées nous appellerons notre nouvelle liste de coefficients de Fourier, les coefficients de Fourier Normalisés de notre signature.

Vous pouvez tester ici la rotation-translation-dilatation de votre signature

A vous de signer !

1 2 3 4