Contenido principal

image

Mostrar imágenes de un arreglo

Descripción

image(C) muestra los datos del arreglo C como una imagen. Cada elemento de C especifica el color de un píxel de la imagen. La imagen resultante es una cuadrícula de píxeles de m por n donde m es el número de filas y n es el número de columnas de C. Los índices de fila y de columna de los elementos determinan los centros de los píxeles correspondientes.

ejemplo

image(x,y,C) especifica la ubicación de la imagen. Utilice x e y para especificar las ubicaciones de las esquinas correspondientes a C(1,1) y C(m,n). Para especificar ambas esquinas, establezca x e y como vectores de dos elementos. Para especificar la primera esquina y dejar que image determine la otra, establezca x e y como valores escalares. La imagen se extiende y se orienta según corresponda.

ejemplo

image('CData',C) añade la imagen de los ejes actuales sin reemplazar las gráficas existentes. Esta sintaxis es la versión de bajo nivel de image(C). Para obtener más información, consulte Versión de alto nivel frente a versión de bajo nivel de la imagen.

image('XData',x,'YData',y,'CData',C) especifica la ubicación de la imagen. Esta sintaxis es la versión de bajo nivel de image(x,y,C).

image(___,Name,Value) especifica las propiedades de la imagen utilizando uno o más argumentos de par nombre-valor. Puede especificar las propiedades de la imagen con cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores.

ejemplo

image(ax,___) crea la imagen en los ejes especificados por ax en lugar de en los ejes actuales (gca). La opción ax puede preceder a cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores.

im = image(___) devuelve el objeto Image creado. Use im para establecer las propiedades de la imagen después de crearla. Puede especificar esta salida con cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores. Para obtener una lista de las propiedades y las descripciones de la imagen, consulte Image Properties.

ejemplo

Ejemplos

contraer todo

Cree una matriz C. Muestre una imagen de los datos en C. Añada una barra de color a la gráfica para mostrar el mapa de colores actual.

C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
image(C)
colorbar

Figure contains an axes object. The axes object contains an object of type image.

De forma predeterminada, la propiedad CDataMapping de la imagen se establece en 'direct', de modo que image interpreta los valores de C como índices del mapa de colores. Por ejemplo, el píxel inferior derecho correspondiente al último elemento de C, 22, usa el color número 22 del mapa de colores.

Establezca la propiedad CDataMapping en 'scaled' en el comento de crear la imagen para escalar los valores al rango completo del mapa de colores actual.

image(C,'CDataMapping','scaled')
colorbar

Figure contains an axes object. The axes object contains an object of type image.

Como alternativa, puede usar la función imagesc para escalar los valores en lugar de usar image(C,'CDataMapping','scaled'). Por ejemplo, use imagesc(C).

Coloque la imagen de forma que quede entre 5 y 8 en el eje x y entre 3 y 6 en el eje y.

x = [5 8];
y = [3 6];
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
image(x,y,C)

Figure contains an axes object. The axes object contains an object of type image.

Observe que el píxel correspondiente a C (1,1) está centrado sobre el punto (5,3). El píxel correspondiente a C (3,4) está centrado sobre el punto (8,6). image coloca y orienta el resto de la imagen entre esos dos puntos.

Cree C como un arreglo 3D de colores verdaderos. Establezca las dos últimas páginas del arreglo en cero para usar solo colores rojos.

C = zeros(3,3,3);
C(:,:,1) = [.1 .2 .3; .4 .5 .6; .7 .8 .9]
C = 
C(:,:,1) =

    0.1000    0.2000    0.3000
    0.4000    0.5000    0.6000
    0.7000    0.8000    0.9000


C(:,:,2) =

     0     0     0
     0     0     0
     0     0     0


C(:,:,3) =

     0     0     0
     0     0     0
     0     0     0

Muestre una imagen de los datos en C.

image(C)

Figure contains an axes object. The axes object contains an object of type image.

Represente una línea y, a continuación, cree una imagen sobre ella. Devuelva el objeto de imagen.

