3.6. 非線形フィルター...
| 3. 強調フィルター |

### 3.6. 非線形フィルター...

#### 3.6.1. 概観

図17.25 非線形フィルターの使用例

元画像

「非線形フィルター」適用後

非線形フィルター... は Unix 系の pnmnlfilt から派生したプログラムであり、 平滑化とノイズ除去とシャープ化強調の各機能を合わせもっています。 選択範囲ではなくレイヤー全体で作用します。

このフィルターはスイス軍万能ナイフのような特性を持っています。 特徴的な 3 つの操作モードがあります。 いずれのモードも画像の画素をひとつひとつ検分し、 そことその周りの画素の値を基に処理を施します。 周りの画素は 3×3 で 9 ピクセルの範囲に限らず、 半径オプションで大きさが設定できる六角形の範囲をとります。

#### 3.6.2. フィルターの呼び出し方

画像ウィンドウのメニューより フィルター → 強調 → 非線形フィルター...

レイヤーにアルファチャンネルがあるとこのフィルターは作動できません。 このときはメニュー項目が灰色無効となり使用できなくなっています。

#### 3.6.3. オプション

図17.26 「非線形フィルター」のオプション

プレビュー

  プレビュー オプションを有効にしておれば画像に実際にフィルターをかける前からダイアログ上で調節したとおりに即座に効果のようすが見て判るようになっています。

フィルター

  操作モード については後述します。

アルファ

  フィルターの適用量を調節できます。 指定できる範囲は 0.00 から 1.00 です。 この値の具体的な意味は選択される操作モードによって変化します。 ちなみにこのパラメーターは pnmnlfilt プログラムで使われる `alpha` と関係があるものの同一ではありません。

半径

  画素ごとに調べられるその周りの範囲の大きさを調節できます。 この値のとりうる範囲は 0.33 から 1.00 であり、 0.33 はそのピクセル自身を表し (つまりその場合このフィルターは何の効果も生みません)、 1.00 は 3×3 の範囲のすべての画素から抽出することを表します。

#### 3.6.4. 操作モード

このフィルターはいろいろな互いに異なる機能をもっています。

透明度を用いた平均

  中央の画素の値が六角形内の 7 個の画素の値の平均値で置き換えられることになっていますが、 7 つの値はその大きさ順に並び換えられ、 その先頭と最後の「`アルファ`」の部分が平均から除外されます。 つまりこれは「`アルファ`」に 0.0 を設定すれば「`半径`」がフィルター強度を司る (平均化とか平滑化のような) 標準的コンボリューションの出力と同じことになります。 このフィルターをちょっとだけかけたいときは「`アルファ`」 = 0.0、 「`半径`」 = 0.55 の設定から始めましょう。 派手にかけたいときは「`アルファ`」 = 0.0、 「`半径`」 = 1.0 と設定してみましょう。

  「`アルファ`」の設定値を 1.0 としたときは六角形内の周辺 7 個の画素の値の中間値が中央の画素の値に置き換わります。 このようなフィルターなら画像の突出した汚れや 1 画素だけのノイズを、 薄く撒き散らしたりぼかしてにじませることなく取り去るのに適します。 慎重に「`半径`」パラメーターを扱えばフィルターを精密に調節できます。

  中間的な値を「`アルファ`」に設定したときは平滑化効果と突出ノイズの除去効果の折衷的なはたらきをします。 このようなフィルターをちょっとだけかけたいときは「`アルファ`」 = 0.8、 「`半径`」 = 0.6 の設定から始めましょう。 派手にかけたいときは「`アルファ`」 = 1.0、 「`半径`」 = 1.0 と設定してみましょう。

最適化

  このような型のフィルターは画像に適応した平滑フィルターの効果を与えます。 画素をひとつずつ辿りその周囲の六角形の範囲内の値を計算してこれに反比例する値を平滑化する量とします。 これはばらつきが小さければ画像にノイズがあるものと考え、 ばらつきが大きければ画像の「あるべき」様相が反映したものと考えるやり方です。 いつも通り「`半径`」パラメーターが効果を調節するのに使えますが、 ばらつきの計算が意味のある値になるよう 0.8 から 1.0 の間の値にとどめておいた方がよさそうです。 「`アルファ`」パラメーターはノイズのしきい値を設定し、 この値を下回ると平滑化が起こるようになります。 つまり「`アルファ`」に小さな値を設定するとフィルターの効果はかすかなものとなり、 大きな値を設定すると画像全部が平滑化されそうになります。 まずは「`アルファ`」 = 0.2、 「`半径`」 = 1.0 ぐらいの値からはじめ、 徐々に「`アルファ`」パラメーターを増減して望みの効果が得られるのを探ってみるとよいでしょう。 この型のフィルターはビットマップやカラー画像のディザリングノイズをとり除くのに最適です。

縁強調

  これは平滑化フィルターとは逆の型です。 画像状の物体の縁を強調します。 「`アルファ`」パラメーターが縁強調の量をちょっとだけ (0.1) から派手 (0.9) までの範囲で調節します。 「`半径`」パラメーターはいつも通り効果調整の役割を担いますが、 有効な値は 0.5 から 0.9 までです。 まずは「`アルファ`」 = 0.3、 「`半径`」 = 0.8 の値から始めてみましょう。

##### 組み合わせ活用

操作モードは画像に望ましい結果が出るまでいろいろ変えて重ねて利用できます。 たとえばディザリングがかかったモノクロ画像をグレースケール画像に変えたければ、 平滑化フィルターにして 1 回か 2 回通し、 最適化フィルターをかけたうえで、 ちょっとだけ縁を強調するのです。 ちなみに縁強調は非線形フィルターの他の機能 (「透明度を用いた平均」か「最適化」) を実行したあとだけしか効果がないようです。 というのも縁強調は平滑化の対極にある機能だからです。

色の量子化ノイズ (`.gif` ファイルを 24 ビット RGB 画像に変換した場合に発生します) を低減させるには「最適化」フィルター (「`アルファ`」 = 0.2、 「`半径`」= 1.0) に通し、 折衷型フィルター (「`アルファ`」 = 1.0、 「`半径`」 = 0.55) に通し、 必要なら「縁強調」フィルターに通してみてはどうでしょう。 最適化フィルターは始めから「`アルファ`」に大きな値を設定して一度に済ませるのではなく、 徐々に「`アルファ`」の設定値を減らしながら何度か通してやるともっと効果が高まります。 よくあることですが、 フィルターの効果が増すと画像の細部が損なわれてしまう相反関係になっています。 実験されることを推奨します。

3.5. ストライプ除去... |  | 3.7. 赤目除去...

Bugzilla にてエラー報告