Suite

Seuil d'image raster à l'aide de python

Seuil d'image raster à l'aide de python


Quelqu'un peut-il me guider pour appliquer la technique de seuillage à l'entrée d'une image raster à l'aide de Python.

J'ai l'intention d'extraire les surfaces imperméables d'un raster haute résolution telles que les routes, les côtés et les toits, etc.


Vous pouvez utiliser le package OpenCV en Python pour le seuillage d'images. Cet exemple montre non seulement comment effectuer le seuillage d'image binaire, mais également les limites de cette méthode. Ici, j'utilise une image NAIP de résolution spatiale de 1 m qui montre un chemin de terre entouré de végétation aride. Vous pouvez voir que la route est extraite mais il y a aussi une quantité importante de sol exposé et d'autres bruits de fond qui sont également extraits. Il existe une variété d'autres méthodes de seuillage disponibles dans OpenCV que vous voudrez peut-être étudier.



import cv2 import numpy as np from matplotlib import pyplot as plt # Lire le geotiff comme image en niveaux de gris img = cv2.imread(r'C:yourpath
oads_naip.tif',0) # Appliquer le seuil binaire. Le deuxième paramètre "150" peut être ajusté ici. ret,thresh1 = cv2.threshold(img,150,255,cv2.THRESH_BINARY) titles = ['Original Image','Binary'] images = [img, thresh1] pour i dans xrange(2) : plt.subplot(1,2 ,i+1),plt.imshow(images[i],'gris') plt.title(titres[i]) plt.xticks([]),plt.yticks([]) plt.show()

Eh bien, merci beaucoup @Aaron. Le problème est résolu. J'ai réalisé que le code ci-dessus doit être légèrement modifié pour le cas de l'imagerie Google Earth en ce qui concerne sa conversion en image d'intensité en niveaux de gris. Voici la sortie de mon code modifié. Les surfaces imperméables des toits des bâtiments ont été extraites. Néanmoins, les résultats peuvent être considérablement améliorés grâce à la combinaison de différentes techniques de seuillage du package OpenCV.


Voir la vidéo: Cours de traitement dimage: Seuillage