写真の床投影による立体錯視
2010SE170 岡本 圭介
指導教員：杉浦

1

はじめに

洋

軸ベクトルを v ，写真面に垂直なベクトルを w = u × v とする．×は外積であり， u，v ，w はこの順で右手系を成す．

私たちは，多くの場合，絵からそこに描かれている立体の形を正しく読み取ることができる．しかし，時には混乱

簡単のため，op ，c を xz 平面に置きすることもある．それを如実に示すのは，だまし絵とよばれる立体錯視図の存在である．見ると立体感をもつのに，そんな立体はあり得ないと感じるもの，あり得ないように見えるのに実は立体として作れるものなど，いろいろな種類のだまし絵があって，一筋縄ではいかない．たとえば，

op = do (cos θ，0，sin θ)，c = dc (cos θ，0，sin θ)(1)とする．これにより，平面に描かれた絵をある決められた視点から眺めたとき，立体のようにして映し出されるアートのようなものも現代では注目されている．これらのだまし絵を眺めていると，u = (0，1，0)，v = (− sin θ，0，cos θ)，
w = (cos θ，0，sin θ)(2)

私たちが普段当たり前のように使っている立体視覚機能が，実は危うさを秘めていることがわかってくるであろう．
本稿では，立体錯視に関する数学的理論 [1] を学び，そとなる．
写真を c を中心として，床面 (xy 平面) に投影する．

れに基づき我々が床写真と呼ぶだまし絵を設計し作製する

写真面の点 q = op + su + tv が投影される点を p = (xことを目標とする．

，y ，0) ＝ P (q) と書き，その逆写像 P −1 を求める．q は直2

床写真
床写真とは，決められた位置の視点から見ることにより，写真の平面に写った物体が写真から浮き出てくるように見えるだまし絵のひとつである．床に置き鑑賞することで錯

線 cp 上にあるので，op + su + tv = q = c + r(p − c)，r ∈ Rと，書ける．すなわち，覚が生じる写真のため，この論文では床写真という．写真su + tv = c − op + r(p − c)．

で撮った画像を網膜像と考え，そこに写る立体を床へ投影させる．床に写真を投影させることで写真に写った立体は平面へ移ることになる．床に投影された絵を，写真を撮っ

(3)

(4)

両辺 w との内積をとり，w · c = dc ，w · op = do ，w · p =x cos θ を代入すると，た位置とは違った視点から絵を見ると，これらは歪んで見える．
．しかし写真で撮った画像と床に投影させた絵は，写

0 = dc − do + r(w · p − dc )(5)

真を撮った位置から見れば同じものが網膜像に写るはずである．なぜなら，写真を撮った位置からそのまま床に投影

よって，させているためである．写真を撮った位置で床に投影させr=た画像を見たとき，写真の画像と全く同じものを見ていると人間は認知するため，平面であるはずの床写真に写された物体が立体的に浮き上がって見えると感じるのである．

3

写真と床投影と逆写像

xyz 空間の風景を撮影した写真は，座標原点とカメラレンズの中心を通る直線に垂直な平面 (写真面) に，風景を投影した画像と考えられる．投影の中心はカメラレンズのdc − do．
dc − x cos θ(6)が，得られる．
そして，u · op = u · c = 0，u · p = y と，v · op = v · c = 0，v · p = −x sin θ より，

s = u · (q − op ) =u · (c − op + r(p − c))=ry ，中心である．逆に写真面の平面像を床面 (xy 平面) に逆投影し，それを同じレンズで撮影すれば，元の写真が復元する．すなわち，床面の逆投影像をカメラレンズの中心位置から見れば，xyz 空間の風景の像が立ち上がると考えられ

t = v · (q − op ) =v · (c − op + r(p − c))=− rx sin θ(7)る．これが今回試みた立体錯視の原理である．xyz 空間でとなる．

写真面の原点を op ，カメラレンズの中心を c，カメラ伏角

