私はSAR画像マットファイルを持っています。画像のサイズは512x512x8です。私は8つの別々のCSVフォーマットファイルにマットファイルを変換する必要があります。各csv形式ファイルの出力サイズは512x512である必要があります。SAR画像マットをcsv画像に変換する
どのようにイメージフォーマットを変換できますか?
私はSAR画像マットファイルを持っています。画像のサイズは512x512x8です。私は8つの別々のCSVフォーマットファイルにマットファイルを変換する必要があります。各csv形式ファイルの出力サイズは512x512である必要があります。SAR画像マットをcsv画像に変換する
どのようにイメージフォーマットを変換できますか?
書き出す3D配列が複素数値であると仮定します。ここでは、実数成分と虚数成分の2つのCSVファイルに3D複素数配列の各スライスを完全精度(小数点以下1桁)で書き込むシンプルな関数を示します。次のように
function complex2csv(basename, arr)
%COMPLEX2CSV writes the slices of a 3D complex array to two CSV files each.
%
% COMPLEX2CSV(BASENAME, ARR) for a string BASENAME and 3D complex array ARR
% writes each 3D slice of ARR to two ASCII comma-separated value (CSV) files,
% one for the real and one for the imaginary component.
%
% The format for file names is: '<BASENAME>-<slice number>-<REAL or IMAG>.csv'.
%
% If ISREAL(ARR) is true, the second set of files (for imaginary
% components) will not be created, since it would be filled with zeros.
dlmwrapper = @(filename, data) dlmwrite(filename, ...
data, ...
'precision', '%0.30g');
for i = 1 : size(arr, 3)
dlmwrapper(sprintf('%s-%d-REAL.csv', basename, i), real(arr(:, :, i)));
% Only write imaginary if it is there.
if ~isreal(arr)
dlmwrapper(sprintf('%s-%d-IMAG.csv', basename, i), imag(arr(:, :, i)));
end
end
あなたはこれをテストすることができます。
>> testData = randn(512, 512, 8) + 1j*randn(512, 512, 8);
>> complex2csv('test-image', testData)
これは132.8メガバイトの合計、16個のCSVファイル、各 8.3メガバイトを出してくれる。
小数点以下の桁数はすべて印刷されるため、このようなテキストファイルをdlmread
にすることができます(元のバイナリ配列は32 MBです)任意のデータアーカイブシステムにとって常にプラスです)。
MATデータファイルをお持ちの場合は、ここで変換します。 MATにIMAGE
という名前の変数が含まれているとします。
data = load('my-mat-file.mat'); % data is a struct
complex2csv('my-mat-file', data.IMAGE);
最終結果は512x512でなければなりません。 – Alice
生データは複素数値ですか、実数ですか? –