奥行きを考慮した実写画像と虹の合成
菊池 愛美*

伊藤 貴之***お茶の水女子大学大学院 人間文化研究科 数理・情報科学専攻** お茶の水女子大学 理学部 情報科学科
E‑mail: manami@itolab.is.ocha.ac.jp
虹は自然現象の中でも発生条件の厳しいものであるが、映画やドラマ等の映像で用いられることが多い。虹は、空気中の水滴内部での光の反射によって起こる現象であり、この光反射をモデル化することで、CG による表現が可能である。しかし、CG によって表現された虹を撮影映像に合成する技術に関しては、まだ議論の余地があると考えられる。
本報告では、CG で生成した虹を実写画像に合成する手法を提案する。提案手法では、まず実写画像に撮影された各物体の奥行きを仮想することで、３次元仮想空間を構築する。続いて、ユーザによって定められた位置に虹が見られるように、太陽光線方向を設定し、また３次元仮想空間全体に対して大気中の水滴分布を設定する。そして、実写画像における各画素について、空気中の水滴内部を反射して視点に到達する虹の光の強度を算出する。以上の処理手順
により、視点と背景物体との距離による虹の見え方の違いを表現する。

Expression of rainbow considering depth
Manami KIKUCHI* Takayuki ITOH***Major of Mathematics and Computer Science, Course of Humanities and Sciences,
Ochanomizu University Graduate School** Department of Information Sciences, Faculty of Science,
Ochanomizu University
Rainbow is often seen in movies or dramas; however weather condition for seeing rainbow is severe. The
rainbow is a phenomenon that happens due to the reflection of light in water drops in the air. It is possible torepresent it by computer graphics (CG) by modeling the light reflection. However, there are some issues on thesynthesis of the rainbow represented by computer graphics onto real photograph images.
This report proposes a technique for synthesizing the rainbow generated by computer graphics to real
photograph images. In the proposed technique, a three-dimensional virtual space is constructed by assigning
depth values for each object taken in the photograph images. Sunlight direction and water drop distribution isthen set to the three-dimensional space, so that the rainbow is rendered at the desired position in the photographimage. Brightness and color of light of the rainbow that reflects inside the water drops are then calculated foreach pixel of the photograph image. The technique realizes the representation of various rainbows depending on
the distances between a viewpoint and objects taken in the photograph image.

1

1. はじめに角度をなす方向に見られ、副虹は光線方向と視線方向が約 50 度の角度をなす方向に見られる、ということがわ

自然現象の CG 表現手法の中には、大気中の現象をモかっている。

デル化したものが多く見られる。例えば雲や霧は、大気中の水滴による光の散乱をモデル化することで CG 表

水滴現が可能である[1]。また例えば、蜃気楼や逃げ水などは、大気中の光の屈折をモデル化することで CG 表現が可能である[2]。これらの現象を CG 表現する手法の多くは、視線方向に沿って光の振る舞いを追跡している。
一方、映画やドラマ等の実写撮影のシーンに自然現象を表現したいときがある。しかし、思い通りの自然現象

図 1：主虹をもたらす水滴中の光の反射がいつでも見られるわけではないので、CG との合成が利便性に適うと思われる。しかしこのような CG による水滴表現を撮影映像に合成する技術に関しては、まだ議論の余地があると考えられる。その一つの論点として、実写画像には奥行き情報がないので、そのままでは視線方向に沿った光の追跡ができない、という点があげられる。
逆に言えば、実写画像から奥行き情報を推測し、視線方向に沿った光の追跡ができるような仮想 3 次元空間を

図 2：副虹をもたらす水滴中の光の反射作れば、この問題が解決できると考えられる。
そこで本研究では、CG で生成した自然現象を実写画

この仕組みを幾何光学の問題としてモデル化し、CG像に合成する一手法を提案する。本研究では、自然現象で虹を表現した初期の研究に、伊藤ら[3]による研究がの中でも虹の表現について試みることにする。虹は、自ある。この研究では、生成画像を構成する画素ごとに、然現象の中でも発生条件が厳しい現象の１つとして知視線と光線となす角度を算出し、虹が見られる条件を満られている。虹は空気中の水滴内部での光の反射によったす画素においてその色彩を算出することで、虹を表現て起こる現象であり、この光反射をモデル化することで、している。

CG による表現が可能となっている。本手法では、実写

また最近では芳信ら[4]が、幾何光学の代わりに波動画像に撮影された各物体の奥行きを仮想することで、3光学の問題として虹をモデル化することで、主虹、副虹次元仮想空間を構築する。また、実写画像の背景物体よだけではなく過剰虹も表現する手法を提案している。文

