如何指定特定的Group 3 tiff压缩?

时间:2009-02-18 22:34:22

标签: c# drawing tiff imaging

第3组压缩有2种变化(第3组1D和第3组2D)。以Tiff格式保存图像时,EncoderValue枚举中只有一个选项用于第3组。是否有一个单独的参数来控制它?

1 个答案:

答案 0 :(得分:2)

是。第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)有点棘手。它是一种LONG类型,用作一组32位标志。如果将所有位设置为零,则默认情况下将理解1维编码(与不包括此标记的情况不同)。

对于二维编码,必须将位0(低位)设置为1.(如果使用多个条带,则每个条带显然必须以1维扫描线开始。)位1设置为1仅在使用未压缩模式时。位2用于指示是否已使用填充位将EOL保持在字节边界上(如果为真,则设置为1)。所有其他位默认为零。

请记住,大多数读者都无法理解TIFF中的所有可用选项。它是一种非常强大的格式,但这使得在基线TIFF(可能处理90%以上的TIFF图像)之外实现变得棘手。如果您正在使用Group 3 2 Dimensional编码,您可以预期大多数专门支持传真图像和医学图像*的读者将正确解码图像。我不希望得到更多。

TIFF不是标准的医学影像格式,但根据我的经验,读者支持DICOM图像和TIFF图像,通常支持完整的TIFF标准

这个答案比我预想的要长。如果我仍然没有回答你的问题,请在原帖中说明,我会编辑我的答案。

编辑:您可以在Adobe开发人员网站上找到TIFF标准和其他支持文档。 http://partners.adobe.com/public/developer/tiff/index.html