我有一個SAR圖像mat文件,圖像大小爲512x512x8。我需要將mat文件轉換爲8個獨立的csv格式文件。每個csv格式文件的輸出大小應該是512x512。將SAR圖像mat轉換爲csv圖像
我怎樣才能隱藏圖像格式?
我有一個SAR圖像mat文件,圖像大小爲512x512x8。我需要將mat文件轉換爲8個獨立的csv格式文件。每個csv格式文件的輸出大小應該是512x512。將SAR圖像mat轉換爲csv圖像
我怎樣才能隱藏圖像格式?
我假設要寫出的3D數組是複數值的。下面是一個簡單的函數,它以全精度(即,小數點後的小數位)將3D複數組的每個切片寫入兩個CSV文件,用於實數和虛數分量。
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)
該吐出16個CSV文件,每個 8.3 MB,共計132.8 MB。 (原始的二進制數組只有32 MB-數字ASCII對於磁盤空間是殘酷的。)
因爲所有的小數位都打印出來了,所以你應該能夠使用dlmread
這樣的文本文件並獲得原始數據的位精確副本(對於任何數據檔案系統來說都是一個優點)。
如果你有一個MAT數據文件,這裏是我如何轉換它。假定MAT包含一個名爲IMAGE
的變量。
data = load('my-mat-file.mat'); % data is a struct
complex2csv('my-mat-file', data.IMAGE);
最終結果應該是512x512 cvs圖片 – Alice
原始數據是複數值還是實數值? –