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