Вы находитесь на странице: 1из 73

Universidad Técnica Federico Santa Marı́a

Departamento de Electrónica

Sistema de Monitoreo Geomecánico de bajo Costo para


Cavidades Subterráneas Mediante Procesamiento Digital
de Imágenes

Tesis presentada por


Pablo Enrique Navarrete Cuevas
como requisito parcial para optar al tı́tulo de
Ingeniero Civil Electrónico Mención en Telecomunicaciones

Profesor Guı́a
Dr. Alejandro Suárez Sotomayor

Valparaı́so, Diciembre 2009


RESUMEN

E L monitoreo geomecánico de taludes y estructuras mineras ha significado un


permanente tema de investigación, por la necesidad de querer anticiparse ante
eventuales colapsos del macizo rocoso, que provoca anualmente pérdidas de vidas
humanas y costosos daños en instrumentación.
La instrumentación geotécnica tiene como finalidad determinar el comportamiento
y las caracterı́sticas del terreno para predecir su evolución frente a cargas,
movimientos, empujes, y demás acciones, tanto naturales como inducidas por algún
tipo de obra. Las magnitudes que generalmente se monitorean son los movimientos
superficiales, movimientos en el interior del terreno, movimientos de apertura de
grietas, presiones intersticiales, empujes del terreno sobre elementos de construcción.
Bajo este marco de instrumentación geotécnica, este trabajo contempla el diseño e
implementación de un prototipo de sistema de monitoreo geomecánico para cavidades
subterráneas mediante Procesamiento Digital de Imágenes (PDI).
La base de este proyecto se sustenta en el reconocimiento de variaciones entre
imágenes sucesivas, para de esta manera detectar desprendimientos de macizo
rocoso, estimar su magnitud y generar un historial de los eventos. Al detectar
desprendimientos y estimar la magnitud del maciso rocoso se estará monitoreando
el movimiento superficial del área de interés, en este caso cavidades subterráneas. El
historial de eventos permite un posterior análisis geomecánico.

Palabras Claves
Procesamiento Digital de Imágenes

Monitoreo Geomecánico

2
ABSTRACT

G E omechanical monitoring has meant a permanent investigation in order to


anticipate the collapse in rock mass which cause annually loss of life and
economic costs.
Geotechnical instrumentation is designed to determine the behavior and charac-
teristics of the field to predict its evolution face to charges, movements, tension, and
other actions, naturals as well as induced by some kind of work. The magnitudes that
generally are monitored are the surface movements, sub-surface movements, crack
movements, interstitial pressure, and earth pressure on building components.
Under this framework of geotechnical instrumentation, this work includes the
design and implementation of a prototype geomechanical monitoring system for
underground cavities using Digital Image Processing (DIP).
The basis of this project is based on the recognition of changes between successive
image to detect landslide rock mass, estimate magnitude and generate an events
history. By detecting landslide and estimate the magnitude of surface rock mass
movements, will be monitoring the surface movements of the underground cavities.
The events history allows geomechanical further analysis.

Keywords
Digital Image Processing

Geomechanical Monitoring

3
GLOSARIO

API: Interfaz de Programación de Aplicaciones (Application Programming


Interface) es provista por los creadores del lenguaje Java, y da a los
programadores los medios para desarrollar aplicaciones Java.

Geomecánica: Es una rama de la geologı́a que estudia el comportamiento del


suelo y de la roca. Contempla dos disciplinas; mecánica de suelos y mecánica
de rocas.

Geotécnica: Es la aplicación de metodos cientificos y principios de ingenierı́a


para la adquisición, interpretación y utilización de los conocimientos de mate-
riales de la corteza de la tierra y materiales de la tierra para la solución de
problemas de ingenierı́a.

JDBC: Java Database Connectivity es una API que permite la ejecución de


operaciones sobre bases de datos desde el lenguaje de programación Java,
independientemente del sistema operativo donde se ejecute o de la base de datos
a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que
se utilice.

monpdi: Nombre de la base de datos con la que el software funciona.

package: Palabra reservada en JAVA que contiene un grupo de clases con ca-
racterı́sticas comunes.

PDI: Procesamiento Digital de Imágenes.

script: Conjunto de instrucciones que permite la automatización de tareas cre-


ando pequeñas utilidades.

SQL: Lenguaje de Consulta Estructurado(Structured Query Language), es un


lenguaje declarativo de acceso a bases de datos relacionales que permite especi-

4
Glosario 5

ficar diversos tipos de operaciones en éstas.

XAMPP: es un servidor independiente de plataforma, software libre, que con-


siste principalmente en la base de datos MySQL, el servidor Web Apache y los
intérpretes para lenguajes de script: PHP y Perl.
AGRADECIMIENTOS

A toda mi familia en especial a mi madre Leticia que me acompaña en el tiempo y a


mi padre Nasario que me acompaña en el alma, por todo el cariño y protección que
me entregaron.

A mis hermanos Miguel y Pato, y a mi compañera Pamela por brindarme la


compañı́a y fortaleza que necesité.

A los profesores y amigos que me ayudaron a abrir paso en este desafı́o.

Pablo

6
CONTENIDO

7
CONTENIDO

RESUMEN 2

ABSTRACT 3

GLOSARIO 4

AGRADECIMIENTOS 6

1. INTRODUCCIÓN 10
1.1. Descripción del Problema ............................................................ 11
1.2. Estado del Arte ......................................................................... 12
1.2.1. Instrumentación Geotécnica ................................................ 12
1.2.2. Monitoreo de Desplazamiento.............................................. 13
1.2.3. PDI en Minerı́a ................................................................ 14

2. CONCEPTOS FUNDAMENTALES DEL PDI 16


2.1. La Imagen Digital ...................................................................... 16
2.2. Procesamiento Digital de Imágenes(PDI) ........................................ 16
2.3. Escala de Grises......................................................................... 19
2.4. Resta....................................................................................... 20
2.5. Binarización .............................................................................. 21
2.6. Erosión y Dilatación ................................................................... 22
2.7. Etiquetado................................................................................ 23
2.8. Operaciones Lógicas ................................................................... 24

3. DESARROLLO DEL SISTEMA DE MONITOREO GEOMECÁNICO 25


3.1. Metodologı́a de Trabajo............................................................... 26
3.2. Componentes del Sistema de Monitoreo .......................................... 28
3.2.1. Cámara IP ...................................................................... 28
3.2.2. Router ........................................................................... 29
3.2.3. Foco de Iluminación .......................................................... 29
3.2.4. Terminal ......................................................................... 30
3.2.5. Luxómetro ...................................................................... 30
3.3. Software de Monitoreo ................................................................ 31
3.3.1. Objetivos de la Aplicación .................................................. 31

5
Contenido 6

3.3.2. Administración del Monitoreo ............................................. 32


3.3.3. La Interfaz Gráfica de Usuario ............................................ 35
3.3.4. El Procesamiento Digital de la Imagen .................................. 38
3.3.5. Administración de la Base de Datos ..................................... 42
3.4. Ensayos de Evaluación ................................................................ 45
3.4.1. Ensayos Pequeña Escala..................................................... 45
3.4.2. Ensayos Media Escala........................................................ 47
3.4.3. Ensayo Final ................................................................... 50

CONCLUSIONES 58

REFERENCIAS 60

Bibliografı́a 60

APÉNDICES 61

A. APÉNDICE 1 61

B. APÉNDICE 2 64
B.1. Código MATLAB para Experimento 1............................................ 64
B.2. Códigos MATLAB para Experimento 2 .......................................... 68
B.3. Códigos MATLAB para Experimento 3 .......................................... 69
ÍNDICE DE FIGURAS

1.1. Análisis de Fragmentación............................................................ 14


1.2. Detección de caı́da en dientes de pala mecánica. ............................... 15

2.1. Imagen Digital........................................................................... 17


2.2. Imagen en Escala de Grises .......................................................... 19
2.3. Ajuste de Histograma en la Resta .................................................. 20
2.4. Binarización .............................................................................. 21
2.5. Erosión y Dilatación. Imágenes Gonzalez &Woods. ............................ 22
2.6. Etiquetado................................................................................ 23
2.7. Operaciones Lógicas ................................................................... 24

3.1. Sistema de Monitoreo en la cavidad Subterránea .............................. 26


3.2. Metodologı́a de Trabajo............................................................... 27
3.3. Conectividad de componentes del Sistema de Monitoreo..................... 28
3.4. Cámara Vivotek IP3112 .............................................................. 29
3.5. Router D-link modelo DIR 300 ..................................................... 29
3.6. Proyector de Área Ekoline ........................................................... 29
3.7. Luxómetro Digital ...................................................................... 30
3.8. Diagrama de clases para dependencias de MonitorThread.java............. 32
3.9. Stream de Datos de un archivo imagen ........................................... 34
3.10. Diagrama de Secuencia................................................................ 35
3.11. Interfaz Gráfica de Usuario de MONITOREO .................................. 36
3.12. Interfaz Gráfica de Usuario de HISTORIAL de imágenes procesadas .... 36
3.13. Interfaz Gráfica de Usuario de CONFIGURACIÓN ........................... 37
3.14. Diagrama de Clases de Dependencias en InterfazGrafica2 ................... 37
3.15. Package PDI ............................................................................. 39
3.16. Diagrama de Clases de dependencias de la clase ThreadPDI ............... 39
3.17. Etapas del PDI .......................................................................... 40
3.18. Imagen Etiquetada ..................................................................... 41
3.19. Matriz Patrón del ejemplo ........................................................... 41
3.20. Tablas de la Base de Datos .......................................................... 43
3.21. Diagramas de Clases en la administración de la Base de Datos ............ 44
3.22. Imágenes experimento de pequeña escala......................................... 46
3.23. Experimento de Alcance .............................................................. 48

7
Índice de Figuras 8

3.24. Experimento de Prueba de Algoritmo............................................. 49


3.25. Construcción de la Matriz Patrón .................................................. 51
3.26. Matriz Patrón para Experimento de 12 metros ................................. 52
3.27. Construcción Matriz Patrón para 24 metros .................................... 53
3.28. Diagrama de clases para dependencias de MonitorThread.java............. 55
3.29. Captura de la Interfaz Gráfica del Historial ..................................... 56
3.30. Captura de la Interfaz Gráfica del Monitoreo ................................... 56
3.31. Visualizaciones de la Imagen Procesada .......................................... 57
ÍNDICE DE TABLAS

3.1. Construcción de Matriz Patrón para 12 metros ................................ 52


3.2. Construcción de Matriz Patrón ..................................................... 54

9
Capı́tulo 1

INTRODUCCIÓN

E L presente documento corresponde a la “Memoria de Titulación Sistema de


Monitoreo Geomecánico para Cavidades Subterráneas mediante PDI”. Este
proyecto nace como propuesta de la empresa E-Mining Technology S.A., empresa
que desarrolla proyectos de minerı́a subterránea y rajo abierto.
El proyecto consiste en integrar en un Sistema de Monitoreo Geomecánico
la tecnologı́a existente acerca del Procesamiento Digital de Imágenes (PDI).
Esto fı́sicamente significa montar una cámara digital en una cavidad subterránea
capturando imágenes del sector de interés a monitorear, para poder detectar un des-
prendimiento de macizo rocoso y estimar la magnitud del desprendimiento. La idea
de detectar desprendimiento y generar un historial de eventos pretende poder obtener
información de la actividad geomecánica al interior de las cavidades subterráneas y
dependiendo de la magnitud del evento, poder dar aviso que un colapso está tomando
lugar en el macizo rocoso.
Para abordar el desarrollo del trabajo de tı́tulo se identificaron 3 etapas
importantes. En la primera etapa se realizó un estudio de los antecedentes del proyecto
propuesto, como también un estudio del PDI y sus principales algoritmos para el
tratamiento de la imagen. Una segunda Fase consistió en la creación de un prototipo
a media escala usando el software Matlab. Por último la tercera etapa significó desa-
rrollar un software de administración del monitoreo en lenguaje JAVA y la realización
de experimentos de prueba.
En cuanto a la estructura de este documento, el Capı́tulo 2 corresponde al
Marco Teórico de este trabajo, se realiza una revisión a los fundamentos del PDI
y una explicación de los algoritmos principales del PDI utilizados para detectar
desprendimiento de macizo rocoso. En el Capı́tulo 3 corresponde al Desarrollo del
Tema, donde se especifican los elementos que se utilizaron para llevar a cabo el
prototipo de monitoreo, se muestra la estructura del software de administración del
monitoreo y los experimentos que se llevaron a cabo para validar tanto los algoritmos
de PDI como la aplicación desarrollada.
A continuación se revisa la descripción del problema a resolver, y un estado del arte
de cuales son los actuales sistemas de monitoreo de desplazamiento implementados
en minerı́a, y se describen dos ejemplos de aplicaciones actuales de PDI en la minerı́a.

