hirax.net::Keywords::「フィルター」のブログ



2002-02-18[n年前へ]

「非線形処理+畳み込み処理」の公知資料 

 特開2001-216513を出願した方からメールをもらった。「自然対数を使う数式自体は昔からあるとは思いますが、画像処理ソフトで、この計算を使ってピンボケを作り出すソフトまたはそのアルゴリズムが存在したのかご存じないでしょうか。」ということだった。
 「非線形処理+畳み込み処理」はおそらく公知資料があるのではないか、ただし、非線形処理と畳み込み処理のいずれもが実装されたソフトは昔から多々あるが、それをワンアクションで実装したソフトは無いかもしれない、と返事を出した。また、「ところで、私自身は特許はあまり好きではないです。といっても、個人としてはですけど。それに、特許を申請するXXさんの考えも良く理解できます。」と書いた。で、メールの最後に
 「それで、少し知りたいのですが、私は自分で作ったプラグインなどもいつもそうしているように何かの話のネタを作って、ソフト自体はフリーで配布すると思います。で、私以外にも自分で画像処理やプログラミングをしている人は多いので、そんなこともあるだろう、と思いますが、そういうときにXXさんはどうされるつもりでしょうか?」
 と書いた。それへの返事は来ていないが、もう少し調べてみた。構成としては、特開平08-241407や特開平09-130609が近いか。で、昔に遡れば公知資料もあるかしらん。しかし、特許調査で公知資料探しなんてまるで仕事みたいでイヤだな。
SUB 画像ボケが「非線形変換→畳み込み→非線形」で表されるとの記述は昔の教科書に載ってた。SUB 特開平09-181966畳み込みでボケ味を出す、複数画像を撮影することで任意の距離のボケを実現。 by オリンパスSUB 特開平09-130609等LUT→ローパスフィルター→LUTで画像ボケ信号を作成 by 富士写真フィルムSUB 特開平07-200817フィルタリングによりボケ画像を作成する ダイキン工業SUB 特願平09-542474対数変換をした上で畳み込みを行う画像変換 サイエンスアンドテクノロジーSUB 特開平08-285726畳込みによるカメラなどの光学系シミュレーション ホーヤSUB 特開平08-241407非線形変換→畳み込み→非線形変換の画像変換 IBMSUB 特開2000-20691非線形変換+デコンボリューションによるぼけ復元、背景の説明中に、非線形変換+畳み込みによるボケ計算を説明 キヤノン

2002-03-24[n年前へ]

パズルのカケラ 

ジグゾーパズル的プラグインを作る

  hirax.netが誇る超手動検索エンジンぐるぐる(旅に出たっきり戻ってこないが)宛に、先日こんな依頼が届いた。
 大きな写真を20ピクセル四方くらいで分割して、それをタイルのように並び替えてくれて、分割したカケラを自分であとで自由に移動できたり、個別に画像調整もできて…、そんなPhotoshopのプラグインが欲しいので探して下さい。 もしなかったら、作ってくれてもいいです。
 今回のような、こんな具体的な依頼であれば、何を探したら良いか実にわかりやすい。よくある「ぐるぐる宛のメッセージ」はあまりに短くて、何を探したら良いのかぐるぐるが困ることも多い。何しろ、「愛」とか「幸せ」とか一言で言われても超手動なので困ってしまうのである。「愛」や「幸せ」を探してくれって言われても、そんなのこっちが知りたいつーのー、ってこぼしたくなるのである。まれに「バスト90cmでDカップ超の巨乳」というような超具体的な検索キーワードが送られてくることもあるのだけれど、そんなこと言われてもなー、とぐるぐるは頭を抱えるばかりなのである。

 それはさておき、今回の依頼も実に判りやすいのだが、もしなかったら作ってくれてもいいです、とは優しい口調でとんでもない依頼だ。いや、実際のところ依頼というよりほとんど命令である。人を(いや違った、ぐるぐるを)ドラえもんか何かと間違えているんじゃないかー、と聞き返したくなったりするのである。

 しかし、これまで「できるかな?」では「たくさんのカケラを並べて、一枚の絵にするモザイク」で遊んでみることが多かったが、そんなこれまでとは逆のアプローチ、「一枚の絵をたくさんのカケラにばらばらにしてみる」という、まるで一枚の絵をジグゾーパズルのピースに分解してしまうような遊びをしてみるのも面白いかも、ともふと思った。そこで、今回はこの依頼に応えてそんなPhotoshopのジグゾーパズル的プラグインを作ってみることにした。名付けて、Midinette(= 女性店員,、針子さん)プラグインである。「糸のこで切り抜いたパズル」はJjigsawpuzzleだけれど、そんなジグゾーパズルを切り張りしたり繋げあわせたりする賢い女性店員・針子さんという気持ちを込めてみた。
 

 さて、普通なら、Photoshopのプラグインと言えば、普通はフィルター・プラグインなのだろうけれど、今回は「分割したカケラを後で動かしたい」という注文がついているので、アクション・プラグイン(通常のアクションではなくて、あくまでもプラグイン)で適当にちょちょいと作ってみることにした。まずは、このプラグインを使った場合のサンプル画像を下に示してみる。
 