plot(1:3)
hold on
C = [1 2 3; 4 5 6; 7 8 9];
im = image(C);

Figure contains an axes object. The axes object contains 2 objects of type line, image.

Vuelva la imagen semitransparente para que la línea se vea a través de ella.

im.AlphaData = 0.5;

Figure contains an axes object. The axes object contains 2 objects of type line, image.

Lea el archivo de imagen JPEG.

C = imread('ngc6543a.jpg');

imread devuelve un arreglo de 650 por 600 por 3, C.

Visualice la imagen.

image(C)

Figure contains an axes object. The axes object contains an object of type image.

Cree una gráfica de superficie. A continuación, añada una imagen debajo de la superficie. image muestra la imagen en el plano xy.

Z = 10 + peaks;
surf(Z)
hold on 
image(Z,'CDataMapping','scaled')

Figure contains an axes object. The axes object contains 2 objects of type surface, image.

Argumentos de entrada

contraer todo

Datos de color de la imagen, especificados de una de estas formas:

  • Vector o matriz: este formato define datos de imagen indexados. Cada elemento de C define un color para un píxel de la imagen. Por ejemplo, C = [1 2 3; 4 5 6; 7 8 9];. Los elementos de C se asignan a colores del mapa de colores de los ejes asociados. La propiedad CDataMapping controla el método de aplicación.

  • Arreglo 3D de tripletes RGB: este formato define los datos de imagen en color verdadero utilizando valores de tripletes RGB. Cada triplete RGB define un color para un píxel de la imagen. Un triplete RGB es un vector de tres elementos que especifica las intensidades de los componentes rojo, verde y azul del color. La primera página del arreglo 3D contiene los componentes rojos, la segunda los verdes y la tercera los azules. Dado que la imagen usa colores verdaderos en lugar de colores de un mapa de colores, la propiedad CDataMapping no tiene ningún efecto.

    • Si C es de tipo double, un valor de triplete RGB de [0 0 0] se corresponde con el negro y [1 1 1] con el blanco.

    • Si C es de tipo entero, la imagen usa toda la gama de datos para determinar el color. Por ejemplo, si C es de tipo uint8, [0 0 0] se corresponde con el negro y [255 255 255] con el blanco. Si CData es de tipo int8, [-128 -128 -128] se corresponde con el negro y [127 127 127] con el blanco.

    • Si C es de tipo logical, [0 0 0] se corresponde con el negro y [1 1 1] con el blanco.

Esta ilustración muestra las dimensiones relativas de C para los dos modelos de color.

Diagram of the color image data, or CData, for indexed colors and true colors. The CData for indexed colors is an m-by-n array. The CData for true colors is an m-by-n-by-3 array.

El comportamiento de los elementos de NaN no está definido.

Para utilizar la versión de bajo nivel de la función image en su lugar, establezca la propiedad CData como par de nombre-valor. Por ejemplo, image('CData',C).

Conversión entre tipos de datos double y enteros

Cuando se llama a la función image con un vector o una matriz 2D y se usa el valor CDataMapping predeterminado, hay que desplazar los valores de los datos en 1 en el momento de realizar la conversión entre valores double y tipos enteros. Este desplazamiento no es necesario cuando CDataMapping está establecido en 'scaled'.

Por ejemplo, si U8 contiene datos de imagen indexados de tipo uint8, puede convertirlos a tipo double de la siguiente manera:

D = double(U8) + 1;

Para convertir datos de imagen indexados de tipo double a un tipo entero, reste 1 y use round para asegurarse de que todos los valores son enteros. Por ejemplo, si D contiene datos de imagen indexados de tipo double, conviértalos a uint8 de la siguiente manera:

U8 = uint8(round(D - 1));

Conversión entre valores double normalizados y valores de color verdadero

Para convertir datos de imagen de color verdadero de un tipo entero a un tipo double, reescale los datos. Por ejemplo, si RGB8 son datos de imagen de color verdadero de tipo uint8, conviértalos a double de la siguiente manera:

