Détection de contours et de lignes

Détection de contours et de lignes#

L’objectif du TP est de détecter les lignes blanches de la route sur l’image route1.jpg. La méthode se divise en deux étapes :

  1. détection des contours avec la méthode de Canny,

  2. détection des lignes avec la transformée de Hough.

Détection des contours#

  • Chargez l’image et affichez l’image.

  • La première étape du filtre de Canny est d’appliquer sur l’image un filtre gaussien : pour quelle raison ?

  • Effectuez une détection de contours avec la méthode de Canny (skimage.feature.canny). Réglez l’écart-type du filtre gaussien pour obtenir le meilleur résultat ; les autres paramètres peuvent être laissés par défaut.

  • Appliquez le masque route-masque.png sur la détection de contours pour éliminer les contours qui sont clairement en dehors de la route.

Détection des lignes#

  • Affichez l’accumulateur de Hough (skimage.transform.hough_line) correspondant à l’image. La fonction retourne l’accumulateur lui-même et ses deux axes (angles et distances). Pour un affichage clair, appliquez un logarithme et définissez correctement les axes :

    accumulator, angles, distances = hough_line(...)
    plt.imshow( np.log(accumulator+1),
                cmap="gray",
                extent=(angles[0], angles[-1], distances[-1], distances[0]),
                aspect="auto" )
    
  • Utilisez skimage.transform.hough_line_peaks pour trouver les points de l’accumulateur les plus pertinents : ceux-ci correspondent aux lignes principales sur l’image des contours. Affichez ces points sur l’accumulateur.

  • Enfin, tracez sur l’image originale les lignes correspondant aux points identifiés sur l’accumulateur.

Amélioration de la méthode#

Vérifiez que la méthode que vous avez mis en œuvre fonctionne également sur d’autres images : route2.jpg et route3.jpg.

Diverses améliorations peuvent être effectuées pour améliorer la détection obtenue, en voici une liste non exhaustive :

  • Régler les paramètres low_threshold et high_threshold du détecteur de Canny.

  • Ne détecter que les lignes blanches et pas les autres lignes.

  • Afficher uniquement les lignes dont le point dans l’accumulateur de Hough est d’intensité suffisamment importante.

  • Ne pas afficher les lignes trop horizontales puisqu’elles ne peuvent manifestement pas être des lignes blanches.