ImageDatas​tore内の画像をt​ransformを用​いてコントラスト変換​し表示する方法

7 views (last 30 days)
拓 青柳
拓 青柳 on 22 Oct 2022
Commented: 拓 青柳 on 23 Oct 2022
深層学習を用いたX線画像の2クラス分類を行っております。
imdsTrainは1×1 ImageDatastoreとして定義されており、以下のコードによってコントラスト変換及び変換後の画像を表示しようとしましたがエラーが生じてしまいます。ご教示ください。
%%
imdsTrainnew = transform(imdsTrain,@(x) imadjust(x,[0.1 0.1 0.1; 0.9 0.9 0.9],[]));
%%
minibatch = read(imdsTrainnew);
imshow(imtile(minibatch.input))
使い方によるエラー matlab.io.datastore.TransformedDatastore/read
データストアに定義されている変換関数が無効です。
エラー: untitled3 (5)
minibatch = read(imdsTrainnew);
原因:
使い方によるエラー imadjust>checkRange
関数 imadjust を 2 要素のベクトルにするには、
その second 入力引数に [LOW_IN; HIGH_IN] が必要です。
>>

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 22 Oct 2022
動作確認をしていませんが、エラーの原因とimadjust関数のドキュメントを見比べ原因を断定出来ます。
imadjust関数の第1引数に入力可能な「グレースケールイメージ・RGBイメージ・カラーマップ」の内、
imadjust関数の第2引数に入力する [low_in high_in] — 入力イメージのコントラストの範囲[low_RGB_triplet; high_RGB_triplet] 形式の 2 行 3 列の行列である事が許されないのは「グレースケールイメージ」だけです。
imdsTrain内の画像イメージに少なくとも1つのグレースケールイメージが含まれているはずです。その場合、imadjust関数の第2引数に入力する [low_in high_in]は2 行 3 列の行列ではなく1 行 2 列のベクトルでなければなりません。
imadjust(x,[0.1 0.9],[])
  2 Comments
Atsushi Ueno
Atsushi Ueno on 22 Oct 2022
>RGB イメージまたはカラーマップで 1 行 2 列のベクトルを指定する場合、imadjust は色平面またはチャネルごとに同じ調整を適用します。
なので、もしimdsTrain内の画像イメージにRGBイメージが混在していても1 行 2 列のベクトルで同じ動作になります。もしRGBのチャネル毎に異なるコントラスト調整をする場合はこの限りではありません。
imadjust(x,[0.1 0.1 0.1; 0.9 0.9 0.9],[])
imadjust(x,[0.1 0.9],[]) % 上記と下記は同じ
拓 青柳
拓 青柳 on 23 Oct 2022
大変参考になりました。
ありがとうございます。

Sign in to comment.

More Answers (0)

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!