Transformaciones del histograma. Otra transformación habitual es la ecualización del histograma (del latín aequalis = igual). Ecualización del histograma: es una transformación definida de forma que el histograma resultante se reparte uniformemente en todo el rango de grises. (Gp:) 0 (Gp:) 255 (Gp:) 127
(Gp:) 0 (Gp:) 255 (Gp:) 127
0 255 128 64 192 0 255 128 64 192 ¿? En este caso se usa una función escalonada:f: array [0..255] de byte +
Transformaciones del histograma. ¿Cómo definir f para conseguir la ecualización? Idea: suponer que a la salida hay 5 niveles de gris. (Gp:) 0 (Gp:) 255 (Gp:) 127
0 255 128 64 192 (Gp:) 0 (Gp:) 4 (Gp:) 2 (Gp:) 1 (Gp:) 3
20% 20% 20% 20% 20% para todo píxel (x,y) de R hacer R(x,y):= f[A(x,y)] (Gp:) 0 (Gp:) 4 (Gp:) 2 (Gp:) 1 (Gp:) 3
Transformaciones del histograma. Algoritmo. Cálculo de la función de ecualización del histograma. Entrada. Histograma: array [0,…,255] de entero np: entero (número total de píxeles = mx*my) Salida. f: array [0,…,255] de byte
Algoritmo: f[0]:= 0 acumulado:= Histograma[0] para i:= 1, …, 254 hacer f[i]:= acumulado*255/np acumulado:= acumulado + Histograma[i] finpara f[255]:= 255 La función de ecualización es la integral del histograma, escalada por el factor 255/np.
Transformaciones del histograma. Imagen de entrada (A) Imagen ecualizada (R) Histograma de A Histograma de R Función f +
Transformaciones del histograma. Ejemplos. Ecualización del histograma. Cuidado, en algunos casos los resultados pueden ser artificiosos. Cada canal (R,G,B) es ecualizado por separado
Transformaciones del histograma. Umbralización de imágenes. En algunas aplicaciones puede ser interesante convertir la imagen en binaria, o recortar cierto rango de valores. Las funciones tienen las siguientes formas: 0 255 128 64 192 (Gp:) 0 (Gp:) 255 (Gp:) 128 (Gp:) 64 (Gp:) 192
Valor de entrada Valor de salida Umbralizar la imagen con valor cte. 0 255 128 64 192 (Gp:) 0 (Gp:) 255 (Gp:) 128 (Gp:) 64 (Gp:) 192
Valor de entrada Cortar un rango y mantener el resto 0 255 128 64 192 (Gp:) 0 (Gp:) 255 (Gp:) 128 (Gp:) 64 (Gp:) 192
Valor de entrada Seleccionar un rango Umbral Umbral inferior Umbral superior +
Transformaciones del histograma. Las funciones serán del estilo: f(v):= si v > umbral1 entonces g(v) sino h(v) Transformación de binarización (saturar a 0 ó 255).f(v):= si v < umbral entonces 0 sino 255 Ejemplo 1. La binarización se suele aplicar en OCR. Imagen de entrada (256 grises) Umbral = 160 Umbral = 215
Transformaciones del histograma. Imagen de entrada Umbralizar, u = 42 Umbralizar, u = 180 Cortar rango (192, 255) La separación del objeto del fondo se llama segmentación. La umbralización se puede usar para segmentar… … aunque por sí sola no suele funcionar muy bien. Ejemplo 2. Segmentación de objetos.
Transformaciones del histograma. Conclusiones: Una transformación elemental se puede ver desde distintas perspectivas: Como una función unidimensional: f: N ? N Como una curva tonal. Como una modificación del histograma. La característica fundamental es que cada píxel se trata independientemente de los demás. Los histogramas son útiles para encontrar la transformación adecuada. En imágenes RGB, aplicamos la misma operación a los 3 canales para que se mantenga el color.
Página anterior | Volver al principio del trabajo | Página siguiente |