Está en la página 1de 8

Visin Computacional

Adrin Garca Betancourt (A01087680) 24 de enero de 2014




Tarea 1: Procesamiento de Imgenes Fundamentos

El objetivo de este reporte es presentar algunas transformaciones simples que se
pueden hacer en imgenes, as como el cdigo que es capaz de aplicar dichas
transformaciones. A continuacin se presenta la imagen original sobre la cual se
realizaron las transformaciones.



Para leer la imagen en lenguaje C, la librera Dlib contiene utileras que ayudan con
este procedimiento; las principales utileras son array2d y rgb_pixel, para el manejo
de pixeles de color en una matriz.

fscanf(img_file, "P6 %d %d 255", &rows, &columns);
array2d<rgb_pixel> img(rows, columns);

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
unsigned char r;
unsigned char g;
unsigned char b;

fscanf(img_file, "%c%c%c", &r, &g, &b);
rgb_pixel pixel(r, g, b);
img[i][j] = pixel;
}
}


Transformacin a escala de grises



unsigned char grayImg[rows][columns];

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
rgb_pixel pixel = img[i][j];

int r = pixel.red;
int g = pixel.green;
int b = pixel.blue;

double gray = (r + g + b)/3.0;
grayImg[i][j] = floor(gray);
}
}






Transformacin aplicando un umbral con valor de 150



unsigned char thresImg[rows][columns];

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (grayImg[i][j] >= 150) {
thresImg[i][j] = 255;
} else {
thresImg[i][j] = 0;
}
}
}















Transformacin aplicando la raz cuadrada en cada pixel



//image normalization
double normImg[rows][columns];

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
normImg[i][j] = grayImg[i][j]/255.0;
}
}
//

//image with less contrast square root
unsigned char sqrtImg[rows][columns];

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
sqrtImg[i][j] = sqrt(normImg[i][j])*255;
}
}
//







Transformacin aplicando la potencia al cubo en cada pixel



unsigned char cubeImg[rows][columns];

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
cubeImg[i][j] = pow(normImg[i][j], 3)*255;
}
}



















Transformacin aplicando la mscara de Sobel en el eje de las x



array2d<short> horzImg;
array2d<short> vertImg;

sobel_edge_detector(img, horzImg, vertImg);






















Transformacin aplicando la mscara de Sobel en el eje de las y

También podría gustarte