hirax.net::inside out

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2016年12月 を読む << 2017年1月 を読む >> 2017年2月 を読む

2017-01-15[n年前へ]

データで眺める誕生日、生まれる人が少ないのは「土日祝日と○月×日」  share on Tumblr 

 データで眺める誕生日、生まれる人が少ないのは「土日祝日と○月×日」を書いた。人が生まれる誕生日時は、平均的に眺めてみれば、比較的精度良くコントロールされているものだ。

 データで眺めてみると、生まれる人が少ない「土日祝日と4月1日」と比べて、普通の平日は2割〜3割くらい生まれる人が多くなっています。誕生日はその年のカレンダーと連動しているので、誕生した人が多い日・少ない日は、年によって偏りが生まれます。ちなみに、休みとして月日がいつも決まっている祝日は、いつの年であっても「生まれた人は少ない」ということになるので、色々な年で平均してみてもやはり誕生日には偏りがあることになります。

2017-01-14[n年前へ]

ライトフィールドプリント最適化のためのBlenderシミュレーション その1  share on Tumblr 

 いくつもの視点から見た映像から視点変化に応じた見え方を再現するライトフィールド・プリント(インテグラル・フォトグラフィー)を作るために、Blender を使った透明シートへの印刷シミュレーションをしながら、効率的な印刷方法に挑戦してみた。

 どんな場合でも汎用的に使うことができる一般的な画像に対して、視点変化に応じた見え方を再現しようとすると、偏光素子を重ねるなど特殊な方法を使うのでなければ、視野を制限するマスク(アパーチャ)に相当する層を上にプリントした上で、視野変化に応じて見える光(色)をさらにその下にプリントすることになりそうだが、そうすると、次の問題が生じる。変角解像度を両立させるためにはマスク(アパーチャ)を小さくしたくなるが、そうすると画像が暗くなる。

 この問題に対して最適解を出そうとすると、マスクの口径(アパーチャー)が持つ周波数特性を、視点変化に対する見え方変化の周波数特性と一致させたくなる。つまり、もしも、視点が変化しても見え方の変化が小さい方向があれば、その方向に対してはマスクの口径(アパーチャー)を大きくし(周波数特性を鈍くし)、視点変化に対して見え方が敏感に変わる方向があれば、その方向に対しての口径を狭くしたくなる。つまり、高周波が鈍ることを防ぎたくなる。

 というわけで、ライトフィールドプリントの上面に配置したマスク(アパーチャ−)形状を、視点変化に対する見え方の変化(ライトフィールド勾配)に連動した方向性を持つ楕円形状にした画像生成をするPythonコードを書いてみた。そして、スタンフォードの The (New) Stanford Light Field Archiveをサンプル画像として使い、Blenderでライトフィールドプリントのシミュレーションをしてみたのが下の動画だ。

 眺めてみると、マスクサイズを固定とした範囲では、明度と変角解像度という相反する項目の両立が改善したような気もするが、空間方向変化(空間解像度)と連成した処理になっていないこともあり、まだまだ修正すべき項目が多い。…というわけで、次は、変角解像度と空間解像度の最適化を考えてみることにしよう。

2017-01-08[n年前へ]

ネット画像から有名人の個人情報(静脈パターン)を可視化してみよう!?  share on Tumblr 

 SNSなど投稿した「ピースマークなどの指写真」から指紋を推定する記事「指紋がネットで狙われている! 手の画像は悪用恐れ… 国立情報学研が新技術の実用化目指す」を読みました。写真の解像度が高ければ、指紋の抽出は確かにできそうです。もっとも、2017年時点の、よくある撮影解像度やアップロード画像解像度を考えると、指紋抽出はまだ困難な気がします。

 撮影の解像度だけを考えれば、皮膚内での波長毎の吸収・散乱特性の違いによる静脈可視化の方が楽かもしれません。掌を走る静脈は、その模様が人ごとに違うため、個人認証機器に多く使われたりします。そこで、各波長(RGB画像)の特性の違いを利用して、静脈推定をしてみることにしました。

 まずはネット上から掌が映った写真を探してみることにします。有名人の掌が映った写真はとても多く、観客に手を振る写真・演説中に両手の掌を開いて聴衆に見せている写真など、さまざまなパターンの画像が手に入ります。

 そして、静脈を可視化するために色の違いを利用するとなると、重要なことは「圧縮率が低い画像を探す」ということです。なぜかというと、人の視覚系は明度に対しては敏感ですが、色の違いに対しては解像力が低いため、多くの画像ファイルでは色情報が圧縮され低解像度になっているからです。

 圧縮率が低く・掌が映った有名人画像を探してみると、まず最初に見つかったのが綾瀬はるかさんの写真です(下左図)。この画像に「静脈部分を抽出する画像処理」を掛けてみると、皮膚下を走る静脈が浮かび上がってきます(下右図)。

 静脈模様を可視化する用途には、ネットにアップロードされている画像では圧縮率が問題になります。しかし、自分で撮影する画像なら、撮影さえすれば、圧縮が掛かっていない画像が手に入ります。…ということは、個人情報を狙われやすい有名人の人は、静脈模様を覆い隠す「静脈盗撮防止用のコンシーラー」などが必需品になるかもしれません。

