Does Matlab write a floating point image?

I have a .tif image where each pixel value (one channel) is a floating point. In any case, to read it using matlab ( imread ), do some operation and write it back in floating point?

If I do imwrite(I,'img.tif') , it is converted to an 8-bit single channel (0 ... 255)

I found this sample only in mathworks:

 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(); 

Imfinfo:

  info = Filename: [1x110 char] FileModDate: '04-dic-2012 12:02:07' FileSize: 45720930 Format: 'tif' FormatVersion: [] Width: 2724 Height: 4193 BitDepth: 32 ColorType: 'grayscale' FormatSignature: [73 73 42 0] ByteOrder: 'little-endian' NewSubFileType: 0 BitsPerSample: 32 Compression: 'Uncompressed' PhotometricInterpretation: 'BlackIsZero' StripOffsets: [4193x1 double] SamplesPerPixel: 1 RowsPerStrip: 1 StripByteCounts: [4193x1 double] XResolution: 100 YResolution: 100 ResolutionUnit: 'None' Colormap: [] PlanarConfiguration: 'Chunky' TileWidth: [] TileLength: [] TileOffsets: [] TileByteCounts: [] Orientation: 1 FillOrder: 1 GrayResponseUnit: 0.0100 MaxSampleValue: 4.2950e+09 MinSampleValue: 0 Thresholding: 1 Offset: 45720696 SampleFormat: 'IEEE floating point' ModelPixelScaleTag: [3x1 double] ModelTiepointTag: [6x1 double] GeoKeyDirectoryTag: [52x1 double] GeoDoubleParamsTag: [3x1 double] 
+4
source share
1 answer

If what you want to do is read the .tif that contains the floats, manipulate it and write it again, your code example should work well. Just add image manipulation to the read file and it should work fine.

 img = imread(in_filename) timg = 2*timg; info = imfinfo(in_filename); t = Tiff(out_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(); 
+3
source

All Articles