imlincomb

Линейная комбинация изображений

Описание

пример

Z = imlincomb(K1,A1,K2,A2,...,Kn,An) вычисляет линейную комбинацию изображений, A1, A2, …, An, с весами K1, K2, …, Kn согласно:

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

Опционально можно вычислить линейную комбинацию с помощью графического процессора (требует Parallel Computing Toolbox™).

пример

Z = imlincomb(K1,A1,K2,A2,...,Kn,An,K) добавляет смещение, K, к линейной комбинации:

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

пример

Z = imlincomb(___,outputClass) задает выходной класс Z.

Примеры

свернуть все

Считайте изображение в рабочую область.

I = imread('cameraman.tif');

Масштабируйте изображение с помощью коэффициента 1,5 в линейной комбинации.

J = imlincomb(1.5,I);

Отобразите оригинальное изображение и обработанное изображение.

imshow(I)

figure
imshow(J)

Считайте изображение в рабочую область.

I = imread('cameraman.tif');

Создайте отфильтрованную копию lowpass изображения.

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

Найдите, что различие отображает и переключает нулевое значение к 128 использованиям линейной комбинации I и J.

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

Отобразите получившееся изображение различия.

imshow(K)

Считайте два полутоновых uint8 изображения в рабочую область.

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

Добавьте изображения с помощью линейной комбинации. Задайте выход как тип uint16 постараться не обрезать результат.

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

Отобразите результат.

imshow(K,[])

Этот пример показывает различие между вложенными вызовами и использующий линейные комбинации при выполнении серии арифметических операций на изображениях. Проиллюстрировать как imlincomb выполняет все арифметические операции прежде, чем обрезать результат, сравните результаты вычисления среднего значения двух массивов, X и Y, использование вложенных арифметических функций и использование imlincomb.

Создайте два массива.

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

Насчитайте массивы с помощью вложенных арифметических функций. Вычислить среднее значение, возвращенное в Z(1,1), функциональный imadd добавляет 255 и 50 и обрезает результат до 255 прежде, чем передать его imdivide. Среднее значение возвращено в Z(1,1) 128.

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

   128    25    63
    47   128    75

В отличие от этого imlincomb выполняет сложение и деление в двойной точности и только обрезает конечный результат. Среднее значение возвращено в Z2(1,1) 153.

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

   153    25    63
    47   138    75

Входные параметры

свернуть все

Отобразите коэффициенты, заданные в виде чисел.

Типы данных: double

Введите изображения, заданные как числовые массивы, одного размера и класс.

Возместите, заданный в виде числа.

Типы данных: double

Выходной класс Z, заданный как скаляр строки или вектор символов, содержащий имя числового класса.

Пример: 'uint16'

Пример: "double"

Выходные аргументы

свернуть все

Линейно объединенное изображение, возвращенное как числовой массив одного размера с A1. Если A1 islogical, затем Z double, в противном случае Z имеет тот же класс как A1.

Советы

  • При выполнении серии арифметических операций на паре изображений можно достигнуть более точных результатов, если вы используете imlincomb объединить операции, а не вложение вызывает к отдельным арифметическим функциям, таким как imadd. Когда вы вкладываете вызовы арифметических функций, и входные массивы имеют целочисленный класс, каждая функция обрезает и округляет результат прежде, чем передать его следующей функции, таким образом теряя точность в конечном результате. imlincomb вычисляет каждый элемент выхода Z индивидуально, в плавающей точке двойной точности. Если Z целочисленный массив, imlincomb элементы клипов Z это превышает область значений целочисленного типа, и округляет дробные значения.

Расширенные возможности

Смотрите также

| | | |

Представлено до R2006a