Is it possible to write a double data matrix into TIFF images ( Movie)?
55 ビュー (過去 30 日間)
古いコメントを表示
Jaladhar Mahato
2018 年 1 月 13 日
コメント済み: Walter Roberson
2021 年 11 月 20 日
I have a 100X100X19 matrix in the attached Aniso file. Now I want to convert those double data into images ( Movie). Is it at all possible?
FYI: I have used MATLAB "Tiff" function but it supports only the int16 data.
13 件のコメント
Walter Roberson
2018 年 11 月 24 日
The imwrite2tif code that you attached as the solution is the code I linked to back on January 14 2018, the day after you posted your question.
So far I still find no evidence that any program supports movies stored in TIFF format. ImageJ supports reading TIFF into a "stack" and supports animating a stack, but if you wanted to save that as a video you would need animated GIF or AVI in ImageJ itself, with some other possibilities such as QuickTime being available through plugins -- but not one of the plugins I found supports movies stored in TIFF format.
採用された回答
Walter Roberson
2018 年 1 月 14 日
It is possible to write ieee single (32 bit) to tiff.
It is not possible to write in half precision (16 bit floating point) in any released version of MATLAB; I would need to check to see if that is even supported by the TIFF 6.0 standard. I do not recall support for half precision anywhere in any MATLAB toolbox.
But these matters are not relevant because TIFF has no movie format. If you need to create movies then you need to use a different format.
2 件のコメント
Walter Roberson
2018 年 1 月 14 日
Single Precision Tiff:
The contribution https://www.mathworks.com/matlabcentral/fileexchange/30519-export-image-to-tif-or-tiff-file-of-selected-data-type claims to be able to write TIFF double precision.
その他の回答 (2 件)
Jan
2018 年 1 月 13 日
This will work with imwrite.
Data = load('Aniso.mat');
A = Data.A;
imwrite(A(:, :, 1), 'test.tiff');
for k = 2:size(A, 3)
imwrite(A(:, :, k), 'test.tiff', 'WriteMode', 'append');
end
4 件のコメント
Jan
2018 年 1 月 14 日
You can convert the decimal values to uint16 by:
data = rand(640, 480);
dataU16 = im2uint16(data);
This can be written for uint32 also:
dataU32 = data * intmax('uint32');
Of course you loos some precision, but TIFF files are not designed to store double data. As you see in Walter's answer, at least single would work.
Alexandra Holland
2021 年 11 月 19 日
I hope this can help some of you. I am not sure if this is answering your question though, but you can save your double as a .mat file, then load it, then extract it from the resulting structure as follows:
cd(folder_name)
save('file_name.mat','var_name');
X = load('file_name.mat');
Since you end up with a structure, you need to extract the data as follows:
Y = X.var_name; % voila. You have your double back.
You can check you end up with the exact same with the command
Z=mean(Y-var_name,'all'); % and you can verify that Z=0.
1 件のコメント
Walter Roberson
2021 年 11 月 20 日
I do not see how this would have helped? The original poster already had their data as a .mat file.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!