2016-12-30[n年前へ]

「π r2(パイアール2乗)=面積」式は、ひいらぎ愛 さんの乳曲率に適用可能か?問題  share on Tumblr 

 「面積表示のタイトルがいいでしょ」というtweetに思わず目を引かれて、紹介文を眺めた途端に思わず笑ってしまいました。

「魅惑の巨大乳輪 ひいらぎ愛 π r2(パイアール2乗)=面積176cm2」巨大乳輪に特化した新シリーズです。第一弾は乳輪直径15cm、面積176cm2の…
そして、ふと考えたのです。
「乳というものは、多くの場合は立体的な存在である。少なくとも、ひいらぎ愛さんの場合は、超立体的なものに違いない。それなのに、面積計算を2次元平面上の公式を使って良いものだろうか?」
そこで、果たしてπ r2(パイアール2乗)=面積176cm2で良いのかどうか、軽く計算をしてみることにしました。

 ひいらぎ愛さんは、トップバストがバスト156cmでOカップということです。ということは、以前書いた おっぱい解析向けライブラリを使うと、彼女のトップバストに対してアンダーパストは45cm短い111cmであることがわかります。さらに、その乳を半球で近似した時の半径は30cmであると計算されます。

 乳を半球で近似すると、乳輪の面積は「半球を乳輪の大きさである立体角θで切り取った領域の表面積」となり、式で書くと、

 2π r^2 (1- Cos θ)
となります。立体角θは、「乳輪直径15cm」というのが、表面に沿って長さを計ったものだとすると、乳輪の立体角θは約29度です。すると、その乳輪の表面積は172平方cmとなります。π r2(パイアール2乗)から計算される177平方cmとは、約5平方cmほど違います。最初の2桁だけを比べれば、曲率を考慮してもしなくても全く同じ数値ですから、その差は十分小さいのかもしれません。

 「π r2(パイアール2乗)=面積」式は、ひいらぎ愛 さんの乳曲率に適用可能か?問題を解決するためには、その乳輪の直径だけでなく「円周の長さを計る」などの方法により乳表面の曲率を求める、という作戦が考えられます。それは、今後の課題としておこうかと思ます。

2016-12-23[n年前へ]

Python/OpenCVで画像多重解像度解析コードを書いてみる  share on Tumblr 

 多重解像度解析…といっても直交基底に分解するというような話ではなくて、単に各周波数帯の特性がどの程度含まれるかを眺めるといった用途なら(つまり、ガボール変換やSTFTを掛ける感じの程度の用途なら)、Python/OpenCVを使って十数行で書けるかも?と思い書いてみました。もちろん、実装は簡単第一最優先!というわけで、ガウシアンフィルタ差分で2次元のバンドパスを作成し、それを周波数軸で重ねて眺めてみるというくらいの話です。

 実際に書いてみたら、ポスト処理含めて約20行くらいになりました。超入門的な画像処理コードですが、1次元〜2次元の多重解像度解析や周波数解析を行うことは意外に多いような気もするので、適当に貼り付けておくことにします。*


*画像処理クラスタからのコメント:
 ・マルチスケールで眺めるなら、DCゲイン1同士のガウシアン差分をとり、そのL2ノルムを1に正規化しすべし。
 ・周波数軸は等比的にした上で、ボリューム的表示も等比的比率で重ねたい。

import numpy as np
import cv2
from matplotlib import pyplot as plt

def DOG(img, s, r):
    img2=img.astype('uint16')
    img2=img2*128+32767
    gs = cv2.GaussianBlur(img2,(0, 0), s)
    gl = cv2.GaussianBlur(img2,(0, 0), s*r)
    return cv2.absdiff(gs, gl)

img = cv2.imread("sample2.jpg",0 )
(h,w)=img.shape
pts1 = np.float32([[0,0],[w,0],[w,h],[0,h]])
pts2 = np.float32([[0,h*1/4],[w*3/4,h*1/4],
                   [w,h*3/4],[w*1/4,h*3/4]])
M = cv2.getPerspectiveTransform(pts1,pts2)
baseImg = cv2.warpPerspective(
    img.astype('uint16'),M,(w,h))

