[#44869637] Implementacion diversos tipos de determinacion de ventanadefectuosa

Se ha implementado que una proporcion de pixeles de la ventana la
marquen como defectuosa.
Se ha implementado que una proporcion de pixeles centrales de la ventana
la marquen como defectuosa.
Se ha implementado que el pixel central de la ventana la marque como
defectuosa.
[#44869637] Implementación de regresión lineal

Se ha implementado el modo de regresión lineal para el análisis de
imágenes. A la hora de entrenar, se crea un ARFF con clase numérica (0 y
1 en vez de false y true), y se genera un LinearRegression de Weka. A la
hora de clasificar, si el valor que devuelve el modelo es mayor o igual
que 0.5, se considera defecto.
[#43636357] Refactorización de código

Se ha refactorizado el código hasta la fecha, y se ha eliminado la clase
FileReader.
[#46178591] Escritura en el log de la interfaz en formato HTML

Se ha implementado la escritura de los diferentes avisos en el cuadro te
texto de la interfaz en formato HTML, con una cabecera con estilos (uno
para cada tipo de cadena que se va a insertar: error, finalización con
éxito, parado y normal). Se han sustituido todas las escrituras
anteriores por las nuevas.
[#46179687] Exportación del log de la interfaz en HTML

Se ha implementado la funcionalidad de exportar el log de la interfaz en
formato HTML. Se ha creado una estructura de archivos HTML para incluir
una cabecera con unas imágenes y un margen izquierdo para centrar el
texto del documento.
También se ha implementado la funcionalidad de limpiar la ventana de
log.
[#46198889] Implementación de barra de menús

Se ha creado una barra de menús en la parte superior de la ventana, con
los apartados de "Archivo, Opciones avanzadas y Ayuda".
En el apartado de "Archivo", se ha creado una opción "Salir" que cierra
la aplicación.
En el apartado de opciones, se ha creado un diálogo de "Opciones
avanzadas", que permite cambiar los valores del salto y del tamaño de la
ventana. Se han incluido estas operaciones en la clase que se encarga de
las opciones del programa, para poder escribir estos cambios en el
fichero.
En el apartado de "ayuda", se han creado 2 items de ayuda en línea y
acerca de, que se implementarán en posteriores iteraciones.
[#46445135] Correción de la 1ª y 2ª derivadas

Ahora en lugar de usar el código de la versión del año pasado utilizamos
la librería Differentials_ para el cálculo de las derivadas.
[#46553667] Refactorizaciones

Se ha refactorizado la interfaz, para dividirla en una clase que
contiene la barra de menús y otra clase que contiene el resto.
Se han refactorizado las clases de las ventanas, eliminando así código
duplicado.
Se han corregido algunos errores a la hora de establecer los ROIs para
las ventanas o que el diálogo de opciones avanzadas se inicialice con
los valores que ya están guardados en el fichero de propiedades.
[#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.