質問: 数値データから画像を再現する方法について こんにちは。小熊と申します。 対象から得た[ピクセルの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データは非常にサイズが大きいため添付していませんが、もし必要であれば別途「ギガファイル便」などのサービスを通じて共有したいと思います。 よろしくお願いします。
回答: グレースケールの画像については以下の手順が必要だと思っています。 1光度のスケールを統一(正規化) 2画像の形にする 1正規化 0~1にスケールを合わせて、それをuint8(0~255)にすれば大丈夫です。 2画像の形にする ここではそもそも画像がどのようなものになっているかを説明します。 x = linspace(255,0,12); x = uint8(x); i = reshape(x,[3,4]); imshow(i,'initialmagnification','fit'); x は0~255のパラメータになっており、それを3×4のサイズで表示しております。 i のパラメータを数字で見てみましょう。 i つまり@塁 小熊様が行うべきはreshape等によって光の強度を480×750の配列にすることです。 この形ができれば、imwriteで保存していけば大丈夫かと思います。