ドキュメンテーション

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

イメージの領域分割アプリを使用したイメージのセグメンテーション

この例では、イメージの領域分割アプリを使用してイメージをセグメント化する方法を説明します。イメージの領域分割アプリには、各種のしきい値処理オプション、塗りつぶし、動的輪郭アルゴリズムなど、セグメンテーション メソッドがいくつか用意されています。イメージをセグメント化するアプリを使用すると、目的のセグメンテーションが得られるまで、これらのオプションを試すか、組み合わせて使用することができます。次の例は、アプリでセグメンテーションが得られるまでの 1 つの過程を示しています。

イメージの領域分割アプリを開く

この例の部分では、イメージの領域分割アプリを開き、イメージを読み込む方法を説明します。

イメージを MATLAB® ワークスペースに読み取ります。この例では、関数 dicomread を使用して膝関節の MRI データをインポートします。イメージ内の 3 つの骨の領域を周囲の軟組織から分割します。

I = dicomread('knee1');
imshow(I,[])

イメージの領域分割アプリを開きます。MATLAB ツールストリップで [アプリ] タブを開き、[画像処理とコンピューター ビジョン] の下にある [イメージの領域分割] をクリックします。イメージの領域分割アプリはコマンド ラインから開くこともできます。

imageSegmenter

イメージを領域分割アプリに読み込みます。[イメージの読み込み] をクリックし、イメージを含むファイルの名前またはワークスペース変数の名前のいずれを指定するかを選択します。イメージの領域分割アプリは、imread で読み取り可能なファイルであれば開くことができます。既にイメージをワークスペースに読み込んでいるため、[ワークスペースからのイメージの読み込み] オプションを選択します。[ワークスペースからインポート] ダイアログ ボックスで、作成した変数を選択します。

データ ブラウザーには、読み込んだイメージが表示されると共にセグメンテーションの結果のサムネイル (マスク イメージ) が表示されます。最初は、開始前であるため、サムネイル全体が黒色です。アプリを使用して複数のセグメンテーションを実行でき、それぞれのセグメンテーションがサムネイルと共にデータ ブラウザーに表示されます。[新規セグメンテーション] をクリックし、新規セグメンテーションを開始します。セグメンテーション作成中の手順の履歴がデータ ブラウザーの [履歴] に表示されることにも注意してください。

イメージのセグメント化

この例の部分では、アプリを使用してイメージをセグメント化する方法を説明します。イメージの領域分割アプリには使用可能なセグメンテーション ツールがいくつかあります。セグメンテーションは反復処理で、目的の結果が得られるまでいくつかのオプションを試すことができます。

セグメンテーション処理を開始するために、アプリのツールストリップに表示されるオプションのいずれかを選択します。

イメージのセグメント化方法は複数あります。任意のツールを使用して開始します。

  • しきい値処理を使用してマスクを作成。セグメント化するイメージ内の複数のオブジェクトが同程度のピクセル強度値をもっており、背景などイメージ内の他の領域と簡単に区別できる場合があります。

  • セグメント化するオブジェクト内で領域を描画して、対話的にマスクを作成。フリーハンドかポリゴンで領域を描画できます。

  • 塗りつぶしの手法を使用。

  • 動的輪郭の手法を使用。

最初の試みとして、しきい値処理を試します。[しきい値] をクリックすると、複数のしきい値処理オプションが表示されます。スライダーを使用して値を指定する手動しきい値処理を含む、様々なしきい値処理メソッドを選択できます。しきい値処理されたマスク イメージを保持する場合は、[適用] をクリックします。ただし、この膝のイメージでは前景と背景のピクセル強度の違いが明確でなく、骨のオブジェクトのほかにも多数のオブジェクトが含まれています。しきい値処理は、このイメージにとって最適な選択であるとは思えません。[しきい値を閉じる] をクリックして、結果を受け入れずにメインのアプリ ウィンドウに戻り、他のオプションのいずれかを試します。

イメージをセグメント化する [フリーハンドの描画] オプションを試します。このオプションでは、マスク イメージを作成する領域を簡単に描画します。四角形、楕円、多角形などの形状を選択して描画できます。また、形状をフリーハンドで描画することもできます。次の図の例は、フリーハンドのオプションを使用して領域を描画したものです。マスク イメージができるまでの進行状況を履歴ウィンドウで確認できます。

フリーハンドで描画した領域を [動的輪郭] オプションを使用して改良します。動的輪郭にはセグメント化する領域内にシード形状が必要です。これはフリーハンド ツールで完成済みです。[動的輪郭] タブで [実行] をクリックします。この例の 1 回目の実行では既定のメソッド (領域ベース) と既定の反復回数 (100) を使用します。結果を見ると、この手法は 3 つのオブジェクトのうち 2 つでうまく行きましたが、1 つのオブジェクトではセグメンテーションが背景にはみ出していることがわかります。この領域ではオブジェクトの境界がはっきりしていません。

今度は反復回数を変更して動的輪郭のセグメンテーションを繰り返します。操作を元に戻すには [適用] をクリックし、現在のセグメンテーションを保存した後、データ ブラウザーのセグメンテーションの履歴にある以前の手順を選択します。これにより、元のフリーハンドの領域と共にイメージが表示されます。反復ボックスで反復回数に 35 を指定して変更し、再度 [実行] をクリックします。満足のいく結果が得られたら、[適用] をクリックします。領域の色が青から黄に変化し、変更が適用されたことを示します。

セグメンテーションの微調整

この例の部分では、イメージのセグメンテーションを微調整する方法を説明します。イメージの領域分割アプリには、穴の塗りつぶしなどの操作に使用できるツールがいくつか用意されています。

初期化マスクを改善するために、[穴の塗りつぶし] をクリックします。詳細に調べると、マスク領域の 1 つに小さな穴があります。

この穴を塗りつぶすには、[穴の塗りつぶし] をクリックします。

目的のセグメンテーションが得られたら、マスク イメージを作成できます。[エクスポート] をクリックして [イメージのエクスポート] を選択します。[ワークスペースにエクスポート] ダイアログ ボックスで、セグメンテーションのマスク イメージ、セグメンテーション実行後のマスク イメージ、元のイメージをセグメント化したバージョンに名前を割り当てることができます。

アプリがイメージのセグメント化に使用した MATLAB コードを取得するには、[エクスポート] をクリックして [関数の生成] を選択します。MATLAB エディターが開き、イメージのセグメント化に必要なコードを含む関数が表示されます。

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