Contenido principal

imlincomb

Combinación lineal de imágenes

Descripción

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 el tipo de datos de salida de Z.

ejemplo

Ejemplos

contraer todo

Lea una imagen en el área 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 hidden axes object contains an object of type image.

figure
imshow(J)

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

Lea una imagen en el área 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 hidden axes object contains an object of type image.

Lea dos imágenes de escala de grises uint8 en el área 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 hidden 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 = 2×3 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 = 2×3 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

Tipo de datos de salida de Z, especificado como un escalar de cadena o un vector de caracteres que contiene el nombre de un tipo de datos numérico.

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

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo