0% encontró este documento útil (0 votos)
36 vistas75 páginas

Imágenes A Color

...

Cargado por

jotp72178
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas75 páginas

Imágenes A Color

...

Cargado por

jotp72178
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

IMÁGENES A COLOR

Las imágenes a color tienen una gran importancia en la vida diaria y en la


representación de imágenes en el mundo digital, tales como la televisión, la fotografía o bien
la impresión. La percepción del color es un impactante, pero a la vez complicado fenómeno
sobre el cual se han encargado desde hace décadas psicólogos, filósofos, científicos y
artistas. Sin embargo, en este capítulo se restringirá a las relaciones técnicas que tratan con
imágenes digitales que son representadas en color. El punto central de este capítulo es el
tratamiento de las técnicas de programación existentes para el tratamiento y conversión de
imágenes a color

11.1. IMÁGENES RGB


.

La mayoría de los programas para el procesamiento de imágenes y de representación


gráfica utilizan este modelo para la representación interna del color.

El modelo RGB es un formato de color aditivo, lo que significa que la combinación de


colores se basa en la adición de los componentes individuales que tiene como base el negro.
Este modelo tiene su origen en la tecnología de la televisión y se puede considerar como la
representación fundamental del color en las computadoras, cámaras digitales y escáneres,
así como en el almacenamiento de imágenes.

El modelo de color RGB, se basa en la combinación de los colores primarios rojo (R),
verde (G) y azul (B), pueden imaginarse este proceso como la intersección de 3 rayos de luz
de colores rojo, verde y azul, los cuales son dirigen hacia una hoja de papel blanca, cuya
intensidad puede ser controlada.

La intensidad de los diferentes componentes de color determina tanto el tono como


la iluminación del color resultante. El blanco y el gris o tonalidades de gris también se
producen por la combinación de los tres colores primarios RGB.

El modelo RGB forma un cubo, cuyos ejes de coordenadas corresponden a los 3


colores primarios R, G y B. Los valores RGB son positivos y sus valores se encuentran
restringidos al intervalo de [0, Vmax], en donde normalmente Vmax = 255.

Cada posible color C, corresponde a un punto dentro del cubo RGB con los
componentes:

𝑪𝒊 = (𝑹𝒊 , 𝑮𝒊 , 𝑩𝒊 ) (11.1)

Donde 0 ≤ 𝑹𝒊 , 𝑮𝒊 , 𝑩𝒊 ≤ Vmax. Normalmente los intervalos de valores de los


componentes de color se normalizan al intervalo [0,1], de tal forma que el espacio de colores
quedaría representado por el cubo unitario mostrado en la figura 11.1. El punto N = (0, 0, 0)
corresponde al negro, W = (1, 1, 1) corresponde al blanco y todos los puntos que se
encuentren en la línea entre S y W son las tonalidades a escala de grises donde las
componentes R, G y B son iguales.
Figura 11.1 Representación del espacio de color RGB como cubo unitario. Los colores primarios

rojo (R), verde (G) y azul (B) constituyen los ejes coordenados. Los colores puros rojo (R), verde (G)
y azul (B), cyan (C), magenta (M) y amarillo (A) se encuentran ubicados en las esquinas del cubo de
color. Todos los valores de intensidad de grises, tal como (K) se ubican sobre la diagonal trazada de
(N) a (W)

La figura 11.2 muestra una imagen a color, la cual será utilizada como imagen de
prueba en varias ocasiones en el capítulo. De igual manera se exponen en la figura 11.2 los
respectivos componentes RGB de la imagen.

RGB es un modelo de color muy sencillo y en la mayoría de los casos suficiente


para el procesamiento de color o cuando se es necesario transformar a un modelo de color
diferente, tal y como será visto más adelante. Por ahora no se tratarán problemas tales
como: la correspondencia entre un píxel-RGB y su color verdadero, o bien el significado de
la representación física de los colores primarios rojo, verde o azul. Más adelante se cubrirán
detalles interesantes que relacionan el color y el espacio de color CIE.

Desde el punto de vista del programador una imagen a color RGB es un arreglo de
tamaño 𝑀 × 𝑁 × 3, donde 𝑀 × 𝑁 define las dimensiones de los planos, mientras que 3 es la
dimensión que define a cada uno de ellos R, G y B. Según lo anterior, una imagen RGB
puede considerarse como un arreglo de 3 imágenes a escala de grises.
11.1.1. COMPOSICIÓN DE LAS IMÁGENES A COLOR
Las imágenes a color son caracterizadas al igual que las imágenes a escala de grises,
como matrices de píxeles, donde pueden ser utilizados diferentes tipos de modelos, para
realizar la composición de los diferentes componentes de color que en conjunto forman el
color total. Pueden distinguirse dos tipos de imágenes a color, las llamadas imágenes de
color completo y las llamadas indexadas o referidas a paletas de color.

Las imágenes de color completo utilizan completamente el espacio de color, es decir


para su construcción se utiliza todo el espacio definido para el modelo del color para la
representación de la imagen. Por otra parte, las imágenes de color indexadas utilizan en la
representación de la imagen un número reducido de colores.

Figura 11.2 Imagen de color en el modelo RGB y sus respectivos planos R, Gy B. (a) Imagen RGB,
(b) plano R, (c) plano Gy (d) plano B. Del análisis de los planos sale a relucir que los pimientos con
un alto contenido de rojo adquieren valores grandes (brillantes) en el plano R.

11.1.1.1. Imágenes de color completo

Un pixel en una imagen de color completo puede asumir cualquier valor del espacio
definido en el modelo de color referido. Las imágenes de color completo son utilizadas
normalmente en aquellos casos donde la imagen contenga una gran cantidad de colores
definidos por el modelo de color en cuestión, tales como fotografías. En la composición de la
imagen a color pueden distinguirse dos tipos de asociaciones, la composición de los planos
y la composición del empaquetado.
Por composición de los planos se entiende la separación de los diferentes arreglos con la
misma dimensión que constituyen a la imagen. Una imagen de color

I = (IR, IG, IB) (11.2)

Una imagen de color puede considerarse como un grupo relacionado de imágenes de


intensidad IR (x, y), IG (x, y), IB (x, y) (véase figura 11.3) donde el valor RGB de un pixel de
la imagen de color I se obtiene accediendo a cada uno de los arreglos que constituyen la
combinación en la forma:

(11.3)

Figura 11.3 Composición de una imagen a color RGB. Los componentes de color o planos se
encuentran en arreglos separados de la misma dimensión
La composición del empaquetado se refiere a la manera en la que los Componentes
de color representan a un pixel individual y la manera en que este es almacenado en la
estructura (véase figura 11.4). Esto es:

I (x, y) = (R, G, B) (11.4)

Los valores de los componentes de color RGB pueden ser obtenidos de una imagen
empaquetada en la posición (x, y), accediendo a los componentes individuales de los píxeles
de color, como:

(11.5)

Donde R (I (x, y)), G (I (x, y)) y B (I (x, y)), representan las funciones de acceso a los
planos de color.

Figura 11.4 Imagen de color RGB y su composición de empaquetado. Los tres componentes de color
R, G y B se encapsulan en un solo arreglo.
11.1.2. IMÁGENES INDEXADAS

Una imagen indexada permite contener un número restringido de colores, haciendo


atractivo este tipo de imagen para la representación de gráficas o imágenes del tipo GIF o
PNG, las cuales se caracterizan por ser ligeras desde el punto de vista del almacenamiento.
Una imagen indexada tiene dos componentes: una matriz de datos y un mapa o paleta de
colores. El mapa o paleta de colores es una matriz de dimensiones n×3. La longitud n de la
paleta es igual al número de colores que la definen, la cual se referirá a los colores que se
usen para la definición de las imágenes. Mientras que cada columna específica el valor de
los componentes del color RGB que en ese renglón se define.

Considerando lo anterior una imagen indexada usa un mapeo directo de los píxeles
de intensidad contenidos en la matriz de datos a los valores contenidos por la paleta de color.
El color de cada píxel es determinado por el valor entero de la matriz de datos, que en realidad
será el índice que apunta al mapa de colores.

Una imagen indexada se almacena utilizando la matriz de datos y la paleta que define
sus colores contenidos, esto es importante ya que los valores contenidos en la matriz de datos
no tienen significación alguna en ausencia de la paleta de colores. La figura 11.5 muestra la
relación existente entre la matriz de datos y la paleta de colores.

Figura 11.5 Relación existente entre la matriz de datos y el mapa de colores para la formación de
imágenes de color indexadas.
11.2. HISTOGRAMA DE UNA IMAGEN RGB
Los histogramas son distribuciones que describen la frecuencia con la que se
presentan los valores contenidos en la imagen. Cada valor del histograma es definido como:

h(i) = el número de píxeles de la imagen con el valor definido i

para todos los valores 0 ≤ i < K, siendo K el valor máximo permisible para describir
los datos presentes en la imagen. Esto expresado formalmente:

h(i) = card {(u, v) |I (u, v) = i} 11

ℎ(0) es entonces el número de píxeles con el valor 0, ℎ(1) el número de píxeles que
tienen el valor de 1, sucesivamente mientras que finalmente ℎ(255) representa el número de
píxeles blancos (con el máximo valor de intensidad) de la imagen. Aunque el histograma de
una imagen a escala de grises considera todos los componentes de color es posible que no
puedan considerarse errores presentes en la imagen. Por ejemplo, es posible que el
histograma de luminosidad parezca adecuado a pesar de que alguno de los planos de color
tenga algún error. En las imágenes RGB el plano azul normalmente aporta muy poco a la
luminosidad total de la imagen a escala de grises calculada a partir de la imagen de color.

Los histogramas de cada plano dan también información adicional de la distribución


de color en la imagen. Bajo este enfoque cada plano de color es considerado como una
imagen a escala de grises independiente y es desplegada de igual manera. La imagen 11.6
muestra el histograma de luminosidad ℎ𝐿𝑢𝑚 y los histogramas de cada uno de los diferentes
planos de color ℎ𝑅 , ℎ𝐺 y ℎ𝐵 concatenados para una imagen RGB tipica.
La imagen 11.6 muestra el histograma de luminosidad hLum y los histogramas de cada uno de los
diferentes planos de color hR, hG y hB concatenados para una imagen RGB típica.

11.2.1. Histograma de imágenes RGB en MatLAB


Al analizar imágenes RGB resulta particularmente ventajoso poder desplegar el
contenido de color, caracterizado como la distribución de los datos contenidos en cada uno
de los diferentes planos R. Gy B. La forma tradicional de realizar esta tarea resultaría el
encontrar el histograma de cada uno de los planos, tal y como si se tratase de una imagen
de intensidad. Sin embargo, si bien este proceso permite averiguar características
importantes de la distribución de los colores, no es posible observar de manera adecuada
esta distribución de manera que puedan compararse los contenidos de los diferentes planos.
Teniendo esto en mente se propone el realizar una función que permita graficar en forma
adecuada el histograma de los diferentes planos de manera concatenada. El programa 11.1
muestra la configuración de esta función.
Programa 11.1 Muestra el programa en MatLab para Graficar el histogram de los planos R, G, y B
de forma concatenada

