我从下面的链接下载了一个 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);
得到这个错误:
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 states,第二个参数表示以何种模式打开文件。您已指定 w8
,文档中指出的是:
open TIFF file for writing a BigTIFF file; discard existing contents.
这意味着它甚至在您开始之前就删除了您的图像!如果您想使用 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);
关于matlab - 在 Matlab 中读取和查看大 tiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798113/