10
1.1 Descripción del Problema 11

1.1. Descripción del Problema


En minerı́a subterránea, la forma en que se extrae el mineral va generando los
llamados caserones. Estos caserones son cavidades que pueden tener dimensiones
de aproximadamente 70[m] de altura y un techo de 40x40[m2 ]. Una vez extraı́do el
mineral, se proceden a llenar con material estéril, o bien van quedando vacı́os. Estas
cavidades subterráneas son fuentes de mecanismos de inestabilidad [1] que pueden
desencadenar colapsos del macizo rocoso, por lo que es necesario tener conocimiento
de la actividad geomecánica que se esta desarrollando, sobre todo si se están llevando
a cabo obras en forma aledaña a estos sectores. Por lo general estas cavidades
subterráneas son de difı́cil acceso, se encuentran completamente oscuras y no se
encuentran productivamente activas.
Existe un variado instrumental geotécnico para monitorear la estabilidad del
macizo rocoso al interior de estas cavidades. Todos ellos tienen caracterı́sticas
particulares. Algunos logran determinar con mucha exactitud la variable que se
encuentra monitoreando, sin embargo la gran mayorı́a presenta elevados costos
comerciales, y se corre el riesgo de que a causa de un evento de derrumbe se pierda
el equipo de monitoreo.
Por lo tanto se busca implementar un nuevo sistema de monitoreo que mediante
la comparación de imágenes capturadas por una cámara IP, detecte actividad
geomecánica al interior de una mina subterránea, de esta manera se pueda generar
un registro de los eventos que vayan ocurriendo.
Según las condiciones del entorno el sistema debe contar con las siguientes carac-
terı́sticas:

Monitoreo permanente y autónomo: Debido a que el lugar a monitorear es


de difı́cil acceso, se necesita que el sistema sea capaz de funcionar de manera
autónoma y que capture imágenes de manera permanente sin que un usuario
tenga que estar presente en el lugar del monitoreo todo el tiempo.

Que entregue información oportuna y útil: Se necesita poder estimar la


magnitud de cada evento, para que el usuario tenga acceso a conocer la actividad
geomecánica del lugar monitoreado.

De bajo costo: Se pretende que este sistema de monitoreo constituya una


alternativa de monitoreo dentro del variado, preciso, pero costoso instrumental
geotécnico que existe actualmente.
1.2 Estado del Arte 12

1.2. Estado del Arte


1.2.1. Instrumentación Geotécnica
La instrumentación Geotécnica [2] tiene como finalidad determinar el compor-
tamiento del terreno para predecir su evolución frente a cargas, movimientos, torsiones
y otras acciones, ya sean naturales o inducidas por las obras propias; por ejemplo,
del área de minerı́a. A continuación se describe la instrumentación de mayor interés
ocupada en la minerı́a. Para planificar un programa de instrumentación se requiere
elegir las magnitudes a medir y el tipo de instrumento a utilizar. Dichas magnitudes
pueden ser:

Movimientos Superficiales.

Movimientos al interior de un terreno.

Movimiento de aperturas de grietas y entre diferentes puntos.

Presiones Intersticiales y sus variaciones.

Empujes del terreno sobre elementos de construcción.

La frecuencia de las lecturas y la adquisición de datos dependen de las magnitudes a


medir y de la velocidad del proceso a controlar. Las lecturas pueden ser manuales o
automáticas. Las primeras están asociadas a los casos en que la cantidad de puntos de
registro o sensores es pequeña, y la periodicidad de la toma de muestras es semanal
o mayor y los puntos de lectura sean de fácil accesibilidad. Entonces la elección del
sistema de toma de datos viene condicionada por el número de sensores, caracterı́sticas
de los mismos, frecuencia de toma de muestras, rapidez con que debe realizarse el
tratamiento y accesibilidad del lugar. Para nuestro caso, debido a la variabilidad del
estado del terreno a monitorear, la frecuencia de lecturas tiene que brindar flexibilidad.
Existen Muchos métodos para poder medir desplazamiento de dos puntos
próximos utilizados en minerı́a, algunos de ellos son:

Equipos de Sistema de Lectura Mecánicos y Eléctricos.

Desplazamientos entre puntos situados en superficie: más que nada ocupan


métodos geodésicos como triangulación, trilateración y poligonalización, basa-
dos en la medición de ángulos de dos o más bases fijas.

Desplazamientos Profundos: basados principalmente en los datos arrojados por


inclinómetros y extensómetros.

Deformaciones de Pozos.

Para nuestro caso, este proyecto forma parte de una nueva generación de
instrumental geotécnico. La magnitud fı́sica de interés es el desplazamiento,
movimientos superficiales de macizo rocoso.
1.2 Estado del Arte 13

1.2.2. Monitoreo de Desplazamiento


Para el monitoreo de desplazamiento de estructuras mineras, actualmente se están
utilizando los siguientes sistemas de monitoreo:

Alarma Bred: Este sistema de vigilancia permite medir la continuidad eléctrica


de un cable enterrado a cierta profundidad del lugar monitoreado, de manera de que
si existe un corte en la lı́nea, da aviso visual o sonoro de que se ha producido una
variación geológica. Puede medir continuidad de muchas lı́neas enterradas a distintas
profundidades, para entregar mayor información de donde se produjo la variación
geológica. Este tipo de monitoreo es usado tanto en minerı́a subterránea como en
minerı́a a cielo abierto.

Sistema de Prismas: Este sistema de monitoreo está destinado mas que nada a
medición de desplazamiento de taludes mineros en minerı́a a cielo abierto, y consiste
en la medición de la distancia de un conjunto de prismas colocados en el sector moni-
toreado mediante un láser desde una estación base. Desde la estación base se envı́a un
pulso de láser a cada prisma y se obtiene entonces la distancia a la cual está ubicado
cada uno de ellos. Luego se repite el proceso y se puede entonces conocer si ha existido
algún desplazamiento del talud.

Sistema de Radar: Este sistema monitoreo geomecánico es exclusivamente


para minas a cielo abierto. Permite mediante ondas electromagnéticas medir
desplazamiento de terrenos y con ello la estabilidad de taludes, generando mapas
sintéticos de los distintos niveles de estabilidad del sector monitoreado. Es de
operación autónoma y tiene alcances de incluso 2500 metros de distancia.
1.2 Estado del Arte 14

1.2.3. PDI en Minerı́a


El PDI está integrando cada vez más a aplicaciones mineras. A continuación se
describen dos aplicaciones [3] que se han implementado en la minerı́a.

Análisis de fragmentación, FragMetrics:


Mediante técnicas de PDI se ha podido estimar el grado de fragmentación del mineral
extraı́do. Esta aplicación consiste en tratamiento de imágenes del mineral extraı́do
por la pala mecánica mediante una cámara digital. Se observa en la figura 1.1 que se
aplican técnicas de PDI que permiten identificar los bordes del mineral extraı́do. De
esta manera estiman el área de cada trozo de mineral extraı́do. Luego mediante un
histograma se puede ver el grado de fragmentación del mineral.

Figura 1.1: Análisis de Fragmentación.


1.2 Estado del Arte 15

Monitoreo de dientes de pala mecánica, ToothMetrics:


- Ha sido posible mediante el PDI resolver un problema que afecta a las palas
mecánicas de extracción de minerales, que es el desprendimiento de uno de sus dientes.
Cuando uno de los dientes de la pala mecánica se desprende, se mezcla junto al mineral
extraı́do causando cuantiosos daños materiales y tiempos muertos en la producción.
En la figura 1.2 podemos ver como el sistema es capaz de reconocer el diente de la
pala que falta mediante la captura de imágenes desde una cámara ubicada justo frente
a la pala mecánica.

Figura 1.2: Detección de caı́da en dientes de pala mecánica.


Capı́tulo 2

CONCEPTOS FUNDAMENTALES
DEL PDI

2.1. La Imagen Digital


La Imagen digital es un arreglo bidimensional de Pı́xeles P (x, y), donde x e y son
variables espaciales en el plano y la amplitud es el nivel de gris, en el caso de una
imagen en escala de grises. En la figura podemos ver una representación de una imagen
digital de M xN pixeles, donde M y N son números enteros. En el caso de una imagen
en color, el Pı́xel esta conformado por 3 pixeles de color, correspondientes al canal rojo,
canal verde y canal azul. Estos canales en la arquitectura de un computador actual,
pueden adoptar un nivel que va de 0 a 255. Por lo tanto cada pı́xel codificado en 3
bytes puede tener 256 · 256 · 256 = 16,777,216 tonalidades distintas. Muchos más que
los que puede distinguir el ojo humano. La elección de estos 3 colores para los pixeles
es debido a que muchos de los colores percibidos por el ojo humano pueden formarse
mezclando estos 3 colores primarios, de hecho ha sido determinado experimentalmente
que hay 3 tipos de conos en la retina del ojo humano. Estos conos tienen diferentes
caracterı́sticas de absorción en función de la longitud de onda, con peaks de absorción
en las regiones rojo, verde y azul del espectro óptico, [4].

2.2. Procesamiento Digital de Imágenes(PDI)


El procesamiento digital de imágenes es el conjunto de técnicas que se aplican a
las imágenes digitales con el objetivo de mejorar la calidad o facilitar la búsqueda de
información. Es posible clasificar el PDI en dos categorı́as de métodos. Los métodos
que tienen como entrada imágenes pero las salidas son atributos de las imágenes y los
métodos que las entradas y las salidas son imágenes. A continuación una descripción
de algunos de los métodos más usados en el PDI, [1]:

Filtros y Mejoramiento de la Imagen: Los filtros en el PDI se encargan de


modificar las imágenes para detectar bordes, modificar su aspecto o para la elim-
inación de ruido. Existe una gran variedad de técnicas encargadas de ”mejorar la
imagen”para un fin determinado. El mejoramiento es subjetivo, debido a que para
una aplicación en especı́fica se puede utilizar un método de mejoramiento pero para
otro puede que no se obtenga el resultado deseado. Finalmente es el observador quién
interpreta visualmente si el método funciona y logra un mejoramiento.

16
2.2 Procesamiento Digital de Imágenes(PDI) 17

x P(1,n)

P(m,1) P(m,n)

Figura 2.1: Imagen Digital

Restauración de la Imagen: Son técnicas objetivas, a diferencia del mejo-


ramiento de la imagen, los métodos de restauración están basados en modelos pro-
babilı́sticos o matemáticos de degradación de la imagen. Las técnicas de restauración
de la imagen están orientadas hacia el modelamiento del fenómeno de degradación y
aplicar el proceso inverso de manera de recuperar la imagen original.

Procesamiento de imágenes en colores: Este procesamiento permite trabajar


con los colores de la imagen de manera de resaltar o encontrar información carac-
terı́stica de la imagen. El procesamiento de imágenes en colores esta motivado por
dos factores, primero los colores permiten con frecuencia simplificar la identificación y
extracción de objetos en una imagen. Segundo los seres humanos podemos distinguir
miles de tonalidades e intensidades de colores a diferencia que podemos distinguir
solo 2 docenas de tonalidades de gris.

Procesamiento Morfológico de imágenes: Es una herramienta que se usa


para extraer componentes de la imágenes que son útiles para la representación y des-
cripción de la forma de la región. Estos métodos usan herramientas que se ocupan de
extraer componentes de la imagen que son útiles en la representación y descripción
de la forma, como bordes o esqueleto de un objeto de la imagen.

