研究開発

---- 新開発・画像圧縮技術 ----
KIFF ... 非可逆式ブロックDCT圧縮
CHP! ... 可逆式ブロック転換圧縮
FVQC ... 非可逆式フラクタルVQ圧縮


Kt Interchange File Format
Kt Interchange File Format(以下KIFF)は、北研究所が開発した主に自然画像を
対象とした画像圧縮技術です。JPEGとほぼ同程度、(場合によってはそれ以上
の)高い画質を保ったままJPEGの約半分のサイズ(*)に圧縮することができます。
RGB-YUV、ブロック変換、二次元DCT量子化とKIFFのために高度に最適化され
たハフマン圧縮法の組み合わせで良好なクォリティとコンパクトなデータサイズを
実現することのできる、とても優れた画像圧縮技術です。
(*)=最高画質どうしでの比較


KIFF圧縮アルゴリズム
Step.1 RGB->YUV変換
RGB画像からYUVにデータ変換することで情報量を削減するきっかけをつくります。
この作業は特に次ステップ以降から行われる方法の圧縮率に大きな影響を与え
ます。オプションで、このステップを省略することもできます。
省略時は符号処理、復号処理ともに高速になりますが、データ圧縮効率が悪く
なってしまうことがあります。

Step.2 ブロック符号化
あらかじめ設定された量子係数マトリックスに従って画像を8x8のブロック単位で
量子化します。係数はアプリケーションから指定する値によって変化を加えられ、
画質および圧縮レベルを調節することが可能です。
この作業により出力されるファイルサイズと画像の品質がほぼ決まります。
ブロック内をジグザグにスキャンすることで圧縮効率を向上させています。

Step.3 2次元DCT変換
各プレーン(R・G・BまたはY・U・V)のブロックごとに2次元のDCT処理を施し、高
周波成分の情報を抑えて量子化します。

Step.4 ランレングス&ハフマン
このステップまでにじゅうぶん量子化されたデータをランレングスと、KIFFのため
に最適化されたハフマン法によってビット圧縮します。


KIFF展開アルゴリズム
圧縮アルゴリズムで解説した方法の逆方向を単純にたどるだけのことなので
省略します。


KIFFヘッダ
[KIFF](4) マジックコード('KIFF')
[*]   (1) モード(値:RGB=1,YUV=0)
[*]   (1) 量子マトリックス(値:KIFF=0,JPEG互換=1,CGやアニメーション用=2)
[*]   (1) 量子係数(値:0〜15)
[*]   (1) 予約(必ず0にしておく)
[****](4) 横画像サイズ
[****](4) 縦画像サイズ
[....](-) 圧縮画像データ

※()カッコ内の数字はバイト数。


KIFFとJPEG
KIFFはJPEGとほとんど同じ手順を踏んでコード化されていることに気がつかれ
ると思いますが、いくつかのステップでJPEGと異なっています。
まず量子係数マトリックスが、出力されるKIFFイメージに適合するよう計算され
ます。このことは符号化効率と画像の品質を向上させます。
そしてランレングスと、ハフマンによる算術圧縮部も最適化されJPEGよりも高い
圧縮率を実現することができます。またJPEGはしばしば色差成分をダウンサン
プリングして用いられることがありますが、KIFFでは色差成分のダウンサンプリ
ングを行ないません。


KIFFの特徴
JPEGとほぼ同程度の画質を保ち、かつJPEGよりも少ない情報量で圧縮を実現
できるKIFFは非常に効率の良い圧縮技術と言えます。その秘密はKIFFのため
に最適化された二段階の量子化ステップとハフマン圧縮法にあります。KIFFは
コード化される際、利用者が用途に応じてパラメータを調節することができます。


