首页 文章

大tiff在Matlab中阅读和查看

提问于
浏览
2

我从下面的链接下载了一个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 回答

  • 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

相关问题