Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

read

(削除予定) bigimageDatastore からのデータの読み取り

R2019b 以降

bigimageDatastore オブジェクトの関数 read は将来のリリースで削除される予定です。代わりに、blockedImageDatastore オブジェクトに関連付けられた関数 read を使用してください。詳細については、互換性の考慮事項を参照してください。

説明

data = read(bigds) は、大きなイメージ データストア bigds からデータのバッチを返します。関数 read の後続の呼び出しでは、直前の呼び出しのエンドポイントから引き続き読み取ります。

[data,info] = read(bigds) は、メタデータを含む抽出データに関する情報も、info に返します。

すべて折りたたむ

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

bim = bigimage('tumor_091R.tif');

最も細かい解像度レベルで大きなイメージのブロックを管理する bigimageDatastore を作成します。

bimds = bigimageDatastore(bim,1)
bimds = 
  bigimageDatastore with properties:

            ReadSize: 1
          BorderSize: [0 0]
           PadMethod: 0
              Images: [1x1 bigimage]
              Levels: 1
           BlockSize: [1024 1024]
        BlockOffsets: [1024 1024]
    IncompleteBlocks: 'same'
    BlockLocationSet: [1x1 blockLocationSet]

データストアの 'ReadSize' プロパティを 3 に変更します。

bimds.ReadSize = 3;

データストアから 1 バッチ分のイメージ データを読み取ります。

[data,info] = read(bimds);

返されたイメージ データを各イメージの周りに黒い境界があるモンタージュに表示します。このモンタージュは、データストアが大きなイメージのブロックを行優先の順序で読み取ることを示しています。

montage(data,'Size',[1 3],"BorderSize",10)

Figure contains an axes object. The axes object contains an object of type image.

返されたデータに関する情報を表示します。

info
info = struct with fields:
              Level: [1 1 1]
        ImageNumber: [1 1 1]
    BlockStartWorld: [3x2 double]
      BlockEndWorld: [3x2 double]
     DataStartWorld: [3x2 double]
       DataEndWorld: [3x2 double]

返されたデータのブロックそれぞれにおいて左上ピクセルの中心の (x,y) 座標を検査します。

info.BlockStartWorld
ans = 3×2

           1           1
        1025           1
        2049           1

入力引数

すべて折りたたむ

大きなイメージ データストア。bigimageDatastore オブジェクトとして指定します。

  • データストアには、1 つ以上の大きなイメージ Images が含まれていて、各イメージには Channels 個のチャネルがあります。

  • データストアは、指定された解像度レベル Levels で、それぞれの大きなイメージからブロックを読み取ります。

  • データストアは、各バッチで読み取るブロックの数 ReadSize を指定します。

  • データストアは、読み取るブロックの m x n のピクセル サイズ BlockSize を指定します。

出力引数

すべて折りたたむ

出力データ。ReadSize 要素を含む cell 配列として返されます。各 cell には m x n x Channels の数値配列が含まれています。

出力データに関する情報。以下のフィールドを含む struct として返されます。

フィールド名説明
Levelデータの解像度レベル。正の整数の 1 行 ReadSize 列ベクトルとして指定します。
ImageNumberデータを提供する大きなイメージのインデックス。正の整数の 1 行 ReadSize 列ベクトルとして指定します。
BlockStartWorldパディングを除く、データの左上ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。
BlockEndWorldパディングを除く、データの右下ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。
DataStartWorldパディングを含む、データの左上ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。
DataEndWorldパディングを含む、データの右下ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。

バージョン履歴

R2019b で導入

すべて展開する

R2023b: read は削除予定

bigimageDatastore オブジェクトとこの関数は将来のリリースで削除される予定です。代わりに、blockedImageDatastore オブジェクトの関数 read を使用してください。

コードを更新するには、まず、イメージ データを読み取るための blockedImage オブジェクトを作成します。次に、以下の手順に従い、blockedImageDatastore オブジェクトを作成してデータ ブロックを読み取ります。

  • レベル 1 以外の解像度レベルでデータを読み取るには、関数 selectBlockLocations を使用してブロック位置のセットを作成します。名前と値の引数 Level を使用して、レベルを指定します。

  • blockedImage オブジェクトを指定して、blockedImageDatastore を作成します。レベル 1 以外の解像度レベルでデータを読み取るには、名前と値の引数 BlockLocationSet を使用してブロック位置のセットを指定します。

  • 関数 read の呼び出しで、入力引数を blockedImageDatastore オブジェクトに置き換えます。

引数 info を使用してブロックのメタデータを返す場合、メタデータ構造体の一部のフィールドは異なります。

非推奨の使用方法推奨される代替案

この例では、bigimageDatastore オブジェクトからブロックを読み取ります。

bigIm = bigimage("tumor_091R.tif");
bigDS = bigimageDatastore(bigIm);
[block,info] = read(bigDS);

以下は、blockedImageDatastore オブジェクトからブロックを読み取る等価なコードです。

blockedIm = blockedImage("tumor_091R.tif");
blockedDS = blockedImageDatastore(blockedIm);
[block,info] = read(blockedDS);

この例では、解像度レベル 2 でブロックを読み取ります。

bigIm = bigimage("tumor_091R.tif");
level = 2;
bigDS = bigimageDatastore(bigIm,level);
[block,info] = read(bigDS);

以下は、blockedImageDatastore オブジェクトを使用する等価なコードです。

blockedIm = blockedImage("tumor_091R.tif");
level = 2;
bls = selectBlockLocations(blockedIm,Levels=level);
blockedDS = blockedImageDatastore(blockedIm,BlockLocationSet=bls);
[block,info] = read(blockedDS);