りも前方にある水滴の内部を反射して、視点に向かう虹

献[4]は虹と実写画像の合成にも言及し、その合成時のの光の総量を、視点から背景物体までの線積分によって係数を自動決定する方法を提案している。文献[4]と違算出する。これにより、水滴源や背景色などの状況に応い、本報告では実写画像の奥行き方向を考慮することで、じて違った見え方をする虹を表現できると考えられる。

水滴源や背景色に応じて違った見え方をする虹の表現

例えば雨上がりの虹と噴水の周りに見える虹の違い、近を目指すものである。

くの建築物にかかる虹と空にかかる虹の違い、などを表現できる。

2.2 画像への奥行き情報の付加

2. 関連手法

する手法は、コンピュータビジョンの分野では旧来から実写画像に写る物体の 3 次元形状や奥行き値を算出
2.1 虹の表現研究が進んでいる。初期手法の多くは、2 枚以上の画像

虹は、大気中の水滴内部で反射した光が、波長によるに写る物体の対応点の位置関係から、その 3 次元形状や屈折率の違いによって分光して目に届く現象である。有奥行き値を算出するものであった。しかし最近になって、名なものに、水滴中で 1 回反射した光線による主虹と、主にイメージベースドレンダリングを目的として、1 枚2 回反射した光線による副虹がある。図 1 は主虹をもたの画像に写る物体の 3 次元形状や奥行き値を推定する

らず分光の仕組みを、図 2 は副虹をもたらす分光の仕組手法が、多く報告されている。

みを図示したものである。平行光源の光線方向、およびこの中でも非常に有名な手法に、Horry らが発表した視点位置が決定されると、主虹や副虹の見られる方角はTour Into The Picture [5] がある。この手法は、入力画像決定される。主虹は光線方向と視線方向が 40〜43 度のの構図から想定される消失点などを手がかりにして、入2力画像を 6 面体の箱の内側に貼り付けることで、入力画三次元空間に変換像の各部位に奥行きを与える。また Derek らが発表した
Automatic Photo Pop-up [6]も同様に、入力画像の構図を手がかりにして、入力画像中の物体を屏風状の面に貼り付けることで、入力画像に写る構図を 3 次元化する。
これらの手法と比較して、本報告の目的に近い手法として、Oh らが発表した Image-based Modeling and PhotoEditing [7]に採用されたレイヤー化処理があげられる。
この処理では画像上に手書きされた物体境界線などを実写画像との合成手がかりにして、画像中の部位をいくつかのレイヤーに分割して、仮想 3 次元空間を構築する。この結果として、

図 4：本手法の処理手順入力画像を構成する各画素に奥行き値を与えることができる。この手法は、文献[5][6]に提案された手法のよ3.1 3 次元仮想空間の構築

うに、画像に写る物体を画一的に平面に貼り付けるのではなく、物体ごとに分類してレイヤー化できるという意

現時点の実装では、まず k-means 法を用いて実写画像味で、本報告における虹の表現にも有効に適用できるもの画素値をクラスタリングし、代表色を得る。本手法でのと思われる。

は代表色ごとに奥行き値を入力することで、実写画像かまた他の手法として、計測によるものがあり、代表例ら三次元空間を構築する。本報告では以下、実写画像のとして Criminisi ら[8]や Liebowitz ら[9]によるものがあ

水平方向を x 軸、垂直方向を y 軸、奥行き方向を z 軸とる。しかし、これらの手法では仮想 3 次元構築のために、し、視点を原点とする 3 次元直交座標系で表現される 3ユーザとの綿密な対話を必要とする。

次元仮想空間を扱うものとする。

3. 提案内容

隣物体、などが異なる色彩で写っている画像の場合には、天空などの背景、山などの遠方物体、家や人などの近図 3 および図 4 は本手法の処理手順を示したもので代表色ごとに奥行き値を入力することで、概略的な 3ある。本手法では、まず実写画像に写る物体の奥行き値次元仮想空間を得ることができる。ただし、実写画像のを入力することで、3 次元仮想空間を構築する。続いて代表的な物体どうし、あるいは物体と背景が同じ代表色

3 次元仮想空間中の水滴分布、太陽光線の方向、などをで括られる場合には、不具合を生じることがある。この決定する。そして、これらを参照して虹を生成し、最後点は改良が必要である。にこれを実写画像と合成する。以下、この処理手順を構3.2 虹を表現するための入力情報の決定成する各処理について述べる。