RGB = double(RGB8)/255;

Para convertir datos de imagen de color verdadero de tipo double a un tipo entero, reescale los datos y utilice round para asegurarse de que todos los valores son enteros. Por ejemplo, si RGB son datos de imagen de tipo double, conviértalos a uint8 de la siguiente manera:

RGB8 = uint8(round(RGB*255));

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Colocación en el eje x, especificada de una de las siguientes formas:

  • Vector de dos elementos: utilice el primer elemento como ubicación para el centro de C(1,1) y el segundo elemento como ubicación para el centro de C(m,n), donde [m,n] = size(C). Si C es un arreglo 3D, m y n son las primeras dos dimensiones. Distribuya uniformemente los centros de los elementos restantes de C entre esos dos puntos.

    El ancho de cada píxel se determina mediante la expresión:

    (x(2)-x(1))/(size(C,2)-1)

    Si x(1) > x(2), la imagen se invierte de izquierda a derecha.

  • Escalar: centra C(1,1) en esta ubicación y cada elemento siguiente a una unidad de distancia.

Nota

  • Si x tiene más de dos elementos, image utiliza el primer y último elemento e ignora los otros.

  • Para utilizar la versión de bajo nivel de la función image en su lugar, establezca la propiedad XData usando un argumento nombre-valor. Por ejemplo, image('XData',x,'YData',y,'CData',C).

  • No puede desplazarse ni acercarse/alejarse interactivamente fuera de los límites del eje x o del eje y de una imagen, a menos que los límites ya se hayan establecido fuera de los límites de la imagen. Si los límites ya están fuera de los límites de la imagen, no existe tal restricción. Si otros objetos (como una línea) ocupan los ejes y se extienden más allá de los límites de la imagen, puede desplazarse o acercarse/alejarse en los límites de los otros objetos, pero no más allá.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime (desde R2023b) | duration (desde R2023b) | categorical (desde R2023b)

Colocación en el eje y, especificada de una de las siguientes formas:

  • Vector de dos elementos: utilice el primer elemento como ubicación para el centro de C(1,1) y el segundo elemento como ubicación para el centro de C(m,n), donde [m,n] = size(C). Si C es un arreglo 3D, m y n son las primeras dos dimensiones. Distribuya uniformemente los centros de los elementos restantes de C entre esos dos puntos.

    La altura de cada píxel se determina mediante la expresión:

    (y(2)-y(1))/(size(C,1)-1)

    Si y(1) > y(2), la imagen se invierte de arriba abajo.

  • Escalar: centra C(1,1) en esta ubicación y cada elemento siguiente a una unidad de distancia.

Nota

  • Si y tiene más de dos elementos, image utiliza el primer y último elemento e ignora los otros.

  • Para utilizar la versión de bajo nivel de la función image en su lugar, establezca la propiedad YData usando un argumento nombre-valor. Por ejemplo, image('XData',x,'YData',y,'CData',C).

  • No puede desplazarse ni acercarse/alejarse interactivamente fuera de los límites del eje x o del eje y de una imagen, a menos que los límites ya se hayan establecido fuera de los límites de la imagen. Si los límites ya están fuera de los límites de la imagen, no existe tal restricción. Si otros objetos (como una línea) ocupan los ejes y se extienden más allá de los límites de la imagen, puede desplazarse o acercarse/alejarse en los límites de los otros objetos, pero no más allá.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime (desde R2023b) | duration (desde R2023b) | categorical (desde R2023b)

Objeto Axes. Si no especifica un objeto Axes, image utiliza los ejes actuales.

Argumentos de par nombre-valor

contraer todo

Especifique pares opcionales de argumentos como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

En las versiones anteriores a R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: image([1 2 3],'AlphaData',0.5) muestra una imagen semitransparente.

Las propiedades que se enumeran aquí son un subconjunto de propiedades de imagen. Para obtener una lista completa, consulte Image Properties.