KIFFの弱点
量子化を行なう非可逆圧縮方式を採用しているため、完全に元の姿には戻るこ
とはありません。
またブロック圧縮及びDCTを用いた直交変換の符号化特性から、画像全体にブ
ロックノイズ、そして輪郭にモスキートノイズが発生します。しかし、これらは量子
係数を調節することで人間の目ではほとんど見分けられることはできなくなり、
圧縮率も可逆のものに比べはるかに高い数値を叩き出すでしょう。


KIFFはInterchange File Format?
KIFFは"Kt Interchange File Format"の略称ですが、実際はIFFでなく何の互換
性もありません。
開発当初はIFF形式に対応する計画でしたが、データサイズや使用目的を考慮
した結果IFF形式の採用をやめました。
とても紛らわしいので公開にあたって名称を変更しようという考えもありましたが、
長期にわたる研究期間中、我々が慣れ親しんできた名前であったため名称の
変更はしませんでした。誤解を招くような名前で申し訳ございません。


インテル(R)MMXテクノロジ, ストリーミングSIMD拡張命令
インテル(R)MMXテクノロジ、またはストリーミングSIMD拡張命令セットを利用
できるマシン環境では対象となるプロセッサ向けにチューニングされたKIFF
コーデックが自動的に選択されます。


KIFFライブラリ及びサンプルソースのダウンロード
プラットフォーム
ライブラリ
符号
復号
バージョン
サイズ
Win32(x86)
DLL,STL,Sample


version 0.08
130KB
Win32(x86)
Susie plug-in
×

version 0.07
033KB
WinCE(H/PC 2.0 MIPS)
DLL
×

version 0.07
111KB
WinCE(H/PC 2.0 SH3)
DLL
×

version 0.07
WinCE(H/PC 2.0 x86emu)
DLL
×

version 0.07
WinCE(P/PC 2.01 MIPS)
DLL
×

version 0.07
WinCE(P/PC 2.01 SH3)
DLL
×

version 0.07
WinCE(P/PC 2.01 x86emu)
DLL
×

version 0.07
WinCE(SH4)
DLL
×

version 0.07
(*)H/PC = Handheld PC, P/PC = Palm-size PC


KIFFライブラリの利用について
フリーです。現在のところKIFFはアルゴリズムの特許には一切触れていません。
ライブラリを利用されることで作者は著作権を主張することもありません。画像
処理アプリケーションに、スキンに、ゲームに。活用範囲は無限です。
どうぞご利用ください。


CH compressor for Picture!
汎用圧縮ツール'CH3'(の特許問題になるであろうハッシュを省いたバージョン)
をベースとして、主に二次元CG(アニメーションデータ)用に最適化された可逆
の画像圧縮技術です。可逆アルゴリズムなので圧縮された画像は元の完全な
姿に戻すことができます。CHP!は、画像ブロックパターンの配列を検索し効率
よく(次のステップで圧縮されやすいように)並び替えたあと、最適化されたハフ
マンとランレングス符号処理を用いて圧縮します。
自然画像など複雑なパターンが並ぶデータに対してはあまり大きな効果を期
待することはできませんが、CGやアニメーション画像等、比較的パターン化
しやすく、色素境界がはっきりしている(極端な)画像データに対しては非常に
優れた圧縮率を実現します。


CHP!圧縮アルゴリズム
Step.1 ブロックサーチ
画像データを小さな矩形のブロック単位で検索し、次のステップでおこなう、ラ
ンレングスとハフマン法で効率よく圧縮されるよう、読み出したブロックデータを
再配置します。このときの矩形ブロックサイズや、使用されるメモリのサイズは、
画像データの特徴とユーザーの環境に合わせてCHP!が自動的に最適な値に
設定します。

Step.2 ランレングス&ハフマン
前のステップで並び替えられたブロックデータを、ランレングスとCHP!画像用に
最適化されたハフマン法によってビット圧縮します。


CHP!展開アルゴリズム
Step.1 ランレングス&ハフマンデコード
基本的には圧縮アルゴリズムで解説した方法の逆方向をたどるだけです。
最初のステップでCHP!はランレングス&ハフマンでコード化されたデータを伸
張します。

