(57)【要約】【課題】視体積交差法により物体の３次元形状を復元する情報処理装置におけるメモリアクセスを最適化する。【解決手段】異なる視点から撮影した複数の画像から視体積交差法によって物体の３次元形状を復元する情報処理装置であって、キャッシュ、処理グループ・プリフェッチエリア決定部、及びプリフェッチ部を備える。キャッシュは、画像から抽出された物体についてのシルエット画像の一部を格納する。処理グループ・プリフェッチエリア決定部は、複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定する。プリフェッチ部は、決定したグループ及びキャッシュの容量に基づいて、グループに含まれる複数のエピポーラ線のそれぞれにおける物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定する。【選択図】図１６
2019117582.tif 000002
【特許請求の範囲】
【請求項１】
異なる視点から撮影した複数の画像から、視体積交差法によって物体の３次元形状を復元する情報処理装置であって、
前記画像から抽出された前記物体についてのシルエット画像データの一部を格納可能なキャッシュと、
前記複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、前記複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定する、処理グループ・プリフェッチエリア決定部と、
決定した前記グループ及び前記キャッシュの容量に基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定するプリフェッチ部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記複数の画像のそれぞれについての前記シルエット画像データを格納可能な第１メモリを更に備え、
前記プリフェッチ部は、前記シルエット画像データにおける前記キャッシュ領域と対応した部分を前記第１メモリから読み出して前記キャッシュに格納する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、前記キャッシュを含み、前記処理グループ・プリフェッチエリア決定部、前記プリフェッチ部、及び前記線分探索部として動作するプロセッサと、前記第１メモリとがバスにより接続されている
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記プロセッサは、前記シルエット画像データの一部を格納可能な第２メモリを更に含み、
前記プリフェッチ部としての動作において前記第２メモリのレイテンシ及び／又は処理時間に基づいて、前記キャッシュ領域のグループ分けを行う
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記プリフェッチ部は、前記画像内の矩形領域をキャッシュ領域に決定し、該キャッシュ領域における幅が所定の幅よりも狭くなった場合には、前記キャッシュ領域を複数のキャッシュ領域に分割する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
異なる視点から撮影した複数の画像から、視体積交差法によって物体の３次元形状を復元する情報処理装置が、
前記複数の画像のそれぞれから抽出した前記物体についてのシルエット画像データを第１メモリに記憶させ、
前記複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、前記複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定し、
決定した前記グループ及び前記情報処理装置が備えるキャッシュの容量に基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定する
処理を実行することを特徴とする情報処理方法。
【請求項７】
異なる視点から撮影した複数の画像から、視体積交差法によって物体の３次元形状を復元する処理をコンピュータに実行させる情報処理プログラムであって、
前記複数の画像のそれぞれから抽出した前記物体についてのシルエット画像データを第１メモリに記憶させ、
前記複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、前記複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定し、
決定した前記グループ及び前記情報処理装置が備えるキャッシュの容量に基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定する
処理を含むことを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
計測対象である物体の２次元情報を取得し、該２次元情報に基づいて、物体の３次元情報を復元する技術の１つとして、多視点映像から物体の３次元形状を復元する技術がある。多視点映像から物体の３次元形状を復元する際には、エピポーラ幾何に基づいた視体積交差法が用いられる（例えば、非特許文献１〜４）。
【０００３】
視体積交差法では、視体積（シルエットコーン）を導出するための線分探索において、線分の傾きに沿ってデータアクセス（斜めアクセス）する必要がある。線分探索はP並列処理で行われ、エピポーラ線の探索位置を基に、シルエット画像領域１０７’の該当画素格納位置を計算してシルエットデータ[P]を読み出して行われる（図１９参照）。シルエット画像領域１０７’のメモリアクセスは、エピポーラ線の傾きに応じた非連続データ領域へのアクセスとなる。
【０００４】
一般的な処理系のメモリ最適アクセス配置は、連続データ領域であるが、線分探索の斜めアクセス配置は、非連続データ領域となる。図１９のようなメモリアクセス部１０４’の斜めアクセスは、メモリレイテンシ（応答の遅延時間）の影響が大きく、応答の遅延時間が生じる。
【０００５】
上記の処理にGraphics Processing Unit（GPU）を用いた場合、一組で扱われる(GPUによってはWarpと呼ばれる単位)各スレッドとデータアクセス位置の関係が定型であるときにデータアクセス効率が良い（GPUによってはコアレスアクセスと呼ぶ）。これに対し、GPUによる処理における非連続データ領域へのアクセスや定型でないデータアクセスは、１Warpにおいて複数回のメモリアクセスが行われる(GPUによってはこのようなメモリアクセスをリプレイと呼ぶ)。
【０００６】
また、メモリ階層によってレイテンシが異なるので、レイテンシが大きいメモリに対するアクセス数の増大を避けるためには、頻繁に利用するデータ群を高速な記憶装置に蓄積しておくことが考えられる。その公知例として、アクセスするメモリ空間を限定し、キャッシュヒット（目当てのデータがキャッシュ領域に存在して、読み出せること）により処理速度を向上させる方法（例えば、特許文献１）がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第2015/141549号パンフレット
【非特許文献】
【０００８】
【非特許文献１】OpenCV 3 プログラミングブック、藤本 雄一郎ら(著)、2015年9月発行、ISBN-10: 4839952965
【非特許文献２】実践コンピュータビジョン、Jan Erik Solem著、相川 愛三訳、2013年3月発行、ISBN978-4-87311-607-5、第5章「5.1 エピポーラ幾何、5.2 カメラと3D構造を使った計算
【非特許文献３】Subspace拘束を用いた3次元シーンフローの修正とモーション推定、電子情報通信学会論文誌, 水野宏基,藤吉弘亘,岩堀祐之,Vol.J90-D, No.8, pp.2019-2027(2007).
【非特許文献４】ロボットビジョンの基礎、出口光一郎、コロナ社、2000
【発明の概要】
【発明が解決しようとする課題】
【０００９】
視体積交差法により物体の３次元形状を復元する場合には、上記のように、視体積（シルエットコーン）を導出するための線分探索において、線分の傾きに沿ってデータアクセス（斜めアクセス）する必要がある。このため、線分探索において、エピポーラ線毎に、都度データアクセスを行う場合、データサイズあたりのアクセス要求数が増大し、すべてのエピポーラ線に対する線分探索を完了するのに要する時間が増大する。
【００１０】
一つの側面において、本発明は、視体積交差法により物体の３次元形状を復元する情報処理装置におけるメモリアクセスを最適化することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様の情報処理装置は、異なる視点から撮影した複数の画像から、視体積交差法によって物体の３次元形状を復元する情報処理装置であって、キャッシュと、処理グループ・プリフェッチエリア決定部と、プリフェッチ部とを備える。キャッシュは、画像から抽出された物体についてのシルエット画像データの一部を格納可能な記憶部である。処理グループ・プリフェッチエリア決定部は、複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定する。プリフェッチ部は、決定したグループ及びキャッシュの容量に基づいて、グループに含まれる複数のエピポーラ線のそれぞれにおける物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定する。
【発明の効果】
【００１２】
上述の態様によれば、視体積交差法により物体の３次元形状を復元する情報処理装置におけるメモリアクセスを最適化することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】エピポーラ幾何を説明するための概略斜視図である。
【図２】線分探索を説明するための概略斜視図である。
【図３】３次元物体の切り出しを説明するための概略イメージ図である。
【図４】自由視点による物体の画像の生成方法を説明する図である。
【図５】一実施形態に係る情報処理装置の構成図である。
【図６】情報処理装置のハードウェア構成要素を示す図である。
【図７】情報処理装置のハードウェア構成要素の別の例を示す図である。
【図８】一実施形態に係る自由視点映像作成装置の構成ブロック図である。
【図９】VisualHull部の構成ブロック図である。
【図１０】対象Viewの近傍シルエット画素に対応する参照Viewの複数のエピポーラ線を示した例示的なイメージ図である。
【図１１】対象Viewの近傍シルエット画素に対応する参照Viewの複数の近傍エピポーラ線の広がり具合を示した例示的なイメージ図である。
【図１２】プリフェッチ領域のプリフェッチ幅及びライン数の変化とプリフェッチ領域のグループ分けとを説明するイメージ図である。
【図１３】例示的なシルエット画像を示した図である。
【図１４】キャッシュ領域を決定するための参照Viewのイメージ図である。
【図１５】キャッシュ領域のデータを段階的に読み込む場合のイメージ図である。
【図１６】一実施形態に係る情報処理装置を含む情報処理システムを示す構成ブロック図である。
【図１７】一実施形態に係る情報処理システムにおけるプリフェッチの処理フローを示す図である。
【図１８】一実施形態に係る情報処理システムにおける線分探索の処理フローを示す図である。
【図１９】従来型の情報処理装置の構成図である。
【発明を実施するための形態】
【００１４】
図１は、エピポーラ幾何を説明するための概略斜視図である。エピポーラ幾何とは、２つの異なる視点の画像から該画像内の物体についての３次元の奥行情報を復元するための幾何である。
【００１５】
図１の点OL及び点ORは、それぞれ、Lカメラ（基準カメラ）の投影中心、及びRカメラ（参照カメラ）の投影中心である。また、図１の点XL及び点XRは、それぞれ、３次元空間（実空間）内の点Xを、Lカメラの投影面６０及びRカメラの投影面６１に投影した点（シルエット）である。
【００１６】
２つのカメラは異なる３次元位置にあるので、一方のカメラから他方のカメラをみることができる。図１の点５２（点eL及び点eR）は、それぞれ、エピポール（epipole）又はエピポーラ点（epipolar point）と呼ばれる点であり、互いのカメラ（投影中心）を自カメラの投影面に投影した点である。すなわち、Lカメラの投影面６０における点eLはRカメラの投影中心ORを投影面６０に投影した点であり、Rカメラの投影面６１における点eRはLカメラの投影中心OLを投影面６１に投影した点である。ここで、投影中心（点OL及び点OR）とエピポール（点eL及び点eR）とは、３次元空間内の同一直線上に存在する。
【００１７】
また、図１においてRカメラの投影面６１を通る直線５０は、エピポーラ線と呼ばれる直線であり、点OLと点Xとを通る直線をRカメラの投影面６１に投影した直線である。エピポーラ線５０は、点X、投影中心OL、及び投影中心ORの３点を含む平面（エピポーラ面６２）と、Rカメラの投影面６１を含む平面との交線と一致する。
【００１８】
Lカメラを基準カメラとし、Rカメラを参照カメラとした場合、Lカメラの投影面６０における点XLと対応する３次元空間内の点は、Lカメラの投影中心OLと点Xとを通る直線上に存在する。また、Lカメラの投影面６０における点XLと対応する３次元空間内の点は、Rカメラの投影面６１では、エピポーラ線５０上に存在する。例えば、Lカメラの投影面６０における点XLと対応する３次元空間内の点が点Xである場合、該点Xは、Rカメラの投影面６１のうちの、投影中心ORと点Xとを結ぶ線分と、エピポーラ線５０との交点（点XR）に投影される。
【００１９】
２つのカメラの位置関係が既知であれば、エピポーラ制約として以下が成り立つ。すなわち、点XのLカメラの投影面６０における点XLが与えられると、Rカメラの投影面６１における線分eR-XRが定義される。点XのRカメラの投影面６１における点XRはエピポーラ線５０上に存在する。また、例えば、Lカメラの投影面６０における点XLと対応する３次元位置が点X1である場合、Rカメラの投影面６１上で点X１と対応する点は、投影中心OLと点X１とを結ぶ線分と、エピポーラ線５０との交点となる。同様に、Lカメラの投影面６０における点XLと対応する３次元位置が点X2又はX3である場合、Rカメラの投影面６１上で点X２又は点X３と対応する点は、それぞれ、投影中心OLと点X２又はX３とを結ぶ線分と、エピポーラ線５０との交点となる。
【００２０】
逆に、点XのRカメラの投影面６１における点XRが与えられると、Lカメラの投影面における線分eL-XL（図示せず）が定義される。このため、Rカメラの投影面６１の投影中心ORと点Xとを通る直線上の点は、Lカメラの投影面６０における点eL及び点XLを通るエピポーラ線（図示せず）上に存在する。
【００２１】
このように、２つのカメラで同じ点を捕捉している場合、その点は必ず互いのエピポーラ線上に存在する。すなわち、一方の投影面における点が他方の投影面を通るエピポーラ線上に存在しない場合には、同じ点を捕捉していない（対応づけが正しくない）といえる。よって、一方のカメラで見ている点が他方のカメラのどこに映っているかは、エピポーラ線上を調べれば十分である。対応づけが正しく、点XL及び点XRの位置が分かっていれば、点Xの３次元空間での位置を三角法により決定することができる。本実施形態の情報処理装置（３次元形状復元装置）は、上記のエピポーラ制約に基づいた線分探索を行って、多視点映像から物体の３次元形状を復元する。
【００２２】
図２は、線分探索を説明するための概略斜視図である。
図２の（Ａ）には、Rカメラの投影面６１を通るエピポーラ線５０のうちの、視体積（シルエットコーン）の存在有無を確認するための線分探索（交点探索）を行う範囲の一例を示している。線分探索は、Max（ｚNear，画面端Near６３）からMin（ｚFar，画面端Far６４）までの範囲で行う。Max（ｚNear，画面端Near６３）は点ｚNearと画面端Near６３のうち値が大きいほうを示し、Min（ｚFar，画面端Far６４）は点ｚFarと画面端Far６４のうち値が小さいほうを示す。ここで視野範囲について、点zNearはエピポーラ点eR（５２）に最も近い点であり、点ｚFarはエピポーラ点eR（５２）から最も遠い点を示す。また、画面端Near６３及び画面端Far６４はそれぞれ、エピポーラ線５０上の、投影面６１のzNear側の一端部、及び投影面６１のzFar側の他端部を示す。
【００２３】
図２の（Ｂ）には、線分探索の結果に基づいて導出されるシルエットコーン６５の一例を示している。シルエットコーンは、任意の視点から撮影して得られる物体の２次元シルエットを実空間に投影して得られる錐体（視体積）のことである。上記の線分検索によりエピポーラ線５０上のシルエット存在範囲を探索し、投影中心ORを視点としてシルエット存在範囲を実空間に投影することにより、視体積（シルエットコーン６５）が導出される。図２の（Ｂ）では、右上がりの実線の直線がエピポーラ線５０を実空間に投影した直線であり、シルエットコーン６５内を通る破線で示した区間がLカメラから見た３次元物体の表面とその背景に相当する。
【００２４】
多視点映像の物体シルエット画像から物体３次元形状を復元する際には、上記の視体積を利用した視体積交差法により復元する。視体積交差法では、複数の視点のそれぞれから導出されるシルエットコーンの交差積（VisualHull）に基づいて、物体の３次元形状を求める。この場合、エピポーラ線５０に対する線分探索により検出した、シルエットの存在範囲を示す線分の線分端が、３次元物体の表面（depth）の候補となり得る。３次元物体の表面(depth)は、基準カメラの視点（投影中心）から見た物体の表面を示す点である。Lカメラを基準カメラとした場合の３次元物体の表面は、シルエットコーンの境界(線分端)を投影中心OL及び点XLを通る直線上に投影したときに投影中心OLに最も近い点となる。
【００２５】
多視点映像の物体シルエット画像から物体の３次元形状を復元する際には、複数の投影中心のそれぞれを基準カメラの視点として複数の視点からの３次元物体の表面（depth）を確定し、３次元物体の切り出しを行う。
【００２６】
図３は、３次元物体の切り出しを説明するための概略イメージ図である。
図３には、８個の視点Ｏ１〜Ｏ８のそれぞれから撮影した映像における同一物体６６についてのシルエットコーンの交差積を示している。視体積交差法により物体６６の３次元形状を復元する際には、視点Ｏ１〜Ｏ８のそれぞれを基準カメラの視点としたときの３次元物体の表面（depth）を確定する。例えば、視点Ｏ１を基準カメラの視点とした場合、図３における長円形の物体６６の表面全体のうち、視点Ｏ１から見える部分領域内の各点についてのdepthが確定する。また、例えば、視点Ｏ５を基準カメラの視点とした場合、図３における物体６６の表面全体のうち、視点Ｏ５から見える部分領域内の各点についてのdepthが確定する。このように、複数の視点Ｏ１〜Ｏ８のそれぞれを基準カメラの視点としたときの物体６６の表面を確定してそれらを重ねることで、物体６６の表面全体の３次元位置が確定するため、３次元物体６６の３次元での形状位置を確定する(切り出す)ことが可能となる。
【００２７】
多視点映像から復元した物体の３次元形状は、例えば、該物体を任意の視点から見たときの画像（自由視点画像）の生成に利用可能である。
【００２８】
図４は、自由視点による物体の画像の生成方法を説明する図である。
図４の（Ａ）には、３次元空間における、多視点映像から復元した２個の物体６７Ａ，６７Ｂと、生成する画像の視点（ヒト視点）Ｈ１，Ｈ２との位置関係の例を示している。多視点映像から２個の物体６７Ａ，６７Ｂの３次元形状を復元した場合、各物体における表面内の各点の３次元位置が確定しているため、２個の物体６７Ａ，６７Ｂの位置関係も確定している。このため、復元した物体の３次元形状を利用して、任意の視点から物体を見た場合の画像を生成することが可能となる。例えば、図４の（Ａ）におけるヒト視点Ｈ１から物体６７Ａ，６７Ｂを見た場合、物体６７Ａの奥方に物体６７Ｂが重なって見える。このため、ヒト視点Ｈ１から見た物体６７Ａ，６７Ｂの画像を生成する場合、ヒト視点Ｈ１から見える物体６７Ａ，６７Ｂのシルエットのそれぞれに対して物体表面に対応する色彩（テクスチャ）をレンダリングし、（Ｂ）のような画像７１を生成する。
【００２９】
また、例えば、図４の（Ａ）におけるヒト視点Ｈ２から物体６７Ａ，６７Ｂを見た場合、物体６７Ａと物体６７Ｂとが左右に並んで見える。このため、ヒト視点Ｈ２から見た物体６７Ａ，６７Ｂの画像を生成する場合、ヒト視点Ｈ２から見える物体６７Ａ，６７Ｂのシルエットのそれぞれに対して物体表面に対応する色彩（テクスチャ）をレンダリングし、（Ｃ）のような画像７２を生成する。
【００３０】
以下、図面を参照しながら、実施形態を詳細に説明する。
図５は、一実施形態に係る情報処理装置の構成図である。
【００３１】
図５の情報処理装置１０は、視体積交差法により多視点映像から物体の３次元形状を復元する機能を持つ装置である。情報処理装置１０は、パラメタ（パラメータ）生成部１１、視点画像生成部１２、シルエット画像分離部１３、VisualHull部１４、及びレンダリング部１５を含む。
【００３２】
視点画像生成部１２は、異なる複数の視点から撮影された画像（視点画像）を生成する。例えば、視点画像生成部１２は、N個の視点のそれぞれから撮像した映像に含まれる複数の映像のそれぞれから同一時刻のフレームを抽出してN個の視点画像を生成する。
【００３３】
シルエット画像分離部１３は、視点画像生成部１２で生成された視点画像から物体（被写体）のシルエット画像を抽出して分離する。
【００３４】
パラメタ生成部１１は、カメラパラメタ９から光学パラメタ[0..N-1]、及び位置パラメタ[0..N-1]を取得して、各種パラメタ（変換情報）を生成する。
【００３５】
VisualHull部１４は、対象カメラで撮影された視点画像についてのシルエット画像、及び参照カメラで撮影された視点画像についてのシルエット画像を、シルエット画像分離部１３から取得する。また、VisualHull部１４は、対象カメラを特定するＩＤ（対象カメラＩＤ（ＴＩＤ））と、参照カメラを特定するＩＤ（参照カメラＩＤ（ＲＩＤ））を取得する。また、VisualHull部１４は、パラメタ生成部１１で生成された変換情報を取得する。VisualHull部１４は、取得したTID、RID、変換情報、及びシルエット画像[TID,RID]からdepth情報（３次元物体の表面についての情報）を算出する。
【００３６】
レンダリング部１５は、カメラパラメタ９から光学パラメタ[0..N-1]、位置パラメタ[0..N-1]）を取得するとともに、VisualHull部１４からdepth情報を取得する。また、レンダリング部１５は、シルエット画像分離部１３から非シルエット画像情報を取得するとともに、視点画像生成部１２から視点画像[0..N-1]を取得する。また、レンダリング部１５は、指定視点位置を取得する。レンダリング部１５は、取得した光学パラメタ、位置パラメタ、depth情報、非シルエット画像情報、及び視点画像に基づいて、指定視点位置から物体を見たときの画像を生成する。
【００３７】
情報処理装置１０における上記の機能構成は、例えば、図６又は図７のようなハードウェア構成要素によって実現される。
【００３８】
図６は、情報処理装置のハードウェア構成要素を示す図である。図７は、情報処理装置のハードウェア構成要素の別の例を示す図である。
【００３９】
図６のように、情報処理装置２２は、プロセッサ１６と、Dynamic Random Access Memory（DRAM）等のグローバルメモリ（第１メモリ）２１とを含む。プロセッサ１６とグローバルメモリ２１とは、チップ間接続バス７によって相互に接続されている。
【００４０】
プロセッサ１６は、演算ユニット１７、レジスタ１８、シェアードメモリ（第２メモリ）１９、及びキャッシュ２０を含む。演算ユニット１７（レジスタ１８）と、シェアードメモリ１９と、キャッシュ２０とは、チップ内バス６によって相互に接続されている。
【００４１】
なお、プロセッサ１６がＧＰＵを含むものである場合、図７の情報処理装置２３のように、プロセッサ１６を含むアクセラレータ処理部２２’から見たホスト側のグローバルメモリ２１’は、チップ間接続バス７よりも更に伝送帯域が小さい拡張バス８（例えばPCI-Express）によって接続される。
【００４２】
更にオプションとして、情報処理装置２２，２３（情報処理装置１０）は、図示しない入力装置、及び出力装置を含んでもよい。情報処理装置２２，２３は、例えば、コンピュータで実現される。
【００４３】
プロセッサ１６は、Central Processing Unit（CPU）及びGPUのいずれかを含む任意の処理回路とすることができる。プロセッサ１６は、例えば、外部記憶装置に記憶されたプログラムを実行することができる。
【００４４】
シェアードメモリ１９、キャッシュ２０、及びグローバルメモリ２１，２１’は、それぞれ、プロセッサ１６の動作により得られたデータや、プロセッサ１６の処理に用いられるデータを、適宜記憶する。なお、各種データは、媒体駆動装置によりデータの読み出し及び書き込みが可能な可搬型記録媒体に記憶させてもよい。
【００４５】
入力装置は、例えば、キーボード、マウスとして実現され、出力装置は、ディスプレイなどとして実現される。
【００４６】
また、情報処理装置２２，２３は、図示しないネットワーク接続装置を含んでもよい。ネットワーク接続装置は、他の装置との通信に利用可能であり、収集部又は指示部として動作する。
【００４７】
更に、情報処理装置２２，２３は、図示しない媒体駆動装置を含んでもよい。媒体駆動装置は、シェアードメモリ１９、キャッシュ２０、グローバルメモリ２１，２１’、及び外部記憶装置のデータを可搬記録媒体に出力すること、及び可搬記録媒体からプログラムやデータ等を読み出すことができる。可搬記録媒体は、フロッピイディスク、Magnet-Optical(MO)ディスク、Compact Disc Recordable(CD-R)、及びDigital Versatile Disc Recordable(DVD-R)を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００４８】
プロセッサ１６、グローバルメモリ２１，２１’、入力装置、出力装置、外部記憶装置、媒体駆動装置、及びネットワーク接続装置は、例えば、図示しないバスにより相互にデータの受け渡しが行えるように接続される。外部記憶装置は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ１６などに提供する。
【００４９】
プロセッサ１６の演算ユニット１７は、シェアードメモリ１９、キャッシュ２０、及びグローバルメモリ２１，２１’に記憶させた情報を読み出して所定の演算処理を行う。情報を記憶する記憶部として機能するシェアードメモリ１９、キャッシュ２０、及びグローバルメモリ２１，２１’には、それぞれ、下記表１のような特徴がある。
【００５０】
【表１】
2019117582.tif 000003
【００５１】
シェアードメモリ１９及びキャッシュ２０はチップ内バス６により演算ユニット１７と接続されており、グローバルメモリ２１，２１’はチップ間接続バス７，８により演算ユニット１７と接続されている。このため、演算ユニット１７は、グローバルメモリ２１，２１’から情報を読み出すよりも、シェアードメモリ１９及びキャッシュ２０から情報を読み出すほうが、情報を読み出す際の遅延（レイテンシ）が小さくなる。
【００５２】
しかしながら、シェアードメモリ１９及びキャッシュ２０は、グローバルメモリ２１と比べて容量が小さい。また、シェアードメモリ１９及びグローバルメモリ２１はユーザによる配置制御が可能であるのに対し、キャッシュ２０はキャッシュ管理機構により配置制御される。キャッシュ２０は、一般的にグローバルメモリのある連続メモリ単位(キャッシュライン)ごとにデータ操作されるため、近い時間に操作されるグローバルメモリのアドレス位置が近傍であるほどキャッシュされたデータの入れ替えが生じにくい。一方、キャッシュ２０におけるデータ操作では、近い時間に操作されるグローバルメモリのアドレス位置が広いほどキャッシュされたデータの入れ替えが生じる可能性が大きくなるため、グローバルメモリアクセスが生じる可能性が高くなる。
【００５３】
VisualHull部１４（図１参照）が行う線分探索において、参照画像におけるシルエット画像の画素の情報は、シルエット画像データ（以下、単に「シルエット画像」ともいう）を保持しているグローバルメモリ２１からデータが読み出される。シルエット画像は画像サイズにより使用データ量が決まるが、近年は必要とされる画像サイズが大きくなる(例えば4K, 8K)傾向にあり、シルエット画像のデータサイズも大きくなる。データサイズの大きいシルエット画像は、シェアードメモリ１９やキャッシュ２０には収まらず、グローバルメモリ２１上に保持される。
【００５４】
VisualHull部１４が行うVisualHull処理では、対象画像の視点と各前景画素とを結ぶ各エピポーラ線を各参照画像に射影して、各射影したエピポーラ線が各参照画像上の前景画素と交わる線分を探索する（線分端探索）。この際、視体積交差法の重複数分、同じ対象画像のエピポーラ線を共通座標系に写像して、線分の重複度を検査（線分重複検査）し、必要な重複数を満たした線分の範囲に3次元物体が存在すると認識し、視点に一番近い3次元物体が存在すると認識した線分端の位置を視点からの距離とする。つまり、各エピポーラ線の線分端探索処理は、他のエピポーラ線の線分端探索処理とデータとの依存関係がなく並列処理が可能である。
【００５５】
特に並列処理の場合、各並列単位（例えばスレッド）が利用できるシェアードメモリ１９のサイズがより小さくなるため、並列処理で高効率なシルエット画像データのキャッシュ方式が有用である。
【００５６】
従来例としては、演算ユニット１７が、グローバルメモリ２１から演算に必要なマスク画素を直接読み込む方法が考えられる。この場合、演算ユニット１７が最初にアクセスしたときに、シルエット画素がキャッシュ２０に格納されていないため読み込みのレイテンシが大きい。また、エピポーラ線は参照画像上に非水平状態であることがほとんどで、線分探索処理においては連続したアドレスのメモリアクセスとはならない。一般的に、演算装置は連続したアドレスへのメモリアクセスやある決まったパターンのメモリアクセスに対しては、メモリアクセス機構が最適にデータアクセスできるような仕組みを有している。これらの仕組みが線分端探索では働かない。
【００５７】
そこで本実施形態に係る情報処理装置１０では、以下のように解決する。
斜めメモリアクセス（非連続アドレスアクセス）を、メモリアクセス機構が最適にデータアクセスできるような連続アクセスとする。その際にシェアードメモリ１９上に読み込んだシルエット画素データの一部を一時整形して保持し、低レイテンシで演算ユニット１７が線分端探索時にアクセスできるようにする。
【００５８】
斜めメモリアクセスを連続アクセスとするためには、ある程度のアドレス方向への幅を持ったデータを読み込む必要がある。画像データの2次元配置において矩形となるようなメモリアクセスをグローバルメモリ２１に対して行い、キャッシュ２０に格納する。この場合、キャッシュ２０に格納したデータを単一のエピポーラ線が用いる、あるいは、エピポーラ線を基準なく処理するのみで (他のエピポーラ線の線分端探索をする際に必要なキャッシュ２０の領域を確保するために) 破棄してしまうと、シルエット画素データにおける同じ部分のデータを多数回グローバルメモリ２１から読み出す可能性が生じ、効率が悪い。あるシルエット画素へのアクセスが最初のアクセスでない場合にはキャッシュ２０にデータが存在する可能性がある。すなわち、アクセスするキャッシュライン（シルエット画像における水平方向で連続した複数の画素の情報）が、キャッシュ２０に格納されたシルエット画素のキャッシュラインに含まれる可能性がある。しかしながら、シルエット画像にアクセスする際にキャッシュ２０に存在するデータはキャッシュから削除されてしまうため、有効には動作しない。これは、画像の解像度が大きなほど顕著である。
【００５９】
つまり、斜めアクセスの非効率アクセスを排除するために矩形領域でメモリをシェアードメモリ１９に配置し、その矩形領域のマスク画素を利用するエピポーラ線線分端探索をシェアードメモリ１９にデータが存在するうちに済ませてしまう必要がある。
【００６０】
本実施形態の情報処理装置１０では、上記のようなシェアードメモリ１９に格納したデータを有効に利用するために並列処理でどのエピポーラ線を同一のグループで扱うかを決定し、また、そのグループが必要とするデータの範囲を決定する。
【００６１】
図８は、一実施形態に係る自由視点映像作成装置を示すブロック図である。ここで例示する自由視点映像作成装置３０は、３次元空間の任意の視点から見た映像（自由映像）を生成する装置であり、情報処理装置１０に含まれる。
【００６２】
図８のように、自由視点映像作成装置３０は、前景分離処理部３３、３３’．．．と、VisualHull処理部３５、３５’．．．と、レンダリング処理部３６とを含む。
【００６３】
自由視点映像作成装置３０は、撮影する領域を囲むように配置された複数のカメラ３１、３１’．．．のそれぞれにより撮影された、複数のカメラ画像３２、３２’．．．を取得する。
【００６４】
自由視点映像作成装置３０の前景分離処理部３３、３３’．．．は、カメラ画像３２、３２’．．．のそれぞれから、VisualHull処理部３５、３５’．．．による処理において前景となる画素で構成されるマスク画像３４を生成する。前景分離処理部３３、３３’．．．は、それぞれ、複数のカメラ画像３２、３２’．．．のうちの所定のカメラ画像からシルエット画像（マスク画像）３４を生成する。また、前景分離処理３３、３３’．．．は、それぞれ、レンダリング処理３６における合成に必要な背景情報（非シルエット画像情報）３７を生成する。なお、図８の前景分離処理部３３、３３’．．．は、自由始点映像装置３０における前景分離処理部の一例に過ぎない。前景分離処理部は、カメラ画像毎に別個に設ける代わりに、複数のカメラ画像３２、３２’．．．のそれぞれからシルエット画像３４及び背景情報３７を順次生成する１個の処理部であってもよい。
【００６５】
VisualHull処理部３５、３５’．．．は、それぞれ、複数のカメラ３１、３１’．．．のいずれかであり、かつ他のVisualHull処理部と重複しない１台のカメラを対象カメラとして、シルエット画像３４に基づいたVisualHull処理を行う。例えば、図８のVisualHull処理部３５は、複数のカメラ３１、３１’．．．のうちのカメラ３１を対象カメラとし、他のカメラ３１’．．．を参照カメラとしてVisualHull処理を行う。この場合、例えば、VisualHull処理部３５’は、カメラ３１を除く他のカメラ（例えばカメラ３１’）を対象カメラとし、他のカメラを参照カメラとしてVisualHull処理を行う。なお、図８のVisualHull処理部３５、３５’．．．は、自由視点映像作成装置３０におけるVisualHull処理部の一例に過ぎない。VisualHull処理部は、カメラ毎に別個に設ける代わりに、複数のカメラのうちの１台のカメラを対象カメラとしたVisualHull処理を、対象カメラを変更しながら繰り返す１個の処理部であってもよい。
【００６６】
レンダリング処理部３６は、VisualHull処理部３５、３５’．．．の処理結果（depthデータ３８）と、カメラ画像３２、３２’．．．と、背景画像３７、３７’．．．とに基づいて、任意の視点から見た物体の画像を生成する。レンダリング処理部３６では、例えば、複数の対象視点からいくつかの対象視点を選択し、選択した視点のカメラ画像、背景情報３７及びdepthデータ３８から、任意視点からの各物体の位置関係を決定する。また、レンダリング処理部３６では、決定した位置関係に合わせて前景や背景を合成し、カメラ画像から前景の画素値を決定して画素の色を確定する。これらの処理によりユーザが指定した任意の視点からの３次元画像が生成される。
【００６７】
なお、図８の自由視点映像作成装置３０は、カメラ画像毎（対象視点毎）に並列処理を行う構成になっているが、各々の処理部の個数等はこの構成には限らない。また、VisualHull処理部３５、３５’．．．による処理は、３次元形状が視体積交差法で切り出せる精度を維持できる範囲内で行えばよく、すべての対象視点のデータを必ずしも用いなくてもよい。すなわち、自由視点映像作成装置３０において物体の３次元形状を復元する際には、全て（Ｎ台）のカメラ３１、３１’・・・の中からＮ−１台以下のカメラを選択し、選択したカメラで撮像したカメラ画像から物体の３次元形状を復元してもよい。
【００６８】
VisualHull処理部３５、３５’．．．は、それぞれ、参照カメラF(F=0...参照カメラ数-1)についてMax(zNear,画面端Near)〜Min(zFar, 画面端Far)の範囲で線分探索を行い、検出されたシルエットの存在範囲を示す線分同士の論理積が１となる線分範囲を検出する。
【００６９】
図９は、VisualHull処理部の構成ブロック図である。
図９には、VisualHull処理部３５、３５’．．．と対応するVisualHull部１４（図１参照）の機能的構成を示している。VisualHull部１４は、ワールド座標→参照ローカル座標登録部４０、エピポーラ線傾き導出部４１、画像範囲導出部４２、探索範囲決定部４３、及び線分探索部１０５を含む。VisualHull部１４は、更に、参照ローカル座標→z座標変換部４４、線分バッファ[n]４６、及び線分重複検査部４５を含む。
【００７０】
ワールド座標→参照ローカル座標変換部４０は、基準となる撮像装置により撮影されるシルエットの存在位置を示す存在情報を、ワールド座標系から第１の座標系（参照Viewの座標系）に変換する。
【００７１】
エピポーラ線傾き導出部４１は、複数の参照撮像装置（参照カメラ）のうち第ｉ（＝１〜ｎ（ｎ：整数））の参照撮像装置に基づくシルエットの存在位置を示す第ｉの存在位置情報を取得する。エピポーラ線傾き導出部４１は、取得した第ｉの存在情報と第１の座標系に変換する情報とに基づいて、エピポーラ線を算出する。
【００７２】
線分重複検査部４５は、エピポーラ線とシルエットが交わる線分に関する（例えば線分バッファ４６内の）線分情報に基づいて、線分の重複する重複区間を検出する。
【００７３】
探索範囲決定部４３は、重複区間に基づいて、線分情報を探索する探索範囲を決定する。
【００７４】
線分探索部１０５は、決定した探索範囲に基づいて、線分の探索を行う。
なお、本発明を実施するための前提知識として、カメラの座標変換に関しては、非特許文献１を参照されたい。また、参照Viewの2D座標におけるエピポーラ線の導出方法に関しては、非特許文献２〜４を参照されたい。
【００７５】
本実施形態の情報処理装置１０では、エピポーラ幾何におけるエピポーラ制約を考慮したエピポーラ線のグループ分けを行い（つまり、最適なプリフェッチ領域を決定して）、グループ毎に、レイテンシの小さいメモリ領域（例えばシェアードメモリ１９）に記憶させたデータによる線分探索を行う。ここでいうプリフェッチとは、事前読込のことで、CPU等のプロセッサが欲しいデータをあらかじめキャッシュメモリに読み出しておく機能のことである。
【００７６】
図１０は、対象Viewの近傍シルエット画素に対応する参照Viewの複数のエピポーラ線を示した例示的なイメージ図である。図１１は、対象Viewの近傍シルエット画素に対応する参照Viewの複数の近傍エピポーラ線の広がり具合を示した例示的なイメージ図である。
【００７７】
情報処理装置１０では、図１０に示すように、対象View４７の処理近傍シルエット画素４８を、参照View４９における傾きが近いエピポーラ線５０に射影する。これにより、情報処理装置１０は、対象View４７の近傍シルエット画素４８に対して、参照View４９における傾きが近い複数のエピポーラ線５０をマッピングし、プリフェッチ領域５１（幅と高さライン数）を定める。
【００７８】
また、図１１に示すように、参照View４７のエピポール５２やシルエット画素の位置によって、近傍エピポーラ線５０の広がり具合（すなわちエピポーラ線の傾き範囲）が変わり、また、エピポール５２からの距離によってプリフェッチ領域５１が変化する。
【００７９】
図１２は、プリフェッチ領域のプリフェッチ幅及びライン数の変化とプリフェッチ領域のグループ分けとを説明するイメージ図である。
【００８０】
図１２の（Ａ）に示すように、エピポーラ線５０の広がりに合わせてプリフェッチ幅５３及びライン数５４を変更する。プリフェッチ幅５３又はライン数５４の一方が決定されると、シェアードメモリ１９及びキャッシュ２０（図６，７参照）の容量に基づいて、他方がおのずと定まる。また、図１２の（Ｂ）に示すように、メモリのレイテンシ、線分探索の処理時間などを考慮して定めた最小プリフェッチ幅より、決定されたプリフェッチ幅５３が小さい場合は、プリフェッチ領域５１のグループ分けを行う。
【００８１】
次に、図１３を参照しながら、シルエット画像における傾きが近いエピポーラ線５０の具体的な求め方を説明する。図１３は、例示的なシルエット画像を示した図である。
【００８２】
エピポーラ線は必ずエピポールを通過するというエピポーラ線の拘束条件から、傾きが近いエピポーラ線は隣接画素を通るエピポーラ線といえる。傾きが近いエピポーラ線の求め方は、例えば、図１３のようにシルエット画像３４’を任意の矩形領域に分割して、その矩形領域毎のラスタ（１ピクセル）順にいくつかのシルエット画素３９をスレッドのグループとする方法が考えられる。ここで、シルエット画素３９は、物体（シルエット）が存在することを示す画素である。また、図１３のシルエット画像３４’におけるマスク画素３９’は、物体（シルエット）が存在しないことを示す画素である。
【００８３】
更に、このグループ化を行う際に多数のシルエット画素が対象となりいくつかのグループが構成できる場合には、同じグループとするシルエット画素３９を（物体が存在している画素を所定の範囲として）グルーピングするために実際にエピポーラ線の傾きにより隣接度合いを判断し、より隣接しているものをグループとしてもよい。あるいは、矩形領域とせずにシルエット画像３４’全体のシルエット画素のエピポーラ線の傾きからグルーピングしてもよい。
【００８４】
次に、図１４を参照しながら、キャッシュ領域５５を決定する方法を説明する。図１４は、キャッシュ領域を決定するための参照Viewのイメージ図である。
【００８５】
エピポーラ幾何の拘束条件として、エピポーラ線（y=a/b*x+c/b）は必ずエピポールを通過する。したがって、キャッシュ領域５５を決定する際には、まず、図１４のように、並列処理されるマッピングされた傾きの近いエピポーラ線のグループの中で、探索対象エリアにおける最大傾き（IMax）と最小傾き（IMin）の２本のエピポーラ線５０’，５０’’をピックアップする。ピックアップしたIMaxとIMinにおけるｘ値の差を上記で決定したプリフェッチ幅５３とし、また、ｙ値の差を上記で決定したプリフェッチライン数５４とする。
【００８６】
そして、図１４に示されているように、(x1−x0)×(y（IMax）−y（IMin）)の領域サイズ以上となるように、ｘ０を探索対象エリア５７の開始位置とし、x１の移動によってキャッシュ領域５５の幅を決定する。
【００８７】
決定されたキャッシュ領域５５において、これら最大傾き（IMax）と最小傾き（IMin）の２本のエピポーラ線５０’、５０ ’ ’と、それらの間にあるすべてのエピポーラ線とに対する線分探索を、並列処理として行う。
【００８８】
ここで、シェアードメモリ１９のレイテンシ及び／又は処理時間に基づいて、キャッシュ領域５５のグループ分けを行ってもよい。
【００８９】
図１５は、キャッシュ領域のデータを段階的に読み込む場合のイメージ図である。
例えば、メモリ内の図２の投影面６１と対応する画像データを読み出す際のメモリアクセスは、ライン毎に、画面端Nearから画面端Farへ一方向に進む。このため、プリフェッチを行う際には、例えば、図１５のように、キャッシュ領域５５のデータを何段階か（複数のグループ）に分けて左から右のグループへ（連続的に）読み込むことができる。あるデータの線分探索と並行して、次に使用するデータをプリフェッチできるので、線分探索時の読み込み待ち時間が不要となる。
【００９０】
図１６は、一実施形態に係る情報処理装置を含む情報処理システムを示す構成ブロック図である。
【００９１】
図１６のように、情報処理システム１００は、プリフェッチパラメタ決定部１０１、処理グループ・プリフェッチエリア決定部１０２、プリフェッチ部１０３、メモリアクセス部１０４、及び線分探索部１０５を備える。
【００９２】
プリフェッチパラメタ決定部１０１は、レイテンシ及びキャッシュ領域サイズ[g]に基づいて、最小プリフェッチ幅を含むプリフェッチパラメタを決定する。
【００９３】
処理グループ・プリフェッチエリア決定部１０２は、対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定する。処理グループ・プリフェッチエリア決定部１０２は、参照Viewにおけるすべてのエピポーラ線についての情報ax+by+c[P]と、プリフェッチパラメタ決定部１０１で決定した最小プリフェッチ幅とに基づいて、エピポーラ線のグループを決定する。
【００９４】
プリフェッチ部１０３は、決定したグループ及びキャッシュの容量に基づいて、グループに含まれる複数のエピポーラ線のそれぞれに対する線分探索に用いるキャッシュ領域を決定し、シルエット画像におけるキャッシュ領域と対応する部分データを読み出してキャッシュに格納する。
【００９５】
線分探索部１０５は、キャッシュに格納したシルエット画像データに基づいて、グループに含まれる複数のエピポーラ線のそれぞれに対する線分探索を行う。
【００９６】
図１６の情報処理システム１００では、プリフェッチパラメタ決定部１０１、処理グループ・プリフェッチエリア決定部１０２、及びプリフェッチ部１０３によるプリフェッチ処理と、線分探索部１０５による線分探索処理とが行われる。プリフェッチ処理では、シルエット画像のうちの線分探索に利用する部分領域（キャッシュ領域）を決定し、グローバルメモリ２１からキャッシュ領域を読み出してキャッシュ２０に格納する処理を行う。線分探索処理では、キャッシュ２０に格納したシルエット画像の一部を読み出して線分探索処理を行う。
【００９７】
次に図１７を参照しながら、本実施形態に係る情報処理システム１００が行う情報処理（３次元形状を構築する処理）におけるプリフェッチの処理フローS100を説明する。
【００９８】
図１７は、一実施形態に係る情報処理システムにおけるプリフェッチの処理フローを示す図である。
【００９９】
情報処理システム１００では、まず、プリフェッチパラメタ決定部１０１において、レイテンシ及びキャッシュ領域サイズ[ｇ]から、最小プリフェッチ幅及びプリフェッチ要求タイミング残データ量を導出する（ステップS101）。
【０１００】
次に、情報処理システム１００は、該当エピポーラ線の線分探索が初回であるか、又はプリフェッチ要求[ｇ]があったか否かを判定する（ステップS102）。該当エピポーラ線の線分探索が初回であるか、又はプリフェッチ要求[ｇ]があった場合（ステップS102；Yes）、次に、処理グループ・プリフェッチエリア決定部１０２において、エピポーラ線ax＋by＋c[P]及び最小プリフェッチ幅から、プリフェッチ幅[ｇ]、プリフェッチライン数[ｇ]、プリフェッチベースアドレス[ｇ]を導出する（ステップS103）。ここでいうベースアドレスは、プリフェッチ領域の開始アドレスのことである。
【０１０１】
なお、該当エピポーラ線の線分探索が初回でないか、又はプリフェッチ要求[ｇ]がない場合（ステップS102；No）、情報処理システム１００は、待機状態となる。この場合、情報処理システム１００は、所定のタイミングでステップＳ102の判定を再度行う。
【０１０２】
ステップS103の処理の後、情報処理システム１００は、該当エピポーラ線の線分探索が初回であるか、又はキャッシュ領域[ｇ]１０６のグループ分け変更があったか否かを判定する（ステップS104）。該当エピポーラ線の線分探索が初回であるか、又はキャッシュ領域[ｇ]１０６のグループ分け変更があった場合（ステップS104；Yes）、次に、処理グループ・プリフェッチエリア決定部１０２において、グループ内のエピポーラ線[ｇ]をメモリアクセス部１０４に設定する（ステップS105）。
【０１０３】
ステップS105の処理の後、情報処理システム１００は、ステップS106の処理を行う。また、該当エピポーラ線の線分探索が初回でないか、又はグループ分け変更がない場合（ステップS104；No）、情報処理システム１００は、ステップS105をスキップして、ステップS106の処理を行う。
【０１０４】
ステップS106では、シルエット画像領域ベースアドレス、シルエット画像領域ストライド、プリフェッチ幅[ｇ]、プリフェッチライン数[ｇ]、及びプリフェッチベースアドレス[ｇ]により、プリフェッチ部１０３において、シルエット画像領域１０７のベースアドレスとストライドを使って、シルエット画像データ[ｇ]が読み込まれ、そのシルエット画像データ[ｇ]がキャッシュ領域[ｇ]１０６に書き込まれる。ここで、シルエット画像領域ストライドは、シルエット画像の配列の何番目から何番目までのデータが、画像の横一列分に相当するのかを表す値である。
【０１０５】
その後、情報処理システム１００は、該当エピポーラ線のグループに対する線分探索が完了したか否かを判定する（ステップS107）。線分探索を行っていないエピポーラ線がある場合（ステップS107；No）、情報処理システム１００は、ステップS102以降の処理を繰り返す。そして、該当エピポーラ線のグループに対する線分探索が完了した場合（ステップS107；Yes）、情報処理システム１００は、次に、すべての線分探索が完了したか否かを判定する（ステップS108）。線分探索が完了していない場合（ステップS108；No）、情報処理システム１００は、エピポーラ線を新たに設定し（ステップS109）、ステップS102以降の処理を繰り返す。そして、すべての線分探索が完了した場合（ステップS108；Yes）、情報処理システム１００は、プリフェッチの処理フローを終了する。
【０１０６】
次に、図１８を参照して、本実施形態の情報処理システム１００が行う線分探索の処理フローS200を説明する。
【０１０７】
図１８は、一実施形態に係る情報処理システムにおける線分探索の処理フローを示す図である。
【０１０８】
情報処理システム１００では、まず、キャッシュ領域[ｇ]１０６に未使用データが存在するかどうか判定する（ステップS201）。未使用データが存在する場合（ステップS201；Yes）、メモリアクセス部１０４が、キャッシュ領域[ｇ]１０６から、エピポーラ線グループ（ax＋by＋c[ｇ][ｐ]）の線分探索を行うためのシルエットデータ[ｇ][ｐ]を読み出す（ステップS202）。一方、未使用データが存在しない場合（ステップS201；No）、情報処理システム１００は、待機状態になる。この場合、情報処理システム１００は、所定のタイミングでステップＳ201の判定を再度行う。
【０１０９】
ステップＳ202の処理を終えると、情報処理システム１００は、次に、キャッシュ領域[ｇ]１０６の未使用データ量が、プリフェッチ要求タイミング残データ量より少ないか否かを判定する（ステップS203）。未使用データ量が、プリフェッチ要求タイミング残データ量より少ない場合（ステップS203；Yes）、情報処理システム１００は、メモリアクセス部１０４において、プリフェッチ要求[ｇ]を処理グループ・プリフェッチエリア決定部１０２に送信する（ステップS204）。その後、メモリアクセス部１０４において、シルエットデータ[ｇ][ｐ]が線分探索部１０５に送信されると、情報処理システム１００は、線分探索部１０５において線分探索を行う（ステップS205）。なお、キャッシュ領域[ｇ]１０６の未使用データ量が、プリフェッチ要求タイミング残データ量以上である場合（ステップS203；No）、情報処理システム１００は、ステップS204をスキップして、ステップS205の処理を行う。
【０１１０】
ステップＳ205の処理を終えると、情報処理システム１００は、次に、該当エピポーラ線グループの線分探索が完了したか否かを判定する（ステップS206）。該当エピポーラ線グループの線分探索が完了していない場合（ステップS206；No）、情報処理システム１００は、ステップS201以降の処理を繰り返す。そして、該当エピポーラ線グループの線分探索が完了した場合（ステップS206；Yes）、情報処理システム１００は、次に、すべての線分探索が完了しているか否かを判定する（ステップS207）。線分探索が完了していない場合（ステップS207；No）、情報処理システム１００は、エピポーラ線を新たに設定し（ステップS208）、ステップS201以降の処理を繰り返す。そして、すべての線分探索が完了した場合（ステップS207；Yes）、情報処理システム１００は、線分探索の処理フローを終了する。
【０１１１】
本実施形態の情報処理システム１００（情報処理装置１０）では、上記のプリフェッチの処理フローと線分探索の処理フローとを連携して行うことで、対象Viewの近傍シルエット画素が、参照Viewの傾きが近い複数のエピポーラ線に射影されるようにプリフェッチ領域を定める。これにより、情報処理システム１００（情報処理装置１０）では、グローバルメモリ２１，２１’に対する斜めアクセスによりレイテンシの小さいメモリ（例えばシェアードメモリ１９）に記憶させたデータを用いて、複数のエピポーラ線に対する線分探索をまとめて行うことが可能となる。
【０１１２】
上述したように本実施形態によれば、処理近傍シルエット画素に対応するエピポーラ線の拘束条件を考慮した、複数のエピポーラ線の線分探索における最適な並列処理の割り当てと、最適なプリフェッチ領域とを決定することができる。
【０１１３】
したがって、本実施形態によれば、連続データアクセス時は、グローバルメモリ２１，２１’などのレイテンシの大きいメモリで行い、非連続データアクセス時は、シェアードメモリ１９などのレイテンシの小さいメモリで行うことができる。これにより、メモリレイテンシによる性能劣化を最小にすることができる。また、本発明は、並列処理される線分探索において特に効果が発揮される。
【０１１４】
なお、線分探索処理における上記のメモリアクセス及びデータキャッシュの方法は、一例に過ぎない。本実施形態に係る線分探索処理は、エピポーラ線の傾き、エピポーラ線グループの構成の仕方、及びシェアードメモリ容量の制約等に応じて、シェアードメモリ１９へのデータキャッシュによる線分探索処理と、シェアードメモリへのデータキャッシュを行わない線分探索処理とを混在させてもよい。また、本実施形態に係る線分探索処理では、上記の制約等に応じて、エピポーラ線を複数のグループに分けてグループ毎にシェアードメモリ１９へのデータキャッシュによる線分探索処理と、シェアードメモリへのデータキャッシュを行わない線分探索処理とを切り替えてもよい。
【０１１５】
以上記載した各実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
異なる視点から撮影した複数の画像から、視体積交差法によって物体の３次元形状を復元する情報処理装置であって、
前記画像から抽出された前記物体についてのシルエット画像データの一部を格納可能なキャッシュと、
前記複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、前記複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定する、処理グループ・プリフェッチエリア決定部と、
決定した前記グループ及び前記キャッシュの容量に基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定するプリフェッチ部と
を備えることを特徴とする情報処理装置。
（付記２）
前記複数の画像のそれぞれについての前記シルエット画像データを格納可能な第１メモリを更に備え、
前記プリフェッチ部は、前記シルエット画像データにおける前記キャッシュ領域と対応した部分を前記第１メモリから読み出して前記キャッシュに格納する
ことを特徴とする付記１に記載の情報処理装置。
（付記３）
前記情報処理装置は、前記キャッシュを含み、前記処理グループ・プリフェッチエリア決定部、前記プリフェッチ部、及び前記線分探索部として動作するプロセッサと、前記第１メモリとがバスにより接続されている
ことを特徴とする付記２に記載の情報処理装置。
（付記４）
前記プロセッサは、前記シルエット画像データの一部を格納可能な第２メモリを更に含み、
前記プリフェッチ部としての動作において前記第２メモリのレイテンシ及び／又は処理時間に基づいて、前記キャッシュ領域のグループ分けを行う
ことを特徴とする付記３に記載の情報処理装置。
（付記５）
前記プリフェッチ部は、前記グループに含まれる前記複数のエピポーラ線が交差するエピポールの位置と、線分探索の対象となる領域における前記複数のエピポーラ線の広がりと、前記キャッシュの容量とに基づいて、前記キャッシュ領域を決定する
ことを特徴とする付記１に記載の情報処理装置。
（付記６）
前記プリフェッチ部は、前記画像内の矩形領域をキャッシュ領域に決定し、該キャッシュ領域における幅が所定の幅よりも狭くなった場合には、前記キャッシュ領域を複数のキャッシュ領域に分割する
ことを特徴とする付記１に記載の情報処理装置。
（付記７）
前記プリフェッチ部は、前記画像内の矩形領域をキャッシュ領域に決定し、該キャッシュ領域における幅が所定の幅よりも広い場合には、前記キャッシュ領域を幅方向で複数の部分領域に分割して部分領域のデータ毎に段階的に前記キャッシュに格納する
ことを特徴とする付記１に記載の情報処理装置。
（付記８）
前記キャッシュに格納した前記シルエット画像データに基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す前記線分を探索する線分探索部を更に備える
ことを特徴とする付記１に記載の情報処理装置。
（付記９）
異なる視点から撮影した複数の画像から、視体積交差法によって物体の３次元形状を復元する情報処理装置が、
前記複数の画像のそれぞれから抽出した前記物体についてのシルエット画像データを第１メモリに記憶させ、
前記複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、前記複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定し、
決定した前記グループ及び前記情報処理装置が備えるキャッシュの容量に基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定する
処理を実行することを特徴とする情報処理方法。
（付記１０）
前記情報処理装置が、更に、
前記シルエット画像データのうちの前記キャッシュ領域と対応する部分データを前記第１メモリから読み出して前記キャッシュに格納し、
前記キャッシュに格納された前記シルエット画像データに基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す前記線分を探索する
処理を実行することを特徴とする付記９に記載の情報処理方法。
（付記１１）
異なる視点から撮影した複数の画像から、視体積交差法によって物体の３次元形状を復元する処理をコンピュータに実行させる情報処理プログラムであって、
前記複数の画像のそれぞれから抽出した前記物体についてのシルエット画像データを第１メモリに記憶させ、
前記複数の画像のうちの対象Viewに指定した画像における近傍シルエット画素の位置に基づいて、前記複数の画像のうちの参照Viewに指定した画像において傾きが所定の範囲内となる複数のエピポーラ線のグループを決定し、
決定した前記グループ及び前記情報処理装置が備えるキャッシュの容量に基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す線分の探索に用いるキャッシュ領域を決定する
処理を含むことを特徴とする情報処理プログラム。
（付記１２）
前記コンピュータに、更に、
前記シルエット画像データのうちの前記キャッシュ領域と対応する部分データを前記第１メモリから読み出して前記キャッシュに格納し、
前記キャッシュに格納された前記シルエット画像データに基づいて、前記グループに含まれる前記複数のエピポーラ線のそれぞれにおける前記物体の存在する範囲を示す前記線分を探索する
処理を実行させることを特徴とする付記１１に記載の情報処理プログラム。
【符号の説明】
【０１１６】
６  チップ内バス
７  チップ間接続バス
９  カメラパラメタ
１０，２２，２３  情報処理装置
１１  パラメタ生成部
１２  視点画像生成部
１３  シルエット画像分離部
１４  VisualHull部
１５  レンダリング部
１６  プロセッサ
１７  演算ユニット
１８  レジスタ
１９  シェアードメモリ
２０  キャッシュ
２１，２１’  グローバルメモリ
４０  ワールド座標→参照ローカル座標変換部
４１  エピポーラ線傾き導出部
４２  画面範囲導出部
４３  探索範囲決定部
４４  参照ローカル座標→ｚ座標変換部
４５  線分重複検査部
４６  線分バッファ
１００  情報処理システム
１０１  プリフェッチパラメタ決定部
１０２  処理グループ・プリフェッチエリア決定部
１０３  プリフェッチ部
１０４  メモリアクセス部
１０５  線分探索部
１０６  キャッシュ領域
１０７  シルエット画像領域
【図１】
2019117582.tif 000004
【図２】
2019117582.tif 000005
【図３】
2019117582.tif 000006
【図４】
2019117582.tif 000007
【図５】
2019117582.tif 000008
【図６】
2019117582.tif 000009
【図７】
2019117582.tif 000010
【図８】
2019117582.tif 000011
【図９】
2019117582.tif 000012
【図１０】
2019117582.tif 000013
【図１１】
2019117582.tif 000014
【図１２】
2019117582.tif 000015
【図１３】
2019117582.tif 000016
【図１４】
2019117582.tif 000017
【図１５】
2019117582.tif 000018
【図１６】
2019117582.tif 000019
【図１７】
2019117582.tif 000020
【図１８】
2019117582.tif 000021
【図１９】
2019117582.tif 000022