Compresión de Imágenes: Se encarga de reducir la cantidad de datos requeri-


dos para representar una imagen. Con este tipo de técnicas también se logra disminuir
el ancho de banda requerido para transmitir las imágenes.

Procesamiento Multiresolución y Wavelets: Las transformada de Wavelets


permite comprimir, transmitir y realizar análisis de multiresolución de imágenes. Con
2.2 Procesamiento Digital de Imágenes(PDI) 18

un análisis de multiresolución se puede representar una imagen en varios niveles de


resolución.

Segmentación: Subdivide una imagen en sus regiones constituyentes u objetos.


El nivel de detalle al cual la subdivisión es llevada a cabo dependerá del tipo de
problema que se este resolviendo. Por ejemplo en inspección autónoma de ensambla-
dos electrónicos, el interés está en determinar la presencia o ausencia de anomalı́as
especı́ficas. Por lo tanto no hay problema en llevar la segmentación a niveles de pre-
cisión que se necesita para identificar esos elementos.

Representación y Descripción: Una vez que una imagen ha sido segmentada,


el siguiente paso es representar y describir los objetos segmentados de manera con-
veniente para procesamiento adicional. Para representar una región se puede llevar a
cabo de dos maneras: Se puede representar la región en función de sus caracterı́sticas
externas (bordes), o representar en función de sus caracterı́sticas internas (los pı́xeles
que comprenden la región). La siguiente tarea es describir la región basada en la re-
presentación escogida. Por ejemplo una región puede ser representada por su borde,
y su borde descrito por caracterı́sticas como su longitud, la orientación de la lı́nea
recta que une sus extremos y el número de concavidades en el borde.
2.3 Escala de Grises 19

2.3. Escala de Grises


Como se explicó en la sección anterior, una imagen en color es un arreglo de pı́xeles
formados por la superposición de 3 canales, por lo tanto se puede ver una imagen
en color como 3 arreglos bidimensional (o capas); f (j, k, 1), f (j, k, 2), f (j, k, 3). Una
Imagen en color puede ser llevada a Escala de Grises promediando los canales RGB
de cada pı́xel. Este tipo de procesamiento corresponde a uno de los mas básicos y
tiene como entrada y salida imágenes. En la figura 2.2 se muestra el resultado de
aplicar escala de grises a una imagen en color.

Data: f (x0 , y0 , 1), ..., f (xm , ym , 1),


f (x0 , y0 , 2), ..., f (xm , ym , 2),
f (x0 , y0 , 3), ..., f (xm , ym , 3)
for j = 1 to m do
for k = 1 to n do
g(j, k) = (f (j, k, 1) + f (j, k, 2) + f (j, k, 3))/3
return g(x, y) ;

Figura 2.2: Imagen en Escala de Grises


2.4 Resta 20

2.4. Resta
La Resta forma parte de las distintas operaciones aritméticas que pueden existir
entre imágenes, corresponde a un algoritmo punto a punto, es decir que el pı́xel de
la imagen resultante, se construye a partir de la operación resta de los pı́xeles de
las imágenes originales que tienen la misma coordenada. Esta operación matemática
permite obtener las diferencias entre dos imágenes sucesivas. Como se ha mencionado
anteriormente el nivel de un pı́xel en la arquitectura actual de un computador, puede
variar entre 0 y 255. Por lo que la resta puede generar en la imagen resultante valores
negativos. Para evitar este problema se puede realizar la resta absoluta entre las dos
imágenes, o bien ajustar el histograma resultante de manera que los pı́xeles tengan
valores dentro del rango permitido. Esta segunda solución, como se muestra en la
figura 2.3, permite obtener mayor información acerca del relieve del objeto detectado
en la resta.

(a) Imagen1 (b) Imagen2

HISTOGRAMA de Resta entre IMAGEN 1 e IMAGEN 2


600

500

400

300

200

100

0
−150 −100 −50 0 50 100 150

(c) Histograma Resta (d) Resta

HISTOGRAMA AJUSTADO de Resta entre IMAGEN 1 e IMAGEN 2


600

500

400

300

200

100

0
0 50 100 150 200 250 300

(e) Histograma Resta Ajustado (f ) Resta Ajustada

Figura 2.3: Ajuste de Histograma en la Resta


2.5 Binarización 21

2.5. Binarización
La Binarización consiste en fijar un umbral en un determinado nivel del pı́xel,
luego el pı́xel de la imagen resultante se lleva a cero o a 255 dependiendo si el nivel
del pı́xel de la imagen original se encuentra sobre o bajo este umbral de binarización.
La imagen original debe estar en escala de grises para poder fijar un solo umbral de
binarización.

Data: f (x0 , y0 ), ..., f (xm , ym ),umbral


for j = 1 to m do
for k = 1 to n do
if f (j, k) > umbral then
g(j, k) = 255
else
g(j, k) = 0

return g(x, y) ;

Figura 2.4: Binarización


2.6 Erosión y Dilatación 22

2.6. Erosión y Dilatación


La Erosión y Dilatación pertenecen a procesamientos morfológicos de la imagen, es
decir los objetos o estructuras que forman parte de la imagen son modificados. Cuando
se trabaja con este tipo de algoritmos la imagen de entrada debe estar binarizada para
un correcto funcionamiento, de manera que la imagen contenga cuerpos blancos a
etiquetar. La Erosión provoca una disminución del área de los objetos presentes en la
imagen, un pı́xel tomará el valor 1 en la imagen procesada, si ese mismo pı́xel y todos
sus vecinos valı́an 1 en la imagen original. La Dilatación, por el contrario provoca un
aumento en el área de los cuerpos presentes en la Imagen. Un pı́xel tomará el valor 1
en la imagen procesada, si ese mismo pı́xel o cualquiera de sus vecinos valı́an 1 en la
imagen original.

Figura 2.5: Erosión y Dilatación. Imágenes Gonzalez &Woods.

Podemos ver en la figura que al erosionar la imagen (a), la mayorı́a de los cuerpos
desaparece porque sus tamaños son del orden del elemento estructurante, sin embargo
sobreviven 3, imagen (b). Luego al dilatar la imagen, estos 3 cuerpos que sobrevivieron
vuelven a tener el mismo tamaño que tenı́an originalmente, imagen (c). Este algoritmo
en conjunto de erosionar y dilatar recibe el nombre de Open.
2.7 Etiquetado 23

2.7. Etiquetado
Una vez que se han identificado cuerpos en una imagen, puede ser necesario
asignar una etiqueta a cada pı́xel que conforma al cuerpo. Si cada cuerpo identificado
contiene pı́xeles con una determinada etiqueta entonces se pueden lograr fácilmente
procesamientos posteriores, por ejemplo el cálculo del área, filtro de ruido, etc.
Para etiquetar una imagen que tiene cuerpos identificados, se pueden seguir los
siguientes pasos:

1) Se le asigna a todos los pı́xeles “blancos”, un número distinto. Puede ser en


orden ascendente, no es estrictamente necesario.
2) Se le asigna a todos los pı́xeles de un determinado cuerpo, el menor
valor asignado en el paso 1. Esto se puede realizar mediante un elemento
estructurante, por ejemplo un rectángulo de 6 pı́xeles. Se recorre la imagen
preguntando si el pı́xel central del elemento es menor que sus vecinos, si no
entonces se le asigna el valor del vecino. Si este pı́xel es menor que alguno de
sus vecinos, el vecino toma el valor del pı́xel central.
3) Se aplica el paso anterior en distintas direcciones de recorrido de la imagen,
para asegurar que ha sido asignada la etiqueta correspondiente.

Figura 2.6: Etiquetado


2.8 Operaciones Lógicas 24

2.8. Operaciones Lógicas


Al trabajar con imágenes binarias es posible pensar en los cuerpos blancos de la
imagen como unos lógicos y en el fondo de la imagen como ceros lógicos. Bajo esta
concepción es posible realizar operaciones lógicas entre imágenes. En la imagen 2.7.a
podemos ver los operadores lógicos más comunes aplicados a imágenes binarias. Es
posible también usar este mismo concepto para colorear objetos de una imagen, una
vez que se tiene una mascara binaria de uno de los objetos de la foto. Por ejemplo
en la figura 2.7.b se tiene una máscara binaria B(x, y) de dos objetos de la imagen
A(x, y). Considerando los pı́xeles negros como 0 y los blancos como unos, es posible
obtener la imagen C(x, y) donde se colorea en la imagen original los objetos de la
máscara binaria.

A(x,y)
C(x,y)

B(x,y)
If(A(x,y))
C(x,y)=rojo
else
C(x,y)=B(x,y)

(a) Operaciones Lógicas. Imágenes de (b) Coloreado de una imagen


Gonzalez&Woods

Figura 2.7: Operaciones Lógicas


Capı́tulo 3

DESARROLLO DEL SISTEMA DE


MONITOREO GEOMECÁNICO

E N el capı́tulo anterior se presentaron las herramientas conceptuales para


llevar a cabo el PDI y fundamentos teóricos para respaldar la detección de
desprendimiento de macizo rocoso mediante la captura de imágenes con una cámara
digital. En el presente capı́tulo se expone la metodologı́a de trabajo que se utilizó para
cumplir con los objetivos planificados, y se realiza una explicación del funcionamiento
del software desarrollado para administrar el monitoreo.
Como se mencionó en el Capı́tulo 1, la finalidad de este proyecto es generar un
nuevo sistema de monitoreo mediante procesamiento digital de imágenes, que pueda
cumplir los siguientes objetivos:
Detección de Actividad Geomecánica al interior de una Caverna Subterránea.

Estimación de la Magnitud de los desprendimientos de macizo rocoso.

Generar un Historial con los Eventos.

De bajo costo.
Este sistema se orientó a estructuras subterráneas pero se esperan que los
resultados se puedan aplicar para el monitoreo geomecánico de estructuras de minas
de rajo abierto.
Para detección de Actividad Geomecánica al interior de una Caverna Subterránea
(como se ilustra en la figura 3.1), se ha utilizado la comparación de imágenes
capturadas desde una cámara IP fija apuntando hacia el sector monitoreado,
empleando la resta como algoritmo de PDI. Al comparar una imagen actual con la
tomada hace un perı́odo de tiempo determinado, se pueden detectar que pixeles de la
imagen anterior han variado considerablemente. Si esta cantidad de pı́xeles excede un
umbral, entonces estaremos hablando de un evento de desprendimiento. La detección
de un desprendimiento de macizo rocoso , puede ser de vital importancia, debido a
que estos desprendimientos son indicios de que un mecanismo de falla estructural esta
tomando lugar [2]. Si ha esto le sumamos generar un historial de la evolución de la
actividad geomecánica dentro de la cavidad subterránea, entonces se puede obtener
aun mayor información de la naturaleza del mecanismo de falla.
Para estimar la magnitud del desprendimiento, entonces se utiliza un algoritmo que
finalmente etiqueta los desprendimientos, y al indexar cada evento, entonces se puede
25
3.1 Metodologı́a de Trabajo 26

saber cual es la cantidad de pixeles que pertenece al evento. El historial se genera una
vez que la imagen se encuentra etiquetada, es decir, una vez que la imagen contiene un
número determinado de eventos, cada uno indexado a una etiqueta y a la magnitud,
entonces la imagen queda almacenada con toda esta información en una base de
datos.
Según los recursos con los cuales cuenta el proyecto, el prototipo del sistema de
monitoreo a desarrollar fue diseñado para realizar experimentos a media escala, y el
desarrollo del software de administración del monitoreo fue pensado para que pudiese
ser escalable y obtener el alcance real que se necesite.

Figura 3.1: Sistema de Monitoreo en la cavidad Subterránea

3.1. Metodologı́a de Trabajo