Step.2 ブロック展開
圧縮時に並び替えられたブロック単位のデータを元どおりのパターンに並べ直
します。圧縮の時のように画像ブロックの配列パターンを検索する必要がない
ため、展開速度は圧縮時に比べ、とても高速です。


CHP!ヘッダ
[CHP!](4) マジックコード('CHP!')
[**]  (2) ビットマップデータオフセット
[*]   (1) ブロックサイズ
[*]   (1) 色の震度
[**]  (2) 横サイズ
[**]  (2) 縦サイズ
[....](-) 圧縮画像データ


CHP!と汎用圧縮ツール
CHP!は、1,4,8,16,24,32ビット深度の非圧縮ラスタ画像を可逆圧縮することを目
的として開発されています。
画像データの種類にもよりますが、多くの場合、一般の汎用圧縮ツールよりも
優れた圧縮率を実現することがきるでしょう。


CHP!の特徴
CHP!はJPEGなど非可逆の圧縮アルゴリズムと違い、可逆方式を採用していま
す。そのため圧縮された画像データは完全にもとの姿に戻すことができます。
またGIFと違い、8bitを超える深さの画像も扱うことができ、さらに画像の種類に
よってはPNGの圧縮率をも上回ります。


CHP!の弱点
ブロック配列のデータ検索を素直に行なっているため、圧縮にはかなり時間を
要します。自然画など、全体に均一性が少なく複雑なパターンで構成されている
画像に対してはブロック単位で扱うことが難しく、圧縮率が低下してしまいます。
逆にCGやアニメーション画像に対してはとても有効に作用します。


CHP!ライブラリ及びサンプルソースのダウンロード
プラットフォーム
ライブラリ
符号
復号
バージョン
サイズ
Win32(x86)
DLL,STL,Sample


version 0.01
91KB
Win32(x86)
Susie plug-in
×

version 0.01
19KB


Fractals Vector Quantization Compressor
Fractals Vector Quantization Compressor(以下FVQC)は、デジタル画像デー
タを小さな近似ブロックパターンに置き換える方法、いわゆるVQ圧縮と呼ばれ
る技術とフラクタル技法のアイデアをヒントに開発されました。
FVQCは、非常に優れた画質を実現しながらかつデータサイズを元のおよそ
1/8から1/100にまで縮めることができる画期的な画像圧縮技術です。


FVQC圧縮アルゴリズム
Step.1 RGB->YUV変換
RGB画像からYUVにデータ変換します。
このステップについてはKIFFを参照してください。

Step.2 近似ブロックや映像パターンの分析
映像を8x8の小さなブロックに分割し、それぞれに近似したブロックを検出しま
す。さらにそのブロックパターンデータを細分化して、さまざまな角度から映像
パターンを分析します。このとき、ある程度の画像の平均化も行ないます。

Step.3 ベクトル量子化
まず、ベースとなるブロックの候補を検索、選別して重み付けを行ないます。
ベースブロックが決定したら、残りのブロックとの比較でベクトル量子化を行な
います。

Step.4 ハフマン圧縮
FVQC向けに高度に最適化されたハフマン法によりビット圧縮します。


FVQC展開アルゴリズム
単純に、圧縮アルゴリズムで解説した方法の逆方向をたどります。
ただし、当然のことながらStep.2のブロックパターンの分析と、Step.3で行なう
ベクトル量子化のためのベースブロック検出という、きわめて時間のかかる
処理がスキップされるため、劇的な速度で映像が展開されます。


FVQCヘッダ
開発中のテストバージョンであるため、非公開とさせていただきます。
何とぞご了承ください。(おそらく今後変更されます)


