hirax.net::Keywords::「FilterFactory」のブログ



1998-01-08[n年前へ]

Photohoの乱数プラグインを作成する 

 「2項分布のムラについて考える」の関連して、Photoshopの乱数プラグインを作成したのでメモしておく。

 PhotShopはとても便利なソフトである。画像を取り扱うにはトップクラスと言っても良い。あえて、難を挙げるならば8Bit階調が基本という所である。もちろん、12bit階調なども扱えるのは知っているが、基本機能とは言えないと思う。
 しかし、PhotoShopで凝ったことをしようとすると、Pluginを作らざるを得ない。PhotoShopでPluginをつくるには2つのやり方がある。それは、

  • Adobe提供のPlugin SftwareDevelopmentKitを使ってPluginを作る。
  • FilterFactoryを使ってPluginを作成する。
である。目的によってどちらを使うか選択すれば良い。

 今回はランダムノイズをつくるためのプラグイン作成が目的である。その程度であれば、FilterFactoryを使うのが簡単で良い。

FilterFactoryを使う
 まずは、FilterFactoryを使う。
 今回は、ランダムノイズを作るのが目的である。ランダムな(0から255)の値を与えるプラグインである。最初にどんな画像があるかなど関係がない。とにかく乱数を計算し、画像に出力する。今回、1チャンネルにのみ乱数を与えるプラグインと、各チャンネルに独立に乱数を与えるプラグインの2種類を作成する。
 まずは、Redチャンネルにのみ乱数を与えるものをつくる。以下がそのパラメータである。
Redのチャンネルに (0...255)の乱数を与える。
 たった、これだけである。
Redに乱数を与え、Green,Blueのチャンネルには0を与える。
 このプラグインで作成した画像がこれである。ここでは、Redのレイヤーをグレースケールに変換してある。

 もうひとつ、各色に乱数を与えるプラグインのサンプル画像はこのようになる。

 今回作成したWindows版のプラグインをここにおいておく。Mac版も作るのは同じく簡単である。Mac版やCMYK版が欲しいという要望があれば教えて頂きたい。SDKを使う場合などはむしろMac版の方が簡単である。 このファイルを解凍して、プラグインをPhotoshopのPluginディレクトリのFiltersの下に置けば使えるようになる。JunHiraxというジャンルのRnd2redとRnd2RGBである。

 さて、試しに使ってみる。1000x1000ドットのランダムノイズ画像を作成してみる。その画像はここに載せるには大きすぎる。そのため、その一部を左下に示す。その画像に対して各領域10x10の100ドットで平均し、100x100に変換した画像を右に示す。詳しくは「2項分布を考える」を見て欲しいが、100ドットで平均したくらいではフラットにはならない。それどころか、有限のいくら広い範囲で平均しても正確にはフラットにはならない。もし、フラットになるのであれば、それはランダムな2項分布ではない。もちろん、PhotoShopの丸め誤差とかの話は別にしておく。また、「2項分布を考える」の際は1次元の1成分データであったが、今回は2次元3成分データである。そのため、人間にはよりフラットに見えにくい。相対的な色差に対しては人間の目は敏感だからである。

右が作成した1000x1000ドットのランダムノイズ画像の一部(137x90)、
左は作成した1000x1000ドットのランダムノイズ画像を各領域100ドット(10x10ドット)で平均することにより、100x100に変換したもの
 これを使って、適当に遊んでみると面白いのではないだろうか。
 今回の例も「2項分布の特性:どんなに広い領域であっても、領域中の平均が一定でない」の当然の結果である。仮に、ある広い領域中の平均が一定であるような確率過程を用いればこのようなことは生じない。もしも、そのような確率過程に基づくものがあったら、部分部分はランダムに見えても、広い領域ではフラットに見えるのである。

1999-01-28[n年前へ]

Photohoの落とし穴 

ノイズフィルタに要注意

 Phtoshopは大変巨大なソフトである。巨大すぎてよくわからないところも多い。巨大な割にはマニュアルは薄い。性能の割には安いと思うのだが、もう少し詳しいマニュアルも作って欲しい。Adobe(アドビでなくて)からなら入手できるのだろうが。

 今回はPhotoshopの「ノイズフィルタ」について考えてみたい。 ノスタルジックにしたい時など重宝するフィルタである。

Photoshopの「ノイズフィルタ」
図.1
 上のようにメニューからノイズフィルタを選ぶと、次のようなダイアログが出る。
ノイズフィルタのダイアログ
図.2
 まずは、第一の疑問がわく。分布方法の「均等に分布」、「ガウス分布」とは何だろうか?まずは、それぞれのノイズ画像を見てみる。
 まず、「均等に分布」のノイズを見てみる。
「均等に分布」のノイズ
図.3
 次に、「ガウス分布」のノイズである。
