prevcontentnext


汎用フィルタ

ここはGimpの数学コーナーです。 ここでは画像に数学的な式を適用する様々な異なる種類のフィルタをみることができます。 これらのフィルタはGimpのフィルタファクトリとみなせるでしょう。

コンボリューション行列

右クリック|フィルタ|汎用|コンボリューション行列 によって単純な手製のフィルタを作ることができます。コンボリューションマトリクスは、 各ピクセルのまわりの5x5のピクセルの箱のピクセル値に作用します。 これは、マトリクス中の各場所に対応するピクセル値にそれぞれのマトリクスの要素の値を掛けあわせ、結果を全て加算するというものです。

たとえば、次の例で考えてみます。
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0

割る数: 1 オフセット: 0

中央の値は変更されるピクセルを示します。 ここでは、変更先の値は1です。 (元の値とまわりのピクセルは0を乗じられているので、関係ありません。) マトリクスは画像を多少移動するためにも利用できます. 画像の1ピクセル移動の例は次のようになります。
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

割る数: 1 オフセット: 1

あるピクセルの変更先の値はその上にある元のピクセル値となります。 したがって,この操作によって1ピクセル分画像が下方に移動します。 次は簡単なぼかしの例です。
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0

割る数: 9 オフセット: 0

ここでは、それぞれのピクセルに対し、そのピクセルと8つの回りのピクセル値が加えられ、 9で割られます。 つまり結果のピクセル値は3x3の範囲のピクセル値の平均となります。 同様に、非常に強い(そしてあまり洗練されていない)シャープ化フィルタは次のようなものとなります。


0 0 0 0 0
0 0 -1 0 0
0 -1 5 -1 0
0 0 -1 0 0
0 0 0 0 0

割る数: 1 オフセット: 0

これはまず中央のピクセルをとりだし、その値を5倍します。 次に、直に隣接する4つのピクセルの値をそこから引きます。 この種の操作は色の差を強調するものです。

割る数引数は、単に結果の値を割る数値です。そしてオフセット値がそれに加えられます。 オフセットはいくつかの場合に有用です。たとえば、次の例を見てみましょう。
0 0 0 0 0
0 1 1 0 0
0 1 0 -1 0
0 0 -1 -1 0
0 0 0 0 0

割る数: 1 オフセット: 128

この場合、右下の値は左上の値から引かれます。これは基本的なエンボス効果を生み出します。


画像のピクセル値は負数の値をとれませんが、 上記のマトリクスの計算ではよく負の数がでてきてしまいます。 そこで,オフセットとして128を全体に加え、 画像全体を灰色のバンプマップのようなものにします。

自動のチェックボックスをセットすると、割る数はマトリクスの値の和になります。 もしこの和が正なら、オフセットの値は0になります。 和が負の場合にはオフセットの値は(反転を行うために)255になります。 もし、除数が0になる場合には、オフセットは(エンボス化のために)128となります。

チャンネルの チェックボックスはプラグインが操作するチャンネルを制御します。 アルファ加重は計算において付加的な要素 --- アルファチャンネル --- を加えます。 アルファ加重がチェックされている場合、 全てのピクセル値はマトリクスの値とそのアルファ値の両方に重みづけされます。 試しにほとんど透明(低いアルファ値を持つ)の緑と完全に不透明な赤の画像で、 画像を生成してみましょう。 もしアルファ値の重みを用いず、画像のぼかしを行なった場合、 茶色っぽい線が透明の部分と赤の部分の間に出現するでしょう。 これは、この場合には緑の透明度(緑の色の「弱さ」ということもできる) は考えられていないからです。 アルファ値の重みが加えられると、ぼかしによって予測できない不自然さ ができることはありません。


汎用フィルタ(Universal Filter)

信号(画像)処理には2つの異なるタイプのものがあります。それは線型(linear)のものと非線型(nonlinear)のものです。 メジアンアルゴリズムは非線型フィルタの一つの例です。 汎用フィルタ(Universal Filter)は線型フィルタです。 これは入力に対する出力を変換関数として書くことができるフィルタです。

通常は線型操作は逆変換が可能です. しかし、実際にはいくつかの非線型な操作(クリッピングや量子化のような) が行なわれるので、逆変換の操作は制限されます。 このフィルタでは任意の線型システムに対する周波数特性の計算が可能です。 ここではこれに関する数学や理論に関しては触れませんが、 アルゴリズムがどのように働くかをざっと見ていくことにします。

現時点では、汎用フィルタは 3x3 の マトリクス(Matrix)とさらに2つのパラメータ (除数(Divider)バイアス(Bias)) を使います。この2つのパラメータは通常はマトリクス自体から計算されますが、 任意にセットすることもできます。

新しい画像の各ピクセルに対し、 元のピクセルとその周辺のピクセルが取り出され、マトリクス中の値を乗ぜられます。 その後バイアス値が加算され、除数によって割られます。 もし、マトリクスの値を変更した場合には、そのフィルタは異なった種類のフィルタとなります。