for i in range(100,5,-10):
    pts1 = np.float32([[0,0],[w,0],[w,h],[0,h]])
    pts2 = np.float32([[0+i,h*1/4-i],
    [w*3/4+i,h*1/4-i],[w+i,h*3/4-i],[w*1/4+i,h*3/4-i]])
    M = cv2.getPerspectiveTransform(pts1,pts2)
    img2 = cv2.warpPerspective(DOG(img, 100, 1.05),M,(w,h))
    baseImg = cv2.addWeighted(baseImg, 0.9, img2, 0.3, 0)

plt.figure(figsize=(6,6))
plt.imshow(np.array(baseImg)) 
plt.autoscale(False)

Python/OpenCVで画像多重解像度解析コードを書いてみる






2016-12-14[n年前へ]

「(泡が下へ沈んでいく)ギネスカスケード」を高速度撮影してみよう!?  share on Tumblr 

 続々「(泡が下へ沈んでいく)ギネスカスケード」を近赤外線で撮影してみよう!?過去ビール記事で書いたように、上が広がったグラスにビールを注ぎ、ビールの上面に溜まった泡を眺めると、きめ細やかにできあがった泡が下へ下へと下降しているさまが見えます。泡と言えば「上に浮かび上がっていく」ばかりに思えますが、いくつかの条件が重なると、グラスの中で「下へひたすら沈んでいく」ビールの泡を見ることができます。

 そんな「下降を続けるビールの泡」のようすを細かく確認するために、今日は高速度撮影を行っててみました。…といっても、やったことは、iPhoneに顕微鏡アタッチメントを付けて、標準機能の高速撮影を行ってみただけのことです。

 高速度撮影した映像を眺めてみると、泡(Bubble)というより遙かに密度が高く、むしろ泡(Foam)という言葉の方が適切かもしれない状態の中で、大きな泡は緩やかに下降して・小さな泡は隙間へと素早く動きながら速い速度で下降していることがわかります。ちなみに、この高速度撮影を行った時には、ビールグラスの中では「泡部分」と「ビール液体(だけがある部分)」は分離している状態になっています。

 これまでコンピュータ流体シミュレーションから予想されている現象は、グラス中央で浮かび上がる泡がグラス内部にビールの対流を生み、グラフの最外側境界で下降していくビールの流れに沿って泡が下降していくように見える、というものでした。しかし、ビールと泡がすでに分離したグラスの中で、泡が下降していくように見えるさまを眺めていると、もう少し違う説明も必要であるようにも思えてきます。

2016-12-13[n年前へ]

街通りを歩きながら…列車中で…似合う「飲料類」を決める振動動特性のヒミツ  share on Tumblr 

 街の通りを歩きながら、あるいは列車の中で1人飲み物を飲みたくなることがある。時にビール、あるいはコーヒー、その時の気分に応じた何かを手に持つカップに注いで飲んでみたくなる。とはいえ、カップから飲み物がこぼれたりするのはイヤだ…という人は、この論文  "Damping of liquid sloshing by foams: from everyday observations to liquid transport" を読んでみると面白いと思う。

 場所や状況に応じた飲み物を、その時の気分だけではなくて、その場所の「振動や揺れ」に応じて選びたい!と考える人に役立つこの論文は、飲み物の上面に浮かぶ「泡(foam)」が、どのように飲み物自体の揺れ・振動を抑える効果があるかを示している。液上面に泡がわずか数ミリメートルあるだけで、液面の揺れが数分の1に治まるようにすることができる現象解析をした論文だ。

 石けんや洗濯洗剤で「泡のかたまり」を作り、息を吹きかけたり・指で突き動かしたりすると、ブルブル震えて大きく揺れる。けれど、それと同時に、揺れがだんだん治まっていくことにも気付かされる。それはもちろん、たくさんの泡が「動き」を妨げるよう・緩やかにするよう抵抗として働くからだ。

 揺れが激しいところでは、きめ細やかな泡が厚く重なるギネスビールが似合う…とか、もう少し揺れが治まればピルスナービールが似合う…とか、(泡を持たない)コーヒーでは揺れが少ない落ち着いた場所が似合うとか、そんなことがわかる論文は、読んでみると面白いと思います。

街通りを歩きながら…列車中で…似合う「飲料類」を決める振動動特性のヒミツ






2016-12-12[n年前へ]

