Analisis de Vecindad Por Medio de Una Ventana Movil

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Universidad del Valle Escuela de Ing.

Civil y Geomática
Programa académico de Ing. Topográfica
Modelos digitales de terreno
Profesor Fabio Andrés Herrera
Práctica ventana móvil en Python
Felipe Burbano Ladino – 1742362

Análisis de vecindad por medio de una ventana móvil.

El relieve relativo o relieve local se define como la diferencia vertical en elevación


entre los puntos más altos y los puntos más bajos dentro de una región dada o a lo
largo de un perfil o línea en el terreno. Los valores de relieve relativo en una región
dada permiten establecer diferencias entre tipos de relieve: relieve plano, relieve
ondulado, relieve colinado y relieve montañoso. Adicionalmente, permite diferenciar
entre relieve montañosos bajo, medio y alto; situación similar se puede establecer para
los relieves colinados.

Ya explicado brevemente el concepto de relieve relativo o local, se puede dar el uso


de un análisis de vecindad por medio de una ventana móvil, en donde esta permite
definir el tamaño o dimensiones de la vecindad donde se realiza el análisis. Es decir,
permite definir los píxeles vecinos alrededor de un píxel en los cuales se realiza el
análisis de vecindad. Para el análisis de vecindad se selecciona una especie de pequeña
región de forma cuadrada que contiene un numero impar de píxeles. Seleccionar un
cuadrado con un numero impar de píxeles por lado garantiza la existencia de un píxel
central único.

El análisis de vecindad en un mapa ráster consiste en realizar una operación especifica


con los píxeles que abarca la ventana móvil y el resultado llevarlo al píxel equivalente
de un nuevo mapa de salida.

Los pasos del análisis de vecindad se pueden esquematizar así:

• Se define las dimensiones de la ventana móvil.


• Se recorre el mapa de entrada con la ventana móvil por cada uno de sus píxeles.
• En cada píxel del mapa de entrada, la ventana móvil identifica los píxeles
vecinos.
• Con los píxeles vecinos realiza una operación matemática (promedio, mediana,
moda, valor máximo, valor mínimo, etc.).
• El valor obtenido lo lleva al píxel equivalente de un mapa de salida.
• En este sentido, el mapa de entrada y el mapa de salida tienen el mismo número
de filas, columnas y píxeles.
• El análisis de vecindad consiste en recorrer, uno a uno, todos los píxeles del
mapa de entrada y los resultados de la operación trasladarlos a los respectivos
píxeles del mapa de salida.

El análisis de vecindad, como se esquematiza en los pasos anteriores indica que se


presentan problemas de borde. Cuando el centro de la ventana móvil se ubica en los
píxeles de borde, las operaciones a realizar no incorporan la totalidad de píxeles de
vecindad porque muchos de ellos quedan por fuera del mapa de entrada.

Para efectuar un análisis de vecindad descrito en la práctica se hará el uso de una


ventana móvil de 3x3 en pedazo de ráster de 10 filas y 10 columnas para un total de
100 pixeles.

Tabla de datos
Para la elaboración de la ventana móvil se usará un lenguaje Python para desarrollar
un código en donde se logre desarrollar el análisis de vecindad.

Lo primero que se debió llevar acabo para la realización del código es dejar el
concepto ráster y píxel para adoptar un concepto de matrices o listas en lenguaje
Python que es lo más similar a lo que se puede llegar en este lenguaje de programación,
los pixeles ahora serían celdas y el ráster una matriz de 10 filas y 10 columnas, con
un total de 100 celdas con datos en ellas.

Imagen de creación de la matriz en python

Dado que la ventana móvil que se quería desarrollar navega por cada uno de los datos
de la matriz creada tomando esta celda donde el dato está como centro de un cuadrado
de 3 x 3 se encuentra una dificultad en las esquinas y aristas de la matriz al tener celdas
sin ningún tipo de dato a diferencia de las celdas del centro de la matriz

Problema presente en las esquinas y aristas de la matriz


Ya previsto los 3 problemas que se presentan, los cuales son los valores nulos de los
vértices (estos son 5), de las aristas (estos son 3) y de las celdas del centro (donde no
hay ninguna celda nula), no se pudo encontrar una forma de solucionar los 3
problemas al mismo tiempo, se optó por abordar cada problema de forma individual,
dando una solución a cada uno de forma singular.

