ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

imlincomb

イメージの線形結合

構文

Z = imlincomb(K1,A1,K2,A2,...,Kn,An)
Z = imlincomb(K1,A1,K2,A2,...,Kn,An,K)
Z = imlincomb(___,output_class)
gpuarrayZ = imlincomb(gpuarrayK,gpuarrayA,___,output_class)

説明

Z = imlincomb(K1,A1,K2,A2,...,Kn,An) は次の式を計算します。

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

ここで、K1, K2, ...... Kn は、実数の double のスカラーで、A1, A2, ...... An は、同じクラスとサイズをもつ実数の非スパース数値配列です。ZA1 とクラスおよびサイズが同じです。ただし、A1 が論理値の場合は Z が double になります。

Z = imlincomb(K1,A1,K2,A2,...,Kn,An,K) は次の式を計算します。

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

ここで、imlincomb は、実数で、double のスカラー K を追加し、K1 から Kn までの積と A1 から An までの積の和を計算します。

Z = imlincomb(___,output_class) によって、Z のクラスを指定します。output_class は、数値クラスの名前を含む文字ベクトルです。

gpuarrayZ = imlincomb(gpuarrayK,gpuarrayA,___,output_class) は GPU で処理を実行します。入力値 gpuarrayKgpuarrayA は gpuArray で、出力値 gpuarrayZ は gpuArray です。この構文では Parallel Computing Toolbox™ が必要です。

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

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

例 1

イメージを 2 の係数でスケーリングします。

I = imread('cameraman.tif');
J = imlincomb(2,I);
imshow(J)

GPU での例 1

イメージを 2 の係数でスケーリングする処理を GPU で実行します。

I = gpuArray(imread('cameraman.tif'));
J = imlincomb(2,I);
imshow(J)

例 2

0 の値を 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
figure, imshow(K)

GPU での例 2

ゼロ値を 128 までシフトして異なるイメージを作成する処理を GPU で実行します。

I = gpuArray(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
figure, imshow(K)

例 3

指定した出力クラスをもつ 2 つのイメージを加算します。

I = imread('rice.png');
J = imread('cameraman.tif');
K = imlincomb(1,I,1,J,'uint16');
figure, imshow(K,[])

GPU での例 3

指定した出力クラスをもつ 2 つのイメージを加算します。

I = gpuArray(imread('rice.png'));
J = gpuArray(imread('cameraman.tif'));
K = imlincomb(1,I,1,J,'uint16');
figure, imshow(K,[])

例 4

imlincomb が結果を打ち切る前にすべての代数演算をどのように行うかを示すために、入れ子の代数関数を使用した場合と imlincomb を使用した場合で、2 つの配列 XY の平均を計算し、その結果を比較します。

入れ子状態の代数関数を使用した場合、imadd255 および 50 を加算し、結果を 255 に打ち切り、imdivide に渡します。Z(1,1) に返される平均値は 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 は、倍精度で、加算と除算を行い、最終結果のみを打ち切ります。Z2(1,1) に返される平均値は 153 です。

Z2 = imlincomb(.5,X,.5,Y)
Z2 =
   153    15    63
    47   138    75

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。汎用の MATLAB Host Computer ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、この関数によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細は、「Image Processing Toolbox のコード生成について」を参照してください。

コード生成時には、以下の点に注意してください。

  • 最大 4 つの入力イメージ引数を指定できます。

  • 引数 output_class はコンパイル時の定数でなければなりません。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

R2006a より前に導入

この情報は役に立ちましたか?