1998-01-08[n年前へ]
■Photohoの乱数プラグインを作成する
「2項分布のムラについて考える」の関連して、Photoshopの乱数プラグインを作成したのでメモしておく。 PhotShopはとても便利なソフトである。画像を取り扱うにはトップクラスと言っても良い。あえて、難を挙げるならば8Bit階調が基本という所である。もちろん、12bit階調なども扱えるのは知っているが、基本機能とは言えないと思う。
しかし、PhotoShopで凝ったことをしようとすると、Pluginを作らざるを得ない。PhotoShopでPluginをつくるには2つのやり方がある。それは、
- Adobe提供のPlugin SftwareDevelopmentKitを使ってPluginを作る。
- FilterFactoryを使ってPluginを作成する。
今回はランダムノイズをつくるためのプラグイン作成が目的である。その程度であれば、FilterFactoryを使うのが簡単で良い。
まずは、FilterFactoryを使う。 |
まずは、Redチャンネルにのみ乱数を与えるものをつくる。以下がそのパラメータである。
たった、これだけである。 Redに乱数を与え、Green,Blueのチャンネルには0を与える。 |
もうひとつ、各色に乱数を与えるプラグインのサンプル画像はこのようになる。
さて、試しに使ってみる。1000x1000ドットのランダムノイズ画像を作成してみる。その画像はここに載せるには大きすぎる。そのため、その一部を左下に示す。その画像に対して各領域10x10の100ドットで平均し、100x100に変換した画像を右に示す。詳しくは「2項分布を考える」を見て欲しいが、100ドットで平均したくらいではフラットにはならない。それどころか、有限のいくら広い範囲で平均しても正確にはフラットにはならない。もし、フラットになるのであれば、それはランダムな2項分布ではない。もちろん、PhotoShopの丸め誤差とかの話は別にしておく。また、「2項分布を考える」の際は1次元の1成分データであったが、今回は2次元3成分データである。そのため、人間にはよりフラットに見えにくい。相対的な色差に対しては人間の目は敏感だからである。
今回の例も「2項分布の特性:どんなに広い領域であっても、領域中の平均が一定でない」の当然の結果である。仮に、ある広い領域中の平均が一定であるような確率過程を用いればこのようなことは生じない。もしも、そのような確率過程に基づくものがあったら、部分部分はランダムに見えても、広い領域ではフラットに見えるのである。
2008-11-17[n年前へ]
■0.2×11-2 = …?のヒミツ
前に何度も見たことでも、久々に見たり読んだりした時、新鮮に面白く感じることは多いように思います。
Mathematicaのデモ中で、「計算の丸め誤差」をエクセルで見ました。数値計算の有効桁数や丸め誤差を気にする人は多いでしょうし、エクセルや多くの計算プログラムやあるいは言語で「誤差がどんどん重畳されていくようす」を眺めたことがある人も多いと思います。いえ、実際のところ、技術系の人であれば、そんなデモを眺めたことがない人の方が稀少ではないでしょうか。とはいえ、前に何度も見たことでも、やはり新鮮に面白く感じることは多いように思うのです。
そこで、(Mathematica のデモンストレーション中で演じられていた)エクセルで「0.2×11-2」の計算を繰り返していったときのようすを動画として再現して貼り付けてみました。
まず、エクセルで、0.2×11-2を計算します。そして、『「(0.2と表示された)その答え」×11-2』と計算するのです。そして、その答えにさらに…と計算を繰り返していくわけです。
すると、あっという間に丸め誤差が積み上がっていって、20回も計算を繰りかえすと値が1000くらいになってしまいます。こういったことは、浮動小数点の精度を考えれば当たり前な話です。しかし、「タネがわかっていても面白い手品」があるように、こんなデモンストレーションも(たまに眺める分には)見ていてとても楽しく感じてしまいます。
もしかしたら、特にこの手のデモを楽しく感じるのは、「キカイが動いている仕組み・仕掛け」を感じることができるからかもしれません。アレ?と感じ、その興味を入り口として、目の前の現象を眺めていくうちに「キカイが動いている仕組み・仕掛け」が見えてくるからかもしれません。
そして、いつも「それってとても楽しいと思わない?」と感じるのです。