Está en la página 1de 2

Visin

Computacional
Adrin Garca Betancourt (A01087680)

Tarea 2: Ecualizacin de imgenes

31 de enero de 2014


De izquierda a derecha: imagen original, imagen con ecualizacin uniforme,
imagen con ecualizacin exponencial.


La imagen original consiste en una fotografa en escala de grises, en formato PGM.
Mediante programacin en C, se aplic una ecualizacin uniforme y una ecualizacin
exponencial. A continuacin se lista el cdigo fundamental que realiza el proceso de
ecualizacin.

Para ecualizacin uniforme:

double pixels = rows * columns;
double cumulative[255] = {0.0};
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
unsigned char val = img[i][j];
cumulative[val]++;
}
}
for (int i = 1; i < 255; i++) {
cumulative[i] += cumulative[i - 1];
}
array2d<unsigned char> eclzImg(rows, columns);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
unsigned char val = img[i][j];
eclzImg[i][j] = floor(cumulative[val] / pixels * 255.0);
}
}

El cdigo itera a travs de cada pixel de la imagen para obtener la funcin de


probabilidad acumulada de cada tono de gris. Despus itera nuevamente en cada
! ! !!"#
pixel para aplicar la transformacin dada por la frmula = !"!!"# 255 donde
() representa la funcin de probabilidad acumulada, el total de pixeles de la
imagen (renglones por columnas), y es el mnimo valor de tono de gris
encontrado en la imagen.

Para ecualizacin exponencial:

double alpha = 0.011;
array2d<unsigned char> expEclzImg(rows, columns);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
unsigned char val = img[i][j];
expEclzImg[i][j] = floor(-(1.0 / alpha) * log(1.0 cumulative[val] / pixels));
}
}

En este caso el cdigo itera a travs de cada pixel de la imagen aplicando la


!
! !
transformacin exponencial dada por la ecuacin = ! ln (1 !" ). El valor
de alpha se estableci en 0.011 por su buen desempeo.

También podría gustarte