ドキュメンテーション

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

ボリュームの深層学習向け前処理

ボリューム イメージ データの読み取り

ボリューム イメージ データでサポートされるファイル形式には、MAT ファイル、Digital Imaging and Communications in Medicine (DICOM) ファイル、および Neuroimaging Informatics Technology Initiative (NIfTI) ファイルがあります。

ボリューム イメージ データを imageDatastore に読み取ることができます。イメージ データストアを作成する場合、引数 'FileExtensions' をデータのファイル拡張子として指定します。ReadFcn プロパティを、ファイル形式のデータを読み取る関数ハンドルとして指定します。

次の表に、サポートされる各ファイル形式のイメージ データストアを作成する方法を示します。引数 filepath は、イメージ データが含まれるファイルまたはフォルダーのパスを指定します。

イメージ ファイル形式

イメージ データストアの作成

MAT ファイル

volds = imageDatastore(filepath, ...
   'FileExtensions','.mat','ReadFcn',@(x) matRead(x));

MAT ファイルからデータを読み取る関数 matRead を作成しなければなりません。関数を matRead.m という名前のファイルに保存します。

function data = matRead(filename)
% data = matRead(filename) reads the image data the MAT-file filename

inp = load(filename);
f = fields(inp);
data = inp.(f{1});
end

DICOM

volds = imageDatastore(filepath, ...
   'FileExtensions','.dcm','ReadFcn',@(x) dicomread(x));

3 次元深層学習に DICOM ファイルを使用するには、ボリューム データが 1 つのファイルに格納されている必要があります。複数のイメージ ファイルに分割されているボリューム データは使用できません。

DICOM ファイルの詳細は、dicomread を参照してください。

NIfTI

volds = imageDatastore(filepath, ...
   'FileExtensions','.nii','ReadFcn',@(x) niftiread(x));

niftiread

セマンティック セグメンテーション用ボリューム ラベル データの読み取り

ボリューム データのセマンティック セグメンテーションを実行するには、イメージ データに対応するラベルがなければなりません。

ボリューム ラベル データを pixelLabelDatastore に読み取ることができます。ピクセル ラベル データストアを作成する場合、引数 'FileExtensions' をデータのファイル拡張子として指定します。ReadFcn プロパティを、ファイル形式のデータを読み取る関数ハンドルとして指定します。

たとえば、次のコードはピクセル ラベル データストアを作成する方法を示します。引数 filepath は、ラベル データが含まれるファイルまたはフォルダーのパスを指定します。引数 classNames および pixelLabelID は、ボクセル ラベル値のクラス名へのマッピングを指定します。

pxds = pixelLabelDatastore(lblLoc,classNames,pixelLabelID, ...
    'FileExtensions','.mat','ReadFcn',@(x) matRead(x));

randomPatchExtractionDatastore を使用してイメージとラベル データを関連付けます。ネットワークの入力サイズに一致するパッチ サイズを指定します。メモリ不足を発生させることなく任意の大きさのボリュームを効率的に使用してネットワークに学習させるには、ネットワークのパッチ サイズと入力サイズがボリュームのフル サイズ (64 × 64 × 64 ボクセルなど) より小さくなければなりません。randomPatchExtractionDatastoreDataAugmentation プロパティを使用するデータ拡張はサポートされていません。

ボリューム データの前処理

ボリューム データを前処理するには、関数 transform を使用できます。関数 transform は、定義したカスタム変換関数に従って基になるデータストアからのデータのバッチを処理します。

基になるデータストアは、関数 read を使用してデータのバッチを読み取ります。カスタム変換関数は、関数 read によって返される形式のデータを受け入れなければなりません。イメージ データの場合、形式は基になる ImageDatastoreReadSize プロパティによって異なります。

  • ReadSize が 1 の場合、変換関数は整数配列を受け入れなければなりません。配列のサイズは、ImageDatastore のイメージのタイプと整合性があります。たとえば、グレースケール イメージの次元は m x n、トゥルーカラー イメージの次元は m x n x 3、c 個のチャネルがあるマルチスペクトル イメージの次元は m x n x c です。

  • ReadSize が 1 より大きい場合、変換関数はバッチの各イメージに対応するイメージ データの cell 配列を受け入れなければなりません。

関数 transform は、ネットワークの入力サイズに一致するデータを返さなければなりません。関数 transform は一対多の観測値マッピングをサポートしていません。

参考

| | | | |

関連する例

詳細