Main Content

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, A1, A2, … , An, con ponderaciones K1, K2, … , Kn según:

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

ejemplo

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

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

ejemplo

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

Ejemplos

contraer todo

Lea 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);

Muestre la imagen original y la imagen procesada.

imshow(I)

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

figure
imshow(J)

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

Lea 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 cambie el valor cero a 128 utilizando una combinación lineal de I y J.

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

Muestre la imagen de diferencia resultante.

imshow(K)

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

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

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

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

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

Muestre el resultado.

imshow(K,[])

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

Este ejemplo muestra la diferencia entre anidar llamadas y utilizar combinaciones lineales al realizar una serie de operaciones aritméticas sobre imágenes. Para ilustrar cómo imlincomb realiza todas las operaciones aritméticas antes de truncar el resultado, compare los resultados de calcular el promedio de dos arreglos, X e Y, utilizando funciones aritméticas anidadas y imlincomb.

Cree dos arreglos.

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

Promedie los arreglos utilizando funciones aritméticas anidadas. Para calcular el promedio devuelto en Z(1,1), la función imadd suma 255 y 50 y trunca el resultado a 255 antes de pasarlo a imdivide. El promedio devuelto en Z(1,1) es 128.

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

   128    25    63
    47   128    75

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

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.

Tipos de datos: double

Imágenes de entrada, especificadas como arreglos numéricos del mismo tamaño y clase.

Desplazamiento, especificado como escalar numérico.

Tipos de datos: double

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

Ejemplo: 'uint16'

Ejemplo: "double"

Argumentos de salida

contraer todo

Imagen combinada linealmente, devuelta como arreglo numérico del mismo tamaño que A1. Si A1 es logical, entonces Z es double; de lo contrario, Z tiene la misma clase que A1.

Sugerencias

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

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

expandir todo