Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

イメージ フュージョン

例として、次のコマンドを使用して、拡張モードを対称性を利用したパディング方式に切り替えます。

dwtmode('sym')

このツールボックスで、イメージ フュージョンのために必要な関数は、wfusimg 1 つだけです。この関数の詳細については、リファレンス ページを参照してください。フュージョン手法の詳細については、wfusmat 関数を参照してください。

この節では、次のことを行う方法について学習します。

  • イメージの読み込み

  • 分解の実行

  • 分解構造からのイメージのマージ

  • 分解構造からのイメージの復元

  • フュージョン後のイメージの保存

ウェーブレットを使用したイメージ フュージョンの基本原理は、フュージョン手法を Approximation 係数と Detail 係数に適用し、元の 2 つのイメージのウェーブレット分解構造をマージすることです (参考文献 の [MisMOP03] および [Zee98] を参照)。

その 2 つのイメージは同じサイズでなければならず、共通のカラーマップをもつインデックス付きイメージに関連付けられている必要があります (イメージのリサイズについては、wextend を参照)。

2 つの例を見ていきます。1 つ目の例では、2 つの異なるイメージをマージして 1 つの新しいイメージを生成します。2 つ目の例では、あるイメージの 2 つの不鮮明なバージョンから元のイメージを復元します。

コマンド ラインを使用したイメージ フュージョン

例 1: 2 つの異なるイメージのフュージョン

  1. 2 つの元イメージとして、能面と胸像のイメージを読み込みます。

    load mask; X1 = X;
    load bust; X2 = X;
    
  2. db2 を使用して、2 つの異なるフュージョン手法により、レベル 5 のウェーブレット分解から 2 つのイメージをマージします。まず、Approximations と Detail の両方の平均値を取ってフュージョンします。

    XFUSmean = wfusimg(X1,X2,'db2',5,'mean','mean');
    

    次に、Approximation の最大値と Detail の最小値を取ってフュージョンします。

    XFUSmaxmin = wfusimg(X1,X2,'db2',5,'max','min');
    
  3. 元のイメージと合成されたイメージをプロットします。

    colormap(map);
    subplot(221), image(X1), axis square, title('Mask') 
    subplot(222), image(X2), axis square, title('Bust') 
    subplot(223), image(XFUSmean), axis square,  
    title('Synthesized image, mean-mean') 
    subplot(224), image(XFUSmaxmin), axis square,  
    title('Synthesized image, max-min')
    

例 2: 不鮮明なイメージのフュージョンによる復元

  1. 1 つの元イメージの 2 つの不鮮明なバージョンを読み込みます。

    load cathe_1; X1 = X; 
    load cathe_2; X2 = X;
    
  2. sym4 を使用して、Approximation と Detail の両方の係数の絶対値の最大値を取って、レベル 5 のウェーブレット分解から 2 つのイメージをマージします。

    XFUS = wfusimg(X1,X2,'sym4',5,'max','max');
    
  3. 元のイメージと合成されたイメージをプロットします。

    colormap(map);
    subplot(221), image(X1), axis square,  
    title('Catherine 1') 
    subplot(222), image(X2), axis square,  
    title('Catherine 2') 
    subplot(223), image(XFUS), axis square,  
    title('Synthesized image')
    

    合成後のイメージは、共通した基底となっている元のイメージが復元された、良品質なバージョンです。

ウェーブレット アナライザー アプリを使用したイメージ フュージョン

ウェーブレットを使用したイメージ フュージョンの基本原理は、フュージョン手法を Approximation 係数と Detail 係数に適用し、元の 2 つのイメージのウェーブレット分解構造をマージすることです (参考文献 の [MisMOP03] および [Zee98] を参照)。

その 2 つのイメージは同じサイズでなければならず、共通のカラーマップをもつインデックス付きイメージに関連付けられている必要があります (イメージのリサイズについては、wextend を参照)。

2 つの例を見ていきます。1 つ目の例では、2 つの異なるイメージをマージして 1 つの新しいイメージを生成します。2 つ目の例では、あるイメージの 2 つの不鮮明なバージョンから元のイメージを復元します。

  1. ウェーブレット アナライザー アプリを起動します。

    MATLAB® プロンプトから、「waveletAnalyzer」と入力してウェーブレット アナライザーを表示し、[イメージ フュージョン] メニュー項目をクリックして、イメージ フュージョン ツールを表示します。

  2. 元のイメージとして、能面と胸像のイメージを読み込みます。

    load mask; X1 = X;
    load bust; X2 = X;
    
    "イメージ フュージョン" ツールで、[ファイル][イメージ 1 の読み込みまたはインポート][ワークスペースからインポート] を選択します。[ワークスペースからインポート] ダイアログ ボックスが表示されたら、能面のイメージを読み込む変数 X1 を選択します。

    胸像のイメージを読み込む変数 X2 を選択して、同じ手順を行います。

  3. ウェーブレット分解を実行します。

    右上にある [ウェーブレット] および [レベル] メニューを使用して、ウェーブレット ファミリ、ウェーブレット タイプ、解析に使用するレベルの数を指定します。

    この解析では、レベル 5 の db2 ウェーブレットを選択します。

    [分解] ボタンをクリックします。

    演算のため一時停止した後、2 つの解析が表示されます。

  4. 分解構造から 2 つのイメージをマージします。

    [フュージョン法の選択] フレームから、[Approx.] および [Detail] の両方について、[平均値] の項目を選択します。次に、[適用] ボタンをクリックします。

    合成されたイメージとその分解構造 (2 つの分解構造のフュージョンと等しい) が表示されます。フュージョンによって生成された新しいイメージは、2 つの元のイメージの特性を明らかに示しています。

    それでは、イメージ フュージョンを使用した復元について説明する別の例を行いましょう。

  5. イメージ フュージョンを使用したイメージの復元

    [ファイル] メニューから MAT ファイル cathe_1.mat を選択してイメージ 1 を、MAT ファイル cathe_2.mat を選択してイメージ 2 を読み込みます。

  6. [ウェーブレット] メニューと [レベル] メニューを使用して、レベル 5 の sym4 を選択します。[分解] ボタンをクリックします。

  7. [フュージョン法の選択] フレームから、[Approx.] および [Detail] の両方について、[最大値] の項目を選択します。次に、[適用] ボタンをクリックします。

    合成後のイメージは、共通した基底となっている元のイメージが復元された、良品質なバージョンです。

合成したイメージの保存

イメージ フュージョン ツールでは、合成したイメージをディスクに保存できます。ツールボックスは選択された名前の MAT ファイルを現在のフォルダーに作成します。

現在の選択状態から合成したイメージを保存するには、メニュー オプション [ファイル]、[合成したイメージを保存] を使用します。

イメージを保存するフォルダーとファイル名を指定するためのダイアログ ボックスが表示されます。ファイル rescathe.mat にイメージ データを保存した後、合成したイメージは Xmap のカラーマップによって与えられます。