(57)【要約】【課題】画像処理のための水平線の指定技術に関し、より水平線らしさの高い線を簡便に水平線として指定可能とする。【解決手段】水平線存在確率算出部１０１は、水平線の存在確率を入力画像１２０の水平方向のラインごとに算出する。水平線指定ガイド表示部１０２は、水平線存在確率算出部１０１が算出した存在確率に応じた態様で、水平線を指定するためのガイド表示を行う。水平線決定部１０３は、ユーザの指示に基づいて、現在のガイド表示の位置を水平線として決定し、３Ｄ画像生成部１１０に出力する。【選択図】図１
2015103010.tif 000002
【特許請求の範囲】
【請求項１】
２次元の入力画像から３次元的な出力画像を生成するために前記入力画像上で水平線を指定するための方法であって、
水平線の存在確率を前記入力画像の水平方向のラインごとに算出する水平線存在確率算出ステップと、
前記存在確率に応じた態様で前記水平線を指定するためのガイド表示を行う水平線指定ガイド表示ステップと、
前記ガイド表示に基いて、ユーザの指示により前記水平線を決定する水平線決定ステップと、
をコンピュータに実行させるための水平線指定方法。
【請求項２】
前記水平線存在確率算出ステップは、
前記入力画像にエッジ抽出を実行してエッジ画素を抽出するステップと、
前記水平方向のラインごとに、当該ライン上に存在する前記エッジ画素の総量を算出するステップと、
全ての前記水平方向のラインに対して算出された前記エッジ画素の総量の合計値を算出するステップと、
前記水平方向のラインごとに、当該ラインに対して算出された前記エッジ画素の総量を前記合計値で除算して得られる値として、当該ラインに対応する水平線存在確率を算出するステップと
を含むことを特徴とする請求項１に記載の水平線指定方法。
【請求項３】
前記水平線指定ガイド表示ステップは、
前記水平線を指定するための水平線バーを、前記入力画像上を水平線に対して垂直な方向に繰り返し移動させながら表示するステップと、
前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの移動速度または表示状態を、当該ラインに対応して算出されている前記存在確率に応じて変化するように制御するステップと、
を含むことを特徴とする請求項１または２のいずれかに記載の水平線指定方法。
【請求項４】
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの移動速度を、当該ラインに対応して算出されている前記存在確率が高いほど遅くなるように制御するステップを含む、
ことを特徴とする請求項３に記載の水平線指定方法。
【請求項５】
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの表示の点滅状態を、当該ラインに対応して算出されている前記存在確率が高いほど変化するように制御するステップを含む、
ことを特徴とする請求項３に記載の水平線指定方法。
【請求項６】
前記水平線指定ガイド表示ステップは、
ユーザのマウス入力操作に応じて、前記水平線を指定するための水平線バーを前記入力画像上で水平線に対して垂直な方向に移動させて表示するステップと、
前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの表示状態を、当該ラインに対応して算出されている前記存在確率に応じて変化するように制御するステップと、
を含むことを特徴とする請求項１または２のいずれかに記載の水平線指定方法。
【請求項７】
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの表示の点滅状態を、当該ラインに対応して算出されている前記存在確率が高いほど変化するように制御するステップを含む、
ことを特徴とする請求項６に記載の水平線指定方法。
【請求項８】
前記水平線決定ステップは、
前記ユーザが指示を行ったときの前記ガイド表示の位置の近傍の前記水平方向のラインの前記存在確率を探索することにより、最も存在確率が高いラインの位置を前記水平線として決定する、
ことを特徴とする請求項１ないし７のいずれかに記載の水平線指定方法。
【請求項９】
前記水平線決定ステップは、
前記ユーザが指示を行ったときの前記ガイド表示の位置に対応する前記水平方向のラインを中心として、当該ラインを第１の角度範囲内で当該第１の角度よりも小さい第２の角度ずつ傾けて得られる複数の傾きラインごとに水平線の存在確率を算出するステップと、
前記複数の傾きラインのうち当該傾きラインに対応する前記存在確率が最も大きい傾きラインを前記水平線として決定するステップと、
を含むことを特徴とする請求項１ないし８のいずれかに記載の水平線指定方法。
【請求項１０】
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置をガイド表示するときに、
当該ガイド表示の位置に対応する前記水平方向のラインを中心として、当該ラインを第１の角度範囲内で当該第１の角度よりも小さい第２の角度ずつ傾けて得られる複数の傾きラインごとに水平線の存在確率を算出するステップと、
前記複数の傾きラインのうち当該傾きラインに対応する前記存在確率が最も大きい傾きラインに沿って、前記水平線を指定するための水平線バーを表示する、
ことを特徴とする請求項３ないし７のいずれかに記載の水平線指定方法。
【請求項１１】
２次元の入力画像から３次元的な出力画像を生成するために前記入力画像上で水平線を指定するためのプログラムであって、
水平線の存在確率を前記入力画像の水平方向のラインごとに算出する水平線存在確率算出ステップと、
前記存在確率に応じた態様で前記水平線を指定するためのガイド表示を行う水平線指定ガイド表示ステップと、
ユーザの指示に基づいて、現在の前記ガイド表示の位置を前記水平線として決定する水平線決定ステップと、
をコンピュータに実行させるための水平線指定プログラム。
【請求項１２】
２次元の入力画像から３次元的な出力画像を生成するために前記入力画像上で水平線を指定するための装置であって、
水平線の存在確率を前記入力画像の水平方向のラインごとに算出する水平線存在確率算出部と、
前記存在確率に応じた態様で前記水平線を指定するためのガイド表示を行う水平線指定ガイド表示部と、
前記ガイド表示に基いて、ユーザの指示により前記水平線を決定する水平線決定部と、
を備えることを特徴とする水平線指定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、立体的な画像を扱う画像処理のための水平線の指定方法、プログラム、および装置に関する。
【背景技術】
【０００２】
２次元の絵や写真（以下これを「２Ｄ画像」と呼ぶ）などから３次元的な立体感のある画像（以下これを「３Ｄ画像」と呼ぶ）を生成する技術がある。このような３Ｄ画像の生成において、２Ｄ画像に水平線の要素が多い場合には、２Ｄ画像から水平線要素が抽出され、その抽出された水平線の位置で２Ｄ画像が折り曲げられることにより、３Ｄ画像が生成される。
【０００３】
２Ｄ画像から自動的にユーザの希望する３Ｄ画像を生成することは難しいため、ユーザが変換過程を見ながらコンピュータに順次指示を与えていくことが一般的である。
【０００４】
従来、２Ｄ画像から擬似的な３Ｄ画像を生成する際に、人工物に対応する画像のみ奥行き方向の曲率を弱めることで、自然則を用いた奥行き推定のエラーを最小限に抑え、変換された３Ｄ画像に違和感や破綻が生じるのを回避する技術が知られている（例えば特許文献１に記載の技術）。この従来技術ではまず、２Ｄ画像から水平方向に延伸する水平直線が抽出されて水平直線が複数抽出される。このとき、複数の水平直線のうちいずれか２つの水平直線において水平方向の位置が等しい部分がある場合、複数の水平直線の外枠に相当する領域を人工物領域として特定される。そして、人工物領域における、奥行きモデルの曲率の度合いを示す曲率係数が、他の領域より低く設定され、人工物領域に曲率係数を反映した奥行きモデルが２Ｄ画像に与えられることにより、擬似３Ｄ画像が生成される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２３４５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の従来技術は、２Ｄ画像を３Ｄ画像に変換する際に、人工物か自然物かを区別するために水平線を抽出するものであって、自然な３Ｄ画像を生成するために必要となる正確な水平線を決定することはできないという問題点を有していた。
【０００７】
さらに従来は、手動指定にて水平線を簡便かつ効果的に指定する方法がなかった。
そこで、本発明は、より水平線らしさの高い線を簡便に水平線として指定可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
態様の一例では、２次元の入力画像から３次元的な出力画像を生成するために入力画像上で水平線を指定するための方法であって、水平線の存在確率を入力画像の水平方向のラインごとに算出する水平線存在確率算出ステップと、存在確率に応じた態様で水平線を指定するためのガイド表示を行う水平線指定ガイド表示ステップと、前記ガイド表示に基いて、ユーザの指示により水平線を決定する水平線決定ステップと、をコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、より水平線らしさの高い線を簡便に水平線として指定することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態の機能ブロック図である。
【図２】本発明の一実施形態を実現可能なコンピュータのハードウェア構成例を示す図である。
【図３】本発明の一実施形態における水平線指定処理の例を示すフローチャートである。
【図４】水平線存在確率の算出処理の例を示すフローチャートである。
【図５】水平線存在確率の算出処理の説明図である。
【図６】水平線バーの移動表示処理の説明図である。
【図７】水平線バーの表示方法の変更処理の説明図である。
【図８】本発明の他の実施形態の説明図である。
【図９】本発明の他の実施形態の処理の例を示すフローチャートである。
【図１０】３Ｄ画像生成処理の例を示すフローチャートである。
【図１１】３Ｄ画像生成処理の説明図である。
【図１２】生成された３Ｄ画像の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図１は、本発明の一実施形態の機能ブロック図である。本実施形態は、２次元の入力画像１２０から３次元的な出力画像１３０を生成するために、入力画像１２０上で水平線を指定するための水平線指定部１００を含む３Ｄ画像生成システムである。
【００１２】
水平線指定部１００にてユーザによって入力画像１２０内の水平線が指定されると、３Ｄ画像生成部１１０が、その水平線を基準として入力画像１２０に対して３Ｄ画像生成処理を実行することにより、３次元的な出力画像（３Ｄ画像）１３０を生成して出力する。
【００１３】
水平線指定部１００は、水平線存在確率算出部１０１、水平線指定ガイド表示部１０２、および水平線決定部１０３を備える。
【００１４】
水平線存在確率算出部１０１は、水平線の存在確率を入力画像１２０の水平方向のラインごとに算出する。水平方向のラインは１画素単位からなるラインに限らず、複数画素からなるある程度の太さを持ったラインでもよい。
【００１５】
水平線指定ガイド表示部１０２は、水平線存在確率算出部１０１が算出した存在確率に応じた態様で、水平線を指定するためのガイド表示を行う。
【００１６】
水平線決定部１０３は、ユーザの指示に基づいて、現在のガイド表示の位置を水平線として決定し、３Ｄ画像生成部１１０に出力する。
【００１７】
図２は、本発明の一実施形態を実現可能なコンピュータのハードウェア構成例を示す図である。
【００１８】
図２に示されるコンピュータは、ＣＰＵ２０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ：読出し専用メモリ）２０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３、入力装置２０４、出力装置２０５、外部記憶装置２０６、通信インタフェース２０７、および可搬記録媒体２０９が挿入される可搬記録媒体駆動装置２０８を有し、これらがバス２１０によって相互に接続された構成を有する。同図に示される構成は上記システムを実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【００１９】
ＣＰＵ２０１は、当該コンピュータ全体の制御を行う。ＲＯＭ２０２は、水平線指定処理プログラムや３Ｄ画像生成処理プログラムが格納される記憶装置である。ＲＡＭ２０３は、上記各プログラムの実行、画像データの更新等の際に、上記プログラム又はデータを一時的に格納する読み書き可能メモリである。ＣＵＰ２０１は、プログラムをＲＯＭ２０２または外部記憶装置４０７からＲＡＭ２０３に読み出して実行することにより、本実施形態の３Ｄ画像生成システム全体の制御を行う。
【００２０】
入力装置２０４は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をＣＰＵ２０１に通知する。ユーザは、入力装置４０４を用いて、後述する水平線の決定等や、３Ｄ画像の生成指示等を行う。
【００２１】
出力装置２０５は、ＣＰＵ２０１の制御によって、外部記憶装置２０６中の入力画像１２０や出力画像１３０を、ディスプレイ表示装置や印刷装置に出力する。
【００２２】
外部記憶装置２０６は、例えばハードディスク記憶装置であり、入力画像１２０や出力画像１３０、その他各種データの保存に用いられる。
【００２３】
可搬記録媒体駆動装置２０８は、光ディスクやＳＤＲＡＭ、コンパクトフラッシュ等の可搬記録媒体２０９を収容するもので、外部記憶装置２０６の補助の役割を有する。
【００２４】
通信インターフェース２０７は、例えばＬＡＮ（ローカルエリアネットワーク）又はＷＡＮ（ワイドエリアネットワーク）の通信回線を接続するための装置である。
【００２５】
本実施形態によるシステムは、図３、図４、図９、または図１０のフローチャート等で実現される図１の各機能部の機能を搭載したプログラムをＣＰＵ２０１が実行することで実現される。そのプログラムは、例えば外部記憶装置２０６や可搬記録媒体２０９に記録して配布してもよく、或いはネットワーク接続装置２０７によりネットワークから取得できるようにしてもよい。
【００２６】
本実施形態における水平線指定処理および３Ｄ画像生成処理等の詳細について、以下に順次説明する。なお、随時図１または図２の各部分を参照するものとする。
【００２７】
図３は、本発明の一実施形態における水平線指定処理の例を示すフローチャートである。この処理は、ＣＰＵ２０１が、ＲＯＭ２０２からＲＡＭ２０３に読み出した水平線指定処理プログラムを実行することにより実現され、図１の水平線指定部１００の機能を実現するものである。
【００２８】
まず、ＣＰＵ２０１は、例えば外部記憶装置２０６から入力画像１２０を入力し、ＲＡＭ２０３に記憶させる（ステップＳ３０１）。
【００２９】
次に、ＣＰＵ２０１は、水平線存在確率の算出処理を実行する（ステップＳ３０２）。図４は、図３のステップＳ３０２の水平線存在確率の算出処理の例を示すフローチャートである。
【００３０】
図４において、ＣＰＵ２０１はまず、ＲＡＭ２０３に読み込んだ入力画像１２０に対してエッジ抽出処理を実行することにより、エッジ画像を生成する（ステップＳ４０１）。図５（ａ）は、エッジ抽出処理により生成されるエッジ画像の例を示す図である。白画素がエッジを示すエッジ画素であり、黒画素がエッジ以外の領域を示す画素である。
【００３１】
次に、ＣＰＵ２０１は、入力画像１２０上で例えば上端から下端に向かって、ステップＳ４０２で水平方向の１ラインずつを指定しながら、ステップＳ４０４で最終ラインに達したと判定するまで、ステップＳ４０３で１ライン分のエッジ画素の総量を算出する処理を繰返し実行する（ステップＳ４０４の判定がＮＯの繰返し）。これらの一連の処理により、入力画像１２０の水平方向のラインごとに、そのライン上に存在するエッジ画素の総量が算出される。なお、１ラインは、例えば３画素程度の線幅を有する。
【００３２】
次に、ＣＰＵ２０１は、入力画像１２０上の全ての水平方向のラインに対して算出されたエッジ画素の総量の合計値を算出する（ステップＳ４０５）。
【００３３】
そして、ＣＰＵ２０１は、水平方向のラインごとに、そのラインに対してステップＳ４０３で算出されたエッジ画素の総量をステップＳ４０５で算出された合計値で除算して得られる値として、そのラインに対応する水平線存在確率を算出し、ＲＡＭ２０３に記憶させる（ステップＳ４０６）。
【００３４】
図５（ｂ）は、図５（ａ）に例示される入力画像１２０に対して上述の水平線存在確率の算出処理が実行されることによって算出される、水平方向のラインごとの水平線存在確率のデータ分布を示している。例えば、ピーク５０１から破線によって伸びている図５（ａ）に示される入力画像１２０の水平方向のライン上には、海の水平線による白い直線で示されるエッジ画素が並んでいる。これにより、ピーク５０１が示す水平線存在確率の値は、図５（ｂ）に示される水平線存在確率のデータ分布内で最大値を示していることがわかる。これに対して、空に相当する領域部分にはエッジらしきものがほとんど存在せず、この領域に対応する各水平方向のラインごとの水平線存在確率のデータ分布は、小さい値で推移していることがわかる。このように、本実施形態で算出される水平方向のラインごとの水平線存在確率の値は、その水平方向のラインが水平線らしいか否かを精度良く示す指標となっている。
【００３５】
ＣＰＵ２０１は、以上のようにして図３のステップＳ３０２で入力画像１２０上の水平方向のラインごとに水平線存在確率を算出したら、ＣＰＵ２０１は、入力画像１２０を出力装置２０５のディスプレイに表示しながら、その入力画像１２０上で水平線バーの移動表示処理を開始する（ステップＳ３０３）。図６は、水平線バーの移動表示処理の説明図である。入力画像１２０上の水平方向の幅いっぱいに数ピクセル幅の水平線バー６０１が表示される。ＣＰＵ２０１は、入力画像１２０上で、この水平線バーを、まず矢印６０２に示されるように上端から下端に向かって下方向に移動表示させる。ＣＰＵ２０１は、水平線バー６０１が入力画像１２０の下端に達したら、水平線バー６０１の移動方向を、矢印６０３に示されるように下方向の移動表示から上方向の移動表示に折り返し、その後、矢印６０４に示されるように下端から上端に向かって上方向に移動表示させてよい。特には図示しないが、ＣＰＵ２０１は、水平線バー６０１が入力画像１２０の上端に達したら、水平線バー６０１の移動方向を、上方向の移動表示から下方向の移動表示に折り返し、その後、再び矢印６０２に示されるように上端から下端に向かって下方向に移動表示させてよい。
【００３６】
ＣＰＵ２０１は、水平線バー６０１をステップＳ３０３で所定量移動させるごとに、水平線バーの表示方法の変更処理を実行する（ステップＳ３０４）。図７は、水平線バーの表示方法の変更処理の説明図である。ＣＰＵ２０１は、図７（ａ）に示されるように入力画像１２０上の水平線バー６０１が現在位置する水平方向のラインに対応して、ステップＳ３０２で算出しＲＡＭ２０３に記憶させてある図７（ｂ）に示される水平線存在確率の値を参照する。
【００３７】
そして、ＣＰＵ２０１は、参照した水平線存在確率の値が例えば図７（ｂ）の７０２に示されるように小さい値である場合には、現在水平線バー６０１が位置する水平方向のラインは水平線らしくないとして、水平線バー６０１を速く移動させる。一方、ＣＰＵ２０１は、参照した水平線存在確率の値が例えば図７（ｂ）の７０１に示されるように大きい値である場合には、現在水平線バー６０１が位置する水平方向のラインは水平線らしいとして、ユーザに注意を喚起させるために水平線バー６０１を遅く移動させる。
【００３８】
ユーザは、ディスプレイに表示される入力画像１２０上の水平線バー６０１を見ながら、水平線バー６０１がゆっくりと移動する部分に注意をしながら、水平線の位置を指定することができる。水平線の位置の指定は例えば、入力装置２０４であるキーボードの特定のキーやマウスのボタンを押下（クリック）することにより行うことができる。ＣＰＵ２０１は、ユーザが水平線の位置指定を行い、さらにその位置指定に対してキーやマウスボタンの入力によって確定（ＯＫ）を行ったか否かを判定する（ステップＳ３０５）。
【００３９】
ユーザが水平線の位置指定および確定を行っておらずステップＳ３０５の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ３０３の処理に戻って、水平線バー６０１の移動表示処理（ステップＳ３０３）、水平線バーの表示方法の変更（移動速度の制御）（ステップＳ３０４）、および水平線の位置指定および確定の判定（ステップＳ３０５）の各処理を繰り返し実行する。
【００４０】
ユーザが水平線の位置指定および確定を行いステップＳ３０５の判定がＹＥＳになると、ＣＰＵ２０１は、そのとき水平線バー６０１が位置する水平方向のライン位置を水平線として決定し、ＲＡＭ２０３に記憶させる。
【００４１】
以上の水平線指定処理において、ステップＳ３０２の水平線存在確率の算出処理は図１の水平線存在確率算出部１０１（水平線存在確率算出ステップ）の機能を実現する。また、ステップＳ３０３の水平線バーの移動表示の開始処理とステップＳ３０４の水平線バーの表示方法の変更処理は図１の水平線指定ガイド表示部１０２（水平線指定ガイド表示ステップ）の機能を実現する。さらに、ステップＳ３０５の水平線の位置指定および確定の判定処理は図１の水平線決定部１０３（水平線決定ステップ）の機能を実現する。
【００４２】
以上のようにして、本実施形態では、ユーザは、入力画像１２０上で水平線らしい位置の指定に関して的確なアシストを受けることができ、より水平線らしさの高い線を簡便に水平線として指定することが可能となる。
【００４３】
上述した図３のステップＳ３０４の水平線バーの表示方法の変更処理では、水平線バー６０１が位置する水平方向のラインの水平線存在確率の値に応じて、水平線バー６０１の移動速度が制御された。これに対して、ＣＰＵ２０１は、ステップＳ３０４の水平線バーの表示方法の変更処理において、水平線バー６０１が位置する水平方向のラインの水平線存在確率の値に応じて、水平線バー６０１の表示の点滅状態を制御してもよい。例えば、ＣＰＵ２０１は、そのラインに対応して算出されている存在確率の値が大きいときには水平線バー６０１が速く点滅するように表示し、存在確率の値が小さいときには水平線バー６０１がほとんど点滅しないように表示する。このような表示方法の変更によっても、ユーザは入力画像１２０上で水平線らしい位置を簡便に認識し、その指定を行うことが可能となる。
【００４４】
上述した図３のステップＳ３０３の水平線バーの移動表示開始処理では、水平線バー６０１は入力画像１２０の上端と下端の間を垂直方向に自動的に速度制御されながら移動した。これに対して、例えばユーザが入力装置２０４であるマウスを操作して入力画像１２０上の任意の位置にマウスカーソルを持って行ったときに、そのカーソル位置に水平線バー６０１が表示されるようにし、マウスカーソルを移動させれば水平線バー６０１もそれに合わせて移動するように制御されてもよい。この場合例えば、ＣＰＵ２０１は、水平線バー６０１が位置する水平方向のラインの水平線存在確率の値が大きいときには水平線バー６０１が速く点滅するように表示し、存在確率の値が小さいときには水平線バー６０１がほとんど点滅しないように表示する。このような水平線バーの移動方法および表示方法の変更によっても、ユーザは入力画像１２０上で水平線らしい位置を簡便に認識し、その指定を行うことが可能となる。
【００４５】
上述した図３のステップＳ３０５の水平線の位置指定および確定の判定処理では、ユーザが例えばマウスボタンを押下したときの水平線バーが位置する水平方向のラインの位置が水平線として決定された。しかし、マウスボタンの操作等では、位置指定時にボタンを押下するタイミングが微妙にずれてしまい、例えば図８に示されるように、押下時点での水平線バーの位置８０１が水平線の正しい位置８０２からずれてしまう場合が起こりえる。そこで、ＣＰＵ２０１は、図３のステップＳ３０５の実行時に、ユーザが位置指定を行ったときの水平線バーの位置の近傍の水平方向のラインのＲＡＭ２０３に記憶されている存在確率の値を探索することにより、ピーク５０１として示されるように最も存在確率の値が高いラインの位置８０２を抽出し、その位置を水平線として決定するように、制御を行ってよい。これにより、ユーザの操作ミスを補完して正しい水平線の位置を決定することが可能となる。
【００４６】
上述した図３のステップＳ３０５の水平線の位置指定および確定の判定処理では、ユーザが例えばマウスボタンを押下したときの水平線バーが位置する完全に水平方向のラインの位置が水平線として決定された。しかし、入力画像１２０が水平から少し傾いて撮影されているような場合には、水平線も少し傾いている可能性がある。そこで、ＣＰＵ２０１は、ステップＳ３０５の実行時に、次のような制御を行ってよい。まず、ＣＰＵ２０１は、ユーザが位置指定を行ったときの水平線バーの位置に対応する水平方向のラインを中心として、そのラインを第１の角度範囲（例えば±３０度）内で第２の角度（例えば２度）ずつ傾けて得られる複数（例えば±３０度÷２度＝３０本）の傾きラインごとに、水平線の存在確率を算出する。そして、ＣＰＵ２０１は、複数の傾きラインのうちその傾きラインに対応する存在確率が最も大きい傾きラインを水平線として決定する。
【００４７】
図９は、上述の制御動作を実現する処理例を示すフローチャートである。
【００４８】
ＣＰＵ２０１はまず、ユーザによって位置指定された水平線バーの水平方向のライン位置を取得する（ステップＳ９０１）。
【００４９】
その後、ＣＰＵ２０１は、ステップＳ９０２で、入力画像１２０上でステップＳ９０１で取得した水平方向のラインの中点を通り、水平方向に対して例えば−３０度の角度から２度ずつ角度を増やしながら＋３０度までの範囲で、各角度ごとの傾きラインを指定しながら、ステップＳ９０４で最終ラインに達したと判定するまで、ステップＳ９０３で１つの傾きライン分のエッジ画素の総量を算出する処理を繰返し実行する（ステップＳ９０４の判定がＮＯの繰返し）。これらの一連の処理により、傾きラインごとに、その傾きライン上に存在するエッジ画素の総量が算出される。
【００５０】
次に、ＣＰＵ２０１は、指定された水平方向のラインを基準とする全ての傾きラインに対して算出されたエッジ画素の総量の合計値を算出する（ステップＳ９０５）。
【００５１】
そして、ＣＰＵ２０１は、傾きラインごとに、その傾きラインに対してステップＳ９０３で算出されたエッジ画素の総量をステップＳ９０５で算出された合計値で除算して得られる値として、その傾きラインに対応する水平線存在確率を算出する（ステップＳ９０６）。
【００５２】
ＣＰＵ２０１は、ステップＳ９０６で各傾きラインに対応する水平線存在確率を算出した後、各傾きラインのうち上述の水平線存在確率が最も大きい傾きラインを水平線として決定する（ステップＳ９０７）。
【００５３】
以上のようにして、入力画像１２０の水平線が傾いている場合でも、ユーザの位置指定に基づいて、正しい水平線のライン（水平方向のラインまたは傾きライン）を抽出することが可能となる。
【００５４】
以上と同様の制御は、図３のステップＳ３０３の水平線バーの移動表示開始処理においても実施することが可能である。すなわち、ＣＰＵ２０１は、水平線バーを表示するときに、次のような制御を実行する。ＣＰＵ２０１は、水平線バーの位置に対応する水平方向のラインを中心として、そのラインを第１の角度範囲（例えば±３０度）内で第２の角度（例えば２度）ずつ傾けて得られる複数の傾きライン（例えば±３０度÷２度＝３０本）ごとに、水平線の存在確率を算出する。そして、ＣＰＵ２０１は、複数の傾きラインのうちその傾きラインに対応する存在確率が最も大きい傾きラインを水平線バーとして表示する。
【００５５】
この処理は、図９と同様のフローチャートの処理によって実現できる。この場合、ステップＳ９０１では、ＣＰＵ２０１は、現在水平線バーが位置する水平方向のライン位置を取得する。その後、ＣＰＵ２０１は、前述したステップＳ９０２からＳ９０６までの一連の処理を実行することにより、上記水平方向のラインを基準とする各傾きラインごとの水平線存在確率を算出する。最後に、ＣＰＵ２０１は、ステップＳ９０７で、各傾きラインのうち上述の水平線存在確率が最も大きい傾きラインを水平線バーとして入力画像１２０上に表示する。
【００５６】
以上のようにして、入力画像１２０の水平線が傾いている場合でも、それに合わせた傾きで水平線バーを表示することが可能となる。
【００５７】
図１０は、３Ｄ画像生成処理の例を示すフローチャートである。また、図１１は、３Ｄ画像生成処理の説明図である。さらに、図１２は、生成された３Ｄ画像の例を示す図である。
【００５８】
まず、ＣＰＵ２０１は、ＲＡＭ２０３から、入力画像１２０の画像データと、図３の水平線指定処理によりＲＡＭ２０３に得られた入力画像１２０に対する水平線の位置を読み込む。ＣＰＵ２０１は、入力画像１２０の周囲に３Ｄ処理用の黒い余白を付与して図１１に示される画像１１０１を得る。ＣＰＵ２０１は、その画像１１０１において、水平線１１０２の上側の垂直面１１０３を生成する（以上、ステップＳ１００１）。
【００５９】
次に、ＣＰＵ２０１は、奥行きに所望値を設定する（ステップＳ１００２）。
【００６０】
続いて、ＣＰＵ２０１は、画像１１０１において、水平線１１０２の下側の傾斜面１１０４を生成する（ステップＳ１００３）。
【００６１】
最後に、ＣＰＵ２０１は、垂直面１１０３と傾斜面１１０４を結合して、図１２に例示されるような３Ｄ画像（図１の出力画像１３０に対応）を出力する。このとき、図３の水平線指定処理によって図１１の水平線１１０２が正しくユーザ指定されることにより、図１２に例示される３Ｄ画像として良質な画像を出力することが可能となる。本実施形態では、表示画面上に３次元風に３Ｄ画像を表示させているが、これを３Ｄプリンタ等を用いて物理的に盛り上がりのある３Ｄ画像を印刷することができる。
【００６２】
以上の各実施形態に関して、更に以下の付記を開示する。
（付記１）
２次元の入力画像から３次元的な出力画像を生成するために前記入力画像上で水平線を指定するための方法であって、
水平線の存在確率を前記入力画像の水平方向のラインごとに算出する水平線存在確率算出ステップと、
前記存在確率に応じた態様で前記水平線を指定するためのガイド表示を行う水平線指定ガイド表示ステップと、
前記ガイド表示に基いて、ユーザの指示により前記水平線を決定する水平線決定ステップと、
をコンピュータに実行させるための水平線指定方法。
（付記２）
前記水平線存在確率算出ステップは、
前記入力画像にエッジ抽出を実行してエッジ画素を抽出するステップと、
前記水平方向のラインごとに、当該ライン上に存在する前記エッジ画素の総量を算出するステップと、
全ての前記水平方向のラインに対して算出された前記エッジ画素の総量の合計値を算出するステップと、
前記水平方向のラインごとに、当該ラインに対して算出された前記エッジ画素の総量を前記合計値で除算して得られる値として、当該ラインに対応する水平線存在確率を算出するステップと
を含むことを特徴とする付記１に記載の水平線指定方法。
（付記３）
前記水平線指定ガイド表示ステップは、
前記水平線を指定するための水平線バーを、前記入力画像上を水平線に対して垂直な方向に繰り返し移動させながら表示するステップと、
前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの移動速度または表示状態を、当該ラインに対応して算出されている前記存在確率に応じて変化するように制御するステップと、
を含むことを特徴とする付記１または２のいずれかに記載の水平線指定方法。
（付記４）
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの移動速度を、当該ラインに対応して算出されている前記存在確率が高いほど遅くなるように制御するステップを含む、
ことを特徴とする付記３に記載の水平線指定方法。
（付記５）
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの表示の点滅状態を、当該ラインに対応して算出されている前記存在確率が高いほど変化するように制御するステップを含む、
ことを特徴とする付記３に記載の水平線指定方法。
（付記６）
前記水平線指定ガイド表示ステップは、
ユーザのマウス入力操作に応じて、前記水平線を指定するための水平線バーを前記入力画像上で水平線に対して垂直な方向に移動させて表示するステップと、
前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの表示状態を、当該ラインに対応して算出されている前記存在確率に応じて変化するように制御するステップと、
を含むことを特徴とする付記１または２のいずれかに記載の水平線指定方法。
（付記７）
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置ごとに、当該ライン上を移動して表示される前記水平線バーの表示の点滅状態を、当該ラインに対応して算出されている前記存在確率が高いほど変化するように制御するステップを含む、
ことを特徴とする付記６に記載の水平線指定方法。
（付記８）
前記水平線決定ステップは、
前記ユーザが指示を行ったときの前記ガイド表示の位置の近傍の前記水平方向のラインの前記存在確率を探索することにより、最も存在確率が高いラインの位置を前記水平線として決定する、
ことを特徴とする付記１ないし７のいずれかに記載の水平線指定方法。
（付記９）
前記水平線決定ステップは、
前記ユーザが指示を行ったときの前記ガイド表示の位置に対応する前記水平方向のラインを中心として、当該ラインを第１の角度範囲内で当該第１の角度よりも小さい第２の角度ずつ傾けて得られる複数の傾きラインごとに水平線の存在確率を算出するステップと、
前記複数の傾きラインのうち当該傾きラインに対応する前記存在確率が最も大きい傾きラインを前記水平線として決定するステップと、
を含むことを特徴とする付記１ないし８のいずれかに記載の水平線指定方法。
（付記１０）
前記水平線指定ガイド表示ステップは、前記入力画像の水平方向のラインの位置をガイド表示するときに、
当該ガイド表示の位置に対応する前記水平方向のラインを中心として、当該ラインを第１の角度範囲内で当該第１の角度よりも小さい第２の角度ずつ傾けて得られる複数の傾きラインごとに水平線の存在確率を算出するステップと、
前記複数の傾きラインのうち当該傾きラインに対応する前記存在確率が最も大きい傾きラインに沿って、前記水平線を指定するための水平線バーを表示する、
ことを特徴とする付記３ないし７のいずれかに記載の水平線指定方法。
（付記１１）
２次元の入力画像から３次元的な出力画像を生成するために前記入力画像上で水平線を指定するためのプログラムであって、
水平線の存在確率を前記入力画像の水平方向のラインごとに算出する水平線存在確率算出ステップと、
前記存在確率に応じた態様で前記水平線を指定するためのガイド表示を行う水平線指定ガイド表示ステップと、
ユーザの指示に基づいて、現在の前記ガイド表示の位置を前記水平線として決定する水平線決定ステップと、
をコンピュータに実行させるための水平線指定プログラム。
（付記１２）
２次元の入力画像から３次元的な出力画像を生成するために前記入力画像上で水平線を指定するための装置であって、
水平線の存在確率を前記入力画像の水平方向のラインごとに算出する水平線存在確率算出部と、
前記存在確率に応じた態様で前記水平線を指定するためのガイド表示を行う水平線指定ガイド表示部と、
前記ガイド表示に基いて、ユーザの指示により前記水平線を決定する水平線決定部と、
を備えることを特徴とする水平線指定装置。
【符号の説明】
【００６３】
１００  水平線指定部
１０１  水平線存在確率算出部
１０２  水平線指定ガイド表示部
１０３  水平線決定部
１１０  ３Ｄ画像生成部
１２０  入力画像
１３０  出力画像
２０１  ＣＰＵ
２０２  ＲＯＭ（リードオンリーメモリ）
２０３  ＲＡＭ（ランダムアクセスメモリ）
２０４  入力装置
２０５  出力装置
２０６  外部記憶装置
２０７  通信インタフェース
２０８  可搬記録媒体駆動装置
２０９  可搬記録媒体
２１０  バス
６０１  水平線バー
【図１】
2015103010.tif 000003
【図２】
2015103010.tif 000004
【図４】
2015103010.tif 000005
【図９】
2015103010.tif 000006
【図３】
2015103010.tif 000007
【図５】
2015103010.tif 000008
【図６】
2015103010.tif 000009
【図７】
2015103010.tif 000010
【図８】
2015103010.tif 000011
【図１０】
2015103010.tif 000012
【図１１】
2015103010.tif 000013
【図１２】
2015103010.tif 000014