gpt4 book ai didi

image - Matlab 用浮点值写图像?

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:36 29 4
gpt4 key购买 nike

我有一个 .tif 图像,其中每个像素值(单 channel )都是 float 。有没有办法用 matlab (imread) 读取它做一些操作并以 float 写回?

如果我执行 imwrite(I,'img.tif') 它会转换为 8 位单 channel (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]

最佳答案

如果您想做的是读取包含 float 的 .tif,对其进行操作,然后再次将其写出,您的代码示例应该运行良好。只需添加读取的文件和图像处理,它应该工作得很好。

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

关于image - Matlab 用浮点值写图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777444/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com