Para poder lograr los objetivos planteados para este proyecto, se realizó un es-
quema de trabajo que se muestra en la figura 3.1. Podemos indicar que el proyecto
contó de 3 etapas importantes.
Etapa I
En la primera etapa se realizó un estudio de la problemática a la cual se enfrentaba
el proyecto. Un estudio del estado del arte del PDI en minerı́a, y como se ha logrado
incorporar en aplicaciones del rubro. Luego se procedió a investigar acerca del PDI,
y cuales algoritmos eran los indicados para obtener la solución a la problemática. Se
hicieron pruebas de pequeña escala bajo el software MATLAB, resultados que serán
expuestos más adelante.
Etapa II
En una segunda etapa, se adquirió el instrumental necesario para llevar a cabo el
prototipo de monitoreo de media escala, y se realizaron pruebas de media escala,
para verificar alcance y desempeño de la iluminación. Se probaron los algoritmos de
detección de desprendimiento utilizados en la etapa I.
3.1 Metodologı́a de Trabajo 27

Etapa III
Finalmente en la etapa III, se procedió a desarrollar un software que administra
el monitoreo. Este software fue desarrollado en lenguaje JAVA, de manera que la
aplicación sea independiente de la plataforma, y por permitir desarrollar la aplicación
en un software libre. Esta última etapa sin duda fue que requirió de mayor trabajo,
debido a que el desarrollo del software incluı́a entonces la integración del PDI, la
interfaz con el usuario y la administración de la base de datos para generar el historial
de eventos. Para concluir se realizaron experimentos, resultados que también serán
presentados en una sección final de este capı́tulo.

Figura 3.2: Metodologı́a de Trabajo


3.2 Componentes del Sistema de Monitoreo 28

3.2. Componentes del Sistema de Monitoreo


Las caracterı́sticas de las cavidades subterráneas requieren de una cámara con
zoom y de un sistema de iluminación suficientemente potente, para lograr obtener
las imágenes con la resolución necesaria. Por lo tanto el sistema de monitoreo
necesita de un conjunto de focos que tengan un alcance frontal de 70 metros, y
que puedan iluminar un área de 40x40[m2 ], que son las medidas comunes de las
cavidades subterráneas. Para los recursos con los que contó el proyecto se adquirieron
instrumentos que permitieron desarrollar un prototipo de media escala. En la figura
3.3 se puede ver la conectividad de los componentes para lograr el funcionamiento del
sistema.

Foco de Iluminación

Router

Cámara IP

Base de datos
Terminal

Figura 3.3: Conectividad de componentes del Sistema de Monitoreo

3.2.1. Cámara IP
Para la realización de los experimentos a pequeña escala se utilizó una cámara
digital fotográfica Kodak EasyShare V1003( ver figura 3.4). Los experimentos hechos
en pequeña escala como se explicará mas adelante solo tenı́an como objetivo comparar
2 imágenes y no una secuencia de imágenes, por lo tanto solo vasto utilizar una cámara
fotográfica. Para llevar a cabo los experimentos de media escala se utilizó una Cámara
IP Vivotek 3112. El hecho de que se necesitara una cámara IP para el proyecto, es
para tener acceso remoto a la cámara, lo cual abre un número de posibilidades para
la aplicación requerida. Además esta cámara cuenta con un software que permite
realizar capturas de imágenes (”snapshot”) cada un periodo de tiempo configurable,
y enviarlas a un ftp. Las capturas tienen una resolución de 352x240 pı́xeles, por ser
una cámara orientada a la seguridad y transmitir video.
3.2 Componentes del Sistema de Monitoreo 29

Figura 3.4: Cámara Vivotek IP3112

3.2.2. Router
Se utilizó un router D-link modelo DIR 300, ( ver figura 3.5). Router inalámbrico
con 4 puertos, con una velocidad de transferencia de datos de hasta 54Mbps. El papel
que cumple el router inalámbrico es realizar la conexión entre la cámara IP y el
terminal. Pero también permite entregar al sistema conectividad a alguna red si es
que existiera, pudiéndose entonces acceder remotamente a las imágenes procesadas
sin tener que estar al lado de la cámara, para nuestro caso, dentro de la cavidad, para
poder acceder al software de monitoreo.

Figura 3.5: Router D-link modelo DIR 300

3.2.3. Foco de Iluminación


Para la realización de los experimentos de media escala se utilizó un Proyector
de Área de 250 Watts de potencia, con una lámpara de haluro metálico E-40 Ekoline
(ver figura 3.6).

Figura 3.6: Proyector de Área Ekoline


3.2 Componentes del Sistema de Monitoreo 30

3.2.4. Terminal
El terminal es el elemento en el sistema donde se aloja el software de admi-
nistración del monitoreo, por ende, donde se realiza el PDI. Una caracterı́stica
importante del terminal es que si se aloja la base de datos ahı́, entonces debe tener
suficiente espacio de memoria para almacenar el volumen de información que el
sistema necesitará manejar. Considerando que se requiera almacenar una foto de
buena resolución(1MB), cada una hora por un año, entonces se necesitarı́a de un
disco duro de al menos 10 GB de capacidad, lo cual es bastante realizable respecto de
la capacidad de los disco duros actuales. En el terminal también se aloja un servidor
FTP, donde la cámara IP envia la imagen capturada.

3.2.5. Luxómetro
El Luxómetro (o Luxı́metro) es un instrumento que permite medir el nivel de
iluminancia del ambiente. La unidad de medida es el lux. Este instrumento contiene
una célula fotoeléctrica que capta la luz y la convierte en impulsos eléctricos, los cuales
son representados en un display. El modelo utilizado para realizar los experimentos de
este trabajo fue el luxómetro Digital MASTECH modelo MS6610, ( ver figura 3.7).
Este instrumento permite entonces saber si el ambiente cuenta con la iluminación
necesaria para llevar a cabo el procesamiento digital de la imagen.

Figura 3.7: Luxómetro Digital


3.3 Software de Monitoreo 31

3.3. Software de Monitoreo


La parte central de este proyecto correspondió al desarrollo de un software para
administrar el monitoreo. Se utilizó JAVA como lenguaje de programación, por ser
un lenguaje orientado a objeto y ajustarse a programación de elementos gráficos.
La programación de la aplicación se llevó a cabo bajo la plataforma Netbeans IDE
6.5 ( [5]), herramienta para programadores que permite escribir, compilar, depurar y
ejecutar programas, siendo un producto libre y gratuito sin restricciones de uso. En
la presente sección se lleva a cabo una explicación del funcionamiento del software,
para ello se presentan los diagramas de clases generados por el módulo de diagramas
UML del software Netbeans IDE 6.5.

3.3.1. Objetivos de la Aplicación


Esta aplicación tiene los siguientes objetivos funcionales, según los requerimientos
establecidos en la planificación:

Mostrar al usuario las imágenes que captura la cámara y la Imagen Procesada.

Detectar un desprendimiento que supere una magnitud previamente establecida.

Guardar las Imágenes Procesadas que hallan detectado el desprendimiento.

Estimar el área del cuerpo desprendido.

Generar una Base de datos con las imágenes procesadas y sus desprendimientos.

Generar una base de datos con imágenes capturadas.

Generar una Interfaz Gráfica que permita al usuario revisar las imágenes
procesadas.

Para cumplir con los objetivos anteriores se identificaron 4 partes importantes en


la programación del software:

Administración del Monitoreo.

La Interfaz Gráfica con el Usuario.

Administración de la Base de Datos.

El Procesamiento Digital de la Imagen.

Los primeros 3 tópicos se agruparon en un mismo package llamado Main, debido


a que están muy relacionados. Para el Procesamiento Digital de la Imagen se
construyó un package aparte llamado PDI.
3.3 Software de Monitoreo 32

3.3.2. Administración del Monitoreo


Para que la aplicación tenga acceso a las imágenes capturadas por la cámara IP,
se generó un archivo FTP, el cual se alojó en el terminal. La cámara IP envı́a las
imágenes capturadas a la dirección IP del terminal donde se aloja el servidor FTP,
sobrescribiendo el nombre del archivo imagen (para nuestro caso llamado video.jpg).
Esta sección crı́tica es compartida entonces tanto por la cámara IP, como por la
aplicación JAVA, y la cámara IP actualiza cada 2 segundos la imagen capturada,
mientras que la aplicación consulta por la imagen por un tiempo superior al del
procesamiento digital de la imagen y el cual es ajustable por el usuario.
Para la administración del Monitoreo el programa cuenta principalmente con las
siguientes clases:
ThreadMonitor.java
HandleImage.java
HandleVariable.java
MyResource.java
ReadText.java
La Hebra Principal de Monitoreo
Al comenzar el programa en el método main de la clase Main.java, se genera un objeto
de ThreadMonitor.java, generándose una hebra que realiza de forma sistemática todos
los procesos que se necesitan para el monitoreo. En la figura 3.8 se puede ver la relación
de dependencias de la Clase ThreadMonitor.java con las clases que administran la
Base de Datos, La interfaz Gráfica y el Procesamiento Digital de la Imagen.

Unnamed

VarMng
HandleVariable ThreadMonitor Thread

util ImgMng Unnamed

Util DB GUI
HandleImage
MR
DBHistory InterfazGrafica2 ImageManager
MR2
ImageManager
MR
MyResource PDI
MyR
ThreadPDI

Figura 3.8: Diagrama de clases para dependencias de MonitorThread.java

Podemos analizar el método run(), de la hebra ThreadMonitor, el cual permite


describir en orden cronológico los principales procesos que se generan de manera
sistemática para llevar a cabo el monitoreo.
3.3 Software de Monitoreo 33

1) Despliega la Interfaz Gráfica.

2) Comienza el ciclo de while infinito.

3) Carga la Imagen Actual que se encuentra en el archivo FTP con el nombre de


video.jpg.

4) Carga la Imagen Temporal, correspondiente a la imagen capturada anterior a


la actual imagen pasada.jpg.

5) Crea una hebra para el procesamiento digital de la Imagen, creando un objeto


de la clase ThreadPDI.java.

6) Crea un arreglo de áreas y otro arreglo de coordenadas de los desprendimientos


ocurridos a partir de los resultados obtenidos del procesamiento digital de la
imagen.

7) Despliega las Imágenes Actual, Pasada y Procesada en la Interfaz Gráfica.

8) Si existen desprendimientos sobre un umbral preestablecido, entonces se envı́a


la imagen actual, la imagen temporal y la procesada a la base de datos, con la
información de desprendimientos detectados.

9) Se pausa la hebra por el tiempo preestablecido por el usuario, correspondiendo


al tiempo entre capturas.

10) Se revisa si el usuario ha decidido pausar el monitoreo, si no es ası́ se continua.

11) Fin del ciclo while.

Administración de las Imágenes Capturadas


La clase HandleImage.java tiene como finalidad administrar las imágenes Actual,
Temporal y Procesada. Una vez que el archivo Imagen ha sido leı́do, la clase
HandleImage.java extrae de la imagen cada pı́xel el cual es representado por un
arreglo unidimensional, donde cada elemento es formado por 4 bytes. El byte
mas significativo contiene la información del nivel Alpha del pı́xel, que representa
transparencia, y es válido para imágenes de extensión .png. El siguiente byte mas
significativo corresponde al nivel de Rojo. El siguiente byte corresponde al nivel
de Verde y finalmente el byte menos significativo almacena información de nivel
de Azul, (ver figura 3.9). Este arreglo unidimensional es convertido por la clase
HandleImage.java a un arreglo de 4 Dimensiones, donde cada dimensión corresponde a
una respectiva capa de nivel de Alpha, Rojo, Verde y Azul. De esta manera el archivo
imagen una vez cargado se convierte en un arreglo de 4 dimensiones, el cual es el
formato adecuado para el cual los algoritmos de procesamiento digital de imágenes
del package PDI están diseñados. El constructor de la clase permite acceder a estas
imágenes y sus arreglos de 4D respectivos, desde cualquier clase del programa. Es
decir, cualquier clase que genere un objeto de HandleImage.java, podrá tener acceso
a estas imágenes y tendrá también acceso a modificarlas. En el programa, la hebra
ThreadMonitor se encarga de cargar las imágenes Actual y Temporal, mediante el
3.3 Software de Monitoreo 34

P(x)

31 ... 24 23 ... 16 15 ... 8 7 ... 0