FVQCの特徴
FVQCは、フラクタル技法のヒントを取り入れたVQ圧縮を基礎としています。
自然画像、CG,アニメ絵を問わず、高い画質を保ちながら、かつ非常に高い
圧縮率を実現することができる、類まれなる圧縮フォーマットといえます。
また、とても高速な展開動作が可能で、あなたはその驚異的な展開速度に、
間違いなく驚かされることでしょう。


FVQCの弱点
FVQCは複雑な画像に対して、他の圧縮画像フォーマットよりも極めて強力で
すが、VQの差分情報が長すぎた場合、画像全体がぼやけてしまうことがあり
ます。これはオプションのFractals VQ depthパラメータを調節することで回避
できます。また、FVQCは、近似ブロックや細分化パターンの検索、ベースブロ
ックの候補を選別するために膨大な時間を必要とします。なぜならFVQCは高
画質、高圧縮率を実現するため、様々な角度から映像を分析するからです。
しかし、そのコストに見合う以上の結果をきっと得ることができるでしょう。


FVQCの今後
現在FVQCはまだまだ研究段階です。さらなる画像の品質向上、圧縮展開速
度の向上を目指し日々開発を続けています。また、この技術を応用して動画
の圧縮、音声の圧縮にもつなげられたら…、などと考えています。とはいえ、
それはまだまだ机上の空論でしかありません。実際にはまったく何も見えて
いない手探りの状態なので、本当にそれが可能かどうかは作者にも分かりま
せん。将来の保証はできませんが、FVQCを応援してくださる方が少しでもい
てくだされば幸いです。


FVQCのダウンロード
プラットフォーム
ファイル形式
符号
復号
バージョン
サイズ
Win32CUI(x86)
EXE


version 0.00e
49KB


FVQC注意書き
本ソフトウェアはテスト公開のため、次期バージョンとの互換性は保証できま
せん。また、公開中のテスト版実行ファイルで扱うことのできる画像は、縦横
ともにの倍数のサイズのビットマップに限定されています。
たとえば320x240など。321とか243とか、8で割ってあまりの出るサイズのビッ
トマップは、このテスト版FVQCでは無視されます。どうぞ、ご注意ください。


用語説明
[非可逆圧縮法]
非可逆圧縮法は信号圧縮時に損失を伴う(ロッシーな)圧縮方法のことをいいま
す。損失があるので画像を展開したとき完全に元の姿に戻ることはありません。
たいていの場合、人間の目には判別しづらい色素情報やパターン情報を削り落
とすことで圧縮率を稼ぎます。この逆で、損失を伴わない圧縮法のことは「可逆
(ロスレス)圧縮法」といいます。

[ブロックノイズ]
画像を4x4や8x8などの細かいブロックに分解して圧縮することをブロック符号化
といいます。この方法を用いて符号化された場合、それぞれ隣接するブロックと
ブロックとの間で輝度のバランスが取れなくなり、その結果ブロックの境目が見
えてしまうことがあります。これをブロックノイズといいます。

[モスキートノイズ]
DCTによる符号化は、画像を周波数成分に分解し高周波数成分から情報を削
って圧縮されます。このため高周波数成分が多く集中する色素境界の輪郭部
分では、境界を示す周波数の細かく揺れる振動パターンのデータが削られてし
まい、その結果ノイズとなって見えてしまうことがあります。
これがモスキートノイズです。

[IFF]
Interchange File Format(互換ファイルフォーマット)の略称です。各プラットフォー
ム間で互換性のあるフォーマットを保つための規格です。格納データはチャンク
形式で構成されます。AIFFなどIFFに準拠したファイルフォーマットには拡張子の
後ろにIFFまたはIFの文字がつけられます。(ただしKIFFはIFFではありません)

[VQ圧縮]
VQは、ベクトル量子化(Vector Quantization)の略称です。
画像を細かいブロックに分け、それぞれをパターン化してデータ量を削減する圧
縮方法です。NEC PowerVRのテクスチャ圧縮に採用されていることでよく知られ
ています。