dc ，do ，θ を定めれば，式 (6)，式 (7) より，逆写像 P −1を θ とする．写真面上の直交座標の横軸ベクトルを u，縦が定まる．

4

値が定まった写真を撮る方法
床に xyz 空間の原点を定め，印 O を付ける．もうひと

手順 2

撮影した写真を Mathematica 上で読み込む．

手順 3

取り込んだ画像から写真上の座標 P −1 (Y ) を読み取る．

つの印を X と付け，直上にレンズの中心が来るように伏手 順 1 で 説 明 し た 座 標 P −1 (Y ) を Mathe-

角 θ でカメラを置く．O がファインダーの中心に来るようmatica 上 で 読 み 込 ん だ 画 像 デ ー タ か ら Dynamic[MousePosition[”Graphics”]] というコマンドにカメラの高さを調整し設置．

OX が xyz 空間の x 軸を定め，dc =を使用することで読み取ることが可能．

OXsin θ(8)
手順 4となる．

手順 1 で述べたように計算に必要な三つの数値であdo を定めるには，画面内に写った床をもう 1 点 Y = (a，b，0) の写真上の座標 P −1 (Y ) = (sY ，tY ) が必要である．P −1 (Y ) = (sY ，tY ) は写真はコンピュータに取り込る，カメラの伏角 θ，カメラの高さ dc ，写真上の座標

P −1 (Y ) を Mathematica に入力する．計算の理論としては逆投影であり，床写真の画像を構成するひとつみ，対応する画素の座標を測定して決める．

ひとつの pixel が何色 (画素の {R，G，B}) であるか

これらの式をに代入して，rY =必要な値を入力し，逆投影写像の関数を計算．

を元の画像データから読み取り，それを画像データとして出力する．つまり視点から床へ立体の色を投影さ

dc − dodc − a cos θ

せるのではなく，床から立体の色である画素の {R，G，B} を読み取るイメージである．

よって，

do = dc − rY (dc − a cos θ)

(9)

手順 5

画像を出力，印刷する．

手順 1 で撮影した状況と全く同じ視点で，この床写真となる．また，式 (6) より，を見てみると，被写体がまるで平面から浮き出ているかのように錯覚するのである．

sY，btYrY = −−a sin θrY =高く，最大の利点として立体を平面へ移し，それを立体的となる．
このいずれかで rY を計算し，に代入して do を定める．

5以上の手順で床写真を作製する．この床写真は実用性が(10)

床写真の作製方法に見せるため，物理的に場所をとらないことが挙げられる．
作製した床写真を図 1 に示す．斜め 45◦ で眺めると立体的に見える．

床写真の作製には Mathematica の画像処理機能を用いた．写真画像の取り込みから，床写真画像の作製，出力まで Mathematica で一貫して処理することができる．
床写真を作製するまでの手順を説明していく．
手順 1 床投影させたい立体を床や机上などの平面へ置き，写真を撮る．
図 1 床写真

このとき重要となるのが床投影させる際に必要な数値情報である．まず床に原点となる O を定め，O がファインダーの中心に来るようにカメラ位置を設定する．Mathematica で計算させるため，撮影状況を数値として入力させなければならない．必要な値として，カメラの伏角 θ ，カメラの高さ dc ，そして画面内に写った床の点 Y = (a，b，0) の写真上の座標であるP−1−1(Y ) の三つである．この写真上の座標 P (Y )は，Mathematica で画像を取り込んだ時に，画面座標を測定してやればよい．この段階で必要な値としては，カメラの伏角 θ ，カメラの高さ dc の二つがわかればよい．

6

おわりに投影法の理論に基づき，だまし絵のひとつである床写真の作成法を考案した．そして実際に作品を作製し，錯視効果を確認した．作品の色彩調整や，動画化などによる錯視効果の変化を調べることは，興味深い課題である．

参考文献[1] 杉原厚吉：『だまし絵と線形代数』啓文堂，東京，2012