第 3 组压缩有 2 种变化(第 3 组 1D 和第 3 组 2D)。以 Tiff 格式保存图像时,EncoderValue 枚举中的 Group 3 只有一个选项。是否有一个单独的参数来控制它?
1 回答
是的。第 3 组压缩(更准确地说是 CCITT T.4)最常见的用途是用于传真图像。在这种情况下,图像定义为双层(1 位)图像,预计会进行 1D 压缩。因此,如果您除了将压缩值(标签 259)设置为“2”(对于双层图像)之外什么都不做,那么它被理解为 G3 1 维(修改后的霍夫曼)编码。唯一的其他选项是无压缩 (1) 和打包位 (32773)。基线阅读器应该支持所有三种编码类型,但根据我的经验,许多阅读器不能正确支持 Group III 压缩,尤其是 G32D。
G31D 比 G32D 更容易实现,但效率不高。G31D 单独存储每条扫描线,而 G32D 存储扫描线之间的差异。这可能会对定义图像所需的数据量产生巨大影响,例如典型的传真图像,其中大部分图像是空白白纸。
如果要使用 G3 二维编码,则必须在标签中更具体。您必须使用 CCITT 编码来指示 T4 压缩编码(CCITT T.4 是“Group 3”编码标准的“真实”名称)。要表明这一点,请设置标签 259 == 3。然后设置 T4 选项以指定二维编码。与标准压缩 (259) 标签等简单标签相比,T4 选项标签(标签 292)有点棘手。它是用作一组 32 位标志的 LONG 类型。如果您将所有位设置为零,则默认情况下会理解一维编码(与不包括此标签没有什么不同)。
对于二维编码,您必须将第 0 位(低位)设置为 1。(如果您使用多个条带,则每个条带显然必须以一维扫描线开始。)只有在以下情况下才将第 1 位设置为 1使用未压缩模式。位 2 用于指示您是否使用填充位将 EOL 保持在字节边界上(如果为真,则设置为 1)。所有其他位默认为零。
请记住,大多数读者无法理解 TIFF 中可用的所有选项。它是一种非常强大的格式,但是在基线 TIFF(可能处理 90% 以上的 TIFF 图像)之外实现起来很棘手。如果您使用第 3 组 2 维编码,您可以预期大多数专门支持传真图像和医学图像* 的阅读器都能正确解码图像。我不希望有更多。
(TIFF 不是标准的医学图像格式,但根据我的经验,支持 DICOM 图像和 TIFF 图像的读者通常支持完整的 TIFF 标准)
这个答案比我预期的要长。如果我仍然没有回答您的问题,请在您的原始帖子中澄清,我将编辑我的答案。
编辑:您可以在 Adobe 开发人员网站上找到 TIFF 标准和其他支持文档。http://partners.adobe.com/public/developer/tiff/index.html