大tiff在Matlab中阅读和查看

时间:2016-01-14 19:32:33

标签: matlab tiff

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

链接:

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

并收到此错误:

  

使用tifflib时出错   无法检索PhotometricInterpretation。

     

Tiff / getTag中的错误(第838行)                       tagValue = tifflib(' getField',obj.FileID,Tiff.TagID。(tagId));

     

Tiff / read错误(第1487行)               photo = obj.getTag(' Photometric');

     

Untitled2中的错误(第2行)   imageData = read(t);

1 个答案:

答案 0 :(得分:6)

您的代码的真正问题是您传递给Tiff的第二个参数。作为documentation状态,第二个参数指示打开文件的模式。您已指定文档所声明的w8

  

打开TIFF文件以写入BigTIFF文件;丢弃现有内容。

这意味着它甚至在您开始之前删除了您的图像!如果您想使用Tiff类,您将不想使用第二个参数或r参数来打开文件进行阅读。

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

话虽如此,一般来说最好尝试使用更高级别的功能加载它,例如imread。 Tiff类是一个更低级别的函数,可能有点难以操作,但可能提供一些所需的专业功能。

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

     3072   4080   3

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

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

Resulting Image