... ...

Byte Alpha Byte Rojo Byte Azul Byte Verde

Figura 3.9: Stream de Datos de un archivo imagen

método public void setTemporalImage(String Temporal), el cual permite ingresando


la ruta de la imagen, cargar la imagen.
Administración de las Variables Globales del Software
La clase HandleVariable.java permite administrar variables importantes como las
rutas de las imágenes actual y pasada, Umbrales de binarización y escala de gris, como
también variables que se usarán para establecer la conexión con la base de datos, como
por ejemplo nombre de la base de datos, usuario y password. Esta clase entonces fue
diseñada para no tener que estar definiendo las mismas variables en distintas clases.
Al igual que HandleImage.java, esta clase también permite acceder a estas variables
y modificarlas desde cualquier clase y automáticamente todas las demás clases que
han creado objetos de HandleVariable.java obtendrán la modificación.
Sincronización de Procesos
La clase MyResource.java es la encargada de generar la sincronización entre las
hebras que están presentes en el programa. En esta aplicación se generan 3 hebras
principales: ThreadHistorial, ThreadMonitor y ThreadPDI. La primera Hebra no
necesita sincronizarse con las demás debido a que solo se encarga de recolectar
cada un tiempo predeterminado, capturas de las imágenes tomadas por la cámara
IP y almacenarlas en la base de datos. Sin embargo ThreadMonitor y ThreadPDI
usan recursos compartidos, por lo que fue necesario sincronizarlas. Para lograrlo
se usaron monitores y es MyResource.java la clase encargadade otorgarlos. Como
se ve, la figura 3.10 describe como se sincronizan las hebras ThreadMonitor y
ThreadPDI. Como podemos ver, ThreadMonitor genera un monitor invocando a
la clase MyResource.java, luego cuando crea la hebra ThreadPDI le entrega como
argumento el monitor creado. Una vez hecho esto, ThreadMonitor invoca el método
waitFor() del monitor, lo que deja a este proceso en espera que ThreadPDI invoque
el método start() del monitor.
3.3 Software de Monitoreo 35

Main ThreadHistorial ThreadMonitor HandleImage DBHistory

ThreadHistory.start()
ThreadMonitor.start() InterfazGrafica2
nuevo

MyResource
imagen
nuevo
waitFor() ThreadPDI
nuevo(MyResource)
MyResource

start()
PDI con éxito

Almacenamiento de Imágenes en base de datos

Sleep()

Fin ciclo
while

Figura 3.10: Diagrama de Secuencia

3.3.3. La Interfaz Gráfica de Usuario


La Interfaz Gráfica del Software esta formada por 3 secciones , cada una posee un
Panel donde se despliega la información. Se organizan entonces en tres viñetas dentro
de un Frame; MONITOREO, HISTORIAL y CONFIGURACIÓN, las cuales serán
analizadas a continuación.
MONITOREO
Podemos ver en la figura 3.11 como la interfaz gráfica de usuario permite mostrar
tanto la imagen capturada actualmente como la anterior y la procesada. Además
cuenta con una sección donde muestra la cantidad de eventos que están ocurriendo,
el Area total que se ha desprendido, con su respectiva fecha. El usuario tiene opción
de poder modificar el perı́odo entre capturas, con un rango que va de 10 segundos a
un minuto. También puede optar por elegir la visualización de la imagen procesada, se
puede obtener ası́ la Binarización, la Resta, la Imagen Dilatada o los desprendimientos
Coloreados. Posee dos botones que permiten detener y hacer continuar el monitoreo.
HISTORIAL
En el historial se puede tener acceso a las imágenes procesadas (ver figura 3.12), es
decir una vez que ha ocurrido un evento, entonces la imagen procesada pasa a formar
parte de este historial. La imagen con eventos se le asigna un ID, y almacena junto
a ella la fecha a la cual ocurrió. Dentro de cada imagen entonces se etiquetan los
eventos con su posición y área estimada. La Imagen Procesada es mostrada en esta
interfaz de manera ampliada, de manera de poder identificar con mas claridad los
desprendimientos acontecidos.
CONFIGURACIÓN
En esta sección de la aplicación se tiene acceso a modificar las rutas donde seran
almacenadas las imágenes actual y procesada, como también se tiene acceso a
modificar los umbrales de binarización. El tiempo entre captura del monitoreo y
el tiempo de captura para historial de capturas (ver figura 3.13).
3.3 Software de Monitoreo 36

Figura 3.11: Interfaz Gráfica de Usuario de MONITOREO

Figura 3.12: Interfaz Gráfica de Usuario de HISTORIAL de imágenes


procesadas

Construcción de la Interfaz Gráfica de Usuario


Para generar la Interfaz Gráfica de Usuario se cuenta principalmente con las siguientes
clases:

InterfazGrafica2.java

ViewHistorial.java
3.3 Software de Monitoreo 37

Figura 3.13: Interfaz Gráfica de Usuario de CONFIGURACIÓN

ViewMonitor.java

ViewOpciones.java

La clase que se encarga de administrar las distintas visualizaciones de la interfaz grafi-


ca final es InterfazGrafica2.java. En el diagrama de dependencias de la figura 3.14, se
puede apreciar como esta Clase se encarga de crear objetos de las distintas secciones
de la Interfaz Gráfica como lo son ViewHistorial.java, ViewMonitor.java y ViewOp-
ciones. También se ve que crea un objeto monitor de la clase MyResource.java, el cual
se entrega en el argumento al objeto creado al invocar a ViewMonitor de manera ten-
er control de detener el proceso del monitoreo mediante un botón en la interfaz.

MR InterfazGrafica2 Unnamed

MyResource ImageManager

MR
HandleImage

IG1
Unnamed
ViewMonitor H
IG2
ViewHistorial
JFrame
ViewOpciones

Figura 3.14: Diagrama de Clases de Dependencias en InterfazGrafica2


3.3 Software de Monitoreo 38

3.3.4. El Procesamiento Digital de la Imagen


El procesamiento Digital de la Imagen se lleva a cabo en el package PDI. Este
package fue diseñado de manera de que funcione como una caja de herramientas para
utilizar en el procesado de la imagen. Las clases que forman parte del package PDI
son:

ThreadPDI.java

AjusteHistograma.java

Binarizacion.java

Coloreado.java

Erosion.java

Dilatacion.java

EscaladeGrises.java

Etiquetar.java

La Hebra ThreadPDI
Esta clase genera la hebra encargada de configurar la secuencia de algoritmos que
procesan la imagen. En el diagrama de bloques de la figura 3.15 se muestra como se
agrupan los algoritmos para lograr detectar las diferencias entre las imágenes actual
y pasada. Primero podemos ver que las Imágenes Actual y Pasada se restan capa por
capa, es decir la capa Rojo de la imagen actual menos la capa Rojo de la imagen
pasada, y ası́ respectivamente en cada capa. Luego el resultado de esta resta se lleva
a escala de grises, para luego binarizar. La imagen binarizada ya contiene los cuerpos
blancos que corresponden a las diferencias entre las imágenes, pero también contiene
ruido. Es preciso destacar que el simple hecho de la vibración de obturación de la
cámara provoca que una imagen tomada no sea idénticamente igual que otra. Ésta
pequeña diferencia puede traducirse en ruido, el cual es eliminado erosionando la
imagen, lo que significa disminuyendo el contorno de todos los cuerpos existentes en la
imagen binarizada. Luego con la dilatación los cuerpos de mayor importancia vuelven
aproximadamente a su tamaño original, pero el ruido que desapareció no forma parte
de este proceso de dilatación. Finalmente se procese a colorear la imagen original, tal
como fue explicado en el capı́tulo 2, de manera que se resalte los desprendimientos
en la imagen original.
Como podemos ver en el diagrama de clases de la figura 3.16, se puede ver
la dependencia de todos los algoritmos de procesamiento digital de imágenes con
respecto a la clase ThreadPDI.java, y también se puede apreciar que se instancia un
objeto de la clase MyResource.java, el cual es usado para generar sincronización con
el proceso ThreadMonitor que como ha sido explicado anteriormente, espera por el
resultado de ThreadPDI. En la figura 3.17 se pueden ver las distintas etapas que la
imagen experimenta a medida que pasa por el algoritmo de PDI.
3.3 Software de Monitoreo 39

Opción 1
Imagen Opción 2
Actual
Escala de Opción 3
Resta Binarización Erosión Dilatación Etiquetar Colorear
Grises
Imagen
Pasada
Ajuste
Opción 4
Histograma

Figura 3.15: Package PDI

Etiquetar2

Etiquetar2 ThreadPDI Thread


bin eg

Binarizacion EscalaDeGrises
eroj
C
d
Colorear MyR Erosion
OperacionResta1 ImageManager
Dilatacion
MyResource
Resta aj

HandleImage
AjustedeHistograma

Unnamed

Figura 3.16: Diagrama de Clases de dependencias de la clase ThreadPDI

Etiquetado y Estimación del área


Una vez que la imagen ha pasado por el módulo de la Dilatación, se procede al
etiquetado. El etiquetado es el algoritmo encargado de asignarle un identificador
a cada uno de cuerpos identificados. De esta manera cada pixel perteneciente al
desprendimiento tendrá un número que identificará a que desprendimiento pertenece.
Pero también esta clase esta encargada de calcular el área de cada uno de los cuerpos
etiquetados y estimar la coordenada en donde se encuentran. Para explicar como lo
hace se tiene el siguiente ejemplo:
Se tiene la siguiente imagen de 11x8 pixeles ( ver figura ). Como podemos ver,
se han etiquetado 4 cuerpos, con las etiquetas 1, 3, 12 y 14, según el algoritmo de
etiquetado. Luego se procede a contar cada una de las etiquetas para crear el arreglo
de área obteniéndose:

ID Etiquetas = 1 3 12 14

Area = 7 5 4 5

Luego para obtener la coordenada de cada cuerpo es necesario recorrer la imagen


de izquierda a derecha, de arriba hacia abajo, para buscar cual es el primer y último
3.3 Software de Monitoreo 40

(a) Imagen Actual (b) Imagen Pasada

(c) Resta (d) Escala de Gris

(e) Binarizado (f ) Erosión

(g) Dilatación (h) Coloreado

Figura 3.17: Etapas del PDI

pixel de cada cuerpo etiquetado. Por ejemplo para el cuerpo con la etiqueta 3, el
primer pixel que se encuentra está en {xinicial , yinicial } = {2, 6}, el último pı́xel
tiene coordenada {xf inal , yf inal } = {3, 8}. Luego se obtiene un promedio de ambas
coordenadas, obteniéndose entonces {xpromedio , ypromedio } = {2, 7}. Realizando esto
en cada cuerpo etiquetado se obtienen los arreglos:

XCoordenadas = 3 2 6 6
3.3 Software de Monitoreo 41

Figura 3.18: Imagen Etiquetada


Y Coordenadas = 1 7 4 8
Sin embargo la estimación del área de cada cuerpo se ve afectada por la geometrı́a
del lente de la cámara IP. La geometrı́a convexa del lente provoca que un cuerpo
desprendido en el centro de la imagen tenga mas pixeles que el mismo cuerpo
desprendido en el borde de la Imagen. Realizando pruebas experimentales es posible
verificar cuanto es el área que realmente representa cada pixel de la imagen y se puede
generar entonces una matriz de corrección. Para nuestra aplicación dicha matriz se
llama Matriz Patrón y se adjunta en la carpeta MatrizPatrón del software como un
archivo MatrizPatron.txt. En la figura 3.19 se tiene la Matriz Patrón para nuestro
ejemplo.

Figura 3.19: Matriz Patrón del ejemplo

Por lo tanto finalmente los arreglos de área son los siguientes:



Area = 23 15 18 23
3.3 Software de Monitoreo 42

Tiempos de Procesamiento
Usando el método currentTimeMillis() de la clase System, fue posible evaluar el
rendimiento de los algoritmos. La clase System forma parte de uno de los package
más importantes de la API Java, el paquete java.lang. Abarca una gran cantidad
de clases e interfaces fundamentales para la programación JAVA, tanto ası́ que esta
incluye automáticamente en la mayoria de los programas desarrolados en entornos de
programación. Para una imagen de 240x352 pı́xeles, como era la imagen capturada
por la cámara IP, entonces los algoritmos tuvieron los siguientes máximos tiempos de
procesamiento:

