TIFF ファイルとは何ですか?
TIFF または TIF (Tagged Image File Format) は、このファイル形式標準に準拠するさまざまなデバイスで使用するためのラスター イメージを表します。 2 値、グレースケール、パレット カラー、フルカラーの画像データを複数の色空間で表現できます。形式を使用するアプリケーションのスペースと時間のどちらかを選択するために、非可逆圧縮スキームと可逆圧縮スキームをサポートします。形式はマシンに依存せず、プロセッサ、オペレーティング システム、ファイル システムなどの制限を受けません。
TIFF ファイル形式の歴史
TIFF ファイル形式は、さまざまなスキャナ メーカーやソフトウェア開発者との一連の会議の後、1986 年の秋に Aldus Corporation によって最初に作成されました。 TIFF ファイル形式の主な目的は、すべてのデスクトップ スキャナー ベンダーに共通のスキャン イメージ ファイル形式を提供することでした。バイナリ イメージ形式のみのサポートから始まり、時間の経過とともに、形式はグレースケールおよびカラー イメージのサポートに進化しました。 TIFF ファイル形式仕様の最初のバージョンは、以前に 2 つのドラフト リリースがあったため、Reivision 3.0 として分類できます。メジャー リビジョン 5.0 が 1988 年に公開され、パレット カラー イメージと LZW 圧縮のサポートが追加されました。その後、1992 年に TIFF ファイル形式のリビジョン 6.0 が公開されました。 1994 年に Adobe Systems が Aldus を買収し、現在では Adobe Systems が仕様を入手して管理しています。
TIFF ファイル形式の仕様
TIFF ファイル形式は拡張可能であり、個人情報や特別目的の情報を無制限に含めることができるように、いくつかの改訂が行われています。 TIFF ファイルは 8 バイトのヘッダーで始まります。バイトは 0 から N までの数字です。可能な最大の TIFF ファイルの長さは 2**32 バイトです。ファイルは、イメージ ファイル (IFD) を直接指す 8 バイトのイメージ ファイル ヘッダーで始まります。 IFD には、画像に関する情報と、実際の画像データへのポインターが含まれています。
TIFF ファイルのヘッダー
8 バイトの TIFF ファイル ヘッダーには、次の情報が含まれています。
Bytes 0-1: ファイル内で使用されるバイト順。正当な値は、「II」(4949.H)「MM」(4D4D.H) です。
「II」形式では、16 ビット整数と 32 ビット整数の両方で、バイト順は常に最下位バイトから最上位バイトの順になります。これはリトル エンディアン バイト順と呼ばれます。 「MM」形式では、16 ビット整数と 32 ビット整数の両方で、バイト順は常に最上位から最下位の順です。これは、ビッグ エンディアン バイト オーダーと呼ばれます。
バイト 2 ~ 3: ファイルを TIFF ファイルとしてさらに識別する、任意ではあるが慎重に選択された番号 (42)。バイト順序は、バイト 0 ~ 1 の値によって異なります。
バイト 4 ~ 7: 最初の IFD のオフセット (バイト単位)。ディレクトリは、ヘッダーの後のファイル内の任意の場所にある場合がありますが、単語境界で開始する必要があります。特に、イメージ ファイル ディレクトリは、それが記述するイメージ データの後に続く場合があります。リーダーは、ポインターが導くところならどこでもポインターをたどる必要があります。バイト オフセットという用語は、このドキュメントでは常に、TIFF ファイルの先頭に対する位置を参照するために使用されます。ファイルの最初のバイトのオフセットは 0 です。
画像ファイル ディレクトリ
IFD には、イメージに関する情報と、実際のイメージ データへのポインタが含まれています。これは、ディレクトリ エントリ数 (つまり、フィールド数) の 2 バイト カウントと、それに続く 12 バイト フィールド エントリのシーケンスで構成されます。 、次の IFD の 4 バイトのオフセットが続きます (ない場合は 0)。 TIFF ファイルには少なくとも 1 つの IFD が必要であり、各 IFD には少なくとも 1 つのエントリが必要です。
IFDエントリー
各 12 バイトの IFD エントリは次の形式です。
バイト | 説明 |
---|---|
0-1 | フィールドを識別するタグ |
2-3 | フィールドの種類 |
4-7 | 示された型の数 |
8-11 | 値オフセット、フィールドの値のファイル オフセット (バイト単位)。値は単語境界で始まることが期待されます。したがって、対応する値オフセットは偶数になります。このファイル オフセットは、画像データの後であっても、ファイル内の任意の場所を指している可能性があります。 |
TIFF フィールドは、TIFF タグとその値で構成される論理エンティティです。この論理的な概念は、IFD エントリとして実装され、値/オフセット部分 (IFD エントリの最後の 4 バイト) に収まらない場合は実際の値が追加されます。 TIFF フィールドと IFD エントリという用語は、ほとんどのコンテキストで交換可能です。
ベースライン TIFF
Baseline TIFF は TIFF の中核であり、主流のすべての TIFF 開発者が製品でサポートする必要がある基本要素です。 TIFF 形式への準拠は、ベースライン TIFF 要件の順守の対象となります。これらの要件は、仕様ドキュメント 6.0 で十分に文書化されています。
ファイルごとに複数の画像
TIFF ファイルには複数の IFD が存在する場合があります。各 IFD はサブファイルを定義します。サブファイルの潜在的な用途の 1 つは、ファクシミリ送信のページなど、関連するイメージを記述することです。ベースライン TIFF リーダーは、最初の IFD を超えて IFD を読み取る必要はありません。
画像の種類
ベースライン TIFF イメージには次のタイプがあります。
2 値: 2 値画像には、黒と白の 2 色が含まれます。 TIFF を使用すると、アプリケーションは白がゼロまたは黒がゼロのいずれかの形式で 2 値データを書き出すことができます。この情報を記録するフィールドは、PhotometricInterpretation と呼ばれます。
※RGBフルカラー
バイレベル イメージの PhotometricInterpretation 情報は次のとおりです。
タグ = 262 (106.H) タイプ = ショート 値
値 | 説明 |
---|---|
0 | バイレベルおよびグレースケール イメージの場合: 0 は白としてイメージ化されます。最大値は黒でイメージされます。これは Compression#2 の通常の値です。 |
1 | BlackIsZero. 2 値およびグレースケール イメージの場合: 0 は黒としてイメージ化されます。最大値は白でイメージされます。この値が Compression#2 に指定されている場合、画像は反転して表示および印刷されます。 |
グレースケール: グレースケール イメージは、バイレベル イメージを一般化したものです。バイレベル イメージは白黒のイメージ データのみを格納できますが、グレースケール イメージはグレーの陰影も格納できます。このような画像を説明するには、次のフィールドを追加または変更する必要があります。その他の必須フィールドは、2 値画像に必要なフィールドと同じです。グレースケール イメージの場合、圧縮 # 1 または 32773 (PackBits)。ベースライン TIFF では、グレースケール イメージを非圧縮データとして保存するか、PackBits アルゴリズムで圧縮することができます。
グレースケール イメージの BitsPerSample 情報は次のとおりです。
タグ = 258 (102.H) タイプ = ショート
コンポーネントあたりのビット数。ベースライン TIFF グレースケール イメージの許容値は 4 と 8 で、16 または 256 の異なるグレー シェードが可能です。
パレット カラー: パレット カラー イメージは、グレースケール イメージに似ています。ピクセルごとに 1 つのコンポーネントがありますが、コンポーネント値は完全な RGB ルックアップ テーブルへのインデックスとして使用されます。このような画像を記述するには、次のフィールドを追加または変更する必要があります。その他の必須フィールドは、グレースケール画像の場合と同じです。 Palette-Color イメージの PhotometricInterpretation 情報は次のとおりです。
PhotometricInterpretation = 3 (パレット カラー)。 カラーマップタグ = 320 (140.H) タイプ = ショート N = 3 * (2 ビット/サンプル)
このフィールドは、パレット カラー イメージの赤、緑、青のカラー マップ (ルックアップ テーブルと呼ばれることが多い) を定義します。パレット カラー イメージでは、RGB ルックアップ テーブルのインデックスにピクセル値が使用されます。たとえば、値が 0 のパレット カラー ピクセルは、0 番目の赤、緑、青のトリプレットに従って表示されます。TIFF カラーマップでは、すべての赤の値が最初に来て、次に緑の値、次に青の値が続きます。 ColorMap では、黒は 0,0,0 で表され、白は 65535、65535、65535 で表されます。
RGB フルカラー: RGB 画像では、各ピクセルは赤、緑、青の 3 つの要素で構成されています。 ColorMap はありません。RGB 画像を記述するには、次のフィールドと値を追加または変更する必要があります。その他の必須フィールドは、パレット カラー イメージに必要なフィールドと同じです。
BitsPerSample = 8,8,8.ベースライン TIFF RGB イメージでは、各コンポーネントの深さは 8 ビットです。
PhotometricInterpretation = 2 (RGB) で、カラーマップはありません。
タグ = 277 (115.H) タイプ = ショート ピクセルあたりのコンポーネント数。余分なサンプルが存在しない限り、RGB イメージの場合、この数は 3 です。