Image Processing Toolbox | ![]() ![]() |
Compute linear combination of images
Syntax
Z = imlincomb(K1,A1,K2,A2,...,Kn,An) Z = imlincomb(K1,A1,K2,A2,...,Kn,An,K) Z = imlincomb(..., output_class)
Description
Z = imlincomb(K1,A1,K2,A2,...,Kn,An)
computes:
where K1
, K2
, through Kn
are real, double scalars and A1
, A2
, through An
are real, nonsparse, numeric arrays with the same class and size. Z
has the same class and size as A1
.
Z =
imlincomb(
K1,A1,K2,A2,...,Kn,An,K)
computes:
where imlincomb
adds K
, a real, double scalar, to the sum of the products of K1
through Kn
and A1
through An
.
Z =
imlincomb(...,output_class)
lets you specify the class of Z
. output_class
is a string containing the name of a numeric class.
Example
Scale an image by a factor of two.
Form a difference image with the zero value shifted to 128.
I = imread('cameraman.tif'); J = uint8(filter2(fspecial('gaussian'), I)); K = imlincomb(1,I,-1,J,128); % K(r,c) = I(r,c) - J(r,c) + 128 imshow(K)
To illustrate how imlincomb
performs all the arithmetic operations before truncating the result, compare the results of calculating the average of two arrays, X
and Y
, using nested arithmetic functions and then using imlincomb
.
Consider the values in row 1, column 1: 255
in the X
and 50
in Y
. In the version that uses nested arithmetic functions, imadd
adds 255
and 50
and truncates the result to 255
before passing it to imdivide
. The average returned in Z(1,1)
is 128
.
X = uint8([ 255 10 75; 44 225 100]); Y = uint8([ 50 20 50; 50 50 50 ]); Z = imdivide(imadd(X,Y),2) Z = 128 15 63 47 128 75
imlincomb
performs the addition and division in double precision and only truncates the final result. The average returned in Z2(1,1)
is 153
.
Form a difference image with the zero value shifted to 128.
I = imread('cameraman.tif'); J = uint8(filter2(fspecial('gaussian'), I)); K = imlincomb(1,I,-1,J,128); % K(r,c) = I(r,c) - J(r,c) + 128 imshow(K)
See Also
imadd
, imcomplement
, imdivide
, immultiply
, imsubtract
![]() | imimposemin | immovie | ![]() |