Midinetteの処理画面をちょっとだけ加工したもの
オリジナル画像
変換画像

 アクションプラグインはPhotoshop5.0以降に導入されたものであるが、今回のプラグインは6.0以降の機能も使っているので、Photoshop56.0以降が動作環境となる。また、Windows2000でしか動作チェックしていないので、もしかしたらその他の環境では動かない場合があるかもしれない。その場合はその旨知らせてもらえれば、コンパイルし直したものを作る予定だ。で、いつもと同じようにアルファ版のものをここに置いておく。これをPhotoshopのPlug-Insディレクトリに置けば、ファイル→自動作業からMidinetteが使えるようになる。


 この手のジグゾーパズル系のプラグインとしては他にAVBros. Puzzle Proなどがあるが、ピースの形状の自然さはともかく、各ピースを(それぞれレイヤーに変換することで)自由に後で動かすことができるという点で今回のこのプラグインは面白いのではないか、と思う。

 ちなみに、下の画面がMidinetteのダイアログである。現時点で設定可能なパラメータの内容は

  • Horizontal Division  : 横方向の分割数
  • Vertical Division    : 縦方向の分割数
  • Inclination          :長方形からの変形量 (3〜5)
  • JigsawPuzzle         : 丸い突起部の大きさ(6〜7)
  • Scattering          : ピースをバラバラにするかどうか
  • LayerEffects         : ピースの立体効果をつけるかどうか
となっている。Midinetteは背景レイヤーの画像を各ピースに分解して、そのピースに対してそれぞれレイヤーを作成して立体効果を付加したりする、という仕組みになっている。だから、各ピースの表示・非表示などは各レイヤーの設定を変えてやれば良いわけである。また、オリジナル画像は背景レイヤーにそのまま保存されている。だから、上のサンプル画像の場合は、Midinetteで変換をした後に、背景レイヤーをグレイ化して、あといくつかのピースを非表示にしたり回転させたりしてみたのである。
 
Midinetteのダイアログ

 パラメータを変えると、ピースの形がある程度変えられるので例えば、こんな風にもなる。ここでは各ピースをバラバラにしている(ちゃんとバラバラにしていないのはご愛敬だが…)。
 

Midinetteの処理画面をちょっとだけ加工したもの パート2

 ところで、このプラグインが作るパズルのカケラは、本来のジグソーパズルのカケラの形とは違う。本来、ジグゾーパズルでは各のピースはどれも違う形だけれど、このプラグインではどれも同じ形になる。今回のプラグインでは、それぞれのカケラ、ピースを並べ替えたあとでも、どのピースも形の上ではきちんとはまって、きれいに一枚の絵になる方が便利だろうと考えてどのピースも同じ形にしてみた。

 だから、今回のMidinetteが作るパズルのカケラはどの場所に置いてもきちんとはまってしまう。だから
どのピースをどこに置くかはユーザー次第だ。もちろん、元画像がちゃんと再現するように並べてみても良いけれど、それでは元画像そのままだ。それは全然面白くない。せっかくばらばらのカケラにする意味がない。やっぱり、ここは自分の好みにまかせて、それぞれのパズルのカケラを好きな場所に置くべきだろう。

 一旦、元の画像を頼りにならないとなってしまえば、あとはもう別に一つの答えがあるわけじゃないし、もう気の向くまま風の向くまま、「自分の感覚」だけを頼りにして、色々いじればきっと面白いはずだ。頭の中で色んな思考のカケラを並べてみるように、このMidinetteでパズルのカケラを自分の好きなように並べて遊んでみてもらえたら、とてもうれしい。 byぐるぐる
 

2002-03-29[n年前へ]

フィルターをかけた後にAboutを呼ぶとその後エラーが起きる 

 PluginMainのswitch文でサンプルプログラムなどでbreakで出てるところを、returnに書き直すべし。

2002-06-23[n年前へ]

あなたが描く私の木漏れ日 

The your sun streaming through my fingers

