在 Matlab 中读取和查看大 tiff

Big tiff read and view in Matlab

我从下面的链接下载了一个 btf 文件(big tiff),我该如何阅读它 "imshow"?有没有办法将它转换为 tiff 格式,因为 btf 并不常见?

Link:

https://drive.google.com/file/d/0ByhuP_NuuARtSW9aeTdPUTlRdWM/view?usp=drive_web

http://www.photomacrography.net/forum/viewtopic.php?t=28990&sid=cca737a2e0bc7ea3e2e41f0d6e75f5a9

我使用了这个代码:

t = Tiff('d:/Image_687.btf','w8');
imageData = read(t);

并收到此错误:

Error using tifflib Unable to retrieve PhotometricInterpretation.

Error in Tiff/getTag (line 838) tagValue = tifflib('getField',obj.FileID,Tiff.TagID.(tagId));

Error in Tiff/read (line 1487) photo = obj.getTag('Photometric');

Error in Untitled2 (line 2) imageData = read(t);

您的代码的真正问题是您传递给 Tiff 的第二个参数。正如 documentation 所述,第二个参数指示以何种模式打开文件。您已指定 w8,文档说明为:

open TIFF file for writing a BigTIFF file; discard existing contents.

这意味着它甚至在您开始之前就删除了您的图像!如果要使用 Tiff class,则需要不使用第二个参数或使用 r 参数打开文件进行读取。

t = Tiff('Image_687.btf');
t = Tiff('Image_687.btf', 'r');

话虽这么说,但通常最好尝试使用更高级别的函数加载它,例如 imread。 Tiff class 是一个非常 lower-level 的函数,操作起来可能有点困难,但可以提供一些所需的特殊功能。

 im = imread('Image_687.btf');
 size(im)

     3072   4080   3

我不得不对显示进行一些操作,因为 RGB 值不在 0 到 255 之间

im = double(im);
im = uint8(255 * im ./ max(im(:)));
imshow(im);