「君の名は。」画風変換アプリをPython/OpenCVで書いてみよう! 〜意外に空変換は簡単? 編〜  share on Tumblr 

 先月下旬頃、映画「君の名は。」画風変換アプリEverfilterが流行っていた。軽く遊んでみた印象は、「空領域抽出処理に破綻が少なく(適切で)、その処理はおそらく普通の枯れた方法を使って、画面の4端辺から領域判定を独立にかけてる」ように感じられた。

 そこで、普通にやりそうなコードを書いてみたら、空領域抽出がどのくらいの品質が得られるか、確かめてみることにした。手っ取り早く試してみたいというわけで、Python/OpenCVコードを書いてみた。このコードは、入力画像と(入れ替え用の)空画像を読み込んで、グラフカットアルゴリズムが実装されたOpenCVのGrabCut関数を使い、(空がある程度の面積を占めていそうな)画面上半分の領域を対象として空領域を抽出し、その領域に空を合成するという処理を行うものだ。その処理例が、たとえば下に貼り付けた「バンコクの昼風景を夜空の下の街に入れ替えた画像」のようになる(上が入力画像、下が出力画像)。

 コードを書いて・試してみた印象は、OpenCVのGrabCut関数を使う程度でも、十分破綻の少ない空領域抽出を行うことができそうで、枯れた(枯れつつある)技術は便利だ!というものだ。実際のところ、「君の名は。」画風変換アプリ程度であれば、使用データ群(入れ替え用画像群)抽出処理も含めて、数日掛からず作ってしまいそうな気がする。

import cv2
import numpy as np

img = cv2.imread("bangkok1s.jpg")
mask = np.zeros(img.shape[:2],np.uint8)
skyimg = cv2.resize(cv2.imread("Starsinthesky.jpg"),
                         img.shape[1::-1]) 
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
rect = (0,0,img.shape[1],round(img.shape[0]*0.7))
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,
                      50,cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
mask2 = cv2.blur(mask2,(5,5))
img2 = img*(1-mask2[:,:,np.newaxis])
skyimg = skyimg*mask2[:,:,np.newaxis]
img3 = cv2.addWeighted(skyimg, 1, img2, 1, 2.5)
cv2.imwrite("out.jpg",img3)
cv2.imshow("preview",img3)
cv2.waitKey()

「君の名は。」画風変換アプリをPython/OpenCVで書いてみよう! 〜意外に空変換は簡単? 編〜「君の名は。」画風変換アプリをPython/OpenCVで書いてみよう! 〜意外に空変換は簡単? 編〜






2016-12-11[n年前へ]

「平面的に見える満月」と「立体的な月蝕」の秘密  share on Tumblr 

 太陽と正反対の空に浮かぶ満月は、とても平面的に見える。まるで、真っ平らな円を切り抜いて、夜空に貼り付けたように見える。白いピンポン球を手に持って、光を当てながら眺めたときのような、「中央近くは明るくて、周辺部分が滑らかに暗く落ち込む陰影が付いた、立体感ある見え方」にはならない。

 球の周りが徐々に暗くなる陰影は、物体表面に当たった光が、表面から外に帰っていく際に、周囲に等しく方向性を持たず返される時に生じる。そんな条件では、球の中心から端部までコサイン関数状の陰影が生じる。それでは、遙か古代に信じられていた平面状の月でなく、現実には3次元球体であるはずの月が陰影無く、真っ平らに見えてしまうのだろうか。

 その秘密は、月表面の反射特性にある。月の表面は、その表面を照らす光を、その光が発された方向へ返す性質があるからだ(Diffuse Reflections from Rough Surfaces )。満月の時、月を基準にすると、月を照らす太陽は地球の後ろにある。そして、月を照らす太陽と同じ側に浮かぶ地球から月を眺めると、月の表面反射特性は「陰影がほとんどない、真っ平らな平面状の満月」を空に浮かび上がらせることになる。

 自分を照らす光を、その光が発された方向へと返す再帰性反射と呼ばれる性質は、急峻な凹凸の表面形状や(交通標識などで使われる)透明ビーズ(やキャッツアイ)など、多くの材質で現れる。再帰性の反射性質が現れる理由は、たとえば、前者の急峻な凹凸形状の場合であれば、斜めから当たる光も、表面が急峻な凹凸形状*であれば、斜面(の法線方向に対し)垂直近くに光が当たり、その光が元来た方向へと帰って行きやすくなるからで、後者の透明ビーズでは、ビーン内部の反射により光が元いた場所へと戻っていくからだ。

 通常の満月がとても平面的に見える一方、同じ満月の時期に稀に訪れる皆既月蝕中の月は、とても立体的に見える。それは、太陽からの光を地球が遮りつつ、けれど地球大気が屈折させた太陽光は、月表面を見事なまでな立体的でグラデーション豊かな、名カメラマン顔負けの素晴らしいライティングとなる。

 次に日本で見ることができる皆既月蝕は2018年1月31日らしい。その満月を見ることができたなら、立体感溢れる月を眺めてみたいと思う。


*そうした形状の表面反射を表したモデルが、Oren–Nayarの反射モデル

「平面的に見える満月」と「立体的な月蝕」の秘密「平面的に見える満月」と「立体的な月蝕」の秘密「平面的に見える満月」と「立体的な月蝕」の秘密






2016-12-03[n年前へ]

