Outils pour utilisateurs

Outils du site


programme_en_1_dimension

Programme - Exemple Numérique


Difficultés Rencontrées


  • Contrairement à Matlab, le langage C ne dispose pas de fonctions toutes faites permettant de faciliter la tâche du programmeur. Il nous faut donc les créer par nos propres moyens.
  • De plus nous devons créer un programme permettant de lire en entrée des valeurs issues d'un fichier .txt. Nous devons donc être capables d'extraire ces données afin de les stocker dans des tableaux.
  • Le langage C ne reconnaissant pas les nombres complexes, il nous faut travailler en séparant parties réelle et imaginaire pour chaque variable utilisée.
  • Matlab dispose d'une échelle de couleurs s'adaptant aux données composant le graphique. En langage C par contre , il nous faut programmer cette échelle adaptable par nos propres moyens.
La librairie SDL


  • Matlab dispose d'une fonction imagesc() permettant d'afficher une matrice sous forme d'un graphique en couleurs (comme dans l'exemple tiré de la thèse de Blanchard), mais en langage C, la bibliothèque standard ne permet pas d'afficher d'images ! C'est pour cette raison que l'on a choisi de travailler avec la bibliothèque SDL qui rend cela possible.
  • Une fois celle-ci installée, nous disposons de fonctions permettant d'afficher une matrice sous forme de pixels colorés et ainsi de créer nos propres élastogrammes.
Les fonctions à implémenter


  • Les fonctions FFT() et IFFT():

Matlab permet de calculer facilement la transformée de Fourier d'un signal grâce à l'algorithme FFT (fast fourier transform).
Cependant en C, nous sommes obligés de recréer cette fonction en programmant nous-mêmes l'algorithme utilisé.
Il en va de même pour la transformée inverse, bien entendu.

  • La fonction pause():

La librairie SDL nous permet d'afficher des images certes, mais la fenêtre ouverte dans ce but ne reste affichée à l'écran que le temps de l'exécution du programme.
C'est pour cela qu'il est nécessaire d'écrire une fonction permettant de “bloquer” cette fenêtre.

  • La fonction Elastogramme():

Cette fonction nous permet de convertir les valeurs d'une matrice en pixels de couleurs afin de représenter notre matrice d'élasticité selon un code couleur déterminé à l'avance, grâce à une échelle s'adaptant aux données obtenues.

Résultats


On peut noter qu'il est semblable à celui obtenu grâce à Matlab (ce qui confirme nos résultats)

Le programme présenté ici ne peut pour le moment que traiter un cas en 1 dimension.

Nous vous proposons de tester vous même notre programme TEST.exe en téléchargeant le fichier .zip ci-dessous.
Vous pouvez l'exécuter sur votre ordinateur sans avoir besoin de rien, excepté les 2 fichiers ci-joints dans l'archive:

  • SDL.dll : permet d'exécuter un programme compilé avec la bibiothèque SDL (celle qui permet d'afficher des images et donc ici un élastogramme…)
  • essai.txt : contient les valeurs du signal utilisé par Blanchard (celui avec 2 amplitudes différentes et 2 fréquences différentes).

Vous avez donc juste à:

  1. Mettre ces 3 fichiers dans un même dossier.
  2. Double-cliquer sur TEST.exe.
  3. Attendre que l'élastogramme s'affiche !

elastogramme_1d_-_blanchard.zip


Problèmes possibles
→ Si vous êtes sous Windows 8 et que Windows SmartScreen vous bloque au lancement de l'exécutable, vous pouvez le désactiver en passant par le Panneau de Configuration, puis en cherchant le Centre de Maintenance:

  1. Dans la colonne de gauche, cliquer sur “Modifier les paramètres Windows SmartScreen”.
  2. Cocher la case “Ne rien faire (désactiver Windows SmartScreen)“ à la place de “Obtenir l'approbation d'un Administrateur”.
  3. Cliquer sur OK.

Cela devrait résoudre le problème.

→ Si le message d'erreur suivant s'affiche: “Impossible d'exécuter TEST.exe car il manque SDL.dll sur votre ordianteur” alosr que SDL.dll est présent dans le dossier:

  1. Faites glisser SDL.dll sur TEST.exe afin de l'exécuter.
  2. L'élastogramme devrait apparaître d'un instant à l'autre…


Implémentation en langage C

programme_en_1_dimension.txt · Dernière modification: 2020/10/21 11:27 (modification externe)