虹の明るさは空気中の水滴量によって決定される。本
画像を入力手法では空気中の水滴量を、3 次元の分布関数 w で設定類似色毎にクラスタリングし奥行き値を入力する。雨上がりの虹を表現するには、広域にわたってあ虹の場所を決めるためユーザが画像上 3 箇所指定る程度一様な水滴量をもつような分布関数を設定する。

3 画素上に虹が映るような太陽光線ベクトルを探索

滝や噴水のまわりの虹を表現するには、局所的に非常にFor (画素ごと) {濃い水滴量をもつような分布関数を設定する。
虹の見える方角は太陽光線の方向によって決定され視線ベクトルから偏角の算出
偏角から屈折率の算出る。しかしユーザビリティを考えると、光線方向を入力

屈折率から波長と輝度の算出

したら虹の見える方角が決定される、というインタフェ積分による光の強度の算出ースが必ずしも好まれるとは限らない。むしろ、デザイ}

ナーが意図する「虹を表現したい実写画像上の位置」を画像を出力先に指定し、その指定に沿った条件を計算機が自動設定する、という手法のほうが好まれる場合もあると考えら

図 3：本手法の処理手順（擬似コード）れる。
本手法ではこの考え方を採用し、まずユーザに「虹を表現したい実写画像上の位置」を対話的に 3 箇所指定さ3vせる。この 3 箇所の画素に対応する 3 次元仮想空間上陽光線ベクトル s = ( s x , s y , s z ) と視線ベクトルの偏の x 座標値および y 座標値を ( x1 y1 ), ( x 2 , y 2 ), ( x3 , y 3 )角を求める。主虹を表現する場合には、この偏角が 40とする。また、これら 3 画素の z 座標値はいずれも、ス〜43 度となる画素には虹が映る。算出された偏角がこクリーンの奥行き値となる。以下、この奥行き値を z との範囲内でない場合には、この画素には虹が映らないのする。このとき、スクリーンの奥行き値は入力画像の画で、以下の処理を省略する。

角を考慮するものとする。視線から出発して、ユーザが続いて、各々の偏角に対して、その画素において水滴指定した画素を通過する方向ベクトル(視線ベクトv
e = ( x, y , z ) と 、 太 陽 光 線 ベ ク ト ルv
s = ( s x , s y , s z ) とのなす偏角 d は、以下の数式で算内部を反射して視点に到達する光線に対応する水の屈ル )折率を産出する。ここでは、主虹をつくる偏角の範囲40〜43 度から可視光線に対する水の屈折率の範囲 1.331出される

 ev 2 + sv 2 − ev − sv 2 −1 
d = cosvv


2e s


〜1.343 が導出されるような変換式を導入する。
続いて、その画素において水滴内部を反射して視点に(1)到達する光線の波長を算出する。ここでは、屈折率と波長は反比例する性質を利用して、屈折率の範囲から波長また虹が見られる条件により、以下の不等式が成立する。

40 ≤ d ≤ 43(2)の範囲 380〜780[nm]が算出されるような変換式を導入する。

ユーザが指定した 3 画素について、 d が式(5)を満たす

以上の手順により、水滴内部を反射して視点に到達すv

ような太陽光線ベクトル s = ( s x , s y , s z ) を計算し、3る光の波長を、各画素に対して算出することができる。

画素すべてにおいて式(2)を満たす太陽光線ベクトルをこうして算出された波長から、視点に到達する光の色相列挙する。

を算出する。ここで光の色相は波長に対する連続関数とこの「ユーザが指定した数箇所を通過する虹が見られして算出が可能である(図 6 参照)が、現時点での実装でる」という条件を満たす光線方向は、一般的には一意には、波長に対応する色相値をあらかじめ格納した配列を定まらない。そこで本手法では、この条件を満たす光線用いて、それを補間して算出している。

方向の例をいくつか提示し、その中からユーザが光線方向を選択する、という方法をとる（図 5 参照）。

380 [nm]

780 [nm]
図 6：可視光線

3.4 虹の色相と強度の算出
続いて、各画素の奥行き値と、空気中の水滴量の分布関数を用いて、虹を構成する光の強度を算出する手順を説明する。本手法では、3.3 節にて説明した手法で光の波長を算出した際に、この波長が可視光線の範囲内にあるときには、以下の処理によって光の強度を算出する。

図 5：虹と太陽の方向

w( x)∏ G (t )3.3 各画素の輝度の算出
虹が見られる画素において、水滴内部を反射して視点に届く光の波長は一定である。また波長は屈折率の関数であり、屈折率は偏角の関数である。そこで提案手法では、まず各画素に対して偏角を算出し、そこから屈折率、

