Main Content

imlincomb

イメージの線形結合

説明

Z = imlincomb(K1,A1,K2,A2,...,Kn,An) は、

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

に従い、重み K1K2、...、Kn を使用してイメージ A1A2、...、An の線形結合を計算します。

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

イメージをローパス フィルター処理したコピーを作成します。

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

IJ の線形結合を使用し、差分イメージを求めて 0 の値を 128 にシフトします。

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

結果の差分イメージを表示します。

imshow(K)

2 つの uint8 グレースケール イメージをワークスペースに読み取ります。

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

線形結合を使用してイメージを加算します。結果の切り捨てが生じないように、出力を uint16 型で指定します。

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

結果を表示します。

imshow(K,[])

この例では、イメージ上で一連の算術演算を実行するときに、呼び出しを入れ子にする場合と線形結合を使用する場合の違いを説明します。imlincomb が結果を切り捨てる前にすべての算術演算をどのように行うかを示すために、入れ子の算術関数を使用した場合と imlincomb を使用した場合で、2 つの配列 XY の平均を計算し、その結果を比較します。

2 つの配列を作成します。

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 の出力クラス。数値クラスの名前を含む文字ベクトルまたは string スカラーとして指定します。

例: 'uint16'

例: "double"

出力引数

すべて折りたたむ

線形結合されたイメージ。A1 と同じサイズの数値配列として返されます。A1logical の場合、Zdouble であり、それ以外の場合、ZA1 と同じクラスになります。

ヒント

  • 一組のイメージに一連の代数演算を適用する場合、imlincomb を使用して、演算を組み合わせた場合、imadd のように個々の代数関数を入れ子にして呼び出すより、むしろ、より精度の高いものが得られます。代数関数への入れ子の呼び出しを行う場合、入力配列は整数のクラスになり、個々の関数は、次の関数に渡される前に、切り捨てられ、丸められるため、最終結果の精度は低下します。imlincomb は、倍精度浮動小数点で、出力 Z の各要素を個々に計算します。Z が整数配列の場合、imlincomb は、整数型の範囲を超える Z の要素を切り取り、小数部の値を丸めます。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する