Etiquetado=0.82[s]

Resta=0.167[s]

Escala de Grises=0.063[s]

Binarizado=0.147[s]

Erosión=0.047[s]

Dilatación=0.064[s]

Ajuste de Histograma=0.057[s]

Coloreado=0.06[s]

Etiquetado=0.9[s]

Tiempo total de Procesamiento=2.278[s]

3.3.5. Administración de la Base de Datos


Creación de la Base de Datos Para la creación de la Base de Datos utilizada
en este proyecto se utilizó el servidor XAMPP, el cual es independiente de plataforma
y además es software libre. Dentro de los servicios que ofrece este software, esta
el servidor de base de datos MySQL. Por lo tanto mediante esta herramienta se
procedieron a crear las tablas que se muestran en la figura 3.20. En el Apéndice A
se adjunta el conjunto de intrucciones en lenguaje SQL (script), utilizado para crear
las tablas de la base de datos llamada monpdi mediante el servidor XAMPP y que es
necesario para el funcionamiento del software. La Tabla image se diseño de manera
de almacenar información de imagenes capturadas periódicamente, tenga o no tenga
eventos. La tabla image change almacena información sólo de las imágenes que han
obtenido eventos. La tabla image change item, contiene la información de cada evento
en particular, su área estimada y sus coordenadas donde se encuentra en la imagen.
La tabla config contiene información inicial de la configuración de umbrales y rutas
de almacenamiento.
Operaciones sobre la base de datos desde JAVA Las clases que contribuyen
a la administración de la base de datos son las siguientes:

ThreadHistory.java
3.3 Software de Monitoreo 43

Figura 3.20: Tablas de la Base de Datos

ThreadMonitor.java

DBHistory.java

DBConnection.java

DBOperation.java

DBVariable.java

ViewHistorial.java

Java posee un API llamado JDBC para ejecutar sentencias SQL. Consiste en un
conjunto de clases e interfaces programadas en lenguaje Java y permite interactuar
con la base de datos, de forma transparente al sistema. Todas las clases e interfaces
que conforman al API JDBC se encuentran agrupadas en el package java.sql. Este
paquete contiene clases para descargar los drivers, realizar las conexiones con la base
de datos, consultar por datos y manejar un conjunto de registros. La clase encargada
de la conexión entre la aplicación y la Base de Datos es DBConnection.java. Las
sentencias SQL son ejecutadas y retornan resultados bajo el contexto de una conexión.
Por lo tanto un objeto de la clase DBConnection.java permite generar una conexión,
y será necesario generar un objeto cada vez que se quiera consultar o ejecutar
una instrucción en la base de datos. La clase DBHistory.java tiene implementado
los métodos con sentencias SQL que permiten ingresar y consultar por registros
a las tablas de la base de datos. La clase DBOperation.java tiene implementado
los métodos para consultar por un conjunto de registros, por ejemplo las imagenes
correspondientes de un periodo de tiempo.
La hebra generada por instanciar a ThreadHistory.java se encarga de enviar
periódicamente una captura al archivo “/imageHistory” del software y su información
a la tabla image de la base de datos. De esta manera se tiene registro de el estado
de monitoreo del sector, existan o no eventos. La hebra generada por instanciar a
ThreadMonitor.java se encarga de enviar la imagen actual, temporal y procesada,
solo cuando ocurren eventos, a el archivo “/image” del software. Envı́a la información
del ID, la fecha y ruta del almacenamiento de la imagen a la tabla image change
y la información del área estimada y coordenadas de cada evento a la tabla
3.3 Software de Monitoreo 44

image change item. En los diagramas de clases de la figura 3.21 se pueden ver las
principales clases encargadas de la administración de la base de datos. En Fig. 3.21.a
se ve las dependencias de la clase DBHistory.java.
Se puede ver en el diagrama de clases de la figura 3.21.c como las clases
ThreadHistory.java y ThreadMonitor.java necesitan de la clase DBHistory.java para
hacer llamados SQL a la base de datos para realizar sus requerimientos. El factor
común dentro de los 3 diagramas de clases es DBHistory.java, debido a que es el
encargado de hacer la interfaz entre las peticiones de la aplicación y la base de datos.
La clase ViewHistorial.java también es muy importante dentro de la administración
de la base de datos, ya que se encarga de la interfaz gráfica del historial, por ende
ofrece al usuario acceso a consultar por las imágenes procesadas.

Unnamed

util
Util ViewHistorial JFrame

DB
DBHistory ImageChangeItemjTableMouseListener
ImageChangejTableMouseListener

DBHistory ImageChangejTableKeyListener
DBO con ProviderMouseListener
ImageChangeItemjTableKeyListener

DBOperation DBConnection
con ProviderKeyListener

(a) Diagrama de clases de depen- (b) Diagrama de clases de dependencias ViewHistorial


dencias de DBHistory

ThreadHistory

DB
util ImgMng VarMng

DBHistory Util HandleImage HandleVariable Thread

ImgMng VarMng
DB util TM
Unnamed Unnamed

ThreadMonitor

(c) Diagrama de clases de dependencias de ThreadHistory

Figura 3.21: Diagramas de Clases en la administración de la Base de Datos


3.4 Ensayos de Evaluación 45

3.4. Ensayos de Evaluación


3.4.1. Ensayos Pequeña Escala
Objetivos

Probar algoritmos desarrollados en MATLAB para la detección de de-


sprendimiento.

Realizar simulaciones de desprendimiento de rocas y analizar comportamiento


de algoritmos.

Materiales

Cámara digital fotográfica Kodak EasyShare V1003.

Foco Fluorescente.

Trı́pode.

Luxómetro.

Procedimiento

Se procedió a colocar la cámara fotográfica sobre un trı́pode a una distancia de


2 metros del sector monitoreado.

Se encendió el foco fluorescente a una distancia de 2 metros del sector


monitoreado.

Se capturaron 2 imágenes, una con 6 desprendimientos.

Resultados
Al ejecutar el algoritmo desarrollado en MATLAB para detección de de-
sprendimiento,(ver Apéndice B), se etiquetaron todos los desprendimientos que se
generaron artificialmente. Para optmizar el tiempo de los experimentos en MATLAB,
se bajó la resolución de la imagen a 683x911 pı́xeles. Mediante el algoritmo se pudo
escoger dentro de todos los cuerpos etiquetados, aquellos que indicaban una magnitud
considerable. Para este caso se considero magnitud considerable, mayor a 400 [cm2 ],
según la magnitud de la foto(683x911 pı́xeles) cuerpos etiquetados con más de 41,448
pı́xeles. Se puede ver en la figura 3.23 como el algoritmo de PDI es capaz de iden-
tificar los 6 cuerpos desprendidos de la figura (a). En la figura (c) se tiene la Resta
de ambas imágenes, pero con el histograma ajustado, es decir se escala el histograma
de la imagen, que contiene valores negativos, al rango entre 0 y 255. En la figura (d)
se tiene la resta de las imágenes Inicial y con Eventos, para luego Binarizar la figura
(e). En la figura (f) podemos ver la imagen posterior a la eliminación del ruido con
Erosión y Dilatación, y posterior a la selección de los cuerpos de magnitud mayor a
400[cm2 ].
3.4 Ensayos de Evaluación 46

(a) Imagen Inicial (b) Imagen con Eventos

(c) Resta y ajuste de histograma (d) Resta

(e) Binarización (f ) Etiquetado

(g) Coloreado

Figura 3.22: Imágenes experimento de pequeña escala.


3.4 Ensayos de Evaluación 47

3.4.2. Ensayos Media Escala


Objetivos

Probar alcance de instrumental adquirido para desarrollo del prototipo de mo-


nitoreo geomecánico.

Probar algoritmos desarrollados en MATLAB.

Materiales

Cámara IP Vivotek modelo 3112.

Router D-Link modelo DIR 300.

Luxómetro.

Proyector de Área con Ampolleta de 250W.

Terminal.

Lugar de Medición

La prueba de alcance fue llevada a cabo en un pasillo en baja luminosidad


para emular una caverna subterránea. Se probó el algoritmo de detección de
desprendimiento en la Ladera de la Cancha de Futbol de la UTFSM, también
bajo la condición de baja luminosidad.

Procedimiento

Para la prueba de alcance se procedió a colocar la cámara IP sobre el trı́pode a


una distancia de 20 a 30 metros de distancia.

Se encendió el proyector de área.

Se ubico un objeto de aproximadamente 400 [cm2 ] en el sector monitoreado y


se probó el algoritmo para las distintas distancias.

Resultados
Para la prueba de alcance se logró determinar que a 24 metros es posible detectar el
desprendimiento de un objeto de prueba de 400[cm2 ], con una iluminancia de 40[lux]
en el sector monitoreado. El cuerpo etiquetado cuenta con 16 pı́xeles. Distancias
mayores a 24 metros el objeto detectado en la binarización se confunde con el ruido
provocado por la obturación de la Imagen. En el experimento para probar el algoritmo
se pudo detectar el objeto desprendido de la imagen original a 24 metros de distancia,
con una iluminancia de 18[lux] y un umbral de binarización de 20 (de la escala de
nivel de gris 0 a 255). El cuerpo detectado consta de 45 pı́xeles. Cabe destacar que
la resolución de la imagen capturada por la cámara IP es de 240x352 pixeles, por lo
tanto el objeto detectado corresponde a un 0,05 % de toda la imagen. En las figuras
3.23 y 3.24 se pueden ver los resultados de ambas pruebas para media escala.
3.4 Ensayos de Evaluación 48

(a) Imagen Inicial (b) Imagen con evento

(c) Resta (d) Binarización

(e) Erosión (f ) Dilatación

Figura 3.23: Experimento de Alcance


3.4 Ensayos de Evaluación 49

(a) Imagen Inicial (b) Imagen con evento

(c) Resta (d) Binarización

(e) Erosión (f ) Dilatación

Figura 3.24: Experimento de Prueba de Algoritmo


3.4 Ensayos de Evaluación 50

3.4.3. Ensayo Final


Objetivos

Probar el funcionamiento de la aplicación desarrollada para el monitoreo geo-


mecánico.

Generar matriz patrón para 12 y 24 metros de distancia.

Materiales

Cámara IP Vivotek modelo 3112.

Router D-Link modelo DIR 300.

Luxómetro.

Proyector de Área con Ampolleta de 250W.

Terminal.

Elemento Patrón.

Lugar de Medición

Este experimento fue efectuado en la Ladera de la Cancha de Futbol de la


UTFSM, en la noche para tener poco nivel de luminosidad.

Procedimiento experimento

Se procedió a instalar el sistema de monitoreo a una distancia de 12 metros del


objetivo monitoreado.

Se procedió a colocar el elemento patrón en distintas ubicaciones del sector


monitoreado.

Se construyó la matriz patrón para 12 metros.

Finalmente se dejó funcionar el sistema para detectar desprendimientos


artificiales y estimar su magnitud de área.

Se repitió el mismo experimento pero para 24 metros.

Construcción de la Matriz Patrón


La Matriz Patrón como se mencionó anteriormente, cumple la función de asignarle
a cada pixel el área que aproximadamente representa en la realidad. Para nues-
tro experimento se utilizaron dos objetos como patrones. Un rectángulo blanco de
dimensiones 80x40[cm2 ] y otro rectángulo de 50x38[cm2 ], los cuales fueron colocados
en distintas ubicaciones del sector monitoreado. En la figura 3.25 se puede ver como
se llevó a cabo el procedimiento. Fue posible agrupar todas las imágenes como se
muestra en la figura 3.25.f, construyendo una única imagen con el máximo de las
3.4 Ensayos de Evaluación 51

imágenes anteriores, esto debido a que el objeto patrón que se utilizó es blanco y su
nivel de gris se sobrepone ante cualquier otro.

(a) Captura 1 (b) Captura 2

