(57)【特許請求の範囲】
【請求項１】
住宅の構成要素の種別を表す情報を含む間取図のデータに基づき、平面を所定の大きさの格子状に区切って形成されるセルを生成し、当該セルの各々に前記構成要素の種別を表す情報を設定するセル分割ステップと、
前記セルに設定された前記構成要素の種別を表す情報を読み出し、前記構成要素の種別に対応付けて予め定められている当該構成要素上の通過の可否に基づいて通過できる領域の外縁を特定し、当該通過できる領域を細線化した通路のデータを生成する細線化ステップと、
前記細線化ステップにおいて生成した通路のデータに基づいて、通路における端点又は交点を示すノードと、当該ノード間を接続するエッジとを含むグラフを生成するグラフ生成ステップと、
ユーザからの入力に基づいて始点及び終点を設定し、前記グラフ生成ステップにおいて生成されたグラフを用いて、前記始点から前記終点までのパスを探索する経路探索ステップと、
をコンピュータに実行させる経路生成プログラム。
【請求項２】
前記経路探索ステップにおいて得られたパスに基づいて、当該パスを曲線に変換して移動経路を生成する平滑化ステップと、
前記平滑化ステップにおいて生成された移動経路について、当該移動経路が通過する前記セルに設定された前記構成要素の種別を表す情報を読み出し、当該構成要素の種別に対応付けて予め定められている当該構成要素上の通過の可否に基づいて、前記移動経路と通過できない構成要素との衝突の有無を判断する衝突判定ステップと、
前記衝突判定ステップにおいて、前記移動経路と通過できない構成要素との衝突があると判断された場合、前記移動経路上の点における曲率を変更する曲線修正ステップと、
をさらにコンピュータに実行させる請求項１に記載の経路生成プログラム。
【請求項３】
前記間取図のデータは、前記種別が扉又は階段である構成要素を含み、
前記平滑化ステップにおいて、前記構成要素の種別が扉又は階段であるセルに対応する位置に存在するノードを少なくとも頂点として、前記パスを近似する折れ線を生成し、当該折れ線の頂点に基づいて前記移動経路を生成する
請求項２に記載の経路生成プログラム。
【請求項４】
前記経路探索ステップにおいて、ユーザからの入力に基づいて経由点をさらに設定し、得られた前記始点から前記終点までの第１のパスがいずれも前記経由点を通過しない場合、前記経由点から前記第１のパスに含まれるノードまでの第２のパスをさらに探索し、前記第１のパスと前記第２のパスとを連結して前記始点から前記終点までのパスを生成する
請求項２又は３に記載の経路生成プログラム。
【請求項５】
前記間取図のデータが示す建築物の三次元モデルを描画し、当該三次元モデルにおいて視点を前記移動経路に沿って移動させるとともに、所定距離先の前記移動経路上に視線の先を向ける表示ステップ
をさらにコンピュータに実行させる請求項２から４のいずれか一項に記載の経路生成プログラム。
【請求項６】
前記経路探索ステップにおいて、所定の距離以下でループするノード列が存在する場合、当該ノード列を１つの仮想ノードに置換して経路の探索を行う
請求項１から５のいずれか一項に記載の経路生成プログラム。
【請求項７】
前記間取図のデータは、前記構成要素として当該構成要素上を通過できない家具のデー
タを含む
請求項１から６のいずれか一項に記載の経路生成プログラム。
【請求項８】
住宅の構成要素の種別を表す情報を含む間取図のデータに基づき、平面を所定の大きさの格子状に区切って形成されるセルを生成し、当該セルの各々に前記構成要素の種別を表す情報を設定するセル分割ステップと、
前記セルに設定された前記構成要素の種別を表す情報を読み出し、前記構成要素の種別に対応付けて予め定められている当該構成要素上の通過の可否に基づいて通過できる領域の外縁を特定し、当該通過できる領域を細線化した通路のデータを生成する細線化ステップと、
前記細線化ステップにおいて生成した通路のデータに基づいて、通路における端点又は交点を示すノードと、当該ノード間を接続するエッジとを含むグラフを生成するグラフ生成ステップと、
ユーザからの入力に基づいて始点及び終点を設定し、前記グラフ生成ステップにおいて生成されたグラフを用いて、前記始点から前記終点までのパスを探索する経路探索ステップと、
をコンピュータが実行する経路生成方法。
【請求項９】
住宅の構成要素の種別を表す情報を含む間取図のデータに基づき、平面を所定の大きさの格子状に区切って形成されるセルを生成し、当該セルの各々に前記構成要素の種別を表す情報を設定するセル分割部と、
前記セルに設定された前記構成要素の種別を表す情報を読み出し、前記構成要素の種別に対応付けて予め定められている当該構成要素上の通過の可否に基づいて通過できる領域の外縁を特定し、当該通過できる領域を細線化した通路のデータを生成する細線化部と、
前記細線化部が生成した通路のデータに基づいて、通路における端点又は交点を示すノードと、当該ノード間を接続するエッジとを含むグラフを生成するグラフ生成部と、
ユーザからの入力に基づいて始点及び終点を設定し、前記グラフ生成部が生成したグラフを用いて、前記始点から前記終点までのパスを探索する経路探索部と、
を備える経路生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路生成プログラム、経路生成方法及び経路生成装置に関する。
【背景技術】
【０００２】
例えば建築物の三次元モデルを作成し、当該三次元モデル内を移動（ウォークスルー）できるようにする技術が存在する。ユーザは、例えばマウス操作によってカメラ（視点）を移動させることができる。建築物内の移動をコンピュータ上でシミュレーションすることができ、例えば建築物の使い勝手を設計段階等で確認するために有用である。
【０００３】
また、間取りを構成する区画の接続関係を表す区画リンク情報において、動線を設定するという技術も提案されている（例えば、特許文献１）。区画に接続するポータル（出入口）を参照し、更にそのポータルに接続する区画を参照するというように、区画とポータルの接続関係を交互に辿っていくことにより現在位置から目的位置に至るまでに通過する区画とポータルを探索する。そして、現在位置から目的位置に至るまでポータルの中心を直線で順次結んでいき、これによって動線を設定する。
【０００４】
また、２次元画像に対して設定したパスポイントを結ぶようにしてスプライン曲線を求め、求めた曲線に沿ってウォークスルーの視点を移動させる技術も提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−４８２７８号公報
【特許文献２】特開平１０−２２８２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来、ウォークスルー機能について、ユーザが操作に習熟していない場合は三次元モデル内の移動が思い通りにできないという問題があった。また、三次元モデル内の移動経路を生成する場合、壁等の本来通過できない物体と衝突すると不自然なのはもちろんのこと、一方に広い空間があるにもかかわらず他方の壁等の至近を通過するようなときもユーザに違和感を与えることがある。
【０００７】
本発明は、上記のような問題に鑑みてなされたものであり、間取図の情報に基づいて、ユーザに違和感を与えることが少ない自然な移動経路を生成することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る経路生成プログラムは、住宅の構成要素の種別を表す情報を含む間取図のデータに基づき、平面を所定の大きさの格子状に区切って形成されるセルを生成し、当該セルの各々に構成要素の種別を表す情報を設定するセル分割ステップと、セルに設定された構成要素の種別を表す情報を読み出し、構成要素の種別に対応付けて予め定められている当該構成要素上の通過の可否に基づいて通過できる領域の外縁を特定し、当該通過できる領域を細線化した通路のデータを生成する細線化ステップと、細線化ステップにおいて生成した通路のデータに基づいて、通路における端点又は交点を示すノードと、当該ノード間を接続するエッジとを含むグラフを生成するグラフ生成ステップと、ユーザからの入力に基づいて始点及び終点を設定し、グラフ生成ステップにおいて生成されたグラフを用いて、始点から終点までのパスを探索する経路探索ステップとをコンピュータに実行させ
る。
【０００９】
間取図において通過できる領域を細線化した通路のデータを生成すれば、例えば壁等のような周囲の物体から適度に距離をとった通路のデータを生成することができるようになる。すなわち、間取図の情報に基づいて、ユーザに違和感を与えることが少ない自然な経路を生成することができるようになる。
【００１０】
また、経路探索ステップにおいて得られたパスに基づいて、当該パスを曲線に変換して移動経路を生成する平滑化ステップと、平滑化ステップにおいて生成された移動経路について、当該移動経路が通過するセルに設定された構成要素の種別を表す情報を読み出し、当該構成要素の種別に対応付けて予め定められている当該構成要素上の通過の可否に基づいて、移動経路と通過できない構成要素との衝突の有無を判断する衝突判定ステップと、衝突判定ステップにおいて、移動経路と通過できない構成要素との衝突があると判断された場合、移動経路上の点における曲率を変更する曲線修正ステップとをさらにコンピュータに実行させるようにしてもよい。このようにすれば、通路のデータを滑らかな曲線に変換した移動経路を生成することができる。また、間取図のデータに基づいて生成したセルを用いて移動経路を修正するため、より自然な移動経路となる。
【００１１】
また、間取図のデータは、種別が扉又は階段である構成要素を含み、平滑化ステップにおいて、構成要素の種別が扉又は階段であるセルに対応する位置に存在するノードを少なくとも頂点として、パスを近似する折れ線を生成し、当該折れ線の頂点に基づいて移動経路を生成するようにしてもよい。このようにすれば、間取図における部屋等の境界である扉や階段の通過点は固定して、室内の空間を移動するためのパスについては近似した折れ線に変換することができるようになる。よって、移動のポイントを固定しつつ、単純化した滑らかな移動経路を生成することができる。
【００１２】
また、経路探索ステップにおいて、ユーザからの入力に基づいて経由点をさらに設定し、得られた始点から終点までの第１のパスがいずれも経由点を通過しない場合、経由点から第１のパスに含まれるノードまでの第２のパスをさらに探索し、第１のパスと第２のパスとを連結して始点から終点までのパスを生成するようにしてもよい。このようにすれば、行き止まりになった部屋を含む様々な地点を経由する移動経路が生成できる。
【００１３】
また、間取図のデータが示す建築物の三次元モデルを描画し、当該三次元モデルにおいて視点を移動経路に沿って移動させるとともに、所定距離先の移動経路上に視線の先を向ける表示ステップをさらにコンピュータに実行させるようにしてもよい。このようにすれば、自然なウォークスルーを表現することができる。
【００１４】
また、経路探索ステップにおいて、所定の距離以下でループするノード列が存在する場合、当該ノード列を１つの仮想ノードに置換して経路の探索を行うようにしてもよい。このようにすれば、実質的に差異のない複数のパスが探索されるのを抑制できる。
【００１５】
また、間取図のデータは、構成要素として当該構成要素上を通過できない家具のデータを含むようにしてもよい。このようにすれば、例えば生活をイメージして配置された家具を避けるようにパスや移動経路を生成することができる。
【００１６】
なお、課題を解決するための手段に記載の内容は、本発明の課題や技術的思想を逸脱しない範囲で可能な限り組み合わせることができる。また、課題を解決するための手段の内容は、コンピュータ等の装置若しくは複数の装置を含むシステム、コンピュータが実行する方法、又はコンピュータに実行させるプログラムとして提供することができる。なお、プログラムを保持する記録媒体を提供するようにしてもよい。
【発明の効果】
【００１７】
間取図に基づいて、より自然な移動経路を生成することができるようになる。
【図面の簡単な説明】
【００１８】
【図１】経路生成装置の一例を示す機能ブロック図である。
【図２】コンピュータの一例を示す装置構成図である。
【図３】経路生成処理の一例を示す処理フロー図である。
【図４】間取図の表示例を示す図である。
【図５】間取図のデータの一例を示す表である。
【図６】セルに分割された間取図を説明するため図である。
【図７】セルに保持される属性情報の一例を示す図である。
【図８】細線化処理の一例を示す処理フローである。
【図９】セルの重みづけを説明するための図である。
【図１０】処理対象のセルと、その周囲の８近傍のセルを説明するための図である。
【図１１】通過できる領域の外縁からの距離が遠いセルの抽出を説明するための図である。
【図１２】細線化の具体例を説明するための図である。
【図１３】細線化後の通路の一例を示す図である。
【図１４】ノイズ除去後の通路の候補の一例を示す図である。
【図１５】グラフ生成処理の一例を示す処理フローである。
【図１６】ノードを表示した通路の一例を示す図である。
【図１７】記憶部に保持されるノードのデータ構造の一例を示す表である。
【図１８】記憶部に保持されるエッジのデータ構造の一例を示す表である。
【図１９】経路探索処理の一例を示す処理フローである。
【図２０】経路の探索を説明するための模式的なグラフの一例を示す図である。
【図２１】ノードのデータの具体例を示す表である。
【図２２】エッジのデータの具体例を示す表である。
【図２３】パスのデータの具体例を示す表である。
【図２４】間取図上に表示した経路の一例を示す図である。
【図２５】平滑化処理の一例を示す処理フローである。
【図２６】折れ線によるパスの近似を説明するための図である。
【図２７】間取図上に表示した経路を近似する折れ線の一例を示す図である。
【図２８】ベジェ曲線の生成を説明するための図である。
【図２９】間取図上に表示した曲線の経路の一例を示す図である。
【図３０】曲線の経路が通過できないセルと衝突する例を示す図である。
【図３１】ベジェ曲線上の点における曲率の変更を説明するための図である。
【図３２】間取図上に表示した曲線の経路の修正例を示す図である。
【図３３】エルミート曲線の生成を説明するための図である。
【図３４】エルミート曲線上の点における曲率の変更を説明するための図である。
【図３５】ノイズの除去の変形例を説明するための図である。
【図３６】狭い範囲に複数のノードが存在する場合の処理を説明するための図である。
【図３７Ａ】フロアをまたがる経路の１階部分の例を示す図である。
【図３７Ｂ】フロアをまたがる経路の２階部分の例を示す図である。
【図３８】経由地点を通過する経路の探索を説明するための図である。
【図３９Ａ】経由地点の部屋から探索して見つかる経路の例を示す図である。
【図３９Ｂ】経由地点の部屋から探索して見つかる他の経路の例を示す図である。
【図４０】経由地点を通過する経路の一例を示す図である。
【図４１】実施形態に係る経路の一例を示す図である。
【図４２】曲線を滑らかにする変形例を説明するための図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明を実施するための形態について説明する。なお、実施形態の構成は例示であり、本発明は実施形態に示す構成に限定されない。
【００２０】
＜機能構成＞
図１は、実施形態に係る経路生成装置１の一例を示す機能ブロック図である。本実施形態に係る経路生成装置１は、記憶部１０１と、間取図読出部１０２と、セル分割部１０３と、細線化部１０４と、グラフ生成部１０５と、経路探索部１０６と、平滑化部１０７と、ウォークスルー表示部１０８とを有する。記憶部１０１は、所定のソフトウェアで作成した間取図のデータや、本実施形態に係る処理で最終的に又は中間的に生成される移動経路等のデータを記憶する。間取図読出部１０２は、所定のソフトウェアで予め作成された間取図のデータを読み出す。なお、本実施形態に係る間取図のデータは、壁や窓、キッチン等の住宅設備、家具等の障害物といった通過できない構成要素と、室内の空間や廊下、扉や階段、庭等の通過できる構成要素とを平面上に配置する電子データであるものとする。セル分割部１０３は、読み出された間取図のデータに基づいて、所定の属性情報を保持する格子状のセルを生成する。細線化部１０４は、例えばHilditchのアルゴリズム等を用いて、通過可能な領域の輪郭からの距離に基づいて、通過可能な領域を細線化した通路のデータを生成する。グラフ生成部１０５は、通路のデータを、端点や分岐点であるノード（頂点）と、ノード間を接続するエッジ（枝）によって表されるグラフに変換する。経路探索部１０６は、例えばユーザから指定を受けた始点、終点、中継点の座標データを用いて、２頂点結ぶエッジ列又はノード列で表されるパス（道）を探索する。平滑化部１０７は、パスを平滑化し、移動経路を生成する。また、ウォークスルー表示部１０８は、三次元モデル内を生成した移動経路に沿って移動する様子をモニタ等に表示させる。
【００２１】
＜装置構成＞
なお、経路生成装置１は、図２に示すようなコンピュータである。図２は、コンピュータの一例を示す装置構成図である。例えば、コンピュータは、ＣＰＵ（Central Processing Unit）１００１、主記憶装置１００２、補助記憶装置１００３、通信ＩＦ（Interface）１００４、入出力ＩＦ（Interface）１００５、ドライブ装置１００６、通信バス１０
０７を備えている。ＣＰＵ１００１は、プログラムを実行することにより本実施の形態で説明する処理を行う。主記憶装置１００２は、ＣＰＵ１００１が読み出したプログラムやデータをキャッシュしたり、ＣＰＵの作業領域を展開したりする。主記憶装置は、具体的には、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等である。補助記憶装置１００３は、ＣＰＵ１００１により実行されるプログラムや、本実施の形態で用いる設定情報などを記憶する。補助記憶装置１００３は、具体的には、ＨＤＤ（Hard-disk Drive）やＳＳＤ（Solid State Drive）、フラッシュメモリ等である。主記憶装置１００２、補助記憶装置１００３は、図１に示した記憶部１０１として働く。通信ＩＦ１００４は、他のコンピュータ装置との間でデータを送受信する。通信ＩＦ１００４は、具体的には、有線又は無線のネットワークカード等である。入出力ＩＦ１００５は、入出力装置と接続され、ユーザから入力を受け付けたり、ユーザへ情報を出力したりする。入出力装置は、具体的には、カメラ等の画像入力装置、キーボード、マウス、ディスプレイ、ＧＰＳ受信機等のセンサー類、又はタッチパネル等である。ドライブ装置１００６は、フレキシブルディスク、光学ディスク等の記憶媒体に記録されたデータを読み出したり、記憶媒体にデータを書き込んだりする。以上のような構成要素が、通信バス１００７で接続されている。なお、これらの構成要素は複数設けられていてもよいし、一部の構成要素（例えば、ドライブ装置１００６）を設けないようにしてもよい。また、入出力装置がコンピュータと一体に構成されていてもよい。そして、ドライブ装置で読み取り可能な可搬性の記憶媒体や、ＵＳＢメモリのような補助記憶装置、ネットワークＩＦなどを介して、本実施の
形態で実行されるプログラムが提供されるようにしてもよい。そして、ＣＰＵ１００１がプログラムを実行することにより、上記のようなコンピュータを経路生成装置１として働かせる。本実施形態では１つのコンピュータがスタンドアロンで処理を行うものとして説明するが、一部又は全部の機能は、インターネットやイントラネット等のネットワークを介して接続された他のコンピュータによって提供され、ユーザの端末へ処理結果が送信される構成にしてもよい。
【００２２】
＜経路生成処理＞
図３は、経路生成処理の一例を示す処理フロー図である。経路生成装置１の間取図読出部１０２は、ユーザの操作に応じて、記憶部１０１に格納されている間取図のデータを読み出す（図３：Ｓ１）。
【００２３】
図４は、平面上に住宅の構成要素を並べた間取図の表示例を示す図である。また、図５は、記憶部に格納される間取図のデータの一例を示す表である。間取図のデータは、壁や窓、扉といった領域の境界を示す構成要素、部屋や廊下、階段、庭といった領域を示す構成要素、住宅設備や家具を示す構成要素を含む。また、各構成要素は、位置、大きさ、構成要素が示すものを表す属性（構成要素が表すものの種別）、構成要素を一意に特定するための識別情報等の情報を含むものとする。
【００２４】
図４の間取図は、住宅の設計データを平面的に表現したものである。間取図のデータは、図５に示した大きさの属性に対応付けて幅や奥行きだけでなく高さの情報も保持しているものとする。そして、間取図に係る三次元モデルを生成するためにも用いられる。なお、構成要素は、壁や窓、キッチン等の住宅設備、家具等の障害物といった三次元モデル内において通過できない構成要素と、室内の空間や廊下、扉や階段、庭等の通過できる構成要素とに分けられる。通過の可否は構成要素が表すものの種別に応じて決まるが、図５に示すように、間取図のデータは、当該構成要素上の通過の可否を示す情報を記憶するようにしてもよい。
【００２５】
Ｓ１の後、経路生成装置１のセル分割部１０３は、平面を所定の大きさの格子状に分割して生成した複数のセルに、図４に示した間取図の構成要素の属性情報を記憶させる（図３：Ｓ２）。本実施形態に係るセルは、平面を例えば縦横に所定間隔で分割した領域の各々をいうものとする。なお、セルの１辺の大きさは、間取図に表された対象の空間の大きさに応じて決めることができる。本実施形態では後の処理において人が通過できる空間を探索するところ、４０〜５０ｃｍ程度の幅の移動経路が抽出できればよいため、例えば１０ｃｍ四方のセルに分割するものとする。
【００２６】
図６は、図４に示した間取図の一部を１０ｃｍ×１０ｃｍのセルに分割した状態を示す画像の一例である。また、図７は、セルに分割した間取図の、各々のセルに保持される属性情報の一例を示す図である。本実施形態では、属性情報として、構成要素の種別を示す情報を保持させるものとする。なお、本実施形態におけるセルの属性情報は、例えば、各セルをラスタデータの１画素に対応付け、各画素の色の成分を示す２４ビットのカラー値（ＲＧＢ（Red, Green, Blue）成分）として保持させるものとする。また、間取図の構成要素の種別に応じた値は数値で表すものとし、当該値をセルに保持させる処理は、１画素が１０ｃｍ×１０ｃｍとなる縮尺で間取図の構成要素をラスタデータとして描画する際に、当該値を例えばＲ成分に割り当てることで行うことができる。
【００２７】
図７の例では、間取図における壁に「０」、家具等の障害物に「２」、扉等の建具に「５」、壁の開口部に「６」、階段に「７」、部屋の内部に「８」、家の外の空間に「９」を割り当てている。なお、０及び２は人が通行できない部分を示し、５、６、７、８及び９は、人が通行できる部分を示すことが予め定められているものとする。
【００２８】
また、本実施形態では、各画素のＧＢ成分を用いて、人が通過できる部分について同一の部屋や建具を識別するための構成要素の識別番号を保持するものとする。構成要素の識別番号は、図５に示した識別情報にもとづいて、例えば連番等を付す。また、ＧＢ成分は、例えばＢ成分の値が２５６になると２桁目のＧ成分に桁上がりするものとし、ＧＢ成分全体で１つの識別情報を表す。すなわち、Ｇ成分の値は、識別番号を除数「２５６」で割ったときの商となり、Ｂ成分の値は、識別情報を２５６で割ったときの剰余となる。したがって、例えば識別番号が２５４８（＝２５６×９（Ｇ）＋２４４（Ｂ））の部屋を示すセルは、ＲＧＢの各成分が（８，９，２４４）の色で表される。なお、本実施形態では、セルに分割して属性情報をカラー値として保持させた画像を、経路探索用画像と呼ぶものとする。
【００２９】
Ｓ２の後、経路生成装置１の細線化部１０４は、細線化処理を行う（Ｓ３）。細線化部１０４は、通過できるセルの集合である通過可能領域を細線化する。図８は、細線化処理の一例を示す処理フローである。まず、細線化部１０４は、図７に示したＲ成分に基づいて、各セルを通過できるセルと通過できないセルとに分ける（図８：Ｓ１１）。具体的には、図７に示したＲ成分が２以下のセルは通過不可能なセルであるため、例えば経路探索用画像に対応するセルを有するマップを用意し、当該マップの通過不可能なセルをすべて「０」に変換する。また、図７に示したＲ成分が５以上のセルは通過可能なセルであるため、例えばすべて初期値「−１」に変換する。
【００３０】
次に、細線化部１０４は、通過できない部分（すなわち、通過可能な領域の外縁）からの距離に応じて、セルに重みづけをする（Ｓ１２）。なお、通過できないセルからの距離を示す基準値をMaxWeightと呼ぶものとし、初期値を「０」とする。本ステップでは、Ｓ
１１において０と−１とを設定したマップを走査し、値が−１のセル（通過可能のセル）のうち、上下左右（４近傍とも呼ぶ）のセルがMaxWeightと同一であるものの値をMaxWeight＋１に更新する。すべてのセルについて走査した後、MaxWeightを＋１（インクリメン
ト）し、値が−１のセルがなくなるまで、−１のセルを対象として走査を繰り返す。
【００３１】
図９は、Ｓ１２の処理によって更新されるセルの値の具体例を示す。まず、上段（１）に示すように、図７に示したＲ成分の値に基づいて、通過不可能なセルを示す０又は通過可能なセルを示す−１を設定する。また、２段目（２）に網掛けしたセルで示すように、−１のセルのうちMaxWeight「０」のセルに隣接するセルの値をMaxWeight＋１である「１」に変換する。そして、MaxWeightの値をMaxWeight＋１に更新し、３段目（３）に網掛けしたセルで示すように、−１のセルのうちMaxWeight「１」のセルに隣接するセルの値をMaxWeight＋１である「２」に変換する。その後、MaxWeightの値をMaxWeight＋１に更新し、４段目（４）に網掛けしたセルで示すように、−１のセルのうちMaxWeight「２」のセ
ルに隣接するセルの値をMaxWeight＋１である「３」に変換する。以上のような処理を繰
り返し、通過できる領域の外縁からの距離に基づいて通過できる領域内のセルに重みづけをする。
【００３２】
次に、細線化部１０４は、周囲のセルと比較して通過可能な領域の外縁からの距離が遠いセルを抽出する（Ｓ１３）。本ステップでは、初期値として通過不可能なセルに０、通過可能なセルに−１を格納した、Ｓ１２とは異なるマップ（抽出マップと呼ぶ）に処理結果を記録するものとする。まず、抽出マップ上の値が−１のセルの各々について、Ｓ１２で重みづけしたマップ上の周囲の８つのセル（８近傍）の値を用いて所定の値を求める。
【００３３】
図１０は、処理対象のセルと、その周囲の８近傍のセルを説明するための図である。図１０は、３×３の９セルが示されており、左の列の上から下へＡ、Ｂ、Ｃ、中央の列の上から下へＤ、Ｅ、Ｆ、右の列の上から下へＧ、Ｈ、Ｉの符号が付されている。中央のセル
Ｅが処理対象のセルであるとすると、本ステップでは、Ｓ１２で重みづけしたマップ上の値を用いて、次のｓｕｍ１〜ｓｕｍ４の値を求める。
ｓｕｍ１＝（Ｄ−Ａ）＋（Ｄ−Ｇ）＋（Ｅ−Ｂ）＋（Ｅ−Ｈ）＋（Ｆ−Ｃ）＋（Ｆ−Ｉ）ｓｕｍ２＝（Ｂ−Ａ）＋（Ｂ−Ｃ）＋（Ｅ−Ｄ）＋（Ｅ−Ｆ）＋（Ｈ−Ｇ）＋（Ｈ−Ｉ）ｓｕｍ３＝（Ｅ−Ａ）＋（Ｅ−Ｂ）＋（Ｅ−Ｄ）＋（Ｅ−Ｆ）＋（Ｅ−Ｈ）＋（Ｅ−Ｉ）ｓｕｍ４＝（Ｅ−Ｂ）＋（Ｅ−Ｃ）＋（Ｅ−Ｆ）＋（Ｅ−Ｄ）＋（Ｅ−Ｇ）＋（Ｅ−Ｈ）その後、本ステップでは、ｓｕｍ１〜ｓｕｍ４の最大値が０より大きければ、最大値を抽出マップ上の処理対象のセルＥに保持させる。一方、ｓｕｍ１〜ｓｕｍ４の最大値が０以下であれば、０を抽出マップ上のセルＥに保持させる。以上のような処理により、Ｓ１２で設定された重みの値が周囲のセルの中で大きいセルを残し、周囲のセルの値を０にすることができる。図１１は、図４に示した間取図全体について、Ｓ１３の処理を施した図の模式的な例を示す。図１１では、周囲のセルよりも比較的重みの値の大きなセルが、白色になって抽出されている。
【００３４】
また、細線化部１０４は、抽出されたセルが形成する線の幅を、所定のルールに基づいて１画素に細線化する（Ｓ１４）。なお、細線化の処理にはHilditchのアルゴリズム等、既存の様々な手法を利用することができる。例えば、本ステップでは、Ｓ１３の処理後の抽出マップを用いて、各セルを走査する。まず、処理対象のセルの８近傍のセルのうち０より大きい値が保持されているセルを計数する。すなわち、図１０に示したセルのうちＥが処理対象であるとすると、Ａ〜Ｄ及びＦ〜Ｉのうち、０より大きい値のセルの数を合計する。
【００３５】
また、以下のパターン（１）〜（１２）のうち当てはまるものの数を計数し、処理対象のセルに対応付けて合計値を保持させる。パターン（１）〜（１２）は、処理対象のセルの８近傍のセルのうち、隣接する３つのセルの値によって表される。なお、以下のパターン（１）〜（１２）についても、図１０に示した９セルの符号を用いて説明する。
（１）Ｄ＝１以上の値、Ｇ＝０、Ｈ＝１以上の値、Ａ〜Ｃ、Ｆ及びＩの値は問わない
（２）Ｄ＝１以上の値、Ｇ＝１以上の値、Ｈ＝０、Ａ〜Ｃ、Ｆ及びＩの値は問わない
（３）Ｄ＝１以上の値、Ｇ＝０、Ｈ＝０、Ａ〜Ｃ、Ｆ及びＩの値は問わない
（４）Ｆ＝１以上の値、Ｈ＝１以上の値、Ｉ＝０、Ａ〜Ｄ及びＧの値は問わない
（５）Ｆ＝０、Ｈ＝１以上の値、Ｉ＝１以上の値、Ａ〜Ｄ及びＧの値は問わない
（６）Ｆ＝０、Ｈ＝１以上の値、Ｉ＝０、Ａ〜Ｄ及びＧの値は問わない
（７）Ｂ＝１以上の値、Ｃ＝０、Ｆ＝１以上の値、Ａ、Ｄ及びＧ〜Ｉの値は問わない
（８）Ｂ＝０、Ｃ＝１以上の値、Ｆ＝１以上の値、Ａ、Ｄ及びＧ〜Ｉの値は問わない
（９）Ｂ＝０、Ｃ＝０、Ｆ＝１以上の値、Ａ、Ｄ及びＧ〜Ｉの値は問わない
（１０）Ａ＝０、Ｂ＝１以上の値、Ｄ＝１以上の値、Ｃ、Ｆ〜Ｉの値は問わない
（１１）Ａ＝１以上の値、Ｂ＝１以上の値、Ｄ＝０、Ｃ、Ｆ〜Ｉの値は問わない
（１２）Ａ＝０、Ｂ＝１以上の値、Ｄ＝０、Ｃ、Ｆ〜Ｉの値は問わない
【００３６】
そして、Ｓ１４の最初に求めた合計値が３以上であり、且つ上記パターン（１）〜（１２）に当てはまる数が１の場合、処理対象のセルの値を０にする。以上のような処理をＳ１３で抽出されたセルの各々に対して行うことにより、抽出マップ上の通過可能な領域の幅が１画素になる。本実施形態では、幅が１画素になった領域を、間取図におけるユーザの通路の候補として用いる。図１２は、図１１に示した白色の領域をＳ１４の処理によって細線化する前後の例を示す部分的な拡大図である。なお、Ｓ１４の処理後の抽出マップにおけるセルが保持している値は、１の場合、通路の候補の端点を示し、２の場合、通路の候補の途中の点を示し、３又は４の場合、３方向又は４方向に分岐している点を示している。また、図１３は、図１１に示した抽出領域を、Ｓ１４の処理で細線化した例を示す図である。Ｓ１４の処理後の抽出マップを、細線化マップと呼ぶものとする。細線化マップは、通路の候補に含まれるセルの各々に、図１２に示したような値を保持している。
【００３７】
その後、細線化部１０４は、細線化マップの通路の候補からノイズを取り除く処理を行う（Ｓ１５）。図１３にも示したように、Ｓ１４までの処理では、ヒゲの様な多数の短い線が通路の候補に表れる。本ステップでは、これらの短い行き止まりの通路候補を削除する。
【００３８】
具体的には、まず、細線化マップに含まれる値が１のセルを抽出し、すべて値を０に置き換える。続いて細線化マップに含まれる値が２のセルを抽出し、そのセルの８近傍で１以上の値を持つセルが１つなら、このセルの値を１に変える（新たな端点とする）。また、細線化マップにおける値が２のセルの８近傍に、値が０以外のセルが２つ以上存在する場合であって、８近傍の０以外の値のセル同士が隣接していないとき、当該セルの値は２のままとする。また、細線化マップにおける値が２のセルの８近傍に０以外の値のセルが２つ以上存在する場合であって、８近傍の０以外の値のセル同士がすべて隣接しているとき、当該セルの値を０に置き換える。そして、値が２のセルをすべて処理した後、上述した値が１のセルをすべて０に置き換える処理に戻り、値が１のセルがなくなるまで処理を繰り返す。
【００３９】
また、Ｙ字や十字状の孤立した領域が存在する場合、１画素のセルが残るため、最後に８近傍すべてが０のセルを抽出し、値を０に置き換える。
【００４０】
以上のような処理により、図１４に示すような通路が生成される。なお、細線化処理によって生成される通路を示す図１４の画像を経路候補マップと呼ぶものとする。その後、図３の処理に戻る。
【００４１】
次に、経路生成装置１のグラフ生成部１０５は、グラフ生成処理を行う（図３：Ｓ４）。図１５は、グラフ生成処理の一例を示す処理フローである。まず、グラフ生成部１０５は、細線化処理において生成された経路候補マップに基づいてノードを抽出する（図１５：Ｓ２１）。本ステップでは、図１４に示した経路候補マップと、図７に一部を示した属性情報との対応する画素を順に読み出し、建具（扉）、開口部、階段と重なるセル、及び値が３又は４のセル（３つ又は４つに分岐したセル）をノード（頂点）として抽出する。図１６は、Ｓ２１において抽出されたノードを円で表示した例を示す。なお、ノードの位置は、例えばセルの中心に相当する間取図上の座標として表すことができる。
【００４２】
そして、グラフ生成部１０５は、エッジの探索を行う（Ｓ２２）。本ステップでは、例えばグラフにおけるノードの１つを始点として、隣接するセルのうち経路候補マップにおける値が２のセルの方向へ探索を開始する。また、探索先で他のノードが見つかった場合は、ノード及びパスの識別情報を用いて相互の接続関係を記憶させる。なお、エッジ、間取図における座標の列として表すようにしてもよい。また、例えば探索済みのセルにはフラグを設定し、逆方向からの探索を防止するようにしてもよい。
【００４３】
図１７は、記憶部に保持されるノードのデータ構造の一例を示す表である。ノードのデータは、インデックス番号、座標値（Ｘ，Ｙ）、属性種別（部屋の内部、建具、開口部、又は階段）、ノードが属する構成要素の識別番号、接続するエッジの数、及び接続するエッジのインデックス番号の各値を有する。なお、属性種別の値は、上述した経路探索用画像のＲ成分に基づいて決まる。また、ノードが属する構成要素の識別番号は、上述した経路探索用画像のＧＢ成分に基づいて決まる。図１８は、記憶部に保持されるエッジのデータ構造の一例を示す表である。エッジのデータは、インデックス番号、両端のノードのインデックス番号、エッジが属する構成要素の識別番号、ノード間の頂点数、ノード間の頂点（座標）リストの各値を有する。なお、エッジが属する構成要素の識別番号も、経路探索用画像のＧＢ成分に基づいて決まる。探索により得られたすべてのノード及びエッジに
ついて、図１７及び図１８に示したデータを記憶させ、グラフ生成処理を終了する。
【００４４】
その後、経路生成処理装置１の経路探索部１０６は、経路探索処理を行う（図３：Ｓ５）。図１９は、経路探索処理の一例を示す処理フローである。経路探索部１０６は、例えばユーザから移動の出発地点及び到着地点の入力を受け、入力された各点と同一の室内におけるエッジ上の近傍の点を始点及び終点とする（図１９：Ｓ３１）。なお、近傍点は、エッジの端点であるノードであってもよい。また、同一の室内であるか否かは、Ｓ２においてＧＢ成分に保持させた構成要素の識別番号に基づいて判断することができる。近傍点の探索は、例えば図１８に示したエッジのデータに含まれるノード間の頂点リストを用いて線形に最近傍探索を行うようにしてもよいし、既存の近似最近傍探索手法を用いるようにしてもよい。
【００４５】
また、経路探索部１０６は、始点から終点へエッジを接続して形成される経路であるパスを探索する（Ｓ３２）。本ステップでは、例えば線形に経路を探索する。図２０は、経路の探索を説明するための模式的なグラフの一例を示す図である。図２０のグラフは、ノードＮ１〜ノードＮ１４を含む。また、ノードＮ１〜ノードＮ１４は、エッジａ〜エッジｐによって接続されている。具体的には、Ｎ１とＮ２とをａが接続し、Ｎ１とＮ３とをｂが接続し、Ｎ２とＮ５とをｃが接続し、Ｎ３とＮ４とをｄが接続し、Ｎ４とＮ５とをｅが接続し、Ｎ３とＮ６とをｆが接続し、Ｎ４とＮ７とをｇが接続し、Ｎ６とＮ７とをｈが接続し、Ｎ７とＮ８とをｉが接続し、Ｎ６とＮ９とをｊが接続し、Ｎ７とＮ１０とをｋが接続し、Ｎ８とＮ１１とをｌが接続し、Ｎ９とＮ１２とをｍが接続し、Ｎ１０とＮ１３とをｎが接続し、Ｎ１１とＮ１４とをｏが接続し、Ｎ１２とＮ１３とをｐが接続している。また、ユーザは、図２０に示すエッジａの近傍の星印の箇所を出発地点として指定し、エッジｏの近傍の三角印の箇所を到着地点として指定したものとする。
【００４６】
図２１は、図２０に含まれるノードのデータの具体例を示す表である。図２１の例は、ノードのインデックスがＮ１からＮ１４までのノードについて、座標（Ｘ，Ｙ）、当該ノードが示す間取図内の構成要素を表す属性種別、当該ノードが示す構成要素の識別情報、当該ノードに接続されたエッジの数、当該ノードに接続されたエッジのリストを保持している。
【００４７】
図２２は、図２０に含まれるエッジのデータの具体例を示す表である。図２２の例は、エッジのインデックスがａ〜ｐまでのエッジについて、両端のノードのインデックス、当該エッジが示す間取図内の構成要素を表す属性種別、当該エッジが経由する頂点の数、当該エッジが経由する頂点のリストを保持している。
【００４８】
図１９のＳ３１では、星印が示す出発地点と同一の識別情報の構成要素に存在し、且つ最も近いパスａ上の点が、始点として特定されたものとする。また、三角印が示す到着地点と同一の識別情報の構成要素に存在し、且つ最も近いパスｏ上の点が終点として特定されたものとする。
【００４９】
図１９のＳ３２では、例えば深さ優先探索を行う。また、同じノードは一度しか通過しないものとし、既に通過したノードに戻った場合や終点でない端点のノードに到達した場合は、当該パスの探索を打ち切り、直近の分岐点から未探索の枝を探索する。また、終点に到達した場合は、見つかったパスに含まれるエッジのリストを記憶部１０１に記憶させ、未探索の枝が存在する場合はそこから他のパスの探索を継続する。
【００５０】
図２３は、記憶部１０１に記憶されるパスのデータの具体例を示す表である。図２３の表は、パスの識別情報と、経由するエッジの数と、経由するエッジのリストとを含む。なお、各エッジについて、インデックスの数字の小さいノードからインデックスの数字の大
きいノードへ向かう方向を順方向、その逆を逆方向と呼ぶものとする。経由するエッジのリストには、各エッジについて移動する方向が順方向を示す「順」又は逆方向を示す「逆」と登録されている。図２３からもわかる通り、始点からは順方向及び逆方向の双方に探索を行うものとする。
【００５１】
以上のような処理により、始点から終点に到達するすべてのパスを抽出し、図３の処理へ戻る。なお、Ｓ３２においては、ユーザがＳ３１で入力した出発地点からその近傍点である始点へのエッジ、及び終点からユーザが入力した到着地点へのエッジを生成し、パスの前後に追加するようにしてもよい。経路探索処理によって、例えば図２４に太線で示すような、座標列を連結して表される経路が抽出される。なお、図２４には、ドットの集合で、図１４に示した通路の候補が示されている。また、本ステップでは複数の経路が抽出される。
【００５２】
次に、経路生成装置１の平滑化部１０７は、平滑化処理を行う（図３：Ｓ６）。図２５は、平滑化処理の一例を示す処理フローである。なお、平滑化部１０７は、経路探索処理によって抽出されたパスのすべてについて平滑化処理を行うようにしてもよいし、始点から終点までの距離が短いパスや、ユーザによって選択されたパスについて平滑化処理を行うようにしてもよい。
【００５３】
平滑化部１０７は、まず、パスの一部を直線に置き換える（図２５：Ｓ４１）。本ステップでは、パス（エッジ）に含まれる頂点列を、始点、終点、建具（扉）、開口部、及び階段で区切り、各区間を直線で結ぶ。なお、建具（扉）や階段で区切るのは、後にウォークスルーの表示を行う際、扉の開閉や階段の昇降において視線の方向を変える特別な処理を行うためである。図２４に示したパスは、丸印で示した始点ａから、三角印で示した扉１、扉２を介して星印で示した終点ｂまで、４つの部分に区切られている。例えば、扉２と終点ｂとの間のエッジに含まれる頂点列を直線に置き換えると、図２６の上段（１）のようになる。図２６の例では、置き換えた直線を破線で示している。
【００５４】
また、平滑化部１０７は、もとのパスと置き換えた直線との乖離度が所定の閾値を超えているか判断する（Ｓ４２）。なお、所定の乖離度として、置換後の直線からもとのパス上の最も遠い点までの距離の許容範囲を表す閾値Ｌが、予め設定されているものとする。例えば、閾値Ｌは１０ｃｍとする。本ステップでは、もとのパスを構成するエッジに含まれる頂点列の各々から、置換後の直線への垂線を引き、その距離ｌの最大値ｌmaxを求め
る。そして、ｌmaxが所定の閾値Ｌ以上であれば（Ｓ４２：ＹＥＳ）、Ｓ４１の処理に戻
り、図２６の２段目（２）に破線で示すように、ｌが最大になる頂点でもとのパスをさらに分割し、２つの直線に置き換える。そして、Ｓ４２において、各直線についてもとのパスと置換後の直線との乖離度が所定の閾値を超えているか判断する。さらに所定の閾値を超えている場合は、図２６の３段目（３）に示すように、直線をさらに分割する。一方、置換後の直線ともとのパスとの乖離度が所定の閾値以内である場合（Ｓ４２：ＮＯ）、分割した他の直線について未処理のものがあるか判断し（Ｓ４３）、未処理の直線がある場合（Ｓ４３：ＹＥＳ）、Ｓ４１及びＳ４２の処理を繰り返す。このようにして、図２６の４段目（４）に破線で示すように、もとのパスを近似した折れ線が得られる。例えば図２４に示した経路は、図２７に示すような、大まかな折れ線に変換される。なお、閾値Ｌの大きさにより、近似の精度を変更することができる。
【００５５】
分割したすべての直線を処理した場合（Ｓ４３：ＮＯ）、平滑化部１０７は、もとのパスを近似した折れ線を、曲線に変換する（Ｓ４４）。本ステップでは、上述した処理で生成した折れ線を、ベジェ（Bezier）曲線や、エルミート（Hermitian）曲線等の曲線に変
換する。
【００５６】
図２８は、２点ｐ，ｑを通過するベジェ曲線の生成を説明するための図である。ここで、３次のベジェ曲線は４つの制御点を有し、両端の制御点を通過する。本実施形態では、折れ線の頂点間に２つの制御点を追加する。なお、２点ｐ，ｑは、折れ線に含まれる頂点列ｏ，ｐ，ｑ，ｒの一部であるものとする。
【００５７】
まず、図２８の上段（１）に示すように、点ｏから点ｐに向かうベクトルｏｐ、点ｐから点ｑに向かうベクトルｐｑをそれぞれ正規化した単位ベクトルを用いて、これらの合成ベクトルｖを求める。同様に、ベクトルｒｑ、ベクトルｑｐを正規化した単位ベクトルから、合成ベクトルｗを求める。そして、ベクトルｖ、ベクトルｗを、点ｐ−点ｑ間の曲線上の点ｐ及び点ｑにおける接線方向とする。
【００５８】
次に、点ｐ−点ｑ間の長さｌを求める。そして、点ｐ、点ｑからそれぞれベクトルｖ、ベクトルｗ方向に長さｌをｆ倍（０．０＜ｆ＜０．５）した位置に、新たな制御点ｍ、制御点ｎを生成する。図２８の２段目（２）に、制御点ｍ、制御点ｎの一例を示す。また、制御点ｍ、制御点ｎは、以下の式で求められる。後述する通り、ｆの値の大きさを変更することにより、点ｐ、点ｑにおける曲率、ひいては曲線の形状を変更することができる。
【数１】
0006304771.tif 000002
【数２】
0006304771.tif 000003
【００５９】
また、点ｐｍ間、点ｍｎ間、点ｎｑ間を、それぞれratio：（１．０−ratio）に内分する点ｓ、点ｔ、点ｕを生成する。図２８の３段目（３）に、点ｓ、点ｔ、点ｕの一例を示す。また、点ｓ、点ｔ、点ｕは、以下の式で求められる。
点ｓ＝ｐ＋（ｍ−ｐ）×ratio
点ｔ＝ｍ＋（ｎ−ｍ）×ratio
点ｕ＝ｎ＋（ｑ−ｎ）×ratio
【００６０】
さらに、点ｓｔ間、点ｔｕ間をそれぞれratio：（１．０−ratio）に内分する点ｖ、点ｗを生成する。図２８の４段目（４）に、点ｖ、点ｗの一例を示す。また、点ｖ、点ｗは、以下の式で求められる。
点ｖ＝ｓ＋（ｔ−ｓ）×ratio
点ｗ＝ｔ＋（ｕ−ｗ）×ratio
【００６１】
そして、点ｖｗ間をratio：（１．０−ratio）に内分する点ｘを生成する。図２８の５段目（５）に、点ｘの一例を示す。また、点ｘは、以下の式で求められる。
点ｘ＝ｖ＋（ｗ−ｖ）×ratio
【００６２】
ここで、ratioを０．０から１．０まで連続的に変化させたときにできる点ｘの軌跡は
、図２８の６段目（６）のようになる。このようにして、間取図上の経路を、滑らかに変化する曲線に変換する。例えば図２７に示した折れ線の経路は、図２９に示すような曲線に変換される。移動経路を平面上において曲線にすることで、経路生成装置１が生成する経路は、ウォークスルーの表示を行った場合に自然な移動を表現することができるようになる。
【００６３】
その後、平滑化部１０７は、生成した曲線の経路が、経路探索用画像における通過不可
能なセルと衝突していないか判断する（図２５：Ｓ４５）。本ステップでは、例えば、曲線で表される移動候補の経路について例えば１０ｃｍ間隔等、所定の間隔で曲線上の座標を求める。そして、求めた座標が経路探索用画像における通過できないセルに含まれる場合、曲線の経路は通過できないセルと衝突しているものと判断する。図２９の例では、衝突していないと判断され（Ｓ４５：ＮＯ）、図３の処理に戻る。
【００６４】
一方、生成した曲線の経路が通過不可能なセルを通過している場合（Ｓ４５：ＹＥＳ）、平滑化部１０７は生成した曲線の曲率を調整する（Ｓ４６）。図３０は、曲線の経路が通過できないセルと衝突する例を示す図である。図３０は、住宅の外周を通過して、玄関とキッチンとの間を移動する経路の一例を示している。また、図３０の例では、破線の楕円で示すように、住宅の前の駐輪場や住宅横の駐車場とを区切る柵、及び住宅の裏の壁と、曲線の経路とが衝突すると判断されたものとする。ここで、Ｓ４５で衝突すると判断された場合、生成された曲線の経路を用いてウォークスルーの表示を行うと、本来通過することができない何らかの構成要素を通り抜けて移動することになる。よって、本実施形態では、曲線の経路が通過不可能なセルを避けるように、経路上の点における曲率を変更する。本ステップでは、例えば、制御点ｍ及び制御点ｎの算出に用いた数式にパラメータを追加し、生成する曲線を修正する。
【００６５】
具体的には、ベジェ曲線の場合、上述した制御点ｍ、制御点ｎの算出式において、ｆの値を小さくする。このようにすれば、点ｐｑ間の曲線はふくらみが小さくなり、直線に近い形状となる。例えば下記のように、制御点ｍ、制御点ｎの算出式において、ｆに所定の係数adj（０．０≦adj≦１．０）を乗じる。
【数３】
0006304771.tif 000004
【数４】
0006304771.tif 000005
【００６６】
図３１は、制御点の算出時に係数adjを乗じた場合の、最終的に生成される曲線を説明
するための図である。図３１の上段（１）は、上述した制御点ｍ及び制御点ｎの算出式によって生成される曲線を示している。また、図３１の下段（２）は、ｆに係数adjを乗じ
た場合に生成される曲線を示している。adjは０以上、１．０以下の値であり、図３１の
例では０．７５とする。このようにすれば、点ｐから制御点ｍまでの距離、及び点ｑから制御点ｎまでの距離は係数adj倍され、制御点ｍ及び制御点ｎの位置は、それぞれ点ｐ及
び点ｑに近づく。これに伴い、点ｓ〜点ｘの位置は線分ｐｑに近づくため、点ｘの軌跡として描かれる曲線は、直線に近づくようになる。
【００６７】
Ｓ４６の後、Ｓ４５に戻り、処理を繰り返す。具体的には、Ｓ４５において、曲率を変更した後の曲線が、通過できないセルと衝突するか判断する。曲率を変更した後の曲線も、通過できないセルと衝突すると判断された場合（Ｓ４５：ＹＥＳ）、平滑化部１０７は、Ｓ４６において、さらに曲線の曲率を調整する。例えば、制御点ｍ及び制御点ｎの算出式において、上述した係数adjを２回乗じるようにしてもよいし、係数adjの値をさらに小さくするようにしてもよい。このようにして、通過できないセルと衝突すると判断された曲線を、さらに直線に近づけるようにする。なお、経路が、間取図における極端に狭い隙間を通過するような場合等は、曲線の曲率を調整しても衝突を回避できない可能性がある。したがって、Ｓ４５及びＳ４６の処理のループは所定回数繰り返した場合に終了するようにしてもよい。図３２は、図３０に於いて通過できないセルと衝突する曲線経路の３か
所に対して、それぞれ曲率を調整した結果を示している。
【００６８】
その後、経路生成装置１のウォークスルー表示部１０８は、平滑化された移動経路に基づいて、間取図に係る三次元モデル内を移動するウォークスルー表示を行う（図３：Ｓ７）。以上のような処理を行うことにより、本実施形態に係る経路生成装置１は、より自然な移動経路を生成することができるようになる。
【００６９】
＜変形例＞
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において変更することができる。例えば、実施の形態に示した処理フローは、結果が変わらない限りにおいて処理の順序を変更してもよい。また、処理の一部を他のコンピュータが実行するようにしてもよく、他のコンピュータは図示していないネットワークを介して接続されていてもよい。また、上記の実施形態及び下記の変形例は、可能な限り組み合わせて実施することができる。
【００７０】
実施形態に係る移動経路は平滑化処理を行い曲線に変換することでより自然な移動を表現することができるようになるが、例えばＳ４１で生成する折れ線やＳ５の経路探索処理で得られるパスに基づいてウォークスルーの表示を行ってもよい。このような経路であっても、通過できる領域の外縁からの距離に応じて生成されたものであり、ユーザに違和感を与えることが少ない自然な移動経路といえる。
【００７１】
＜曲線の変形例＞
Ｓ４４において変換する曲線は、ベジェ曲線には限定されない。例えば、エルミート曲線等であってもよい。図３３は、エルミート曲線を用いて曲線化する手順を説明するための図である。図３３も、ベジェ曲線の例と同様に、点列ｏｐｑｒのうち、点ｐｑ間を曲線化するものとする。
【００７２】
図３３の上段（１）に示すように、点ｏから点ｐに向かうベクトルｏｐを正規化した単位ベクトルと、点ｐから点ｑに向かうベクトルｐｑを正規化した単位ベクトルとを合成し、合成ベクトルｖを求める。同様に、点ｐから点ｑに向かうベクトルｐｑを正規化した単位ベクトルと、点ｑから点ｒに向かうベクトルｑｒを正規化した単位ベクトルとを合成し、合成ベクトルｗを求める。この合成ベクトルｖ及び合成ベクトルｗが、それぞれ点ｐｑ間の曲線の点ｐ及び点ｑにおける接線方向となる。
【００７３】
また、図３３の２段目（２）に示すように、点ｐｑ間の長さｌを求め、下記の数式に基づいてベクトルＶ及びベクトルＷを算出する。なお、係数ｆは曲線の形状を調整するためのパラメータであり、０．０＜ｆ＜２．０であるものとする。
【数５】
0006304771.tif 000006
【数６】
0006304771.tif 000007
【００７４】
そして、点ｐｑ間の曲線上の点ｘ、及び点ｘにおける接線方向を示すベクトルｎは、次のようになる。図３３の３段目（３）に示すように、エルミート曲線の場合も、ratioを
０．０から１．０まで変化させたときの点ｘの軌跡を、点ｐｑ間の曲線とする。
【数７】
0006304771.tif 000008
【数８】
0006304771.tif 000009
【００７５】
また、Ｓ４６における曲率の調整は、ベクトルＶ及びベクトルＷの算出式において、ベジェ曲線の場合と同様に係数ｆの値が小さくなるようにパラメータを調整することで、曲線のふくらみを抑えることができる。例えば、図３４の上段（１）に示す曲線が、通過できないセルと衝突する場合、図３４の下段（２）に示すように係数adj（０．０＜adj＜１．０）を乗じることで、曲率調整後のベクトルＶ’、ベクトルＷ’が求める。このようにすれば、曲線のふくらみを小さくして、直線に近づけることができる。なお、２回目以降のＳ４６の処理においては、ベジェ曲線の場合と同様に、係数adjを乗じる回数を増やし
たり、係数adjの値を小さくしたりする。
【数９】
0006304771.tif 000010
【数１０】
0006304771.tif 000011
【００７６】
＜ノイズの除去の変形例＞
図８のＳ１５に示したノイズを除去する処理は、所定の閾値よりも短い通路候補を削除するようにしてもよい。なお、閾値は正の整数であり、予め定められているものとする。ここでは、閾値が「５」であるものとする。
【００７７】
この場合、Ｓ５では、まず、上述のように細線化マップから、値が１のセルを抽出し、抽出した各セルについて、８近傍のセルの最小値より１小さい値（最小値が０なら−１）に置き換える。
【００７８】
次に、細線化マップに含まれる値が２のセルを抽出し、抽出されたセルの８近傍に、値が１以上のセルが１つしかない場合、抽出されたセルの値を１に置き換える。また、細線化マップにおける値が２のセルの８近傍に、値が１以上のセルが２つ以上存在する場合であって、８近傍の１以上の値のセルの少なくともいずれかが隣接していないとき、当該セルの値は２のままとする。また、細線化マップにおける値が２のセルの８近傍に、値が１以上のセルが２つ以上存在する場合であって、８近傍の１以上の値のセルがすべて接続されているとき、当該セルの８近傍のセルの最小値より１小さい値（最小値が−１なら−２）に置き換える。
【００７９】
そして、値が２のセルをすべて処理した後、上述した値が１のセルを抽出し、抽出した各セル毎にその８近傍のセルの最小値より１小さい値に置き換える処理に戻り、値が１のセルがなくなるまで処理を繰り返す。
【００８０】
次に、上述の処理後の細線化マップから、正負を反転させた閾値（閾値が５であれば−
５のように、閾値にマイナスを付けたもの）より値が小さいセルを抽出し、抽出されたセルの値を２に戻す。さらに、抽出されたセルの８近傍に存在し値が負のセルを抽出し、抽出されたセルの値を２に戻す。そして、正負を反転させた閾値より値が小さいセルを抽出する処理に戻り、値が負のセルが８近傍から抽出できなくなるまで繰り返す。なお、値が負のセルが８近傍から抽出できなくなった場合、最後に値を２に戻したセルは、値を１に置き換えるものとする。
【００８１】
以上のような処理によれば、閾値より短い通路候補のセルには、正負を反転させた閾値から−１までのいずれかの値が入る。よって、これらのセルを抽出して値を０に置き換える事で、閾値より短い通路候補を削除することができる。
【００８２】
図３５は、変形例に係るノイズ除去後の経路候補マップが生成される。図１４の例と比較すると、図３５には所定の閾値よりも長いヒゲ状の線が残されていることがわかる。部屋の中心から部屋の隅に向かう放射状のエッジが生成されるため、ユーザが、出発地点又は到着地点として部屋の隅などを指定した場合であっても、図１４の例と比較して指定された地点から近い位置に近傍点が見つかるようになる。
【００８３】
＜ノードの集約＞
図３６は、比較的狭い範囲に複数のノードが存在する場合の処理を説明するための図である。図１９のＳ３２において、経路の探索を行う際、エッジの長さの合計が所定の閾値（例えば、３００ｃｍ）以下で既に通過したノードに戻るような経路があれば、その途中に通過するノード及びエッジに例えばフラグを立てて抽出する。そして、抽出されたノード及びエッジを１つの仮想的なノードに置き換えてＳ３２の経路探索を行うようにする。例えば、図３６の上段（１）に示すようなノード及びエッジの集合が抽出された場合、図３６の下段（２）に示すように１つのノードに置き換える。図３６の上段（１）に示すようなノード及びエッジの集合が存在する場合、ＡからＢへ向かう複数の経路が存在するが、経路全体から見れば当該部分をどのように通過するかは些末な違いでしかないことがある。すなわち、比較的狭い範囲に、ループを形成するようなノード及びエッジの集合が存在しても、ウォークスルーの経路としては実質的な違いのないバリエーションをいたずらに増加させるおそれがある。よって、本変形例では、エッジの長さの合計が所定の閾値以下でループを形成する頂点列（ノード及びエッジの集合）を１つの仮想ノードに置き換えることにより、探索される経路の数を低減させる。なお、抽出されたノード及びエッジの集合は、同一の部屋又は空間に存在するという条件を満たす場合にのみ仮想ノードに置き換えるようにしてもよい。例えば経路探索用画像のＧＢ成分に保持させた構成要素の識別情報を用いることで、各ノード又はエッジに含まれる頂点列が同一の部屋又は空間に存在するか否か判断することができる。
【００８４】
＜フロアをまたがる経路＞
上述の例では、同一のフロアに始点及び終点が存在する場合の経路を求めたが、始点と終点とが異なるフロアに存在してもよい。この場合、図３のＳ４において各フロアについてグラフ生成処理を行い、ノード及びエッジを求めておく。なお、異なるフロアに存在する１以上の階段、エレベータ等は、経路探索用画像のＧＢ成分に保持させた構成要素の識別情報に基づいて対応関係を判断することができる。そして、Ｓ５の経路探索処理においては、あるフロアにおける始点から階段等までの第１の経路と、他のフロアにおける階段等から終点までの第２の経路とを求める。そして、第１の経路と第２の経路とを連結することにより、フロアをまたがる経路が生成される。図３７Ａ及び図３７Ｂは、１階の和室から２階のある洋室までの経路の一例を示す図である。図３７Ａには、和室内の始点から階段までの経路が示されている。図３７Ｂには、階段から洋室までの経路が示されている。例示した住宅は１つの階段でフロア間が接続されているが、複数の階段やエレベータを有している場合であっても、階段等に係る構成要素の識別情報が同一の経路を接続するこ
とにより、フロアをまたがる経路を提示することができる。
【００８５】
＜経由地点＞
上述の例では、ユーザの操作に基づいて始点及び終点を設定したが、さらに経由地点を設定するようにしてもよい。経由地点は、例えばユーザが通過したい部屋を指定することにより設定する。そして、Ｓ５（図３）において、経路探索用画像を用いて、指定された部屋の識別情報が保持されたセルを通過するエッジを特定し、当該エッジを含む経路を抽出する。
【００８６】
ただし、上述した実施形態に係る経路探索では、同一のノードを複数回通過する経路は抽出しない。よって、例えば出入口が１つしかない部屋を経由して他の目的地へ向かう経路を抽出することができない。そこで、Ｓ５（図３）の経路探索処理において、出入口が１つしかない部屋が経由地点に指定された場合は、例外的に同一のノードを通過して、指定された経由地点との間を往復する経路を生成する。
【００８７】
図３８は、経由地点を通過する経路の探索を説明するための図である。図３８の例では、５つの部屋「あ」、「う」、「え」、「お」、「か」が、廊下「い」を介して相互に接続されている。また、部屋「え」及び「か」は、直接接続されている。部屋「あ」は、分岐するエッジａとエッジｂとを含み、エッジｃを介して廊下「い」と接続されている。部屋「う」は、ループを形成するエッジｅとエッジｆとを含み、エッジｄを介して廊下「い」と接続されている。部屋「え」は、ループを形成するエッジｉ、エッジｊ、エッジｋを含み、エッジｈを介して廊下「い」と接続されると共に、エッジｌを介して部屋「か」と接続されている。部屋「お」は、分岐するエッジｔ及びエッジｕを含み、エッジｓを介して廊下「い」と接続されている。部屋「か」は、分岐するエッジｑ、エッジｍ、エッジｎを含み、エッジｐを介して廊下「い」と接続されている。廊下「い」は、エッジｇ、エッジｏ、エッジｒ、エッジｖを含む。なお、図３８の間取図において、部屋「あ」のエッジａ上に始点（丸印）が設定され、部屋「お」のエッジｔ上に終点（星印）が設定されたものとする。また、経由地点として、部屋「う」、部屋「え」が設定されたものとする。
【００８８】
このような条件で経路の探索を行うと、以下の３つのエッジ列で表される経路（１）〜（３）が見つかる。
（１）エッジａ，ｃ，ｇ，ｏ，ｒ，ｓ，ｔ（エッジ数７）
（２）エッジａ，ｃ，ｇ，ｈ，ｋ，ｌ，ｐ，ｒ，ｓ，ｔ（エッジ数１０）
（３）エッジａ，ｃ，ｇ，ｈ，ｉ，ｊ，ｌ，ｐ，ｒ，ｓ，ｔ（エッジ数１１）
なお、部屋「え」に含まれるエッジｉ、エッジｊ、及びエッジｋについては、上記経路（２）及び（３）がそれぞれ通過するようになっている。
【００８９】
一方、部屋「う」は出入口がエッジｄのみであり、部屋「う」に含まれるエッジｅ又はエッジｆを通過する経路は抽出されていない。そこで、通過できなかった部屋「う」のエッジ上の任意の点から、上記の経路（２）又は（３）上のノードまで経路探索を行う。ここでは、経路（３）を用いて説明する。このような条件で経路を探索すると、図３９Ａ及び図３９Ｂに示すような経路が見つかる。なお、図中の三角印は、経由地点を示すものとする。すなわち、以下の２つのエッジ列で表される経路（４）、（５）が見つかる。
（４）エッジｅ，ｄ（エッジ数２）
（５）エッジｅ，ｆ，ｄ（エッジ数３）
【００９０】
次に、経由地点の部屋「う」から探索して見つかった経路（４）及び（５）と、上記の経路（３）との交点のノードで、上記の経路（３）を分割する。例えば、上記の経路（２）は、以下の２つのエッジ列（３−１）及び（３−２）に分割される。
（２−１）エッジａ，ｃ（エッジ数２）
（２−２）エッジｇ，ｈ，ｉ，ｊ，ｌ，ｐ，ｒ，ｓ，ｔ（エッジ数９）
【００９１】
そして、分割されたエッジ列の間に、部屋「う」を経由するためのエッジ列（４）及び（５）を挿入する。なお、経由地点の「う」からの経路が複数見つかった場合は、任意の２つの経路を構成するエッジ列を挿入し、部屋「う」からの経路が１つしか見つからなかった場合は、当該経路を往復するエッジ列を挿入するものとする。例えば、上記のエッジ列（２−１）及び（２−２）の間に上記の経路（４）及び（５）を挿入し、図４０ｎ示すような経路（６）を生成する。経路（６）をエッジ列で表すと以下のようになる。このように、エッジｄ及びエッジｅを２回通過することで、行き止まりの部屋「う」を通過する経路を生成することができる。
（６）エッジａ，ｃ，ｄ，ｅ，ｅ，ｆ，ｄ，ｇ，ｈ，ｉ，ｊ，ｌ，ｐ，ｒ，ｓ，ｔ（エッジ数１６）
【００９２】
なお、経由地点として部屋を指定する代わりに、出発地点や到着地点と同様に間取図上の一点を指定するようにしてもよい。この場合、例えば、出発地点から経由地点までの第１の経路と、経由地点から到着地点までの第２の経路とを探索するようにしてもよい。第１の経路と第２の経路とを接続することにより、経由地点を通過する経路が生成される。この時、第１の経路の終点に於ける方向（終点直前の経路上の点から終点に向かうベクトル）と第２の経路の始点に於ける方向（始点から経路を少し進んだ点へのベクトル）が一致もしくは近い方向になるように第１及び第２の経路を選ぶと滑らかな経路が生成できる。
【００９３】
＜より滑らかな経路の作成＞
図４１は、上述した実施形態に係る経路探索によって求められた経路の一例を示す図である。実施形態の処理で生成される経路は、家具などの障害物を避けながら歩行する経路を求めるのに適している。しかしながら、家具などが置かれていない部屋では、振らつく様な経路候補が生成される場合がある。また、ノイズの除去の変形例に示した処理によれば、部屋の中心から部屋の隅に向かう放射状の経路候補が生成されるため、一旦部屋の中心に戻るような経路候補が得られることがある。
【００９４】
そこで、本変形例では、平滑化処理のＳ４１〜Ｓ４３（図２５）に於いてパスを折れ線で近似する際、できるだけ方向を変えずに直線で接続する折れ線を生成する。具体的には、まず、平滑化部１０７は、最初にパスの両端を直線で結び、その間に通過できない箇所が無いか判断する。そして、経路上に通行できない箇所が無い場合、パスを折れ線で近似せずに、そのまま直線で結ぶようにする。また、通過できない箇所があった場合、パスの始点からできるだけ遠くのノードであって始点と結んだ直線が通過できない箇所と衝突しないノードを抽出し、始点から抽出されたノードまでを直線で結ぶ。その後、抽出されたノードから終点までの間について、同様の処理を繰り返す。例えば、始点から、終点の１つ手前のノード、終点の２つ手前のノード、・・・・、始点から１つ先のノードから終点、の間に通行できない箇所があるかどうかを順次確認し、ノード間に通行できない箇所がなければ、そのノード間は直線で結ぶ。このように、もとの経路を近似する際、通行できない箇所と衝突しない折れ線の経路を生成する。
【００９５】
その後、Ｓ４４（図２５）以降の曲線変換を行う事で、不必要な振らつきを減少させることができる。図４２は、本変形例により生成された折れ線を用いた場合の経路の一例を示す図である。始点及び終点は、図４１に示した経路と同じである。また、家具等を避けて移動する左下の室内における経路は図４１の経路とほぼ同様である。しかし、経路上に障害物のない廊下や右上の室内においては、よりなめらかな経路が生成されている。
【００９６】
＜ウォークスルーの表示＞
図３のＳ７に示した通り、ウォークスルー表示部１０８は、平滑化された間取図上の経路に基づいて、三次元モデル内を移動するウォークスルーの表示を行う。なお、表示に用いる経路は、探索により見つかった複数の経路のいずれかをユーザが指定するようにしてもよいし、距離が最短の経路を採用するようにしてもよい。なお、探索により見つかった複数の経路をユーザに提示する場合、例えば図２９に示すように間取図上に経路を１つずつ提示し、ウォークスルーの表示に用いる経路をユーザが選択できるようにしてもよい。
【００９７】
ウォークスルーの表示においては、ユーザの視点で建築物内を移動するため、カメラの視線方向は所定距離（例えば、１００ｃｍ）先の経路上の点に向けることで自然な移動を表現することができるようになる。また、扉等の建具や階段に近づく場合は、所定距離先の経路上でなく扉等の建具や階段の進行方向に視線を固定したり、扉や階段の手前で一旦停止し、扉を開けてから通過するといった、自然な移動を表現することができるようになる。
【００９８】
ユーザに提示する経路を決める方法や、経路をユーザに提示する順序を決める方法は、始点から終点までの距離が短い経路を優先的に提示してもよいし、幅の広い通路を通過する経路を優先的に提示したり、通過する扉の数が少ない経路を優先的に提示するようにしてもよい。また、これらの条件の組み合わせによって、ユーザに提示する経路を決めるようにしてもよい。
【００９９】
幅の広い通路を通過する経路を優先的に提示する場合、例えば、図９を用いて説明したＳ１２で生成するマップを用いて、通過可能な領域の外縁からの距離に応じてエッジに重みづけする。エッジへの重みづけは、当該エッジと重なるマップ上のセルの重みの平均値や最大値、最小値等を用いるようにしてもよい。そして、始点から終点までの距離を算出する際、重みに応じた値を乗じることで、距離は遠くても幅が広く通行し易い経路が優先的に提示されるようになる。
【０１００】
通過する扉の数が少ない経路を優先的に提示する場合、例えば、図７に示したような経路探索用画像において扉を示すセルを通過する経路ほど優先度が下がるように重みづけをする。このようにすれば、同程度の距離の経路が見つかった場合、通過する扉の数が少ない経路が優先的に提示されるようになる。
【０１０１】
＜その他＞
本発明は上述の処理を実行するコンピュータプログラムを含む。さらに、当該プログラムを記録した、コンピュータ読み取り可能な記録媒体も、本発明の範疇に属する。当該プログラムが記録された記録媒体については、コンピュータに、この記録媒体のプログラムを読み込ませて実行させることにより、上述の処理が可能となる。
【０１０２】
ここで、コンピュータ読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータから読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータから取り外し可能なものとしては、フレキシブルディスク、光磁気ディスク、光ディスク、磁気テープ、メモリカード等がある。また、コンピュータに固定された記録媒体としては、ハードディスクドライブやＲＯＭ等がある。
【符号の説明】
【０１０３】
１  経路生成装置
１０１  記憶部
１０２  間取図読出部
１０３  セル分割部
１０４  細線化部
１０５  グラフ生成部
１０６  経路探索部
１０７  平滑化部
１０８  ウォークスルー表示部
【図１】
0006304771.tif 000012
【図２】
0006304771.tif 000013
【図３】
0006304771.tif 000014
【図４】
0006304771.tif 000015
【図５】
0006304771.tif 000016
【図６】
0006304771.tif 000017
【図７】
0006304771.tif 000018
【図８】
0006304771.tif 000019
【図９】
0006304771.tif 000020
【図１０】
0006304771.tif 000021
【図１１】
0006304771.tif 000022
【図１２】
0006304771.tif 000023
【図１３】
0006304771.tif 000024
【図１４】
0006304771.tif 000025
【図１５】
0006304771.tif 000026
【図１６】
0006304771.tif 000027
【図１７】
0006304771.tif 000028
【図１８】
0006304771.tif 000029
【図１９】
0006304771.tif 000030
【図２０】
0006304771.tif 000031
【図２１】
0006304771.tif 000032
【図２２】
0006304771.tif 000033
【図２３】
0006304771.tif 000034
【図２４】
0006304771.tif 000035
【図２５】
0006304771.tif 000036
【図２６】
0006304771.tif 000037
【図２７】
0006304771.tif 000038
【図２８】
0006304771.tif 000039
【図２９】
0006304771.tif 000040
【図３０】
0006304771.tif 000041
【図３１】
0006304771.tif 000042
【図３２】
0006304771.tif 000043
【図３３】
0006304771.tif 000044
【図３４】
0006304771.tif 000045
【図３５】
0006304771.tif 000046
【図３６】
0006304771.tif 000047
【図３７Ａ】
0006304771.tif 000048
【図３７Ｂ】
0006304771.tif 000049
【図３８】
0006304771.tif 000050
【図３９Ａ】
0006304771.tif 000051
【図３９Ｂ】
0006304771.tif 000052
【図４０】
0006304771.tif 000053
【図４１】
0006304771.tif 000054
【図４２】
0006304771.tif 000055