11.3. MODELOS DE COLOR Y


CONVERSIONES DE ESPACIO DE COLOR
El modelo de color RGB desde la perspectiva del programador resulta una sencilla
manera de representar los datos, la cual está totalmente orientada a la manera en como son
desplegados los colores en la computadora. Aunque el modelo RGB es muy sencillo, poco
considera la manera en cómo los colores son captados, además de ser altamente sensible a
los cambios de iluminación.

Debido a que características importantes del color tales como tonalidad, iluminación y
otras son definidas implícitamente en el modelo RGB, dificulta la lunsideración de estos
factores en imágenes que son especificadas en este modelo de color. Modelos alternativos
como por ejemplo HSV facilitan la caracterización de estas propiedades ya que en este
modelo características tales como la saturación, iluminación y tonalidad se encuentran
explícitamente como partes del modelo.

La figura 11.7 muestra como ejemplo la distribución de los colores de una imagen en
los modelos de color RGB y HSV. La descripción de sus relaciones, características comunes
y diferencias serán tratadas más adelante.

Figura 11.7 Distribuciones de color de una imagen en diferentes modelos de color. (a) Imagen
original, (b) distribución en el modelo RGB y (c) distribución en el modelo HSV.

11.3.1. Conversión de una imagen RGB a escala de grises

La conversión de una imagen RGB a escala de grises se realiza a través del cálculo
que resulta de considerar un equivalente E formado entre los valores contenidos en cada
plano de color que lo constituyen. En su forma más sencilla podría establecerse este
equivalente como el promedio de los valores de los tres componentes de color, tal que:

𝑹(𝒙,𝒚)+𝑮(𝒙,𝒚)+𝑩(𝒙,𝒚)
𝑬𝒆 (𝒙, 𝒚) = (11.6)
𝟑

La subjetiva iluminación, propia del modelo RGB, hace que imágenes con un valor
grande en la componente de rojo y/o verde tengan una apariencia obscura (en la imagen a
escala de grises convertida mediante 11.6). El efecto contrario sucede en aquellos píxeles
donde el contenido del plano azul es grande, mostrando en su versión a escala de grises una
apariencia más clara. Con el objetivo de solventar este problema se considera como una
mejor aproximación a 11.6 l calcular una combinación lineal de todos los planos, definida
como:
𝐸𝑙𝑖𝑚 (𝑥, 𝑦) = 𝑤𝑅 𝑅(𝑥, 𝑦) + 𝑤𝐺 𝐺(𝑥, 𝑦)𝑤𝐵 𝐵(𝑥, 𝑦) (11.7)

Donde wR, wG, y wB son los coeficientes que definen la transformación, los cuales
de acuerdo con el criterio utilizado en la TV para señales a color se consideran como:

wR = 0.299 wG = 0.587 wB = 0.114 (11.8)

Otra alternativa sugerida en ITU-BT.709 para la codificación digital de color considera:

wR = 0.2125 wG = 0.7154 wB = 0.072 (11.9)

Siendo formales la ecuación 11.6 puede ser considerada como un caso especial de la
ecuación 11.7.
Una consideración de importancia resulta la distorsión Gamma producida en las
señales de TV que afecta de manera no lineal haciendo que los valores mostrados en 11.8 y
11.9 no sean correctos. En numerosos trabajos este problema es tratado definiendo a los
pesos de la transformación lineal como:
wR = 0.309 wG = 0.609 wB = 0.082 (11.10)

11.3.2. Imágenes RGB sin color

En ocasiones resulta importante representar imágenes a escala de grises en formato


RGB, principalmente cuando quisiera resaltarse alguna región de intensidad con un color que
contraste e identifique. Para generar este tipo de imágenes el valor de escala de gris obtenido
(por empleo de alguno de los modelos enunciados a las ecuaciones 11.6 a 11.10) es asignado
a cada uno de los planos, de tal forma que:

R (x, y) = E (x, y)
G (x, y) = E (x, y) (11.11)
B (x, y) = E (x, y)

11.3.3. Reducción de saturación de una imagen a color

Para reducir la saturación de una imagen RGB se extrae la imagen a escala de grises
y se realiza una interpolación lineal a las diferencias existentes entre el plano de color y la
versión de intensidad, tal proceso puede ser expresado como:
(11.12)

Donde el factor Fac ∈ [0,1] controla la coloración obtenida. El aumento gradual de Fac
caracteriza la desaturación de la imagen a color. Un valor de Fac = 0 elimina cada coloración
y produce una imagen de intensidad, con un valor de Fac = 1, hace que permanezcan los
valores de los planos sin cambio. La figura 11.8 muestra ejemplos de imágenes de color a las
cuales se les redujo la saturación utilizando diferentes valores del factor Fac.
Figura 11.8 Reducción de saturación en imágenes a color. (a) Imagen original, (b) imagen con
Fac=0, (c) imagen con Fac = 0.2 y (d) imagen con Fac = 0.5

11.3.4. Modelo de color HSV y HSL

En el modelo de color HSV es representada la información del color a través de 3


componentes Tonalidad (Hue), Saturación (Saturation) y Valor (Value). Este modelo de color
también es conocido como HSB (B-Brillo, Brightness), y el cual es usado principalmente por
los productos Adobe. El modelo HSV tradicionalmente es representado a través de una
pirámide invertida (figura 11.9), donde el eje vertical representa al valor (V), la distancia
horizontal tomando como referencia el eje V corresponde a la saturación, mientras que el
ángulo que se establece tomando como punto de rotación el eje V define la tonalidad. El punto
que corresponde al negro en el modelo HSV se ubica en el pico de la pirámide invertida, el
punto que corresponde al blanco se encuentra localizado en la parte central de la base de la
pirámide. Los tres colores básicos rojo, verde y azul y sus respectivas combinaciones
amarillo, cyan y magenta se encuentran distribuidos en la base de la pirámide.
Figura 11.9 Modelo de color HSV. (a) Modelo de color y (b) base de la pirámide.