グラス片手に楽しく読めるシャンパンに関する計算や可視化解説  share on Tumblr 

 普段はシャンパンなんて飲まないにも関わらず、クリスマスが近づくと風物詩的に少しだけ飲んでみたくなる。そんな時期に眺めてみるととても面白そうな「シャンパンに関する計算や可視化解説」があった。このConvective Mass Transfer in a Champagne Glass (Fabien Beaumont, Gérard Liger-Belair and Guillaume Polidori)が楽しいのは、登場する計算式が比較的簡単でわかりやすいということもあるけれど、何よりシャンパンが注がれたグラス内から立ち上る気泡を可視化したさまがとても美しく、その写真に思わず目を惹かれ、魅入られてしまうからだ。

 アルゴンレーザーでシート状に光を照射して、シャンパンガラス周りでレーザー光が屈折してしまわないように、シャンパンを入れたグラスを水槽中に浮かべ、グラスを切断するように横から当てたレーザー光で浮かび上がらせた泡の動きは、ただ眺めているだけでも不思議に心地良くなる。

グラス片手に楽しく読めるシャンパンに関する計算や可視化解説 グラス片手に楽しく読めるシャンパンに関する計算や可視化解説 






2016-11-15[n年前へ]

空に浮かぶ雲の大きさから、雲の高さや地球の大きさを推定する方法  share on Tumblr 

 青空に浮かぶ白い雲を眺めながら、こんなことを訊かれたことがある。

「たとえば、南の空に浮かぶ、天頂からちょうど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もの地球の大きさを計算するにはとても無理があるからだ。

 けれど、青空に広がる雲を眺め、雲の位置や大きさがどんな風に見えるかを調べて、地球の大きさを求めてみることができるかもしれないと考えると、何だかとてもワクワクさせられる気がする。

空に浮かぶ雲の大きさから、雲の高さや地球の大きさを推定する方法空に浮かぶ雲の大きさから、雲の高さや地球の大きさを推定する方法空に浮かぶ雲の大きさから、雲の高さや地球の大きさを推定する方法






2016-10-29[n年前へ]

「眼球の型をしたピンホールカメラ」模型を作ってみよう!?  share on Tumblr 

 小学生高学年向けのこどもたちに「見えないものを観てみよう!」という実験授業をするために、「眼球の型をしたピンホールカメラ」模型を作ってみました。…どういうことかというと、授業内容は「自分の目で見ることができる可視光な世界を踏まえつつ、それとは異なる非可視な電磁波で世界を眺めてみよう!」というものなのですが、そのためには「私たちが(人それぞれ)どんな風に世界を眺めているのか」を説明する必要があるのかもしれないと思い「見ることができるもの」を話すための補助資料を作ってみようと考えたわけです。

 そこで、以前作った全球ディスプレイを作るためのパーツを利用して、「眼球の型をしたピンホールカメラ」模型を作ってみました。直径30cmほどの白球体に、瞳形状の絞りを貼り付けて、さらに瞳中心にはレンズを固定して…網膜に映る映像を(眼球の後ろ側から)の眺めることができる模型を作ってみました。

 後は、この眼球模型に錐体や錯体を(人それぞれの比率や分布で)貼り付けてみると面白そうですが…そういう仕組みを見せるなら、この球体を全球ディスプレイとしてPCから表示する方が適切なのかもしれません。

「瞳型したピンホールカメラ」模型を作ってみよう!?「瞳型したピンホールカメラ」模型を作ってみよう!?






2016-10-23[n年前へ]

弾丸2泊1日的、香港経由の深圳アプローチ最適解!?  share on Tumblr 

 香港・日本間の片道航空券が380円(香港エクスプレス航空)で売られたりもしている今日この頃、その類のチケット、日本深夜発(早朝香港着)で、深夜香港発(早朝日本着)便で中国深圳に行ってきたので、「お金と時間」を最適化する「2016年度版、弾丸2泊1日的、香港経由の深圳アプローチ最適解」をメモしておきます。

 早朝香港着で「その時間に動いている交通手段も限られて」、さらにその当日にはもう日本に戻る「時間が貴重なコース」となると、香港空港からエアポートエクスプレス経由で香港市街に入り、MTR経由で深圳に入りたくなります。そして、このエアポートエクスプレス+MTR経由コースは、日帰り往復コースなら、コストパフォーマンスがとても良くなります。

 なぜかと言うと、150香港ドルで買うことができるオクトパスカード(Octopus Card 八達通)を使うと、

  1. オクトパスカードでエアポート・エクスプレスに乗車すると、同日の帰りのエアポート・エクスプレス乗車が無料
  2. エアポート・エクスプレスに乗車した後に1時間以内に乗継いだMTR線の料金が無料
  3. 九龍駅と香港駅から街中へ走る何種類もの無料シャトルバスに乗ることができる
  4. 九龍駅と香港駅にある航空会社カウンターでオクトパスカード使ってインタウン・チェックインすると、手続き直前に(オクトパスカードで)乗車したMTR料金が無料