Primero se abordará el problema más fácil de resolver y es el de las celdas del centro
de la matriz, las cuales no presentan ninguna celda nula.

Problema de celdas centrales de la matriz.

Se puede ver que en estas celdas no se encuentra ningún valor nulo, en donde se puede
intuir que la solución de este problema es la misma para todas las celdas centrales de
la matriz, esto se consigue con un ciclo en donde se recorrerá todas las celdas que
cumplan esta condición, la cual es, estar en la parte central de la matriz, sabiendo que
se debe tener en cuenta la siguiente fórmula

Entonces se debe recorrer por ese cuadrado 3 x 3 y obtener el máximo y el mínimo


para restarlos y darle un nuevo valor al píxel central. Esto tuvo una solución de por
medio de un ciclo “while” las celdas centrales se deben de dar como condicionales
para que se ejecute en estas y dar un recorrido por las celdas del cuadrado.
A continuación, se muestra el código empleado para resolver el problema:

Código de solución de problema de las celdas centrales de la matriz

Se comienza en la celda 1, 1 que sería la primera celda de la parte central de la matriz


y recorremos cada fila y columna por medio del ciclo “while” hasta finalizar en la
celda 8, 8. En cada una de las celdas se da un proceso en el cual se generan los cuadros
en cada uno de las celdas, donde se guardan en una matriz aparte “matriz_completa”
en donde se identifica el máximo y el mínimo para realizar la fórmula antes
mencionada. Así obtenemos la solución del problema de las celdas centrales de la
matriz.

Como consiguiente se dará la solución de las aristas de la matriz en las cuales se


presentan ya 3 datos nulos. Dado que estás celdas presentan datos nulos, estás son
diferentes a las centrales y se deben de manejar sólo por filas o sólo por columnas.
Para las aristas inferior y superior manejares las filas y para las aristas laterales
usaremos las columnas.

Problema de las aristas de la matriz.


Este problema tiene una solución parecida a la anterior, pero en este caso sólo se usará
para una arista a la vez dado a la ubicación de las celdas, las cuales no son continuas
como las centrales. Tan sólo se debe tener en cuenta la ubicación del comienzo y el
final de la arista, o sea, en donde se dará comienzo al ciclo “while” para empezar a
recorrer la matriz y en donde se terminará de recorrer. Se debe de dar los condicionales
para esto. Se presentará el código que da solución a la arista superior.

Solución problema arista superior.

Como se está trabajando en las arista superior e inferior se debe de dar la condición
de recorrer por las filas correspondientes y recorriendo el mismo intervalo de las
columnas como se ve en el ciclo “while” sin tomar las esquinas que no se pueden
solucionar por este método.

Se mostrará ahora el código de una de las columnas laterales de la matriz.

Soluciones de las columnas lateras

Ahora como se trabaja con las columnas laterales de la matriz, se debe tomar en cuenta
las columnas correspondientes y recorriendo el mismo intervalo de las filas como se
ve de nuevo en el ciclo “while” sin tomas las esquinas de nuevo.
Ya para terminar se le dará una solución a las esquinas en los cuales se debe hacer de
forma manual en cada esquina de la matriz. Ahora el problema que se debe abordar
es la presencia de 5 celdas nulas como se muestra en la siguiente imagen.

Problema de las esquinas de la matriz.

Ahora para solucionar el problema de cada esquina se debe hacer de forma individual
en cada una de las celdas esquineras. Tan sólo se debe de dar un intervalo puntual,
dado que no se usa ningún ciclo, es una celda particular y no se hace ningún tipo de
recorrido, sólo se da la recolección de los datos y luego se realiza la recolección del
máximo y el mínimo para realizar la fórmula que se describió con anterioridad.

Solución de las celdas esquineras

Para desarrollar esta solución tan sólo debe de tener en cuenta dos cosas, la primera
localizar las celdas esquineras y las celdas del cuadrado de 3 x 3 que se deben de
recolectar para hallar el máximo y mínimo para realizar la fórmula.

Ya por último se da un comando “print” para imprimir toda la matriz resultante y


terminar ya el ejercicio.
Impresión de la matriz y solución del ejercicio.

También podría gustarte