标签: libtiff

MATLAB 编写多页 tiff 呈指数级缓慢

我正在尝试编写一个多页 tiff 文件,它是 128 像素 x 128 像素 x 122000 帧的 16 位无符号整数。ImageJ 或简短的 Python 脚本可以在不到一分钟的时间内在快速机器上完成此操作。在同一台机器上,使用我尝试过的任何方法,MATLAB 可能需要几天时间才能完成。这是我迄今为止尝试过的:

使用 imwrite 将 IMG 写入 test.tif(MATLAB 文档推荐)

    tic
    numframes=size(IMG,3);
    divider=10^(floor(log10(numframes))-1);
    imwrite(IMG(:,:,1),'test.tif');
    for i=2:numframes;
        imwrite(IMG(:,:,i),'test.tif','WriteMode','append');
        if (round(i/divider)==i/divider)
            fprintf('Frame %d written in %.0f seconds, %2d percent complete, time                 left=%.0f seconds \n', ...
                i, toc, i/numframes*100, (numframes - i)/(i/toc));
        end
    end
Run Code Online (Sandbox Code Playgroud)

这导致以下输出:

第 10000 帧在 104 秒内写入,8.196721e+00% 完成,剩余时间=1163 秒 20000 帧在 296 秒内写入,1.639344e+01% 完成,剩余时间=1509 秒 30000 帧写入 5.4509%,296 秒完成,剩余时间=1809 秒 40000 帧用 1035 秒写入,3.278689e+01% 完成,剩余时间=2121 秒 …

matlab tiff libtiff

6
推荐指数
1
解决办法
2357
查看次数

在给定最小ESRI ASCII文件的情况下,在libtiff或libgeotiff中设置的相应字段是什么?

我有一个形式的ESRI ASCII文件:

ncols         5 
nrows         4 
xllcorner     0 
yllcorner     0 
cellsize      10 
NODATA_value  -9999 
25.4 26.1 27 28.6 27.7
25 26 26.4 27.9 27.4
25.1 25.8 26.8 28.6 27.6
27.5 28 27.7 30.6 28.3
Run Code Online (Sandbox Code Playgroud)

