L'objectif est d'extraire les zones urbaines présentes dans des images aériennes extraites de Google Maps par une simple copie d'écran. Les images données en exemple sont prises dans la région de Creully en Basse-Normandie (France).
Le traitement construit ici est adapté aux images ayant la même résolution que l'image donnée en exemple, soit 1 pixel représente 5,932 m sur le terrain. Avec une résolution différente les valeurs des paramètres devront être adaptées.
L'image initiale. | Les zones urbaines détectées. |
La méthode est basée sur l'hypothèse que les zones urbaines apparaissent dans les images comme des régions ayant une texture de type contour.
La méthode est alors directe :
Puisque la stratégie est basée sur l'analyse de texture, des régions texturées non désirées peuvent apparaître dans le résultat, telles que les forêts. Ces fausses alarmes pourraient être éliminées par la suite en utilisant d'autres critères telle que la couleur, ce qui n'est pas fait ici.
La couleur n'est pas une information discriminante pour repérer les zones urbaines. Les toits des maisons peuvent être de n'importe quelle couleur. Nous allons donc n'utiliser que la composante luminance des couleurs.
Pour réduire le bruit et l'effet bloc dû à Jpeg, nous allons simplement passer un filtrage passe-bas gaussien sur l'image, qui est suffisant pour le reste des traitements.
pany2pan input.jpg input.pan prgb2gray 0.299 0.587 0.114 input.pan tmp2.pan pgaussianfiltering 0.5 tmp2.pan image1.pan | |
image1.pan : Après le prétraitement. |
On cherche maintenant à détecter les zones urbaines. Pour cela, on peut remarquer que les zones urbaines sont les régions de l'image qui contiennent le plus de contours, entre autre les bords des maisons ou les bords des rues, alors que les autres régions de l'image (p. ex., champs, plan d'eau) sont plus lisses.
Les contours sont détectés par un simple gradient de l'image suivi d'une binarisation basée sur la maximisation de la variance interclasse (Otsu, 1978).
pgradient 1 image1.pan tmp3.pan tmp4.pan pvariancebinarization tmp3.pan image2.pan | |
image2.pan : Après la détection de contours. |
Pour délimiter les zones à forte densité de contours, une méthode consiste à dilater les contours de façon à regrouper ceux qui sont proches dans une même région. On estime que deux maisons proches ont des bords à une distance maximale de 5 pixels dans l'image (soit 29,6 m dans la réalité). Il suffit donc de dilater les contours d'au moins 3 pixels de chaque côté pour fusionner deux contours ayant une distance ≤ 5 pixels.
Pour localiser les régions, il faut détacher les régions des contours qui les relient (rue, haie, etc). Une ouverture géodésique avec un élément structurant de type disque de rayon 3 permet de supprimer tous les liens d'épaisseur > 3 pixels.
pdilatation 0 2 image2.pan tmp5.pan perosion 0 2 tmp5.pan image3.pan perosion 2 3 image3.pan tmp6.pan pgeodesicdilatation 0 2 3.0 tmp6.pan image3.pan image4.pan | |
image3.pan : Après la fermeture. | |
image4.pan : Après l'ouverture géodésique. |
Pour construire les zones urbaines, il faut ensuite supprimer les trous à l'intérieur de ces régions pour n'avoir que des zones compactes. Toutefois, on ne supprime que les trous qui ont une surface inférieure à 10 x 10 pixels (soit 60 x 60 m2 sur terrain). Les trous plus grands correspondent en général à des espaces verts ou des stades de foot à l'intérieur de la zone urbaine qu'il ne faut pas agglomérer à la zone urbaine correspondante.
Une fermeture géodésique permet de combler les trous internes d'une taille < 5 de rayon et une ouverture géodésique de la même taille permet de construire des régions compactes sans barbules.
pdilatation 2 5 image4.pan tmp7.pan pgeodesicerosion 0 2 5 tmp7.pan image4.pan tmp8.pan perosion 2 5 tmp8.pan tmp9.pan pgeodesicdilatation 0 2 5 tmp9.pan tmp8.pan image5.pan | |
image5.pan : Les régions candidates. |
Les trop petites régions ne correspondent pas à des zones urbaines. On va donc les éliminer sur un critère de taille. On considère qu'il ne peut pas y avoir de zones urbaines de surface inférieure à 500 x 500 m2 sur le terrain ce qui correspond à 7104 pixels dans l'image compte-tenu de l'échelle de prise de vue.
pareaopening 8 7104 image5.pan image6.pan | |
image6.pan : Après la suppression des fausses régions. |
Pour mieux visualiser le résultat, les frontières des régions détectées sont superposées à l'image initiale.
pboundary 8 image6.pan tmp10.pan psuperimposition 1 input.pan tmp10.pan output.pan ppan2jpeg output.pan output.jpg | |
output.pan : Visualisation du résultat. |