(c) Captura 3 (d) Captura 4

(e) Captura 5 (f ) Máximo de las imágenes cap-


turadas

Figura 3.25: Construcción de la Matriz Patrón

El paso siguiente correspondió a contar mediante una aplicación desarrollada en


JAVA la cantidad de pixeles que conformaban el ancho y el largo del objeto patrón en
la imagen. Los resultados de este proceso se pueden ver en la tabla 3.1. Las primeras
dos columnas de la tabla describen la posición donde se encuentra el objeto patrón.
las siguientes dos columnas describen la cantidad de pixeles que conforman el ancho
y el largo. Las columnas 5 y 6 de la tabla corresponden a la longitud en la dirección
x e y que representa cada pixel del objeto patrón. Finalmente se tiene la columna
del área que representa el pixel y la distancia con respecto al centro de la imagen.
Podemos ver que el área de cada pixel varia entre 5[cm2 ] y 7[cm2 ], Por lo tanto para
simplificar la construcción de la Matriz Patrón para este experimento se considero
que cada pixel representa 6[cm2 ]. Es posible ponderar con valor 0 aquellos sectores
que no interesa monitorear, para nuestro caso el sector del pasto. Finalmente para
ingresar esta Matriz Patrón al Software es necesario construir un archivo .txt con los
3.4 Ensayos de Evaluación 52

valores de cada pixel. En el apéndice B se encuentra el código de MATLAB utilizado


para la construcción del archivo MatrizPatron.txt.

x y Dx[pix] Dy[pix] P x[cm] P y[cm] Area[cm2 ] D[cm]


133 18 13 27 3,85 1,85 7,12 159
120 56 13 30 3,85 1,67 6,41 120
117 107 13 30 3,85 1,67 6,41 69,1
124 253 15 33 3,33 1,52 5,05 77,1

Tabla 3.1: Construcción de Matriz Patrón para 12 metros

En la figura 3.26, podemos ver como finalmente queda la matriz patrón, con color
rojo se denotan los pı́xeles que representan 6[cm2 ] y con color azul se denotan los
pı́xeles que se fijaron en cero, debido a que es un área que no interesa monitorear.

Figura 3.26: Matriz Patrón para Experimento de 12 metros

Para la construcción de la matriz patrón en el experimento de 24 metros se reali-


zó el mismo procedimiento anterior, sin embargo se necesito colocar el objeto patrón
en muchos mas lugares del sector monitoreado debido a que la geometrı́a del lente
afecta mas la estimación del área a medida que la cámara esta a mayor distancia
del objetivo monitoreado y además porque el sector monitoreado comienza a mostrar
formas mas irregulares que a 12 metros. En la figura 3.27 se puede ver la cantidad de
ubicaciones que fue colocado el objeto patrón.
3.4 Ensayos de Evaluación 53

(a) Máximo de un set de capturas (b) Máximo de un set de capturas

(c) Máximo de un set de capturas (d) Máximo de un set de capturas

(e) Máximo de un set de capturas (f ) Máximo de un set de capturas

Figura 3.27: Construcción Matriz Patrón para 24 metros

Podemos ver en la tabla 3.2 que el área de cada pixel puede variar entre 11, 8[cm2 ]
y los 40, 8[cm2 ], por lo que fue necesario llevar a cabo un modelamiento mas acucioso
de lo que representaba cada pixel de la imagen. Con los datos obtenidos anteriormente
se construyeron dos curvas interpoladas cúbicamente en los filas x = 15 y x = 175 de
la imagen. Es decir como se tenian los datos de la representación de área de los pixeles
para las filas {x15 , y0 }...{x15 , yn } y {x175 , y0 }...{x175 , yn } de la imagen, (ver imagen
2.1), entonces se pudo interpolar cúbicamente el valor del área para cada uno de los
pı́xeles de estas filas. Ahora para interpolar la representación de área del resto el resto
de los pı́xeles, se procedió a construir una lı́nea recta por cada una de las columnas
de la imagen, ya que se tienen 2 puntos. También se ponderó con 0 el sector que no
importaba monitorear. El resultado de esta interpolación de datos se puede ver en la
figura 3.28, donde con color azul se denotan los pixeles que representan menos área
en la matriz(0[cm2 ]), y con rojo los pı́xeles que representan mayor área (40, 8[cm2 ]).
3.4 Ensayos de Evaluación 54

x y Dx[pix] Dy[pix] P x[cm] P y[cm] Area[cm2 ] D[cm]


183 53 9,15 7,87 4,83 5,46 26,4 138
176 98 9,35 8,52 4,46 5,35 23,9 96
177 143 10,5 9,17 4,14 4,78 19,8 65,9
176 182 10,4 9,8 3,88 4,78 18,6 56,3
174 273 10,4 9,89 3,84 4,78 18,4 111
170 324 10,5 9,17 4,14 4,78 19,8 156
20 37 7,18 6,5 5,85 6,96 40,7 171
19 67 7,1 6,56 5,79 7,04 40,8 149
18 96 7,8 7,18 5,29 6,41 33,9 130
18 121 7,9 7,2 5,28 6,33 33,4 116
17 156 7,8 7,1 5,35 6,41 34,3 105
17 234 7,8 6,7 5,67 6,41 36,4 118
15 332 7,9 7,8 4,87 6,33 30,8 188
141 137 11 10,4 3,65 4,55 16,6 44,3
134 189 11,4 10,5 3,62 4,39 15,9 19,1
131 253 11,1 9,8 3,88 4,5 17,5 77,8
180 9 8,52 18,4 4,4 4,69 20,7 177
178 42 8,4 18,9 4,29 4,76 20,4 146
174 91 9,8 20,4 3,97 4,08 16,2 101
174 148 9,8 22,2 3,65 4,08 14,9 60,8
171 206 9,8 22,9 3,54 4,08 14,4 59,2
172 278 9,8 22,9 3,54 4,08 14,4 114
163 333 9,8 22,8 3,55 4,08 14,5 163
13 72,2 6,5 15 5,39 6,15 33,1 149
13 108 6,5 14,4 5,63 6,15 34,6 127
13 180 6,5 14,3 5,66 6,15 34,9 107
11 215 6,5 13,7 5,91 6,15 36,4 116
13 258 6,5 14,4 5,63 6,15 34,6 135
13 274 6,5 15 5,4 6,15 33,2 145
13 313 6,5 15 5,4 6,15 33,2 174
180 24 8,4 18,9 4,29 4,76 20,4 163
176 51 8,4 19 4,26 4,76 20,3 137
174 83 9,8 18,8 4,31 4,08 17,6 108
176 131 9,1 18,9 4,29 4,4 18,8 71,8
170 172 9,8 20 4,05 4,08 16,5 50,2
181 228 11 25 3,24 3,64 11,8 80,2

Tabla 3.2: Construcción de Matriz Patrón


3.4 Ensayos de Evaluación 55

Figura 3.28: Diagrama de clases para dependencias de MonitorThread.java

Resultados
Para el experimento efectuado a 12 metros de distancia del sector monitoreado,
el sistema fue capaz de detectar los 4 desprendimientos provocados artificialmente,
los cuales quedaron etiquetados y su magnitud fue estimada. En la figura podemos
ver el historial desplegado en la interfaz gráfica de la aplicación una vez detectado
los desprendimientos. Como se puede apreciar, al ocurrir los eventos, se despliega en
la ventana “Event — Log”que han ocurrido 5 desprendimientos, con un área total
de 1374[cm2 ]. El hecho de que se hayan detectado 5 cuerpos en lugar de cuatro,
corresponde a que existe un cuerpo que en el proceso de binarización se ha segmentado
en dos.
3.4 Ensayos de Evaluación 56

Figura 3.29: Captura de la Interfaz Gráfica del Historial

Figura 3.30: Captura de la Interfaz Gráfica del Monitoreo

Para el experimento efectuado a 24 metros de distancia del sector monitoreado


con desprendimientos artificiales, el sistema también fue capaz de etiquetar y estimar
la magnitud de los eventos ocurridos. En la figura 3.31 podemos ver algunas de
las visualizaciones de la imagen procesada que se pueden obtuvieron a partir del
monitoreo efectuado por el software.
3.4 Ensayos de Evaluación 57

(a) Imagen (b) Imagen

Figura 3.31: Visualizaciones de la Imagen Procesada


CONCLUSIONES

E L objetivo principal de este trabajo de tesis fue el desarrollo de un prototipo


de monitoreo geomecánico para minas subterráneas, mediante el procesamiento
digital de imágenes para la empresa E-Mining Technology S.A.. Si bien el principal
problema a resolver fue el encontrar un algoritmo de procesamiento digital de
imágenes que permitiera detectar y estimar la magnitud de desprendimiento de macizo
rocoso, el requisito de desarrollar una aplicación que integrara tanto el PDI como la
administración del monitoreo y Base de Datos, se convirtió en el grueso de este trabajo
de memoria.
La Primera Etapa de este trabajo consistió en estudiar el estado del arte de
Monitoreo Geomecánico y la presencia de aplicaciones que utilizan el PDI en la
industria minera. Se estudiaron los algoritmos de PDI mas recurrentes en el desarrollo
de aplicaciones, para lo cual fue necesario asistir como alumno oyente al curso ELO328
Procesamiento Digital de Imágenes dictado por el profesor Pablo Roncagliolo. De esta
primera Etapa se puede concluir que este trabajo de tı́tulo constituye nueva forma de
monitorear el desprendimiento de macizo rocoso en minerı́a, y que existen algoritmos
que pueden detectar variaciones entre dos imágenes mediante la comparación de las
mismas.
Una segunda Etapa correspondió a la construcción del algoritmo para el PDI en el
software educacional MATLAB y la realización de experimentos en pequeña y media
escala que permitieran validar los algoritmos desarrollados. En esta etapa se puede
concluir que en cada experimento realizado, a un sector en particular, necesita de una
reestructuración del algoritmo. Por lo tanto, el desarrollo de un prototipo de sistema
de monitoreo geomecánico debe permitir modificar de manera práctica el algoritmo.
Los principales parámetros a manejar son los umbrales de binarización, umbral de
pixeles para el filtro de etiquetado, el tiempo entre capturas y construcción de la
Matriz Patrón.
Por último, la tercera etapa y la que necesitó de mayor dedicación y tiempo, fue
el desarrollo del software de monitoreo que albergó el PDI, la administración del
monitoreo y la administración del historial de imágenes procesadas y capturadas. De
esta manera se cierra un prototipo desarrollado en un software libre, que puede ser
manipulado por la empresa de manera de conseguir un potencial cliente que auspicie
el proyecto y pueda llevar este proyecto a escala real. En esta etapa se trasladaron los
algoritmos desde el software MATLAB a JAVA, y se realizaron finalmente pruebas
experimentales que permiten ver el funcionamiento de la aplicación desarrollada.

58
Conclusiones 59

De esta última etapa se puede concluir que es posible estimar la magnitud de un


desprendimiento de macizo rocoso mediante PDI y es posible generar un historial de
eventos que permita al usuario del sistema reconocer actividad geomecánica al interior
de una mina subterránea. Gracias a las pruebas experimentales se pudo determinar
que una iluminación adecuada para el buen funcionamiento del algoritmo de detección
de desprendimientos es de 40[lux].
Este nuevo sistema de monitoreo geomecánico presenta ventajas significativas
respecto de otros sistemas de monitoreo:

Es una alternativa de bajo costo y de fácil instalación, por los tipos de elementos
que se requieren.

Puede monitorear zonas de difı́cil acceso, como lo son los caserones subterráneos
ya que fue diseñado para que funcione de forma autónoma y permanente.

Tiene la particularidad de tener un monitoreo espacialmente continuo, lo cual


entrega información valiosa del sector monitoreado.

Los Pasos a seguir para este proyecto apuntan a la búsqueda de optimizar el