我需要使用libtiff.net(或其C++等价物,libtiff或libgeotiff,或GDAL,或任何其他C#或C++库)将其转换为geotiff文件.

但我根本不知道要设置的字段是什么,有很多字段,例如TIFFTAG_IMAGEWIDTH,TIFFTAG_SAMPLESPERPIXEL或者TIFFTAG_BITSPERSAMPLE我不知道它们是否相关.

给定如上所述的ESRI ASCII文件,如何使用libtiff.net或libtiff库创建geotiff文件?

我为什么要这样做?

在我的应用程序中,我有一个网格,我必须将网格转换为光栅文件.我想直接从网格采样创建这样的geotiff光栅文件,而不首先创建中间ASCII文件,因为中间文件大小与最终geotiff输出文件相比非常大.

我能想到的唯一方法是使用libtiff.net直接操作geotiff文件,同时获取网格上的网格点.

怎么做,还是有更好的方法?

mesh gdal libtiff geotiff libtiff.net

6
推荐指数
1
解决办法
296
查看次数

search.h-在Android-tiff 4.0.1上移植libtiff时没有这样的文件或目录

我想在Android上移植libtiff.我使用的源版本是tiff 4.0.1.我在u1 android OS中构建这个源代码.运行mmm external/tiff 4.0.1 /我收到以下错误

In file included from external/tiff-4.0.1/libtiff/tiffiop.h:33,
                 from external/tiff-4.0.1/libtiff/tif_dirread.c:42:
external/tiff-4.0.1/libtiff/tif_config.h:93:1: warning: "HAVE_MALLOC_H" redefined
In file included from <command-line>:0:
./system/core/include/arch/linux-arm/AndroidConfig.h:221:1: warning: this is the location of the previous definition
In file included from external/tiff-4.0.1/libtiff/tif_dirread.c:42:
external/tiff-4.0.1/libtiff/tiffiop.h:54:21: error: search.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试在互联网上搜索很多,但无法解决问题.任何人都可以向我提供一个大概可能出错的地方或缺少哪个包裹.

linux ubuntu android tiff libtiff

5
推荐指数
1
解决办法
1514
查看次数

TIFF图像:16bits-RGBA图像像素是如何隔行扫描的?

我试图通过C语言处理每通道16位RGBA TIFF图像,我在规范中找不到关于16位图像的大量信息.

在每通道8位RGBA图像的情况下,我理解像素存储为uint32,并且可以通过将32位分组为8位的4组(R,G,B,A)来进行解交织.然后为了处理每通道8位RGBA图像,我正在做以下事情(另请参见此处附带的源代码):

  1. 我将图像数据存储为我调用的uint32选项卡(使用TIFFReadRGBAImageOriented) data_tiff
  2. 我使用下列命令去隔行像素:(uint8) TIFFGetR(*data_tiff),(uint8) TIFFGetG(*data_tiff),(uint8) TIFFGetB(*data_tiff)(uint8) TIFFGetA(*data_tiff)

如果每通道RGBA图像为16位,您能告诉我如何对像素进行去隔行扫描?如果我可以将图像数据作为uint64选项卡进行检索,那么我可以执行以下操作:

#define    TIFF16GetR(abgr)    ((abgr) & 0xffff)
#define    TIFF16GetG(abgr)    (((abgr) >> 16) & 0xffff)
#define    TIFF16GetB(abgr)    (((abgr) >> 32) & 0xffff)
#define    TIFF16GetA(abgr)    (((abgr) >> 48) & 0xffff)`
Run Code Online (Sandbox Code Playgroud)
  1. 我将图像数据作为uint64选项卡读取
  2. 我使用隔行像素(uint16) TIFF16GetR(*data_tiff),(uint16) TIFF16GetG(*data_tiff),(uint16) TIFF16GetB(*data_tiff)(uint16) TIFF16GetA(*data_tiff)

但似乎数据本身并未存储在uint64选项卡中,所以我想知道如何将每通道16位的图像隔行扫描到uint32像素选项卡中.

我也面临着以相同方式处理16位灰度图像的困难(使用TIFFReadRGBAImageOriented获取图像数据并尝试将每个像素转换为uint16)

更一般地说,你有任何关于16位灰度和彩色图像的文档吗?

谢谢您最好的问候,

雷米A.

c image libtiff

5
推荐指数
1
解决办法
1290
查看次数

将自定义标签添加到 TIFF 文件

我\xe2\x80\x99m对libtiff相当陌生,但我\xe2\x80\x99已经设法获得tiff文件\n保存和打开没有太多麻烦。

\n\n

现在,我\xe2\x80\x99m雄心勃勃,并尝试将自定义标签添加到我的文件中。我\xe2\x80\x99ve\n阅读了文档(请参阅此处)并编写了一些测试代码,这些代码编译时没有\n错误,但在运行时失败,并在第一次调用\n具有自定义字段的 TIFFSetField 时发生访问冲突(调用 TIFFSetField带有\n标准字段就可以了)。

\n\n

我的测试代码如下:不到 100 行,唯一的外部依赖项(除了 libtiff)是我从 .pgm 文件打开测试图像的代码。谁能指出我\xe2\x80\x99m 做错了什么?顺便说一句,我正在使用 libtiff 4.0.3。

\n\n
#include "stdafx.h"\n#include "PGM.h"      // Just for reading in the test image\n#include "tiffio.h"\n\n// There are a number of TIFF-related definitions we need to make in order to support the custom tags\n// that we want to include in our files. The form of these definitions and subroutines comes straight\n// out of the libtiff documentation, and the values of the custom tags themselves come …
Run Code Online (Sandbox Code Playgroud)

c c++ tiff libtiff

5
推荐指数
1
解决办法
6575
查看次数

处理4gb以上的纹理(BigTiff)OpenGL

我正在研究一些高清成像软件,虽然这个版本目前没有规划非常大的纹理,但我想做一些未来的打样.

如果我正在处理非常大的纹理(例如1095630 x 939495),我可以使用压缩纹理和mip贴图的标准组合,或者这些纹理是否会大到存储在纹理内存中?

我的假设是它们太大了,我不得不在CPU上做一个psudeo手动mip贴图.即抓取非常大的数据,为完全缩小创建一个合理的压缩版本然后随着用户放大,将大纹理的子部分发送到GPU?

在CPU上执行压缩的想法非常慢,所以我的计划是将数据平铺并将其发送到GPU以进行压缩.在这种情况下,我如何找出(最好是动态的)GPU可以处理的最大纹理尺寸?

我是TIFF格式的新手,但从它的外观来看,它已经存储为瓷砖,这是正确的吗?我希望与libtiff有点玩,但我没有找到很多使用它的例子(我的google技能今天让我失望,道歉). /sf/

现有的例子 我希望从这两个方面得到一些指示:

总结:

  • 我如何找出GPU可以处理的最大纹理尺寸(最好是3D纹理尺寸......)
  • 什么是打破大纹理格式并将其压缩到GPU可以处理的最佳方式
  • 什么是促进缩放的最佳方式?
  • 指针使用libTiff?

opengl textures large-data libtiff

5
推荐指数
1
解决办法
732
查看次数

OSX上不兼容的openCV和libtiff库

我正在使用金字塔的tiff文件.但是,OpenCV不支持pyramided tiff文件,因此我尝试使用libtiff 4.0.3提取我需要的图层/目录/分辨率,然后将其传递给OpenCV进行处理.

我包括如下:

#include "tiffio.h"
#include "opencv2/highgui/highgui.hpp"
Run Code Online (Sandbox Code Playgroud)

但这样做给了我以下内容types_c.h:

typedef int64_t int64;
Typedef redefinition with different types ('int64_t(aka 'long long') vs 'long')
Run Code Online (Sandbox Code Playgroud)

似乎int64_t由两个库中的每个库以不同方式定义.

我已经习惯homebrew安装这两个库,所以我不想编辑这些库,因为这会导致更新问题,对我团队的未来开发人员来说是一个痛苦等等.

有没有办法可以使用这两个库而不修改它们?

c++ macos homebrew opencv libtiff

5
推荐指数
1
解决办法
585
查看次数

Libtiff:从像素阵列生成 TIFF/EP Profile 2 原始图像

我正在尝试从任意像素阵列生成 TIFF/EP Profile 2 原始 (.dng) 图像。该像素阵列代表拜耳模式(CFA)。

我研究了 TIFF/EP 文件规范,并通过使用 libtiff,包含了我认为生成完整 .dng 文件所需的所有标签。但是,我无法使用 dcraw 转换创建的文件(dcraw 显示无法解码文件)。

一个问题可能是由两个标签引起的,这两个标签在 TIFF/EP 规范中被声明为强制标签,但似乎并未在 libtiff 中实现:SensingMethod 和 TIFF/EPStandardID 标签。我真的必须包含它们吗(我已经看到示例代码忽略了这些标签,但仍然报告可以正常工作),如果是这样,我如何手动将它们添加到 libtiff 中?此外,设置 SubIFD 标记会产生错误消息“断言失败:*pa<=0xFFFFFFFFUL,文件 tif_dirwrite.c,第 1869 行”

总而言之,我不认为我的问题只是由于这三个标签造成的,而且我相信存在根本性的错误。也许你们中的某个人可以看看我的代码并提供一些线索?我不得不说 libtiff 的文档相当差,所以我的代码受到了极少数示例代码之一的启发:elphel_dng.c

非常感谢!法比安

附言。我将生成的文件上传到Dropbox

C++

#include "tiffio.h"
#include <iostream>
using namespace std;

int main(void)
{
TIFF *tif = TIFFOpen("8bitRaw.dng", "w");

const int sampleperpixel = 1;
const int width = 4;
const int height = 4;

static const short bayerPatternDimensions[] = { 2,2 };
static const …
Run Code Online (Sandbox Code Playgroud)

image libtiff dcraw dng

5
推荐指数
1
解决办法
1845
查看次数

如何预测 CMake 在给定平台上选择 LIBDIR

在我的应用程序套件中,我从源代码构建 Libtiff,然后将其链接到我自己编写的应用程序。Libtiff 的 CMakeLists.txt 文件指定静态库进入库位置 CMAKE_INSTALL_FULL_LIBDIR,由 CMake 的 GNUInstallDirs 选项确定。

当我第一次构建和测试我的应用程序时,我在 Debian 中这样做,并且在此平台上 CMAKE_INSTALL_FULL_LIBDIR 设置为 ${CMAKE_INSTALL_PREFIX}/lib。很好,所以在我自己的应用程序的 CMakeLists.txt 文件中,我告诉它在那里搜索静态 tiff 库。没问题...

现在,我已将相同的构建套件应用于 Red Hat Linux 平台(Pengwin Enterprise for WSL),结果发现此处 CMAKE_INSTALL_FULL_LIBDIR 设置为 ${CMAKE_INSTALL_PREFIX}/lib 64。我检查了CMake 文档,似乎说实际上“lib”或“lib64”的选择是自动确定的并且与平台相关。

那么,在我自己的应用程序的 CMakeLists.txt 文件中,有没有办法找出它在我当前平台上的位置?否则我该如何猜测去哪里寻找图书馆呢?我环顾四周,但找不到保存平台相关字符串的 CMAKE 标准变量,所以我唯一能想到的是:

  1. 尝试“lib”,如果不起作用,请尝试“lib64”,或者
  2. 在我自己的 CMakeLists.txt 文件中创建一个新的 CMAKE_INSTALL_FULL_LIBDIR 并读取其末尾

...但这两种方法看起来都笨拙不雅,肯定有更好的方法。

cmake libtiff pengwin pengwin-enterprise

5
推荐指数
1
解决办法
9237
查看次数

在 Mac OS X 上安装 Pillow 时缺少头文件 tiffio.h

当尝试使用 PIP 安装 Pillow 时,我收到以下包含错误:

\n\n
\xce\xbc ~: pip install pillow\n...\nlibImaging/TiffDecode.h:10:10: fatal error: 'tiffio.h' file not found\n\n#include <tiffio.h>\n\n         ^\n\n1 error generated.\n\nerror: command 'cc' failed with exit status 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

有谁知道如何解决这个问题?我使用的是 OS X 10.9,之前已经能够在这台计算机上构建 Pillow。

\n\n

更新:请注意,我tiffio.h的机器上有/usr/local/include/tiffio.h. 将该目录设置为 C 包含路径后,我能够成功编译 Pillow。

\n\n
\xce\xbc ~: C_INCLUDE_PATH=/usr/local/include\n\xce\xbc ~: pip install pillow\nDownloading/unpacking pillow\n...\nSuccessfully installed pillow\nCleaning up...\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是应该如何完成的,还是我的机器或安装包有问题?

\n

macos pip libtiff python-imaging-library mezzanine

4
推荐指数
1
解决办法
4684
查看次数