「これはただの木の影 「木もれ日プロジェクト」というものを見た。表参道のSPIRALの一角に展示されている木村崇人氏の作品である。色んな形の灯りを作ってやって、木漏れ日が色んな形になるのを楽しもう、という作品である。星形や三日月型の灯りが発する光に掌をかざすと、指の隙間からこぼれた光はキラキラとした星形になったり、幾重にも重なる三日月型になったりするのである。

 太陽は丸いから、木漏れ日を見てもいつもは何の不思議にも感じない。だけど、こんな色んな形の木漏れ日を眺めると、重なり合う木々の葉がピンホールレンズになっていて、木漏れ日が刺す様子が大きなカメラオブキュラだったことに今さらながら気づくのである。そしてまた、重ねた掌の隙間からこぼれ出す光が星形を描くとき、とても不思議に気持ちよく感じる。

 これを眺めた後に、私も色んなカタチの灯りを作って色んなカタチの木漏れ日を作ってみようか、と考え、それには何が必要かな、はさみと、ランプと、光を拡散させるためのトレーシングペーパーと、色んな色の木漏れ日を使いたいからカラーフィルターも…、と考え始めたときに気が付いた。そんなに色んなものがなくても大丈夫なのだった。考えてみれば、パソコンのディスプレイの画面はかなり明るいのだから。パソコンの画面に「色んな形」を描けば良いだけの話なのである。つまりは、パソコンでお絵かきしている画面を「太陽」の代わりにすれば良いのだ。そして、その画像だけを画面に表示させて、真っ暗な部屋でそのディスプレイの前に手をかざせば、壁に映し出される掌の影の隙間には「色んな形」の木漏れ日が幾重にも重なり見えてくるはずだ。
 

 そこで、例えばこんな風にPhotoshopのフルスクリーンモードで星型を描いてみた。
 

PCの画面に星型を描いてみる

 そして、部屋を暗くして両手を重ねると、両手を重ねた隙間を抜ける光が「木漏れ日」を形作る。それはPCの画面に描いた星型をしている。重ねた両手の指の隙間から抜けた光が、幾重にも重なる星型になって光るのである。
 

両手を重ねた隙間を抜ける光が「木漏れ日」を形作る
それは星型をしているのである

 もちろん、PCの画面に自分で「色んな形」を描かなくても良いだろう。誰かが楽しそうにお絵かきをする。マウスを動かして、色んな言葉を書き込んでみたり、ハートマークを書いてみたりする。私はディスプレイの前で手をかざしている。そうすれば、私の掌の影の中の木漏れ日は色んな言葉やハートマークをゆっくり描き出すだろう。それはとても気持ちよい景色に違いない。

 そして、さらにはこんな風にも考えてみた。その他の誰かは必ずしも私のPCで「色んな形」を描く必要はない。例えば、ネットワークの何処かに繋がった他のPCを前にして、そんなお絵かきをしてみても良いはずだ。

  1. Photoshopをフルスクリーンモードで動かして、黒を背景にして好きなものを描く
  2. その画面をVNCのような「ネットワークを介してPCの画面を転送するソフト」でネットワーク上の他のPCに送る
  3. その送られた画面を(例えば)InternetExplorerをVNCビューアーにして、フルスクリーンモードで表示する
 こうすれば、何処かのPCの画面で描かれている「絵や文字」が、ネットワークを介した何処かの真っ暗な部屋に置かれたPCの画面に転送される。そして、その「絵や文字」はPCのディスプレイから発せられる光となって、PCが置かれた部屋を照らす。その部屋は何もしなければただぼんやりと明るいだけだけれど、もし掌を重ねて光に手をかざしてみれば、その掌の影が壁に映し出され、そして掌の影の隙間にはその「絵や文字」が木漏れ日となって浮かび上がる。そんな「あなたの木漏れ日・ストリーミング」ができる。
 
例えば「三色のハートマーク」を描いてネットワーク上に転送してみた
何処かで描かれた「三色のハートマーク」
両手の隙間から漏れた「木漏れ日」は
「三色のハートマーク」の姿をしている

 「あなたの木漏れ日・ストリーミング」はちょうどこんな感じだ。例えば、何処かで誰かが何かを描く。恋人が親があるいは誰かが、他の誰かへの気持ちを描く。例えば、何かの「キモチのカタチ」を描く。例えば、ハートマーク、あなたの名前ををゆっくり描く。あるいは、PCに繋がったCCDカメラに向かってポーズを手を振ってみる。

 そこから離れた何処かの場所で、その恋人がその子供があるいは他の誰かが、PCのディスプレイが発する光に掌をかざしてみる。その掌の隙間から漏れた光は掌の下に木漏れ日となって何かを描く。ネットワークに繋がった遠く何処かで誰かが描いている気持ちが、誰かの名前を綴る文字が、あるいは手を振る姿が離れた場所のPCの前にかざす掌の下の木漏れ日になる。遠く何処かで描かれていく「キモチのカタチ」が、「笑いながら遠くで手を振る誰かの姿」が、木漏れ日となって、私達が重ねる掌の下で光り、映し出され、そして私達の目の前に浮かび上がってくる。

