1

我正在尝试使用低级函数(fopenfread)来读取 TIFF 格式的灰度图像,uint16如下所示:

fid = fopen(filepath,'r');
img = fread(fid,[ncolms, nrows], 'uint16=>uint16')';

得到的图像矩阵与简单地使用得到的图像矩阵不同imread

img = imread(filepath);

生成的图像如下所示(左侧为 by fread,右侧为 by imread):

在此处输入图像描述

除了明显的强度差异外,人们可能还会注意到fread图像的顶部边缘存在一些伪影。我认为这一定是由于他们阅读图像的机制不同。

fopen我想知道如何使用和读取图像(灰度,不是二进制)这样的低级函数,如果可以的话fread,相当于使用。imread

4

1 回答 1

1

您看到的那些“工件”可能是在图像数据之前存储在文件中的标题和标签数据。我建议看看这个TIFF File Format Summary如果您真的想自己阅读,它将准确地告诉您如何阅读所有这些额外信息。请注意,其中一些额外的标记信息(即 ImageHeight、ImageWidth、BitsPerSample、SamplesPerPixel 等)将有助于确定如何正确读取图像数据,从而匹配您从imread函数中获得的图像。

于 2017-05-12T23:05:31.700 回答