Save (multidimensional) Matlab matrix as float tiff and import to ImageJ
5 views (last 30 days)
Show older comments
Hello, I usually work with ImageJ. For a project I need to export some data (e.g. 2 and 3 dimensional images) from Matlab and import it into ImageJ. I would like to use 32-bit float tiff as file format, which is usually working well with ImageJ.
I have used a similar code to the one below, but I am not able to import the generated .tiff file into ImageJ. The error is: ImageJ can only open 8 and 16 bit/channel images.
But this is not true, since I have imported 32-bit images in the .TIFF format in ImageJ before.
Please help me. I've been trying to find a workaround for a couple of hours now, but it was not successful at all.
Best, Florian
info = imfinfo(filename);
t = Tiff(filename, 'w');
tagstruct.ImageLength = size(timg, 1);
tagstruct.ImageWidth = size(timg, 2);
tagstruct.Compression = Tiff.Compression.None;
tagstruct.SampleFormat = Tiff.SampleFormat.IEEEFP;
tagstruct.Photometric = Tiff.Photometric.MinIsBlack;
tagstruct.BitsPerSample = info.BitsPerSample; % 32;
tagstruct.SamplesPerPixel = info.SamplesPerPixel; % 1;
tagstruct.PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
t.setTag(tagstruct);
t.write(timg);
t.close();
0 Comments
Answers (1)
Mann Baidi
on 23 Jul 2024
Hi,
If you would like to create a double 32-bit float TIFF image in MATLAB using the LibTIFF library in MATLAB. You will have to convert the image data from 'double' datatype to 'single' datatype.
You can use the single function for converting the data as folllows:
% Generate random data for the 5 channels
R = single(rand(256, 256));
G = single(rand(256, 256));
B = single(rand(256, 256));
% Combine the channels into a 5-channel image
data = cat(3, R, G, B);
t = Tiff('output.tif', 'w');
t.setTag('ImageLength', size(data, 1));
t.setTag('ImageWidth', size(data, 2));
t.setTag('Photometric', Tiff.Photometric.MinIsBlack);
t.setTag('BitsPerSample', 32);
t.setTag('SampleFormat', Tiff.SampleFormat.IEEEFP);
t.setTag('SamplesPerPixel', 3);
t.setTag('Compression', Tiff.Compression.None);
t.setTag('PlanarConfiguration', Tiff.PlanarConfiguration.Chunky);
t.write(data);
% Close the file
t.close();
You can explore the single function using the documentation link mentioned below:
0 Comments
See Also
Categories
Find more on Image Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!