「ガウス分布」のノイズ
図.4
 一見した印象はさほど変わらない。それでは、ヒストグラムを見てみる。
図.5: 左が「均等に分布」、右が「ガウス分布」
 これならば、「均等に分布」、「ガウス分布」の意味がわかりそうである。左が-均等-であり、右が-ガウス-分布-であるというのは実感できる。

 両方とも、「ノイズの量」を55にしてある。左上の「均等に分布」の画像を見ると200から255までの間にノイズが-均等に分布-していることがわかる。ということは255 から ( 255-「ノイズの量」 ) までのレベルにノイズが-均等に-分布していることがわかる。ただし、「ノイズの量」の最大値は999であるから、さらに、何らかの処理が加えられているのだろう。
 同じように、「ガウス分布」の方もガウス分布の分散、中心値、ノイズ量を「ノイズの量」の数値に従い適当に導いているのだろう。大雑把にはわかった。

 今回は濃度の分布に対する考察はここまでにしておく。次は位置分布である。今回のメインはこちらである。
 まずは、下の図.3の拡大図を見て欲しい。

「均等に分布」のノイズ画像の部分拡大図
図.6
 妙に周期性が感じられないだろうか? 少なくとも私は感じる。これは気のせいなどではない、と思う。それは「ガウス分布」で同様である。
そこで、Photoshopのノイズフィルタの位置分布に何らかの周期性があるのかどうかを調べてみたい。

そこで、それぞれのノイズ画像をフーリエ変換し周波数領域に変換する。
左が「均等に分布」のノイズ、右が「ガウス分布」の周波数領域
「均等に分布」
「ガウス分布」

 すると、縦線が見える。つまり、どちらも横方向に周期性があることがわかる。またそれよりレベルは小さいが縦方向にも周期性がある。それぞれの分布で周期性は異なっている。
 横方向で一番レベルが大きいものは周期128ピクセルである。これはどちらの分布に関しても言えそうである。128とはいかにも納得できる数字である。
 縦方向は85ピクセル位か?100位のもあるな? いずれ、より詳しい解析を行ってみたい。

 さて、以前PhotoShopの乱数Pluginを作ろう。----FilterFactory編---(1999.01.08)で作成したプラグインはこんな周期性を持っていないことを保証しておく。以下がその証拠である。

JRnd2Redで作成したノイズ画像とそのフーリエ変換
 こちらには、周期性はないのがわかると思う。

 今回の結論:Photoshopのノイズフィルタには要注意である。
 今回の教訓:何はともあれ疑ってかかれ。

2004-02-06[n年前へ]

PDLSバージョンアップ 

 PhotoshopのプラグインをC言語などで簡単に作成することのできる環境のPDLSをバージョンアップしてみました。今回の変更点は、
(1) 「作業過程を記録したマクロ」内で変数(定数)宣言を使うことができるようにし、マクロを関数(DLL作成関数と同様にパラメータを外部から指定することができる)として使うことができるようにした
(2) マクロからマクロ(関数化されたものも、あるいは、されていないものも)を呼び出せるようにした
(3) 関数化されたマクロをGUIから実行時する際にはパラメータ選択ダイアログを出して、マクロ内で定義された変数の値を実行時に自由に変えられるようにした。すなわち、DLLとして作成した機能拡張と同様にマクロで作成した機能拡張関数においてもユーザーインタフェースが使えるようになった
というところです。

 Photoshopを使いつつ、画像処理のプログラミングを簡単にやってみたい方は使ってみるのも面白いかもしれません。また、比較的大きなサイズの二次元データ(画像)を扱う機会が多い方でしたら、とりあえず鳥瞰図プラグインやセル表示プラグインを使うためだけに使ってみても、意外に便利で重宝するんじゃないかと思います。

 また、FilterFactoryなどとは違って、16bitのCMYKモードやLabモードでも使うことができるので、そういったモードで数式処理プラグインでも使って、FilterFactoryっぽく使ってみるのも意外に面白いかもしれません。

 ちなみに、動作環境はPhotoshop6.0以降で、CS(8.0)でも動作確認済みです。

2004-08-18[n年前へ]

PDLS対応のDLLを作成するページ 

 Photoshop用のプラグインを簡単に作成することができるPDLSは結構便利だと思うが、普通のユーザーが「さて自分で作ろう」と思っても、コンパイラを用意したりするのは結構面倒だと思う。FilterFactoryのように、特にコンパイラなどを用意しなくてもプラグインを作成することができるツールに比べると、少し?面倒だ。
 そこで、とりあえずPDLS対応のDLLを作成するページを作ってみた。デフォルトで入力されているのを参考に各種プラグインを作成してみるのも面白いかも。ちゃんと動作確認はしていませんが…。



■Powered by yagm.net