(57)【要約】【課題】放射光線の描画処理の演算量を減らすことができ、処理時間の短縮を図ることができるようにする。【解決手段】ステップＮＳ４０１では、二次光線描画にあたり、その走査対象を定める。二次光線は、一次光線がＸ軸方向に走査されていた場合は垂直線、一次光線がＹ軸方向に走査されていた場合には水平線となる。ステップＮＳ４０２では、走査する長さε１とε２を求める。条件判断ＮＳ４０３では、例外処理を行う。ステップＮＳ４０４よりステップＮＳ４１２では、＋ω方向の描画処理を行う。ステップＮＳ４０４で、走査カウンタηをゼロに初期化する。ステップＮＳ４０５では、現在の描画対象の座標、即ちＸ軸方向に走査している場合は、Ｘｎ＋ηに対応するＹ座標、Ｙ軸方向に走査している場合は、Ｙｎ＋ηに対するＸ座標を求める。【選択図】　　　　　図３
2004126697.tif 000002
【特許請求の範囲】
【請求項１】
デジタル静止画に対して同画像上に放射光を擬似的に演算し描画する方法であって、光線進行方向の法線方向に光量を拡散減衰させずに、対象となる静止画の垂直方向に光量の減衰を施すことを特徴とする放射光線描画方法。
【請求項２】
デジタル静止画に対して同画像上に放射光を擬似的に演算し描画する方法であって、光線進行方向の法線方向に光量を拡散減衰させずに、対象となる静止画の水平方向に光量の減衰を施すことを特徴とする放射光線描画方法。
【請求項３】
デジタル静止画に対して同画像上に放射光を擬似的に演算し描画する方法であって、光線進行方向の法線方向に光量を拡散減衰させずに、対象となる静止画に対し、一次光線がＸ軸方向に走査されていた場合は垂直方向、Ｙ軸方向に走査されていた場合には、水平垂直方向に光量の減衰を施すことを特徴とする放射光線描画方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル静止画の加工編集処理において、画像上に放射光を擬似的に演算し描画する放射光線描画方法に関する。
【０００２】
【従来の技術】
従来の放射光線描画の技術について説明する。予め用意されたデジタル静止画に対し、本来は存在しない光源を設定し、そこから光が放射しているような視覚効果を与えるような光線の描画技術について、図７に、放射光線描画の処理前（ａ）と処理後（ｂ）を示す。
【０００３】
このような光線描画に対して必要となる情報は、次に記載する通りである。
・描画する光線の本数
・光源（光線を描画する輝点）
・光線の位相（光線の進行する方向）
・光線の拡散角
【０００４】
これらのうち、光源、位相、拡散角の関係につき、図８に示した。今後、特に明記しない限り、位相についてはθ、拡散角についてはωで記載する。また、図に示すように、拡散角については光線の中心から左右（±）２方向あるため、実際には、この２倍の値となる。また、ωは、１／４π（＝９０度）未満に限定して説明を行う。
【０００５】
これらの情報が与えられれば、光源から発した光線を描画することが可能となるが、このとき、単に光線を描画するのではなく、「光線強度の減衰」を考慮する必要がある。この概念を図９に示した。
【０００６】
まず、拡散角ωがないと仮定した場合、光線は位相に従った一本の直線となる。本明細書では、これを一次光線と定義する。一次光線上の各点の輝度は、光源から遠ざかるにつれて減少するから、光源の輝度レベルをＥ０、各点の輝度レベルをＥＮ、各点の光源からの距離をＤ１とするとき、次の関数で表すことが可能となる。
ＥＮ＝ｆ（Ｅ０、Ｄ１）
【０００７】
ここで、関数ｆは減衰関数である。例えば、純粋に距離に反比例する関係での描画が求められる場合、減衰関数を反比例関数として定義し、
ＥＮ＝ｋ×（１／Ｄ１）×Ｅ０（ｋは係数）
のようにすれば良い。つまり、経験的に求められた最適なものを、実装するシステムの都合に合わせて定義することが可能である。
【０００８】
また、描画される光線には、拡散角ωが定義されているのであるから、実際には、一次光線の各構成点から拡散角ωに応じて２方向に描画される二次光線を描画しなければならない。このとき、二次光線は一次光線の法線方向の線分となる。二次光線上の各点の輝度レベルについても、一次光線のときと同じような計算式で求めることができる。即ち、一次光線上に存在する二次光線開始点の輝度レベルをＥＮ（これは先の方法で求まっている）、二次光線上の各点の輝度レベルをＥＮ２、二次光線の開始点から二次光線上の各点への距離をＤ２とするならば、
ＥＮ２＝ｇ（ＥＮ、Ｄ２）
の関係が成り立つ。
【０００９】
ここで、関数ｇは一次光線の時と同じく、任意に定義された減衰関数である。従って、放射光線描画の際に必要になる情報には、これら２種類の減衰関数の種類が含まれることになる。
【００１０】
図１０は、従来技術における放射光線描画システムのブロック図である。
ＩＦ１は処理の対象となるデジタル静止画のソースである。デジタルビデオカメラ、デジタルスチルカメラなどの撮影機器、光学式カメラのフィルム、フラットヘッドスキャナなどが考えられる。また、予めメモリカードなどの補助記憶デバイスや記録装置に適切なコーデックを用いて圧縮保存されているデジタル静止画もこれに該当する。
【００１１】
これらの情報は入力装置１００により、記録装置１０１に一旦転送される。例えば、情報のソースが光学式カメラのフィルムだった場合などには、入力装置１００がアナログ、デジタル変換を行う。また、デジタルビデオカメラ、デジタルスチルカメラなどの撮影機器の場合、それぞれに応じたインターフェイスを用いて、データまたはファイルの取得を行う。メモリカードなど補助記憶デバイスがソースの場合、単にデータまたはファイルの取得を行う。
【００１２】
記録装置１０１に保持されたデジタル静止画は、処理装置１０２により、メモリ１０３に格納展開される。ここで、処理装置１０２は、もしデジタル静止画のデータ、またはファイルが圧縮されていた場合、適切なコーデックを用いて、Ｒ，Ｇ，Ｂ各色のデータを復元し、メモリ１０３上に用意された３枚のメモリワークにこれらを格納展開する。圧縮処理がない場合、ファイル内のヘッダなどを除去した上で、同様にＲ，Ｇ，Ｂそれぞれのメモリワーク上に、デジタル静止画データを格納展開する。
【００１３】
ＩＦ２は、処理のための制御情報である。
これらの制御情報としては、前述のように「描画する光線本数」、「光源」、「位相」、「拡散角」、「一次光線の減衰関数」、「二次光線の減衰関数」、「光源の強度」ならびに後述する「構成合成時のＲ，Ｇ，Ｂに対する重み付け係数」がある。これらはオペレータからの入力により指定をすることも可能であるし、予め用意された初期値を用いることも可能である。制御情報ＩＦ２は、入力装置１０６を用いて入力されるが、この際、表示装置１０７を用いて、処理の前に予めユーザーに何らかのフィードバックを行うことも可能である。例えば、光源については、処理対象のデジタル静止画の枠内に必ずしも納まる必要はない。この場合、枠外の光源から放射された光線が、デジタル静止画に対してどのような影響を及ぼすのか、オペレータがＧＵＩ上でこれをプレビュー確認しながら指定するようなシステム構成が可能である。
【００１４】
与えられた制御情報は、メモリ１０８上に保持される。
制御部１０９は、メモリ１０８上の制御情報ＩＦ２を用いて、実際の描画処理を処理装置１０４に行わせる。
【００１５】
ここで、処理装置１０４は、次の大きく２つの部分に分けられる。
▲１▼メモリ１０５上に、光線形状を描画する部分。
▲２▼メモリ１０５上の光線形状とメモリ１０３上の静止画データを合成する部分。
【００１６】
▲１▼の光線形状の描画部分は、詳細は後述する。
▲２▼の合成部分では、メモリ１０３、メモリ１０５上の各点を単純に加算し、メモリ１０３に再度結果を格納する。このとき、オーバーフロー処理を行う。例えば、Ｒ，Ｇ，Ｂ各色のデータが、８ビットの量子化レベルを持っている場合、得られた結果が２５６以上だった場合、これを２５５に丸める。
【００１７】
なお、この加算処理を単純にＲ，Ｇ，Ｂ各プレーンに対して均一に行えば、白色光の描画処理となるが、それぞれのプレーンへの加算の割合を変更することで、彩色放射光の描画も可能になる。このＲ，Ｇ，Ｂへの合成時の重み付けについては、初期制御情報として与えられるものとする。
【００１８】
処理装置１１０では、放射光描画後のデジタル静止画データを、適切な形式に変換する処理を行う。例えば、再度何らかの形式で圧縮保存するのであれば、そのような形式での圧縮処理を行うし、あるいは、表示装置１１２に表示するだけの処理であれば、デジタル静止画データをシステムの保有するビデオＲＡＭに適した形に変換する。
【００１９】
１１１は出力装置であるが、これは、最終的な出力結果を何とするかで、その処理内容が異なる。前述の通り、表示装置１１２への表示のみを目的とするのであれば、処理装置１１０にて変換されたデータをビデオＲＡＭに転送するし、あるいは、記録装置１１３（または、メモリカードなどの補助記憶デバイス）に対し保存を行うのであれば、これら装置のインターフェイスに応じた形式でのデータ転送を行う。
【００２０】
次に、処理装置１０４のうち▲１▼の光線形状の描画部分につき、解説を加える。
図１１は、光線形状描画処理の流れを示すフローチャートである。
ステップＳ１００でメモリ１０５の初期化処理などを行う。その後ステップＳ２００において、メモリ１０８からの制御情報を獲得する。このとき、制御情報は、描画する光線毎に異なる場合があるので、これらは、各光線の描画時に適宜取り出す処理を行う。ここで、制御情報のうち光源が同じ、位相が変化するような設定であれば、図７に示したような放射光の描画となる。
【００２１】
後の処理の流れは大きく３重のループ構造から成る。
一番外のループ構造は、ステップＳ２００から、判断条件Ｓ７００に至るもので、指定された数だけの光線を描画する処理となる。もし、全ての光線の描画が終了していなければ、判断条件Ｓ７００で分岐し、繰り返し処理を行う。
【００２２】
次のループ構造は、ステップＳ３００から、判断条件Ｓ６００に至るものである。このループ構造の中身は、一次光線の線分上の各点から二次光線を描画する処理に対応する。
一番最小のループ構造は、ステップＳ４００から、判断条件Ｓ５００に至るものであり、二次光線上の各点を全て描画する処理に該当する。
【００２３】
図１２にステップＳ１００、ならびにＳ２００の詳細を記す。ステップＳ１０１では、メモリ１０５の初期化を行う。メモリ１０５については、輝度値のみを保持するため、処理対象となる横の画素数×縦の画素数×１画素中のメモリ割り当て量（例えば量子化レベルが８ビットなら１バイト）の容量を持つ。これらを全て０で埋め尽くす。
【００２４】
ステップＳ１０２では、メモリ１０８より制御情報を得るが、このステップで得るものは、光線描画処理全体において不変の要素である。即ち
・描画する光線の本数（これをＩと置く）
・光源の座標（Ｘ０、Ｙ０）
・光源の強度（Ｅ００）
・一次光線減衰関数（ｆ）
・二次光線減衰関数（ｇ）
・合成時のＲ，Ｇ，Ｂ重み付け係数（３種）
となる。
【００２５】
ステップＳ２０１では、各光線毎に異なる制御情報を得る。これらは即ち、
・描画対象光線の位相θ
・描画対象光線の拡散角ω
である。
【００２６】
これらの情報は、ＩＦ２としてオペレータに一括して与えられる場合もあるが、光線の番号の増加に応じて、適宜ステップＳ２０１内で計算し、生成する手法も考えられる。
【００２７】
図１３にステップＳ３００の詳細を示す。
ステップＳ３００に処理が移るのは、次の２つの場合である。
▲１▼光線描画の直後。
→この場合、一次光線の描画に関する初期化処理が必要となる。
▲２▼既に光線描画が開始されていて、一次光線の描画処理が開始されている場合
→既に処理された内容を参照しての繰り返し処理。
【００２８】
条件判断部Ｓ３０１では、これらを判断し、処理を切り分ける。初めての光線描画である場合、ステップＳ３０２において、一次光線の直線式を算出する。
【００２９】
与えられている位相がθ、光源座標が（Ｘ０、Ｙ０）であるから、この直線の一般式は、
Ｙ＝ｔａｎ（θ）×（Ｘ−Ｘ０）＋Ｙ０
となる。
【００３０】
これを、さらに一般化すると、
Ｙ＝ｋＸ＋α　　…式Ａ
Ｘ＝ｊＹ＋β　　…式Ｂ
となる。
【００３１】
ここで、２つの式を用意する理由は２つあり、第一の理由はステップＳ３０３での位相θによる切り分け処理において必要となるためである。第二にθが９０度（＝１／２π）、または２７０度（＝３／２π）だった場合にｔａｎ（θ）が解を持たないので、これを避ける必要があるためである。
【００３２】
ステップＳ３０３では、一次光線の走査対象と走査方向、走査開始座標、走査終了座標を定める。表１は、位相θによる、走査方向と走査対象の切り分けである。
【００３３】
【表１】
2004126697.tif 000003
【００３４】
このように切り分けるのは、例えば、式Ａにおいて、ｋが４／５など急峻な傾きだった場合、これをＸ軸方向に走査し、対象となるＹ座標を算出すると、デジタル座標内では、結果が飛び飛びとなり連続した直線を生み出さない場合があることを防ぐためである。また、先に述べたとおり、与えられたθによってはｔａｎ（θ）が解を持たない場合がある。この場合は、走査対象をＸ軸ではなくＹ軸とすることで問題の解決を図る。（即ち、一次光線がＹ軸に平行な場合を意味する。）
【００３５】
ステップＳ３０４では、ステップＳ３０３で求めた走査対象と走査方向に従い、一次光線の走査開始座標、走査終了座標を求める。
【００３６】
図１４（ａ）は、走査対象がＸ軸方向、走査方向が正の場合の切り分け処理の概念図である。例えば、一次光線が７−１のような光源と位相を持ち、処理対象矩形の幅をｗｉｄｔｈ、高さをｈｅｉｇｈｔとする場合、走査開始Ｘ座標はＸ０、走査終了Ｘ座標はｗｉｄｔｈ−１となる。また、一次光線が７−２のような場合、走査開始Ｘ座標は０、終了座標はｗｉｄｔｈ−１となる。
【００３７】
さらに、７−３のような形状をした一次光線の場合、実際には処理対象矩形と交わることがないのであるが、走査開始座標を０、終了座標をｗｉｄｔｈ−１と置く。実際にこれらを例外処理するのは、二次光線の描画処理におけるクリッピングの時点である。ステップＳ３０４の段階で例外処理を行わない理由は、例えば、光源座標（Ｘ０、Ｙ０）を中心に、θを順次増加、回転させながら放射光を描画する処理において、使いまわしがきくし、また、この段階でＸ軸やＹ軸との交点が見とめられなくても、二次光線の描画処理において、処理対象矩形との交わりが生じる可能性が否定できないためである。
【００３８】
表２は、一次光線の走査開始座標、走査終了座標につき、光源（Ｘ０、Ｙ０）、ならびに位相θとの関係でまとめたものである。なお、以後特に明記しない限り、角度についてはラジアン単位系を用いるものとする。
【００３９】
【表２】
2004126697.tif 000004
【００４０】
表からわかるように、どのような場合であっても、光源が処理対象矩形の枠内にあるときと、そうでない時の２通りで区分けすれば良い。ここで、本来走査開始座標は、Ｘ軸方向走査時は、矩形の左端、ならびに右端、Ｙ軸方向走査時は、上端ならびに下端でも良さそうに思えるが、それぞれ画像の幅、高さの半分のマージンを増減している。これは、図１４（ｂ）の網がけの三角形の部分で示した通り、処理対象の矩形の全体を走査したとしても、二次光線が描かれない場合があることを防ぐためである。本来は、与えられたθ、ならびにωから正確なマージン幅が算出可能であるが、経験的に画面の幅、及び高さの半分をマージンとして与えられれば問題ないことが知られているため、これを適用している。
【００４１】
ステップＳ３０５では、カウンタδをゼロに初期化する。一次光線の走査処理は、このカウンタを１つづつ増やし、走査対象の座標を１つづつ増加、あるいは減少させながら、各点上の二次光線の描画処理を繰り返すことを、走査開始座標から走査終了座標の距離分行うことで実現される。なお、カウンタが走査開始座標、走査終了座標の距離と等しくなったかどうかの条件判断は、図１１における条件判断Ｓ６００で行われる。
以上でステップＳ３００部のうち、始めて一次光線を描画する際の初期化部を終える。
【００４２】
Ｓ３０６では、現在のカウンタ値に応じた一次光線上の任意の座標（Ｘｎ、Ｙｎ）の輝度値を求める。ここで、座標（Ｘｎ、Ｙｎ）は、次の式で求められる。
【００４３】
式Ａを適用し、走査方向が正の場合、
Ｘｎ＝Ｘ０＋δ
Ｙｎ＝ｋ（Ｘ０＋δ）＋α
【００４４】
式Ａを適用し、走査方向が負の場合、
Ｘｎ＝Ｘ０−δ
Ｙｎ＝ｋ（Ｘ０−δ）＋α
【００４５】
式Ｂを適用し、走査方向が正の場合、
Ｘｎ＝ｊ（Ｙ０＋δ）＋β
Ｙｎ＝Ｙ０＋δ
【００４６】
式Ｂを適用し、走査方向が負の場合、
Ｘｎ＝ｊ（Ｙ０−δ）＋β
Ｙｎ＝Ｙ０−δ
【００４７】
さらに、この座標の輝度値ＥＮは、減衰関数ｆを用いて、
ＥＮ＝ｆ（Ｅ０、Ｄ１）
※Ｄ１は、（Ｘｎ−Ｘ０）２＋（Ｘｎ−Ｙ０）２の平方根。
となる。
【００４８】
次にステップＳ３０７では、カウンタδを１つ増やす。ステップＳ３０８においては、求められた（Ｘｎ、Ｙｎ）の座標値、ならびに輝度値ＥｎをステップＳ４００に渡す。以上でステップＳ３００の処理を終えるが、ステップＳ４００側では、次々と与えられる（Ｘｎ、Ｙｎ）ならびに、その輝度値ＥＮに対し、二次光線を描画する。換言するとステップＳ３００内部では、座標値と輝度値をステップＳ４００に渡すのみであり、メモリ１０５に対する描画処理は行わない。
【００４９】
図１５、図１６は二次光線描画の処理ステップＳ４００の詳細を示すフローチャートである。
ステップＳ４０１では、二次光線描画にあたり、その走査対象を定める。二次光線は、一次光線の法線方向に描画されるため、これは、ステップＳ３０３で求めた走査方向の逆、即ち一次光線の走査対象がＸ軸であればＹ軸、一次光線の走査対象がＹ軸であればＸ軸となる。
【００５０】
ステップＳ４０２では、走査する長さεを求める。このεは二次光線描画におけるカウンタ値と同値である。なお、二次光線の描画については、常に＋ω、−ωの両方向への描画が必要となるため、その走査方向を求める必要はない。
【００５１】
図１７に、εの算出方法について示した。
図からわかるとおり、εの算出についてはθ、ω、（Ｘｎ、Ｙｎ）の２つの情報が必要である。即ち、εは、図１７中、網がけした直角三角形の斜辺でない２辺のうち、１つの長さとなる。ここで、２次光線の走査方向がＸ軸方向であれば、上記直角三角形の水平方向の辺の線分の長さ、Ｙ軸方向であれば、同じく上記直角三角形の垂直方向の辺の線分の長さとなる。ここで、Ｘ軸方向走査時のεをεＸ、Ｙ軸方向走査時のεをεＹと置くならば、次の関係が成立する。
【００５２】
走査方向がＸ軸方向のとき、
εＸ＝ｄ１×ｔａｎ（ω）×ｓｉｎ（θ）
【００５３】
走査方向がＹ軸方向のとき、
εＹ＝ｄ１×ｔａｎ（ω）×ｃｏｓ（θ）
【００５４】
ここでｄ１は、一次光線上の点（Ｘｎ、Ｙｎ）についての光源（Ｘ０、Ｙ０）からの距離を意味し、Ｘｎ２＋Ｙｎ２の平方根に等しい。
【００５５】
条件判断Ｓ４０３では、例外処理を行う。次の４つの場合は、処理対象矩形と二次光線が交わることはないので、ステップＳ４００全体から抜け、図１１の条件判断Ｓ５００へ処理を移す。
【００５６】
走査方向がＸ軸方向のとき、
Ｘｎ＋εＸ＜０
Ｘｎ−εＸ＞ｗｉｄｔｈ
【００５７】
走査方向がＹ軸方向のとき、
Ｙｎ＋εＹ＜０
Ｙｎ−εＹ＞ｈｅｉｇｈｔ
【００５８】
ステップＳ４０４よりステップＳ４１２では、＋ω方向の描画処理を行う。
まず最初にステップＳ４０４で、走査カウンタηをゼロに初期化する。
ステップＳ４０５では、現在の描画対象の座標、即ちＸ軸方向に走査している場合は、Ｘｎ＋ηに対応するＹ座標、Ｙ軸方向に走査している場合は、Ｙｎ＋ηに対するＸ座標を求める。そのためには、二次光線の式が必要となるが、これは、先に求めた一次光線の一般式より算出することができる。
【００５９】
一次光線の一般式は、
Ｙ＝ｋＸ＋α　　…式Ａ
Ｘ＝ｊＹ＋β　　…式Ｂ
であったから、二次光線の一般式は、
（Ｙ−Ｙｎ）＝−１／ｋ（Ｘ−Ｘｎ）
（Ｘ−Ｘｎ）＝−１／ｊ（Ｙ−Ｙｎ）
∴Ｙ＝１／ｋＹ＋α’…式Ａ’→Ｘ軸方向走査時
∴Ｘ＝１／ｊＹ＋β’…式Ｂ’→Ｙ軸方向走査時
となる。
【００６０】
式Ａ’を用いるか、式Ｂ’を用いるかは、走査対象がＸ軸方向かＹ軸方向かで異なる。どちらの場合も、求めた座標を（Ｘｍ、Ｙｍ）と置く。
【００６１】
条件判断Ｓ４０６では、求めた（Ｘｍ、Ｙｍ）が、処理対象矩形の範囲内にあるかどうかを判断する。もし処理対象矩形の範囲内になければ、描画自体意味がないので、条件判断Ｓ４１１へと進む。ここで、＋ω方向の描画全部を中断しないのは、カウンタの増加による（Ｘｍ、Ｙｍ）の変動により、次の描画方向が処理対象矩形の範囲内に入る可能性が捨てきれないためである。
【００６２】
ステップＳ４０７では、二次光線の描画開始座標（Ｘｎ、Ｙｎ）と現在の着目座標（Ｘｍ、Ｙｍ）との距離を求め、これをＤ２と置く。
ステップＳ４０８では、（Ｘｍ、Ｙｍ）の輝度値ＥＮ２を求める。
先に説明の通り、この値は、減衰関数ｇ、与えられている（Ｘｎ、Ｙｎ）の輝度値ＥＮを用いて、ＥＮ２＝ｇ（ＥＮ、Ｄ２）で求まる。
【００６３】
ステップＳ４０９では、求めたＥＮ２の値が０未満かどうかを判定し、もしそうであった場合はＥＮ２＝０と置く。なお、減衰関数ｇの性質によっては、ＥＮ２がゼロになった時点で、二次光線の描画を打ちきっても構わない。例えば、ｇが負の傾きを持つ一次関数だった場合、これ以降、絶対にＥＮ２が正の値になる可能性はないためである。しかしながら、ｇが負の傾きを持つ一時関数とサイン関数の合成関数だった場合など、一旦ＥＮ２が負の値となったとしても、再び次の描画候補において正の値になる可能性がある。このため、当明細書では、処理を継続するものとして流れを説明している。
【００６４】
ステップＳ４１０が描画本体である。メモリ１０５の輝度バッファに対し、求められた（Ｘｍ、Ｙｍ）の座標に対応する輝度値ＥＮ２を書き込む。書きこまれた値は、後程、メモリ１０３のＲ，Ｇ，Ｂ値と合成されることになる。
【００６５】
条件判断Ｓ４１１では、＋ω方向の二次光線の描画終了判断を行う。もし、現在のカウンタ値ηが、先にステップＳ４０２で求めたεＸ、またはεＹと同じであれば、全ての描画が終わったことを意味するから、引き続き、−ω方向の描画処理を行う。そうでない場合は、ステップＳ４１２にてカウンタηに１を加え、再びステップＳ４０５から処理を繰り返す。
【００６６】
ステップＳ４１３からステップＳ４２０は、−ω方向の描画処理を行う。基本的には＋ω方向の描画処理と内容は同じであるが、異なるのは、次の点である。
・ステップＳ４１４において、（Ｘｍ、Ｙｍ）を求める際、ＸｎまたはＹｎにカウンタηを加えるのではなく、これを減じていること。
・条件判断Ｓ４１９において、カウンタηがεに達した際、その飛び先を条件判断Ｓ５００とすること。
以上の処理を繰り返すことにより、二次光線のメモリ１０５への描画が終わる。
【００６７】
【発明が解決しようとする課題】
従来の方法では、特に二次光線の描画処理において、「二次光線の直線式につき、一次光線との法線方向から求める必要があること」、さらに「Ｘ軸方向、Ｙ軸方向の走査時に、減衰関数の仕様に従い、現在着目している描画点（Ｘｍ、Ｙｍ）と、二次光線の描画開始座標（Ｘｎ、Ｙｎ）との距離を求める必要があること」の２つの処理が必要であったが、これは１ピクセル毎の描画処理においては、演算量が膨大であり、特に低速駆動のプロセッサを用いたシステムでは、処理時間の増大に繋がる結果となっていた。
【００６８】
そこで、本発明の目的は、放射光線の描画処理の演算量を減らすことができ、処理時間の短縮を図ることができる放射光線描画方法を提供することにある。
【００６９】
【課題を解決するための手段】
本発明は、デジタル静止画において、同画像上に放射光を擬似的に演算し描画する方法であって、光線進行方向の法線方向に光量を拡散減衰させずに、対象となる静止画の垂直方向に光量の減衰を施すものである。
【００７０】
また、本発明は、デジタル静止画において、同画像上に放射光を擬似的に演算し描画する方法であって、光線進行方向の法線方向に光量を拡散減衰させずに、対象となる静止画の水平方向に光量の減衰を施すものである。
【００７１】
更に、本発明は、デジタル静止画において、同画像上に放射光を擬似的に演算し描画する方法であって、光線進行方向の法線方向に光量を拡散減衰させずに、対象となる静止画に対し、一次光線がＸ軸方向に走査されていた場合は垂直方向、Ｙ軸方向に走査されていた場合には、水平垂直方向に光量の減衰を施すものである。
【００７２】
【発明の実施の形態】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００７３】
本発明では、従来の方法とは異なる二次光線の概念を用いるもので、図１、図２は、この新しい二次光線の概念の説明図である。
本発明では、２次光線を次のように定義する。
一次光線をＸ軸方向に走査しているとき、２次光線は、一次光線上の任意の点から発する垂直線とする（図１）。一次光線をＹ軸方向に走査しているとき、２次光線は、一次光線上の任意の点から発する水平線とする（図２）。
この方法は、実際の光線描画のエミュレーションという意味では、厳密ではないが、後述の実施結果から実用上、大きな問題はないと考えられる。
【００７４】
図１は一次光線をＸ軸方向に走査している場合を表している。ここで、日光線は、一次光線上の任意の点（Ｘｎ、Ｙｎ）上の垂直線であり、その長さは、この垂直線と、θにωを加減した傾きを持つ２つの直線との交点、ＰＵ、ＰＤを結ぶ線分の長さと等しい。
【００７５】
従って、この場合の二次光線の描画は次の２ステップに分けて考えることができる。
（１）（Ｘｎ、Ｙｎ）より、Ｙ軸方向に＋方向への描画を行う場合、
・Ｙｎを１づつ加算し、｜Ｘ０−Ｘｎ｜×（ｔａｎ（θ＋ω）−ｔａｎ（θ））分繰り返す。
・減衰関数ｇに与える距離Ｄ２は、現在のＹｍから二次光線原点のＹ座標Ｙｎを引いたもので求まる。
（２）（Ｘｎ、Ｙｎ）より、Ｙ軸方向に−方向への描画、
・Ｙｎを１づつ減じ、｜Ｘ０−Ｘｎ｜×（ｔａｎ（θ）−ｔａｎ（θ−ω））分繰り返す。
・減衰関数ｇに与える距離Ｄ２は、単純に二次光線原点のＹ座標Ｙｎから、現在のＹｍを引いたもので求まる。
【００７６】
図２は、一次光線をＹ軸方向に走査している場合を表している。この場合も、一次光線をＸ軸方向に走査している場合と同様に、二次光線の描画は、次のステップに簡略化できる。
（１）（Ｘｎ、Ｙｎ）より、Ｘ軸方向に＋方向への描画、
・Ｘｎを１づつ加算し、｜Ｙ０−Ｙｎ｜×（ｔａｎ（１／２π−θ＋ω）−ｔａｎ（１／２π−θ））分繰り返す。
・減衰関数ｇに与える距離Ｄ２は、単純に現在のＸｍから二次光線原点のＸ座標Ｘｎを引いたもので求まる。
（２）（Ｘｎ、Ｙｎ）より、Ｘ軸方向に−方向への描画、
・Ｘｎを１づつ減じ、｜Ｙ０−Ｙｎ｜×（ｔａｎ（１／２π−θ）−ｔａｎ（１／２π−θ−ω））分繰り返す。
・減衰関数ｇに与える距離Ｄ２は、単純に二次光線原点のＸ座標Ｘｎから、現在のＸｍを引いたもので求まる。
【００７７】
以上の改善により、一次光線の法線としての二次光線の算出の必要がなくなり、さらに、二次光線描画走査時、減衰関数ｇに与えるべき、一次光線上の二次光線原点から、現在の描画点までの距離Ｄ２の算出が整数による演算処理となり、負荷が軽減される。なお、副次効果として、Ｄ２を、そのまま二次光線描画時のループカウンタとして用いることができるというメリットもある。
【００７８】
前述の通り、本発明が従来技術と異なるのは、主に二次光線の描画処理であるが、一次光線の描画についても、その走査幅の範囲が一部異なる。
【００７９】
【表３】
2004126697.tif 000005
【００８０】
表３に示したとおり、一次光線の走査の範囲は、特にマージンを設定する必要はない。これは、二次光線の走査が水平、垂直方向に限定されるため、処理対象矩形の範囲内を走査すれば、必ず二次光線が描かれる確証があるためである。そのため、図１２中のステップＳ３０４における本実施形態と従来との相違は、走査開始範囲の定義が異なるのみであり、基本的処理内容に差はない。
【００８１】
また、二次光線描画部分については、ステップＳ４００における処理内容を図３、図４に示す。
ステップＮＳ４０１では、二次光線描画にあたり、その走査対象を定める。二次光線は、図１、図２に定義した通り、一次光線がＸ軸方向に走査されていた場合は、垂直線、一次光線がＹ軸方向に走査されていた場合には、水平線となる。
【００８２】
ステップＮＳ４０２では、走査する長さε１とε２を求める。従来の技術では、＋ω方向描画時も、−ω方向描画時も、走査する長さεは同じ値であったが、新しい定義に従うと、これらの値は異なる。ここでは、ε１を＋ω方向、ε２を−ω方向とするならば、これらの値は表４のとおりとなる。
【００８３】
【表４】
2004126697.tif 000006
【００８４】
条件判断ＮＳ４０３では、例外処理を行う。次の４つの場合は、処理対象矩形と二次光線が交わることはないので、ステップＮＳ４００全体から抜け、図１１の条件判断Ｓ５００へ処理を移す。
【００８５】
二次光線の走査方向がＸ軸方向のとき、
Ｘｎ＋ε１＜０
Ｘｎ−ε２＞ｗｉｄｔｈ
【００８６】
二次光線走査方向がＹ軸方向のとき、
Ｙｎ＋ε１＜０
Ｙｎ−ε２＞ｈｅｉｇｈｔ
【００８７】
ステップＮＳ４０４よりステップＮＳ４１２では、＋ω方向の描画処理を行う。
まず最初にステップＮＳ４０４で、走査カウンタηをゼロに初期化する。
ステップＮＳ４０５では、現在の描画対象の座標、即ちＸ軸方向に走査している場合は、Ｘｎ＋ηに対応するＹ座標、Ｙ軸方向に走査している場合は、Ｙｎ＋ηに対するＸ座標を求めるが、二次光線をＸ軸方向に走査している場合、Ｙの値は変化せず、また二次光線をＹ軸方向に走査している場合、Ｘの値は変化しないのであるから、求める値（Ｘｍ、Ｙｍ）は、次の通りとなる。
【００８８】
Ｘ軸方向走査時、
（Ｘｍ、Ｙｍ）＝（Ｘｎ＋η、Ｙｎ）
Ｙ軸方向走査時、
（Ｘｍ、Ｙｍ）＝（Ｘｎ、Ｙｎ＋η）
【００８９】
条件判断ＮＳ４０６では、求めた（Ｘｍ、Ｙｍ）が、処理対象矩形の範囲内にあるかどうかを判断する。もし処理対象矩形の範囲内になければ、描画自体意味がないので、条件判断Ｓ４１１へと進む。ここで、＋ω方向の描画全部を中断しないのは、カウンタの増加による（Ｘｍ、Ｙｍ）の変動により、次の描画方向が処理対象矩形の範囲内に入る可能性が捨てきれないためである。
【００９０】
ステップＮＳ４０８では、（Ｘｍ、Ｙｍ）の輝度値ＥＮ２を求める。
先に説明の通り、この値は、減衰関数ｇ、（Ｘｎ、Ｙｎ）の輝度値ＥＮを用いて、ＥＮ２＝ｇ（ＥＮ、Ｄ２）で求まる。
【００９１】
ところで、既に、ＥＮは与えられているため、必要となるのは（Ｘｍ、Ｙｍ）と（Ｘｎ、Ｙｎ）間の距離Ｄ２であるが、新たな二次光線の定義に従うと、これは、カウンタ値ηに等しい。即ち、対象点の輝度値ＥＮ２は、ｇ（ＥＮ、η）で求まる。
【００９２】
以下、ステップＮＳ４０９〜ＮＳ４１２に至る一連の処理は、基本的には、従来の技術で対応するＳ４０９〜Ｓ４１２の処理内容と変わらない。しかしながら、条件判断ＮＳ４１１では、ηの値をε１と比較する必要がある。これは、εの値が＋ω方向と−ω方向の処理で異なるためである。
【００９３】
ステップＮＳ４１３からステップＮＳ４２０では、−ω方向の描画処理を行う。基本的には＋ω方向の描画処理と内容は同じであるが、異なるのは、次の点である。
・ステップＮＳ４１４において、（Ｘｍ、Ｙｍ）を求める際、ＸｎまたはＹｎにカウンタηを加えるのではなく、これを減じていること。
・条件判断ＮＳ４１９において、カウンタηの比較対象をε２していること。
・条件判断ＮＳ４１９において、カウンタηがε２と同じだった場合、そのとび先を図１１のＳ５００としていること。
【００９４】
また、従来存在していたＤ２を求めるためのステップＳ４１６についても、＋ω方向の描画時と同等の理由で、存在しない。Ｄ２は即ちηであり、これがそのまま減衰関数ｇに渡せるためである。
【００９５】
さらに、本発明の二次光線の描画につき、従来と大きく異なるのは、座標値や関連座標間の距離の計算において実数演算が不要となることがある。従来技術の方法においては、二次光線の描画時に、そのまま整数でカウンタを増減させ演算を行った場合、誤差が蓄積され、実際に描画されない点が生じる場合がある。これを防ぐためには、実装時の工夫として、少し大きめの座標系で予め演算を行っておく、あるいは、カウンタの増減の単位を小数にするなどしてオーバーサンプリング処理を行う必要があった。
【００９６】
しかしながら、本発明で定義した二次光線の手法に従う場合、二次光線上は、垂直線分、水平線分であるがゆえに、Ｘ軸やＹ軸の座標を１づつ増減させても、これに対応する点はデジタル座標系上といえども必ず存在する。そのため、従来必要であったオーバーサンプリングが不要となり、これが処理速度の改善の１つの理由となっている。従い、演算量を削減すると同時に、視覚効果上の品質の劣化を抑制する。
【００９７】
以上の処理を繰り返すことにより、二次光線のメモリ１０５への描画が終わる。描画後の合成処理その他については、従来技術と同等の処理を行う。
【００９８】
図５は、本発明によるマスク面への描画例を示す説明図である。これは、６４０×４８０ピクセルの矩形に対して放射光線１０の処理を行ったもので、減衰関数ｆはＥＮ＝１９２の固定とし、減衰関数ｇについては、単純に一次光線上の点（Ｘｎ、Ｙｎ）と二次光線の描画点の距離に反比例するものとした。また、光源座標は（３００、３００）、位相θ＝１０度、拡散角ω＝１５度である。
さらに、図６は、図５の放射光線１０を他のデジタル静止画と合成したものである。
【００９９】
図５の処理を、従来技術と本実施形態の両方で行って比較すると、それぞれに計算誤差によるストライプ上のノイズが認められたが、これらは、本実施形態では垂直方向に、従来技術では一次光線の法線方向に存在している。これらノイズの方向を除けば、その品位に大差はない。
【０１００】
このようなノイズの方向は、図６のような合成処理により肉眼では非常に確認し辛くなる。実際、図５のように、放射光線１０のみを用いることは少なく、図６のように何らかの画像との合成を行って利用するものであり、本実施形態の処理方法は、従来技術の代替案として十分である。
【０１０１】
次に、従来技術と本実施形態をパーソナルコンピュータ上で実装した結果に基き、コードサイズの削減効果につき説明する。開発にはＭｉｃｒｏｓｏｆｔ　Ｖｉｓｕａｌ　Ｃ＋＋（Ｒ）　Ｖｅｒ６．０を用い、Ｍｉｃｒｏｓｏｆｔ　ＷＩＮＤＯＷＳ（Ｒ）上で動作するコンソールアプリケーションとして設計した。この結果、
・従来技術による二次光線の描画を行うアプリケーションサイズ（全体）→２４５７６バイト
・本発明による二次光線の描画を行うアプリケーションサイズ（全体）→２０４８０バイト
【０１０２】
この結果は、上記開発環境のコンパイラの制約や仕様に依存する部分が大きい。特に従来技術では実数演算を多用していることから、これが結果に多分に影響したとも考えられる。従って、ここでは定量的な分析は行わないが、少なくとも本実施形態により、幾許かのコード量削減効果があることは確かである。
【０１０３】
次に、処理速度向上効果について説明する。
表５は、本実施形態、従来技術（従来技術１）、ならびに従来技術を用いるもののオーバーサンプリング処理を行わない場合（従来技術２）につき、それぞれ拡散角ω＝５度、３０度、４５度、６０度の場合につき、それぞれランダムに１０個の光源座標ならびに位相を定め、その処理時間の平均を計測し、ミリ秒単位で表したものである（小数点第２位以下切り捨て）。なお、処理対象の静止画の解像度は６４０×４８０ピクセルであり、処理時間は、一次光線の描画時間も含んでいる（当然、一次光線の描画処理については、各条件で統一されており、全く同じコーディングがされている）。
【０１０４】
ここで、拡散角ωを比較条件に選んだのは、二次光線の描画の負荷はωの大きさに依存するためである。
なお、測定に用いたパーソナルコンピュータは、Ｉｎｔｅｌ　ＰＥＮＴＩＵＭ（Ｒ）ＩＩＩプロセッサを駆動周波数４５０ＭＨｚで動作させ、ＤＲＡＭは２５４ＭＢ搭載したものである。
【０１０５】
【表５】
2004126697.tif 000007
【０１０６】
この結果、本実施形態、従来技術を本明細書で説明したアルゴリズム通りに実装したものであり、両者とも最適化が施されていないことに注意されたい。
本実施形態と従来技術１を比較すると、平均して７倍程度の速度差があることがわかる。なお、オーバーサンプリングを施さない従来技術２と比較した場合、その差は３倍〜５倍程度である。
【０１０７】
従い、オーバーサンプリングによる処理負荷がかなりのウエイトを締めるとはいえ、本実施形態で導入した新しい二次光線の概念により、オーバーサンプリングを除く、純粋なアルゴリズムにおいても、３倍〜５倍程度の速度改善がなされていることがわかる。
【０１０８】
【発明の効果】
本発明によれば、光線進行方向の法線方向に光量を拡散減衰させずに、対象となる静止画の水平方向あるいは垂直方向に光量の減衰を施すので、（１）品位については従来技術と遜色のない放射光の描画が可能なこと、（２）コード量については、少なくとも従来技術より削減がされていること、（３）処理速度については従来技術と比較して、数倍程度の改善が図られていること、という効果を奏する。
【図面の簡単な説明】
【図１】一次光線をＸ軸方向に走査しているときの二次光線の概念の説明図である。
【図２】一次光線をＹ軸方向に走査しているときの二次光線の概念の説明図である。
【図３】本発明における二次光線描画のステップＳ４００における処理内容を示すフローチャートである。
【図４】図３に続く本発明における二次光線描画のステップＳ４００における処理内容を示すフローチャートである。
【図５】本発明によるマスク面への描画例を示す説明図である。
【図６】図５を他のデジタル静止画と合成した例を示す説明図である。
【図７】放射光線描画の処理前と処理後を示す説明図である。
【図８】光源、位相、拡散角の関係を示す説明図である。
【図９】各点における光線強度の減衰の関係を示す説明図である。
【図１０】従来技術における放射光線描画システムのブロック図である。
【図１１】光線形状描画処理の流れを示すフローチャートである。
【図１２】ステップＳ１００、ならびにＳ２００の詳細を示すフローチャートである。
【図１３】ステップＳ３００の詳細を示すフローチャートである。
【図１４】走査対象がＸ軸方向、走査方向が正の場合の切り分け処理の概念図である。
【図１５】二次光線描画の処理ステップＳ４００の詳細を示すフローチャートである。
【図１６】図１５に続く二次光線描画の処理ステップＳ４００の詳細を示すフローチャートである。
【図１７】εの算出方法について示す説明図である。
【符号の説明】
ＩＦ１　デジタル静止画の情報ソース
ＩＦ２　制御情報。
１００，１０６　入力装置
１０１，１１３　記録装置
１０２，１０４，１１０　処理装置
１０３，１０５，１０８　メモリ
１１１　出力処理装置。
１０７，１１２　表示装置
【図１】
2004126697.tif 000008
【図２】
2004126697.tif 000009
【図３】
2004126697.tif 000010
【図４】
2004126697.tif 000011
【図５】
2004126697.tif 000012
【図６】
2004126697.tif 000013
【図７】
2004126697.tif 000014
【図８】
2004126697.tif 000015
【図９】
2004126697.tif 000016
【図１０】
2004126697.tif 000017
【図１１】
2004126697.tif 000018
【図１２】
2004126697.tif 000019
【図１３】
2004126697.tif 000020
【図１４】
2004126697.tif 000021
【図１５】
2004126697.tif 000022
【図１６】
2004126697.tif 000023
【図１７】
2004126697.tif 000024