Main Content

bigimage

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

bigimage は推奨されません。代わりに、blockedImage オブジェクトを使用してください。詳細については、互換性の考慮事項を参照してください。

説明

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(非推奨) bigimage オブジェクトのブロックの処理
isequal(非推奨) 2 つの bigimage オブジェクトの同等性の比較
getBlock(非推奨) bigimage オブジェクトのブロックの読み取り
getFullLevel(非推奨) 1 つのレベルの bigimage オブジェクトに含まれるすべてのデータの取得
getRegion(非推奨) bigimage オブジェクトの任意の領域の読み取り
setBlock(非推奨) bigimage オブジェクトの特定のブロックへのデータの配置
write(非推奨) 新しいファイルへの bigimage オブジェクトの内容の書き込み

すべて折りたたむ

サンプル イメージ tumor_091R.tif から、ブロック化されたイメージを作成します。このサンプル イメージは、CAMELYON16 データ セットの腫瘍組織が含まれるリンパ節の学習イメージです。このイメージは、3 つの粗い解像度レベルが含まれ、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

bim = blockedImage('tumor_091R.tif');

最も細かい解像度レベルでブロック化されたイメージ全体を、ブロック境界のグリッドと共に表示します。

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

最も粗い解像度レベルのマスクを作成します。

まず、最も粗い解像度レベルの単一解像度イメージを作成します。関数 gather は既定で最も粗い解像度レベルからデータを取得します。

imcoarse = gather(bim);

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

graycoarse = rgb2gray(imcoarse);

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

bwcoarse = imbinarize(graycoarse);

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

mask = imcomplement(bwcoarse);

マスクを含むブロック化されたイメージを作成します。

元のブロック化されたイメージと同じ空間参照を使用します。最も粗い解像度レベルを決定し、そのレベルの最初の 2 つの次元におけるブロック化されたイメージの空間参照情報を取得します。

coarsestLevel = bim.NumLevels;
originalWorldStartCoarsest = bim.WorldStart(coarsestLevel,1:2);
originalWorldEndCoarsest = bim.WorldEnd(coarsestLevel,1:2);

ブロック化されたイメージをマスク用に作成します。

bmask = blockedImage(mask,'WorldStart',originalWorldStartCoarsest, ...
   'WorldEnd',originalWorldEndCoarsest);

マスク イメージを表示します。

figure
bigimageshow(bmask)

関数 showmask を使用し、元のブロック化されたイメージの表示にマスクを重ね合わせます。非ゼロ マスク ピクセルを少なくとも 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 で導入

すべて展開する

R2021a 以降は非推奨