Más

Umbral de imagen ráster usando Python

Umbral de imagen ráster usando Python


¿Alguien puede guiarme para aplicar la técnica de umbralización para ingresar una imagen ráster usando Python?

Tengo la intención de extraer superficies impermeables de un ráster de alta resolución, como carreteras, laterales y tejados, etc.


Puede utilizar el paquete OpenCV en Python para el umbral de imagen. Este ejemplo muestra no solo cómo realizar el umbral de imagen binaria, sino también las limitaciones de este método. Aquí, utilizo una imagen NAIP de resolución espacial de 1 m que muestra un camino de tierra rodeado de vegetación árida. Puede ver que la carretera se extrae pero también hay una cantidad significativa de suelo expuesto y otro ruido de fondo que también se extrae. Hay una variedad de otros métodos de umbral disponibles en OpenCV que es posible que desee investigar.



import cv2 import numpy as np from matplotlib import pyplot as plt # Leer el geotiff como imagen en escala de grises img = cv2.imread (r'C:  your  path  roads_naip.tif ', 0) # Aplicar el umbral binario. Aquí se puede ajustar el segundo parámetro "150". ret, thresh1 = cv2.threshold (img, 150,255, cv2.THRESH_BINARY) títulos = ['Imagen original', 'Binario'] imágenes = [img, thresh1] para i en xrange (2): plt.subplot (1,2 , i + 1), plt.imshow (imágenes [i], 'gris') plt.title (títulos [i]) plt.xticks ([]), plt.yticks ([]) plt.show ()

Bueno, muchas gracias @Aaron. El problema se ha resuelto. Me he dado cuenta de que el código anterior debe modificarse ligeramente para el caso de las imágenes de Google Earth con respecto a su conversión a una imagen de intensidad de escala de grises. A continuación se muestra el resultado de mi código modificado. Se han extraído las superficies impermeables de los tejados de los edificios. Sin embargo, los resultados pueden mejorarse mucho mediante la combinación de diferentes técnicas de umbral del paquete OpenCV.


Ver el vídeo: Simple Thresholding Umbralización OpenCV en Python