というサービスがあるからです。このオクトパスカード3大サービスを使うと、「エアポートエクスプレスで香港空港→(たとえば)九龍駅・MTRに乗り換えて九龍駅→羅湖駅/羅湖駅→九龍駅、九龍駅でインタウンチェックイン/(シャトルバスで移動して)自由時間/九龍駅→香港空港」という経路を辿ることで、香港空港から深圳(香港側としては羅湖駅か落馬洲駅)までの往復運賃が、(たとえば上記の香港駅でエアポートエクスプレスとMTRの乗り換え/インタウンチェックインを行った場合なら)全てコミコミなんと90香港ドル(約1200円)でできることになるからです。

 弾丸2泊1日的、香港経由の深圳アプローチをする場合には、早朝に香港国際空港に着いたら、空港内セブンイレブンでオクトパスカードを購入し、(たとえば)九竜駅経由で深圳往復をして、九龍駅などでインタウンチェックインをした上で、無料シャトルバスで香港市街を堪能し、その後エアポートエクスプレスで香港国際空港に戻り、オクトパスカードを払い戻す(60香港ドル返却される)…というのが、もしかしたら最適解、かもしれません。

2016-10-16[n年前へ]

「現実にはありえない」照明状態の「道路沿いのパラドクス」を現実にしてみよう!?  share on Tumblr 

 アニメーションの作画をする際に、絵の印象を良くするために「現実にはありえない」照明状態で描くという「道路沿いのパラドクス」テクニックの話を面白く読みました。この話を読みながら、ふと「そんな不可能立体を杉原厚吉先生風に現実に作り出してみるのも面白いかも」と考え、雑に適当に「現実にはありえない」照明状態の「道路沿いのパラドクス」を現実にしてみました。

 雑に3Dラクガキした程度なので出来はイマイチだったり、「そもそも現実にはありえない」感じが増幅しただけ…のような気もしますが、とりあえず「がんばりました」と日記には書いておくことにします。

「現実にはありえない」照明状態の「道路沿いのパラドクス」を現実にしてみよう!?「現実にはありえない」照明状態の「道路沿いのパラドクス」を現実にしてみよう!?






2016-10-09[n年前へ]

尿跳ねを解消する「究極小便器」と「尿跳ねを防ぐ2つのコツ」  share on Tumblr 

小便飛び散り(尿跳ね)が起きる理由

 小便の飛び散り(尿跳ね)、特に男性が小便器を使う時の尿跳ねは、便所の汚れや匂いを発生させたり、跳ね返った尿が衣服に付いたりもする、男性の頭を悩ます大問題です。この尿跳ねは一体なぜ起きるのでしょうか? その理由は、「便器にぶつかる瞬間に小便(尿)が持っていた運動エネルギーのせい」です。勢いよく飛んできた尿が便器にぶつかった瞬間、尿はその勢いを止めきれず、まるで何かにぶつかった水風船やスーパーボールが飛び跳ねるように、便器の表面から空中へと跳ね返っていくのです。
 もちろん、尿が跳ね返らないこともあります。それは、尿には便器表面に付着しようとする力も働くので、たとえば尿が便器に向かって斜めにぶつかってきた場合などは、その力によって「尿は便器表面に沿った方向に流れていく」ようになるからです。
 それなら「尿が付着しやすい便器を作ってしまえば、尿ハネが解決して最高じゃない!?」となるかというと、話はそう簡単ではありません。なぜなら、便器に付いた尿は「跳ねなくなる」かもしれませんが、「尿汚れが落ちにくくなる」ということにもなってしまうからです。

尿跳ねを防ぐ、未来の「究極小便器」

 それでも「尿跳ねを防ぐ究極の小便器」を作りたい!というプロジェクトがあります。UrineLuckと名付けられたこのプロジェクトは、「尿が便器に向かって斜めにぶつかってきた場合には尿跳ねはしない」ということを利用したものです。 便器面に鋭い板をたくさん取り付けて、飛んできた尿がそれらの板に沿って流れていくように設計されているのです。また、さらに、便器の奥面に向かって尿が勢いよくぶつかったとしても、尿が跳ね返ってくることができない板を斜めに曲げつつ配置させることで、尿跳ねを全く生じさせない究極の小便器を実現するというのです。この小便器が搭乗したら、まさに理想の小便器になりそうです。

