-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimagen.h
196 lines (171 loc) · 5.61 KB
/
imagen.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include "imagenES.h"
#include "pattern.h"
#include "PatternList.h"
#include <iostream>
#include <stdio.h>
#include <utility>
/** \mainpage IMAGEN
*
* Esta Clase es para la practica de ED 2º Curso de Ing. Informatica
*
* Permite usar varias funciones para imagenes a color y en blanco/negro del tipo .ppm y .pgm.
* Ademas usa funiones de la libreria ImagenES.h par poder cargar imagnenes mas facilmente.
*
* \image html clases.png
*
* CLASE IMAGEN : Image
*/
/**
* @file imagen.h
* @author Carlos Lopez Martinez (clm2001@correo.ugr.es)
* @brief IMAGEN.H
* @version 1.0
* @date 2020-10-29
*
* @copyright Copyright (c) 2020
*
* Permite usar varias funciones para imagenes a color y en blanco/negro del tipo .ppm y .pgm.
* Ademas usa funiones de la libreria ImagenES.h par poder cargar imagnenes mas facilmente.
*
*/
#ifndef IMAGEN_H
#define IMAGEN_H
class Image{
private:
long int npixels; /*!< Cantidad de pixeles que tiene la imagen*/
int cols; /*!< Cantidad de columnas que tiene la imagen*/
int fils; /*!< Cantidad de filas que tiene la imagen */
bool imagewb; /*!< PGM : TRUE , PPM : FALSE*/
unsigned char *vector; /*!< Imagen*/
public:
/**
* @brief Constructor de la clase Imagen con 4 argumentos (Columnas,filas,Imagen,tipo)
*
* @param _cols Cantidad de Columnas de la imagen
* @param _fils Cantidad de Filas de la imagen
* @param _vector Puntero a Imagen (Reserva dinamica)
* @param _type Tipo de Imagen PGM : TRUE PPM : FALSE
*/
Image(int _cols,int _fils,const unsigned char *_vector,bool _type);
/**
* @brief Constructor de la clase Imagen con el nombre del archivo (origen)
*
* @param origen nombre del archivo (origen)
*/
Image(char* origen);
/**
* @brief Destroy the Image object
*
*/
~Image();
/**
* @brief Devuelve el valor del pixel
*
* @param num Valor para el acceso al pixel
* @return Devuleve el valor de un pixel indicado en la imagen
* @see Image
*/
unsigned char getValue(long int num);
/**
* @brief Establece el valor de un pixel individual
*
* @param num Valor para el acceso al pixel
* @param value Valor que se va a insertar en la imagen
* @see Image
*/
void setValue(long int num, unsigned char value);
/**
* @brief Cambia la imagen guardada en memoria por una nueva pasado por referencia
*
* @param _cols Cantidad de Columnas de la nueva imagen
* @param _fils Cantidad de Filas de la nueva imagen
* @param _vector Puntero a la nueva imagen de @a _fils x @a _cols pixeles
* @param _type El tipo de la imagen para reservar el espacio (TRUE / FALSE)
* @see Image
* @see imagewb
*/
void ReplaceImage(int _cols,int _fils,const unsigned char *_vector,bool _type);
/**
* @brief Devuelve la cantidad de filas de la imagen
*
* @return La cantidad de filas de la imagen
* @see Image
*/
int getFils();
/**
* @brief Devuelve la cantidad de columnas de la imagen
*
* @return La cantidad de columnas de la imagen
* @see Image
*/
int getCols();
/**
* @brief Devuelve la cantidad de pixeles de la imagen
*
* @return Cantidad de pixeles de la imagen
* @see Image
*/
long int getnpixels();
/**
* @brief La imagen
*
* @return Devuelve el puntero a la imagen
* @see Image
*/
unsigned char *getImage();
/**
* @brief Guarda la imagen en un destino
*
* @param destino Cadena de caracteres del destino de la imagen
*/
void Guardar(char* destino);
/**
* @brief Transforma una imagen a color a escala de Grises
*
* @warning Solo funciona con imagenes a color
* @details Usa la media aritmetica de cada pixel (R,G,B)/3 para dar como resultado un pixel
*/
void Gris();
/**
* @brief Saca por consola los porcentajes de color de la imagen
*
* @warning Solo funciona con imagenes a color
* @details Suma todos los valores de cada pixel multiplicados por su posicion para obtener un valor
*/
void Histograma();
/**
* @brief Aumenta de tamaño una imagen con un valor entero N
*
* @param multi Factor N de aumento de la imagen
* @details Para calcular la media de los puntos nuevos usaremos: \image html Formula_Escalar.png
*/
void Escalar(int multi);
/**
* @brief Crea el efecto de umbralizacion
*
* @param puntomedio El punto de inflexion valor de 0 a 255
* @warning Solo para imagenes en blanco y negro
* @details Lleva un punto al minimo o al maximo dependiendo si el valor del pixel esta por encima o por debajo del valor dado
*/
void Umbralizacion(int puntomedio);
/**
* @brief Estira los pixeles para el rango dinamico de la imagen sea completo de 0 a 255
*
* @warning Solo para imagenes en blanco y negro
* @details Coloca el pixel mas pequeño de la imagen en el 0 y el mayor en 255 y el resto los reparte de manera regular de 0 a 255
*/
void Estiramiento();
/**
* @brief Decrementa el tamaño de la imagen por factor N
*
* @param multi Factor N
* @details Para calcular la media de los N puntos por seccion usaremos: \image html Formula_Icono.png
*/
void Icono(int multi);
void Display();
void clear();
int toVector(int _x, int _y,int _channel);
std::vector<std::pair<int,int>> SeachPattern(Pattern _pattern);
void SeachNPattern(std::vector<Pattern> _patterns, Image &_image);
};
#endif