5 votos

Transformar la trama donuts a los círculos

Vamos a asumir que tengo una imagen de trama consiste de 0 y varios en forma de rosquilla anillos de 1. Esta trama por ejemplo, podría ser el resultado de la clasificación de una imagen de satélite con estanques y lagos en dos clases: 1) el estanque de la costa, el valor del píxel 1 y 2) otros, el valor del píxel 0. Ver imagen para impresión.

Donuts

Mi reto es llenar cada agujero de donut, la creación de círculos completos con valor de píxel de 1. Para esto tengo acceso a ArcGIS con todas las funcionalidades comunes, así como el MEDIO y Python con gdal enlaces. Ver segunda imagen para impresión de que el resultado deseado.Supongo que una mayoría de filtro funcionará hasta cierto punto, excepto cuando las rosquillas son grandes.

Cualquier sugerencia sobre la transformación de donuts a los círculos son bienvenidos. Puntos de bonificación para lo que es trabajar con unclosed donuts así.

Filled donuts

11voto

Kersten Puntos 2310

Lo que usted está buscando es una Morfología Matemática de la aplicación, Cierre , para ser exactos.

Si utiliza GDAL para leer su imagen en una colección de la matriz hay un número de bibliotecas que apoyan esta operación. scipy.ndimage es uno de ellos y tiene una función para binario orificio de llenado.

En python para una ficción binario conjunto de datos que describen este iba a transformar el donuts a los círculos:

from osgeo import gdal
from scipy.ndimage.morphology import binary_fill_holes

donut_array = gdal.Open("input.tif").ReadAsArray()

filled_array = binary_fill_holes(donut_array, structure=np.ones((3,3)))

Este método también funciona con open donuts, dependiendo de la estructura que se utiliza para el relleno. He hecho un ejemplo notebook como una prueba de concepto.

enter image description here

2voto

FelixIP Puntos 4035

Convertir la trama a los polígonos. No simplificar los bordes. enter image description here

Seleccione donut como polígonos utilizando

Cómo saber si el polígono tiene un agujero con la calculadora de campo en ArcGIS

Ejecutar la calculadora de campo de expresión en Forma de campo

def outer(shp):
 boundary=shp.boundary()
 part=boundary.getPart(0)
 pgon=arcpy.Polygon(arcpy.Array(part))
 return pgon

Para llamar a utilizar:

outer( !Shape! )

Resultado:

enter image description here

Convertir los polígonos de trama

2voto

xenny Puntos 670

Si desea rellenar cerrado donut solo y no quiere probar varios estructuración de los elementos como de la morfología matemática, aquí hay una alternativa :

1) Utilizar el "grupo de la región" para asignar un valor único para cada conjunto de píxeles

2) el Uso de la calculadora ráster para establecer todos, pero el valor de su fondo de uno de ellos.

1voto

ASHUTOSH Puntos 108

Para ArcGIS, puede utilizar Block statistics el uso de las estadísticas de tipo Majority. Puede ser un poco de ensayo y error con el barrio de las estadísticas que se necesita. Por ejemplo, usted puede intentar circle o irregular opciones con diferentes radios específicamente para mantener el relleno dentro de los donuts.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X