Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Tipos de imagen

Imágenes indexadas

Una imagen indexada consta de una matriz de datos, X, y una matriz de mapa de colores, map. map es un arreglo m por 3 de clase double que contiene valores en punto flotante en el rango [0, 1]. Cada fila de map especifica los componentes rojos, verdes y azules de un solo color. Una imagen indexada utiliza la “aplicación directa” de valores de píxel a los valores del mapa de colores. El color de cada píxel de imagen se determina utilizando el valor correspondiente de X como índice en map. Por lo tanto, los valores de X deben ser enteros. El valor 1 hace referencia a la primera fila de map, el valor 2 a la segunda, y así sucesivamente. Mostrar una imagen indexada con las instrucciones

image(X); colormap(map)

Un mapa de colores se suele almacenar con una imagen indexada y se carga automáticamente con la imagen cuando utiliza la función imread. Sin embargo, no tiene que utilizar el mapa de colores predeterminado, puede utilizar cualquier mapa de colores que elija. La descripción de la propiedad CDataMapping indica cómo cambiar el tipo de aplicación utilizado.

La siguiente figura muestra la estructura de una imagen indexada. Los píxeles de la imagen están representados por enteros, que son punteros (índices) para colorear los valores almacenados en el mapa de colores.

La relación entre los valores de la matriz de imagen y el mapa de colores depende de la clase de la matriz de imagen. Si la matriz de imagen es de clase double, el valor 1 hace referencia a la primera fila del mapa de colores, el valor 2 a la segunda fila, y así sucesivamente. Si la matriz de imagen es de clase uint8 o uint16, se produce un desfase: el valor 0 hace referencia a la primera fila del mapa de colores, el valor 1 a la segunda fila, y así sucesivamente. El desfase también se utiliza en los formatos de archivos gráficos para aumentar el número de colores que se admiten. En la imagen anterior, la matriz de imagen es de clase double. Puesto que no hay ningún desfase, el valor 5 hace referencia a la quinta fila del mapa de colores.

Nota

Al utilizar el renderizador de pintores en la plataforma Windows®, debe utilizar únicamente 256 colores al intentar mostrar una imagen indexada. Los mapas de colores más grandes pueden provocar colores inesperados, ya que el algoritmo de pintores utiliza la paleta de 256 colores de Windows, cuyos controladores y hardware gráficos tienen un funcionamiento diferente. Para solucionar este problema, utilice el renderizador de Zbuffer o OpenGL, según corresponda.

Imágenes en escala de grises (intensidad)

Una imagen en escala de grises, también denominada imagen de intensidad, es una matriz de datos I cuyos valores representan identidades en un rango. Una imagen en escala de grises se representa como una matriz única, donde cada elemento de la matriz corresponde a un píxel de imagen. La matriz puede ser de clase double, uint8 o uint16. Aunque las imágenes en escala de grises no se suelen guardar en un mapa de colores, se sigue utilizando uno para mostrarlas. En esencia, las imágenes en escala de grises se consideran imágenes indexadas.

Esta figura representa una imagen en escala de grises de clase double.

Para mostrar una imagen en escala de grises, utilice la función imagesc (“escala de imagen”), que le permite configurar el rango de valores de intensidad. imagesc escala los datos de imagen para utilizar el mapa de colores completo. Utilice la forma de dos entradas de imagesc para mostrar una imagen en escala de grises, por ejemplo:

imagesc(I,[0 1]); colormap(gray);

El segundo argumento de entrada para imagesc especifica el rango de intensidad deseado. La función imagesc muestra I al asignar el primer valor del rango (normalmente es 0) a la primera entrada del mapa de colores y el segundo valor (normalmente es 1) a la última entrada del mapa de colores. Los valores que se encuentran en medio se distribuyen de forma lineal a lo largo de los colores restantes del mapa de colores.

Aunque se suele mostrar una imagen en escala de grises mediante un mapa de colores de escala de grises, es posible utilizar otros mapas de colores. Por ejemplo, las siguientes instrucciones muestran la imagen en escala de grises I con sombras azules y verdes:

imagesc(I,[0 1]); colormap(winter);

Para mostrar una matriz A con un rango arbitrario de valores como una imagen en escala de grises, utilice la forma de entrada única de imagesc. Con un argumento de entrada, imagesc asigna el valor mínimo de la matriz de datos a la primera entrada del mapa de colores y el valor máximo a la última entrada del mapa de colores. Por ejemplo, estas dos líneas son equivalentes:

imagesc(A); colormap(gray)
imagesc(A,[min(A(:)) max(A(:))]); colormap(gray)

Imágenes RGB (de color real)

Una imagen RGB, también denominada imagen de color real, se almacena como un arreglo de datos m por n por 3 que define los componentes de color rojo, verde y azul para cada píxel individual. Las imágenes RGB no utilizan una paleta. El color de cada píxel se determina mediante la combinación de las intensidades de rojo, verde y azul almacenadas en cada plano de color de la ubicación del píxel. Los formatos de archivos gráficos almacenan las imágenes RGB como imágenes de 24 bits, en las que los componentes de rojo, verde y azul son de 8 bits cada uno. Esto ofrece un potencial de 16 millones de colores. La precisión con la que se pueden representar imágenes reales es la razón por la que se denominan “imágenes de color real”.

Un arreglo RGB de MATLAB® puede ser de clase double, uint8 o uint16. En un arreglo RGB de clase double, cada componente de color es un valor entre 0 y 1. Un píxel cuyos componentes de color son (0,0,0) se muestra como negro y un píxel cuyos componentes de color son (1,1,1) se muestra como blanco. Los tres componentes de color de cada píxel se almacenan en la tercera dimensión del arreglo de datos. Por ejemplo, los componentes de color rojo, verde y azul del píxel (10,5) se almacenan en RGB(10,5,1), RGB(10,5,2) y RGB(10,5,3), respectivamente.

Para mostrar la imagen de color real RGB, utilice la función image:

image(RGB)

La siguiente figura muestra una imagen RGB de clase double.

Para determinar el color del píxel en (2,3), mire el triplete RGB almacenado en (2,3,1:3). Suponga que (2,3,1) contiene el valor 0.5176, que (2,3,2) contiene el valor 0.1608 y que (2,3,3) contiene el valor 0.0627. El color del píxel en (2,3) es

0.5176 0.1608 0.0627