miércoles, 3 de noviembre de 2010

Mis clases

Para hacer el calibrado he tenido que crear clases nuevas y retocar clases que tenía anterior mente. El esquema general ahora mismo es el siguiente:


Y las diferentes clases que tengo son:


En esta clase se almacenan los umbrales que puede coger cada color en RGB. Tengo tres variables, una para cada canal y varias funciones para escribir los valores y para recuperarlos.



Esta clase se dedica a hacer el vector de pesos acumulado, que expliqué anteriormente, y luego selecciona los candidatos que se reproducirán después.


La clase rectángulo ha quedado finalmente así:

  • setID: establece el ID de la partícula.
  • setColor: establece el color de la partícula.
  • setEsquinaIA: establece la esquina superior izquierda.
  • setEsquinaDB: establece la esquina inferior derecha.
  • setAlto: establecida la esquinaIA, calcula la Y de la otra esquina según el alto.
  • setAncho: establecida la esquinaIA, calcula la X de la otra esquina según el ancho.
  • setPeso: establece el peso.
  • getEsquinaIA: devuelve la esquina superior izquierda de la partícula.
  • getEsquinaDB: devuelve la esquina inferior derecha de la partícula.
  • getColor: devuelve el color de la patícula.
  • getPeso: devuelve el peso de la partícula.
  • getID: devuelve el ID de la patícula.
  • dibujar: dibuja la partícula en la imagen que se pasa por parámetro.
  • dispersar: mueve a la partícula de forma aleatoria tanto movimiento como se pasa por parámetro.
  • damePosicion: devuelve el punto central de la partícula.
  • dameAlto: devuelve el alto de la partícula.
  • dameAncho: devuelve el ancho de la partícula.
  • calcularPeso: calcula el peso de la partícula. Se le pasa por parámetro la imagen ya umbralizada, de tal forma que los píxeles importantes están en 255, lo que hace es sumar cuántos de esos píxeles están dentro de la partícula.
  • generarParticula: genera las partículas de forma aleatoria por la imagen, por eso se le pasa la imagen (para saber los bordes), el color de la partícula y alto y ancho que se quiere que tenga.


Esta clase MiImagen es que la que utilizo para tratar la imagen que me pasan. Contiene a la clase umbrales, para saber los umbrales que hay que usar en el umbralizado. También contiene la imagen a la que se le resta el fondo (sinFondo) y la máscara que se obtiene de ésta imagen. A parte tiene el atributo imagen que será donde se guardará la imagen umbralizada. Como se ve hay diferentes funciones de umbralizado para seleccionar cada color. Y por último hay una función para quitar ruido que se aplica sobre la imagen umbralizada.


Los atributos de esta clase son:
  • dedo: es un vector de rectángulos, estas son las partículas que vamos a general para el filtro.
  • color: color que tendrá cada partícula.
  • ancho: ancho de las partículas.
  • alto: alto de las partículas.
  • umbralizado: según el valor se usará un umbralizado.
  • des: desplazamiento de la ventana para calibrar.
  • calib: objeto de la clase calibrado.
  • dibujado: objeto de la clase miImagen.
  • noDibujar: puntero a la imagen principal sobre la que se harán las operaciones.
A continuación explicaré cada una de las funciones:
  • setColor: establece el color que tendrán todas las partículas.
  • setUmbralizado: establece el valor de umbralizado.
  • setDesplazamiento: establece el desplazamiento de la ventana a calibrar.
  • estimado: de todas las partículas que se tienen devolverá el resultado más óptimo, como solo va a haber un dedo de cada color solo puede haber un resultado más óptimo.
  • calcularPesos: calcula los pesos de todas las partículas.
  • dispersar: dispersa todas las partículas en la distancia que se indica.
  • generarAleatorios: genera todas las partículas de forma aleatoria.
  • dibujarCandidatos: una vez calculados los pesos de todas las partículas dibuja en la imagen las partículas que sean candidatas a ser el mejor estimado.
  • nuevosCandidatos: genera los nuevos candidatos que se han elegido en la ruleta.
  • run: función principal que realiza las llamadas correspondientes para el filtro de partículas.
  • seleccionUmbralizado: en función del valor selecciona el umbralizado de un color sobre la imagen.
  • calibrarColor: realiza la calibración del color.



Y esta última clase es la que realiza el calibrado de los colores. Los atributos que tiene son:
  • Ventana: es el rectángulo donde se pondrá el objeto a calibrar.
  • imagen: puntero a objeto miImagen.
  • fondo: imagen de fondo.
  • alto: alto del objeto a seguir.
  • ancho: ancho del objeto a seguir.
Y las funciones que tiene son las siguientes:
  • setImagen: establece el puntero a MiImagen.
  • setVentana: establece la ventana.
  • setFondo: establece el fondo.
  • setAncho: establece el ancho del objeto calibrado.
  • setAlto: establece el alto del objeto calibrado.
  • getAncho: devuelve el ancho del objeto calibrado.
  • getAlto: devuelve el alto del objeto calibrado.
  • calibrar: realiza la calibración del objeto.
  • quitarRuidoMascara: quita el ruido de la máscara.
  • valoresRojo: establece los valores umbral para el color rojo.
  • valoresAzul: establece los valores umbral para el color azul.
  • valoresVerde: establece los valores umbral para el color verde.
  • valoresAmarillo: establece los valores umbral para el color amarillo.
  • quitarFondo: resta a la imagen recogida el fondo.
  • hacerMascara: realiza la máscara de la imagen sin fondo.
  • seleccionValorColor: selecciona que color es del que se quieren coger los valores umbrales.
  • cogerLado: coge del objeto el ancho y alto.

No hay comentarios: