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

こんにちは。小熊と申します。
対象から得た[ピクセルの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

2 votos

グレースケールの画像については以下の手順が必要だと思っています。
①光度のスケールを統一(正規化)
②画像の形にする
①正規化
 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

Hernia Baby
Hernia Baby el 16 de Jul. de 2021
画像処理について学びたい場合は画像処理入門がオススメです。
Atsushi Ueno
Atsushi Ueno el 16 de Jul. de 2021
上記回答の②画像の形にするに従って、元のCSVデータから画像を作成してみます。下記手順の逆を行って作成したテスト用データの読み込みから始めます。(データ削減の為100*100のデータにしています)
mytable = readtable('answers879763.csv');
myarray = table2array(mytable); % table⇒arrayに型変換
for i = myarray'
x(i(1),i(2)) = i(3); % 1番目と2番目で示す座標に3番目のデータを格納
end
x = uint8(x); % 画像とする為double⇒uint8に型変換
imshow(x,'InitialMagnification','fit');
(table型のまま処理できると思うのですがrowfunを使いこなせず下のような形になりましたすいません)
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

Productos

Versión

R2020a

Etiquetas

Preguntada:

el 16 de Jul. de 2021

Comentada:

el 19 de Jul. de 2021

Community Treasure Hunt

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

Start Hunting!