先から20cm以内、便器面に30度以下の角度ですれば、飛び散らない

 けれど、究極小便器が一般的になるのは未来の話。そんな小便器はまだ身の周りにはありません。それでは、尿跳ねを防ぐには、一体どうしたら良いでしょうか? 米国ユタ州立大学Splash Labの研究によれば、男性器先端から放たれた尿があまり長く空中を飛ぶと、その間に細かに別れてしまうために便器に当たった時の尿跳ねが(尿が便器表面に付着し続けることができず)避けられなくなってしまうといいます。 また、ハーバード大学の研究報告の中にある実験データをもとにすると、尿が便器にぶつかるときの角度が30度を超えると尿跳ねが起きやすい、ということがわかります。 つまり、これらの研究結果を合わせると、尿跳ねを防ぐための2つのコツがわかります。 ・(先端から出た尿を)飛距離20cm以内で ・便器に沿って斜め30度以下の(小さな)角度でぶつかる ように小便をすれば「尿跳ねは起きにくい」のです。

尿跳ねを解消する「究極小便器」と「尿跳ねを防ぐ2つのコツ」尿跳ねを解消する「究極小便器」と「尿跳ねを防ぐ2つのコツ」尿跳ねを解消する「究極小便器」と「尿跳ねを防ぐ2つのコツ」






2016-10-02[n年前へ]

続「その瞬間に眺めた世界をいつでもリアルに記録していく」  share on Tumblr 

 一年前の2015年の秋頃に、自転車を漕ぎつつRicoh Theta Sを手に持って、バンコクの裏小路を撮影してみました。その(色んな場所から眺めた)撮影映像を元にして、路地裏の構造を表す3次元情報や、眺める場所・方向に応じて見える風景を表現する関数を推定・生成してみました。下に貼り付けた動画は、その3次元情報のみを使ってレンダリングしてみたものです。

 日記に「その瞬間に眺めた世界をいつでもリアルに記録していく」として書いたように、ポケットに入るくらいの安い(スマホや安カメラといった)機材で、3次元の空間情報あるいは眺める時間空間方向に応じた見え方をキャプチャするようなことも簡単にできたりします。今年2016年の秋頃には、一体どんな世界を切り取ることができるのだろう?と考えたりします。

 今この瞬間の世界で、未来に残したいと誰かが思う場所があれば、その場所を知りたいと思います。その場所に行って、その3次元情報や見え方を表す関数表現や、記録できる限りの多くの情報を眺めに行ってみたい…と考えたりします。

2016-10-01[n年前へ]

Ricoh Theta で実世界情報を手に入れて、非現実の世界を作り出してみる!?  share on Tumblr 

 持ち歩き用カメラの2016年上半期Best Buyと言えば、それはもちろんRicoh Theta S。…かどうかはわからないけれど、今年の春先にRicoh Theta S撮影動画用に書いたコードを少し修正した上で、そのコードと Theta Sで「作業部屋」を実世界キャプチャしてみました。そして、実世界の情報をPCの中に取り込んだなら、次はその世界を色々と加工してみたくなります。

 …というわけで、取り込んだ実世界を海面の上に浮かべてみました。たとえば海水面が上昇し、「作業机」が海辺になったなら?的世界を作り出してみた…というわけです。実世界のさまざまなデータをTheta Sで手に入れたなら、「実世界を自由自在に加工できたりする」のが面白いところです。

Ricoh Theta で実世界情報を手に入れて、非現実の世界を作り出してみる!?Ricoh Theta で実世界情報を手に入れて、非現実の世界を作り出してみる!?Ricoh Theta で実世界情報を手に入れて、非現実の世界を作り出してみる!?Ricoh Theta で実世界情報を手に入れて、非現実の世界を作り出してみる!?






2016-09-25[n年前へ]

無限に続く「上昇と下降」をピアノとエッシャー版画で味わってみる  share on Tumblr 

 20年近く前、無限に上昇・下降し続ける「無限音階」を作ってみた。まるで、エッシャー(M.C.Escher)が何種も描いた無限に続く「上昇と下降」の版画を目で眺めた時のように、無限にただ一方向に上昇と下降が続き…けれど、いつまでも同じあたりの場所を廻り続ける音が奏でる「上昇と下降」を聴くと、何だか不思議な気持ちになる。

 エッシャーが描いた「無限の階段」の版画も、ピアノが奏でる「無限の音階」も、美術と音楽の違いはあるにせよ、ほぼ同じようなテーマだ。そんな同じモチーフのものは、共に味わってみたくなる。…そこで、今日はYoutubeにあったエッシャーの「上昇と下降」を3次元的に表したビデオに、ピアノが響かせる「無限音階」を重ね合わせてみた。

 今朝起きて、「エッシャーの無限階段」と「無限音階」を組み合わせると面白そうだから、そんなものを作ってみよう!と考えた。そして、それ風のものを作った後に、「エッシャー 無限音階」でGoogle検索してみると、同じことを考える1998年の自分がいた。…エッシャーの版画世界を眺めてみよう!と思ったけれど、どうやらその世界で歩き続けていたのは自分自身だったようだ。上昇か下降かはわからないけれど、少し不思議な気持ちになってくる。

