(57)【要約】【課題】点群を用いたデータ処理の効率を高める。【解決手段】マスタノード３２は、空間の外観を複数の点の集合により表した点群であって、上記空間を分割した複数のブロックのいずれかに各点が属する点群を取得する。マスタノード３２は、複数のブロックのそれぞれに属する点の数に基づいて、各ブロックの優先度を決定する。マスタノード３２は、複数のブロックのうち優先度が高いブロックの処理を、優先度が低いブロックの処理より優先的に実行する。【選択図】図３
2018032112.tif 000002
【特許請求の範囲】
【請求項１】
空間の外観を複数の点の集合により表した点群であって、前記空間を分割した複数のブロックのいずれかに各点が属する点群を取得する点群取得部と、
前記複数のブロックのそれぞれに属する点の数に基づいて、各ブロックの優先度を決定する優先度決定部と、
前記優先度決定部により決定された優先度に応じて前記複数のブロックを処理する点群処理部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記優先度決定部は、点の数が多いブロックほど高い優先度を決定することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記点群処理部は、通信網を介して、前記点群に基づくデータ処理を実行すべき外部装置に対してブロック単位に点のデータを送信し、その際に、優先度が高いブロックの点のデータを先に送信することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記点群処理部は、各ブロックの点に基づいて各ブロックの画像を生成し、その際に、優先度が高いブロックの画像を先に生成することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項５】
前記点群処理部は、優先度が高いブロックの点に基づくデータ処理を先に実行し、所定時点までにデータ処理が未完了のブロックがあればそのブロックの点に基づくデータ処理をスキップすることを特徴とする請求項１または２に記載のデータ処理装置。
【請求項６】
所定のアルゴリズムにしたがって前記空間を複数のブロックに分割する分割部をさらに備えることを特徴とする請求項１から５のいずれかに記載のデータ処理装置。
【請求項７】
空間の外観を複数の点の集合により表した点群であって、前記空間を分割した複数のブロックのいずれかに各点が属する点群を取得するステップと、
前記複数のブロックのそれぞれに属する点の数に基づいて、各ブロックの優先度を決定するステップと、
前記決定するステップで決定された優先度に応じて前記複数のブロックを処理するステップと、
をコンピュータが実行することを特徴とするデータ処理方法。
【請求項８】
空間の外観を複数の点の集合により表した点群であって、前記空間を分割した複数のブロックのいずれかに各点が属する点群を取得する機能と、
前記複数のブロックのそれぞれに属する点の数に基づいて、各ブロックの優先度を決定する機能と、
前記決定する機能により決定された優先度に応じて前記複数のブロックを処理する機能と、
をコンピュータに実現させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ処理技術に関する。
【背景技術】
【０００２】
現実空間を点群（「ポイントクラウド」とも呼ばれる。）としてキャプチャし、その点群を用いて現実空間の様子を示す画像を生成することが行われてきている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２１６００６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
点群により生成される画像の品質は点群中の点の数に依存するが、点の数に応じて描画処理等の負荷も高まる。本発明は、こうした課題に鑑みてなされたものであり、主たる目的は、点群を用いたデータ処理の効率を高めるための技術を提供することである。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明のある態様のデータ処理装置は、空間の外観を複数の点の集合により表した点群であって、空間を分割した複数のブロックのいずれかに各点が属する点群を取得する点群取得部と、複数のブロックのそれぞれに属する点の数に基づいて、各ブロックの優先度を決定する優先度決定部と、優先度決定部により決定された優先度に応じて複数のブロックを処理する点群処理部と、を備える。
【０００６】
本発明の別の態様は、データ処理方法である。この方法は、空間の外観を複数の点の集合により表した点群であって、空間を分割した複数のブロックのいずれかに各点が属する点群を取得するステップと、複数のブロックのそれぞれに属する点の数に基づいて、各ブロックの優先度を決定するステップと、決定するステップで決定された優先度に応じて複数のブロックを処理するステップと、をコンピュータが実行する。
【０００７】
なお、以上の構成要素の任意の組合せ、本発明の表現をシステム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、点群を用いたデータ処理の効率を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】実施例における点群処理方法の原理を示す図である。
【図２】変形例における点群処理方法の原理を示す図である。
【図３】実施例の画像処理システムの構成を示す図である。
【図４】図３のマスタノードの機能構成を示すブロック図である。
【図５】実施例の画像処理システムの動作を示すフローチャートである。
【図６】撮影空間の分割を模式的に示す図である。
【図７】撮影空間に対する可視判定を模式的に示す図である。
【図８】マスタノードから描画ノードへのデータの送信態様を示す図である。
【図９】フレーム画像の生成を模式的に示す図である。
【図１０】変形例の描画ノードの機能構成を示すブロック図である。
【図１１】複数の描画ノードの負荷を平準化する方法を模式的に示す図である。
【発明を実施するための形態】
【００１０】
実施例を詳細に説明する前に実施例の概要を説明する。現実空間を複数台のカメラで撮影し、複数台のカメラが出力した撮影画像を合成等することにより、現実空間の外観（様子）を点の集合により表した点群を生成することが行われている。また、その点群を用いて現実空間を示す画像を生成することが行われている。点群における点の数が増えるほど、点群から生成される画像の品質は向上するが、その反面、描画処理等の負荷も高まる。
【００１１】
近年では、１億個を超える点のデータを含む点群が生成されることもある。例えば、１つのフレームに対応する点群では、各点のデータとして、空間座標を表すデータとして１２バイト（ＸＹＺの座標値各４バイト）、色彩を表現するデータとして４バイト（ＲＧＢＡの各１バイト）を含み、合計１６バイトのデータを含むことがある。１６バイト×１億点は、約１．６ギガバイトに達する。このように、点群に大量の点のデータが含まれる場合、点群の通信時間や処理時間が非常に長くなってしまい、描画処理に遅延が生じることがある。
【００１２】
そこで実施例では、点群内の各点に対して優先順位付けを行い、重要な点の情報ほど優先的に処理するデータ処理方法を提案する。これにより、点群内の大量の点を効率的に処理することを実現する。
【００１３】
図１の（ａ）（ｂ）は、実施例における点群処理方法の原理を示す。図１の（ａ）で示すように、実施例の点群１０は複数の領域（以下「ブロック」とも呼ぶ。）に分割される。実際の点群１０は、複数台のカメラにより撮影された３次元空間の外観を示すものであり、点群１０が示す３次元空間を分割した個々のブロックも３次元空間となるが、図ではこれを簡素化し、２次元のブロックを示している。ブロック１２は５個の点を含み、ブロック１４は７個の点を含み、ブロック１６は４個の点を含み、ブロック１８は２個の点を含む。
【００１４】
点群には点の局所性（偏在性）があり、空間を分割することで、点の数が相対的に少ないブロック（例えばブロック１８）が生じる。本発明者は、点の数が相対的に少ないブロックは、空間全体に対する重要度が低いと考えた。また本発明者は、空間に相当数の点が存在する場合、少量の点の情報が画像に反映されなくても、画像全体への影響は少なく、ユーザに違和感を抱かせにくいと考えた。そこで、実施例の画像処理システムでは、内包する点の数が少ないブロックに関する通信または処理の優先度を低くし、具体的には通信または処理の順番を後回しにする。
【００１５】
図１の管理装置２０は、点群１０が示す空間から複数のブロックを切り出し、処理装置２２は、管理装置２０により切り出された複数のブロックに基づいて所定のデータ処理（例えば描画処理）を実行する。図１の（ｂ）で示すように、管理装置２０は、複数のブロックを処理装置２２へ順次送信し、点の個数が多いブロックほど早いタイミングで送信する。管理装置２０は、図１の（ａ）で示すブロックを切り出した場合、ブロック１４、ブロック１２、ブロック１６、ブロック１８の順に処理装置２２へ提供する。
【００１６】
図２は、変形例における点群処理方法の原理を示す。処理装置２２は、複数のブロックに基づいて所定のデータ処理を実行する場合に、点の個数が多いブロックほど早いタイミングでデータ処理を実行する。例えば図１の（ａ）で示す４つのブロックに対して、処理装置２２は、ブロック１４、ブロック１２、ブロック１６、ブロック１８の順に、各ブロックに基づくデータ処理を実行する。ブロックに基づくデータ処理は、ブロック内の点のデータに基づいて当該ブロックの外観を示す画像を生成する描画処理を含み、また、ブロックに含まれる点のデータに基づく衝突判定等、種々の演算処理を含む。
【００１７】
図１および図２で示した点群処理方法によると、処理装置２２において、相対的に重要度が高いブロックの処理を先に実行させることができ、相対的に重要度が高いブロックの処理における遅延の発生を回避しやすくなる。また、点群の処理を、ブロック単位で、かつ、優先順位をつけて実行することにより、大量の点を含む点群を効率的に処理することを実現できる。
【００１８】
なお、図１および図２で示した点群処理方法では、内包する点の個数が多いブロックほど高い優先順位を付与することとした。変形例として、点の密度（例えば点の個数／ブロックの体積）が高いブロックほど高い優先順位を付与してもよい。また、点群内（撮影空間内）の点の総数に占めるブロック内の点の個数の割合（例えばブロック内の点の個数／点群内の点の総数）が大きいブロックほど高い優先順位を付与してもよい。
【００１９】
以下、実施例の構成を詳細に説明する。図３は、実施例の画像処理システムの構成を示す。画像処理システム３０は、マスタノード３２、描画ノード３４で総称される描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃ、表示制御ノード３６、表示デバイス３８を備える。これらの各装置は、ＬＡＮ・ＷＡＮ・インターネット等を含む通信網を介して接続される。マスタノード３２および描画ノード３４は、第１の外部装置（不図示）から入力された点群に基づいて画像を生成し、生成した画像データを第２の外部装置（表示制御ノード３６に相当する装置等）へ提供するクラウドシステムを構成してもよい。
【００２０】
マスタノード３２は、図１（ｂ）の管理装置２０に対応するデータ処理装置である。マスタノード３２は、点群１０が示す空間を複数のブロックに分割し、点群１０に含まれる各点のデータをブロック単位で描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃのそれぞれへ送信する。
【００２１】
描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃのそれぞれは、図１（ｂ）および図２の処理装置２２に対応するデータ処理装置である。描画ノード３４は、既知の方法により、点群内の各点のデータに基づいてビットマップ画像のデータを生成する。なお、画像処理システム３０における描画ノード３４の台数に制限はない。例えば１台であってもよく、４台以上であってもよい。
【００２２】
描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃは、マスタノード３２から受信したブロック単位の点データ（各ブロックに含まれる点のデータ）に基づいて、ブロックの外観を示す画像（以下「個別画像」とも呼ぶ。）を生成する。同一の空間から切り出された複数のブロックに基づく複数の個別画像は、表示デバイス３８において同時に表示されるべき画像である。言い換えれば、ある時点で表示デバイス３８に表示される画像（例えば１つのフレームの画像）における異なる部分を構成する画像である。
【００２３】
表示制御ノード３６は、描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃの各々で描画された個別画像を合成することにより、表示デバイス３８に表示させるべき画像（以下「フレーム画像」とも呼ぶ。）を生成する。表示制御ノード３６は、生成したフレーム画像を表示デバイス３８に表示させる。表示制御ノード３６は、据置型のデータ処理装置（例えばＰＣ、ゲーム機）であってもよく、表示デバイス３８は、ヘッドマウントディスプレイ（ＨＭＤ）であってもよい。また、表示制御ノード３６と表示デバイス３８は、携帯型のゲーム機等として同一筐体に統合されてもよい。
【００２４】
図４は、図３のマスタノード３２の機能構成を示すブロック図である。マスタノード３２は、制御部４０、記憶部４２、通信部４４を備える。制御部４０は、点群を用いた画像生成を管理するためのデータ処理を実行する。記憶部４２は、制御部４０により参照または更新されるデータを記憶する記憶領域である。通信部４４は、所定の通信プロトコルにしたがって外部装置と通信する。制御部４０は、通信部４４を介して複数の描画ノード３４のそれぞれとデータを送受する。
【００２５】
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのＣＰＵ・メモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【００２６】
例えば、制御部４０の各ブロックの機能がコンピュータプログラム（点群管理プログラム）として実装され、点群管理プログラムがマスタノード３２のストレージにインストールされてもよい。そしてマスタノード３２のＣＰＵが、点群管理プログラムをメインメモリへ読み出して実行することにより制御部４０内の各ブロックの機能が発揮されてもよい。また、記憶部４２は、マスタノード３２のメインメモリやストレージにより実現されてもよい。
【００２７】
記憶部４２は、空間データ記憶部４６、ブロックデータ記憶部４８、優先度記憶部５０を含む。空間データ記憶部４６は、複数のカメラにより撮影された空間であり、言い換えれば、描画ノード３４により描画対象となり得る空間（以下「撮影空間」とも呼ぶ。）のデータを保持する。実施例における撮影空間のデータは、撮影空間の外観（様子、内容とも言える）を複数の点の集合によって表した点群のデータを含み、点群を構成する各点のデータをさらに含む。
【００２８】
点群を構成する各点のデータは、撮影空間内での位置を示す３次元の座標データと、色彩を示すデータを含む。３次元の座標データは、例えば、撮影空間内における絶対位置を示す横方向（Ｘ軸方向）の座標値、縦方向（Ｙ軸方向）の座標値、奥行き方向（Ｚ軸方向）の座標値の組み合わせであってもよい。また、色彩を示すデータは、例えばＲＧＢＡカラーモデルの値であってもよい。
【００２９】
なお、点群を構成する各点のデータは、法線に関するデータ（向き等）と表面の材質に関するデータ（テクスチャデータ等）をさらに含んでもよい。法線に関するデータを含むことで、描画ノード３４のレンダリング処理における光の入射角や反射角の計算を支援できる。それとともに、描画ノード３４は、表と裏を区別でき、裏側の描画処理をスキップすることができる。また、表面の材質に関するデータを含むことで、描画ノード３４のレンダリング処理における光の反射率や吸収率等の計算を支援できる。
【００３０】
ブロックデータ記憶部４８は、撮影空間を分割した結果としての複数のブロック（個別領域）であり、互いに撮影空間の一部を構成する複数のブロックのデータを保持する。各ブロックのデータは、ブロックの識別情報と、ブロックの境界情報（例えばブロックの頂点の座標値）、ブロックに属する１個以上の点のデータ（上述の座標データ、色彩データ等）を含む。優先度記憶部５０は、複数のブロックのそれぞれに対して付与された優先順位を示すデータを保持する。
【００３１】
制御部４０は、空間分割部５２、点群取得部５４、可視判定部５６、優先度決定部５８、点群処理部６０を備える。空間分割部５２は、空間データ記憶部４６に保持された撮影空間の点群データを読み出し、予め定められた分割アルゴリズムにしたがって撮影空間を分割する。空間分割部５２は、分割の結果を示すデータとして、複数のブロックのデータであり、各ブロックに属する点のデータをブロックデータ記憶部４８へ格納する。空間分割部５２は、分割アルゴリズムとして、８分木（octree）、ｋ−ｄ木（k-d tree）等、公知のアルゴリズムを使用してもよい。
【００３２】
点群取得部５４は、撮影空間を分割した複数のブロックのいずれかに各点が属するように設定された点群のデータを取得する。実施例では、点群取得部５４は、複数のブロックのデータであって、複数のブロックのそれぞれに属する点のデータをブロックデータ記憶部４８から読み込む。
【００３３】
可視判定部５６は、ユーザの視点位置や視線方向、姿勢、画角等に応じて、撮影空間内の複数のブロックのうちどのブロックがユーザから視認されるかを判定する。ここでのユーザは、表示デバイス３８（例えばＨＭＤ）を装着したユーザであってもよく、また、ユーザの視点位置に仮想的に配置された仮想カメラであってもよい。言い換えれば、可視判定部５６は、撮影空間内の複数のブロックのうち描画処理の対象となるブロック（以下「描画対象ブロック」）を特定する。典型的には複数の描画対象ブロックを特定する。
【００３４】
優先度決定部５８は、可視判定部５６により特定された複数の描画対象ブロックのそれぞれに属する点の数に基づいて、各描画対象ブロックの優先度を決定する。実施例の優先度決定部５８は、複数の描画対象ブロックのそれぞれに属する点の数を計数し、内包する点の数が多い描画対象ブロックほど高い優先順位を付与する。例えば、図１（ａ）の４つのブロックに対して、優先度決定部５８は、ブロック１４、ブロック１２、ブロック１６、ブロック１８の順に高い優先順位を付与する。
【００３５】
点群処理部６０は、優先度決定部５８により決定された優先度に応じた順序で複数の描画対象ブロックを処理し、複数のブロックのうち優先度が高いブロックの処理を、優先度が低いブロックの処理より優先的に実行する。実施例の点群処理部６０は、複数の描画対象ブロックのうち優先順位が相対的に高い描画対象ブロックの点に基づくデータ処理を、優先順位が相対的に低いブロックの点に基づくデータ処理より優先的に実行する。例えば、図１（ａ）の４つのブロックに対して、点群処理部６０は、ブロック１４の点データを最優先で処理し、以降、ブロック１２、ブロック１６、ブロック１８の順に点データを処理する。
【００３６】
点群処理部６０は、予め定められたタイミングまでに、複数の描画対象ブロックのうち一部の描画対象ブロックの処理を未完了である場合、それら一部の描画対象ブロックの処理をスキップする。言い換えれば、それら一部の描画対象ブロックの処理を未完了のまま、描画対象ブロックに対する処理を終了する。
【００３７】
実施例の点群処理部６０は点群配信部６２を含む。点群配信部６２は、複数の描画対象ブロックうち第１の描画対象ブロックの点データを描画ノード３４ａへ送信し、第１の描画対象ブロックとは異なる第２の描画対象ブロックの点データを描画ノード３４ｂへ送信する。さらに点群配信部６２は、第１および第２の描画対象ブロックとは異なる第３の描画対象ブロックの点データを描画ノード３４ｃへ送信する。ただし、点群配信部６２は、複数の描画対象ブロックを順次送信し、その際に優先順位が高いブロックほど早いタイミングで送信する。
【００３８】
点群配信部６２は、点群に基づく画像が表示される画面の複数の領域（個々の領域は画面の一部を構成する）と、複数の描画ノード３４（例えば描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃ）との対応関係を保持する。点群配信部６２は、複数の描画ノード３４のそれぞれに対して、各ノードが対応付けられた画面領域で表示される描画対象ブロックの点データを送信する。言い換えれば、点群配信部６２は、複数の描画ノード３４のそれぞれに対して、各ノードが対応付けられた画面領域に少なくとも一部が含まれる描画対象ブロックの点データを送信する。
【００３９】
例えば、図１のブロック１２（点の個数は５）の送信先が描画ノード３４ａ、図１のブロック１４（点の個数は７）の送信先が描画ノード３４ｂ、図１のブロック１６（点の個数は４）の送信先が描画ノード３４ｃであるとする。この場合、点群配信部６２は、まずブロック１４の点データを描画ノード３４ｂへ送信し、次にブロック１２の点データを描画ノード３４ａへ送信し、次にブロック１６の点データを描画ノード３４ｃへ送信する。
【００４０】
点群配信部６２は、予め定められた配信タイミング（または描画タイミング）までに、複数の描画対象ブロックのうち一部の描画対象ブロックを描画ノード３４へ未送信の場合、それら一部の描画対象ブロックの送信をスキップする。言い換えれば、それら一部の描画対象ブロックを描画ノード３４へ送信しないまま描画対象ブロックに対する処理を終了する。この結果、マスタノード３２と描画ノード３４の通信状態によっては、優先度が低い描画対象ブロックに基づく画像は生成されない。
【００４１】
以上の構成による画像処理システム３０の動作を説明する。図５は、実施例の画像処理システム３０の動作を示すフローチャートである。実施例では、複数台のカメラ（不図示）および点群生成装置（不図示）が画像処理システム３０の外部に設けられることとするが、画像処理システム３０の内部に設けられてもよい。複数台のカメラは、同一空間を異なる向き、角度から並行して撮像する。点群生成装置は、複数台のカメラから出力された複数の画像に基づいて公知の手法により点群のデータを生成する。ここでは、１つの点群のデータが、表示デバイス３８に表示される１フレームに対応することとする。
【００４２】
マスタノード３２の空間データ記憶部４６は、撮影空間を示すデータとして、点群生成装置により生成された点群のデータを保持する。すなわち空間データ記憶部４６は、表示デバイス３８に表示される複数のフレームに対応する複数の点群のデータを保持する。なお、点群生成装置は、複数台のカメラから出力された複数の画像に基づいて撮影空間の現在の様子を示す点群のデータをリアルタイムに生成し、生成した点群のデータを即時にマスタノード３２の空間データ記憶部４６へ格納してもよい。
【００４３】
図６は、撮影空間の分割を模式的に示す。マスタノード３２の空間分割部５２は、空間データ記憶部４６に格納された撮影空間７０を示す点群データを読み出し、所定の分割アルゴリズムにしたがって撮影空間７０を複数のブロックに分割する（Ｓ１０）。空間分割部５２は、各ブロックの点データをブロックデータ記憶部４８へ格納する。マスタノード３２の点群取得部５４は、ブロックデータ記憶部４８に格納された各ブロックの点データを読み出す。図７は、撮影空間に対する可視判定を模式的に示す。マスタノード３２の可視判定部５６は、ユーザ７１（または仮想カメラ）の視点位置や姿勢、視線方向にしたがって、撮影空間７０内の複数のブロックの中でどのブロックがユーザ７１から視認されるかを判定する。可視判定部５６は、ユーザ７１から視認される複数のブロックを描画対象ブロック７２として特定する（Ｓ１２）。
【００４４】
マスタノード３２の優先度決定部５８は、複数の描画対象ブロックのそれぞれに対して、内包する点の数が相対的に多いほど高い優先順位を付与する（Ｓ１４）。図８は、マスタノード３２から描画ノード３４へのデータの送信態様を示す。マスタノード３２の点群配信部６２は、複数の描画対象ブロック７２のそれぞれを対応する描画ノード３４へ順次送信し、その際に、内包する点の個数が多い描画対象ブロック７２ほど先に送信する（Ｓ１６）。予め定められたフレームの描画タイミングに至ってなければ（Ｓ１８のＮ）、Ｓ１６に戻り、優先順位が低い描画対象ブロック７２の送信を継続する。描画タイミングに至ると（Ｓ１８のＹ）、以降の描画対象ブロック７２の送信を中止する。
【００４５】
図５のＳ１０〜Ｓ１８で示したマスタノード３２の処理は、１つのフレームの描画に係る処理である。マスタノード３２は、複数のフレームに対応する複数の点群データに対して、Ｓ１０〜Ｓ１８の処理を繰り返す。マスタノード３２は、Ｓ１８のＹが成立するとそれまでのフレームの処理を終了し、次のフレームの処理へ移行する。
【００４６】
複数の描画ノード３４は、マスタノード３２から受信した描画対象ブロック７２に基づいて、撮影空間の一部の外観を示すビットマップ画像（以下「個別画像」とも呼ぶ。）を並行して生成する（Ｓ２０）。例えば、フレーム画像を表示する画面を左上領域、左下領域、右下領域、右上領域の４領域に分割する場合、描画ノード３４ａは、画面の左上領域に該当するブロックの点データを受信して、画面の左上領域に表示すべき個別画像のデータを生成してもよい。また描画ノード３４ｂは、画面の左下領域に該当するブロックの点データを受信して、画面の左下領域に表示すべき個別画像のデータを生成してもよい。また描画ノード３４ｃは、画面の右下領域に該当するブロックの点データを受信して、画面の右下領域に表示すべき個別画像のデータを生成してもよい。複数の描画ノード３４のそれぞれは、生成した個別画像のデータを表示制御ノード３６へ送信する。
【００４７】
表示制御ノード３６は、複数の描画ノード３４と画面内の複数領域との対応関係にしたがって、複数の描画ノード３４で分散して生成された個別画像を合成することにより、フレーム全体の画像（以下「フレーム画像」とも呼ぶ。）を生成する（Ｓ２２）。図９は、フレーム画像の生成を模式的に示す。表示制御ノード３６は、描画ノード３４ａで生成された個別画像７４ａを左上領域に配置し、描画ノード３４ｂで生成された個別画像７４ｂを左下領域に配置し、描画ノード３４ｃで生成された個別画像７４ｃを右下領域に配置し、他の描画ノード（不図示）で生成された個別画像７４ｄを右上領域に配置したフレーム画像７６を生成してもよい。表示制御ノード３６は、フレーム画像のデータを表示デバイス３８へ出力し、表示デバイス３８にフレーム画像を表示させる（Ｓ２４）。
【００４８】
既述したように、描画処理の対象となる点群は億単位の点を含むことがあり、通常のＰＣ等のデバイス１台ではリアルタイムの描画が困難という問題があった。実施例の画像処理システム３０では、複数の描画ノード（ＧＰＵ）により描画処理を分散実行することで、大量の点データに基づく画像描画を実現できる。また、実施例の画像処理システム３０によると、点群が示す撮影空間を分割した複数のブロックのうち点の数が少ないブロックについては、その通信または処理の優先度を低くし、例えば、通信または処理の順番を後回しにする。これにより、点群が大量の点データを含む場合でも、通信負荷を低減でき、また、処理負荷（描画処理の負荷等）を抑制できる。
【００４９】
また、実施例の画像処理システム３０によると、点群全体に対する重要度が高いと考えられる、点の数が多いブロックの通信または処理を優先的に実行し、重要度が高いブロックの通信または処理の遅延を抑制できる。実施例の画像処理システム３０では、ユーザの注目を集めやすいブロックを優先的に描画し、その一方、ユーザに気付かれにくいブロックについてはベストエフォートで描画することで効率化を実現する。
【００５０】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下変形例を説明する。
【００５１】
第１変形例を説明する。上記実施例の画像処理システム３０では、図３のマスタノード３２が、撮影空間を構成する複数のブロックに対する優先順位を決定し、優先順位が高いブロックのデータを優先的に描画ノード３４へ送信した。変形例として、図２で示したように、図３の描画ノード３４（描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃのうち少なくとも１つ）が、撮影空間を構成する複数のブロックに対する優先順位を決定し、優先順位が高いブロックのデータに基づく画像を優先的に生成してもよい。すなわち、複数のブロックの優先度に応じたデータ処理を、マスタノード３２に代わって描画ノード３４が実行してもよく、または、マスタノード３２とともに描画ノード３４が実行してもよい。
【００５２】
この変形例におけるマスタノード３２は、点群により表された撮影空間を複数のブロックに分割して、複数のブロックの中からユーザにより視認されるブロックを描画対象ブロックとして検出してもよい。そして、優先順位を付与することなく、複数の描画対象ブロックの点データを１つの描画ノード３４へ送信してもよい。また、マスタノード３２は、複数の描画ノード３４に対して、各ノードが描画を担当する領域に該当する描画対象ブロックの点データを順次もしくは並行して送信してもよい。
【００５３】
図１０は、変形例の描画ノード３４の機能構成を示すブロック図である。図１０に示す制御部８０、記憶部８２、通信部８４は、図４の制御部４０、記憶部４２、通信部４４に対応する。また、図１０に示す点群取得部９０、優先度決定部９２、点群処理部９４は、図４の点群取得部５４、優先度決定部５８、点群処理部６０に対応する。
【００５４】
点群取得部９０は、マスタノード３２から送信された複数の描画対象ブロックの点データを取得する。優先度決定部９２は、複数の描画対象ブロックのそれぞれに属する点の数に基づいて、各描画対象ブロックの優先度を決定する。例えば、優先度決定部９２は、複数の描画対象ブロックのそれぞれに属する点の数を計数し、内包する点の数が多い描画対象ブロックほど高い優先順位を付与する。
【００５５】
点群処理部９４は描画部９６を含む。描画部９６は、マスタノード３２から送信された複数の描画対象ブロックの点データに基づいて、複数の個別画像を順次生成する。その際に、描画部９６は、優先順位が高い描画対象ブロックほど先に個別画像を生成する。画像提供部９８は、描画部９６により生成された個別画像のデータを表示制御ノード３６へ送信する。
【００５６】
描画部９６は、予め定められた描画タイミングまでに、複数の描画対象ブロックのうち一部の描画対象ブロックに基づく個別画像を未生成の場合、それら一部の描画対象ブロックに基づく個別画像の生成処理をスキップする。言い換えれば、それら一部の描画対象ブロックに基づく個別画像を生成しないまま描画対象ブロックに対する処理を終了する。この結果、描画処理の負荷によっては、優先度が低い描画対象ブロックに基づく画像が生成されないことがある。
【００５７】
本変形例の描画ノード３４によると、点群が示す撮影空間を分割した複数のブロックのうち点の数が少ないブロックについては、そのブロックに基づく描画処理の優先度を低くする。これにより、点群が大量の点データを含む場合でも、描画処理の負荷を抑制できる。なお、本変形例の描画ノード３４は、実施例ではマスタノード３２の機能とした空間データ記憶部４６、空間分割部５２、可視判定部５６をさらに備えてもよい。また、本変形例では描画ノード３４の機能とした優先度決定部９２はマスタノード３２の機能とし、描画ノード３４の描画部９６は、マスタノード３２が決定した優先順位にしたがって複数のブロックに基づく複数の個別画像を生成してもよい。
【００５８】
第２変形例を説明する。上記実施例のマスタノード３２は、複数の描画ノード３４のそれぞれに対して、各ノードが対応付けられた画面領域で表示される描画対象ブロックの点データを送信した。例えば、フレーム画像が表示される画面を４分割し、左上領域に該当する描画対象ブロックのデータを描画ノード３４ａへ送信し、左下領域に該当する描画対象ブロックのデータを描画ノード３４ｂへ送信し、右下領域に該当する描画対象ブロックのデータを描画ノード３４ｃへ送信した。
【００５９】
ここで撮影空間には点の偏在性があるため、常時同じ態様で画面を分割して描画対象ブロックの送信先を決定すると、特定の描画ノードに負荷が偏ることがある。例えば、ある描画ノードでは描画負荷が許容値を大幅に超える一方、別の描画ノードでは描画負荷が許容値を大幅に下回ると言う状況が生じうる。結果、負荷が集中した描画ノードでは、描画処理が遅延しやすくなる。そこで、変形例のマスタノード３２は、各描画ノードの負荷ができるだけ均等になるように、各描画ノードの担当範囲を動的に調整する調整部（不図示）をさらに備える。調整部は、各描画ノードの負荷の分散が所定値以下になるように、各描画ノードの担当範囲を調整してもよい。
【００６０】
図１１は、複数の描画ノードの負荷を平準化する方法を模式的に示す。ここでは、図３の描画ノード３４ａ、描画ノード３４ｂ、描画ノード３４ｃに加えて、第４の描画ノードとして描画ノード３４ｄ（不図示）が存在する。図１１（ａ）に示すように、調整部は、フレーム画像を表示させる画面を４分割する。デフォルトでは、描画ノード３４ａが領域１００の描画を担当し、描画ノード３４ｂが領域１０２の描画を担当し、描画ノード３４ｃが領域１０４の描画を担当し、描画ノード３４ｄが領域１０６の描画を担当する。各領域の数字は、描画処理の負荷の大きさを示す。具体的には、各領域に含まれるブロック数を示すこととする。別の態様として、各領域の数字は、各領域に含まれる点の個数の比率を示すものでもよい。図１１（ａ）の例では、素朴に画面を４等分すると、描画ノード３４ａに負荷が集中することになる。
【００６１】
各描画ノードにおいて許容される負荷の大きさ（例えば許容されるブロック数であり、以下「許容負荷」と呼ぶ。）が、予め「５」に定められたこととする。いずれかの領域の負荷が「５」を超える場合、調整部は、図１１の（ｂ）で示すように、負荷が最大の領域（該当するブロック数が最大の領域）を、その長辺軸に沿って２分割する。例えば、長辺の中点を結んで半分に分割してもよい。図１１の（ｂ）に示す１回目の分割では１つの領域の負荷が依然として「５」を超えるため、調整部は、図１１の（ｃ）で示すように、再度、負荷が最大の領域を２分割する。
【００６２】
各領域の負荷が許容負荷以下になった場合、調整部は、各領域の負荷と許容負荷との差を計算する。図１１の（ｄ）は、この計算結果を示している。図１１の（ｅ）で示すように、調整部は、許容負荷との差が所定値（ここでは４）以上の領域を、隣接する領域と統合する。図１１の（ｆ）は領域を統合した結果を示している。調整部は、各領域の負荷の分散が所定値（例えば「１．６」）以下になった場合に調整処理を終了する。マスタノード３２の点群配信部６２は、例えば、領域１１０に該当する描画対象ブロックのデータを描画ノード３４ａへ送信し、領域１１２に該当する描画対象ブロックのデータを描画ノード３４ｂへ送信する。また、領域１１４に該当する描画対象ブロックのデータを描画ノード３４ｃへ送信し、領域１１６に該当する描画対象ブロックのデータを描画ノード３４ｄへ送信する。
【００６３】
図１１の（ａ）における領域１００〜領域１０６の分散は「１３．５」である一方、図１１の（ｆ）における領域１１０〜領域１１６の分散は「１．５」に低下している。このように本変形例の態様によると、各描画ノードの負荷を平準化でき、特定のノードに負荷が集中すること、またその特定のノードで描画が遅延することを抑制できる。
【００６４】
第３変形例として、実施例の画像処理システム３０の利用例を説明する。画像処理システム３０に対する外部装置（外部システム）は、スタジアム等でなされるスポーツの様子を撮影して点群のデータを生成する。この外部装置は、生成した点群のデータを、通信網を介して、クラウドシステムとしての画像処理システム３０へ送信する。画像処理システム３０（ここではマスタノード３２）は、実施例と同様に、点群のデータが示す空間を複数のブロックに分割し、内包する点の個数に基づいて各ブロックに優先度を付与する。画像処理システム３０は、点群のデータをブロック単位にクライアント装置（進行中のスポーツの画像を表示するユーザ装置等）へ送信し、その際に、優先度が高いブロックのデータを先に送信する。
【００６５】
点の個数が多いブロックを先にクライアント装置へ届けるため、仮に通信に遅延が発生しても、点の個数が多いブロック、言い換えれば、情報が多い部分が所定のタイミングまでにクライアント装置へ配信される可能性を高めることができる。なお、点群のデータを生成する外部装置は、複数のブロックへの分割をさらに実行して、各ブロックの点データを画像処理システム３０へ送信してもよい。この場合、画像処理システム３０は、優先度付け以降の処理を実行してもよい。
【００６６】
第４変形例として、実施例の画像処理システム３０の別の利用例を説明する。ここでは、サーバ内に保存されている点群のデータをクライアント装置が取得し、処理（描画等）を実行する。このサーバは、実施例のマスタノード３２の機能を備え、点群のデータが示す空間を分割し、内包する点の個数に基づいて各ブロックに優先度を付与し、優先度が高いブロックのデータを先にクライアント装置へ送信する。この変形例でも、点の個数が多いブロックを先にクライアント装置へ届けるため、仮に通信に遅延が発生しても、点の個数が多いブロック、言い換えれば、情報が多い部分がクライアント装置で処理（描画等）される可能性を高めることができる。
【００６７】
上記実施例に記載の技術は、現実空間の様子を示す点群データを処理（描画等）することに制限されず、仮想空間の様子を示す点群データを処理（描画等）する場合にも適用可能であり、実施例と同様に効率的な点群処理を実現できる。
【００６８】
上述した実施例および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施例および変形例それぞれの効果をあわせもつ。
請求項に記載の各構成要件が果たすべき機能は、上述した実施例および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
【符号の説明】
【００６９】
３０  画像処理システム、  ３２  マスタノード、  ３４  描画ノード、  ５２  空間分割部、  ５４  点群取得部、  ５８  優先度決定部、  ６０  点群処理部、  ６２  点群配信部、  ９０  点群取得部、  ９２  優先度決定部、  ９６  描画部。
【図１】
2018032112.tif 000003
【図２】
2018032112.tif 000004
【図３】
2018032112.tif 000005
【図４】
2018032112.tif 000006
【図５】
2018032112.tif 000007
【図６】
2018032112.tif 000008
【図７】
2018032112.tif 000009
【図８】
2018032112.tif 000010
【図９】
2018032112.tif 000011
【図１０】
2018032112.tif 000012
【図１１】
2018032112.tif 000013