図 7：ある視線方向における光の強度の割合波長、の順に算出する。
まず各画素に対して、前節に示した方法で決定した太図 7 は、太陽光が水滴内部で反射してできる虹の光線4と読み取った実写画像の物体からの光線を表したものと考えられる。虹のリアリティをさらに追求するためにである。

は、このような効果を表現できるような改良が必要であると考えられる。

ここで水滴濃度を w(x ) 、光が減衰せずに通過する割合を G (x ) とする。x は視線上の位置を表すものとする。
水滴濃度と減衰率は位置の関数で表せるので、 x にお本報告では、ユーザとの対話によって実写画像に CGける水滴が視点光の強度は、式(3)に比例する値になる。

w( x)∏ G (t )5. むすびで生成した虹を合成する表現手法を提案した。

(3)

今後の課題として、以下の点が挙げられる。

視点に届く光の強度は、視線上の視点から背景物体ま•滝や噴水など、さまざまな場面における虹の表現•

ユーザが指定した虹発生の条件と、画像内の天候なでの各位置における水滴の反射光の強度の総和になる。

どの状況の矛盾の発見•

式(1)を視点から背景物体まで積分する式(4)により、視き値、などの自動設定点に届く光の強度を得ることができる。
d∫ w( x)∏ G(t )dx

k-menas 法に用いる代表色数、画像中の物体の奥行(4)•k-means 法以外の画像処理方法•

虹以外の自然現象への適用

0

ここで d は背景物体までの距離、または水滴を反射

参考文献[1] Nishita T., Dobashi Y., Nakamae E., Display of Clouds

した光が視点に届く量が無視できるほど小さくなる距

Taking Account Multiple Anisotropic Scattering and Sky離である。

Light, ACM SIGGRAPH ’96, pp. 379-386, 1996.

以上の処理によって算出された虹の色相と強度を用[2] 斎藤, 牧野, 大石, レイトレーシング法を用いた異いて、虹の画素値を算出し、文献[4]に示す手法などを

方性不均質透明体の表現, 電子情報通信学会論文誌 D-II,

用いて実写画像の画素値と合成する。

Vol.J76-D-II, No.8, pp.1755-1762, 1993.

入力画像と同じ大きさで虹のみが表示された画像と[3] 伊藤, 牧野, 斎藤, 大石, コンピュータグラフィッ

入力画像を適合させる。その際、各画素の輝度が 255

クスにおける分光モデルに関する検討, 電子情報通信を超えないように調節する必要がある。各画素において、RGB 値を足し合わせどれか１つでも 255 を超えた場合、学会論文誌, Vol. J75-D-II, No. 11, pp.1986-1989, 1992.
[4]芳信，金田，「波動工学に基づく虹のレンダリングと３つの値の中の最大値が 255 になるような処理を施す

背 景 実 写 画 像 と の 合 成 」， 信 学 技 報 ITS2004-77,

ことにする。

IE2004-211, pp. 65-70，2005.
[5] Horry Y., Anjo K.-I., Shin S., Tour into the picture: using

4. 実行結果

a spidery mesh interface to make animation from a single

図 8 は、視点の後ろから太陽光線が差し込んでいるこimage, ACM SIGGRAPH ‘97, pp225-232, 1997.とを想定して、実写画像に虹を合成したものである。虹[6] Derek H., Alexei A.-E., Martial H., Automatic Photo

は手前の木の奥に分布する水滴によって発生しており、

Pop-up, ACM SIGGRAPH ’05, 2005.

木と重なっている部分は木に隠れて見えなくなってい[7] B. M. Oh, M. Chen, J. Dorsey, F. Durand, Image-Basedる。なお、図 8 は主虹のみを表現した実行例となっていModeling and Photo Editing, ACM SIGGRAPH ’01,

るが、反射回数の設定を変更することで、副虹について

p433-442, 2001.

も表現できると考える。

[8] A. Criminisi, I. Reid, A. Zisserman, Single View

図 9 は、実際にカメラで撮影した虹である。この実写

Metrology, journal of Computer Vision 4, 2, pp123-148,

画像を実行結果と比較すると、実写された虹のほうが太2000.

い幅をもち、また色の境界が不鮮明であるように見える。

[9] D. Liebowitz, A. Criminisi, A. Zisserman, Creating

この理由は、以下の通りであると考えられる。空気中のarchitectural model from images, Proc. Eurographics, vol.18,

水滴を反射して視点に到達する光線の一部は、その過程

pp39-50, 1999.

において空気中の浮遊物の反射や屈折を受ける。この結果として、虹を構成する光線には小さな乱反射が見られ、結果として幅が膨張し、色がにじみあって不鮮明になる

5

図 9：虹の実写画像

図 8：実行結果

6