simpleA記

馬にふつまに 負ほせ持て

FuzzyさんよりPNG到着


さて、みなさんのご協力で、少しずつ、前に進んでるよ。各方面からの応援メッセージもありがと。


基本的に、できるだけ、修正せずに、そのまま載せていきまーす。なので、表現の修正などの提案などは、みんなで意見してね。あと、wikiとかそーいったものが詳しい人は、こういう訂正作業がみんなでできるような環境を整えてくれたりすると、楽チンかもね。


今回は、いたってシンプルに、いたってプリミティブに、進めていきましょ。


id:fuzzyさんからの翻訳


『Alternative File Formats for Storing Master Images of Digitisation Projects』http://www.scribd.com/doc/2388286/Alternative20File20Formats20for20Storing20Masters202201

3.1 PNGとは何か? 24
3.2 詳細 25
3.2.1 ストラクチャー 25
3.2.2 エンコードとデコード/フィルターリングと圧縮 25


3.1 PNGとは何か?

PNG(Portable Network Graphics)は、当初はインターネットの送信で使うために開発された、可逆圧縮かつポータブル、単一ラスター・イメージのためのデータ・ストリームと関連するファイル形式です。大きな開発者グループ(PNG開発グループ)は、特許で保護されたGIFフォーマットおよび関連したLZW圧縮の代替手段として、1995年よりWorld Wide Web Consortium (W3C)の監督下で開発を始めました。 最初の公式のバージョン(1.0)は1997年にW3C Recommendationとして生まれました。 PNGバージョン1.2が1999年に公開され、このバージョンが2003年に国際標準化されました(ISO/IEC 15948:2003)。仕様はW3Cを通して自由に利用可能です: http://www.w3.org/TR/PNG/


PNG開発者の目的は以下の通りでした:

  • a. ポータビリティー(移植性): エンコード、デコードおよび送信は、ソフトウェアとハードウェアのプラットホームから独立であるべきです。
  • b. 完全性: フルカラー、インデックスカラー、グレースケールで表現可能です。いずれの場合も透明度、色空間情報、そして、テキストコメントなどの補助的情報のオプションが利用可能です。
  • c. シリアルエンコードおよびデコード: データストリームはシリアルに生成可能で、かつシリアルに読み出し可能であるべきです。オン・ザ・フライ生成およびシリアル通信チャネル経由の画像表示に使用できるデータ・ストリーム形式を可能にします。
  • d. プログレッシブ表示: 最初に画像全体がぼんやりと表示され、データ・ストリームを受信するにしたがって画像が鮮明になっていくようなデータ・ストリームの送信が可能であるべきです。
  • e. 伝送エラーへのロバスト性: データ・ストリーム伝送エラーは確実に検出可能であるべきです。
  • f. 無劣化性(ロスレス): フィルタリングと圧縮はすべての情報を保存するべきです。
  • g. パフォーマンス: いかなるフィルタリング、圧縮、およびプログレッシブ画像表示も、効率的なデコードと表示を目的とするべきです。 高速なエンコードは、高速なデコードほど重要でない目標です。 デコード速度は、エンコード速度を犠牲にして達成されるかもしれません。
  • h. 圧縮: 画像は、他の設計目標と両立する範囲で、効率的に圧縮されるべきです。
  • i. シンプル: 開発者は容易に規格を実装することができるべきです。
  • j. 相互運用性: いずれのPNG標準準拠のデコーダーでも、すべてのPNG準拠のデータ・ストリームを読み込む能力があるでしょう。
  • k. 柔軟性: 将来の拡張とプライベートな追加は、PNG標準データ・ストリームの相互運用性が確保される範囲で許されるべきです。
  • l. 法的制限がないこと: 自由に利用可能でないアルゴリズムは使用するべきではありません。


これらの目的は最後のPNG規格で達成されました。


3.2 詳細


3.2.1 ストラクチャー


PNGデータ・ストリームは、PNGデータ・ストリームであることを示すPNG署名と、その後に続くチャンクのシーケンス(「コンポーネント」を意味する)で構成されます。それぞれのチャンクには、ゴールを指定するチャンクタイプがあります。いくらかのチャンクは必須です(重要)。そして、多くの部分は補助的なものです(付属物)。このチャンク構造は、フォーマットの拡張と後方互換性を両立する狙いで開発されました。


