2006年10月18日

Gimpの次世代画像エンジン (GEGL)

1999年に立ち上がったプロジェクト:GEGL(Generic Graphical Library)は長い間開発がストップしていました。これを去年からGimp開発者の一人であるØyvind Kolås氏(以下、HNのpipinn氏に変更)が継続させて、大分形のあるものとなってきました。そして2006年3月にあったLibre Graphics Meetingでプレゼンテーションを行ったそうです。

The GIMP's next-generation imaging core demonstrated (Linux.com)
GIMPの次世代イメージング・コアのデモ (上の記事のOpen Tech Press翻訳)
http://pippin.gimp.org/gegl/ (IE6だと表示されない? Firefoxでどうぞ)

GEGLとは

GEGLはオブジェクト指向のためにglibからgobjectを使っている、C言語で書かれたグラフベースの画像処理ライブラリです。
その起源は、Gimpのピクセル演算部分を最初から作り直したライブラリとなり、Gimp以外のアプリケーションにもその機能を提供するものでした。

特徴

GEGLは、GEGLとともに開発されているbablライブラリを使っています。bablでは異なるカラーモデルやデータタイプやピクセルフォーマットを拡張可能です。
このbablを使ったGEGLの特徴は次の通りです。

  • 8bit/16bit整数、32bit浮動小数点、RGB、CIE Lab、YCbCr、ネイティブCMYK出力

  • プラグインを通しての容易な拡張性

  • XML、C、Pythonインターフェイス

  • メモリー二次範囲の効率的な評価

  • タイル分散データ保持

  • オペレーション処理に豊富なコアセット

    • PNG、JPEG、SVG、EXR、RAW、その他の画像ソース

    • 数値演算、ポーターダフ(porter duff)合成演算、SVGブレンドモード、その他のブレンドモード、マスク適用

    • ガウシアンぼかし

    • 基本的な色補正ツール

    • ハイ・ダイナミックレンジルーチンを用いたほとんどの処理が実装済み

    • Pangoを用いたテキストレイアウト


現状

Gimpが画像ライブラリとしてGEGLを使えば16ビット/浮動小数点精度の、よりハイレベルな色深度やCMYKといったカラースペースでの処理が可能になります。(当時の)Gimpの次期バージョンでGEGLを使うといった計画も立てられていました。
しかしGEGLの開発が停滞して今後の行方が危惧されるようになります。そんなところにpippin氏が意欲的に取り組み始めたことで開発が再開されることとなります。

1999年にGEGLが立ち上がってから7年がすぎ、未だにGimpは従来のグラフィックエンジンをベースとしています。なかなかGEGLに移行できていません。
GEGLマイグレーションのために、Core/UIを分離したり機能ごとにソースコードを整理したりと準備はちゃくちゃくと進んでいます。Gimp-1.2を比べるとGimp-2.3のソースコードはかなりすっきりとしています。

現在のGEGL

今までのGEGLはコマンドライン操作でしたが、最近はGEGL tree UIを備え、GUIによる操作ができるようになっています。どんなものなのかは次のデモを見ると分かるでしょう。
GEGL tree ui demo

読み込み・保存のファイルはXMLで記述された(OpenRaster形式?)ものであり、Photoshopでいうところの調整レイヤーやレイヤーグループやレイヤー効果に相当するものも記録することができ、GEGLにて表現できます。(XMLファイルはメタデータを記述するマークアップ言語であり、画像フォーマットではないことに注意。XMLファイルの中でロードするPNGやJEPGファイルを記述する。)
GEGL gallery

GEGLのファイル保存・読み込みがOpenRasterであるのなら、将来のGimpのファイルフォーマットもOpenRasterになる可能性が高いです。以前pippin氏はXML形式でメタデータを記述する次世代GimpファイルフォーマットのためのXCF2を提案していましたが、これがOpenRasterに置き換わっているように思えます。(OpenRasterの議論が出た後にXCF2を取り下げているようですが、(pippin氏が)XCF2をOpenRasterに置き換えるとはっきりと明言した情報見つからなかったために推測です)

備考: ラスタグラフィックス用オープンフォーマットをめぐる論争 (Open Tech Press)

GEGLのインストール

Fedora Core 5にてGEGLをインストールしてみます。
現時点のGEGLが依存しているライブラリはGLibとbablとlibpngです。オプションとしてSDLやlibjpeg、cairo、pango、librsvgを入れておいてもいいでしょう。これらのdevelパッケージが入っているものとして進めます。
ここではCVSからソースをとってきましたが、その場合にはGEGLのconfigureにRubyも必要になるみたいなのでインストールします。pippin氏のサイトではソースをCVSからとってくるのではなくスナップショットを使う方法も書かれています。
インストール先は /usr/local/gegl にしておきました。

まず、bablをインストールします。

cd ~/cvs
export CVSROOT=`:pserver:anonymous@anoncvs.gimp.org:/cvs/gnome`
cvs login
cvs checkout babl
cd babl
./autogen.sh --prefix=/usr/local/gegl
make
sudo make install


GEGLのインストール

export PKG_CONFIG_PATH=/usr/local/gegl/lib/pkg-config
cd ~/cvs
cvs checkout gegl
cd gegl
./autogen.sh --prefix=/usr/local/gegl
make
sudo make install


実行

export LD_LBRARY_PATH=/usr/local/gegl/lib
export GEGL_PATH=/usr/local/gegl
cd docs/gallery/
/usr/local/gegl/bin/gegl hogehoge.xml


実行のところはshスクリプトでexportさせるものを書いて~/binに入れておくとよさそう。GEGL_PATHの設定だけでいけそうだけど。
残念ながらGEGL tree uiの動作は重いです。またGEGLもよくクラッシュして不安定です。まだまだ試してみたい人のためのものだと思います。
hogehoge.xmlはdocs/gallery/OpenRaster-01.xmlなどに置き換えてください。

gegl-tree-ui.jpg

また、カラーマネジメントに対してlcmsを使っているようですが、本格的なカラーマネジメントのサポートはまだ手付かずのようです。
現行開発バージョンのGimpのバージョンは2.3で、正式版は2.4になります。おそらくその次は2.6です。GEGLマイグレーションは3.0だといわれているので、当分は現行のグラフィックエンジンが使われる状況が続きそうです。
posted by いっちー at 21:30| Comment(0) | Futuer Gimp | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。