diff options
Diffstat (limited to 'Utilidades/src/Utilidades.h')
-rw-r--r-- | Utilidades/src/Utilidades.h | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/Utilidades/src/Utilidades.h b/Utilidades/src/Utilidades.h deleted file mode 100644 index 399b3a5..0000000 --- a/Utilidades/src/Utilidades.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Utilidades.h - * - * Created on: 26/05/2010 - * @author Sebastián Marichal - * sebastian_marichal@hotmail.com - * sebarocker@gmail.com - * - * Universidad de la República, Montevideo , Uruguay - */ - -/*Incluyo Artoolkit*/ -#include <AR/param.h> -#include <AR/ar.h> -#include <AR/arMulti.h> -#include <AR/gsub_lite.h> -#include <AR/gsub.h> -#include <AR/video.h> - - - -/*Incluyo OpenGL*/ -#include <GL/gl.h> -#include <GL/glut.h> - -#include "cvUtilities.h" -#include "Estructuras.h" - - -#ifndef UTILIDADES_H_ -#define UTILIDADES_H_ - - -#define FORMA_APUNTADOR_CIRCULO 1 -#define FORMA_APUNTADOR_RECTANGULAR 2 -#define FORMA_APUNTADOR_MANO 3 - -#define ERROR_DETECTANDO_MARCADORES 4 -#define ERROR_CALCULANDO_MATRIZ_TRANSFORMACION 5 -#define ERROR_NINGUN_MARCADOR_DETECTADO 6 -#define ERROR_IMAGEN_NULL 7 -#define DETECCION_CORRECTA 8 - -#define MASCARA_APLICADA 9 -#define MASCARA_NO_APLICADA 10 - -#define TIPO_MASCARA_BINARIA 11 -#define TIPO_MASCARA_ATENUANTE 12 - -#define ERROR_TOMAR_MUESTRA_FORMA_NO_IMPLEMENTADA 13 -#define ERROR_TOMAR_MUESTRA_OK 14 - - -typedef struct { - ARUint8 *dataPtr; /*Imagen RBG*/ - ARMultiMarkerInfoT *config;/*Estructura donde se almacena la informacion de configuracion de los marcadores y las matrices de transformacion*/ - ARMarkerInfo *marker_info; /*Estructura donde se guarda la informacion de los marcadores detectados*/ - ARCoordMarcador *coordenadas_marcadores; /*Arreglo de tamano data->config->marker_num con las posiciones tanto de los marcadores detectados como los no detectados*/ - int marker_num; /*Cantidad de marcadores detectados*/ - int thresh; /*threshold que usa el algoritmo de deteccion de marcadores de artookit*/ - int usarAlgoritmoLite; /*Indica si usar el algoritmo lite (mas rapido) o el algortimo no lite (mas lento pero mas preciso)*/ - int xsize,ysize; - char *cparam_name; - ARParam cparam; -}ArtoolkitData; - - -typedef struct { - int threshCalculado; //Threshold resultado - double* cf; //Promedio de cf (confidence value) para cada marcador usando threshCalculado. - //si cf[i]==-1 entonces no es posible detectar el marcador i -}ARMultiCalibracionData; - -void initPropiedadesCalibracion(int veces_por_marcador,PropiedadesCalibracion *propiedades,ResultadosCalibracion *resultados, int cant_marcadores, int metodo,int debug); - -void obtenerCoordenadasIdealesMarcadorNoDetectado(double markerToCameraMatrix[3][4],ARMultiEachMarkerInfoT marker,double hXi_hYi[3][4],double vertex[4][2]); - -void dibujarPuntosMarcadorNoDetectado(double Xi, double Yi,double vertex[4][2]); - -void dibujarLimitesPantalla(int xsize, int ysize); - -void dibujarMiniMarcador(double xCenter, double yCenter, double vertex[4][2], int detectado); - -void draw( double trans1[3][4], double trans2[3][4], int mode ); - -/* - * Devuelve los extremos opuestos del cuadrado defindo por puntos del parametro vertex. - * - * --------> x - * | v0 v1 minimo = v0 ( v0.x + v0.y es la menor de las sumas) - * | maximo = v2 ( v2.x + v2.y es la mayor de las sumas) - * | v3 v2 - * y\/ - */ -void calcularPuntoOrigen(double vertices[4][2],int* resultado ); - -int leerConfiguracionElementos(const char* archivoConfiguracion, Elemento* elementos, int MAX_ELEMENTOS, char * clickSound, char *errorSound); - -int leerConfiguracionCalibracion(const char* archivoConfiguracion, int cantMarcadores, char** imagenes); -void imprimirPropiedadesElementos(Elemento* elementos,int cantidadElementos); - -/*Iniciliza el historico. En todas las posiciones setea valorInicial*/ -void initHistorico(Historico *historico, int cantHistorico,int valorInicial); -/*Registra la colisino del marcador en el historico*/ -int registrarColision(int idMarcador, Historico *historico); - - - -//Calcula el promedio de los elementos. largo indica el largo del arreglo elementos -//double calcularPromedio(double* elementos,int largo); - -//double calcularPromedio(int* elementos,int largo); - -void procesarDatosCalibracion(PropiedadesCalibracion *propiedades,ResultadosCalibracion *resultados, int cantidad_marcadores); - -void guardarDatosCalibracion(ResultadosCalibracion *resultados,const char* nombreArchivo,int cantidad_marcadores); -/** - * busca el apuntador en toda la imagen - * */ -int detectarApuntador(ARUint8 *dataPtr,int invert,int minH,int maxH,int minS, int maxS,int minB, int maxB, - int area_min, int area_max, int max_apuntadores, CoordApuntador *apuntadores); - - - - - -ARMultiCalibracionData* arCalibrarThresholdMultiMarker(ArtoolkitData* artoolkitData,int intervaloDescanso, int iteraciones,int imprimirDebug); - -/*Se llama cuando el programa finaliza - * Detiene la captura de video y finaliza SDL*/ -void cleanupAll(void); - - -void setBrillo(int brillo, char * device); -void setAutoWhiteBalance(int habilitado,char * device); -void setAutoGain(int habilitado,char * device); -void setHorizontalFlip(int habilitado,char * device); - - -/*------------- ARTOOLKIT Y CALIBRACION AUTOMATICA -------------*/ - - -/*Devuelve la informacion de todos los marcadores - * Tanto los marcadores que no figuran en la estructura de dectados pero estan como visible o aquellos - * que directamente estan como no visibles tendran su area y cf en -1 */ -int detectarYCalcularPosicionTodosMultiMarkers(ArtoolkitData* data); - -void desplegarImagen(ArtoolkitData* data); -void desplegarImagenLite(ArtoolkitData* data); - -void capturarImagenAR(ArtoolkitData* data); - -/*Inicializa el histograma en cero - * Inicializa los resultados en los rangos maximos (H:0-360,S:0-100,V:0-100) - * Registra la forma que se utilizara para detectar el apuntador (circulo, rectangulo, mano) - * */ -void initPropiedadesCalibracionSoloApuntador(int cantidad_de_muestras,int forma,ArtoolkitData* data, PropiedadesCalibracion *propiedades, - RangosColorApuntador rangos_escala,int h_bins, int s_bins, int v_bins,int debug); - - -/*A partir de los marcadores detectados selecciona uno y aplica la mascara segun la forma seleccionada -Como resultado se deja en data->dataPtr la imagen con la mascara aplicada -En data se debe encontrar el centro y los vertices del marcador de identificador idMarcador*/ -int aplicarNuevaMascaraCalibrador(PropiedadesCalibracion* propiedades,ArtoolkitData* data,int idMarcador,int tipoMascara); - -/*Solamente aplica una mascara previamente calculada por la funcion aplicarNuevaMascaraCalibrador - * si antes no se llama al menos una vez a aplicarNuevaMascaraCalibrador entonces no se aplicara la mascara*/ -int aplicarMascaraCalibrador(PropiedadesCalibracion* propiedades,ArtoolkitData* data,int tipoMascara); - -/*Calcula el histograma filtrado por la mascara lo acumula al histograma calculado con las muestras -anteriores*/ -int tomarMuestraApuntador(PropiedadesCalibracion *propiedades,ArtoolkitData* data); - -int calcularResultadosCalibracionApuntador(PropiedadesCalibracion *propiedades,ArtoolkitData* data, int factorThreshH,int minPorcentajeRuido); - -/** - * recibe un boleano que indica si se desea mostrar la imagen en modo debug - */ -void mostrarImagenDebugAR(int debug); - -/*Inicializacion de artoolkit - * Si se quiere leer un archivo de configuracion para multi pattern entonces config_name debe contener la ruta del archivo, sino debe ser NULL - * */ -void initAR( ArtoolkitData* data ,char * config_name,char *vconf,int usarAlgoritmoRapido,double zoom); - - -void cleanupAR(void); - -#endif /* UTILIDADES_H_ */ |