rendimiento del PDI, debido a que este prototipo de pequeña escala ha trabajado
con imágenes de baja resolución. Para escala real se necesitará capturar imágenes de
mejor resolución, por ende el tiempo de procesamiento será mucho mayor.
El hecho que actualmente las minas subterráneas estén adquiriendo cada vez ma-
yor acceso a la conectividad, permitirá en un futuro cercano tener entonces un lugar
mas propicio para que éste tipo de monitoreo se desarrolle en la minerı́a.
REFERENCIAS

[1] R. C. Gonzalez and R. E.Woods, Processing Digital Image, 3rd ed., P. Hall, Ed. 2008,
2002.
[2] G. de Vallejo and L. I., Ingenierı́a Geológica, P. Universitari, Ed. 2002, 2002.
[3] http://www.motionmetrics.com/.
[4] W. K. Prat, Digital Image Processing, 3ra, Ed., 2001.
[5] http://netbeans.org.

60
Apéndice A

APÉNDICE 1

-- phpMyAdmin SQL Dump


-- version 3.1.3.1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 02-08-2009 a las 23:44:35
-- Versión del servidor: 5.1.33
-- Versión de PHP: 5.2.9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de datos: ‘monpdi‘
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla ‘config‘
--

CREATE TABLE IF NOT EXISTS ‘config‘ (


‘ID‘ int(11) NOT NULL,
‘imageHandleActualPath‘ varchar(300) NOT NULL,
‘imageHandleTemporalpath‘ varchar(300) NOT NULL,
‘MonitorThreadPauseTime‘ int(10) NOT NULL,
‘HistoryThreadPauseTime‘ int(11) NOT NULL,
‘FiltraEtiquetadoUmbral‘ int(5) NOT NULL,
‘PdiBinarizcionUmbral‘ int(5) NOT NULL,
PRIMARY KEY (‘ID‘)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Volcar la base de datos para la tabla ‘config‘

61
62

--

INSERT INTO ‘config‘ (‘ID‘, ‘imageHandleActualPath‘,


‘imageHandleTemporalpath‘, ‘MonitorThreadPauseTime‘,
‘HistoryThreadPauseTime‘, ‘FiltraEtiquetadoUmbral‘,
‘PdiBinarizcionUmbral‘) VALUES
(1, ’D:/Users/pablo/Pictures/Imagenes Monitoreo/monitoreo1/video.jpg’,
’D:/Users/pablo/Pictures/Imagenes Monitoreo/monitoreo1/imagen_pasada.jpg’,
0, 0, 0, 15);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla ‘image‘
--

CREATE TABLE IF NOT EXISTS ‘image‘ (


‘id‘ int(10) unsigned NOT NULL AUTO_INCREMENT,
‘zone_id‘ int(10) unsigned DEFAULT NULL,
‘date‘ date DEFAULT NULL,
‘path‘ char(200) DEFAULT NULL,
PRIMARY KEY (‘id‘),
KEY ‘image_FKIndex1‘ (‘zone_id‘)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=235 ;

--
-- Volcar la base de datos para la tabla ‘image‘
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla ‘image_change‘
--

CREATE TABLE IF NOT EXISTS ‘image_change‘ (


‘id‘ int(10) unsigned NOT NULL AUTO_INCREMENT,
‘zone_id‘ int(10) unsigned NOT NULL,
‘date‘ datetime DEFAULT NULL,
‘path‘ char(200) DEFAULT NULL,
PRIMARY KEY (‘id‘),
KEY ‘event_FKIndex1‘ (‘zone_id‘)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10229 ;
63

--
-- Volcar la base de datos para la tabla ‘image_change‘
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla ‘image_change_item‘
--

CREATE TABLE IF NOT EXISTS ‘image_change_item‘ (


‘id‘ int(10) unsigned NOT NULL AUTO_INCREMENT,
‘image_change_id‘ int(10) unsigned NOT NULL,
‘area‘ float DEFAULT NULL,
‘position_x‘ int(11) DEFAULT NULL,
‘position_y‘ int(11) NOT NULL,
PRIMARY KEY (‘id‘),
KEY ‘deprendimiento_FKIndex1‘ (‘image_change_id‘)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=68573 ;

--
-- Volcar la base de datos para la tabla ‘image_change_item‘
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla ‘zone‘
--

CREATE TABLE IF NOT EXISTS ‘zone‘ (


‘id‘ int(10) unsigned NOT NULL AUTO_INCREMENT,
‘name‘ char(200) DEFAULT NULL,
‘location‘ char(200) DEFAULT NULL,
‘initdate‘ int(10) unsigned DEFAULT NULL,
PRIMARY KEY (‘id‘)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Volcar la base de datos para la tabla ‘zone‘
Apéndice B

APÉNDICE 2

B.1. Código MATLAB para Experimento 1


Etiquetado: etiquetado2.m

function etiquetado2()
I=imread(’original.jpg’);
E=imread(’evento.jpg’);
I1=(I(:,:,1)+I(:,:,2)+I(:,:,3))/3;% Conversion a Escala de Grises
I2=(E(:,:,1)+E(:,:,2)+E(:,:,3))/3;% Conversion a Escala de Grises
R=I1-I2; %Resta de la Imagenes
A=binarizar(R,20);%Binarizacion de la Resta, umbral nivel de gris 20
[nf nc]=size(A);
total=nf*nc;%el area total de la pared fotografiada se
%encuentra representada por nf*nc pixeles
pared=6; %area en metros cuadrados de la pared fotografiada
n=total/pared; %determina cuantos pixeles hay por metro cuadrado
umbral=0.04;%umbral de area en metros cuadrados
x=umbral*n;

subplot (2,2,1),imshow(I);
subplot (2,2,2),imshow(E);

B=double(A)*0;
C=B;
[L,NUM]=bwlabel(A);
%bwlabel entrega una matriz que contiene etiquetas
% de los objetos conectados en A. La matriz retornada (L)
% será de las mismas dimensiones que A
disp(’Cantidad total de desprendimientos:’);
NUM %número de objetos conectados

disp(’presione una tecla..’);pause;

for i=1:NUM
A3=zeros(nf,nc);

64
B.1 Código MATLAB para Experimento 1 65

for f=1:nf
for c=1:nc
if L(f,c)==i
A3(f,c)=1;
end;
end;
end;
area=sum(sum(A3));

[fil col]=find(A3);

if area>x
disp(’A ocurrido un desprendimiento importante’);
magnitud=area*1/n %magnitud del desprendimiento en m^2

B=B+A3;
else
C=C+A3;
end;
% subplot(2,2,2);
% imshow(A3,[]);
% pause;
end;

for f=1:nf %pinta en la foto original las desprendimientos


% con areas mayores al umbral definido
for c=1:nc
if B(f,c)==1
I(f,c,1)=0;
I(f,c,2)=0;
I(f,c,3)=0;
I(f,c,1)=250;
end
end
end

D=B+C; %matriz con todos los eventos


subplot (2,2,3),imshow(B,[]);
subplot(2,2,4),imshow(I);
B.1 Código MATLAB para Experimento 1 66

Ajuste de Histograma: ajuste.m


function B=ajuste(A)
hist(A);
pause;
[nf nc]=size(A);
B=zeros(nf,nc);
minimo=min(min(A));
maximo=max(max(A));
resta=maximo-minimo;
B=A+abs(minimo);
hist(B)
pause;

factor_de_correccion=resta/255;
B=B/factor_de_correccion;
hist(B);
pause;
B=uint8(B);
imshow(B);
Binarización: binarizar.m
function B=binarizar(A,umbral)
% Binariza la imagen A, fijando el "umbral de binarizacion"

disp(’loading...’);

[nf nc m]=size(A);
if (m==3)
A=(A(:,:,1)+A(:,:,2)+A(:,:,3))/3;%se asegura de trabajar con
%una imagen en escala de grises
end;
B=A;

colormap(gray(256));

umb=umbral;
for f=1:nf
for c=1:nc
if B(f,c)>umb
B(f,c)=255;
else
B(f,c)=0;
end;%if
end;%for
B.1 Código MATLAB para Experimento 1 67

end;%for
B.2 Códigos MATLAB para Experimento 2 68

B.2. Códigos MATLAB para Experimento 2


Exp2 Alcance.m

function D=Exp2_Alcance();
I1=double(imread(’hall1.jpg’));
I2=double(imread(’hall1z.jpg’));
R=abs(I1-I2);
B=binarizar(R,70);
E=erosion(B);
D=dilatacion(E);
imshow(uint8(D));

function D=Exp2_Algoritmo();
I1=double(imread(’Imagen1.jpg’));
I2=double(imread(’Imagen2.jpg’));
R=abs(I1-I2);
EG=(R(:,:,1)+R(:,:,2)+R(:,:,3))/3;
B=binarizar(EG,20);
E=erosion(B);
D=dilatacion(E);
imshow(uint8(D));

Dilatación: dilatacion.m

function B=dilatacion(A)
% Aplica un elemento cuadrado de 9 elementos para dilatar
[H W Z]=size(A);
B=zeros(H,W);
K=[1 1 1;
1 1 1;
1 1 1];
for f=(1+1):(H-1)
for c=(1+1):(W-1)
suma=0;
for ff=-1:1
for cc=-1:1
suma=suma+K(ff+2,cc+2)*A(f+ff,c+cc)/255;
end;
end;
if suma>=1
B(f,c)=255;
else
B(f,c)=0;
end;
end;
end;
B.3 Códigos MATLAB para Experimento 3 69

Erosión: erosion.m
function B=erosion(A)
%Aplica un elemento cuadrado de 9 elementos para erosionar
[H W Z]=size(A);
B=zeros(H,W);
K=[1 1 1;
1 1 1;
1 1 1];
for f=(1+1):(H-1)
for c=(1+1):(W-1)
suma=0;
for ff=-1:1
for cc=-1:1
suma=suma+K(ff+2,cc+2)*A(f+ff,c+cc)/255;
end;
end;
if suma==sum(sum(K))
B(f,c)=255;
else
B(f,c)=0;
end;
end;
end;

B.3. Códigos MATLAB para Experimento 3


Construcción de archivo MatrizPatron.txt:
GeneracionMatrizPatron12metros.m
function Data=GeneracionMatrizPatron12metros()

Data(1:240,1:352)=6;
Data(200:240,1:352)=0;%sector no monitoreado
Data(1:10,1:160)=0;%sector no monitoreado
file_1 = fopen(’MatrizPatron.txt’,’w’);
for i=1:240
for j=1:352
fprintf(file_1,’ %13.6G\t’,Data(i,j));
end
fprintf(file_1,’\n’);
end
fclose(file_1)
pcolor(Data);
Construcción de archivo MatrizPatron.txt:
GeneracionMatrizPatron24metros.m
B.3 Códigos MATLAB para Experimento 3 70

function Data=GeneracionMatrizPatron24metros()

xi = 1:1:352;
Data=zeros(240,352);
%***Datos Experimentales***%
%**************************%
x1=[1;9;24;42;51;53;83;91;98;131;143;148;172;
182;206;228;273;278;324;333;352;];
y1=[21.3;20.7;20.4;20.4;20.3;26.4;
17.6;16.2;23.9;18.8;19.8;14.9;16.5;
18.6;14.4;11.8;18.4;14.4;19.8;14.5;14.3;];
x2=[1;37;67;72;96;108;121;156;180;215;
234;258;274;313;332;352;];
y2=[37.7123;40.7;40.8;33.1;33.9;34.6;33.4;
34.3;34.9;36.4;36.4;34.6;33.2;33.2;30.8;32.6;];
%***********************%
yi = interp1(x1,y1,xi,’cubic’);
yj = interp1(x2,y2,xi,’cubic’);

deltaX=175-15;
for col=1:352
deltaY=yi(col)-yj(col);
m=deltaY/deltaX;%pendiente de la rexta
for row=1:240
Data(row,col)=m*row+(yi(col)-175*m);
end
end
file_1 = fopen(’MatrizPatron.txt’,’w’);
for i=1:240
for j=1:352
fprintf(file_1,’ %13.6G\t’,Data(i,j));
end
fprintf(file_1,’\n’);
end
fclose(file_1)
Data(1:10,1:160)=0;%sector no monitoreado
Data(210:240,1:352)=0;%sector no monitoreado

pcolor(Data);

Вам также может понравиться