¿Realizando reducción de ruido de trama y suavizado de bordes?
22
Tengo una imagen de trama como esta
Quiero eliminar el punto de ruido aislado y suavizar el borde (digamos los puntos individuales blancos, y quiero que los bordes de la entidad se vean suaves). ¿Cómo puedo hacer esto en ArcGIS o en R?
Las operaciones morfológicas Expand y Shrink fueron creadas para este tipo de procesamiento. Use ArcGIS (o GRASS o Mathematica ) porque Rla biblioteca "raster" es demasiado lenta.
A menudo es útil experimentar un poco con los parámetros: debe decidir cuánto se necesita expandir y reducir para limpiar una imagen; y generalmente desea hacer lo menos posible, porque cada operación tiende a suavizar algunos de los detalles nítidos. Aquí hay una secuencia que funciona bien para eliminar gran parte del "ruido" aparente mientras se mantiene la mayoría de los detalles en las "entidades". "Expandir" y "encoger" son ambos con referencia a las células blancas , por lo que expandirlas hace que crezcan hacia afuera y encogerse hace que las células negras invadan regiones blancas.
La columna "diferencia" utiliza el color para resaltar las diferencias entre la imagen inicial y final en cada paso: azul para el negro que se convirtió en blanco y naranja para el blanco que se volvió negro.
Si es necesario eliminar las piezas restantes más grandes, es mejor hacerlo con RegionGroup para identificarlas, después de lo cual se pueden eliminar mediante reclasificación. Esta era una opción desde el principio, pero un poco de limpieza inicial con Expandy Shrinkreduce el trabajo y proporciona el suavizado deseado.
Por cierto, elegí hacer las ocho imágenes de esta ilustración con los comandos de Mathematica porque son muy simples, fáciles y rápidas de ejecutar:
i = Import["http://i.stack.imgur.com/umDg7.png"];
l = Dilation[k = Erosion[j = Dilation[i,2],3],1];(* This does all the work *)
delta = ColorCombine /@{{i, j},{j, k},{k, l},{i, l}};(* Compares images *)
El flujo de trabajo en ArcGIS es el mismo, pero la sintaxis será más larga. Si realmente desea utilizar R, cargue la biblioteca "ráster" y explote focalFilterpara crear funciones para expandir y reducir. Luego espere aproximadamente un minuto cada uno para ejecutar las operaciones ....
¡Hola! Si no le importa, ¿podría enviarme su información de contacto? Me gustaría reconocerlo en mi investigación. ¡Gracias! @whuber
Visto el
¿Conoces los comandos equivalentes en GRASS?
Richard
1
@ Richard Estoy seguro de que hay muchas formas creativas de hacer estas operaciones en GRASS, pero r.neighbours se ve muy bien para la tarea.
whuber
12
Con la extensión de Spatial Analyst, puede usar algunas de las herramientas de generalización . Algunos de ellos realizan tareas similares, por lo que es posible que tenga que jugar con algunos para obtener los resultados como desea. Pero, echaría un vistazo a la herramienta Filtro mayoritario y a la herramienta Limpieza de límites .
Esto es básicamente una variante de la respuesta de @ whuber y usa la Distancia Euclidiana para expandir y reducir los límites del ráster para suavizar las esquinas afiladas del ráster que se agrava por el proceso de expansión y contracción que utiliza el número de células para crecer / invadir. Aunque la Distancia Euclidiana imita Expandir, no es posible introducir un valor negativo para invadir / reducir. El truco consiste en desarrollar un proceso iterativo para tomar el negativo del ráster Euclidian Distance y hacer que crezca. A continuación se detallan los pasos para las imágenes de muestra dadas y las instantáneas para aclaración.
Reclasifique el ráster para mantener solo 1s (celdas blancas)
Aplique la distancia euclidiana para la distancia de dos celdas (60 metros en este caso) al ráster reclasificado
Tome el negativo del ráster expandido utilizando Reclassify (las celdas con el valor obtendrán NODATA y NODATA se convertirán en 1) o los operadores Con e IsNull de la Calculadora ráster
Aplique la distancia euclidiana una vez más a este ráster negativo con la misma distancia (60 m)
Tome lo negativo de esto siguiendo el mismo proceso dado anteriormente
Use la Calculadora ráster o Reclasifique para asignar celdas NODATA a 0 en este ráster para volver a los valores originales del ráster de muestra
Expandir Reducción contra distancia euclidiana
Nota: El verde muestra las celdas procesadas (celdas blancas en las preguntas)
La ventaja de Euclidian Distance es que toma la distancia adecuada desde cada celda a través de las extensiones de hipotenusa que suaviza los bordes afilados. El número de parámetros de celda de las herramientas de expansión y contracción, por otro lado, procesan el mismo número de celdas para todas las direcciones, lo que produce bordes similares a los de un cuadro delimitador, por lo tanto, generaliza demasiado los bordes / esquinas.
El problema principal, sin embargo, no elimina el ruido con tanto éxito como expandir / reducir y es un poco más largo que la respuesta.
Para cualquiera que haga esto y use GRASS / QGIS, puede usar r.grow y crecer con una distancia euclidiana positiva, seguida de una distancia euclidiana negativa
Con la extensión de Spatial Analyst, puede usar algunas de las herramientas de generalización . Algunos de ellos realizan tareas similares, por lo que es posible que tenga que jugar con algunos para obtener los resultados como desea. Pero, echaría un vistazo a la herramienta Filtro mayoritario y a la herramienta Limpieza de límites .
Aquí hay una página sobre los conceptos de estas dos herramientas.
No estoy seguro de cómo realizar estas tareas en R, pero aquí hay una publicación sobre cómo realizar un filtro mayoritario utilizando GRASS GIS.
fuente
Esto es básicamente una variante de la respuesta de @ whuber y usa la Distancia Euclidiana para expandir y reducir los límites del ráster para suavizar las esquinas afiladas del ráster que se agrava por el proceso de expansión y contracción que utiliza el número de células para crecer / invadir. Aunque la Distancia Euclidiana imita Expandir, no es posible introducir un valor negativo para invadir / reducir. El truco consiste en desarrollar un proceso iterativo para tomar el negativo del ráster Euclidian Distance y hacer que crezca. A continuación se detallan los pasos para las imágenes de muestra dadas y las instantáneas para aclaración.
Reclasifique el ráster para mantener solo 1s (celdas blancas)
Aplique la distancia euclidiana para la distancia de dos celdas (60 metros en este caso) al ráster reclasificado
Tome el negativo del ráster expandido utilizando Reclassify (las celdas con el valor obtendrán NODATA y NODATA se convertirán en 1) o los operadores Con e IsNull de la Calculadora ráster
Aplique la distancia euclidiana una vez más a este ráster negativo con la misma distancia (60 m)
Tome lo negativo de esto siguiendo el mismo proceso dado anteriormente
Use la Calculadora ráster o Reclasifique para asignar celdas NODATA a 0 en este ráster para volver a los valores originales del ráster de muestra
Expandir Reducción contra distancia euclidiana
Nota: El verde muestra las celdas procesadas (celdas blancas en las preguntas)
La ventaja de Euclidian Distance es que toma la distancia adecuada desde cada celda a través de las extensiones de hipotenusa que suaviza los bordes afilados. El número de parámetros de celda de las herramientas de expansión y contracción, por otro lado, procesan el mismo número de celdas para todas las direcciones, lo que produce bordes similares a los de un cuadro delimitador, por lo tanto, generaliza demasiado los bordes / esquinas.
El problema principal, sin embargo, no elimina el ruido con tanto éxito como expandir / reducir y es un poco más largo que la respuesta.
fuente