[#47074143] Implementación de la selección del tipo de detección de defectos

Se ha implementado la opción de dar a elegir al usuario qué tipo de
detección de defectos quiere realizar: la clásica, la clásica más la
intersección con los umbrales locales o la lista de píxeles blancos de
umbrales locales.
Se ha añadido un ComboBox en las opciones avanzadas que permite elegir
la opción. Ha habido que añadir un campo para ello en el fichero de
opciones, más los métodos para poder leerlo y escribirlo.
En función de lo que se escoja, se lanzará un proceso u otro.
[#47074247] Inclusión de un margen (equivalente al radio) en los umbrales locales

A la hora de calcular los umbrales locales, cogemos la selección más un
margen, que es el radio del algoritmo. Si no podemos incluir el margen
porque la selección llega a algún borde de la imagen, sólo se coge la
selección original.
Se ha modificado la clase que calcula los umbrales locales para que el
radio sea una variable global y se pueda cambiar su valor. Se han
incluido métodos get y set para ello.
[#47074591] Generación de un ARFF mediante ventana deslizante

Se ha implementado una opción para generar un conjunto de datos a través
de la ventana deslizante. Por cada una de las ventanas se genera una
instancia en el ARFF.
Se ha incluido esta opción en las opciones avanzadas, incluyéndola
también en el fichero de opciones, junto con su get y set.
Se ha hecho un pull up de la funcionalidad de generación del ARFF desde
las clases VentanaAleatoriay VentanaDeslizante a la superclase
VentanaAbstracta, para evitar código duplicado.
[#47074403] Generación de una lista de ROIs en la imagen de umbrales locales

Con el objetivo de poder remuestrear la lista de píxeles blancos en la
detección mediante lista, se ha implementado la generación de un array
de ROIs, sacados e binarizar la imagen generada con los umbrales
locales. Después, se determina a qué región pertenece cada píxel de la
lista, con el objetivo de poder crear una regla que determine si se
tiene que considerar el píxel o no.
[#47074403] Implementación del remuestreo de píxeles blancos

Se ha implementado un algoritmo para decidir si se debe considerar un
píxel de la lista de blancos de los umbrales locales o no.
Lo primero, se determina cuántos píxeles se van a considerar de cada
región (10% del área).
Después, se determina a qué región pertenece un píxel sacado
aleatoriamente. Si no se han sacado todavía todos los píxeles a
considerar en el ROI correspondiente, se calculan características sobre
este píxel. En caso contrario, no se considera.
Bug fix

Se ha corregido un error: no incrementábamos el número de píxeles
considerados en la tabla hash de los ROIs.
Bug fix

Se ha arreglado un pequeño fallo, ya que no sacábamos bien el valor del
área del ResultsTable.
[#47074859] Cálculo de características geométricas

Se ha implementado la funcionalidad de cálculo de características
geométricas. Para ello, se ha cambiado la llamada a ParticleAnalyzer
para que, además de sacar los ROIs de cada región segmentada, calcule
algunas características geométricas (área, perímetro, circularidad...).
Se ha implementado también un método que de momento imprime por pantalla
todas las características calculadas.
[#47074981] Creación de la tabla de resultados
]

Se ha implementado la creación de una tabla resumen, en la que se
indican los resultados de las características geométricas de cada
defecto dibujado. Se ha cambiado el método que antes imprimía los
resultados por pantalla para cree un DefaultTableMode y lo rellene, que
posteriormente será usado por el JTable de la interfaz.
Se ha añadido la funcionalidad de desactivar los botones del log cuando
se está ejecutando algo. Se hace lo mismo con la tabla.
Al empezar un nuevo análisis, se borra el contenido de la tabla.
Se ha cambiado el nombre de la clase "Mediador" por "Fachada".
[#48444803] Implementación de la opción de seleccionar el tipo de clasificació

Se ha implementado la funcionalidad de poder elegir qué tipo de
clasificación se va a usar: clases nominales o regresión.
Se ha añadido la opción al fichero de opciones y al diálogo de opciones
avanzadas.
[#48444609] Modificación del cálculo del margen para umbrales locales

A la hora de calcular los umbrales locales, necesitamos que la imagen
sea la selección original más un pequeño margen, equivalente al radio.
Antes, si no entraba este margen, se cogía directamente la selección
original. Se ha cambiado esto para que se coja el margen en aquellos
lados del rectángulo de la selección en los que sí que entre.
[#48444789] Selección del tipo de ventana defectuosa

Se ha implementado la opción de poder elegir qué tipo de ventana
defectuosa se va a considerar: porcentaje de píxeles de toda la ventana
o porcentaje de la región de vecinos alrededor del píxel central. Se han
eliminado las otras 2 opciones (un píxel mal y píxel central mal) por su
bajo rendimiento.
Se ha añadido también un slider para seleccionar el porcentaje. Se han
añadido todas estas opciones al diálogo de opciones avanzadas y a la
clase de propiedades.
[#48444713] Implementación de la selección manual de defectos

Se ha implementado la funcionalidad de seleccionar una fila en la tabla
de resultados e ilumninar el defecto dibujado al que pertenece,
coloreándolo.
También se ha implementado la funcionalidad inversa, es decir,
seleccionar un defecto dibujado en la imagen y que se ilumine la fila de
la tabla correspondiente. Esto se hace mediante CTRL+CLICK, cambiándose
el cursor del ratón al presionar la tecla Control.
[#44867277] Implementación correcta de las excepciones

Se ha mejorado el manejo de las excepciones para poder mostrar un
diálogo de error en la interfaz. Las excepciones se lanzan en los hilo y
se capturan con un UncaughtExceptionHandler en la interfaz, donde se
almacenan. Cuando se producen, se paran todos los hilos. De esta manera,
la interfaz comprueba si existe una excepción por tratar. Si la hay, la
saca y la muestra mediante un diálogo.
También se ha arreglado un fallo en las ventanas, ya que no estábamos
usando la opción de clasificación nominal o regresión.
[#48444739] Bug fixes

Se ha arreglado el fallo que permitía seleccionar regiones mientras se
estaba analizando la imagen.
Se ha cambiado el comportamiento del visor de imágenes: ahora sólo se
permite seleccionar regiones cuando se carga una imagen, no antes.
La selección de los defectos sólo se permite cuando están dibujados.
Commit obligado por GitHub

Commit obligado por GitHub
[#48444769] Creación del módulo de ayuda en línea

Se ha creado un módulo de ayuda en línea (JavaHelp). El contenido,
distribuido en HTMLs, se puede considerar ya como definitivo, aunque
falta meter imágenes.
Se ha creado un buscador.
Se ha implementado el acceso al módulo mediante la tecla F1 y mediante
la opción del menú.