matlab - 在 Matlab 中读取和查看大 tiff

标签 matlab tiff

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

Resulting Image

关于matlab - 在 Matlab 中读取和查看大 tiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798113/

相关文章:

ocr - 为什么我在 Tesseract 中收到 "tiff page 1 not found"Lebtonica 警告?

python - Numpy破坏PIL TiffImageFile的tile属性

matlab - 使用 MATLAB 搜索文件

Python:如何在 twinx 之后制作图例

python - 仅计算 TIFF 核心图像数据的哈希值

tiff - 存储在外部标记文件中的 Version2 Tiff 注释规范

c++ - 使用 QPixmap::load( ) 读取 GeoTiff 时的 TIFFReadDirectory 警告

matlab phi 符号

python - 在 for 循环中绘图,在 matplotlib 中具有 'hold on' 效果?

matlab - 具有大量零的矩阵的高效乘法