Main Content

imfuse

2 つのイメージの合成

説明

C = imfuse(A,B) は、AB の 2 つのイメージの合成を作成します。AB のサイズが異なる場合、合成を作成する前に両方のイメージが同じサイズになるように imfuse によって小さい方のイメージが 0 でパディングされます。出力 C は、イメージ AB の融合したイメージを含む数値行列です。

[C RC] = imfuse(A,RA,B,RB) は、RARB で提示される空間参照情報を使用して、AB の 2 つのイメージから合成イメージを作成します。出力 RC は、出力融合イメージ C の空間参照情報を定義します。

C = imfuse(___,method)method で指定されるアルゴリズムを使用します。

C = imfuse(___,Name,Value) は、上記の任意の構文を用いて、1 つ以上の名前と値の引数をもつ追加オプションを指定します。

すべて折りたたむ

イメージをワークスペースに読み込みます。コピーを作成して、回転オフセットを適用します。

A = imread('cameraman.tif');
B = imrotate(A,5,'bicubic','crop');

混合オーバーレイ イメージを作成し、AB の強度を 1 つのデータセットとして一緒にスケーリングします。融合したイメージを表示します。

C = imfuse(A,B,'blend','Scaling','joint');
imshow(C)

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

結果のイメージを .png ファイルとして保存します。

imwrite(C,'my_blend_overlay.png');

イメージをワークスペースに読み込みます。コピーを作成して回転オフセットを適用します。

A = imread('cameraman.tif');
B = imrotate(A,5,'bicubic','crop');

イメージ A に赤、イメージ B に緑、2 つのイメージ間で強度が類似している領域に黄色を使用して、混合オーバーレイ イメージを作成します。次に、オーバーレイ イメージを表示します。

C = imfuse(A,B,'falsecolor','Scaling','joint','ColorChannels',[1 2 0]);
imshow(C)

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

結果のイメージを .png ファイルとして保存します。

imwrite(C,'my_blend_red-green.png');

イメージをワークスペースに読み込み、それに関連付けられた空間参照オブジェクトを作成します。

A = dicomread('knee1.dcm');
RA = imref2d(size(A));

イメージ A のサイズを変更して 2 番目のイメージを作成し、そのイメージに関連付けられた空間参照オブジェクトを作成します。

B = imresize(A,2);
RB = imref2d(size(B));

参照オブジェクト パラメーターを設定して、ワールド座標における座標の範囲を指定します。

RB.XWorldLimits = RA.XWorldLimits;
RB.YWorldLimits = RA.YWorldLimits;

類似した強度の領域を示す色を使用して、混合オーバーレイ イメージを作成します。この例では、イメージ A に赤、イメージ B に緑、2 つのイメージ間で強度が類似している領域に黄色を使用します。

C = imfuse(A,B,'falsecolor','Scaling','joint','ColorChannels',[1 2 0]);

融合したイメージを表示します。2 つのイメージが、類似した強度の領域をあまり共有していないように見えることに注目してください。この例では、見やすくするために融合したイメージを縮小しています。

C = imresize(C,0.5);
imshow(C)

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

今度は、RA および RB の空間参照情報を使用して融合したイメージを新規作成します。

[D,RD] = imfuse(A,RA,B,RB,'ColorChannels',[1 2 0]);

融合した新しいイメージを表示します。このバージョンでは、イメージは黄色で表示されます。これは、イメージ AB のワールド座標系における範囲が同じためです。B のサイズが A の 2 倍であるにもかかわらず、2 つのイメージは実質的に同じ位置に揃えられています。この例では、見やすくするために融合したイメージを縮小しています。

D = imresize(D,0.5);
imshow(D)

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

入力引数

すべて折りたたむ

合成イメージに結合される最初のイメージ。グレースケール イメージ、トゥルーカラー イメージ、またはバイナリ イメージとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

合成イメージに結合される 2 番目のイメージ。グレースケール イメージ、トゥルーカラー イメージ、またはバイナリ イメージとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

入力イメージ A に関連付けられている空間参照情報。imref2d オブジェクトとして指定します。

入力イメージ B に関連付けられている空間参照情報。imref2d オブジェクトとして指定します。

イメージの結合に使用されるアルゴリズム。次の表のいずれかの値に指定します。

メソッド説明
"falsecolor"異なるカラー帯域に重なっている AB を表示する合成 RGB イメージを作成します。合成イメージの灰色の領域は、2 つのイメージが同じ強度をもつ場所を示します。マゼンタと緑の領域は、強度が異なる場所を示します。これは既定のメソッドです。
"blend"アルファ ブレンディングを使用して AB を重ねます。
"checkerboard"AB の四角形の領域を交互に入れ替えてイメージを作成します。
"diff"AB から差分イメージを作成します。
"montage"同じイメージで AB を隣り合わせて配置します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: C = imfuse(A,B,Scaling="joint") は、AB の強度値を 1 つのデータセットとして合わせてスケーリングします。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: C = imfuse(A,B,"Scaling","joint") は、AB の強度値を 1 つのデータセットとして合わせてスケーリングします。

強度スケーリング オプション。以下のいずれかの値に指定します。

"independent"C の作成時に AB の強度値を別々にスケーリングします。
"joint"複数のイメージの強度値を、同じイメージ内にあるものとして一緒にスケーリングします。このオプションは、他のイメージのダイナミック レンジ外にある埋め込み値を 1 つのイメージが含む、モノモーダル イメージのレジストレーションを可視化するときに便利です。
"none"追加のスケーリングはありません。

入力イメージごとの出力カラー チャネル。以下のいずれかの値に指定します。

[R G B]赤、緑、青のチャネルに割り当てるイメージを指定する 3 要素ベクトルです。R、G および B の値は、1 (最初の入力イメージ)、2 (2 番目の入力イメージ) および 0 (それ以外のイメージ) でなければなりません。
"red-cyan"ベクトル [1 2 2] のショートカットです。赤とシアンのステレオ アナグリフに適しています。
"green-magenta"ベクトル [2 1 2] のショートカットで、高いコントラストのオプションです。さまざまな種類の色覚異常の方に適しています。

出力引数

すべて折りたたむ

入力イメージの合成による融合イメージで、グレースケール イメージ、トゥルーカラー イメージまたはバイナリ イメージとして返されます。

データ型: uint8

融合イメージ C に関連付けられている空間参照情報。imref2d オブジェクトとして返されます。

ヒント

  • 関数 imfuse を使用して、ファイルに保存できる合成した可視化を作成します。関数 imshowpair を使用して、合成した可視化を画面に表示します。

  • 空間参照情報 RARB を指定する場合、imfuse は入力参照オブジェクトを結合し、両イメージのワールド座標範囲が含まれる境界ボックスを取得します。境界ボックス全体がワールド座標の非整数ピクセル次元になる場合、融合イメージは黒いピクセルの追加行または追加列をもつことができます。imfuse は縮小されたピクセル範囲に従って元のイメージをサンプリングするため、歪みが発生します。

バージョン履歴

R2012a で導入