Manipulación del contraste de una imágen monocromática por transformación exponencial (Python OpenCV)
Transformación exponencial opencv y Python2.7
Python2.7 y OpenCV
Transformación Exponencial con OpenCV y Python2.7
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
Manipulación del contraste de una imágen monocromática por transformación exponencial (Python OpenCV)
1. Manipulación del contrastre de una imágen monocromática por transformación
exponencial
Iván Luis Jiménez
Universidad Autónoma de Guerrero
Facultad de Ingeniería
ivan_luisj@hotmail.com
Resumen
Se aplica el método de transformación exponencial para
mejorar el contraste de una imágen, en otras palabras,
distribuir los niveles de gris. Se muesta también el
histograma de la imágen original y tanto de la imágen
de salida (imágen que se le aplicó la transformación
exponencial), para que de ésta manera se pueda
determinar el rango de grises que mas tiene la imágen.
Se explican los valores de entrada que necesita la
ecuación para lograr la tranformación.
Palabras clave: contraste, histograma, transformación
exponencial.
1. Introducción
Aplicaremos el método por transformación
exponencial a una imágen monocromática que tiene
pocos niveles de grises altos (blancos). Mostraremos la
imagen original y la imágen ya una vez aplicada la
función exponencial. También para ambos casos
obtendremos su histograma para comparar su dispersión
de tonos de gris de una y otra, y de ésta manera entender
gráficamente que efecto tiene manipular el contraste de
una imágen monocromática.
El objetivo de mostrar el histograma de ambas
imágenes, tanto de entrada como de salida, es
imaginarnos la imágen, aún sin verla.
2. Desarrollo
Para lograr manipular el contraste de la imágen o
mapa de bits (Ver Imágen 1) usaremos una Ecuación
Exponencial (Ver Ecuación 1) que nos ayude a lograr
éste próposito. Éste tipo de método está basado en el
dominio espacial y haciendo operaciones punto a punto.
=
1
Ecuación 1. Representación algebraica de
manipulación del contraste.
En la “Ecuación 1. Representación algebraica de
manipulación del contraste”, tenemos que:
→ imágen de salida con contraste modificado
→ constante (debe ser positiva)
→ nivel de gris ([0:255]) de la imágen original
→ exponente (debe ser positivo)
Al variar n en un rango menor a uno tendremos una
imágen con aumento del contraste en zonas oscuras. Si n
es mayor a uno tendremos un aumento del contraste en
zonas claras. Si n es igual a uno el contraste es el mismo
que en la imágen original, es decir, no tiene efecto, al
menos que C sea diferente de 1.
C está en función de n. Si n es negativo la imágen
mejora su contraste pero “invierte” los colores, es decir,
los tonos mas altos se cambian a bajos y viciversa (Ver
Imagen 3).
Teniendo una imagen (ver Imágen 1) de entrada
aplicaremos la Fórmula 1 (ver Ecuación 1) para
aumentar su contraste.
2. Imágen 1. Imágen de entrada con contraste bajo
La imágen de entrada tiene el contraste bajo, ésto
quier decir que tiene pocos niveles de de gris. Si
obtenemos el nivel de gris de cada pixel y lo llevamos a
un histograma (Ver Figura 1) veremos como están
distribuidos los niveles de gris.
Figura 1. La fgura muestra la distribución de niveles de
gris en la imágen de entrada
Por tanto, nuestra tarea es aumentar los niveles de
cada pixel de la imágen, en función de las variables e
imagen de entrada, que se describen en la Ecuación 1
(Ver Ecuación 1).
Bien sabemos que una imágen es una “matriz de
pixeles”, donde cada pixel tiene un nivel de gris (en el
caso de imágen monocromática) que va de [0:255]. Si
tenemos una imágen de 359x359 pixeles, el total es de
128, 881 pixeles, que és el caso de la imágen que se
describe en éste reporte. Por tanto, tendrémos que
recorrer cada pixel de la imágen, y a cada pixel aplicarle
la Fórmula 1 (Ver Fórmula 1) descrita con anterioridad.
El pixel ya modificado podemos guardarlo en otra
“matriz de bits” y en la misma posición que en la de la
matriz de entrada, para que de ésta manera tengamos una
imágen de salida diferente, y no sobreescribamos la
imágen original.
Utilizando un lenguaje de programación podemos
acceder a cada pixel de la imágen y poder procesarlos
uno a uno.
Seguiremos el siguiente algoritmo para procesar cada
pixel de la imágen.
leer imágen original → f[x,y]
obtener filas y columnas de la imágen leída → x,y
crear matriz con el tamaño de la imágen leída →
g[x,y]
n= 1.20
C = 1.42
recorrer desde 0 hasta x
recorrer desde 0 hasta y
g[x,y] = C * (F[x,y] exp n)
mostrar o guardar imágen generada
Vemos que el algoritmo es sencillo.
La imágen de salida generada, ya aplicada la
transformación exponencial es como lo muestra la
Imágen 2 (Ver Imágen 2)
Imágen 2. Imágen de salida que se le aplicó
tranformación exponencial con n = 1.20 y C = 1.42
3. La imágen obtenida (Ver Imágen 2) contiene mayor
distribución de grises por tanto ya podemos imaginarnos
su histograma (Ver Figura 2).
Figura 2. La fgura muestra la distribución de niveles de
gris en la imágen de salida.
Si aumentamos el exponente el histograma se moverá
más a la derecha.
Podemos jugar con los valores de n y C para observar
los cambios.
En caso de que el exponente sea negativo se obtiene
Ver Imágen 3
Imágen 3. Imágen de salida que se le aplicó
tranformación exponencial con n = -1.01 y C = 68729.9
3. Conclusiones
EL proceso de transformación exponencial aplicado a
una imágen monocrómatica (escala de grises) tiene como
objetivo mejorar el contraste de la imágen. Si
aumentamos el exponente (mayor a 1), mayor será el
contraste, al contrario si acercamos el exponente a 1,
menor será el contraste.
Una imágen con buen contraste tiene “equilibrados”
los niveles de gris.
Referencias
[1]
http://ludifisica.medellin.unal.edu.co/recursos/analisis_im
agenes_sistemas/analisis_senales_sistemas/cd_curso/tutori
al_orquidea/tutorial_orquidea_nov_02_2006.pdf fecha de
consulta 23 de octube del 2017.
[2]
https://www.cs.buap.mx/~iolmos/pdi/Sesion4_Operacione
s_Punto.pdf, fecha de consulta 23 de octubre del 2017