【问题标题】:Big tiff read and view in Matlab在 Matlab 中读取和查看大 tiff
【发布时间】:2016-01-14 19:32:33
【问题描述】:

我从下面的链接下载了一个 btf 文件(大 tiff),我如何阅读它并“显示”它?有没有办法将其转换为 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/读取错误(第 1487 行) photo = obj.getTag('光度学');

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

【问题讨论】:

  • 你尝试了什么代码?您收到什么错误消息?
  • 在问题中更新了它

标签: matlab tiff


【解决方案1】:

您的代码的真正问题是您传递给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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多