Main Content

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

bigimage

非常に大規模なイメージがコアに収まらない場合の処理

説明

bigimage オブジェクトは、大きな TIFF イメージ ファイルに関する情報とそのイメージに含まれるイメージ データに関する情報を格納します。bigimage は、別々に読み込んで処理できるデータの小さいブロックとしてイメージを表します。

大きすぎてメモリに収まらないイメージを可視化および処理する場合や利用可能なサイズを上回るメモリを必要とするイメージを処理する場合には、bigimage オブジェクトを使用します。さらに、このオブジェクトは以下を行うことができます。

  • 異なる複数の解像度レベル (イメージ ピラミッド) のイメージを読み取り、処理し、表示する。

  • イメージの任意の領域を読み取る。

  • データのブロックを読み取り、設定し、書き込む。

複数の解像度レベルをもつ大きなイメージでは、最低のまたは "最も粗い" 解像度レベルの場合に、各ピクセルが最大の面積を覆います。最高のまたは "最も細かい" 解像度レベルの場合、各ピクセルは最小の面積を覆います。

作成

説明

bigimg = bigimage(filename) は、filename という名前の大きなイメージ ファイルから bigimage オブジェクトを作成します。

bigimg = bigimage(dirname) は、大きなイメージ データをもつファイルを含む dirname という名前のディレクトリから bigimage オブジェクトを作成します。

bigimg = bigimage(varname) は、ワークスペース内の変数 varname から bigimage オブジェクトを作成します。

bigimg = bigimage(spatialReferencing,channels,classUnderlying) は、書き込み可能な bigimage オブジェクトを作成し、イメージ データを初期化せずに SpatialReferencingChannels、および ClassUnderlying プロパティを設定します。

bigimg = bigimage(levelSizes,channels,classUnderlying) は、書き込み可能な bigimage オブジェクトを作成し、イメージ データを初期化せずに LevelSizesChannels、および ClassUnderlying プロパティを設定します。

bigimg = bigimage(___,'Classes',classes,'PixelLabelIDs',pixelLabelIDs) は、categorical データを使用して bigimage オブジェクトを作成します。Classes プロパティを使用して、クラス名を指定します。PixelLabelIDs プロパティを使用して、categorical クラス名に対するイメージ ピクセル ラベルの値のマッピングを指定します。

bigimg = bigimage(___,Name,Value) は、名前と値のペアを使用して BlockSizeSpatialReferencingUndefinedIDUnloadedValue プロパティを 1 つ以上設定します。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。

たとえば、bigimage(bigfile,'BlockSize',[256 256],'UnloadedValue',128) は、256 x 256 ピクセルのブロック サイズと既定のピクセル値 128 をもつ大きなイメージをファイル bigfile から作成します。

入力引数

すべて展開する

大きなイメージ ファイルの名前。文字ベクトルまたは string スカラーとして指定します。サポートされているファイル形式は TIFF と BigTIFF です。この引数によって DataSource プロパティが設定されます。

大きなイメージ ディレクトリの名前。文字ベクトルまたは string スカラーとして指定します。この引数によって DataSource プロパティが設定されます。

ワークスペース内の大きなイメージの変数。シングル チャネル イメージの場合、サイズが m 行 n 列の数値配列として指定し、c 個のカラー チャネルをもつイメージの場合、m x n x c の数値配列として指定します。

プロパティ

すべて展開する

イメージ ファイルのプロパティ

大きなイメージの基になるデータの場所。文字ベクトルとして指定します。サポートされているファイル形式は TIFF と BigTIFF です。

大きなイメージ ファイルの名前を指定せずに bigimage オブジェクトを作成する場合、DataSource の値は '' です。ワークスペース内の変数から bigimage オブジェクトを作成する場合、DataSource の値は 'variable' です。

データ型: string

このプロパティは読み取り専用です。

ソースのメタデータ。imfinfo などによって返される struct として指定します。

イメージ データのプロパティ

ブロック サイズ。[numrows numcols] 形式の正の整数の 2 要素行ベクトルとして指定します。ブロック サイズは、bigimage オブジェクトが読み取りまたは書き込みを行うことができるデータの最小単位です。

データ型: double

このプロパティは読み取り専用です。

カラーまたはマルチスペクトル チャネル数。正の整数として指定します。

データ型: double

categorical データのクラス名。string 配列または文字ベクトルの cell 配列として指定します。Classes に重複する名前を含めることで、複数のピクセル ラベル ID を同じ categorical クラスにマッピングできます。

データ型: char | string

このプロパティは読み取り専用です。

イメージ ピクセルのデータ型。次のいずれかの文字列を指定します。

"double""uint8""int8"
"single""uint16""int16"
"logical""uint32""int32"
"categorical"  

データ型: char | string

このプロパティは読み取り専用です。

最も粗い解像度レベル。正の整数として指定します。単一解像度のイメージの場合、CoarsestResolutionLevel1 です。

データ型: double

このプロパティは読み取り専用です。

最も細かい解像度レベル。正の整数として指定します。単一解像度のイメージの場合、FinestResolutionLevel1 です。

データ型: double

各解像度レベルでのイメージ次元。正の整数の r 行 2 列の行列として指定します。各行は、r 個の解像度レベルのいずれかで [numrows numcols] のイメージ次元を指定します。

データ型: double