2002-08-04[n年前へ]

キラキラ光る景色を描く 

「木漏れ日」プラグイン「リン」を作る

 夏の休日には、朝早く起きて西伊豆の松崎の先にある「雲見・岩地・石部」辺りへ行って、海の中でお魚と戯れてみたり、海辺の温泉に長々とつかってみたりする。例え休日であっても朝早く行けば混雑とは無縁だし、海に照りつける太陽と温泉とビールの三点セットが揃えば、夏の景色としてはとても素敵なのである。

 とはいえ、今日は朝寝坊したので、松崎までは行かずに「無名だけれどとても良い感じの場所」へ行った。海辺に車を止めて、景色を眺めて、ほんの少しの時間泳いでみた。下はその西伊豆の某所で眺めた「今日見た景色」だ。
 

西伊豆の某所で眺めた「今日見た景色」

 「雲見、岩地、石部」であれば温泉も海も最高だけれど、西伊豆の辺りには他にも「海水が綺麗で、人も全然いなくて、トイレも水もある」ような場所はいくつもある。これはそんな場所の一つ。

 県道から海辺の集落に向かう道沿いには素晴らしい滝もあって、まるでプレイステーション2のゲームソフト「ぼくのなつやすみ2海の冒険篇」の世界に迷い込んだかのよう。

 実際に眺めていた景色はもっとキラキラしていたハズなのに、その片鱗も残っていない…。それはひとえに写真を撮ったワタシのウデが悪いから。
 

 海辺でワタシが実際に眺めていた景色は、もっとずっと「キラキラ」していたハズなのに、残念なことに上の写真を眺めてみても、その片鱗すら残っていない。揺れてる波間も、足下の濡れている岩も、眩しい太陽だってもっとずっとキラキラしていたハズなのに、上の写真はただボンヤリした写真になってしまっている。それは、ひとえに写真を撮ったワタシのウデが悪いからである。もちろん、それが一番の理由である。クヤシイ話ではあるが、確かにワタシのウデは悪いのである。

 とはいえ、言い訳を少しばかり書くならば、実際に眺めていた景色がもっとずっとキラキラしていた理由は他にも考えられる。例えば、ワタシ達が景色を眺めるときには、目の前にかかる髪の毛や、睫毛や、目の水晶体を通して景色を眺めているわけで、それらの中で光が回折したりして、キラキラとまるで虹のように光が輝いて見えたりするからだ。そのため、例えば夜空の星の形、本来は丸いはずの星の形、が星型に見えたり、木漏れ日が虹のように輝いて見えたりする。

 そんな様子をもしカメラで再現しようとするならば、ケンコーが出しているクロスフィルターのようなものをつけることになる。しかし、手軽さが取り柄のデジタルカメラでわざわざそんなフィルターをつけるのは面倒くさいし、第一人によって見え方は違うから、「ただ一つのフィルター」で写真を撮ってしまうのは少しばかりイヤな気がする。例えば、「私は目の前に髪の毛がたくさんかかってしまって邪魔なのー」という人もいれば、「最近、抜け毛がハゲしーなぁ…、目の前に髪の毛がたくさんかかっていたあの頃が懐かしぃ…」という人もいるわけで、そんな二人が眺めた景色はきっと全然違うハズなのである。「百人の人がいれば百人百葉様の景色を眺めている」わけで、写真を撮る時点でただ一つのフィルターをデジカメにはめて写真を撮ってしまうのも面白くない。フィルターに限らず、何事も一つの枠にはめてしまうのは良くないのである。

 デジカメの便利なところは、何より撮った後の画像加工が自由自在、というところなわけで、撮った後に「眺めた景色」を再現するように画像を加工してやれば、「写真を撮るときには素直な景色を撮って」「その後で自分が眺めたキラキラ光る景色を蘇らせる」ということができる。そこで、今回はそんな「キラキラ光る景色を描く」Photoshop用のプラグインを作ってみることにした。そして、ワタシの写真の腕の悪さを「技術の力」で誤魔化そうと思うのである。
 

 といっても、基本的には、「ボケ」た背景で包み込めの時の処理を基にして、

  1. 色々な畳み込みの演算カーネル形状を用意し
  2. 演算カーネルのサイズを強度やアルファチャンネルの情報を元にしてピクセル単位で可変にし
  3. カーネル演算を対数変換有無などに対応する
