[トップページ] [星雲紀行] [MLXS] [WPGen] [自作音楽] [モデル] [vi/vim] [tips] [自己紹介]

Image Format

目次

  1. このページは
  2. 圧縮アルゴリズム
    1. dxtc
    2. 3dc
    3. clut
    4. vq
  3. ファイルフォーマット
    1. ppm
      1. pgm
      2. pbm
      3. pfm
      4. ppm 変換
      5. ppm サンプルコード
    2. JPEG
    3. bitmap
    4. png
    5. png
    6. tga
    7. dds(direct draw surface)
  4. 用語
  5. 参考文献・参考ウェブページ
  6. 履歴

このページは

画像フォーマットについてのメモ。

[content]

dxtc

DXTC はテクスチャ圧縮技術。
本当はs3tc というべきだが、デファクトスタンダードな用語のdxtc で統一する。

MSDNの日本語訳は一部わかりにくいために良く注意する必要がある。例えばボリューム、スライス、3D という用語がが入り乱れているように見える。

  • 圧縮率は1/4 から 1/6
  • 4x4 の量子化単位
  • 2次圧縮が可能
  • DirectX の標準の圧縮形式
  • OpenGL でもローダがサンプルコードとして出ている。
  • カラー補間擬似コード(DXT012345)
    color0, color1 は16bit のRGB(5:6:5)
    if(color0>color1)
    {
    // dxt0
    color2 = (color0*1 + color1*2)/3;
    color3 = (color0*2 + color1*1)/3;
    }
    else
    {
    // dxt1
    color2 = (color0 + color1)/2;
    color3 = 0.0f;
    }
  • アルファ補間擬似コード(DXT45)
    alpha0, alpha1 は8bit
    if(alpha0>alpha1)
    {
    alpha2 = (alpha0*6 + alpha1*1)/7;
    alpha3 = (alpha0*5 + alpha1*2)/7;
    alpha4 = (alpha0*4 + alpha1*3)/7;
    alpha5 = (alpha0*3 + alpha1*4)/7;
    alpha6 = (alpha0*2 + alpha1*5)/7;
    alpha7 = (alpha0*1 + alpha1*6)/7;
    }
    else
    {
    alpha2 = (alpha0*4 + alpha1*1)/5;
    alpha3 = (alpha0*3 + alpha1*2)/5;
    alpha4 = (alpha0*2 + alpha1*3)/5;
    alpha5 = (alpha0*1 + alpha1*4)/5;
    alpha6 = 0.0f;
    alpha7 = 1.0f;
    }
  • サイズ 内容 用途
    DXT0 64bit 1bit alpha。4 段階補間。通常これはDXT1 に含まれる。 アルファ値を0か1でもつテクスチャ用
    DXT1 64bit 1bit alpha。3 段階補間。アルファ値が0を持つ。 アルファ値を0か1でもつテクスチャ用
    DXT2 128bit 4bit alpha をPerPixel でもつ。RGBにアルファが適用済みとみなされる。 アルファ値が急激に変化するフォント向け。 DXT3 でアルファを普通に適用する方が使いやすい。
    DXT3 128bit 4bit alpha をPerPixel でもつ。 アルファ値が急激に変化するフォント向け。
    DXT4 128bit アルファ値を補間して使う。 アルファ値は8bitx2を補間して8つにする。 RGBにアルファが適用済みとみなされる。 アルファ値がゆっくり変化するグラデーション画像など。 DXT5 でアルファを普通に適用する方が使いやすい。
    DXT5 128bit アルファ値を補間して使う。 アルファ値は8bitx2を補間して8つにする。 アルファ値がゆっくり変化するグラデーション画像など。 もっとも汎用的なDXT フォーマット。
  • データ配置(カラー)
    color0 rgb 565 bit, color1 rgb 565 bit, index 2bit x 16
  • データ配置(DXT23アルファ)
    alpha 4bit x 16
  • データ配置(DXT45アルファ)
    alpha0 8bit, alpha1 8bit, alpha index 3bit x 16

