🐕

vipsによるピラミダルタイルTIFF作成と圧縮方式の比較

に公開

はじめに

高解像度画像をWeb上で快適に閲覧するためには、ピラミダル構造(複数解像度)とタイル分割が不可欠です。本記事では、vipsを使用してJPEG2000画像からピラミダルタイルTIFFを作成し、各圧縮方式のファイルサイズを比較検証しました。

検証環境

vipsコマンド

JPEG圧縮(非可逆)

# 品質100(ほぼ無劣化)
vips tiffsave input.jp2 output_q100.tif --tile --pyramid --compression=jpeg --Q=100

# 品質75(バランス型)
vips tiffsave input.jp2 output_q75.tif --tile --pyramid --compression=jpeg --Q=75

# 品質25(高圧縮)
vips tiffsave input.jp2 output_q25.tif --tile --pyramid --compression=jpeg --Q=25

ロスレス圧縮

# Deflate圧縮(zlib)
vips tiffsave input.jp2 output_deflate.tif --tile --pyramid --compression=deflate

# LZW圧縮
vips tiffsave input.jp2 output_lzw.tif --tile --pyramid --compression=lzw

# 無圧縮(4GB超の場合はBigTIFF形式が必要)
vips tiffsave input.jp2 output_none.tif --tile --pyramid --compression=none --bigtiff

検証結果

ファイル 圧縮方式 サイズ 元ファイル比 備考
元ファイル JPEG2000 274MB - 入力
q25.tif JPEG Q=25 57MB 0.21x 非可逆・高圧縮
q75.tif JPEG Q=75 167MB 0.61x 非可逆・バランス
q100.tif JPEG Q=100 2.4GB 8.8x 非可逆・高品質
deflate.tif Deflate 2.8GB 10.2x ロスレス
lzw.tif LZW 3.2GB 11.7x ロスレス
none.tif 無圧縮 4.3GB 15.7x ロスレス

画質比較

JPEG圧縮の品質による違いを視覚的に比較しました(左から Q=25, Q=75, Q=100)。

JPEG品質比較(左: Q=25, 中央: Q=75, 右: Q=100)

Q=25では文字の輪郭にノイズが見られますが、Q=75以上ではほぼ劣化を感じません。

考察

JPEG圧縮

  • Q=25: 元ファイルの約1/5。文字の輪郭などにJPEG特有のノイズが見られる。プレビュー用途向け
  • Q=75: 元ファイルの約6割。品質とサイズのバランスが良く、多くの用途で推奨(vipsのデフォルト値)
  • Q=100: ロスレスに近いが、ファイルサイズはロスレス圧縮より小さい

ロスレス圧縮

  • Deflate: ロスレス圧縮の中で最も効率的(2.8GB)
  • LZW: Deflateより約14%大きい(3.2GB)
  • 無圧縮: 4GB超のためBigTIFF形式が必要

JPEG2000との比較

元のJPEG2000ファイル(274MB)は非常に効率的な圧縮を実現しています。JPEG2000はウェーブレット変換を使用しており、TIFFのJPEG圧縮(DCT変換)とは異なるアルゴリズムです。

ただし、JPEG2000はブラウザでの直接表示に対応しておらず、IIIFサーバー経由でのタイル配信が必要です。ピラミダルTIFFは多くのIIIFサーバー(Cantaloupe等)でそのまま利用可能です。

用途別推奨設定

用途 推奨設定 理由
アーカイブ保存 Deflate ロスレスで最小サイズ
Web配信(高品質) JPEG Q=75〜85 品質とサイズのバランス
Web配信(速度重視) JPEG Q=50〜60 高速転送
印刷用途 JPEG Q=90〜100 高品質維持

まとめ

vipsを使用することで、高解像度画像から効率的にピラミダルタイルTIFFを作成できます。圧縮方式の選択は用途に応じて行い、一般的なWeb配信にはJPEG Q=75が推奨されます。

参考

Discussion