メインコンテンツ

blockedImageDatastore

blockedImage オブジェクトのブロックで使用するデータストア

R2021a 以降

    説明

    blockedImageDatastore オブジェクトは、1 つ以上の blockedImage オブジェクトが属するイメージ ブロックのコレクションを管理します。blockedImageDatastore は、関連付けられていないイメージのコレクションを管理する imageDatastore と類似しています。

    作成

    説明

    bimds = blockedImageDatastore(images) は、1 つ以上の blockedImage オブジェクト images から成るイメージ ブロックのコレクションを管理する blockedImageDatastore オブジェクトを作成します。

    既定では、images に複数の解像度レベルのブロック化イメージが含まれる場合、blockedImageDatastore は最も細かい解像度レベルのブロックのみを選択します。既定では、データストアのブロック サイズは、最も細かい解像度レベルにおける、images の最初の要素の BlockSize プロパティと同じになります。

    bimds = blockedImageDatastore(sources) は、sources で指定されたファイルからデータストアを作成します。

    bimds = blockedImageDatastore(___,Name=Value) は、1 つ以上の名前と値の引数を使用して、書き込み可能なプロパティを設定します。たとえば、blockedImageDatastore(images,ReadSize=8) は、read 関数の各呼び出しでデータストアから 8 つのブロックを返します。

    入力引数

    すべて展開する

    blockedImageDatastore にブロックを提供するブロック化されたイメージ。blockedImage オブジェクトの配列として指定します。images のすべての要素は、同じ次元数、同じデータ型でなければなりません。

    この引数によって Images プロパティが設定されます。

    ブロック化されたイメージ ファイルの名前。文字ベクトルの cell 配列、string スカラー、または FileSet オブジェクトとして指定します。

    blockedImageDatastore オブジェクトは、ファイル内のイメージをブロック化されたイメージに変換し、それらのイメージを Images プロパティとして設定します。

    名前と値の引数

    すべて展開する

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

    例: bimds = blockedImageDatastore(images,ReadSize=8) は、read 関数の各呼び出しでデータストアから 8 つのブロックを返します。

    データストアに含めるブロック。blockLocationSet オブジェクトとして指定します。オブジェクトは、ブロック化されたイメージからどのブロックを含めるかを指定します。個々のブロックを繰り返したり省略したりできます。

    名前と値の引数 BlockLocationSet および BlockSize のいずれかのみを指定できます。BlockLocationSet 引数を指定した場合、blockedImageDatastore 関数は次を行います。

    • BlockLocationSet プロパティを blockLocationSet オブジェクトとして設定する。

    • BlockSize プロパティを blockLocationSet オブジェクトのブロック サイズとして設定する。

    BlockLocationSetBlockSize のどちらの入力引数も指定しない場合、blockedImageDatastoreBlockLocationSet プロパティの既定値を使用します。既定値は、ブロック サイズを指定せずに selectBlockLocations 関数を呼び出すことによって返される blockLocationSet オブジェクトになります。

    ブロック サイズ。1 行 D 列の数値ベクトルとして指定します。D は、Levels の最初の解像度レベルにおける、Images 内の最初のブロック化されたイメージの次元数です。

    名前と値の引数 BlockLocationSet および BlockSize のいずれかのみを指定できます。BlockSize 引数を指定した場合、blockedImageDatastore 関数は次を行います。

    • BlockSize プロパティをこの引数の値として設定する。

    • 指定されたブロック サイズで selectBlockLocations 関数を呼び出し、返された blockLocationSet オブジェクトとして BlockLocationSet プロパティを設定する。

    BlockLocationSetBlockSize のどちらの名前と値の引数も指定しない場合、blockedImageDatastoreBlockSize プロパティの既定値を使用します。既定値は、最も細かい解像度レベルにおける、Images 内の最初のブロック化されたイメージのブロック サイズになります。

    各次元の追加のブロック境界要素のサイズ。1 行 D 列の非負の整数のベクトルとして指定します。D は、Levels の最初の解像度レベルにおける、Images 内の最初のブロック化されたイメージの次元数です。既定値は zeros(1,D) です。

    この引数によって BorderSize プロパティが設定されます。

    不完全なブロックのパディングに使用する方法。次の表のいずれかの値として指定します。既定では、データストアは、Images 内の最初のブロック化されたイメージの InitialValue プロパティ値で数値ブロックをパディングします。

    意味

    数値スカラー、logical スカラー、または categorical スカラー

    指定した値の要素で配列をパディングします。PadMethod のデータ型は、ブロック化されたイメージの ClassUnderlying プロパティと一致しなければなりません。

    "replicate"

    ブロックの境界要素を繰り返してパディングします。

    "symmetric" (R2023a 以降)

    同じブロック内からのピクセルの鏡像でパディングします。

    この引数によって PadMethod プロパティが設定されます。

    エッジに存在する部分ブロックのパディング。logical スカラーの true または false として指定します。true の場合、ブロック化されたイメージ データストアは、名前と値の引数 PadMethod で指定されたパディング方法に従ってパディングを追加します。

    この引数によって PadPartialBlocks プロパティが設定されます。

    read 関数の各呼び出しで返すブロックの数。正の整数として指定します。read 関数の各呼び出しでは最大で ReadSize 個のブロックが読み取られます。

    この引数によって ReadSize プロパティが設定されます。

    プロパティ

    すべて展開する

    このプロパティは、オブジェクトの作成後に読み取り専用になります。

    データストアに含めるブロック。blockLocationSet オブジェクトとして返されます。オブジェクトは、ブロック化されたイメージ Images からどのブロックを含めるかを指定します。

    このプロパティは、オブジェクトの作成後に読み取り専用になります。

    ブロック サイズ。1 行 D 列の数値ベクトルとして返されます。D は、Levels の最初の解像度レベルにおける、Images 内の最初のブロック化されたイメージの次元数です。

    各次元の追加のブロック境界要素のサイズ。1 行 D 列の非負の整数のベクトルとして指定します。D は、Levels の最初の解像度レベルにおける、Images 内の最初のブロック化されたイメージの次元数です。既定値は zeros(1,D) です。

    このプロパティは、オブジェクトの作成後に読み取り専用になります。

    blockedImageDatastore にブロックを提供するブロック化されたイメージ。blockedImage オブジェクトの配列として返されます。Images のすべての要素は、同じ次元数、同じデータ型です。

    不完全なブロックのパディングに使用する方法。次の表のいずれかの値として指定します。既定では、データストアは、Images 内の最初のブロック化されたイメージの InitialValue プロパティ値で数値ブロックをパディングします。

    意味

    数値スカラー、logical スカラー、または categorical スカラー

    指定した値の要素で配列をパディングします。PadMethod のデータ型は、ブロック化されたイメージの ClassUnderlying プロパティと一致しなければなりません。

    "replicate"

    ブロックの境界要素を繰り返してパディングします。

    "symmetric" (R2023a 以降)

    同じブロック内からのピクセルの鏡像でパディングします。

    エッジに存在する部分ブロックのパディング。logical スカラーの true または false として指定します。true の場合、ブロック化されたイメージ データストアは、PadMethod プロパティで指定されたパディング方法に従ってパディングを追加します。

    read 関数の各呼び出しで返すブロックの数。正の整数として指定します。read 関数の各呼び出しでは最大で ReadSize 個のブロックが読み取られます。

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

    利用可能なブロックの総数。数値スカラーとして返されます。

    オブジェクト関数

    combine複数のデータストアのデータを統合
    countEachLabel各クラスのピクセル ラベル数をカウント
    hasdataブロック化イメージ データストアにより多くのデータがある場合に true を返す
    numpartitionsデータストアの区画数
    partitionReturn partitioned part of blocked image datastore
    previewデータストア内のデータのサブセットをプレビュー
    readRead data and metadata from blocked image datastore
    readallブロック化イメージ データストアから全データを読み取る
    resetデータストアの初期状態へのリセット
    shuffleデータストア内のデータのシャッフル
    subsetデータストアまたは FileSet のサブセットの作成
    transformデータストアの変換
    writeallWrite blocked image datastore to files

    すべて折りたたむ

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

    bim = blockedImage("tumor_091R.tif");

    解像度レベルとブロック サイズを指定してデータストアを作成します。

    bls = selectBlockLocations(bim,Levels=2,BlockSize=[512 512]);
    bimds = blockedImageDatastore(bim,BlockLocationSet=bls);

    データストア内のすべてのブロックを読み取ります。

    b = readall(bimds)
    b=9×1 cell array
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
    
    

    ブロック化されたイメージを表示します。

    montage(b)

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

    PNG ファイル形式の複数のイメージ ファイルを格納する FileSet オブジェクトを作成します。

    fs = matlab.io.datastore.FileSet( ...
         fullfile(matlabroot,"toolbox","images","imdata"), ...
        "FileExtensions",".png");

    アダプターを指定して、blockedImage オブジェクトを作成します。こうすることで、各ファイルを検査して適切なアダプターを選択する必要がなくなるため、時間の節約になります。

    readAdapter = images.blocked.GenericImage;
    bims = blockedImage(fs,"Adapter",readAdapter);

    すべてのイメージは同じ次元数をもたなければならないため、RGB イメージのみを保持します。

    bims = bims([bims.NumDimensions]==3);
    bimds = blockedImageDatastore(bims,"BlockSize",[300 500], ...
         "PadMethod","replicate");

    blockedImageDatastore 内のすべてのブロックを表示します。

    montage(readall(bimds),"Border",2,"BackgroundColor","w");

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

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

    bim = blockedImage("tumor_091R.tif");

    オーバーラップするブロックを指定します。

    blockSize = [512 512];
    overlapPct = 0.5;
    blockOffsets = round(blockSize.*overlapPct);
    bls = selectBlockLocations(bim,BlockSize=blockSize, ...
          BlockOffSets=blockOffsets,ExcludeIncompleteBlocks=true);

    ブロック化イメージ データストアを作成します。

    bimds = blockedImageDatastore(bim,BlockLocationSet=bls);

    オーバーラップするブロックを表示します。

    bimds.ReadSize = 6;
    blocks = read(bimds);
    montage(blocks, BorderSize=5,BackgroundColor="b");

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

    blockedImage を作成します。

    bim = blockedImage('tumor_091R.tif');

    最も粗いレベルでマスクを作成します。

    bmask = apply(bim, @(bs)~imbinarize(im2gray(bs.Data)),"Level",3);

    マスクで定義された染色領域において 'on' ピクセルが 90% 以上のブロックについて、blockedImageDatastore を作成します。

    mbls = selectBlockLocations(bim,...
         'Levels', 1, ...
         'Masks', bmask, 'InclusionThreshold', 0.90,...
         'BlockSize', [256 256]);
    bimds = blockedImageDatastore(bim, 'BlockLocationSet', mbls);

    ブロックを読み取って表示します。

    bimds.ReadSize = 5;
    blocks = read(bimds);
    montage(blocks, "BorderSize", 5, "BackgroundColor", 'b')

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

    数値データとラベル付きデータから、ブロック化されたイメージを作成します。

    bim = blockedImage("yellowlily.jpg",BlockSize=[512 512]);
    bimLabels = blockedImage("yellowlily-segmented.png",BlockSize=[512 512]);

    ブロック化されたイメージごとに blockedImageDatastore オブジェクトを作成します。

    bimds = blockedImageDatastore(bim);
    bimdsLabels = blockedImageDatastore(bimLabels);

    ラベル付けされた数値データを categorical データに変換します。

    classes = ["Unknown","Flower","Leaf","Background"];
    classIDs = [0 1 2 3];
    bimdsCategorical = transform(bimdsLabels, ...
          @(bs){categorical(bs{1},classIDs,classes)});

    元の blockedImageDatastore をカテゴリカル データストアと結合します。

    bimdsCombined = combine(bimds,bimdsCategorical);  

    結合したデータストアからデータを読み取って表示します。最初の cell はイメージ データ、2 番目の cell は categorical ラベルです。

    data = read(bimdsCombined)
    data=1×2 cell array
        {512×512×3 uint8}    {512×512 categorical}
    
    
    imshow(labeloverlay(data{1},data{2}));  

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

    バージョン履歴

    R2021a で導入

    すべて展開する