参考ウェブページ

[content]

3dc

3DC は法線マップのための圧縮技術。
2006年現在、ATI のみの技術。

[content]

clut

Color look Up Table の略。
4bit CLUT は16色のコードブックもち、index は1 テクセル4bit。
8bit CLUT は256色のコードブックをもち、index は1 テクセル8bit。
基本的にレガシーのフォーマット。

[content]

vq圧縮

VQ(VectorQuantalization) 圧縮はCLUT のコードブックが1x1 ではなく2x2 や4x4 などに取れる拡張版。
木目などのパターンが続く画像に有効。

[content]

ファイルフォーマット

ppm

PPM とはportable pixmap の略。

ppm は単純なファイルフォーマット。ascii またはraw フォーマットに幅、高さと色深度が加わった程度のもの。
シンプルなのでとても使いやすい。
6 種のバリエーションがある。

ヘッダ データ種類 内容 拡張子
P1 アスキー 2 値 pbm
P2 char x 1 pgm
P3 char x 3 ppm
P4 バイナリ 2 値 pbm
P5 char x 1 pgm
P6 char x 3 ppm

pgm

PGM とはPortable GrayMap の略。
グレイスケール画像など。

[content]
pbm

PBM とはPortable BitMap の略。

[content]
pfm

PFM とはPortable Float Map の略。
http://local.wasp.uwa.edu.au/~pbourke/dataformats/pbmhdr/

[content]
ppm 変換

他のフォーマットにしたいときにはImage Magic のconvert を使うと便利。

$ convert test.ppm test.bmp
$ convert test.ppm test.jpg
[content]
サンプルコード

ppm を生成するための簡単なC のシンプルなサンプルコード。
これを使うと、いろんなリファレンスの画像を簡単に作るのに便利。
グラデーションの画像が出るようにしている。

[Download] ppm-generate.cpp

[content]
参考ウェブページ

http://www.mm2d.net/c/c-08.shtml
http://en.wikipedia.org/wiki/Portable_pixmap

[content]

JPEG

参考http://www02.so-net.ne.jp/~koujin/jpeg/jpeg.html

[content]

bitmap

DeviceIndependentBitmap の代表的なフォーマット。
扱う際の注意点としては32bit の対応はまちまちで 24bit までしか保障されていない場合がある。
# Windows などそうらしい。

[content]
参考ウェブページ

http://www.kk.iij4u.or.jp/~kondo/bmp/

[content]

png

Portable Network Graphics

参考ウェブページ
http://www.jah.ne.jp/~naoyuki/Writings/MngPng.html
http://www5.cds.ne.jp/~kato/png/

[content]

mng

Multiple-image Network Graphics
png のアニメーション形式。フォーマットが複雑らしい。

参考ウェブページ
http://www.jah.ne.jp/~naoyuki/Writings/MngPng.html

[content]

tga

TGA (Targa) 形式はTruevison社のグラフィックボードで使用されていた画像形式。
TGA形式はフルカラー用だが、いくつか異なるタイプがあるようだ。
おもに24bit RGB と32bit RGBA。
アルファチャネルが扱えることからよく3D で使う。

18 バイト目からデータが始まるので決め打ちで18バイト目からデータを見たりできる。
# 24bit 32bit の違いなどをヘッダから読み取って処理をわけたほうがよい。

参考ウェブページ
デコード資料 仕様

[content]

dds(Direct Draw Surface)

Direct Draw Surface

[content]

参考文献・参考ウェブページ

  1. T.B.D.
[content]

履歴

  • 2006/08/05 追記
  • 2006/03/11 修正
  • 2004/00/00 初版作成
[content]
ご意見、ご感想、誤字、間違い等、お気づきの点がありましたら KGussan@Gmail.com まで連絡ください。
このウェブページの注意・免責事項 Copyright (C) 2004-2012 KGussan. [トップページ]
[PR:元国税局勤務の起業家向け、遺産相続の相談なら植村洋税理士事務所:一時間無料税理士相談。お気軽に。]