hirax.net::Keywords::「ソフトウェア」のブログ



2001-08-07[n年前へ]

「ボケ」た背景で包み込め 

デジカメ画像をキレイにボカそう アルゴリズム編

 最近、新しいデジカメを物色中である。私はこれまではFinePix4700zを使っていたのだけど、そのFinePixが半年程度で壊れてしまった。というわけで、C-4040ZOOMがどんなものか期待しているところである。

 壊れたFinePixと言えば、そもそも壊れたFinePixは一台ではなかった。私はすでにFinePixを二台も買っているのだ。そして、もうすでに二台とも壊れてしまっているのである。連続殺人事件ならぬ、連続カメラ自殺事件なのである。

 まず、一台目に買ったFinePix700ははメキシコのティファナでポケットから落としたら、バッテリーから電源が供給されなくなった。もちろん、ACアダプターを使えば立派に動くのだけれど、それでは少しばかり機動性に欠けてしまう。まさか発電機を持ち歩くわけにはいかないし、コンセントの近くでしか撮影することができないとなると、それは非常に困ってしまう。そこで、すかさず二代目としてFinePix4700zを私は買った。ところが、買ってから半年位たったある日、今度は勤務先の駐車場でポケットから落としてしまった。すると、今度はファインダー視野がズームに連動しなくなって、なおかつレンズがまるでジョイスティックのようにあらゆる方向に曲がるようになってしまった。

 こんな風にデジカメはとっても壊れやすくて、半年毎にデジカメ出費を強いられる私に周囲は「落としたオマエが悪い」と非常に冷たいのである。残念なのだ。「そういうのは壊れたんじゃなくて、壊したんだ」と被害者である私をまるで加害者のように告発する人さえいるのである。連続カメラ自殺事件は実は他殺で、しかも犯人は私だと告発する輩さえいるのだ。ひどい話である。
 

 ところで、C-4040に期待しているのは、コンパクトで、レンズアダプターが使えて、レンズがF1.8と明るいことなのである。コンパクトなのは持ち歩くために必要だし、私はなんと言っても超広角デジカメが欲しいのだが、そんなデジカメはないので、ワイドコンバーターを付けたいのでレンズアダプターが必要なのである。明るいレンズの方は、うす暗い中でも撮影する時に重宝しそうなので、少し期待しているのである。
 

 ところで、この位明るいレンズであれば、もう少しぼかすことができるものだろうか?デジカメで写真を撮ってもどうしてもボケない。35mmフィルムを使っているカメラなどと比べるともう全然ボケない。もうほんとにボケない。

 例えば、35mmカメラで135mm F4.5開放のレンズなら、ピントの合ってない背景はこの位はボケる。これは京都の哲学の道近くにある吉田山で撮った写真だ。
 

35mmカメラで撮影した例 135mm F4.5?

 

 ピントが合っている位置以外は光がボケて、キレイなボケが発生する。どちらの写真も絞りは開放で撮影しているので、後ろの風景はほぼ丸くボケている。ぼかせばキレイというわけではないけれど、背景などがごちゃごちゃしている中で対象物だけを浮き上がらせたい場合には、「ボケ」させるととても良い感じになる。
 

 しかし、デジカメではそうそう簡単にボケた画像を撮影することはできない。35mmフィルムに比べて、CCDサイズが小さいからである。35mmカメラよりAPSカメラはもっとぼけなくて、それよりデジカメはさらにボケないのである。そんな様子を見るために、二台目として買ったFinePix4700zで「ボケ」を意識して撮影してみたものが下の写真である。手前の植物にピントが合って、奥の道の先はボケてはいるのだけれど、それでも先程の写真などとは比べものにならないほどわずかしかボケていない。
 

在りし日のFinePix4700zで「ボケ」を意識して撮影してみた写真
(昼過ぎの箱根山中で)

 ところで、このような画像の「ボケ」を考えるとき、「ボケ」た画像をシャープに復元しようという話は非常にポピュラーな話題である。例えば、本「できるかな?」でもこれまでに