El modelo de color HSL (Tonalidad, luminancia y Saturación, "Hue", “Luminance",


"Saturation”) es muy similar al modelo HSV, inclusive idéntico en el valor de la Tonalidad
(Hue). Los parámetros de luminancia y saturación corresponden al eje vertical y al radio que
se establece entre el eje de luminancia y el valor del color en cuestión. A pesar de la similitud
de ambos modelos, la manera de calcular el valor de los parámetros es muy diferente (con
excepción de S). La representación de este modelo HSL que es común encontrar es la de la
doble pirámide (figura 11.10). Donde los puntos negro y blanco en este modelo se encuentran
ubicados en la parte baja y alta de ambas pirámides. Los colores básicos rojo, verde y azul,
así como sus combinaciones se encuentran ubicados en la base donde se juntan ambas
pirámides.
Figura 11.10 Modelo de color HSL. (a) Modelo HSL en perspectiva de arriba, (b) modelo HSL en
perspectiva frontal y (c) base de ambas pirámides del modelo HSL
11.3.5. Conversión de RGB a HSV
Para la conversión del modelo de color RGB a HSV se parte de los de los
valores de planos de color RGB los cuales típicamente se encuentran entre 0 y 255.
Los cálculos para la conversión utilizan el siguiente procedimiento.

Si se considera que:

(11.13)

Para el cálculo de S se tiene:

(11.14)

SI todos los componentes de color R, G y B tienen el mismo valor, se trata


entonces de un pixel a escala de grises. Considerando esto 𝐶𝑑𝑖𝑓 = 0 por lo que 𝑆 =
0, con esto el valor de la tonalidad es indeterminado.

Si se normalizan los valores de los planos de color tal que:

𝐶𝑚𝑎𝑥 −𝑅 𝐶𝑚𝑎𝑥 −𝐺 𝐶𝑚𝑎𝑥 −𝐵


𝑅′ = 𝐺′ = 𝐵′ = (11.15)
𝐶𝑑𝑖𝑓𝑓 𝐶𝑑𝑖𝑓𝑓 𝐶𝑑𝑖𝑓𝑓

Dependiendo de cuál de los planos de color presenta un mayor valor, puede calcularse una
variable auxiliar 𝐻′ tal que:

(11.16)
El valor resultante de 𝐻′ se encuentra en el intervalo de [-1 a 5], por lo cual será necesario
normalizar esta variable que auxiliarmente representa la tonalidad, para que su intervalo se
encuentre de 0 a 1. Para ello se aplica:

(11.17)

Se realizan cálculos para obtener los valores HSV a partir de los planos de color del modelo
RGB, con valores en el intervalo [0, 1]. Sería más natural considerar un intervalo para H que
especifique la rotación completa [0, 360°] en lugar de [0,1].

Este proceso convierte el cubo del modelo RGB en un cilindro de longitud 1 y radio 1. En esta
representación, todos los puntos están dentro del modelo geométrico. La transformación de
RGB a HSV es no lineal, donde el valor negro corresponde a toda la superficie de la base del
cilindro. La figura muestra los colores básicos y algunas tonalidades del rojo, que son más
fáciles de especificar en este modelo cilíndrico.

Figura 11.11 Modelo HSV convertido a partir del modelo RGB. El color negro corresponde a toda la
superficie de la base del cilindro, mientras que los colores básico R, G y B se encuentran distribuidos
en diferentes partes del perímetro superior del cilindro.
El punto blanco se encuentra en la parte superior del cilindro.
En la parte lateral del cilindro se representa al color rojo y diferentes tonalidades distribuidas a lo
largo del eje V

En la figura 11.12 se muestran los componentes HSV de una imagen representada a escala
de grises.
11.3.6. Conversión de HSV a RGB
Para el cálculo de los valores de los planos de color RGB partiendo de la
información de una imagen definida en el modelo de color HSV donde los valores de
los planos HSV presentan datos que se encuentran dentro del intervalo [0,1]. Para
realizar esta conversión se procede al cálculo de una variable auxiliar definiendo que:

𝐴′ = (6 ∙ 𝐻)𝑚𝑜𝑑 6 (11.18)

Esta expresión devuelve un valor que va de 0 a 6. Considerando que:

(11.19)
Figura 11.12 Planos HSV representados a escala de grises, (a) Imagen RGB, (b) plano H, (c) plano S
y (d) plano V

Se puede calcular a partir de los valores anteriores, los valores normalizados de los
planos R', G' y B', cuyos valores se encuentran dentro del intervalo [0, 1]. Los valores de estos
planos son dependientes de los valores c1, “V”, “x”, y “y” “z”, asumiendo sus respectivos
valores tal y como es definido:

(11.20)

El escalamiento necesario para convertir los valores de los planos normalizados al


máximo valor permisible para el tipo de dato normalmente utilizado N (el cual normalmente
es 255). Se realiza las siguientes operaciones:

(11.21)

11.3.7. Conversión de RGB a HLS


Para realizar la conversión del modelo RGB al definido por el HSV, el cálculo
de la componente H resulta el mismo que para el caso HSV, por lo que habrá de
utilizarse el mismo procedimiento dictado por las ecuaciones 11.13, 11.15, 11.16 y
11.17.

Los parámetros restantes S y L son calculados de la siguiente manera:

Para L,
𝐶𝑚𝑎𝑥 +𝐶𝑚𝑖𝑛
𝐿= (11.22)
2
Para S,

(11.23)

11.3.8. Conversión de HLS a RGB


Para la conversión del modelo HLS a RGB se parte del hecho que los valores
que definen a cada plano H, L o S se encuentran dentro del intervalo [0, 1]. Si L=0 o
bien L=1, entonces se simplifica el cálculo de las variables auxiliares que definen a los
diferentes planos de color R’, G’ y B’, tal que:

(11.24)

Si L no adquiere ninguno de estos dos valores, el cálculo para la determinación


de los respectivos planos de color RGB se realiza en base al siguiente proceso. Si se
considera que:

(11.25)
Figura 11.13 Planos HSL representados a escala de grises (a) Imagen RGB, (b) plano H, (c) plano S
y (d) plano L. En (b) las regiones oscuras corresponden a los colores rojo y amarillo cuyos valores
son cercanos a cero

Produciría un valor que se encuentra dentro del intervalo (0 ≤ A’ < 0).


Después se calculan algunos parámetros tal que:

(11.26)

Se calculan los valores normalizados R’, G’ y B’ de los planos, aplicando el


modelo:
(11.27)

Estos valores se entrarán en el intervalo [0, 1], por lo que lo único que restaría
sería escalar los valores al máximo permisible para el tipo de imagen, el cual
normalmente es 255, por lo que al aplicar:

(11.28)

Se habrán encontrado los valores que definen a la imagen en el modelo RGB.

11.3.9. Comparación de los modelos HSV y HSL


A pesar de las semejanzas existentes entre ambos espacios de color existen
también notables diferencias entre los planos V/L y S (en ambos espacios el plano H es el
mismo), estas diferencias se ponen de manifiesto en la figura 11.14. La diferencia principal
entre el modelo de color HSV y HLS es la manera en cómo se encuentran ordenados los
colores, es decir la forma en como los colores básicos Rojo, Verde y Azul se combinan. Para
ilustrar esta diferencia, en las figuras 11.15, 11.16 y 11.17 se presentan la manera en cómo
se distribuyen algunos puntos entre los modelos de color RGB HS y HLS. La comparación
se basa en una distribución uniforme inicial de 1331 puntos en el modelo RGB (figura 11.15),
en donde la distancia de cada punto en cada dimensión tiene una resolución de 0.1 (11 ×
11 × 11). De la figura 11.16 es notorio que la distribución uniforme RGB, genera en HSV una
distribución que forma una trayectoria circular, aumentando la densidad de puntos a medida
que se acerca a la superficie superior del cubo. Contrariamente en el modelo HSL (figura
11.17) los puntos se distribuyen de manera simétrica con respecto al centro mientras que la
densidad de puntos es muy pequeña sobre todo en la región del color blanco.

En la práctica ambos espacios de color HSV y HLS son ampliamente usados


tanto en el procesamiento digital de imágenes como en la programación gráfica. En el
procesamiento digital de imágenes resulta particularmente interesante la segmentación del
fondo de imágenes a color (Color keying), realizando el procesamiento de los planos restantes
después de haber separado el plano H
Figura 11.14 Comparación entre los componentes de los modelos de color HSV y HLS. El plano de
saturación en el modelo de color HLS representa regiones brillantes de la imagen con un valor
mayor, con lo que los valores negativos de la imagen corresponden a estos puntos. Los planos de
tonalidad H de ambos modelos es el mismo por lo que no existe diferencia

Figura 11.15 Distribución uniforme RGB utilizada en la comparación con el modelo HSV y HLS
Figura 11.16 Distribución HSV producida por la transformación de la distribución uniforme RGB de
la figura 11.15. La distribución resultante en este modelo se distribuye asimétricamente en círculos,
presentando una mayor densidad a medida que aumenta el valor del plano V

Figura 11.17 Distribución HLS producida por la transformación de la distribución uniforme RGB de
la figura 11.15. La distribución resultante en este modelo se distribuye simétricamente dentro de un
espacio en forma de cilindro

Algo importante que debe ser tomado en cuenta es que el decremento del plano de
saturación S dificulta la determinación del ángulo H. El caso más crítico resulta cuando el
valor de S=0, donde el valor de H es indefinido.

11.4. LOS MODELOS DE COLOR YUV, YIQ, Y


YCbCr
Los modelos de color YUV, YIQ, y YCbCr son utilizados para la estandarización de
imágenes en el campo de la televisión. Los modelos YUV y YIQ son la base de la codificación
de color utilizada en los sistemas NTSC y PAL, mientras que el modelo YC bCr es parte del
estándar para la televisión digital. Los componentes que lo definen constan de tres planos, el
de lumínica y otros dos llamados componentes cromáticos, que codifican las diferencias de
color. El modelo YC bCr es muy utilizado en el procesamiento de imágenes principalmente en
aplicaciones de compresión, los modelo YUV y YIQ no son utilizados al mismo grado.
11.4.1. El modelo YUV
El modelo YUV representa la base para codificación de color en los sistemas
de video tanto de América, NTSC como PAL de Europa. La componente de luminancia
Y es definida a partir de los componentes RGB, por la ecuación:

(11.29)

los valores RGB fueron ya corregidos por los factores Gamma (𝑌𝑃𝐴𝐿 = 2.2 y
𝑌𝑁𝑇𝑆𝐶 = 2.8) necesarios para la reproducción en televisión. Los componentes UV son
factores lineales de la diferencia existente entre el valor de la luminancia y los planos
de color Rojo y Azul del modelo RGB. Estos valores se definen como:

(11.30)

Dado las ecuaciones de luminancia (Y(x, y)) y de las componentes cromáticas


(U(x, y), V(x,y)) se define la matriz de transformación:

(11.31)

La transformación de YUV a RGB se obtiene a través de la inversión de la


matriz anterior:

(11.32)

11.4.2. El modelo YIQ


El modelo YIQ es la variante del sistema YUV, en donde I implica la fase y Q
la cuadratura. Los valores de I y Q que se derivan de los valores de U y V, aplicándoles
una transformación geométrica, donde los U y V son rotados 33° e invertidos en
espejo. Esto es definido como:

(11.33)
Donde β = 0.576 (33°). Este modelo YIQ es mejor, comparado con el ancho de banda
necesario para la representación de colores de YUV. Sin embargo, su uso fue prácticamente
eliminado por el modelo YUV.

11.4.3. El modelo YCbCr


El modelo de color YCbCr es una variante del modelo YUV. Los componentes cromáticos C b
y Cr son similares a sus contrapartes U, V, es decir, nacen como diferencias entre el valor de
luminancia y los planos R y B. Las ecuaciones utilizadas para el cálculo de este modelo de
color son:

(11.34)

De igual manera la transformación de YC bCr a RGB se define como:

(11.35)

La Unión Internacional de Telecomunicaciones (ITU) define los valores de wR=0.299,


wB=0.114 y wg=0.587. Con los valores anteriores pueden definirse como las matrices de
transformación las siguientes:

(11.36)

(11.37)
Los planos UV, IQ y CbCr pueden contener valores tanto positivos como negativos, por esta
razón en la codificación de color digital realizada por el modelo de color en los planos CbCr se
añade un offset de 128 en el caso de que se utilice como tipo de dato para representar la
imagen 8 bits.

La figura 11.18 muestra la comparación de los 3 modelos de color YUV, YIQ y YC bCr. Los
valores de los planos mostrados en la figura 11.18 incorporan un valor necesario de 128 que
permite su adecuado despliegue. Considerando lo anterior, un valor de gris correspondería a
un valor real cercano al cero, mientras que el negro a unos negativos.

11.5. LOS MODELOS DE COLOR ÚTILES PARA


LA IMPRESIÓN DE IMÁGENES
Los modelos de color CMY y CMYK son espacios ampliamente usados en la industria de la
impresión a color. Para la impresión sobre papel se utiliza un esquema de color substractivo,
en el que la superposición reduce la intensidad de la luz reflejada. Para poder llevar a cabo
este proceso son necesarios por lo menos 3 colores básicos, estos son: el cyan (C), el
magenta (M) y el amarillo (Y).

A través de la combinación sustractiva (C, M y Y), cuando C = M = Y = 0, se obtiene el color


blanco, y si C = M = Y = 1 se obtendría el color negro. El color cyan engloba al color rojo (R),
el magenta al verde (G) mientras que el amarillo al azul (B). En su forma más simple el modelo
CMY puede ser definido como:

(11.38)

Para una mejor cobertura del espacio de color del modelo CMY en la práctica se suele
complementar al incorporar el color negro (K) como parte del esquema donde el valor de K
es definido como:

(11.39)
Figura 11.18 Comparación de los planos y componentes cromáticas de los espacios de color YUV,
YIQ y YCbCr

Al utilizar al negro como parte del modelo de color permite reducir los valores de
los planos CMY al aumentar la cantidad del plano definido por el valor de negro. En
consideración a esta incorporación existen algunas variantes del modelo, en razón a
la forma en como el plano del color negro participa en el procesamiento.

11.5.1. La transformación de CMY a CMYK (versión 1)

(11.40)
11.5.2. La transformación de CMY a CMYK (versión 2)

(11.41)

Debido a que los valores de todos los planos que definen este modelo de color
(CMYK) dependen fuertemente del proceso de impresión y del tipo de papel que se usa, en
la práctica cada plano es calibrado individualmente.

11.5.3. La transformación de CMY a CMYK (versión 3)

(11.42)

Donde el valor de K es definido en la 11.39. Las funciones f1 y f2 son normalmente no


lineales y de igual manera los valores resultantes de C’, M’, Y’, K’ al utilizar al utilizar 11.42
hace que salgan del intervalo [0, 1] por lo que resulta evidente una operación de restricción o
clamping. Los valores de f1 y f2 pueden tener diferentes configuraciones, sin embargo, unas
de las más usadas que corresponden a las utilizadas por el programa comercial de
procesamiento de imagen Adobe Photoshop son:

(11.43)

Donde const = 0.1, K0 = 0.3 y Kmax = 0.9. Como pierde verse en esta variante el valor
𝑓1 reduce los valores de los planos CMY en un 10% del valor de K
11.6. MODELOS COLORIMÉTRICOS
Los modelos de color por calibración son utilizados para reproducir de manera precisa los
colores con independencia del dispositivo de despliegue. Esta necesidad se encuentra en
prácticamente cada una de las etapas del procesamiento de imágenes, que van desde la
representación hasta la impresión. Esta problemática no puede ser considerada de ninguna
manera trivial, ya que resulta complicado imprimir una imagen en una impresora a color y que
ésta tenga un parecido casi exacto con la del monitor de la computadora que le dio origen.
Todos estos problemas se deben en su mayoría a la fuerte dependencia del dispositivo que
se presenta en la reproducción y manejo de imágenes.

Todos los modelos de color tratados anteriormente se relacionan a las medidas físicas de los
dispositivos de salida que se usan en el despliegue de las imágenes, tales como el fósforo de
los cinescopios de las televisiones o los parámetros configurables de las impresoras láser.
Para generar colores con diferentes modalidades de salida, que produzca imágenes
completamente idénticas independiente del dispositivo de despliegue utilizado, es necesario
un modelo de color que considere la independencia de representación, dichos modelos son
denominados colorimétricos o calibrados.

11.6.1. El espacio de color CIEXYZ

En 1920 fue desarrollado por "Comisión Interbationale d'Éclairage" el modelo estandarizado


XYZ el cual es hoy por hoy la base de la mayoría de los modelos calibrados usados en la
actualidad.

El modelo de color fue desarrollado a partir de numerosas medidas realizadas bajo estrictas
condiciones. El modelo consiste en tres colores primarios virtuales “X”, “Y” y “Z”, los cuales
son elegidos de tal manera, que mediante componentes positivos pueden ser descritos todos
los colores y combinaciones. Los colores definidos por este esquema se encuentran dentro
de una región tridimensional, el cual, como muestra la figura 11.19 (a) tiene la forma de un
cristal de azúcar.

La mayoría de los modelos de color pueden mediante la transformación de coordenadas ser


convertidos al modelo XYZ o viceversa. Atendiendo a lo anterior el modelo RGB puede ser
considerado como un cubo irregular (casi paralelepípedo) dentro del modelo XYZ, donde
debido a la transformación lineal las líneas del modelo RGB forman también líneas en el
modelo XYZ. El espacio CIEXYZ es visto desde el punto de vista de un observador humano
como no lineal, esto es, los cambios en las distancias realizados en el modelo no
corresponden a cambios linealmente en los colores.
Figura 11.19 El modelo de color CIEXY y el diagrama de color CIE. (a) El modelo de color CIEXY
es definido a través de tres colores virtuales X, Y y Z. La coordenada Y define la brillantez mientras
que las coordenadas X y Z definen al color. Todos los colores visibles se encuentran dentro del cubo
irregular mostrado en la imagen. (b) El diagrama bidimensional de color CIE corresponde a un
plano horizontal del modelo tridimensional CIEXYZ. El diagrama CIE representa a todas las
tonalidades de los colores visibles sin considerar la brillantez
Figura 11.20 Diagrama de color bidimensional CIE, donde se muestran los respectivos
colores que representan los pares x y

11.6.2. El diagrama de color CIE


En el modelo de color XYZ, la brillantez del color, considerando que el valor del
color negro es X=Y=Z=0, aumenta conforme crece el valor del eje Y. Para claramente
representar las tonalidades del color en 2 dimensiones, el modelo de color CIE define
los factores 𝑥, 𝑦 y z como:

(11.44)

Donde como resulta evidente x+y+z=1, por lo que el valor de z resulta redundante. Los valores
x e y forman el espacio del diagrama CIE, el cual como muestra la figura 11.19 (b) tiene la ya
conocida forma de lengua. Todos los colores visibles del sistema CIE pueden ser
representados por medio de la tupla Yxy donde Y representa el componente de la luminancia
del sistema XYZ. La figura 11.20 muestra el diagrama CIE con el mapeo de colores en su
superficie.
Aunque la relación matemática definida en 11.44 parece trivial, no es sencilla de entender y
de ninguna manera intuitiva. Considerando un valor de Y constante, se puede extraer un
plano horizontal del espacio CIE, el cual representa una relación no lineal en las variables x,
y. Para el caso de Y = 1 se forma el plano definido como:

(11.45)

La transformación contraria que encuentra los valores del espacio XYZ, considerando Y = 1
se produce por:

(11.46)

El diagrama CIE relaciona la manera en como el ojo humano es sensible a los colores, sin
embargo, simultáneamente representa una construcción matemática que tiene algunas
características interesantes. Los puntos (x, y) a lo largo de la frontera de la superficie CIE se
encuentran los colores espectrales que tienen el valor máximo de saturación además de
diferente longitud de onda que van de 400 nm (violeta) hasta 780 nm (rojo). Con esto la
posición de cada color puede ser calculada con relación a cualquier color primario. La
excepción a esto es la denominada línea de conexión (o bien línea morada) que se encuentra
entre 380 nm y 780 nm, la cual se encuentra fuera de cualquier color primario. El valor púrpura
de este color puede ser obtenido solamente a través del complemento de los colores que se
encuentran opuestos a este. Hacia la mitad del diagrama CIE (figura 11.20) aumenta la
saturación de los colores hasta llegar al punto blanco del modelo, el cual se alcanza cuando
𝑥 = 𝑦 = 1/3, o bien 𝑋 = 𝑌 = 𝑍 = 1.
11.6.3. Normas de iluminación

Un objetivo central de la colorimetría resulta la medición de las características


de los colores en la realidad, en donde una de esas características importantes resulta
la iluminación. Por ello CIE define un conjunto de normas de iluminación, de las cuales
dos de ellas son de especial importancia en el campo de los modelos de color digital.

Estas dos normas son:

D50. Corresponde a una temperatura de 5000°K e imita la iluminación producida


por un foco. D50 sirve como referencia para la reflexión producida por imágenes,
principalmente para aplicación de la impresión.

D65. Corresponde a una temperatura de 6500°K y simula la iluminación


presente en un día por la mañana. D65 es utilizado como referencia de aparatos para
la reproducción de imágenes, tal es el caso para monitores.

Estas normas tienen un doble propósito, por un lado, sirven como especificación
de la iluminación del ambiente para la observación de los colores, referencia (tabla 1)
para los diferentes modelos de color desprendidos del diagrama mientras que por otro
sirven para la determinación del punto blanco tomado como CIE.

Tabla 11.1 Normas D50 y D65 del tipo de iluminación CIER. N representa el punto neutral absoluto
en el modelo de color de CIEXYZ

11.6.4. Adaptación cromática

La captación de un color que define un espacio se produce en relación directa con el punto
blanco tomado como referencia para la formación de los demás colores. Considérese que se
tiene dos diferentes puntos blancos que forman la referencia de dos espacios diferentes de
color, estos puntos se definen como:

(11.47)
Por consiguiente, para encontrar equivalencias entre los dos sistemas será necesario realizar
algunas transformaciones conocidas por el término adaptación cromática. El cálculo
efectuado por esta transformación convierte a partir del punto blanco considerado como
referencia, los valores a los que se corresponde en otro espacio de color, donde se define
otro punto blanco de referencia. En la práctica esta transformación lineal es definida por la
matriz MCAT, la cual define la siguiente transformación:

Donde (r1, g1, b1) y (r2, g2, b2) representan los valores convertidos a partir de los puntos de
referencia blancos W1 y W2 por la transformación lineal MCAT. Este proceso puede ser
definido como:

La matriz de transformación más utilizada en la práctica es la llamada modelo “Bradford” y se


encuentra definida por:

11.6.5. El Gamut

La totalidad del conjunto de colores que pueden ser utilizados para la grabación, reproducción
y despliegue por parte de un modelo de color, se denomina Gamut. Este conjunto se relaciona
con una región del espacio tridimensional CIEXYZ, en donde se reduce la dimensión al
considerar solamente la tonalidad sin tomar en cuenta la iluminación, quedando de esta
manera una región bidimensional, como la que ya ha sido múltiples veces tratada en
subsecciones anteriores, con el nombre de diagrama CIE.
En la figura 11.21 se muestran algunos ejemplos de Gamut representados en el diagrama
CIE. El Gamut de un dispositivo de despliegue depende esencialmente del principio físico que
éste utiliza para representar los datos. De esta manera los monitores de computadora (por
citar un ejemplo) no son capaces de desplegar todos los colores del modelo que este utiliza
para la representación de los colores. Lo contrario también es posible, es decir un monitor
puede desplegar diferentes colores que no son considerados en el modelo de color que el
dispositivo utiliza para la representación.

Existen grandes diferencias entre espacios de color, esta diferencia tiene especialmente
sentido en el caso del Gamut del espacio RGB y el del modelo CMYK. El mismo caso puede
extrapolarse para los dispositivos de despliegue en donde existen casos de impresoras láser
que poseen un Gamut muy amplio (figura 11.21).

11.7. VARIANTES DEL ESPACIO DE COLOR


CIE
El modelo de color CIEXYZ y el sistema x y derivado de él, presentan una clara desventaja
al ser utilizados como modelos de color. Dicha desventaja representa el hecho de que
pequeñas distancias geométricas consideradas dentro del espacio de colores traen como
consecuencia un cambio abrupto en la percepción del color. De esta manera se producen
grandes cambios en la región del color magenta al variar muy poco la posición, mientras que,
en el campo del verde, grandes cambios de posición apenas experimentan un pequeño
cambio de tonalidad. Por consiguiente, se han desarrollado variantes del sistema CIE para
diferentes tipos de aplicación con el objetivo central o bien de representar de una mejor
manera la forma en como el color es percibido por el humano o bien de adaptarse de una
mejor manera al cambio de posición para las aplicaciones. Estas variantes permiten mejorar
el formato de presentación y percepción del color sin abandonar la calidad del diagrama CIE.
Ejemplos de estas variantes son: CIE YUV, YU'V, L*u*v* y L*a*b*.

11.8. EL MODELO DE CIE L*a*b*


El modelo L*a*b* fue desarrollado bajo la idea de linealizar la relación cambio de posición
contra cambio de tonalidad, mejorando de esta manera la forma este modelo de color el
espacio se encuentra definido por tres variables, L* que en cómo el humano percibe estos
cambios, haciendo al modelo más intuitivo. En representa la brillantez, y los componentes de
tonalidad a* y b. El valor de a define la distancia a lo largo del eje rojo-verde, mientras que el
valor de b representa la distancia a lo largo de del eje azul-amarillo, dichos ejes especificados
en el espacio CIEXYZ. Los tres componentes que definen el espacio son relativos a un punto
blanco definido como C = (XYZ), donde además se utiliza una corrección no lineal (similar a
la corrección Gamma).

11.8.1. Transformación CIEXYZ → L*a*b*

La especificación para la conversión del modelo CIEXYZ al espacio L*a*b* es definida según
la norma ISO 13655 como:
Como punto blanco de referencia Cd(XYZ) se utiliza el definido como D65 (tabla 11.1), el cual
especifica X=0.95047. Y=1.0 y 21.08883. Los valores de L son siempre positivos y se
encuentran dentro del intervalo [0,100) (con la posibilidad de escalar fácilmente a [0,255]).
Los valores de a y b se encuentran dentro del intervalo [-127,127]. La figura 11.22 muestra
un ejemplo de la descomposición de una imagen en sus diferentes componentes L*a*b*.

11.8.2. Transformación L*a*b* → CIEXYZ

La transformación contraria de convertir del modelo L*a*b* al CIEXYZ se define por el cálculo
de las siguientes ecuaciones:
11.8.3. Determinación de la diferencia de color

El modelo de color L*a*b* está concebido para producir un cambio coherente de


color por cambio de posición. Esta alta linealidad permite mediante la diferencia vectorial,
encontrar un criterio que permita evaluar la diferencia en el plano de color. La diferencia entre
dos diferentes colores Col, y Col, de forma concreta se define como la distancia euclidiana
entre ambos. La distancia euclidiana entre ambos colores se define como:

11.9. EL MODELO SRGB


Los espacios de color basados en el modelo CIE tal como L'ab son
independientes del dispositivo de despliegue y muestran en general un Gamut muy amplio,
permitiendo de esta manera representar prácticamente todas las tonalidades definidas en el
espacio CIEXYZ. El modelo SRGB (Estándar RGB) fue desarrollado precisamente con la idea
de poseer esas ventajas al basarse en el modelo CIEXYZ. El modelo sRGB se compone no
solamente del vector de color que define a los colores primarios RGB, sino que también
implícitamente incluye la definición del punto blanco tomado como referencia. A pesar de las
características anteriores el modelo SRGB posee en comparación al modelo L*a*b* un Gamut
mucho más pequeño. Varios formatos para el almacenamiento de imágenes son definidos
utilizando este modelo de color entre ellos tenemos EXIF o PNG.

Los componentes de este modelo son obtenidos a partir del modelo CIEXYZ a
partir de una transformación lineal determinada por la matriz MRGBY, definida como:
11.10. FUNCIONES DE MATLAB PARA EL
PROCESAMIENTO DE IMÁGENES A
COLOR
En esta sección se describen las funciones que posee MatLAB para el procesamiento
de imágenes a color, las funciones que aquí se describen permiten manipular, convertir
espacios de color y trabajar interactivamente con las imágenes a color.

11.10.1. Funciones para la manipulación de imágenes RGB


e indexadas

Una imagen indexada como fue visto se constituye de dos componentes, una matriz
de datos index y una matriz que define el mapa de colores map. El mapa de colores map es
una matriz de dimensión m x 3, dicha matriz en MatLAB tiene el tipo de dato double. La
longitud de m de map especifica el número de colores que puede representar, mientras que
la dimensión 3 especifica el valor que corresponde a cada plano de color RGB que forma la
combinación del color indexado. Para desplegar una imagen indexada sería necesario brindar
la información de la matriz de datos index y el mapa de colores map, de tal forma que
utilizando la función imshow se tendría:

MatLAB tiene varios mapas de colores predefinidos, la tabla 11.2 muestra los mapas
de color disponibles en MatLAB y sus respectivas diferencias desplegando una imagen, así
como también el espectro de color que representa.

Con el objetivo de generar claridad en la explicación, en esta sección se usa la


siguiente convención: cuando se trata de imágenes RGB, la imagen se identificará como rgb,
cuando la imagen sea a escala de grises, se identificará como gray, si la imagen es indexada
se identificará como index y si la imagen es binaria se identificará como bw.

Una operación común en el procesamiento de imágenes resulta el convertir la imagen


RGB a una imagen a escala de grises. La función rgb2gray permite realizar esta operación
aplicando algún método definido por la ecuación 11.7. La sintaxis de esta función se describe
como:

Dithering es un proceso usado en la industria de la impresión y publicidad para dar


una impresión visual de escala de grises, mediante el uso de marcar puntos de diferentes
tamaños y con una diferente densidad de distribución. En el caso de imágenes a escala de
grises, aplicando dithering se formará una imagen binaria de puntos negros sobre fondo
blanco o viceversa. El tamaño de los píxeles que se aplican en el proceso varía de pequeños
puntos en áreas claras para incrementarse en áreas oscuras. Las áreas claras podrían
obtenerse mediante el trazo de una región blanca, contaminada de una distribución de puntos
negros, mientras que un área obscura se obtiene mediante la definición de un área negra y
la contaminación de algunos puntos blancos, evidentemente la densidad de puntos tiene un
efecto determinante en el proceso de dithering. El principal problema de un algoritmo que
implementa dithering es el equilibrio entre precisión de la percepción visual y complejidad en
el número y tamaño de los puntos. MatLAB implementa la función dither para implementar el
proceso de dithering, dicho algoritmo se basa en el esquema desarrollado por Floyd y
Steinberg. La sintaxis general de esta función aplicada a imágenes a escala de grises:
La figura 11.23 muestra la imagen original y la imagen obtenida después de la funcion dither

Figura 11.23 Resultado de aplicar el proceso de dithering sobre una imagen a escala de grises,
usando la funcion dither implementada en MatLAB. (a) imagen original y (b) imagen resultante de a
haber aplicado la funcion dither en la imagen en (a)

Mapa de Color Descripción Imagen ejemplo y espectro de color

Realiza una variación


autumn suavizada de naranja a
amarillo

Es un mapa de color a
escala de grises,
bone
considerando un valor
alto del plano azul
Contiene una definición
de colores
muestreados del
colorcube modelo RGB. mientras
mantiene más niveles
de gris, rojo, verde y
azul

Define un conjunto de
colores que varía
cool
suavemente del cyan al
magenta

Varia levemente de
copper
negro a color cobre

Define colores como


rojo, blanco. azul y
negro. Su definición de
flag colores cambia
completamente (la
transición no es suave)
de un índice a otro
Define el patrón de
gray
escala de grises

Varia suavemente de
hot negro a rojo, naranja, y
de amarillo a blanco

Varía el componente de
tonalidad de saturación
máxima, al nivel
mínimo. Su transición
hsv
va de rojo, amarillo,
verde, cyan, azul,
magenta regresando de
nueva cuenta al rojo

Su transición de
colores define de azul a
jet rojo, pasando a través
de los colores cyan,
amarillo y naranja
Define un matiz de
pink rosa. Este mapa crea
imágenes sepia

Define una repetición


de colores que van del
prism
rojo, naranja, amarillo,
verde, azul y violeta

Define colores que dan


spring un matiz de magenta y
amarillo

Define colores que dan


summer un matiz de verde y
amarillo
Define colores que dan
winter un matiz de azul y
verde

MatLAB utiliza la función rgb2ind para convertir una imagen RGB a una imagen indexada, la
sintaxis general de esta función es:

Donde n determina el número de colores del mapa utilizado para la representación de la


imagen, opcion_para_dithering, define si se aplicará el proceso de dithering a la imagen, esta
opción admite dos banderas posibles, dither para el caso de que se aplique el proceso de
dithering, o bien nodither, para el caso que no se desee aplicar este proceso a la conversión
de la imagen. La opción por defecto de estas dos banderas es dither. index por su parte recibe
la matriz de datos que define a la imagen indexada, mientras que map, el mapa de colores
que la definen. La figura 11.24 muestra como ejemplo, las imágenes indexadas producidas
al convertir una imagen RGB y utilizar como parámetros n=7, para 11.24 (a)
opcion_para_dithering 'dither' y para 11.24 (b) opcion_para_dithering 'nodither'.

Figura 11.24 Imágenes indexadas producida por la funcion rgb2ind, utilizando el proceso de (a)
dithering y (b) sin utilizarlo.
La función ind2rgb convierte una imagen indexada en una imagen RGB, su sintaxis es
definida como:
Donde index es la matriz de datos de la imagen indexada y map el mapa de colores que la
definen. La tabla 11.3 enuncia las funciones del toolbox de procesamiento de imágenes
utilizadas para la conversión de imágenes RGB, indexadas y escala de grises.

Tabla 11.3 Funciones del toolboox de procesamiento de imágenes utilizadas para la conversión de
imágenes RGB, indexadas y de escala de grises

11.10.2. Funciones para la conversión de espacios de color

En esta sección se describen las funciones que contiene el toolbox de


procesamiento de imágenes de MatLAB para convertir entre los diferentes modelos de color.
La mayoría de las funciones tienen un nombre que permiten de manera intuitiva identificar el
tipo de conversión realizada (existen algunas excepciones).

La función rgb2ntsc permite convertir de una imagen definida en el modelo RGB


al espacio YIQ (véase sección 11.4). En nombre de la función representa la idea de que este
modelo es usado en el sistema de televisión de América NTSC. La sintaxis general de esta
función es:

Donde rgb es una imagen definida en el modelo RGB. El resultado yiq es la


imagen convertida al espacio de color YIQ, correspondiente a la imagen rgb. El tipo de dato
de la imagen yiq es double. Los componentes de la imagen yiq como fue visto en la sección
11.4 son, para la luminancia (Y) yiq(:,:,1), para la tonalidad (1) yiq (:,:, 2) y para la saturación
(Q) yiq(:,:,3).

Por otra parte, la función ntsc2rgb permite realizar la conversión contraria, es decir
de una imagen definida en el modelo YIQ a una imagen RGB. La sintaxis de esta función es:

Donde tanto la imagen yiq como rgb son del tipo double, lo anterior es importante
principalmente en el momento de generar el despliegue de la imagen mediante imshow.

La función rgb2ycber permite convertir de una imagen definida en el modelo RGB


al espacio YC, C, (véase sección 11.4). La sintaxis general de esta función es:

Donde rgb es una imagen definida en el modelo RGB. El resultado ycbcr es la


imagen convertida al espacio de color YC, C, correspondiente a la imagen rgb. El tipo de dato
de la imagen ycbcr es double.

En sentido inverso la función ycbcr2rgb permite realizar la conversión contraria,


es decir de una imagen definida en el modelo YC, C, a una imagen RGB. La sintaxis de esta
función es:

rgb ycbcr2rgb(ycbcr)

Donde tanto la imagen ycbcr como rgb son del tipo double, lo anterior es
importante principalmente en el momento de generar el despliegue de la imagen mediante
imshow.

El modelo HSV como fue tratado en la subsección 11.3.4 que más se utilizan por
la facilidad de elegir colores de una paleta predeterminada. Este sistema de color puede ser
considerado más intuitivo al RGB, ya que describe de una mejor manera la forma en como el
color es captado por los humanos. La función rgb2hsv convierte una imagen definida en el
modelo RGB al espacio HSV. La sintaxis de esta función es:

donde la imagen hsv es del tipo double dentro del intervalo [0,1]. La función
hsv2rgb permite realizar la conversión inversa, obteniendo de esta manera la imagen definida
en el espacio RGB a partir de una descrita en el modelo HSV. La sintaxis de esta función se
define como:

donde tanto hsv como rgb son del tipo double.

Los colores de cyan, magenta y amarillo son considerados como los colores
secundarios de la luz o bien los primarios en cuanto a pigmentación se refieren. La mayoría
de los dispositivos usados para pigmentar sobre papel, tales como las impresoras y
copiadoras requieren como datos de entrada una imagen definida en el formato CMY (véase
sección 11.5) y normalmente desempeñan una conversión de RGB a CMY de manera interna.
La conversión puede ser desempeñada como fue visto, por una simple resta definida como:

En esta conversión se asume que todos los valores han sido ya normalizados al
intervalo [0,1]. Del modelo descrito en 11.61 pueden desprenderse varias observaciones
interesantes, como por ejemplo un color que contenga solamente cyan, no contendrá rojo,
similarmente sucede lo mismo en la relación magenta-verde y amarillo-azul. Debido a como
se observa en 11.61 los valores de CMY corresponden al complemento de los contenidos en
RGB, la conversión entre estos modelos puede realizarse mediante la aplicación de la función
complemento imcomplement contenida en el toolbox de procesamiento de imágenes. De tal
manera que para convertir a CMY a partir de una imagen descrita en el modelo RGB se tiene:

de igual manera se puede utilizar la misma función para convertir de CMY a una
imagen definida en RGB, aplicando:
11.11. PROCESAMIENTO DE IMÁGENES A
COLOR
En esta sección se estudian las principales operaciones de procesamiento de
imágenes aplicables a imágenes a color. Con el objetivo de hacer un tratamiento adecuado
de las técnicas utilizadas en el procesamiento de imágenes a color se clasificarán las
operaciones en tres grupos: transformaciones lineales de color, procesamiento espacial y
operaciones vectoriales.
La categoría de las transformaciones lineales se refiere a operaciones
realizadas exclusivamente sobre los píxeles de la imagen en cada uno de los diferentes
planos que definen su color. Este tipo de procesamiento es similar a las tratadas en el capítulo
4, con la diferencia de que en ese caso las operaciones eran aplicadas sobre solo una imagen
a escala de grises. En el contexto actual estas operaciones son aplicadas a cada uno de los
planos de color, por lo que en teoría cada una de las operaciones vistas en el capítulo 4
pueden ser utilizadas para imágenes a color, con la excepción de que éstas se realizan
separadamente para cada plano que constituye la imagen.

La operación de procesamiento espacial implica aquellas operaciones que


consideran no solamente el píxel en cuestión sino también aquellos que se encuentren en
una determinada vecindad alrededor de él. Este tipo de procesamiento está fuertemente
relacionado con el visto en el capítulo 5, con la salvedad de que en el caso de imágenes a
color el procesamiento se realiza sobre cada uno de los planos de color. Considerando lo
anterior, la mayoría de las operaciones explicadas en el capítulo 5, tal como el filtrado puede
ser aplicado a este tipo de imágenes.

Mientras que tanto en el procesamiento a nivel de pixel o bien de forma


espacial especifican operaciones que se realizan sobre cada plano, en el procesamiento
vectorial cada operación implica la participación de cada uno de los componentes de color
simultáneamente. Para realizar el procesamiento vectorial cada pixel de la imagen es
representado como un vector, que para el caso de una imagen en el modelo RGB seria:

Considerando lo anterior, una imagen de dimensión MXN tendría M-N vectores


c (x, y).
11.12. TRANSFORMACIONES LINEALES DE
COLOR
Las técnicas tratadas en esta sección se basan en el procesamiento
individual de píxel, realizando esta operación sobre cada uno de los planos que definen a la
imagen. Este procesamiento es similar al desempeñado en el capítulo 4 sobre imágenes a
escala de grises. El tipo de procesamiento de estas operaciones tiene el siguiente modelo:

Donde p es el valor del píxel del plano i que se procesa por la función 𝑓1 ,
dando como resultado el valor del píxel c para el mismo plano i.

El conjunto de operaciones de este tipo que pueden aplicarse a las imágenes


a color incluye la mayoría de las descritas en el capítulo 4, para imágenes a escala de grises,
solo que en este caso la imagen a escala de gris corresponderá a cada plano de la imagen
que define el color. Por consiguiente, serán sólo descritas aquellas operaciones que por su
importancia son consideradas como las más comunes.

La transformación lineal en una imagen se puede definir como la relación existente entre los
diferentes valores de intensidad presentes en los planos de color de la imagen. El cambio de
intensidad de color por su parte se relaciona con la forma en que los valores de intensidad se
distribuyen en cada plano, de tal forma que si éstos se concentran más hacia valores
pequeños de intensidad la imagen se apreciará con menos contenido de color, por el
contrario, si los valores de intensidad se concentran hacia valores altos de intensidad la
imagen se apreciará con un contenido mayor de color. El operador genérico 𝑓(∙) que se utiliza
para transformar linealmente el color en una imagen puede ser definido como:

donde o modifica el valor del contraste de los valores de intensidad de un plano mientras que
b el del brillo o iluminación de este. La figura 11.25 muestra gráficamente las diferentes
modificaciones realizadas por la manipulación de o y b.
Figura 11.25 Representación gráfica del mapeo que se genera en el pixel resultado 𝑐𝑖 de
cada plano al modificar los valores de la ecuación 11.24 para (a) o y (b) b

11.12.1. Transformación lineal de color usando MatLAB

La operación de transformación lineal que se realiza sobre cada plano de una imagen
a color puede ser desempeñada mediante la utilización de la función contenida en el toolbox
de procesamiento de imagen imadjust. La sintaxis general de esta función es definida como:

La función imadjust mapea los valores de intensidad de cada plano de rgb a nuevos
valores intensidad para cada uno de los planos de color de la nueva imagen newrgb. La
operación se realiza de tal manera que los valores low in y high in son transformados
linealmente a los especificados por low_out y high_out. Aquellos valores que se encuentren
debajo de low_in o bien arriba de high in son simplemente redefinidos a esos valores. Cuando
se desea utilizar el rango completo para especificar la transformación se utiliza la matriz vacía
[] como parámetro, lo que significa especificar [0,1]. Todos los valores de los límites que
definen la transformación deben de ser considerados normalizados, en el intervalo de [0,1].
La figura 11.26 muestra los parámetros del mapeo y su relación en la transformación de la
imagen de salida.

En el contexto de imágenes a color los parámetros low_in, high in, low out y
high_out representan vectores de dimensión 1×3, donde los valores de cada columna
definen los límites de cada plano de color.

Como ejemplo de aplicación de esta función se consideran diferentes


transformaciones lineales, las cuales se encuentran ilustradas en la figura 11.27. Todas las
transformaciones obtenidas se consideran como imagen original o mostrada en la figura 11.27
(a). En la figura 11.27 (b) se considera como parámetros de transformación low_in= [0.2 0.3
01, high_in= [0.6 0.7 11, low_out= [0 0 0] y high_out= [1 1 1). En la figura 11.27 (c) se
considera como parámetros de transformación low_in= [0.2 0.2 0.2], high_in= [0.5 0.5 0.5],
low_out= [0 0 0] y high_out= [0.7 0.7 transformación low_in= [0.2 0.2 0.2], high_in-10.5 0.5
0.51, 0.71. Por último, en la figura 11.27(d) se considera como parámetros de low out [0.3 0.3
0.31 y high_out= [0.7 0.7 0.7].
11.13. PROCESAMIENTO ESPACIAL EN
IMAGENES DE COLOR
La característica esencial de las operaciones transformación lineal tratadas depende
única y exclusivamente del valor del píxel original de cada plano y es en la sección anterior
fue que el nuevo valor del pixel calculado finalmente se ubicó en la misma posición en los
planos de la nueva imagen. Aunque es posible realizar muchos efectos sobre imágenes
utilizando operaciones de pixel existen condiciones bajo las cuales no es posible utilizarlas
para poder generar determinados efectos tal y como se tiene en el caso de suavizado o
detección de bordes de imágenes. El procesamiento espacial de imágenes a color puede ser
considerado como una operación donde el nuevo píxel calculado depende no únicamente del
píxel original, sino de otros pixeles que están en una determinada vecindad con relación a él.
Evidentemente este procesamiento considera que las operaciones son realizadas de manera
independiente sobre cada plano de color que definen a la imagen. La figura 11.28 muestra el
proceso de una operación especial sobre una imagen a color.

Figura 11.28 Procesamiento espacial de una imagen a color. El procesamiento se realiza utilizando
una matriz de coeficientes que define una region de procesamiento que opera sobre cada uno de los
planos a color

Este tipo de procesamiento está fuertemente relacionado con el visto en el capítulo 5,


con la salvedad de que en el caso de imágenes a color el procesamiento se realiza sobre
cada uno de los planos de color. Considerando lo anterior, la mayoría de las operaciones
explicadas en el capítulo 5, tal como el filtrado puede ser aplicado a este tipo de imágenes.
Por consiguiente, serán sólo descritas aquellas operaciones que por su importancia son
consideradas como las más comunes.

11.13.1. Suavizado de imágenes a color

Como fue visto en el capítulo 5, en una imagen de color se observan lugares o píxeles
donde localmente existe un cambio abrupto del nivel de intensidad en cada plano ya sea que
éste aumente o disminuya significativamente. De manera contraria se presentan también
lugares o píxeles en cada plano en donde la intensidad de la imagen permanece constante.
Una forma de suavizado de una imagen a color es por ello por lo que cada píxel de cada
plano simplemente sea reemplazado por el promedio de sus vecinos en una región alrededor
de él.

Por lo que para calcular el valor del pixel del plano suavizado l'(x, y) se emplea el pixel
del plano original (x, y) = p, más sus 8 píxeles vecinos P1, P2, …, Ps y se calcula el promedio
aritmético de esos nueve valores:
Este promedio local calculado muestra todos los elementos típicos presentes en un filtro.
Realmente este filtro es el ejemplo de uno de los tipos de filtros más utilizados, los llamados
filtros lineales. Para el caso de imágenes a color este proceso debe ser ejecutado para cada
plano de la imagen que la define.

11.13.2. Suavizado de imágenes a color con MatLAB

Para suavizar una imagen a color mediante el empleo de un filtro espacial, se realiza el
siguiente proceso:

1. Se extraen cada uno de los planos que componen a la imagen a color.

2. Cada componente se filtra individualmente usando la misma estructura de filtro.

3. Los resultados encontrados para cada plano son fusionados de nueva cuenta para formar
la nueva imagen de color suavizada.

La función utilizada en MatLAB para realizar el filtrado espacial es imfilter, su sintaxis,


parámetros y detalles fueron tratados en la subsección 5.8.3, por lo que en esta sección
únicamente será utilizada.

A continuación, a manera de ejemplo se expone la serie de comandos usados en MatLAB


para suavizar una imagen de color RGB, mediante el empleo de un filtro Box (capitulo 5) de
dimensión 7x7. Para la realización de este ejemplo se considera que la imagen a suavizar se
encuentra almacenada en la variable RGB Por consiguiente los comandos que habrán de
ejecutarse para suavizar la imagen de acuerdo con el proceso detallado arriba son:
Los comandos del 1 al 3 separan cada uno de los planos y los asignan a las variables R, G y
B. El comando 4, genera la matriz de coeficientes del filtro espacial el cual como puede verse
es un promediador cuya región de influencia es de dimensión 7x7 (más detalles ver capítulo
5). Los comandos del 5 al 7 realizan el filtrado espacial sobre cada plano, usando como filtro
el definido en el comando 4. Por último, de 8 a 10 se restablecen los planos filtrados para
formar la nueva imagen suavizada. La figura 11.29 muestra una imagen suavizada de color
que se obtuvo a partir de ejecutar los comandos anteriormente descritos.

Figura 11.29 Imagen de color suavizada mediante el empleo de un filtro espacial


promediador. (a) imagen original y (b) imagen suavizada obtenida después de haber
ejecutado la serie de comandos de MatLAB anteriormente descritos

11.13.3. Mejora de Nitidez en las imágenes a color

Si se aplica el operador Laplaciano (véase sección 7.5) a cada plano de una imagen
a color obtendremos los bordes en el contexto de ese plano. Sin embargo, si lo que se desea
es mejorar la nitidez de una imagen entonces lo que sería necesario hacer será conservar la
información de baja frecuencia del plano original y enfatizar los detalles presentes en el plano
a través del filtro Laplaciano. Para realizar este efecto, es necesario restar al plano original
una versión escalada del plano filtrado por acción del Laplaciano. Por lo que el plano con una
nitidez mejorada quedaría definido como lo describe la siguiente ecuación:

La figura 11.30 muestra la idea por medio de la cual la imagen mejora en nitidez al
hacer más evidente la presencia de sus bordes. Para facilitar la explicación se considera el
caso unidimensional.

Figura 11.30 Aumento de la nitidez mediante la aplicación de la segunda derivada. Al restar un


factor de la segunda derivada a la función, permite maximizar la presencia de los contornos en la
imagen.

El efecto de mejorar la nitidez de un plano se puede realizar en una sola pasada,


puesto que si se considera w=1, se tiene que:
Y considerando que el laplaciano (véase sección 7.5) tiene la estructura definida
como:

Se tendría que

O bien, expresado en un filtro, tendríamos que su matriz de coeficientes estaría


definida por:

11.13.4. Mejora de Nitidez en las imágenes a color con


MatLAB

Para mejorar la nitidez de una imagen a color mediante el empleo de un filtro espacial,
se realiza el proceso anteriormente descrito para el suavizado de imágenes a color, esto es:

1. Se extraen cada uno de los planos que componen a la imagen a color.


2. Cada componente se filtra individualmente usando el filtro definido en 11.64.
3. Los resultados encontrados para cada plano son fusionados de nueva cuenta para formar
la nueva imagen de color con mayor nitidez.
La función utilizada en MatLAB para realizar el filtrado espacial es imfilter, su sintaxis,
parámetros y detalles fueron tratados en la subsección 5.8.3, por lo que en esta sección
únicamente será utilizada.

A continuación, a manera de ejemplo se expone la serie de comandos usados en


MatLAB para mejorar la nitidez de una imagen de color RGB, mediante el empleo de un filtro
definido en la ecuación 11.70. Para la realización de este ejemplo se considera que la imagen
de entrada se encuentra almacenada en la variable RGB. Por consiguiente, los comandos
que habrán de ejecutarse para mejorar la nitidez de la imagen de acuerdo con el proceso
detallado arriba son:

Los comandos del 1 al 3 separan cada uno de los planos y los asignan a las variables
R, G y B. El comando 4, genera la matriz de coeficientes del filtro espacial definido en la
ecuación 11.71 (más detalles ver sección 7.5). Los comandos del 5 al 7 realizan el filtrado
espacial sobre cada plano, usando como filtro el definido en el comando 4. Por último, de 8 a
10 se restablecen los planos filtrados para formar la nueva imagen con una nitidez mejor. La
figura 11.31 muestra una imagen de color cuya nitidez fue mejorada, que se obtuvo a partir
de ejecutar los comandos anteriormente descritos.

Figura 11.31 Imagen de color cuya nitidez fue mejorada mediante el empleo de un filtro espacial
Laplaciano. (a) Imagen Original y (b) imagen con nitidez mejorada obtenida después de haber
ejecutado la serie de comandos de MatLab anteriormente descritos
11.14. PROCESAMIENTO VECTORIAL DE
IMÁGENES A COLOR
Hasta ahora en las anteriores secciones ha sido tratado solamente el caso para el
cual las operaciones realizadas sobre las imágenes se realizan en cada uno de los planos de
manera totalmente independiente y desacoplada. Sin embargo, existen casos para los cuales
es necesario trabajar con todo el vector de valores de la intensidad de cada uno de los planos
de manera simultánea.

Se cuenta con un conjunto importante de operaciones que requieren el procesamiento


directo sobre el vector de datos, aunque en esta sección será descrito únicamente el caso de
detección de bordes en imágenes a color, por considerar a esta aplicación una de las más
usadas y comunes.

11.14.1. Detección de bordes en imágenes a color

El gradiente puede ser considerado como la derivada de una función multidimensional


a lo largo de un eje coordenado (con respecto a una de las variables de la función), por
ejemplo:

Expresa la derivada parcial de la función de la imagen I (x, y) con respecto a la variable


x o y. El vector

Representa el vector del gradiente de la función I en el punto (x, y). El valor del
gradiente
Es invariante a rotaciones de la imagen y con ello también independiente de la
orientación de las estructuras contenidas en la misma. Esta propiedad es importante para la
localización de los puntos bordes de la imagen con ello es el valor de |∇|𝐼 el valor práctico
utilizado en la mayoría de los algoritmos utilizados para la detección de bordes.
Frecuentemente |∇|𝐼 es aproximado mediante la utilización de:

Esta aproximación evita el cálculo de la potenciación y la raíz cuadrada, lo que la hace


computacionalmente hablando más económica. Una característica importante del vector del
gradiente (ecuación 11.74) es su dirección, la cual expresa el ángulo donde se experimenta
el valor máximo del gradiente, esta dirección puede ser calculada a partir de:

El valor del gradiente en la práctica se aproxima por la diferencia encontrada entre


píxeles dentro de pequeñas regiones de vecindad, la ecuación 11.78 muestra las matrices de
coeficientes del filtro Sobel, uno de los más comunes para el cálculo de la magnitud del
gradiente. En el capítulo 7 se establece un tratamiento más detallado de la manera en cómo
se establecen estas diferencias, así como los filtros más comunes utilizados para el cálculo
de la magnitud del gradiente.

El valor del gradiente calculado bajo el procedimiento anterior es el método más


común para determinar los bordes en una imagen a escala de grises, como fue discutido en
el capítulo 7. Sin embargo, este método es concebido para ser aplicado a funciones
bidimensionales y no se extiende para el caso de imágenes a color tales como las RGB. La
única forma de hacer extensivo el proceso anterior para imágenes a color sería encontrar el
gradiente para cada plano de color combinar sus resultados. Lo anterior como será visto no
resulta una buena solución, ya que existirán regiones de color las cuales mediante este
método no podrán ser detectadas y por lo tanto sus borden no serán calculados.
El problema resulta de esta manera el definir tanto la magnitud del gradiente como su
dirección a partir del vector de colores c (x, y) definido en la ecuación 11.62. A continuación
se describe una de las maneras más comunes para extender el concepto de gradiente a
funciones vectoriales. Considerando que para una función escalar 1(x, y) el gradiente es una
magnitud vectorial con magnitud VI (ecuación 11.75) y dirección (x, y) (ecuación 11.77).

Considérense los vectores unitarios r, gy b como los vectores unitarios que describen
el espacio de color RGB (véase figura 11.1), a partir de ellos se definen las siguientes
relaciones vectoriales:

A partir de estas relaciones se definen los siguientes productos vectoriales:

Una observación importante resulta el hecho de que tanto R, G y B, así como los
valores de 𝑔𝑥𝑥 . 𝑔𝑦𝑦 , y 𝑔𝑥𝑦 , son funciones que dependen de x e y. Considerando la notación
anterior Di Zenso mostró que la dirección donde se encuentra el valor máximo de cambio del
vector de color c (x, y) como función de (x, y) se define como:

Mientras que el valor máximo de la gradiente el cual ocurre en la dirección θ(x,y) se calcula a
partir de:
Es importante notar que tanto θ (x, y) como M (x, y) forman imágenes de la misma dimensión
de la imagen a color a la cual se pretende encontrar los bordes.

Debido a que como 𝑡𝑎𝑛(∝) = 𝑡𝑎𝑛(∝ ±𝜋), si 𝜃𝐴 , es una solución de 11.81 también lo será
𝜃𝐴 + 𝜋/2. Considerando lo anterior se cumple que 𝑀𝜃 (𝑥, 𝑦) = 𝑀𝜃𝐴 +𝜋/2 (𝑥, 𝑦). Atendiendo a
esta propiedad M(x, y) deberá ser calculada sólo en la mitad del intervalo [0, 𝜋], mientras que
los demás valores serán encontrados al volver a calcular los valores de 𝑀(𝑥, 𝑦), pero en esta
ocasión considerando 𝜃 + 𝜋/2. Si se realiza el cálculo tal y como fue descrito en el
procedimiento anterior existirán 2 matrices con los valores de los gradientes 𝑀𝜃 (𝑥, 𝑦) y
𝑀𝜃𝐴 +𝜋/2 (𝑥, 𝑦). Para el cálculo final se tomará el máximo de los dos. La figura 11.32 muestra
la magnitud del gradiente vectorial y la dirección, calculados a partir del algoritmo descrito en
la parte de arriba.

Figura 11.32 (a) Magnitud del gradiente vectorial 𝑀 (𝑥, 𝑦) y (b) dirección 𝜃 + 𝜋/2(𝑥, 𝑦) del
gradiente

11.14.2. Detección de bordes en imágenes a color usando


MatLAB

Para el cálculo vectorial del gradiente de una imagen a color, no existe ninguna función
directa implementada en el toolbox de procesamiento de imagen que permita el cálculo, por
lo que habrá que codificar el algoritmo descrito en la sección anterior en una función propia.
En esta subsección se describe la implementación de dos funciones, la primera es la
codificación el algoritmo para el cálculo vectorial del gradiente de una imagen a color,
mientras que la segunda representa el cálculo del gradiente de una imagen a color calculando
de manera individual a cada plano, lo último fue realizado a razón de hacer una comparación
de ambos métodos y mostrar que resulta más robusto el procesamiento vectorial.
El programa 11.2 muestra la implementación completa de la función gradcol que
calcula el gradiente vectorial de color M (x, y), y su dirección θ (x, y), a partir de una imagen
RGB.
El programa 11.3 muestra la implementación completa de la función gradplan que calcula la
magnitud del gradiente de una imagen a color, a partir del cálculo del gradiente de cada uno de los
planos en forma independiente y desacoplada.
Programa 11.3 Funcion gradplan que calcula la magnitud del gradiente de manera independiente
para cada plano definido

Del programa 11.3 puede verse, cómo después de obtener los valores de los gradientes de
cada plano, se calcula el gradiente total, como la suma de cada uno de los gradientes
obtenidos Gt=RG+GG+BG.

Con el objetivo de comparar el método del gradiente vectorial con el del gradiente calculado
de manera independiente en cada plano, se muestran en la figura 11.33 las imágenes
obtenidas de localizar los bordes, considerando en ambos casos un umbral de 0.3. Los
gradientes calculados para esta comparación fueron obtenidos a partir de las funciones
gradcol y gradplan codificadas en los programas 11.2 y 11.3.

Figura 11.33 (a) Localización de los bordes usando el método del gradiente vectorial y (b)
Localización de los bordes usando el método de calculo del gradiente plano por plano
11.15. PROCESAMIENTO DE IMÁGENES A
COLOR UTILIZANDO SIMULINK
En esta sección se presenta el bloque "Color Space Conversión", utilizado para la
conversión entre los diferentes espacios de color, así como también algunos ejemplos que
muestran la manera en que puede ser utilizado Simulink para el procesamiento de imágenes
a color.

11.15.1. Color Space Conversion (Conversión entre espacio


de colores)

Este bloque de la librería de procesamiento de imágenes y video de Simulink, ubicado


en la categoría "Conversions" (Conversiones), permite convertir entre diferentes modelos de
color. Los algoritmos utilizados para la realización de las conversiones fueron ya tratados en
las diferentes secciones a lo largo de este capítulo.

La figura 11.34 muestra la representación de este bloque. El bloque recibe como


entrada una imagen o frame de video en un formato de color definido, mientras que devuelve
una imagen o frame de vídeo de la imagen de entrada, pero convertido al modelo de color
configurado en el bloque.

Figura 11.34 Bloque que se implementa la Conversion entre diferentes espacios de color

El bloque se configura a partir de su ventana de configuración para seleccionar el tipo de


conversión requerida. Los algoritmos de conversión implementados en este bloque se
encuentran resumidos en la tabla 11.4.

Tabla 11.4 Tipos de Conversion por bloque “Color Sape Conversión”


Como fue descrito a lo largo del capítulo, algunos modelos de color en sus
descripciones aceptan diferentes variantes definidas por algunas normas. El bloque admite
dos diferentes tipos de normas que involucran el video estándar y de alta definición. La
configuración del tipo de norma es configurada a través de la elección de la norma en el
campo "Use conversion specified by" (usar la conversión especificada por). La figura 11.35
muestra la ventana de configuración del bloque.

Figura 11.35 Ventanilla de configuración del bloque Color Space Conversion

11.15.2. Ejemplos de aplicación

En este apartado se mostrará mediante dos programas, la manera en la que puede


ser utilizado Simulink y los elementos de la librería de procesamiento de imágenes y vídeo
para la realización de operaciones de color.

La primera aplicación representa el aumentar la nitidez de una imagen de color. El


algoritmo implementado corresponde al explicado en la sección 11.13.3, el cual a partir de la
aplicación a cada uno de los planos de color del filtro definido en 11.72 se configura la imagen
de color con una nitidez superior. La figura 11.36 muestra el programa en Simulink que
implementa el algoritmo.

El funcionamiento del algoritmo puede ser explicado de la siguiente manera: La


imagen captada por el bloque "From Video Device (1)" es dividida mediante la configuración
de este bloque en sus tres diferentes componentes. Cada una de las componentes es
convertida al tipo de dato double, a través del uso del bloque "Image Data Type Conversión
(2)". Los valores convertidos de cada plano son acoplados a la entrada I1 del bloque "2-D
Convolution (3)". El bloque "2-D Convolution" como ya ha sido visto a lo largo del libro, permite
filtrar espacialmente la imagen acoplada en la entrada I1 por la matriz de coeficientes definida
en la entrada I2. Por esta razón el filtro definido en 11.72 es acoplado a la entrada I2 de los
bloques "2-D Convolution". Para definir el filtro se usa el bloque "Image From Workspace (4)".
Este bloque permite que una matriz definida desde línea de comandos pueda ser incorporada
al flujo del programa en Simulink. De esta manera para que el programa definido en la figura
11.36 pueda ser ejecutado es necesario escribir en línea de comandos la sentencia:

La cual define el filtro descrito en la ecuación 11.72. Algo importante que forma parte
de la operación del bloque "2-D Convolution" es, que el bloque antes de desempeñar el filtrado
espacial rota 180° a la matriz w, sin embargo, dicha acción, al ser el filtro isotrópico (Invariante
a la rotación) no tiene consecuencia alguna sobre el resultado final.

Figura 11.36 Programa en Simulink que implementa la mejora de nitidez sobre las imágenes a color
captadas por la Webcam
Por último, las imágenes filtradas son fusionadas en una nueva imagen, la cual, será
más nítida que la captada por la Webcam. La figura 11.37 muestra el resultado obtenido
después de haber ejecutado el programa descrito en la figura 11.36.
En la segunda aplicación se intenta localizar los bordes de una imagen a color
implementando el algoritmo de gradiente vectorial descrito en la sección 11.14. Debido a que
Simulink es un lenguaje iconográfico, resulta complicado implementar el algoritmo en forma
completa, por lo que el sistema será dividido en varios subsistemas. Para crear un subsistema
basta con seleccionar un recuadro usando el ratón, de los elementos que engloban el
subsistema. Una vez seleccionado se extrae el menú, activado con el botón de la derecha y
se selecciona la opción "Create Subsystem" (crear subsistema).

La implementación del algoritmo se divide en 5 subsistemas los cuales realizan en sí


una operación monolítica que puede ser asociada con alguno de los pasos descritos en el
método para encontrar el gradiente vectorial. La figura 11.38 muestra el programa en Simulink
y los subsistemas en los que fue dividido para la implementación del algoritmo.

Figura 11.37 Resultado de haber ejecutado el programa de Simulink mostrado en 11.36


Figura 11.38 en Simulink que implementa la localización de bordes sobre imágenes a color captadas
de la Webcam, usando el algoritmo del gradiente vectorial

El subsistema 1 convierte el tipo de dato de cada uno de los planos entregados por la
Webcam. La conversión se realiza de single a double. El tipo de dato single es el tipo de dato
por defecto con el que se representan las imágenes. La razón de esta conversión es que en
el algoritmo se desempeñarán posteriormente varias operaciones que requieren como
entrada el tipo de dato double. La figura 11.39 muestra desglosado el subsistema 1. Cada
uno de los bloques "Image Data Type Conversion" deben de ser configurados para
implementar este tipo de configuración.

Fig. 11.39 Subsistema I. Subsistema que implementa la conversión de tipo dato de single a double

El subsistema 2 calcula los productos vectoriales definidos en la ecuación 11.80. La


figura 11.40 muestra el subsistema 2 desglosado.
Figura 11.40 Subsistema 2 utiliza para el cálculo que implementa los productos vectoriales descritos
en la ecuación 11.80
El subsistema 2 utiliza para el cálculo de los gradientes de cada plano el bloque "Edge
Detection" (descrito detalladamente en 7.4.3) de la librería de procesamiento de imágenes y
vídeo de Simulink. El bloque "Edge Detection" se configura para utilizar como filtro el Sobel
(Ec. 11.78), además en su campo "Output Type" debe seleccionarse "Gradient Components".
De esta manera las salidas del bloque serán los gradientes calculados en el sentido horizontal
(x) y vertical (v).

El subsistema 3 calcula la dirección donde el gradiente vectorial tiene su máxima


magnitud. El valor del ángulo donde esto sucede se encuentra definido por:
Figura 11.41 Subsistema 3. Subsistema que implementa el cálculo de la dirección (Ecuación
11.83) donde la gradiente vectorial experimenta su máxima magnitud.

En el cálculo de la dirección realizada en la ecuación 11.83, podría existir el caso de


que en el denominador sea cero, lo cual obviamente sucede cuando los productos vectoriales
8 y 8, son iguales. Para evitar este problema el subsistema 3 implementa en la diferencia
entre esos productos vectoriales un bloque "MATLAB Fen", el cual solamente adiciona a la
diferencia el valor eps. El término eps es un factor pequeño considerado en MatLAB para
evitar la división entre cero. La figura 11.42 muestra la ventana del bloque "MATLAB Fen"
usado en el subsistema 3.

Figura 11.42 Ventana de bloque “MatLAB Fcn” usado en el subsistema 3

El subsistema 4, calcula el gradiente vectorial en la dirección especificada por 11.83.


El valor del gradiente en esa dirección es especificado por:

La figura 11.43 muestra el subsistema 4 desglosado.


Figura 11.44 Subsistema 4. Subsistema que implementa el cálculo del gradiente vectorial
(Ecuación 11.84)
Sin embargo, el cálculo del ángulo realizado por el subsistema 3, debido a la
propiedad de la función trigonométrica, corresponde solo a la mitad del intervalo, por lo que
para calcular el intervalo completo habrá que sumarle al valor de estas direcciones la
constante л/2. Considerando lo anterior habrá que calcular de nueva cuenta la magnitud del
gradiente para los nuevos valores de dirección por lo que el subsistema 5 es completamente
igual al subsistema 4.

Para obtener el gradiente vectorial total se obtiene el máximo de la magnitud de las


salidas obtenidas por los subsistemas 4 y 5. Finalmente la localización de los bordes se
realiza aplicando un umbral de 0.05, realizada por el bloque "Compare to Constant".

La figura 11.45 muestra la imagen obtenida como resultado después de ejecutar el


programa en Simulink mostrado en la figura 11.38.
Figura 11.45 Resultante de haber ejecutado el programa en Simulink en 11.38

También podría gustarte