MATLAB Answers

Soum
0

save images as tif 32 bits by using imwrite

Asked by Soum
on 7 Feb 2014
Latest activity Answered by Ashish Uthama on 7 Feb 2014
Hi;
I'm trying to save my images as tif 32 bits but I got this Error:
Cannot write uint32 data to a TIFF file
this is my code:
for K=1:10
Id{k} = waverec2(t_C,L,'sym8');
filename= ['C:\Path \Id_number_' num2str(k) '.tif'];
Id{k}=uint32(Id{k});
imwrite(Id{k},filename);
end
I need to save my images as tif 32 bits :/ have you any idea?
Thank you in advance

  0 Comments

Sign in to comment.

2 Answers

Answer by Andreas Goser on 7 Feb 2014
 Accepted Answer

There is something in recent release called TIFF Class. Can you tell me if this meets your needs? Documentation here.

  1 Comment

Thanks Mr.Andreas But tif or Tiff unit32 still not working I want the output my images as 32 bits :/ what can I do? Cannot write uint32 data to a TIFF file

Sign in to comment.


Answer by Ashish Uthama on 7 Feb 2014

Soum, did you click on the documentation link? Andreas was talking about the Tiff class, which is a different interface than IMWRITE.
Here is how you can use the Tiff class:
%
% Start with:
% http://www.mathworks.com/help/matlab/import_export/exporting-to-images.html#br_c_iz-1
data = uint32(magic(10));
This is a direct interface to libtiff
t = Tiff('myfile.tif','w');
% Setup tags
% Lots of info here:
% http://www.mathworks.com/help/matlab/ref/tiffclass.html
tagstruct.ImageLength = size(data,1);
tagstruct.ImageWidth = size(data,2);
tagstruct.Photometric = Tiff.Photometric.MinIsBlack;
tagstruct.BitsPerSample = 32;
tagstruct.SamplesPerPixel = 1;
tagstruct.RowsPerStrip = 16;
tagstruct.PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
tagstruct.Software = 'MATLAB';
t.setTag(tagstruct)
t.write(data);
t.close();
d = imread('myfile.tif');
disp(class(d));
assert(isequal(d,data))

  0 Comments

Sign in to comment.