Main Content

denoisingImageDatastore

ノイズ除去イメージ データストア

説明

denoisingImageDatastore オブジェクトを使用して、ImageDatastore 内のイメージからノイズを含むイメージ パッチとそれに対応するノイズ パッチを一括生成します。このパッチは、ノイズ除去を行う深層ニューラル ネットワークの学習に使用されます。

このオブジェクトには Deep Learning Toolbox™ が必要です。

メモ

ノイズ除去イメージ データストアを学習データのソースとして使用する場合、データストアがエポックごとにランダム ノイズをイメージ パッチに追加するため、エポックごとに若干異なるデータセットが使用されます。エポックごとの学習イメージの実際の数は、PatchesPerImage の倍数で増加します。ノイズを含むイメージ パッチとそれに対応するノイズ パッチはメモリに格納されません。

作成

説明

dnimds = denoisingImageDatastore(imds) は、イメージ データストア imds のイメージを使用して、ノイズ除去イメージ データストアを作成します。ノイズを含むイメージ パッチを生成するために、ノイズ除去イメージ データストアは、imds の初期状態のイメージを無作為にトリミングし、ゼロ平均で標準偏差が 0.1 のホワイト ガウス ノイズをイメージ パッチに追加します。

dnimds = denoisingImageDatastore(imds,Name=Value) は、名前と値の引数を使用して 2 次元イメージ パッチのサイズを指定するか、PatchesPerImageGaussianNoiseLevelChannelFormat、および DispatchInBackground プロパティを設定します。複数の名前と値の引数を指定できます。

たとえば、denoisingImageDatastore(imds,PatchesPerImage=40) は、イメージ データストア imds の各イメージを使用して、ノイズ除去イメージ データストアを作成し、ノイズを含む 40 個のパッチを無作為に生成します。

入力引数

すべて展開する

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

名前と値の引数

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

例: denoisingImageDatastore(imds,patchSize=48) は、48 ピクセルの正方形パッチ サイズをもつノイズ除去イメージ データストアを作成します。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: denoisingImageDatastore(imds,"patchSize",48) は、48 ピクセルの正方形パッチ サイズをもつノイズ除去イメージ データストアを作成します。

パッチのサイズ。正の整数または正の整数の 2 要素ベクトルとして指定します。この引数は、PatchSize プロパティの最初の 2 要素を設定します。

  • "patchSize" がスカラーの場合、パッチは正方形です。

  • "patchSize" が [r c] 形式の 2 要素ベクトルの場合、最初の要素はパッチ内の行数を指定し、2 番目の要素は列数を指定します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

プロパティ

すべて展開する

チャネル形式。"grayscale" または "rgb" として指定します。

データ型: char | string

学習、予測、および分類中のバックグラウンドにおける観測値の送信。数値または logical の 0 (false) または 1 (true) として指定します。バックグラウンド ディスパッチを使用するには、Parallel Computing Toolbox™ が必要です。DispatchInBackgroundtrue で、Parallel Computing Toolbox がある場合、denoisingImageDatastore はパッチを非同期に読み取り、ノイズを追加し、パッチのペアをキューに入れます。

イメージ クラスの最大値の一部としてのガウス ノイズ標準偏差。範囲 [0, 1] の値を持つスカラーまたは 2 要素ベクトルとして指定します。

  • GaussianNoiseLevel がスカラーの場合、追加したゼロ平均ホワイト ガウス ノイズの標準偏差は、すべてのイメージ パッチで同一です。

  • GaussianNoiseLevel が 2 要素のベクトルの場合、標準偏差の範囲 [stdmin stdmax] を指定します。追加したゼロ平均ホワイト ガウス ノイズの標準偏差は、各イメージ パッチで一意であり、範囲 [stdmin stdmax] の一様分布から無作為にサンプリングされます。

データ型: single | double

各バッチで返される観測値の数。正の整数として指定します。データストアの作成後にのみ MiniBatchSize の値を変更できます。学習、予測、または分類では、MiniBatchSize プロパティは trainingOptions (Deep Learning Toolbox) で定義されたミニバッチ サイズに設定されます。

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

