Détection de lignes droites

Dans le cadre d'un cours, nous devions concevoir un imageur 3D à partir d'un vidéoprojecteur et d'une webcam. Le principe est d'envoyer différents cadrillages sur l'objet et de capter une image avec la webcam. À l'aide de modèles mathématiques on peut alors obtenir un modèle 3D de l'objet.

Pour que le dispositif fonctionne, il faut commencer par le calibrer. Pour cela, on place un cadrillage physique devant le dispositif et on repère les coordonnées de certains point, ces entrées sont ensuite utilisées dans les calculs. On fait de même avec une projection d'un cadrillage.

Mon rôle dans l'équipe était de mettre en place un programme Python permettant de détecter automatiquement les coordonnées des cases du cadrillage.

Pour cela, j'ai utilisé la bibiothèque OpenCV. J'ai détecté les bords (edges) présents dans l'image, puis j'ai détecté les lignes en utilisant la fonction HoughLines.

J'ai adapté les paramètres pour obtenir des droites qui ont un rapport avec le cadrillage, donc qu'il n'y en ai aucune qui soit totalement hors sujet. J'ai obtenu le résultat ci-contre :

J'ai alors trié les lignes pour ne garder que les plus proches de la réalité.

Ayant les coordonnées de chaque droite, j'ai pu en déduire les différents points d'intersection.

J'ai enfin pu déduire les points remarquables qui étaient utiles pour la calibration.

Les autres membres de mon équipe se sont occupé de ce qui se passe après. On place l'objet à étudier devant la caméra, et on projette dessus différentes images de bandes.

On récupère les différentes captures grâce à la webcam, et on peut constituer un modèle 3D de l'objet.