(57)【要約】【課題】視点から視認可能なオブジェクトを高速に検出する。【解決手段】本発明の一実施形態にかかるオブジェクト検索装置は、記憶部と、検索処理部とを備える。前記記憶部は、三次元空間に配置された複数のオブジェクトのうち大きさが上位のX1〜XN（Nは2以上の整数）個のオブジェクトに関する情報を含み、T（Tは1〜Nの値）の値が大きいほど、XTの値が小さい、第1空間索引情報〜第N空間索引情報を格納する。前記検索処理部は、三次元空間に設定された視点からの距離に応じて視界範囲を複数に分割し、前記分割部によって分割された範囲ごとに前記第1空間索引情報〜第N空間索引情報のうちの異なる一つを、前記視点からの距離が短い範囲ほど、前記空間索引情報の番号が小さくなるように割り当て、各前記範囲に存在するオブジェクトの中で、前記視点から視認可能な大きさを有するオブジェクトを、各前記範囲に対応する前記空間索引情報を検索することにより、特定する。【選択図】図1
2018005938.tif 000002
【特許請求の範囲】
【請求項１】
三次元空間に配置された複数のオブジェクトのうち大きさが上位のX1〜XN（Nは2以上の整数）個のオブジェクトに関する情報を含む第1空間索引情報〜第N空間索引情報を格納する記憶部と、
前記三次元空間に設定された視点からの距離が異なる複数の範囲ごとに前記第1空間索引情報〜第N空間索引情報のうちの異なる一つを、前記視点からの距離が短い範囲ほど、前記空間索引情報の番号が小さくなるように割り当て、各前記範囲に存在するオブジェクトの中で、前記視点から視認可能な大きさを有するオブジェクトを、各前記範囲に対応する前記空間索引情報を検索することにより、特定する検索処理部と
を備えたオブジェクト検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、オブジェクト検索装置に関する。
【背景技術】
【０００２】
従来、地理情報システムの三次元空間に存在するオブジェクト群の中で、指定地点から視認可能であるオブジェクト（可視オブジェクト）を検出する方法は、（1）視界内に存在するオブジェクトを検出し、（2）検出したオブジェクトが、遠距離で実質的に視認できないオブジェクトや他のオブジェクトの死角に存在するオブジェクトといった不可視なオブジェクトであるか否かを、レンダリングや幾何判定等により判定し、（3）不可視と判定されたオブジェクトを削除する、という段階を踏む手法が取られており、検出の高速性が失われていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2013-97573号公報
【特許文献２】特開2007-72227号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、視点から視認可能なオブジェクトを高速に検出することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一実施形態にかかるオブジェクト検索装置は、記憶部と、検索処理部とを備える。
【０００６】
前記記憶部は、三次元空間に配置された複数のオブジェクトのうち大きさが上位のX1〜XN（Nは2以上の整数）個のオブジェクトに関する情報を含む第1空間索引情報〜第N空間索引情報を格納する。
【０００７】
前記検索処理部は、三次元空間に設定された視点からの距離に応じて視界範囲を複数に分割し、前記分割部によって分割された範囲ごとに前記第1空間索引情報〜第N空間索引情報のうちの異なる一つを、前記視点からの距離が短い範囲ほど、前記空間索引情報の番号が小さくなるように割り当て、各前記範囲に存在するオブジェクトの中で、前記視点から視認可能な大きさを有するオブジェクトを、各前記範囲に対応する前記空間索引情報を検索することにより、特定する。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態のブロック図。
【図２】本発明の一実施形態の処理フローチャート。
【図３】検索制御部の処理フローチャート。
【図４】検索部と死角判定部の処理フローチャート。
【図５】実施形態におけるオブジェクトの配置を示す図。
【図６】実施形態における全体空間索引木の構造を示す図。
【図７】実施形態における詳細空間索引木の構造を示す図。
【図８】図1に対し、オブジェクトを新たに登録または削除する場合に必要な処理部を追加した形態のブロック図。
【発明を実施するための形態】
【０００９】
図1に、本発明の一実施形態を示す。また図2に、本発明の一実施形態の処理フローチャートを示す。
【００１０】
記憶部101は、オブジェクト索引データベース102と、オブジェクト索引階層キャッシュ103とを備える。
【００１１】
オブジェクト索引データベース102は、三次元空間に配置された全オブジェクトの各ID、位置、大きさといった情報を含む空間索引情報を、空間索引木（全体空間索引木）の形態で、格納する。各オブジェクトの形状は、直方体でもよいし、任意の三次元形状でもよい。任意の三次元形状の場合、オブジェクトの大きさは、そのオブジェクトを包み込むことができる最小の直方体である最小外包直方体（MBB、Minimum Bounding Box）の大きさとする。
【００１２】
空間索引木は、検索処理を高速化するためのデータ構造である。最上位層にある一つのノードに複数のノードがつながり、その複数の各ノードにもさらに複数のノードがつながるというツリー構造を構成する。最上位層にあるノードを根ノード、最下層にあるノードを葉ノード、その間にあるノードを中間ノードと呼ぶ。各葉ノードには、一つのオブジェクトが割り当てられ、その葉ノードが保持する一つのオブジェクトを外包するMBBの情報を保持する。中間ノードは、中間ノードの下にある各葉ノードが保持するオブジェクトすべてを外包するMBBの情報を保持する。根ノードは、その空間索引木の葉ノードに割り当てられたすべてのオブジェクトのを外包するMBBの情報を保持する。全体空間索引木の具体例としては、Rツリーや八分木などが考えられる。ここでは、空間索引木（全体空間索引木）の形態で、三次元空間に配置された全オブジェクトの情報を保持したが、全オブジェクトの情報を保持できる限り、リスト構造など、他の種類の構造でオブジェクトの情報を保持してもよい。
【００１３】
オブジェクト索引階層キャッシュ103は、全体空間索引木の補助的な役割を担う空間索引情報を、空間索引木（詳細空間索引木）の形態で格納する。詳細空間索引木は一つまたは複数格納されている。各詳細空間索引木は、MBBの大きさが全体の上位一定数または一定割合のオブジェクトのみを保持し、複数の詳細索引木が存在する場合、例えばMBBの大きさが全体の上位10%に含まれるオブジェクトのみを保持する詳細空間索引木、全体の上位1%に含まれるオブジェクトのみを保持する詳細空間索引木等など、詳細空間索引木ごとに、保持するオブジェクトの個数は異なってもよい。ここでは、詳細空間索引木は、上位の一定数または一定割合のオブジェクトを保持するとしたが、個数または割合は、一定でなくてもよい。詳細空間索引木も、Rツリーや八分木などが考えられる。ここでは、空間索引木（詳細空間索引木）の形態で、上位のオブジェクトの情報を保持したが、全オブジェクトの情報を保持できる限り、リスト構造など、他の種類の構造で情報を保持してもよい。
【００１４】
受付部104は、通信インターフェイス105より、オブジェクトの検索範囲である視界に関するデータの入力を受け付ける（S101）。このデータは、視点の位置ベクトル、視線の方向ベクトル、および視角の大きさを表す情報を含むデータ、またはそれらと相互変換可能なデータが考えられる。当該データにより、三次元空間における視点および視界範囲が定められる。なお、入力はネットワーク経由のデータ通信のみでなく、ソフトウェアにおけるAPI呼び出しなどでもよい。受付部104は、受け付けたデータを検索処理部106へ送る。
【００１５】
検索処理部106は、視界分割部107と、検索制御部108と、検索部109と、死角判定部110とを備える。
【００１６】
視界分割部107は、受付部104が受け付けたデータより表される視界を、視点からの距離に応じて、複数に分割する（S102）。なお、視点から一番手前に存在する視界を第一の視界と呼び、その次に手前の視界を第二の視界、その次に手前の視界を第三の視界というように名付ける。この分割によって生じた視界の数は、記憶部101に格納された全体空間索引木と詳細空間索引木群を合わせた数以下となるようにする。
【００１７】
分割する基準値となる距離は、ユーザに入力させる方法、事前に詳細空間索引木に保持させる方法、視界分割部107に計算させる方法などが考えられる。
【００１８】
視界分割部107に距離を計算させる場合、視界分割部107は、各詳細空間索引木が保持する最小のオブジェクトを検索した上で、視点から当該最小オブジェクトが遠距離で実質的に視認できなくなる限界距離を算出する。この限界距離が分割の基準値となる。
【００１９】
遠距離で実質的に視認できなくなる限界距離は、オブジェクトをレンダリングした場合に、オブジェクトの大きさが画素サイズ以下になる距離や、太陽反射光の到達において視直径が一定以下になる距離にするといった方法で算出されることが考えられる。
【００２０】
各詳細空間索引木が保持する最小のオブジェクトを検出する方法としては、全オブジェクトを全検索する方法、ヒープなど最小の要素を効率的に検出することができるデータ構造の索引木を新たに記憶部101に格納した上でその索引木を検索する方法などが考えられる。
【００２１】
ヒープなどの最小の要素を効率的に検出することができるデータ構造の索引木を用い、視界分割部107に分割基準を計算させる場合は、あらかじめ詳細空間索引木に距離を付記するといった手間が不要となる。
【００２２】
検索制御部108は、視界分割部107により分割された各視界ごとに、検索対象とすべき詳細空間索引木を指示する（S103）。視点から一番手前の第一の視界に対しては、全体空間索引木を指定し、第二の視界、第三の視界など一番手前以外の各視界に対しては、分割した距離に対応する詳細空間索引木を指示する。
【００２３】
検索部109は、検索制御部108により検索対象とされた空間索引木に対し、空間索引木の最上位層にある根ノードから最下層にある葉ノードに向けて再帰的に検索を実行し、各ノードが保持するすべてのオブジェクトを外包するMBBが視界内に存在するかを判定する（S103）。「ノードが保持するすべてのオブジェクト」とは、そのノードの下位に存在するすべての葉ノードに割り当てられたオブジェクトのことである。したがって、ノードが保持するすべてのオブジェクトを外包するMBBは、当該ノードが根ノードの場合は、全オブジェクトを外包するMBBとなる。中間ノードの場合は、中間ノードの下にある各ノードが保持するオブジェクトすべてを外包するMBBである。葉ノードの場合は、その葉ノードが保持する一つのオブジェクトを外包するMBBである。
【００２４】
この判定方法は、検索範囲である視界を円錐や四角錐といった立体オブジェクトで表した上で、この立体オブジェクトが、上記のMBBと干渉するかを調べる方法が考えられる。
【００２５】
死角判定部110は、他のオブジェクトによって、対象のオブジェクトが死角となるかを判定する（S103）。この判定方法は、レンダリングを行って当該オブジェクトが1画素もレンダリングされない場合に死角に入っていると判定する方法や、幾何判定などが考えられる。
【００２６】
送信部111は、検索制御部108から送られたオブジェクト一覧を通信インターフェイス105を介してネットワーク等に送信する（S104）。
【００２７】
検索制御部、検索部、死角判定部によるオブジェクト検出処理を詳しく説明する。図3に、検索制御部108の一連の手順を示す。図4に、検索部109と死角判定部110の一連の手順を示す。
【００２８】
はじめに、検索制御部108は、オブジェクトを入れるリストを初期化する（S201）。次に、検索対象である分割された視界をすべて検索するまで以下を繰り返す。検索対象が、視点から一番手前に存在する第一の視界であるかを判定する（S202）。第一の視界である場合（S202のYES）、検索制御部108は、検索部109に対し、全体空間索引木を検索対象とするよう指示する（S203）。第一の視界でない場合は（S202のNO）、対応する詳細空間索引木を検索対象とするよう指示する（S204）。
【００２９】
検索対象を指示された検索部109は、スタックを初期化し、空間索引木の根ノードを挿入する（S301）。次に、検索部109は、スタックが空になるまで以下を繰り返す（S302のYES）。スタックからノードを1個取り出し（S303）、ノードが保持する全オブジェクトのMBBが分割された視界を表す立体と干渉するかによって視界内であるかを判定する（S304）。干渉しない場合は、当該ノードが保持する全オブジェクトは視界外として（S304のNO）、このループの最初（S302）に戻る。干渉する場合は、当該ノードが保持する全オブジェクトは視界内として（S304のYES）、死角判定部110が、ノードが保持する全オブジェクトのMBBがリストにあるオブジェクトの死角になっているかを判定する（S305）。死角内と判定された場合は（S305のNO）、このループの最初（S302）に戻る。死角外と判定された場合は（S305のYES）、検索部109はこのノードが葉ノードかを判定する（S306）。葉ノードでない場合（S306のNO）は、このノードが保持するすべての子ノードをスタックに挿入し（S307）、このループの最初に戻る（S302）。葉ノードの場合（S306のYES）は、死角判定部110は、先の処理とは逆に、リストのオブジェクトが、今回新たに検出されたオブジェクトによって死角となるかを判定し、死角と判定されたオブジェクトをリストから削除する（S308）。今回検出されたオブジェクトをリストに追加する（S309）。そして、ループの最初に戻る（S302）。最後の葉ノードの検索が終了すると、スタックが空となり、このループが終了するので（S302のNO）、この視界における処理は終了し、次の視界に対する処理（S202）を続ける。すべての視界に対し処理を行えば、完了となる。
【００３０】
図4のフローでは、ノードが保持する全オブジェクトを含むMMBが視界と干渉しない場合（S304のNO）、および他のオブジェクトの死角になっている場合（S305のNO）には、スタックにすべての子ノードを追加する処理（S307）が行われないため、当該ノードの子ノードについては検索が行われない。当該ノードの子ノードが保持するオブジェクトも視界と干渉しない、または他のオブジェクトの死角になっていることが明らかだからである。このフローにより検索回数を減らすことができ、少ないメモリオーバーヘッドで当該検索を効率的に行うことが可能である。
【００３１】
なお、検索の際は、空間索引木を記憶部101からコピーする必要はなく、空間索引木が保持する必要なノードだけ順次取得すればよい。
【００３２】
検索制御部108は、検索部109が検出したオブジェクトを一覧化し、送信部111へ送る。
なお、検索制御部108はオブジェクトの一覧をキャンセルすることがある。
【００３３】
以上により、検索制御部、検索部、死角判定部によるオブジェクト検出処理は完了となる。
【００３４】
以下、具体例を用い、上記一実施形態が可視オブジェクトを検出する場合の動作を説明する。
【００３５】
図5に、地理情報に係るオブジェクトの配置の例を示す。オブジェクトは直方体で表され、そのIDが記されている。
【００３６】
図6に、図5に示されたオブジェクトをRツリーによって索引化した全体空間索引木の例を示す。全体空間索引木は、オブジェクト索引データベース102に格納されている。
【００３７】
第三階層にあるノード6から17までの葉ノードはそれぞれ、オブジェクトAからLのうちの1個のオブジェクトに関する情報を保持している。第二階層のノード2から5までの中間ノードはそれぞれ、近隣ごとにまとめられた3個のオブジェクトに関する情報を保持している。なお、本実施例では、それぞれの中間ノードが保持するオブジェクトの数は3個で均等であるが、保持するノードの数が異なる場合もありうる。
【００３８】
また、各中間ノードおよび根ノードは、自ノード配下に所属する全オブジェクトを取り囲むMBBの情報を保持するものとする。図6の例では、ノード2は、オブジェクトA、B、Cを含むMMBの情報を保持する。根ノードであるノード1は、オブジェクトAないしLのすべてのオブジェクトを含むMMBの情報を保持する。
【００３９】
図7に、Rツリーによって索引化した詳細空間索引木の例を示す。詳細空間索引木は、オブジェクト索引階層キャッシュ103に格納されている。この詳細空間索引木は、全オブジェクトのうち、大きさの上位6個のオブジェクトであるA、E、F、H、J、Kのみを保持するものとする。
【００４０】
今、図5の斜線で示された範囲を視界とする入力データを、受付部104が受け付けたものとする。
【００４１】
視界分割部107は、図7に示す詳細空間索引木が保持する最小のオブジェクトであるJが視点から可視である限界の距離を計算し、その値d0を得る。そして、視界分割部107は、図5に示す斜線の視界を視点からd0の距離で分割し、d0以下の範囲を第一の視界、d0より遠い範囲を第二の視界とする。
【００４２】
検索制御部108は、リストを初期化し（S201）、図6に示した全体空間索引木を第一の視界での検索対象とするよう、検索部109に指示する（S203）。
【００４３】
検索部109は、図4に示したフローチャートの通り、図6に示したノード1をスタックに挿入する（S301）。スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード1を取り出す（S303）。ノード1が保持する全オブジェクト（オブジェクトAないしL）のMBBが、第一の視界と干渉するかどうかを判定する（S304）。本実施例では、このMBBは第一の視界と干渉する（S305のYES）。次に、死角判定部110が、このMBBがリストにあるオブジェクトの死角内であるかを判定する（S305）。まだリストにはオブジェクトがないので、このMBBは死角外である（S305のYES）。そして、ノード1は葉ノードではないので（S306のNO）、その子ノードである2、3、4、5をスタックに追加し（S307）、ノード1に対する処理は終了する。
【００４４】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード2を取り出す（S303）。ノード2が保持する全オブジェクト（オブジェクトA、B、C）のMBBも第一の視界と干渉する（S304のYES）。また、まだリストにはオブジェクトがないので、このMBBは死角外である（S305のYES）。また、ノード2は葉ノードではない（S306のNO）。よって、ノード6、7、8がスタックに挿入され（S307）、ノード2に対する処理は終了する。
【００４５】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード6を取り出す（S303）。ノード6が保持する全オブジェクト（オブジェクトAのみ）のMBBも第一の視界と干渉する（S304のYES）。また、まだリストにはオブジェクトがないので、このMBBは死角外である（S305のYES）。そして、ノード6は葉ノードである（S306のYES）。よって、新規検出したオブジェクトによって死角になるオブジェクトをリストから削除する処理が行われるが、今までのリストにはオブジェクトがなかったため、削除は行われない（S308）。そして、ノード6が保持していたオブジェクトAがリストに追加され（S309）、ノード6に対する処理は終了する。
【００４６】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード7を取り出す（S303）。ノード7が保持する全オブジェクト（オブジェクトBのみ）のMBBも第一の視界と干渉する（S304のYES）。また、このMBBは、リストにあるオブジェクトAの死角とはならないので、死角外である（S305のYES）。そしてノード7は葉ノードである（S306のYES）。ゆえに、新規検出したオブジェクトBによって、リストにあるオブジェクトAが死角となるかを判定する。本実施例では、オブジェクトBによってオブジェクトAは死角とはならないため、オブジェクトAは削除されない（S308）。そして、ノード7が保持していたオブジェクトBがリストに追加され（S309）、ノード7に対する処理は終了する。
【００４７】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード8を取り出す（S303）。ノード8が保持する全オブジェクト（オブジェクトCのみ）のMBBも第一の視界と干渉するが（S304のYES）、このMBBはオブジェクトAの死角に存在するため（S305のNO）、ノード8の処理は終了する。
【００４８】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード3を取り出す（S303）。ノード3が保持する全オブジェクト（オブジェクトD、E、F）のMBBは、第一の視界と干渉しない（S304のNO）。よってノード3の処理は終了する。
【００４９】
同様にして、ノード4および5が保持するオブジェクトのMBBも第一の視界と干渉しないため（S304のNO）、ノード4および5の処理はその時点で終了する。そして、スタックにノードがなくなるため（S302のNO）、第一の視界に対する処理は終了する。
【００５０】
次に、検索制御部108は、第二の視界での検索対象として図7に示した詳細空間索引木を検索部109に指示する（S204）。
【００５１】
検索部109はスタックを初期化し、ノード1を挿入する（S301）。スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード1を取り出す（S303）。
ノード1が保持する全オブジェクト（オブジェクトA、E、F、H、J、K）のMBBは、第二の視界と干渉する（S304のYES）。また、このMBBは、リストにあるオブジェクトAおよびBの死角とはならないので、死角外である（S305のYES）。また、ノード1は葉ノードではない（S306のNO）。よって、ノード2、3、4がスタックに挿入され（S307）、ノード1に対する処理は終了する。
【００５２】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード2を取り出す（S303）。ノード2が保持する全オブジェクト（オブジェクトAおよびH）のMBBも第二の視界と干渉する（S304のYES）。また、このMBBは、リストにあるオブジェクトAおよびBの死角とはならないので、死角外である（S305のYES）。また、ノード2は葉ノードではない（S306のNO）。よってノード5、6がスタックに挿入され（S307）、ノード2に対する処理は終了する。
【００５３】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード5を取り出す（S303）。ノード5が保持する全オブジェクト（オブジェクトAのみ）のMBBは第二の視界と干渉しない（S304のNO）。よってノード5の処理は終了する。
【００５４】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード6を取り出す（S303）。ノード6が保持する全オブジェクト（オブジェクトHのみ）のMBBは第二の視界と干渉する（S304のYES）。また、このMBBは、リストにあるオブジェクトAおよびBの死角とはならないので、死角外である（S305のYES）。そして、ノード6は葉ノードである（S306のYES）。ゆえに、新規検出したオブジェクトHによって、リストにあるオブジェクトAおよびBが死角となるかを判定する。本実施例では、オブジェクトHによってオブジェクトAおよびBは死角とはならないため、オブジェクトAおよびBは削除されない（S308）。そして、ノード6が保持していたオブジェクトHがリストに追加され（S309）、ノード6に対する処理は終了する。
【００５５】
スタックにノードが存在しているので（S302のYES）、検索部109がスタックからノード3を取り出す（S303）。ノード3が保持する全オブジェクト（オブジェクトEおよびF）のMBBは第二の視界と干渉するが（S304のYES）、このMBBはオブジェクトAの死角に存在するため（S305のNO）、ノード3の処理は終了する。
【００５６】
検索部109がスタックからノード4を取り出す（S303）。ノード4が保持する全オブジェクト（オブジェクトJおよびK）のMBBは第二の視界と干渉しない（S304のNO）。よってノード4の処理は終了する。
【００５７】
そして、スタックにノードがなくなるため（S302のNO）、第二の視界に対する処理は終了する。
【００５８】
第一の視界および第二の視界に対する処理が終了した結果、リストに追加されたオブジェクトA、B、Hが可視オブジェクトとして検索制御部108に送られる。検索制御部108は、このオブジェクトを送信部111に送る。
【００５９】
送信部111は、検索制御部108から送られたオブジェクトA、B、Hの情報を通信インターフェイス105を介して送信する。
【００６０】
上記実施例では、第二の視界の検索に、オブジェクト索引階層キャッシュ103に格納された図7に示した詳細空間索引木を利用している。第二の視界では、オブジェクトJよりも小さいオブジェクトは不可視であるため、オブジェクトJ以上の大きさのオブジェクトを保持する図7の詳細空間索引木を検索すれば足りるからである。図7の詳細空間索引木が保持するオブジェクトの中で、第二の視界内に存在するのはオブジェクトHのみであるため、オブジェクトHのみが検出されている。
【００６１】
仮に、詳細空間索引木ではなく、全体空間索引木から検索した場合は、オブジェクトD、E、F、G、Iも検出されることとなる。前述のように、これらのオブジェクトは距離d0以上では遠距離のため視認できず、これらのオブジェクトを削除するという工程が必要となる。
【００６２】
したがって、本発明の実施形態は、遠距離で実質的に視認できないオブジェクトを検索対象に含ませないため、検索後に判定を行いオブジェクトを削除するという工程を省くことができる点で優れている。
【００６３】
図8に、図1の装置に対し、オブジェクトを新たに登録または削除する際の処理を行う各処理部を追加した形態のブロック図を示す。
【００６４】
記憶部101は、オブジェクト索引データベース102とオブジェクト索引階層キャッシュ103とは別に、ヒープ付オブジェクト索引階層キャッシュ201を備える。
【００６５】
ヒープ付オブジェクト索引階層キャッシュ201は、各詳細空間索引木に対応するヒープ群を格納する。ヒープは、対応する詳細空間索引木が保持するオブジェクト情報を保持する。ヒープは最小の要素を効率的に検出するデータ構造を有し、ヒープを検索することで、対応する詳細空間索引木が保持する最小のオブジェクトを、詳細空間索引木から検索するよりも早く検出することができる。例えばデータ構造は二分木であり、各ノードにオブジェクトが割り当てられ、根ノードが最小サイズのオブジェクトであり、末端に行くほど、大きなサイズのオブジェクトが割り当てられる。この場合、二分木の根ノードを特定することで、高速に最小サイズのオブジェクトを特定できる。ヒープは、各オブジェクトのサイズに応じて各オブジェクトを所定のルールで配置した索引情報の一形態であり、ヒープ以外の構造を採用してもよい。
【００６６】
受付部104は、オブジェクトを新たに登録または削除するための更新データを受け付け、更新対象キャッシュ判定部202へ送る。更新データは、オブジェクトのID、位置、MBBといったものが考えられる。
【００６７】
更新対象キャッシュ判定部202は、詳細空間索引木の中で、更新が必要な詳細空間索引木を検出する。
【００６８】
具体的には、オブジェクトを新たに登録する場合でも削除する場合でも、更新対象キャッシュ判定部202は、ヒープ付オブジェクト索引階層キャッシュ201に格納されているヒープ群を順に検索する。検索する順は、MBBの大きさが全体の上位10%に含まれるオブジェクトのみを保持するヒープ、次に全体の上位1%に含まれるオブジェクトのみを保持するヒープというように、上位順が望ましい。そして、検索対象のヒープが保持する最小のオブジェクトを検出し、検出された最小オブジェクトのMBBと、登録するオブジェクトのMBBの大きさを比較する。
【００６９】
オブジェクトを新たに登録する場合において、ヒープの最小オブジェクトのMBBのほうが大きいときは、次のヒープを検索する。登録するオブジェクトのMBBのほうが大きいときは、そのヒープおよびそのヒープに対応する詳細空間索引木を更新する必要があると判明する。ヒープと詳細空間索引木は、オブジェクトの大きさが全体の上位一定数以上のオブジェクトのみを保持するので、新規登録されるオブジェクトが上位一定数に含まれ、今まで最小であったオブジェクトが上位一定数から外れるからである。そして、更新対象と判明したヒープおよび詳細空間索引木よりも、大きさが下位のオブジェクトが登録されているヒープおよび詳細空間索引木もすべて更新する必要がある。上位一定数から外れた最小オブジェクトが、下位のヒープと詳細空間索引木に追加され、下位の今までの最小オブジェクトが外れるということが繰り返されるからである。
【００７０】
逆に、オブジェクトを削除する場合において、ヒープの最小オブジェクトのMBBのほうが小さいときは、そのヒープおよび対応する詳細空間索引木に、削除対象のオブジェクトが保持されていると分かるため、そのヒープと対応する詳細空間索引木を更新する必要があると判明する。また、更新対象と判明したヒープおよび詳細空間索引木よりも、大きさが下位のオブジェクトが登録されているヒープおよび詳細空間索引木もすべて、削除するオブジェクトを保持しているため、更新する必要がある。
【００７１】
更新制御部203は、オブジェクトを新たに登録する場合は空間索引登録部204に、オブジェクトを削除する場合は空間索引削除部205に対し、更新すべき空間索引木を指示する。
更新すべき空間索引木は、更新対象キャッシュ判定部202が検出した詳細空間索引木およびヒープ並びに全体空間索引木である。
【００７２】
空間索引登録部204および空間索引削除部205は、更新制御部203に指示された対象に対し、オブジェクトの登録または削除を行う。
【００７３】
送信部111は、上記の処理がすべて問題なく行えたかどうかを、通信インターフェイス105に送信する。
【００７４】
上記に、本発明の一実施形態と具体例を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００７５】
なお、上記に説明した実施形態におけるオブジェクト検索装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることで実現することが可能である。すなわち、オブジェクト検索装置の検索処理部106は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、オブジェクト検索装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD-ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、オブジェクト検索装置内の記憶部101は、装置内もしくは外付けのメモリ装置およびハードディスク、あるいは、CD-R, CD-RW, DVD-RAM, DVD-R 等の記録媒体によって構成されてもよい。
【００７６】
以下に、本願原出願の特許査定時の特許請求の範囲に記載された発明を付記する。
［１］三次元空間に配置された複数のオブジェクトのうち大きさが上位のX1〜XN（Nは2以上の整数）個のオブジェクトに関する情報を含み、T（Tは1〜Nの値）の値が大きいほど、XTの値が小さい、第1空間索引情報〜第N空間索引情報を格納する記憶部と、
前記三次元空間に設定された視点からの距離が異なる複数の範囲ごとに前記第1空間索引情報〜第N空間索引情報のうちの異なる一つを、前記視点からの距離が短い範囲ほど、前記空間索引情報の番号が小さくなるように割り当て、各前記範囲に存在するオブジェクトの中で、前記視点から視認可能な大きさを有するオブジェクトを、各前記範囲に対応する前記空間索引情報を検索することにより、特定する検索処理部と
を備えたオブジェクト検索装置。
[２］前記検索処理部は、第1の範囲に第X空間索引情報、前記第1の範囲に隣接し前記第1の範囲より遠い第2の範囲に第Y空間索引情報を割り当て、前記第Ｙ空間索引情報がもつオブジェクトのうち最小の大きさのオブジェクトが前記視点から視認可能な最長距離を計算し、前記最長距離に基づき前記第1の範囲および前記第2の範囲間の分割を行い、新たな範囲を作成する
［１］に記載のオブジェクト検索装置。
[３］前記検索処理部は、前記視点からの距離が短い範囲から順番に検索を行い、前記視点から視認可能な大きさを有していても、前記範囲の検索または前記範囲より前記視点に近い範囲の検索で特定された別のオブジェクトの死角に入るために視認できないオブジェクトは、除外する
［１］または［２］に記載のオブジェクト検索装置。
[４］前記検索処理部は、前記視点からの距離が短い範囲から順番に検索を行い、既に特定したオブジェクトのうち、新たに特定されたオブジェクトの死角に入るために、前記視点から視認できなくなるオブジェクトが発生した場合は、当該オブジェクトを除外する
［１］ないし［３］のいずれか一項に記載のオブジェクト検索装置。
[５］前記第1空間索引情報〜第N空間索引情報は、それぞれ木構造を有し、前記木構造は、前記木構造に対応する空間索引情報に表されるオブジェクトのすべてをそれぞれ異なる葉ノードに割り当て、根ノードおよび中間ノードは、前記根ノードおよび前記中間ノードより下位に存在するすべての葉ノードに割り当てられたオブジェクトの全体を包含する直方体の情報を有し、
前記検索処理部は、前記範囲ごとの検索において、前記範囲に対応する木構造の根ノードに対応する直方体が前記範囲と干渉するかを判定し、干渉する場合は、当該根ノードの下位のノードに対して同様の処理を繰り返し行い、葉ノードに達した場合に、前記葉ノードに対応するオブジェクトが前記範囲と干渉すると判定した場合は、当該オブジェクトが前記範囲内に存在すると判断し、前記範囲と干渉しないと判定した場合は、前記根ノードまたは前記下位のノードよりさらに下位のノードに対する処理を行わず、または、前記範囲と干渉しないと判定したノードが葉ノードの場合は、前記葉ノードに対応するオブジェクトは前記範囲に存在しないと判断する
［１］ないし［４］のいずれか一項に記載のオブジェクト検索装置。
[６］オブジェクトの登録または削除の要求を受け付ける受付部をさらに備え、
前記第1空間索引情報〜前記第N空間索引情報は、それぞれ一定個数のオブジェクトの関する情報を含み、
前記記憶部は、前記第1空間索引情報〜前記第N空間索引情報毎に、前記空間索引情報が表す各オブジェクトのサイズに応じて各オブジェクトを所定のルールで配置した第1〜第Nの索引情報を格納し、
前記検索処理部は、前記第1空間索引情報〜前記第N空間索引情報のうちの少なくとも一つについて、前記一つに対応する索引情報から最小サイズのオブジェクトを特定し、特定したオブジェクトと、前記登録要求に示されるオブジェクトのサイズを比較することにより、前記第1〜第N空間索引情報および前記第1〜第N索引情報のうち、更新の必要のある空間索引情報および索引情報を特定し、特定した空間索引情報および索引情報を、前記登録要求されたオブジェクトの情報に基づき更新する
［１］ないし［５］のいずれか一項に記載のオブジェクト検索装置。
[７］  前記三次元空間における視点の位置ベクトル、視線方向のベクトルおよび視角の大きさに関する情報を含む検索要求を受け付ける受付部を備え、
前記検索要求に基づき前記三次元空間における前記視点を決定する
［１］ないし［６］のいずれか一項に記載のオブジェクト検索装置。
[８］前記検索処理部により特定されたオブジェクトを表すデータを、外部に送信する送信部
を備えた請求項［１］ないし［７］のいずれか一項に記載のオブジェクト検索装置。
[９］前記上位のX1〜XN（Nは2以上の整数）個のオブジェクトは、前記三次元空間に配置された複数のオブジェクトのうち大きさが上位の一定個数のオブジェクト、または上位の一定割合のオブジェクトである
［１］ないし［８］のいずれか一項に記載のオブジェクト検索装置。
[１０］三次元空間に設定された視点からの距離が異なる複数の範囲ごとに、三次元空間に配置された複数のオブジェクトのうち大きさが上位のX1〜XN（Nは2以上の整数）個のオブジェクトに関する情報を含み、T（Tは1〜Nの値）の値が大きいほど、XTの値が小さい、第1空間索引情報〜第N空間索引情報のうちの異なる一つを、前記視点からの距離が短い範囲ほど、前記空間索引情報の番号が小さくなるように割り当てるステップと、
各前記範囲に存在するオブジェクトの中で、前記視点から視認可能な大きさを有するオブジェクトを、各前記範囲に対応する前記空間索引情報を検索することにより、特定するステップと
をコンピュータが実行するオブジェクト検索方法。
[１１］三次元空間に設定された視点からの距離が異なる複数の範囲ごとに、三次元空間に配置された複数のオブジェクトのうち大きさが上位のX1〜XN（Nは2以上の整数）個のオブジェクトに関する情報を含み、T（Tは1〜Nの値）の値が大きいほど、XTの値が小さい、第1空間索引情報〜第N空間索引情報のうちの異なる一つを、前記視点からの距離が短い範囲ほど、前記空間索引情報の番号が小さくなるように割り当てるステップと、
各前記範囲に存在するオブジェクトの中で、前記視点から視認可能な大きさを有するオブジェクトを、各前記範囲に対応する前記空間索引情報を検索することにより、特定するステップと
をコンピュータに実行させるためのプログラム。
【符号の説明】
【００７７】
101  記憶部
102  オブジェクト索引データベース
103  オブジェクト索引階層キャッシュ
104  受付部
105  通信インターフェイス
106  検索処理部
107  視界分割部
108  検索制御部
109  検索部
110  死角判定部
111  送信部
201  ヒープ付オブジェクト階層キャッシュ
202  更新対象キャッシュ判定部
203  更新制御部
204  空間索引登録部
205  空間索引削除部
【図１】
2018005938.tif 000003
【図２】
2018005938.tif 000004
【図３】
2018005938.tif 000005
【図４】
2018005938.tif 000006
【図５】
2018005938.tif 000007
【図６】
2018005938.tif 000008
【図７】
2018005938.tif 000009
【図８】
2018005938.tif 000010