2016-09-24[n年前へ]

その瞬間に眺めた世界をいつでもリアルに記録していく  share on Tumblr 

 自分を囲んでいる周りの世界を、あるいは掌の上に載せたものを、他の誰かに見せるために、いつか自分で眺め返す時のために、その瞬間にできる最大限のやり方で記録しています。…といっても、重い特殊な機材を持ち歩くのは辛いので、その時手にしたお手軽機材で、けれど時間が許す限りのやり方で、目にしたものをリアルに撮影したりしています。

 たとえば、2014年くらいのタイ・バンコクでは、自転車でうろうろする時、いつでも全天周の動画を撮影していたりしました。そして、1年後の2015年には同じく自転車で通り抜けたバンコク路地裏は、3次元で(暗い部分から輝いている部分まですべて記録する)HDRな世界になっていました。あるいは、チェンマイで11月の満月に眺める「空へ灯籠を流すお祭り」をヘッドマウントディスプレイを掛ければ、もう一度眺めたりすることができます。

 今年は、色んな物質で作り上げられた周囲の世界を、その素材感を伝える特性や立体的な形も含めて撮影することがようになりました。たとえば、安っぽいプラスチックの外装や、油で汚れて鈍く黒光りする金属塊や、年期を経た木板のさまを、リアルに写し出してコンピュータ画面の中で眺めることもできるようになりました。本当の世界ほどにリアルではないけれど、現実が持つ複雑なさまを、少しづつ記録して残すことができるようになっています。

 2016年の今年は、やはりバンコクを自転車でウロウロしつつ、記録する情報の次元や内容を、またバージョンアップできたら面白いな!と思っています。遠くに見える大通りを走るバスや、近くの路地裏を区切る土壁や、店の机に並ぶアジアな小物、そんなものを昨年より少しでもリアルに記録できたら面白いな、と思っています。

その瞬間に眺めた世界をいつでもリアルに記録していくその瞬間に眺めた世界をいつでもリアルに記録していく






2016-09-26[n年前へ]

2001年と2011年、テレビ画面の向こうに観た景色。   share on Tumblr 

 アニメ映画「君の名は。」を観た。本当のところ、実際のところは、何も知らないけれど、2011年の日本で強く感じたことを原動力にして作り上げられた、綺麗なジュブナイルに思えた。その「君の名は。」をひいて2011年米国映画「Source Code」を紹介しているコメントをFacebookで読んだ。

 「君の名は。」も「Source Code」も…そのどちらも、名前も知らない少なからずの人たちが”あるできごと”に巻き込まれ、それを第三者として眺めた人が”あの時何ができたか・その時何ができるか”を考えたことから始まる物語だと思う。そして、多くの物語がそうであるように、そのストーリーを精一杯辿っていくことを経て、(名前も知らない)他の人たちの物語”がそれぞれ浮かび上がってきて、そして何より自分自身(の物語)を発見していくという…いわゆるひとつの物語の王道だと思う。 

 2001年の秋にTV画面の中で理解しがたく観ていたことや、2011年の春の午後に、やはりTV画面の向こうに信じがたくリアルタイムで観た映像や、それをきっかけに人生を大きく変えていった親しかった人たちのことを思い起こすと、少しだけ・ほんの時々だけど、”あの時何ができたか・その時何ができるか”とか考えてしまう。

2016-09-06[n年前へ]

Dual Pixe Raw画像から距離(深度)マップを作成してみる!?  share on Tumblr 

 撮像素子の各画像素子を2分割して、その情報差を使って任意の場所でオートフォーカスしたりするための生画像データ(Dual Pixel Raw画像)を展開するソフトが公開されていました。 そのツールを使って(微小距離離れた)2視点から同時撮影された画像の情報を元に、言い換えれば2視点(AとB)に記録された光情報をAとA+Bという2形態で記録された画像データとして展開し、写された景色までの距離を各画素毎に算出した深度マップを計算してみました。といっても、やったことは単純で、2視点で撮影した画像パターンの相関をもとに三角測量的に距離を出してみたのが、下に貼り付けた画像です。

 そしてまた、推定した距離画像に、RGB色画像をテクスチャマッピングして3次元的に眺めてみた例が右の画像です。近景を歩く数人と、その後ろに広がる遠景が形作る箱庭のような風景をこんな風に3次元グラフとして眺めてみるのも面白いような気がします。

 ちなみに、Dual Pixe Raw画像から得られた2視点画像を、「視差アニメーションGIF」的に眺めてみたアニメーションは下動画のようになります。立体感をどれだけ感じるかは微妙ですが、割と面白い結果が得られたので、ここにメモしておくことにします。

Dual Pixe Raw画像から距離(深度)マップを作成してみる!?Dual Pixe Raw画像から距離(深度)マップを作成してみる!?