といった感じで遊んできた。また、さらには「恋の形」を復元しようとしたとか、このようなアプローチを遥か昔に考えていた漱石の「文学論」を振り返ってみたりしたきたのである。しかし、これらはいずれも「ボケたデータを復元する」という問題であった。

 一方、この逆のアプローチである「シャープなデータをボケたデータにする」という問題も結構ポピュラーである。例えば、音楽をホールやライブハウス風にボケた音にするDSPはかなりの数のオーディオ装置に付けられている。これも、もともとはシャープな音声データが部屋の中でボケていく様子をシミュレートする回路である。また、画像に関する話題でも、ピント位置をずらした複数の画像から任意の「ボケ」画像を作成するといった話題もたまに見かける。

 そこで、「できるかな?」でもデジカメ画像を35mmカメラ風にキレイにぼかすことに挑戦してみることにした。今回は、まずはアルゴリズムを確認して、次回以降で簡単プログラムを作成してみることにしたい。

 まずは、似たようなソフトウェアがあるかどうか、Googleで適当なキーワードを使って検索をかけてみると、IrisFilter(http://www.reiji.net/iris/)というソフトウェアがあった。これは、「写真のぴんぼけを再現する」というフィルターだった。サンプル写真などを見てみると、これがなかなかきれいだった。例えば、早朝の御殿場の路上を「在りし日のFinePix4700z」で撮影した写真にこのフィルタをかけて、「ボケ」を加えてみたのが下の画像である。
 

Iris Filterでデジカメ画像を「ボケ」させたもの
オリジナル画像
Iris Filterで処理したもの

 ここではこんな六角形の絞り形状をを用いてみた。右の処理画像中の、車のテールランプや車の下部を眺めてみると、鋭いハイライト部が六角形に光っているのがわかだろう。確かに、「ボケ」がカメラの絞り形状になっていて、良い感じである。

 WEBページの記載によれば、このIris Filterは「フィルム特性曲線を利用し、レンズから通った光がフィルムを感光させる様子を再現しています」ということである。なんでも、特許も国内・USP共に出願済みということだが、特願2000-100042もU.S.PTO 09/772532も未だ公開にはなっていないようで、残念ながら特許の内容を読むことはできなない。

 このWEBページの記述の中で面白いのは、「データ上の数値をそのまま拡散させる従来のPhotoshopをはじめとした画像処理ソフトと違い、実際のフィルムに当たる光の量(露光量)を逆算し、その露光量をもってピントがずれている様子を再現します」という歌い文句でPhotoshopの「ガウスぼかし」と比較広告してある部分である。

 試しに、先の画像をIris Filterで「ボケ」を加えた画像と、Photoshopの「ガウスぼかし」とで「ボケ」を加えた画像を比較してみると、下の二枚の画像のようになる。確かにIrisFilterの売り文句通り、こうして比較してみるとPhotoshopガウスぼかしが写真の「ボケ」っぽくないのに対して、IrisFilterの「ボケ」が写真のそれっぽいことが良くわかる。
 

Iris Filterの処理画像(左)とPhotoshop ガウスぼかしで処理した画像(右)の比較
Iris Filterで処理したもの
Photoshop ガウスぼかしで処理したもの

 さて、お仕着せのソフトを使ってみるだけではなくて、自分でデジカメ画像をキレイに「ボケ」させてみることにしたい。というわけで、hirax.net風「ボケ」フィルターの動作を考えてみる。

 まずは、毎度のことだがオリジナル画像が「ボケ」る様子を計算する式は

逆フーリエ変換(  フーリエ変換( オリジナル画像 ) x フーリエ変換(ボケ具合 ) )
と表すことができる。詳しくは、「宇宙人はどこにいる?」の回でも読んでもらうことにして、簡単に言えば周波数領域でオリジナル画像とボケ具合を掛け算をしさえすれば良いのである。つまり、今回のデジカメ画像をぼかす場合だったら、
  1. デジカメ画像と「ボケ」具合をそれぞれフーリエ変換し周波数空間に変換
  2. 周波数空間で乗算を行う
  3. 逆フーリエ変換して実空間に戻す
とハイ!「ボケ」画像の出来上がり、というわけである。ボケ具合が小さい場合などは、このやり方よりもずっと計算量の小さいやり方はあるわけだけれど、とりあえずこのやり方はとても単純明解なので今回のように試しでやってみるにはとっても楽な方法なのである。また、ここでいうボケ具合というのは、こんな形状の「ボケ」具合のことである。
 

 じゃぁ、早速やってみようとなるわけだが、その前にもう一つ注意することがある。それは、RGB画像の数値というものは実は元々「明るさを対数変換した値」であるということなのである。人間の目も含めて世の中の大抵の材料は対数的な感度を持っている。例えば、人間の目に「2倍明るい」という場合に、光は「2倍明るい」というわけではない。その場合には指数的にX^2倍明るいのである(ここで、xの値はそれぞれのデバイスによって色々と違う)。その明るさをRGB画像の数値データにする時に、明るさの対数をとってLog[x,X^2]で2という数値として表しているわけだ。

 RGB画像の数値が「明るさを対数変換した値」だというようすの一例を示すと下の図のようになる。
 

RGB画像の数値というものは実は元々「明るさを対数変換した値」である
片対数軸で表した
横軸 = 0〜255の数値データ
縦軸 = エネルギー
線形軸で表した
横軸 = 0〜255の数値データ
縦軸 = エネルギー

 逆に明るさからRGB画像の数値データへの変換グラフは例えばこんな感じである。RGB数値で200と255と言っても実はその明るさは大違いであることがわかると思う。
 

 

 だから、この手の処理を行う際には、まずは指数変換してから処理を行い、そしてその後対数変換してやらなければならないわけだ。もちろん、今回のデジカメ画像をぼかす場合にも、RGB画像の数値をまずは指数変換した後、「ボケ」演算を行って、その演算結果を対数変換でRGB画像の数値に戻してやらなければならないのである。といっても、別に難しい話ではなくて画像を扱う装置だとごく当り前の話だ。

 そう、「ボケ」演算のhirax.net風レシピはたったこれだけ〜というわけで、早速このレシピに従ってhirax.net風デジカメ「ボケ」フィルターをかけてみたのが下の画像である。キレイな「ボケ」画像ができあがっていることが判ると思う。
 

hirax.net風デジカメ「ボケ」フィルター
キレイな「ボケ」画像のできあがり〜

 ところで、デジカメ画像のRGB画像の数値を指数変換したものに「ボケ」演算を行ったわけだけれど、もしRGB画像の数値そのものに対して「ボケ」演算を行ったら、どんな結果になるだろうか?つまり、「データ上の数値をそのまま拡散させる」やり方をしたら、どうなるのだろうか?そこで、試しにRGB画像の数値そのものに対して「ボケ」演算を行ってみるとこんな結果になる。
 

RGB画像の数値そのものに対して「ボケ」演算を行ってみた結果
キレイじゃない…

 何だかボンヤリとにじんだだけの「キレイじゃない」写真になってしまっている。それは、当り前である。本来2倍明るいものはX^2倍明るいわけで、すごく光の量は2倍どころでなく多いわけだ。それが広がる量を仮にRGB数値そのまま2倍として扱ってしまうと、その光の部分は薄暗くなってしまう。コントラストのはっきりしない、ぼんやりとした写真になってしまうわけだ。ちゃんと、X^2倍のデータとして扱ってやらなければならないわけである。

試しに、指数処理したものと線形処理をしたものとを並べてみるとその画像の違いがよくわかるだろう。
 

指数処理した画像(左)と線形処理をした画像(右)の比較
hirax.netレシピの
キレイなボケ画像(指数処理)
 

キレイじゃないボケ画像(線形処理)

 さて、今回はデジカメ画像の「ボケ」フィルターのhirax.net風レシピを確認してみた。次回(と言ってもいつになるか…)以降に、このレシピに従って実際にソフトを作成していこうと思う。
 

 ところで、「文学論」の中で漱石は「ボケ」は焦点的印象又は観念に付随する情緒を意味する、と言っている。それは、言い換えれば「何かの出来事をきっかけとして感じた怒り・悲しみ・喜びなどの感情がボケである」ということだ。そして、さらに言えば、写真で背景をぼかすということは、つまり「背景にある出来事が生みだした怒り・悲しみ・喜びを広く混ぜて包み込む」ということなのである。

 だから、何かを撮影する時に対象物の背景をぼかすということは、「背景にある出来事が生みだした怒り・悲しみ・喜びを広く混ぜて対象物を包み込んで、そして対象物を浮き上がらせる」ということなのかなぁ、とぼんやりと考えてみたりする。そんな写真は対象物を写しこんでいるのと同時に、それを包みこむ背景も写しこんでいるンだろうなぁ、と考えてみたりする。
 

2002-01-08[n年前へ]

オッパイ星人の力学 禁断の最終兵器編 

ステレオ写真で巨乳ビジョン


   元旦を実家のこたつで迎えていると、母に「オマエも最近はやっとマトモな話を書くようになってくれたわね」と言われた。そう、最近確かにできるかな?では「私と二度めに出会う水」「サンタが街にやってくる」「あなたと見たい、流星群」と、書いてるワタシが自分で言うのも何だがきれいな話が続いていたように思う。

 しかし、それだけではマズイのである。砂糖だけでも塩だけでも料理はマズイのと同じように、何事も同じようなもの一つだけではマズイのである。そう考えるワタシはこれまでも、「ブランコを揺らす子供の動き」をメルヘンに考えてみる一方で、同じく「Gカップバストを揺らす女性の胸の動き」を考えてみたりしてきた。そして、結局のところ、その両方ともが純真でピュア〜で素晴らしいものなのだぁ、と主張してきたわけである。だから、いかにもきれいな話が続くのはマズイのである。それはいかにもマズイのである。

 というわけで、2002年新春第一号は最近の話からちょっとズラして、これまで封印していた「オッパイ星人との戦い秘話」を書いてみたいと思う。
 
 

 いつでも、正義の味方は人知れず戦い続ける。年末も年始も関係なく、地球を守るために日夜戦い続ける、それが正義の味方だ。…ワタシも周知の通り、日夜オッパイ星人と戦い続けている。これまでのワタシの戦記録は「オッパイ星人胸のヤング率編揺れる胸の動き編パラメータ励振編バスト曲線方程式編仏の手にも煩悩編あなたのオッパイ星人度編求む未来のヒロイン編」と橋田壽賀子ドラマ「渡る世間は鬼ばかり」も真っ青の大河ドラマになりつつある。
 

 とはいえ、以前も嘆いたようにオッパイ星人と戦うワタシの戦術はもっぱら専守防衛ただひとつである。何とかの一つ覚えのように専守防衛のみだったのである。それどころか、最近では単なる対オッパイ星人バトルの「自主学習」という状況にすらなりつつある今日この頃なのだ。

 何しろ、オッパイ星人と地球人の見かけ上何の違いもなく、違いと言えばただ一つ「オッパイ星人達の目は女性のバスト(巨乳の場合多し)にロックインしている」ということだけなのである。となれば、オッパイ星人を見つけるためには、彼らが引き寄せられるような「巨乳トラップ」を用意して、「おとり捜査」を仕掛けるような戦術をとるしかないわけであるが、それも協力者の申し出が皆無であるため、孤独なワタシはそんな戦術は実行することができなかった。そのため、そんなワタシの戦術はもっぱら専守防衛(と自主学習)のみ、という日本が誇る自衛隊= セルフ・ディフェンス・フォースと完全に同じ状態だったのである。

 しかし、近年ではそんな自衛隊、ワタシと同じく長く専守防衛を謳ってきた自衛隊でさえも、専守防衛と言う割には色々なところへ出かけていったり、さまざまな強力なフォースを持つに至っている。先日も、イージス艦をどこぞに派遣するしないで、世間をにぎわせていたばかりである。オッパイ星人と孤独な戦いを続けるワタシとはエライ違いなのである。

 しかし、実はワタシも自衛隊のイージス艦ではないのだが、オッパイ星人の魔の手から地球を救うためにとある強力兵器を開発したことがある。それが、この「巨乳ビジョン」である。
 

巨乳ビジョン

(完成予想図)

 とはいえ、上の写真下部に(完成予想図)としてあることでも判るように、この強力兵器「巨乳ビジョン」はプロトタイプまでは作成したのであるが、量産するまでには至らなかった。いや、量産するどころではなくて、ワタシはこの「巨乳ビジョン」を実は封印してきたのである。今回はこの「巨乳ビジョン」がいかなる兵器であるかを説明すると共に、何故この強力兵器が封印されるに至ったかを書いていくことにしたい。
 

 そもそも、この「巨乳ビジョン」の開発の目的は「オッパイ星人に狙われそうな可哀相な子羊(巨乳)」をいち早く見つけだし、助け出すことにあった。実に不思議なことに、オッパイ星人達は何故か人目バストに目を走らせたならば、その大きさ・形状を把握するといううらやましいおぞましい能力を持っている。しかし、残念ながら幸運なことにオッパイ星人でないワタシはそのような能力を持ち合わせていないのである。だから、どうしても街中を歩く女性達の中から、オッパイ星人に狙われそうなバストを見分けることができなかったのだ。そこで、こんな状況を打ち破るために、ある日ワタシは考えた。ワタシも「見たバストの大きさ・形状を把握するような武器」を使えば、強力なオッパイ星人達と互角に戦うことができて、この哀しき専守防衛アンド自主学習状態から脱出できるのではないだろうか、と。

 であれば、一体「見たバストの大きさ・形状を把握する」ためにはどのようにすれば良いのだろうか? もちろん、触ってみるなんてのは問題外だ。シャイなジェントルマンのワタシとしてはそんな不埒なまねはできないのである。 やはり、ここはhirax.netが得意とする画像処理技術悪用有効活用すべきではなかろうか、とワタシは考えたのである。というわけで、ワタシは両眼視差を利用して、バストの立体情報を計算・再構成し、「一目見ただけでバストの大きさ・形状を把握する巨乳ビジョン」を作成してみることにしたのである。

 そもそも、人間は両目で見ている画像の差を利用して、奥行き情報を知るわけであるが、このような処理を画像処理で行う技術は通常ステレオマッチング技術などと呼ばれる。であれば、二つのカメラを角度を変えて配置し、そのカメラで撮影した二つの画像からステレオマッチング法を用いて奥行き情報を再構成してやれば、平面画像中の大きさ・高さなどを画像処理技術により知ることができるのである。というわけで、二つの画像からバストの高さ・形状を計算・再構成してやって、「オッパイ星人に狙われそうな可哀相な子羊(巨乳)」を見つけだそうという武器がこの「巨乳ビジョン」なのである。

 その「巨乳ビジョン」の効果をまずは例をとりながら説明してみたい。まずは、以前「もう一つの目から眺めた世界/a>vでは、hirax.net式「平面画像立体化法」を使って、平面画像を立体化してみた。その立体画像から、奥行き情報を知ることができるだろうか?

 何より最初に、平行法でこの二つの図形を眺めてみよう。青い四角が視点に近くせり上がってきて、緑の円はほんの少しだけ背景から浮かび上がっているのが見えるだろうか?
 

例えば、こんな立体配置は?
(平行法)

 それでは、この二つの画像を巨乳ビジョンを使って解析してみよう。ステレオマッチングにより画像の奥行き・高さ情報を計算するソフトウェアは色々とあるが、ZitnickkKanade氏らによるCooperative Stereo VisionアルゴリズムによるZK Stereoというアプリケーションもその一つである。わが「巨乳ビジョン」では、このZKStereoを使って上の二枚の画像から奥行き情報を計算している。その計算結果が例えば次のグラフである。このグラフ中では視点に近いほど高く描かれ(色は濃く)、視点から遠いほど低く(色は薄く)描かれている。
 

Cooperative Stereo Visionアルゴリズムを用いて
奥行き情報を計算してみたもの
このグラフでは
近い = 高い(色 = 濃い)
遠い = 低い(色 = 薄い)

 このグラフを眺めてみれば、青い四角が背景よりずいぶんとせり上がっていて、私たちの視点にとても近いようすがよく判ると思う。また、緑の円も若干だけ背景から浮かび上がっているようすも明瞭にはっきりと浮かび上がっている。

 というわけで、「巨乳ビジョン」は平面画像から奥行き情報を再構成できることを確認した上で、問題のバスト画像で確認してみたい。サンプル画像として、"3DFeminine Photo Gallery"というページ中にあった画像を縮小したものを用い、先程と同じようにCooperativeStereo Visionアルゴリズムによりにより、奥行き情報を再構成してみたものが次のグラフになる。
 

女性のバスト写真二枚から
Cooperative Stereo Visionアルゴリズムにより
奥行き情報を再構成してみたもの

 見事に「二つの胸のふくらみ」(C.魔女っ子メグちゃん)が浮かび上がるのだ。思わず、シャランラシャランラヘイヘヘイと歌いたくなるほどである。このように、二枚の角度が異なる画像さえあれば、この「巨乳ビジョンは」バストの大きさが判るのである。

 しかも、このバストの高さグラフにオリジナルの写真をマッピングしてみたりなんかすると、もう大変である。リアリティ満点で色んな角度からグリグリ眺めたりすることすらできるのである。カップのサイズ寄せて上げているようすもぜ〜んぶ知ることができるのである。
 

 

 …し・しかし、である。これはあまりに強力すぎるのである。あまりにこの「巨乳ビジョン」はスゴすぎてシャレにならないのだ。この「巨乳ビジョン」が量産された日には、邪な心を持つヤカラによって悪用されかねないし、善良な心を持つものであっても、全てオッパイ星人扱いされかねないのである。

 例えば、こんな風に巨乳ビジョンを装着した地球人でさえ、何かちょっとスケベなオッパイ星人にしか思えなかったりするに違いないのだ。恐るべし、巨乳ビジョンなのである。と・とはいえ、やはりこれでは正義の味方の武器としては使いものにはならない。これでは、絶対に悪用されて正義の武器どころか悪の象徴となってしまうかもしれないのだ…。
 

巨乳ビジョンを装着した地球人
彼は今何を考えているのだろうか?
そして、彼の手つきが意味するものは!?

 ワタシと同じく、専守防衛仲間だったハズの自衛隊のイージス艦の名前の由来は、ギリシャ神話の最高神ゼウスの娘が持つ「全ての邪悪を払う盾」イージスである。そのイージスの盾には、見るもの全てを石に変えるメデューサの首がはめ込まれている。
 イージスの楯はメデューサの首により見るもの全てを石に変えるが、この「巨乳ビジョン」は見るバスト全ての形を明らかにしてしまい、そして、見るもの全てをオッパイ星人に変えてしまうのである。あぁ、恐ろしきかな「巨乳ビジョン」…。哀しきかな、「巨乳ビジョン」…。

 というわけで、ワタシはこのあまりに危険な最終兵器「巨乳ビジョン」を封印することにし、武器を捨てて街へ出て、改めてワタシの素手で「オッパイ星人に狙われそうな可哀相な子羊(巨乳)」達を見つけだし救おうと誓ったのであった。

2002-01-29[n年前へ]

「モーニング娘。」を立体にするのだ! 

時間と空間の遠近感ソフトを作る

 京都にいた頃、いくつかのホテルでバイトしたことがあった。都ホテル、鴨川沿いのホテル、あるいは、蹴上の辺りにあるホテルなどでベッドメイクやら、会場設営のバイトなどをした。有数の観光地である京都の街中はもう色んな旅館やホテルが数多くあふれているのだから、そんなバイト口は一年を通してあった。

 そのバイトに行った色んな旅館の中でも、京都へ行ってすぐにバイトしたホテルは凄かった。その旅館の入り口には「暖簾」がかかっていた。京都の旅館なら、入り口に暖簾がかかっているのは当たり前じゃないの、と言われるかもしれない。しかし、その旅館の「暖簾」はその旅館への車の出入り口に設置してあったのである。

 ニホンに憧れ、"A Book of Five Rings"に憧れるスティーブン・セガールのような外国人であれば、「日本人は車ですら暖簾をくぐり、それほどまでに日本人にとって礼節とは大切なものなのデスカ!」と感嘆するかもしれないが、それは少々違う。何しろ、その旅館、いやホテルは名神高速の京都インターチェンジのすぐ横にあった。つまりは、京都インターチェンジの周りのホテル街にあったのである。

 いや、ここまで書いても、先のニホンに憧れる外国人なら(今でもそんな人がいたら良いのだが…)、「なるほどなるほど、高速道路と言えば江戸時代の街道デス。ツマ〜リ、高速のインター周りのホテル街は江戸時代で言えば街道の宿場町なのデスネ!」とやはり感嘆するかもしれない。そんな感嘆と感動が的を射ているかどうかはともかく、とにもかくにも一風変わったバイト先だった。

 そして、そのバイト先にはいくつも私の好奇心をくすぐるものがあったのだが、そのうちの一つが「立体テレビ」だった。その旅館ホテルには、離れのような作りの特別室という部屋が二部屋ほどあり、特別室には「立体テレビ」なるものが設置してあったのである。といっても、その「立体テレビ」は何か部品が足りないのか、あるいは二十四時間故障中だったのかよく判らないのだけれど、とにかくその「立体テレビ」が動いてるのを見たことはなかった。動いているのを見たことが無く、どんなものだか判らなかったから、なおさら想像力を刺激したのである。もちろん、そのホテルの業種がらどんな番組がテレビから飛び出してくるのかも興味があったのも確かだ。
 

 で、先週どこかで流れていた「モーニング娘。」の音楽を聞いて、何故かその「立体テレビ」のことを思い出した。何故かは判らないのだけれど、思い出してしまったのだからしょうがない。しょうがないから、そんな「立体テレビ」を自分で作ってみることにした。といっても、立体テレビで表示するための特殊なビデオ素材などしか見ることができないのもツマラナイ話なので、普通のビデオ(= 2Dビデオ)を勝手に立体化して、その立体ビデオを見ることができるようなものを作ってみることにした。

 ビデオの立体化の原理はとても簡単、単に「時間軸と空間軸を少しばかりシャッフルするだけ」である。

人間が視覚から立体感を得る原因の一つが左右の目で見る景色の違い、すなわち両眼の視差である。その両眼視差を利用して、立体感を付加してやるのである。つまり、動画の各瞬間の画像を右目用と左目用の二つの画像に分けて、その二つの画像に少しばかり差をつけてやることで、両眼視差を人工的に与えれば良いのである。

といっても、「動画の中のある瞬間の画像」を右目用と左目用に分けた二つの画像の間に「少しばかりの差をつける」といっても、そんな画像を作るのはそんなに簡単ではない。そこで、ちょっとこんな風に考えてみるのだ。「動画の中のある瞬間の画像」と「少しだけ差がある画像」はどこかにないだろうか?もし、そんな画像が何処かにあるならば、その画像をちょっとばかり拝借すれば良いだけの話なのである。そんな画像は果たしてあるのだろうか?

 そう、そんな画像はとても近くにある。答えは簡単、「動画の中のある瞬間の画像」の「少しだけ時間的に差がある瞬間の画像」が探している答えなのである。「動画の中のある瞬間の画像」と「その次の瞬間の画像」は「ほんの少しだけ色々な位置が違ってはいるけれど、だけど全体的にはほとんど同じような画像」なのである。そんな画像を両眼で別々に眺めてみれば、適度の両眼視差により立体感を得ることができるハズなのである。

 というわけで、普通の動画像に対して、「時間的に前後に並んだ二つの画像を空間的に左右に並べて」、平行法で眺める動画像に変換するソフトウェアを作ってみた。それが、これperspective.exeである。もちろん、いつものように動作保証一切無しのアルファ版ソフトだ。

perspective.exeの動作画面は下のようになる。"File Open"で動画像を開いて、"Make3D File"で立体動画像を作成・保存することができる。
 
perspective.exeの動作画面

例えば、まずは素材として以前作成した「モンローウォークの動画」を再生している画像を下に示してみよう。Real形式で圧縮したオリジナル動画はこちら(original.rm 9kB )である。
 

モンローウォークの動画のワンシーン

この動画をこのperspective.exeで処理するとあらあら不思議、なんと下のように、二つの画像が並んだ「平行法で眺める立体動画像」が作成されるのである。ちなみに、この立体化した動画像のreal形式動画像はこちら(perspective.rm 11kB )である。
 

上の動画を立体化した動画の1シーン

 この交差法で眺める動画像を上手く立体視するコツは、遠くを眺めるようにして、ぼんやりと動画像を眺めてみれば良いだろう。そうすると、立体動画像で眺めるモンローウォーク(半裸)を眺めることができるハズだ。
 

 ところで、先のこのソフトの立体化の原理を読んで、「いや、それだと動きによってはとても不自然になるに違いない」という人も数多くいることだろう。そんなアナタのその理屈は非常に正しい、と思う。しかし、まずは動画像を変換して自分の目で確かめてみてもらいたい。人間の感覚は時にとても簡単に騙されるのである。いや、あるいは人間の想像力の処理がスゴイのかもしれない。とにかく、本来不自然なはずの「立体動画像」も実際に眺めてみるとかなり自然な立体感を感じさせるのである。

というわけで、この原理の是非は次回以降に回すとして、まずはこのperspectiveを使って色々な動画像を立体化して眺めてみるべきと、私も色々な動画像を眺めてみたわけなのだけれど、試しに下のような「モーニング娘。」のライブビデオなんかも立体化してみた。
 

飛び出す「モーニング娘。」

 で、この立体動画像を眺めながら、ちょっと私は考え込んでしまった。動画像中を走り回る「モーニング娘。」のメンバー達が手の届きそうな近くへ飛び出して見えたり、またあるいは、手の届かない遙か向こうの後ろにふと見えたりするのだ。それは確かに遠近感のある立体画像なのではあるが、ただの遠近感のある立体動画というわけだけでもないような気がしたのである。

 何しろ、その走り回り、飛び出したりするメンバー達が今はもう実は「モーニング娘。」ではなかったりするのだ。何かそんなことを考えると、今眺めている動画像の奥行きが単に空間的な奥行きだけではなくて、何か時間的な奥行きを感じさせるような気がしたのである。時間的な距離を何か感じさせるような気がしたのである。

 そう、そういえばこのperspective.exeが作る立体動画像は「時間的に前後に並んだ二つの画像を空間的に左右に並べて」みたものであった。つまりは、ビデオテープに記録された時間軸と空間軸をほんの少しばかりシャッフルすることで、遠近感を作り出しているのである。だから、perspective.exeが作る遠近感・奥行きは、実は「時間的な遠近感・奥行き」なのである。それを人間が勝手に「空間的な遠近感・奥行き」であるかのように錯覚していただけなのである。

 だから、私がこの「モーニング娘。」の立体動画を眺めて、そしてもういなくなったメンバーなどを眺めて、何か時間的な奥行きを感じたりしても、それも実は結構正しかったりするのかもなぁ、なんて思ったのである。そんなことを考えながら辞書を引くと、遠近法を指す"perspective"は同時に「時間の向こう、見通し,展望,前途」なんてふうにも書いてあって、それを読みながら、ふ〜ん…としみじみ納得してみたりしたのである。
 

2002-07-03[n年前へ]

あなたの声を聞きたい。 

「たった五文字」の読唇術

 東京駅から、いつも22:46時発三島行きの最終の新幹線に乗る。最終の新幹線だけが停まっているホームは、何だかいつも少し寂しい。ホームを歩いている人の数も少ないし、列車の中で席に座っている人達もほとんどが眠っているが、ぼんやりとしていてとても静かだ。

 そんな静かな新幹線のホームを、酔い覚ましの缶ジュースを飲みながら歩いていると、たまに「つかの間の別れ」をしのんでいる恋人達を見かける。ホームの柱の影で静かに話をしている二人もいれば、ほとんど何も喋っていないような二人もいる。どちらにしても、二人で見つめ合っていて、それをはたから眺めている私がいることなんか気づくはずもない。
 

最終のこだまの中から。

 そして、列車の発車を知らせるベルが鳴り響くと、多くの場合恋人達はドアのところで佇んで辛そうに言葉を交わしている。とはいえ、夜も遅いのにも関わらずベルの音はやはりとてもうるさい。だから、きっと相手の声がよく聞こえないのだろう。まるで耳の聞こえないもの同士が読唇術を試みるかのように、相手の唇の動きを見つめ続けている。あるいはもしかしたら、近くを歩く私などを意識して、とても小さい声で話をしているのかもしれない。

 どちらにしても、ベルが鳴りやんでドアが閉まった後は、相手の声が聞こえるはずもないから、相手の唇の動きだけを手がかりにして、相手を見つめながら言葉を交わしている。近くにいる私からはよく判らないけれど、二人の間では、相手の唇の動きだけで相手が何を言っているのかが判るのだろう。その二人にしか判らないことだろうけれど、きっとそうに違いない。そんな景色を眺めながら、ふとこんなことを思いついた。
 

 何かを喋る人達の唇の動きをPCに繋がったビデオカメラで撮影して、その画面を解析して「相手が何を伝えようとしているか」を調べるソフトがあれば、読心術とは言わないまでも私達は読唇術を身につけることになる。相手の唇の動きさえ判れば、相手の言葉が聞こえるようになる。新幹線のホームで読唇術で心を伝え合う恋人達のように、私達も相手の声が聞こえるようになる。

 そこで、ビデオカメラの画面の中から唇の形を検出して、何を喋っているのか、何を喋ろうとしているのかをリアルタイムに検出する読唇術ソフトウェアを作ってみた。とはいえ、一晩で作ったソフトだから、たった五文字の母音を検出できるだけだ。SPEAKINGMOUTHで眺めた「唇の動き」と自分の唇の動きを参考にして、相手の唇の動きから「五文字の母音」つまりア・イ・ウ・エ・オを読みとるだけだ。子音の判定は難しいけれど、日本語のように必ず母音を伴う言葉であれば、どの母音かが判るだけでも、相手の言葉を想像するためのとても大きな手がかりになるだろう。
 

SPEAKINGMOUTHで眺める「唇の動き」





 作ったソフトの名前はLip-reading、いつものように数回動かしただけの大雑把なソフトだけれど、これを使えば新幹線のドアのガラス越しに言葉を交わす恋人達のように読唇術を身につけることがきっとできるかもしれない。

動作画面は下のようになる。まずは、PCにビデオカメラを繋げて、そして相手の唇が画面の中央にくるようにビデオカメラを向ける。そうしたら、Startボタンでキャプチャーを開始して、右下の三つのスライダーを調節して、唇が白く浮かぶようにする。そうすれば、左下の画面で「相手が何を伝えようとしているか」が判る。相手の声が聞こえなくても、相手が何を伝えようとしているのかが判るのだ。これは、そんな風に相手の唇を見つめながら読唇術をするソフトウェアだ。
 
lipreadingの動作画面
(ウの形に唇を動かしてみたところ)

 そういえば、いつも私が眺める景色は東京発三島行きの最終こだまが停まっている東京駅のプラットホームだけれど、この間はそれとは逆の風景を眺めた。私は三島駅のホームにいて、ちょうど最終の東京駅行き22:34発のこだまが三島を出るところだった。

 そこにはやはり、こだまのドア越しに唇で言葉を交わす二人がいた。この二人も相手の唇だけを見つめているように見えた。私には二人の声は聞こえなかったけれど、きっと何かの言葉を交わしていたのだろうと思う。ゆっくり新幹線が動き出している時にも、ホームに立っていた方が何歩かこだまに向かって歩きながら、やっぱりそれでも言葉を交わしていたようにに見えた。

 そんな景色を頭に浮かべながら、次のようなことを考えた。今晩作ったこのlipreadingは、「たった五文字」の

「アイウエオ」
しか相手の唇の動きから読みとることができない。だけど、きっとあの恋人達が交わしてる唇の動きだって、きっとそんな「ほんの五文字」なのかもしれないと、ふと思ったりする。きっと、そうなのかもしれない、と思ったりする。
 
「アイシテル?」

「アイシテル。」

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