ピクセル ラベルの値を categorical クラス名にマッピングするためのピクセル ラベル ID。次のいずれかとして指定します。

  • c 要素の数値ベクトル (c はクラスの数)。

  • データ型 uint8 の c 行 3 列の数値配列。各行には、各クラス名と関連付ける RGB ピクセル値を表す 3 要素ベクトルが含まれます。この形式は、ピクセル ラベル データが RGB イメージとして格納されている場合に使用します。

ピクセルの値が PixelLabelIDs 内に存在しない場合、bigimage はそのピクセルを '<undefined>' クラスにマッピングします。

ピクセルの位置とサイズ。単一解像度の大きなイメージの場合、スカラー imref2d オブジェクトとして指定し、多重解像度の大きなイメージの場合、imref2d オブジェクトの r 行 1 列のベクトルとして指定します。各要素は、r 個の解像度レベルのいずれかでピクセル サイズ、イメージ サイズ、ワールド座標範囲を指定します。

'<undefined>' categorical クラスのピクセル ラベルの値。数値スカラーまたは 1 行 3 列の数値ベクトルとして指定します。この値には、PixelLabelIDs に含まれる値を指定しないでください。

DataSource に存在しないブロックを塗りつぶすために使用する既定のピクセル値。この表にある値として指定します。UnloadedValue を指定しない場合、bigimage はピクセル値 0 を数値ブロックと logical ブロックに使用し、missing を categorical ブロックに使用します。

イメージのデータ型UnloadedValue の形式
論理イメージlogical スカラー。
数値イメージ

グレースケール イメージの場合は数値スカラー。トゥルーカラー イメージおよびマルチスペクトル イメージの場合は 1 x 1 x Channels の数値ベクトル。Channels が 1 より大きい場合に数値スカラーを指定すると、bigimage はその値を 1 x 1 x Channels の数値ベクトルに拡張します。

UnloadedValue のデータ型は ClassUnderlying で指定されたデータ型に一致しなければなりません

categorical イメージClasses プロパティの要素を指定する string スカラー。

オブジェクト関数

apply大きなイメージのブロックの処理
isequal2 つの bigimage の同等性の比較
getBlock大きなイメージのブロックの読み取り
getFullLevel1 つのレベルの大きなイメージに含まれるすべてのデータの取得
getRegion大きなイメージの任意の領域の読み取り
setBlock大きなイメージの特定のブロックへのデータの配置
write新しいファイルへの bigimage コンテンツの書き込み

すべて折りたたむ

CAMELYON16 データセットのイメージ "tumor_091.tif" の変更したバージョンを使用して bigimage を作成します。元のイメージは、腫瘍組織が含まれるリンパ節の学習イメージです。元のイメージには 8 つの解像度レベルがあり、最も細かいレベルの解像度は 53760 x 61440 です。変更したイメージには、3 つの粗い解像度レベルのみが含まれています。変更したイメージの空間参照は、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

bim = bigimage('tumor_091R.tif');

最も細かい解像度レベルで bigimage 全体を表示します。ブロック境界のグリッドを表示します。

bshow = bigimageshow(bim,'GridVisible','on','GridLevel',1);

最も粗い解像度レベルとそのレベルでの bigimage の空間参照を決定します。

clevel = bim.CoarsestResolutionLevel;
clevelLims = bim.SpatialReferencing(clevel);

次の手順に従って最も粗い解像度レベルのマスクを作成します。

  1. 最も粗い解像度レベルの単一解像度イメージを取得します。

  2. イメージをグレースケールに変換します。

  3. イメージを 2 値化します。2 値化したイメージでは、対象オブジェクトは黒に、背景は白になります。

  4. 2 値化したイメージの補数を取ります。結果のマスクは、対象オブジェクトは白になり、背景は黒になる規則に従います。

imcoarse = getFullLevel(bim,clevel);
graycoarse = rgb2gray(imcoarse);
bwcoarse = imbinarize(graycoarse);
mask = imcomplement(bwcoarse);

マスクを含む bigimage を作成します。元の大きなイメージと同じ空間参照を使用します。

bmask = bigimage(mask,'SpatialReferencing',clevelLims);

マスクを表示します。

figure
bigimageshow(bmask);

マスクを元の bigimage に重ね合わせます。非ゼロ マスク ピクセルを少なくとも 1 つ含むすべてのブロックを強調表示するために、包含しきい値として 0 を指定します。

showmask(bshow,bmask,'InclusionThreshold',0);

ヒント

  • SpatialReferencing または LevelSizes の構文を使用して作成された bigimage オブジェクトには、書き込みができます。これらの bigimage オブジェクトには、関数 setBlock を使用して書き込みます。filenamedirname、または varname の構文を使用して作成された bigimage オブジェクトには、書き込みができません。

  • bigimage オブジェクトは UnloadedValue プロパティを 2 つの状況で使用します。1 つ目の状況は、書き込み可能な bigimage オブジェクトを作成する場合です。書き込み可能な bigimage オブジェクトのブロックは、関数 setBlock を使用してブロック データを書き込むまで、UnloadedValue に設定されます。2 つ目の状況は、関数 apply が、すべてのブロックが処理される前に bigimage オブジェクトのブロックの処理を停止する場合です。

参照

[1] Bejnordi, Babak Ehteshami, Mitko Veta, Paul Johannes van Diest, Bram van Ginneken, Nico Karssemeijer, Geert Litjens, Jeroen A. W. M. van der Laak, et al. “Diagnostic Assessment of Deep Learning Algorithms for Detection of Lymph Node Metastases in Women With Breast Cancer.” JAMA 318, no. 22 (December 12, 2017): 2199–2210. https://doi.org/10.1001/jama.2017.14585.

R2019b で導入