2010-03-26[n年前へ]
■Photoshop CS5の不要部除去機能とGIMPで使うResynthesizer
「Photoshop CS5の新機能「Content-Aware Fill」がスゴい」経由で、「Photoshop CS5の不要部除去機能 "Content-Aware Fill Sneak Peek"」と「GIMPで使うResynthesizer "GIMP smart selection removal (resynthesizer)"」を眺める。
"Adobe Photoshop CS5 - PatchMatch - www.CS5.org"
2016-11-15[n年前へ]
■空に浮かぶ雲の大きさから、雲の高さや地球の大きさを推定する方法
青空に浮かぶ白い雲を眺めながら、こんなことを訊かれたことがある。
「たとえば、南の空に浮かぶ、天頂からちょうど40度くらいの角度の雲までの距離や高さを、眺めた景色から計算することができる?」
雲の高さやその雲までの距離、それらを一体どうやったら知ることができる?という質問だ。もちろん、気象に詳しい人なら、たとえば「あれはひつじ雲で、近くの山の高さと比較すると、多分高さは3千メートルくらいだろう」という具合で、雲の種類や見え方から、雲の高さを知ることができるかもしれない。そして、雲の高さがわかってしまえば、雲までの距離を計算するための式は幾何的に導出することができる。それは、雲の高さをr、天頂からの角度をαとし、地球の半径6371kmをRとしたこんな式だ。
実際のところ、雲の高さや距離は、どちらか片方がわかってしまえば、もう片方は自動的に求まる性質のものだ。前述の「雲までの距離」を計算するための式は、雲の高さr、雲の天頂からの角度α、地球の半径Rという3つのパラメータを用いたものだから、天頂角度α、地球半径Rがわかっている限りは、雲の高さか雲間での距離のどちらか片方がわかってしまえば、残りひとつの未知数は単純に計算することができる。たとえば、雲の高さを地上から2000mに固定すると、雲が見える方向(天頂からの角度)に応じた雲までの距離は、次のようなグラフとして描くことができる。
けれど残念なことに、その時のぼくには、雲や気象に関する知識がほとんど無かったので、「一体どうすれば雲の高さや距離を知ることができるのだろう?」と考えながら、ただ黙っていた。
目の前の景色から雲の高さと距離を知る方法を尋ねられてから何年も経った今日、バンコクの空に浮かぶ雲を眺めながら、こんな「空に浮かぶ雲の高さと距離を推定する方法」をふと思いついた。それは、こんな考え方だ。
雨季から乾季を迎えたバンコクの青空には多くの「わた雲」が浮かんでいる。このわた雲たちはどれも同じ物理現象の結果生じたもので、いずれもとても安定な状態で空に浮かんでいるのだ。だとしたら、きっと似たような大きさをしていると考えるのが自然だろう。そしてまた、大気気象的には、どの雲の底面も地上からの高さはほぼ同じになっているはずだ。
そして、雲の「天頂からの角度」と「見た目の大きさ」は、眺めた景色から知ることができる。だとすれば、雲までの距離は雲の見た目の大きさに(比例係数をsとして)反比例しているという関係を使って、上述の式に、雲の「見た目の大きさと天頂からの角度」を既知(わかっている数値)として代入すれば、雲の高さrと比例係数sを2未知数とした方程式ができあがる。それはつまり、距離が異なる2個以上の雲の大きさを観察して、その雲の大きさや場所を代入した連立方程式を解けば、雲の高さや距離がわかる、ということになる。
ためしに、バンコクで眺めた雲の位置と大きさの関係をデジカメ撮影画像から算出して、散布図にしたのが下左図だ。天頂から離れた「遠い」雲ほど小さいという単純な関係だ。この雲の位置と大きさを観察した関係から、雲の高さrと比例係数sを「手動で」フィッティングしてみると、たとえば、雲の(底面)高さが500mの場合で、下右図のような対応となる。この数日が真実と近いのか・遠いのかはわからないけれど、こんな風に、原理的には、大きさが同じ雲の位置や大きさがどのように見えるかを調べてやれば、雲の高さや雲までの距離は知ることができる…かもしれない。
…「原理的には」「かもしれない」と書いたのは、前述の式は、雲の高さrを求めるには精度が低い式だからだ。式自体は「”地球の半径+雲の高さ”を半径とする円」と「雲を見上げた視線の直線」の交点から導かれる方程式で、雲の高さが地球半径に比べて遙かに小さいために、精度良く雲の高さや雲間での距離を求めることは、おそらく難しいからだ。
地球の半径に比べて雲の高さが遙かに小さいから、この方程式を使っても雲の高さを求められない?…だとしたら、頭上から地平線近くまで散らばる雲の大きさとこの連立方程式を使って地球半径を計算してみるのはどうだろう?この方程式は、雲の高さr、雲の天頂からの角度α、地球の半径Rという3つのパラメータを結びつけるものだから、たとえば「雲の天頂からの角度αは見たままに、わた雲の高さrは気象の知識や周りの山などの比較から地上500mとする」というように考えれば、あとは雲の大きさから地球半径Rを求めることができるかもしれない。
ためしに、上に使ったデータで最小二乗フィッティングを行ってみると、地球半径R=約6万2千kmという結果になった。教科書に載っている地球の半径約6千3百kmと比べると、10倍ほども大きい巨大な地球になってしまった。良い結果を得ることができたとは全く言えない。
その理由は、地平線近くの遠い雲といっても、自分を中心にした数十km程度の距離しかないので、その見え方から直径にして1万2千kmもの地球の大きさを計算するにはとても無理があるからだ。
けれど、青空に広がる雲を眺め、雲の位置や大きさがどんな風に見えるかを調べて、地球の大きさを求めてみることができるかもしれないと考えると、何だかとてもワクワクさせられる気がする。