3.2.2 エンコードとデコード/フィルタリングと圧縮


エンコードは以下の6ステップで行われます:

  1. パス抽出: プログレッシブ表示を可能にするために、PNGイメージピクセルが再配列され、縮小イメージまたはパスと呼ばれるいくつかの小さいイメージが形成される。
  2. スキャンライン・シリアライゼーション: イメージは、スキャンライン毎にシリアル変換されます。 ピクセルはスキャンライン中を左から右に並びます。スキャンラインは、上から下に並びます。
  3. フィルタリング: それぞれのスキャンラインは、画像圧縮のためのスキャンラインを用意するために定義されたフィルタタイプのひとつを使用することで、フィルター済みスキャンラインに変換されます。
  4. 圧縮: イメージ中のすべてのフィルター済みスキャンラインで発生します。
  5. チャンク生成: 圧縮画像は適当な大きさのチャンクに分割されます。 エラー検出コードはそれぞれのチャンクに追加されます。
  6. データ・ストリーム生成: チャンクはデータ・ストリームに挿入されます。


以下では、フィルタリングと圧縮だけを説明します。


圧縮の前に、スキャンライン毎のバイト並べ替えのため、圧縮フィルタが使用されます。 スキャンライン単位で異なったフィルタを使用できます。 このことにより、圧縮率が大きく高まります。PNG圧縮アルゴリズムは、可逆圧縮でかつ特許に抵触しないinflate/deflateメソッド(zlib/gzlib)が使われます。


圧縮率は、PNGエンコードオプションをどれだけ正確に、かつ完全に実装できるかに依存します。PNGファイルサイズを小さくできるソフトウェアツールをリサーチするのが良いでしょう。


あと、fuzzyさんより、翻訳メモも届いてますので、載せておきまーす。

参考:
翻訳: Excite翻訳 http://www.excite.co.jp/world/
辞書: 英辞郎 on the web http://eow.alc.co.jp/limit/UTF-8/
Portable Network Graphics http://ja.wikipedia.org/wiki/Portable_Network_Graphics
Portable Network Graphics (PNG) Specification (Second Edition) http://www.w3.org/TR/PNG/

機械翻訳の都合による置換
/datastream/data-stream/
脚注の番号は省略
その他若干。


今回適用した訳語
portable ポータブル ; 複数の環境における可用性や移植性を指すものと思われる
portability ポータビリティー(移植性)
datastream データ・ストリーム ; 中黒(・)は省略した方がよいかも
lossless 可逆圧縮 ; ロスレスや無劣化という表現も使われるかと
chunk チャンク
sequence シーケンス
image 今回は画像とイメージを混用
format 今回は形式とフォーマットを混用
ISO standardized 国際標準化された
encoding エンコード
decoding デコード
transmission 送信
true color フルカラー(TrueColor) ; 専門分野ではTrueColorが通用する。狭義は24bit colorを指す
indexed-color インデックスカラー ; カラーパレットを用いる256 colorを指す
greyscale グレースケール ; 無色の中間調表現モードを指す
transparency 透明度 ; アルファチャネルとも言う
color space information 色空間情報 ; RGB、CMYK、HSVなどを指す
on-the-fly オン・ザ・フライ ; 1パスで直接変換すること
Progressive プログレッシブ ; プログレッシブJPEGでよく使われている方式
Robustness ロバスト性
Filtering フィルタリング
standard 規格 または 標準
signature 署名 ; シグネチャの方が通りやすいかも
mandatory 必須
critical 重要
inessential 補助的
ancillary 付属物
backwards compatible 後方互換
Pass パス
serialization シリアライズ シリアル変換
scanline スキャンライン ; テレビやスキャナーの走査線とは定義が若干異なる
error detect エラー検出
inflate/deflate method inflate/deflateメソッド ; 圧縮形式(方式)の呼称


すでに、fuzzyさんから、次が届いてますが、明日あたりにこちらにアップできるかも。