Imágenes A Color
Imágenes A Color
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.
Cada posible color C, corresponde a un punto dentro del cubo RGB con los
componentes:
𝑪𝒊 = (𝑹𝒊 , 𝑮𝒊 , 𝑩𝒊 ) (11.1)
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.
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.
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.
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
(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:
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
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:
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:
ℎ(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.
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.
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:
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)
R (x, y) = E (x, y)
G (x, y) = E (x, y) (11.11)
B (x, y) = E (x, y)
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
Si se considera que:
(11.13)
(11.14)
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)
(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)
(11.21)
Para L,
𝐶𝑚𝑎𝑥 +𝐶𝑚𝑖𝑛
𝐿= (11.22)
2
Para S,
(11.23)
(11.24)
(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
(11.26)
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)
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.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)
(11.31)
(11.32)
(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.34)
(11.35)
(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.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.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.42)
(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.
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.
(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
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
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:
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).
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*.
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
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.
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.
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)
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
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
MatLAB utiliza la función rgb2ind para convertir una imagen RGB a una imagen indexada, la
sintaxis general de esta función es:
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
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.
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:
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.
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.
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
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.
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
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.
Para suavizar una imagen a color mediante el empleo de un filtro espacial, se realiza el
siguiente proceso:
3. Los resultados encontrados para cada plano son fusionados de nueva cuenta para formar
la nueva imagen de color suavizada.
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.
Se tendría que
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:
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.
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:
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:
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
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.
Figura 11.34 Bloque que se implementa la Conversion entre diferentes espacios de color
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).
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