Método de aplicación de datos de color, especificado como 'direct' o 'scaled'. Use esta propiedad para controlar la aplicación de valores de datos de color de CData al mapa de colores. CData debe ser un vector o una matriz que defina colores indexados. Esta propiedad no tiene efecto si CData es un arreglo 3D que define colores verdaderos.

Los métodos tienen estos efectos:

  • 'direct': interpreta los valores como índices en el mapa de color actual. Los valores con porción decimal se fijan al entero menor más próximo.

    • Si los valores son de tipo double o single, los valores de 1 o inferior se asignan al primer color del mapa de colores. Los valores iguales a o mayores que la longitud del mapa de colores se asignan al último color del mapa de colores.

    • Si los valores son de tipo uint8, uint16, uint32, uint64, int8, int16, int32 o int64, los valores de 0 o inferiores se asignan al primer color del mapa de colores. Los valores iguales a o mayores que la longitud del mapa de colores se asignan al último color del mapa de colores (o hasta los límites de rango del tipo).

    • Si los valores son del tipo logical, los valores de 0 se asignan al primer color del mapa de colores y los valores de 1 se asignan al segundo color del mapa.

  • 'scaled': escala los valores para que estén entre los límites de color mínimo y máximo. La propiedad CLim de los ejes contiene los límites de color.

Datos de transparencia, especificados de una de las siguientes formas:

  • Escalar: usa una transparencia consistente en toda la imagen.

  • Arreglo del mismo tamaño que CData: usa un valor de transparencia diferente para cada elemento de la imagen.

La propiedad AlphaDataMapping controla cómo MATLAB® interpreta los valores de transparencia de los datos alfa.

Ejemplo: 0.5

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Interpretación de los valores AlphaData, especificada como uno de estos valores:

  • 'none': interpreta los valores como valores de transparencia. Un valor de 1 o superior indica una opacidad total; un valor de 0 o inferior, una transparencia total y un valor entre 0 y 1, semitransparencia.

  • 'scaled': asigna los valores al mapa alfa de la figura. Los límites alfa mínimo y máximo de los ejes determinan los valores de datos alfa que se asignan al primer y último elemento del mapa alfa, respectivamente. Por ejemplo, si los límites alfa son [3 5], los valores de datos alfa menores que o iguales a 3 se asignan al primer elemento del mapa alfa. Todos los valores de datos alfa mayores que o iguales a 5 se asignan al último elemento del mapa alfa. La propiedad ALim de los ejes contiene los límites alfa. La propiedad Alphamap de la figura contiene el mapa alfa.

  • 'direct': interpreta los valores como índices del mapa alfa de la figura. Los valores con porción decimal se fijan al entero menor más próximo:

    • Si los valores son del tipo double o single, los valores de 1 o inferior se asignan al primer elemento del mapa alfa. Los valores iguales a o mayores que la longitud del mapa alfa se asignan al último elemento del mapa alfa.

    • Si los valores son del tipo entero, los valores de 0 o inferior se asignan al primer elemento del mapa alfa. Los valores iguales a o mayores que la longitud del mapa alfa se asignan al último elemento del mapa alfa (o hasta los límites de rango del tipo). Los tipos enteros son uint8, uint16, uint32, uint64, int8, int16, int32 e int64.

    • Si los valores son del tipo logical, los valores de 0 se asignan al primer elemento del mapa alfa y los valores de 1 se asignan al segundo elemento del mapa alfa.

Argumentos de salida

contraer todo

Objeto Image, devuelto como un escalar. Use im para establecer las propiedades de la imagen después de crearla. Para obtener una lista, consulte Image Properties.

Más acerca de

contraer todo

Sugerencias

  • Para leer datos de imágenes en MATLAB desde archivos de gráficas en varios formatos estándar, como TIFF, utilice imread. Para escribir datos de imágenes de MATLAB en archivos de gráficas, utilice imwrite. Las funciones imread e imwrite admiten varios formatos de archivos de gráficas y esquemas de compresión.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo

Consulte también

Funciones

Propiedades