Main Content

イメージの領域分割入門

イメージの領域分割アプリではイメージをセグメント化する多様な方法にアクセスできます。イメージの領域分割を使用したセグメント化は、いくつかのセグメンテーション オプションを試すために反復して実行することもできます。セグメンテーション手法の中には特定の種類のイメージで他より良い結果を出すものもあります。イメージのセグメント化が完了したら、バイナリ マスクを保存できます。また、イメージの領域分割でマスクの作成に使用したコードを取得することもできます。

イメージ領域分割アプリの実行とデータの読み込み

アプリを開き、セグメント化するイメージを読み込みます。イメージの領域分割アプリは、imread で読み取り可能なファイルであれば開くことができます。

イメージの領域分割アプリはコマンド ラインから開くことができます。ワークスペースのイメージまたはファイルの名前を指定します。

I = imread("coins.png");
imageSegmenter(I)

または、[アプリ] タブの [イメージ処理とコンピューター ビジョン] からアプリを開きます。次に、[読み込み] メニューから、ワークスペース変数の名前、またはイメージを含むファイルの名前を選択します。

イメージを読み込んだ後は、オプションで既存のバイナリ マスクを読み込むことができます。たとえば、色のしきい値アプリで RGB イメージのマスクを過去に作成しており、このセグメンテーションを調整したいとします。既存のマスクを読み込むには、[マスクの読み込み] をクリックします。セグメンテーション マスク イメージは、セグメンテーションを行うイメージと同じサイズの論理イメージにしなければなりません。

領域の作成とセグメント化されたマスクへの追加

初期マスクを作成するには、[マスクの作成] メニューおよび [マスクに追加] メニューにあるツールのいずれかを使用します。マスクの作成後に新しいセグメンテーションを開始する場合は、[新規セグメンテーション] をクリックします。アプリを使用して複数のセグメンテーションを実行できます。それぞれのセグメンテーションがサムネイルと共にデータ ブラウザーに表示されます。

セグメント化された領域を既存のマスクに追加するには、[マスクに追加] メニューにあるツールを使用します。セグメンテーション作成中の手順がデータ ブラウザーの [履歴] パネルに表示されます。

ツール説明
しきい値

分離する強度値を指定する自動手法です。この手法は、セグメント化するイメージ内の複数のオブジェクトが同程度のピクセル強度値をもっており、背景などイメージ内の他の領域と簡単に区別できる場合に役立ちます。詳細については、イメージの領域分割でのしきい値処理を使用したイメージのセグメント化を参照してください。

グラフ カット

前景要素と背景要素にセグメント化可能な半自動セグメンテーション手法です。この手法はシード ポイントの配置にあまり注意する必要がなく、対話形式でセグメンテーションを調整できます。詳細については、イメージの領域分割でのグラフ カットを使用したイメージのセグメント化を参照してください。

自動クラスター

アプリが自動的にイメージの特徴をバイナリ セグメンテーションにグループ分けする手法です。このオプションは Statistics and Machine Learning Toolbox™ がインストールされている場合にのみ使用できます。詳細については、イメージの領域分割での自動クラスターを使用したイメージのセグメント化を参照してください。

円の検索

検出する円形オブジェクトの最小および最大の直径を指定する自動手法です。詳細については、イメージの領域分割での円の検索を使用したイメージのセグメント化を参照してください。

ローカル グラフ カット (grabcut)

前景要素と背景要素にセグメント化可能な、グラフ カット手法に類似した半自動セグメンテーション手法です。ローカル グラフ カット (grabcut) では、セグメント化するイメージ内のオブジェクトを取り囲む ROI を最初に定義します。イメージの領域分割は ROI でオブジェクトを自動的にセグメント化します。ROI 内で前景と背景を識別するためにイメージに線を描くことでセグメンテーションを調整できます。ROI の外側にあるものはすべて背景と見なされます。詳細については、イメージの領域分割でのローカル グラフ カット (Grabcut) を使用したイメージのセグメント化を参照してください。

塗りつぶし

開始点を指定する自動手法で、同じような強度値の領域をセグメント化するメソッドです。

ROI の描画

セグメント化するオブジェクト領域の輪郭となる形を手動で描画する手法です。マウスを使用して、四角形、楕円、多角形、またはフリーハンド図形を描画できます。詳細については、イメージの領域分割を使用した領域描画によるイメージのセグメント化を参照してください。

自動クラスタリンググラフ カット、および塗りつぶしセグメンテーション ツールを使用する場合、テクスチャを追加でセグメンテーションの考慮に含めることができます。テクスチャ フィルター処理は、前景と背景を区別するとき役に立ちます。テクスチャ オプションのオンとオフを切り替えるには、[テクスチャの特徴を含む] をクリックします。有効な場合、イメージの領域分割はガボール フィルターを使用して、イメージのテクスチャをセグメンテーションの前処理ステップとして分析します。詳細については、Use Texture Filtering in Image Segmenterを参照してください。ガボール フィルターに関する詳細については、ガボール フィルターを使用したテクスチャのセグメンテーションを参照してください。

セグメント化されたマスクの調整

イメージの領域分割には、作成したマスクを調整するために使用できるいくつかのツールが用意されています。

ツール説明
モルフォロジー

膨張と収縮など多数のモルフォロジー技術です。たとえば、イメージの領域分割でのモルフォロジーを使用したセグメンテーションの調整を参照してください。

動的輪郭 (別名 snakes)

イメージの領域を拡大または縮小する反復メソッドです。シード ポイントで領域を識別します。たとえば、イメージの領域分割で動的輪郭を使用したイメージのセグメント化を参照してください。

境界のクリア

イメージのエッジにある小さな領域を高速で削除する方法です。

穴の塗りつぶし

前景領域にある小さな穴をすばやく塗りつぶす方法です。たとえば、イメージの領域分割でのモルフォロジーを使用したセグメンテーションの調整を参照してください。

マスクの反転

前景と背景を反転すると、セグメンテーションを簡単に評価できることがあります。たとえば、イメージの領域分割での自動クラスターを使用したイメージのセグメント化を参照してください。

セグメンテーション結果のエクスポート

条件を満たすセグメンテーションが見つかった場合、最終セグメンテーションのマスク イメージおよび元のイメージをセグメント化したバージョンをワークスペースにエクスポートできます。マスクとセグメンテーションをワークスペースにエクスポートするには、[エクスポート] をクリックして [イメージのエクスポート] を選択します。

また、セグメンテーションの実行に使用したコードを生成することもできます (Statistics and Machine Learning Toolbox が必要)。このコードを使用して、同じセグメンテーション アルゴリズムを同様のイメージに適用します。コードを取得するには、[エクスポート] をクリックして [関数の生成] を選択します。MATLAB® エディターが開き、自動生成コードを含む関数が表示されます。コードを保存するには、MATLAB エディターで [保存] をクリックします。

参考