Cambios del domingo: cambio en la funcion crossing number, optimizacion de spursRemov...
[trabajo-pid:trabajo-pid.git] / PID_trabajo / auxiliar.h
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <list>
5 #include <math.h>
6 #include "stdafx.h"
7 #include <hash_map>
8
9 using namespace System::Drawing;
10 using namespace std;
11 using namespace stdext;
12
13 typedef struct {
14         int x;
15         int y;
16 } coordenada;
17
18 /* Estructura para guardar la información de una minucia (x, y y su número de crossing) */
19 typedef struct {
20         int x;
21         int y;
22         short cn;
23 } minucia;
24
25 // Devuelve la minucia si encuentra una cuyas coodenadas X e Y sean iguales
26 // a las X e Y de entrada. En otro caso, devuelve una minucia cuyo x vale -1
27 minucia buscaMinucia(list<minucia>*, int x, int y);
28
29 //Preprocesado
30 unsigned char HLStoEG(float h, float l, float s);
31 unsigned char** inicializarImagen(int width, int height);
32 unsigned char** generarBN(Bitmap ^bp, int umbral);
33 void hacerEsqueleto(unsigned char **imagen, int x, int y);
34 void FastThin(unsigned char **list, int x, int y);
35 void Rosenfeld8(unsigned char** list0, int Dx, int Dy);
36
37 //Extracción de minucias
38 unsigned char** crossingNumbers(unsigned char **imagen, int width, int height, list<minucia>*);
39
40 //Postprocesado
41
42 unsigned int**  etiquetado(unsigned char** In, int filas, int columnas);
43 void etiqContigua(unsigned char** In, unsigned int** Out, int filas, int columnas, int x, int y, unsigned int etiqueta);
44
45 void spursRemoval(unsigned char** In, int filas, int columnas, int distancia, list<coordenada>*);
46
47 bool spursCondicion(unsigned int** In, int filas, int columnas, int i1, int j1, int i2, int j2);