ようにするだけで、比較的簡単に「キラキラ光る景色を描く」Photoshop用のプラグインを作ることができる。光が輪を作ってキラキラする景色を描くプラグインなので、輪を意味する"RINg"と名付けてみた。木漏れ日は時折鈴(りん)の音のように見えるので、その響きにもかけてみた。 ちなみに、RINgプラグインは今のところ、Windows2000(XP?)のPhotoshop6.0,7.0でしか動かないと思うが、いつもと同じようにアルファ版のものをここにおいて(+説明)おく。

 RINgの出力サンプルを少し眺めてみると、下の画像のようになる。まず最初のサンプル画像は、クローバーの写真に「虹十字状」の畳み込みの演算カーネルを用いて、処理をしてみたものだ。左のオリジナル画像では、朝露を載せて光るクローバーを眺めるときに私達が感じる「キラキラしたようす」がほとんど写っていないが、右のフィルター後の写真では私達が睫毛などを通して景色を見るときに感じる虹色のキラキラした自然?な景色が映し出されている。
 

職場の駐車場で眺めた景色
オリジナル画像

左の画像にRINgをかけたもの
(畳み込みの演算カーネルは虹十字状)

 そして、また下の写真は、新宿から初台へ歩く途中で眺めた木漏れ日の向こうのビルの景色だ。左のオリジナル写真はクッキリ・ハッキリ写っているのだが、ただ「それだけ」である。太陽の光を遮る木々の葉っぱも、そこから降り注ぐキラキラする木漏れ日も写ってはいない。しかし、右のRINgが描いた景色の方では、ボンヤリと、だけど強く光る初夏の「木漏れ日」が確かに写っているのである。夏の空気が写っているかのようなのだ。
 

新宿から初台へ歩く途中で眺めた景色
オリジナル画像

左の画像にRINgをかけたもの
(畳み込みの演算カーネルは円状)

 もちろん、このRINgは「ボケ」た背景で包み込めの時の処理を基にしているので、写真のボケも再現することができる。例えば、六角形の畳み込みの演算カーネルを用いて、画面全体に同じ演算カーネルで処理をかけると下の右の写真のようにピンボケの写真を再現することができる。
 

画像全体に同じようにRINgをかけてみた例
(畳み込みの演算カーネルは六角形状)
オリジナル画像
左の画像にRINgをかけたもの

 また、アルファチャンネルも選択してフィルタ処理を行うと、自動的にアルファチャンネルの情報を基に畳み込みの演算カーネルサイズを画素毎に変化させる。だから、例えばアルファチャンネルに距離の情報を入れておいてやれば、下の写真のように距離に応じたボケなども再現することができる。この写真では画面中央下の領域はピントが合ってていて、そこから離れるに従って、ピンボケの具合が大きくなっている。もっとも、現在のバージョンでは大雑把に計算してみただけなので、空の部分などに疑似輪郭などがずいぶんと発生してしまっている。きっと、それはいつかのバージョンで直すつもりなのである。
 

距離の情報としてアルファチャンネルを用いた例
オリジナル画像
左の画像にRINgをかけたもの
(畳み込みの演算カーネルは円状)

 今回のRINgプラグインは光が広がる様子を保存した「畳み込みの演算カーネル」を基に画像にフィルタをかけるだけなので、使う演算カーネルの形状・様子によって色んなフィルタに早変わりする。

 例えば、デフォルトでつけてある三日月型の"Moon"カーネルを使えば、色んな灯りが三日月型に光る景色に早変わりする。もし、星空の写真に"Moon"カーネルでRINgプラグインをかけたら、いきなり全ての星が三日月に早変わりだ。また、"Smile"カーネルであれば、いきなり光が大小様々な「笑顔」に早変わりする。そんな風にして、色んな画像ファイルを演算カーネルにして見ると、色んな景色が見えてくるはずだ。例えば、「星はなぜ星型に見えるのか」のグループが作成した「星型シミュレーションソフトウェア」の出力結果を演算カーネルにすれば、目の前の景色が星空の向こうの景色に早変わりするだろう。そしてまた、水で満たしたコップの向こうに浮かぶ光の画像を使えば、RINgはデジカメで撮った色々な写真を水槽の向こうの景色であるかのように描き直したりするかもしれないし、あるいはまたまるで瞳に涙を浮かべながら景色を眺めてみたかのように描き直したりするかもしれない。



■Powered by yagm.net