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 :
détection des contours avec la méthode de Canny,
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_peakspour 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_thresholdethigh_thresholddu 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.