各マトリクスの要素に1を入れた場合 (そして除数とバイアスの値は自動で計算されるようにしている場合) このフィルタはローパス、あるいはぼかしの効果を得ることができます。 これは,新しいピクセル値を計算する際に9つ全てのピクセル値を加えるからです。 もしこの効果を小さくしたい場合には、 まわりのピクセル部分の効果を小さくするために中央の値を増加させます。

ハイパスフィルタ、 あるいはシャープ化の効果を得るためには、 まず全部のマトリクス値を-1として、中央に9をセットします。

マトリクスの中央の行、あるいは中央の列のみの係数を使うことで、 一方向にしか働かないフィルタを走らせることもできます、 絵を反転させたければ中央に-1をセットして下さい。

バイアスと除数の値は、 結果の画像がカラーあるいはグレースケールで 0から255の通常の範囲に収まるよう計算されます。 除数はマトリクスの各要素値の和の絶対値となります。 もしこの和が0の場合,除数は1にセットされます。 バイアスの値はマトリクスの和の符号を考慮します。 もしこの符号が正であれば,バイアスは0です。 もし符号が負の場合には,バイアスの値は255になります。 和が0の場合バイアスの値は128になります。

全ての計算結果は計算後に整数に丸められ、0から255の範囲に入るよう調整されます。

ユーザフィルタ(Adobe Filter Factory Emulator)

右クリック|フィルタ|ユーザフィルタはAdobe Photoshopの フィルタファクトリ(Filter Factory)のクローンです。 これは本当に金の鉱脈のようです。なぜなら、Adobe Photoshopのために作成された大量のフィルタファクトリ全てを、 これによって使うことができるからです。

Gimpのために多量のフリーなフィルタが、今利用可能になったのです。 ユーザフィルタは全ての異なったフィルタファクトリ フィルタのフォーマット --- .afs, .txt .8bf plug-ins また同様に、.ffl (Filter Factory libraries) --- を扱えます。 注意しなくてはいけないのは、オリジナルの.8bf Adobe Photoshop プラグインはユーザフィルタで使ってはいけないことです。 これはAdobe Photoshopのみで動かすものです。

フィルタファクトリを理解するためには、 Adobe Photoshopのマニュアルの適切な節を読む必要があるでしょう。 このマニュアルで書くには、あまりにも多くのフィルタファクトリフィルタが存在しています。 でも、私達はいつかフィルタファクトリに関する文書を書くつもりです。

フィルタファクトリフィルタとその情報を見つけるには、 まず http://privat.schlund.de/f/filter-factory/ というWebページを尋ねるか、 お好みの検索エンジンで"Filter Factory"を調べると良いでしょう。

また、この機能を使う際、 あなた個人のgimprcファイルに (userfilter-path "${gimp_dir}/userfilter") という行を加えるのを忘れてはいけません。(たとえば、 vi ~/.gimp/gimprc として編集する) また、 あなた個人のgimpディレクトリの下にユーザフィルタ用のディレクトリを作成しなくてはいけません。 (たとえば次のようにします。mkdir ~/.gimp/userfilter) こうした後に、あなたのユーザフィルタを~/.gimp/userfilter の中にインストールすることができます。 もちろんあなたのシステムにユーザフィルタのプラグインがなくてはいけません。 プラグインのコンパイル を参照して下さい。 ここにはプラグインをコンパイルする方法があります。また、 ユーザフィルタ(User filter) の最新版をどこからダウンロードしたらよいかは ウェブにあります。

ユーザフィルタの操作法

ユーザフィルタのインターフェイスは非常に単純です。 まず,フィルタ管理フォルダを開いて下さい。 ここで利用可能なフィルタを見ることができます。 どのフィルタを使うか決めたら、それを選択して読み込み ボタンを押すだけです。

フィルタをかけた結果がどのようになるかは、 プレビューで見ることができます. 何か値を調整したい場合には、パラメータ値 を開いて下さい。 はじめてユーザフィルタを開いた時には、 ここには何の値もありません。 しかし,ひとたび読み込み/使用を行うと、前回利用した値か、 あるいは前回使用したフィルタのデフォルト値がそこに現れます。

もし、更新を有効 をチェックしている場合には、値を変化させるたびにプレビューも変化します。 これでも十分でない場合には、コード編集 を開いて下さい。ここには、フィルタの数学的な説明があります。 もし、あなたがどのようにフィルタファクトリが働くのかを理解しているのなら、 この関数をちょっと編集すれば良いでしょう。


助言。時々、プレビューをスクロールするとユーザフィルタが極端に遅くなることがあります。 この場合には更新を有効をオフにしてからスクロールし、 もう一度プレビューを行うのが良いでしょう。

prevcontentnext


Frozenriver Digital Design
http://www.frozenriver.nu
Voice: +46 (0)31 474356
Fax: +46 (0)31 493833
support@frozenriver.com
Publisher Coriolis
http://www.coriolis.com