ノイズ除去イメージ データストアに含まれている観測値の合計数。正の整数として指定します。観測値の数は 1 つの学習エポックの長さです。

イメージあたりのランダム パッチの数。正の整数として指定します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

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

パッチのサイズ。正の整数の 3 要素ベクトルとして指定します。名前と値の引数 patchSize を指定してノイズ除去イメージ データストアを作成する場合、PatchSize プロパティの最初の 2 つの要素は引数 patchSize の値に従って設定されます。

ChannelFormat プロパティは、PatchSize プロパティの 3 番目の要素を決定します。

  • ChannelFormat"Grayscale" の場合、すべてのカラー イメージがグレースケールに変換され、PatchSize の 3 番目の要素は 1 になります。

  • ChannelFormat"RGB" の場合、RGB イメージをシミュレートするためにグレースケール イメージが複製され、PatchSize の 3 番目の要素は 3 になります。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

オブジェクト関数

combine複数のデータストアのデータを統合
hasdataデータが読み取り可能かどうかを判別
partitionByIndexインデックスに応じた denoisingImageDatastore の分割
previewデータストア内のデータのサブセットをプレビュー
readdenoisingImageDatastore からデータを読み取る
readallデータストアのすべてのデータの読み取り
readByIndexdenoisingImageDatastore からインデックスで指定されたデータを読み取る
resetデータストアの初期状態へのリセット
shuffleデータストア内のデータのシャッフル
transformデータストアの変換
isPartitionableデータストアが分割可能かどうかを判別
isShuffleableデータストアがシャッフル可能かどうかを判別

すべて折りたたむ

イメージ データストアを取得します。この例のデータストアにはカラー イメージが含まれています。

setDir = fullfile(toolboxdir("images"),"imdata");
imds = imageDatastore(setDir,FileExtensions=".jpg");

イメージ データストア内の各イメージから多数のパッチを作成し、パッチにガウス ノイズを追加する denoisingImageDatastore オブジェクトを作成します。名前と値の引数を使用して、denoisingImageDatastore のオプションの PatchesPerImagePatchSizeGaussianNoiseLevel、および ChannelFormat プロパティを設定します。ChannelFormat プロパティを "grayscale" に設定した場合、denoisingImageDatastore はすべてのカラー イメージをグレースケールに変換します。

dnds = denoisingImageDatastore(imds, ...
    PatchesPerImage=20, ...
    PatchSize=64, ...
    GaussianNoiseLevel=[0.01 0.1], ...
    ChannelFormat="grayscale")
dnds = 
  denoisingImageDatastore with properties:

         PatchesPerImage: 20
               PatchSize: [64 64 1]
      GaussianNoiseLevel: [0.0100 0.1000]
           ChannelFormat: 'grayscale'
           MiniBatchSize: 128
         NumObservations: 660
    DispatchInBackground: 0

ヒント

  • さまざまな範囲のガウス ノイズ標準偏差について深層ニューラル ネットワークを学習させることは、単一のガウス ノイズ標準偏差についてネットワークを学習させる場合と比較して、はるかに難しい問題です。単一のノイズ レベルのケースと比較して、多くのパッチを作成する必要があり、学習に時間がかかる可能性があります。

  • ノイズ除去イメージ データストアのデータを可視化するには、データのサブセットをテーブルで返す関数 preview を使用できます。変数 input にはノイズを含むイメージ パッチが格納され、変数 response には対応するノイズ パッチが格納されています。関数 montage を使用して、ノイズを含むイメージ パッチまたはノイズ パッチをすべて同じ Figure に可視化します。たとえば、このコードはノイズ除去イメージ データストア dnimds のデータを表示します。

    minibatch = preview(dnimds);
    montage(minibatch.input)
    figure
    montage(minibatch.response)

  • ノイズ除去イメージ データストアからイメージを読み取るたびに、異なるランダムな量のガウス ノイズが各イメージに追加されます。

バージョン履歴

R2018a で導入