我有一个.tif
图像,其中每个像素值(单通道)都是浮点数。反正有没有用matlab(imread
)读取它做一些操作并用浮点写回它?
如果我这样做imwrite(I,'img.tif')
,它将转换为 8 位单通道 (0...255)
我只在 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();
信息:
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]