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.

imlincomb

Combinación lineal de imágenes

Descripción

ejemplo

Z = imlincomb(K1,A1,K2,A2,...,Kn,An) calcula la combinación lineal de imágenes,,,...,, con pesos,,..., según:A1A2AnK1K2Kn

Z = K1*A1 + K2*A2 + ... + Kn*An

Opcionalmente, puede calcular la combinación lineal usando una GPU (requiere).Parallel Computing Toolbox™ Para obtener más información, consulte.Procesamiento de imágenes en una GPU

ejemplo

Z = imlincomb(K1,A1,K2,A2,...,Kn,An,K) añade un desfase, a la combinación lineal:K

Z = K1*A1 + K2*A2 + ... + Kn*An + K

ejemplo

Z = imlincomb(___,outputClass) Especifica la clase de salida de.Z

Ejemplos

contraer todo

Leer una imagen en el espacio de trabajo.

I = imread('cameraman.tif');

Escale la imagen utilizando un coeficiente de 1,5 en la combinación lineal.

J = imlincomb(1.5,I);

Visualice la imagen original y la imagen procesada.

imshow(I)

figure imshow(J)

Leer una imagen en el espacio de trabajo.

I = imread('cameraman.tif');

Cree una copia filtrada de paso bajo de la imagen.

J = uint8(filter2(fspecial('gaussian'), I));

Encuentre la imagen de diferencia y desplace el valor cero a 128 usando una combinación lineal de y.IJ

K = imlincomb(1,I,-1,J,128); %K(r,c) = I(r,c) - J(r,c) + 128

Visualice la imagen de diferencia resultante.

imshow(K)

Lea dos imágenes en escala de grises en el espacio de trabajo.uint8

I = imread('rice.png'); J = imread('cameraman.tif');

Añada las imágenes utilizando una combinación lineal. Especifique la salida como tipo para evitar truncar el resultado.uint16

K = imlincomb(1,I,1,J,'uint16');

Mostrar el resultado.

imshow(K,[])

Lea dos imágenes en escala de grises en el espacio de trabajo y conviértelos en s.uint8gpuArray

I = gpuArray(imread('rice.png')); J = gpuArray(imread('cameraman.tif')); 

Añada las imágenes utilizando una combinación lineal en una GPU. Especifique la salida como tipo para evitar truncar el resultado.uint16

K = imlincomb(1,I,1,J,'uint16');

Mostrar el resultado.

figure imshow(K,[]) 

En este ejemplo se muestra la diferencia entre anidar llamadas y usar combinaciones lineales al realizar una serie de operaciones aritméticas en imágenes. Para ilustrar cómo realiza todas las operaciones aritméticas antes de truncar el resultado, compare los resultados del cálculo del promedio de dos matrices y, utilizando las funciones aritméticas anidadas y el uso.imlincombXYimlincomb

Cree dos matrices.

X = uint8([ 255 0 75; 44 225 100]); Y = uint8([ 50 50 50; 50 50 50 ]);

Promediar las matrices utilizando funciones aritméticas anidadas. Para calcular el promedio devuelto en, la función agrega 255 y 50 y trunca el resultado a 255 antes de pasarlo a.Z(1,1)imaddimdivide El promedio devuelto es 128.Z(1,1)

Z = imdivide(imadd(X,Y),2)
Z = 2x3 uint8 matrix

   128    25    63
    47   128    75

Por el contrario, realiza la adición y división en doble precisión y sólo trunca el resultado final.imlincomb El promedio devuelto es 153.Z2(1,1)

Z2 = imlincomb(.5,X,.5,Y)
Z2 = 2x3 uint8 matrix

   153    25    63
    47   138    75

Argumentos de entrada

contraer todo

Coeficientes de imagen, especificados como escalares numéricos reales.

Para calcular la combinación lineal mediante una GPU, especifique los coeficientes de la imagen como s que contienen cada uno un escalar numérico.gpuArray

Tipos de datos: double

Las imágenes de entrada, especificadas como matrices numéricas del mismo tamaño y clase.

Para calcular la combinación lineal mediante una GPU, especifique las imágenes de entrada como s que contienen una matriz numérica del mismo tamaño y clase.gpuArray

Offset, especificado como un escalar numérico.

Tipos de datos: double

Clase de salida, especificada como una cadena escalar o vector de caracteres que contiene el nombre de una clase numérica.Z

Ejemplo: 'uint16'

Ejemplo: "double"

Argumentos de salida

contraer todo

Imagen combinada linealmente, devuelta como una matriz numérica del mismo tamaño que.A1 Si es, entonces es, de lo contrario tiene la misma clase que.A1logicalZdoubleZA1

Si la combinación lineal se calcula mediante una GPU, se devuelve como una matriz numérica que contiene.ZgpuArray

Sugerencias

  • Al realizar una serie de operaciones aritméticas en un par de imágenes, puede obtener resultados más precisos si utiliza para combinar las operaciones, en lugar de anidar llamadas a las funciones aritméticas individuales, como.imlincombimadd Al anidar llamadas a las funciones aritméticas, y las matrices de entrada son de una clase de enteros, cada función trunca y redondea el resultado antes de pasarlo a la siguiente función, perdiendo así la precisión en el resultado final. calcula cada elemento de la salida individualmente, en punto flotante de precisión doble.imlincombZ Si es una matriz de enteros, los elementos de clips que superan el intervalo del tipo entero y redondea los valores fraccionarios.ZimlincombZ

Capacidades ampliadas

Introducido antes de R2006a