数値データから画像を再現する方法について

42 visualizaciones (últimos 30 días)
塁 小熊
塁 小熊 el 16 de Jul. de 2021
Comentada: 塁 小熊 el 19 de Jul. de 2021
こんにちは。小熊と申します。
対象から得た[ピクセルのX座標(1~750),ピクセルのY座標(1~480),光強度]というようなスペクトルデータから、MATLAB上で256階調グレースケール画像を生成したいのですがどのようにすればいいでしょうか。
plot scatter stackedplot image など検討したのですが素人の私では上手くいかず、質問をしてアドバイスをいただきたいと考えました。
ちなみに生成した画像はSqueezNetを用いた転移学習に利用します。
下にある画像は700nmのスペクトルデータを抽出したものであり、360000×3のテーブルです。
元のCSVデータだと400~1000nmの5nm刻みなので2(座標)+121(各波長)=123列にも及びます。
一番の理想として、元のCSVデータからMATLABを通して各波長の画像が生成されて、転移学習のデータストア用のファイルに自動で蓄積されていく事ですが、一先ずはこのようなデータから画像を生成出来るのか、またできるとしたらどのようにすれば良いのかを知りたく質問しました。
元のCSVデータは非常にサイズが大きいため添付していませんが、もし必要であれば別途「ギガファイル便」などのサービスを通じて共有したいと思います。
よろしくお願いします。

Respuesta aceptada

Hernia Baby
Hernia Baby el 16 de Jul. de 2021
Editada: Hernia Baby el 16 de Jul. de 2021
グレースケールの画像については以下の手順が必要だと思っています。
①光度のスケールを統一(正規化)
②画像の形にする
①正規化
 0~1にスケールを合わせて、それをuint8(0~255)にすれば大丈夫です。
②画像の形にする
 ここではそもそも画像がどのようなものになっているかを説明します。
x = linspace(255,0,12);
x = uint8(x);
I = reshape(x,[3,4]);
imshow(I,'InitialMagnification','fit');
 x は0~255のパラメータになっており、それを3×4のサイズで表示しております。
 I のパラメータを数字で見てみましょう。
I
I = 3×4
255 185 116 46 232 162 93 23 209 139 70 0
 つまり@塁 小熊様が行うべきはreshape等によって光の強度を480×750の配列にすることです。
 この形ができれば、imwriteで保存していけば大丈夫かと思います。
  4 comentarios
Atsushi Ueno
Atsushi Ueno el 16 de Jul. de 2021
もし座標情報にズレや順番の前後がなく規則正しく並んでいれば、回答にあるreshapeでも問題無く格子上データに整形できます。
塁 小熊
塁 小熊 el 19 de Jul. de 2021
Herniaさん Uenoさん 返信ありがとうございます。
両方のやり方を試してみました。どちらもうまくいきました!
以下の画像はレタスの反射率データと光強度データから、それぞれ生成しました。
反射率データは数値の幅が0-100なので、256階調において正確に再現されているように見えます。
一方で光強度データは幅が0-4095なので、256階調での表現に無理があるのか白飛びしている箇所が多くなってしまいました。
とは言え画像化する方法に関して理解出来たので、お二方のやり方に工夫を加える等して上記の課題は克服しようと思います。
素人まる出しの質問であったにもかかわらず丁寧にアドバイス頂き、大変助かりました。
ありがとうございました!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Modify Image Colors en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!