とあるフィルタの備忘: 置き換え・ずらしフィルタ


とあるフィルタの備忘

概要

Photoshop の「置き換え」フィルタ(フィルター>変形>置き換え)は、GIMP のずらしフィルタに相当するらしい。
GIMP のアルゴリズムでは、輝度値をマスクとしてピクセルを移動させるためのフィルタとなっている。いわゆるワープフィルタ。

アルゴリズム(GIMP 版)

Photoshop の置き換えフィルタが何をやっているかは分からないが、GIMP では以下のような感じになる:

  • マスクは256諧調のグレースケールで、対象となるビットマップ画像と同じ縦横画素数とする
  • X方向移動用とY方向移動用のマスク、2種類を用意する
  • 移動はマスクの輝度に依存する。ここで、輝度値 - 127.5 とすると、その範囲は -127.5 〜 +127.5となる
  • 128 ではない理由はたぶん 255 / 2 = 127.5 だから
  • 輝度値 - 127.5 = 0.0 の場合は移動が発生しない
  • 正数と負数で移動方向が真逆になる

移動量の計算

あるピクセルP(x, y)について、

  • X方向移動用のマスクから座標(x, y)の輝度値を抽出、更に -127.5 ……mx
  • Y方向移動用のマスクから座標(x, y)の輝度値を抽出、更に -127.5 ……my
  • Xずらし強度(パラメータ) ……wx
  • Yずらし強度(パラメータ) ……wy

移動量 = (輝度値xずらし強度)/127.5

に代入すると、
PのX移動量 = (mx•wx)/127.5
PのY移動量 = (my•wy)/127.5

// あってんのかなこれ。