Programme en C/OpenGL

l'objectif projet était d'afficher une tête en 3D, à partir d'une source d'image médicale, des scans en coupes.

L'algorithme naïf : mettre toutes les images dans un quadrillage 3D. On peut reconstruire la forme finale en mettant des cubes complet : 'si un pixel dans la case courant est gris au lieu de blanc -> on colorie toute la case', ça donne un résultat de type "LEGO", mais c'est une très piètre qualité.

L'algorithme des marching cubes : à peu près le même principe, sauf qu'au lieu de colorier toute la case, on dessine des formes inclinées d'une certaine façon, pour un rendu plus réaliste.

Exemple, une forme inclinée. Les 2 sommets "rouges", sont en dehors de l'image, par conséquent on dessine une forme inclinée comme ça. Pour les exclure. C'est plus précis que si on concluait "dessiner un cube entier".
mc1.jpg

une image du scanner médical, on ne voit pas bien mais il y a bien quelque chose mc2.jpg

Après un seuillage, l'image apparait mc3.jpg

Application de l'aglorithme des marching cubes, la tête apparait mc4.jpg

J'ai découvert avec ce projet que les cartes graphiques ne faisaient pas tout, et qu'une programmation performante doit être envisagée. Avec trop de détails et un code non optimisé, n'importe quelle geForce est à genoux, même 5 ans après.