(57)【特許請求の範囲】
【請求項１】
物体の形状を表す複数の形状データを統合する画像処理装置であり、
３次元空間を分割した単位であるボクセルが表す３次元位置と前記形状データとを入力とし、前記３次元位置と前記形状データとの符号付距離である第１符号付距離の計算を、前記形状データ毎に行う第１計算部と、
前記ボクセルが表す３次元位置と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記ボクセルが前記形状の表面付近にある場合、すなわち前期第１符号付距離の絶対値が閾値以下の場合、あるいは、前記ボクセルが外側にある場合、あるいは、それらのいずれの場合とも決定できない場合を分類する第２計算部と、
前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記いずれとも決定できないと分類されたボクセルが前記形状の内側にあるか外側にあるかを推定する第３計算部と、
前記表面付近と分類されたボクセルの３次元位置と、前記内側に分類または推定されたボクセルと前記外側に分類または推定されたボクセルとの境界部分に位置するボクセルの３次元位置とを、前記形状の表面位置として算出する第４計算部と、
を具備することを特徴とする画像処理装置。
【請求項２】
前記形状データの各々に対して算出された前記第１符号付距離の重み付き和として第２符号付距離を計算する第５計算部と、を更に具備し、
前記第４計算部では、前記表面付近と分類されたボクセルについて前記第２符号付距離の値を付与し、その等値面を前記形状の表面位置とすることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記第３計算部では、前記第２計算部の結果にかかわらず、全ての前記ボクセルに対して前記推定が行われることを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記第３計算部では、前記形状データに基づいて、前記ボクセルが前記形状の内側にあるか外側にあるかの確信の度合いを変数とする確率分布で表し、前記第１符号付距離のそれぞれから得られる情報をもとに、事前分布を変更して事後分布を計算するベイズ推定を行い、
前記ベイズ推定の事後分布の平均値により前記ボクセルが前記形状の内側にあるか外側にあるかを推定することを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記第３計算部では、前記ベイズ推定と等価な判別関数の値を計算し、この値によって前記ボクセルが前記形状の内側にあるか外側にあるかを推定することを特徴とする請求項１記載の画像処理装置。
【請求項６】
前記第１計算部乃至前記第４計算部の処理のうち、何れか１つ又は複数の処理について、各計算部の代わりにＧＰＵが設けられ、処理がＧＰＵにより行われることを特徴とする請求項１記載の画像処理装置。
【請求項７】
前記第１計算部乃至前記第５計算部の処理のうち、何れか１つ又は複数の処理について、各計算部の代わりにＧＰＵが設けられ、処理がＧＰＵにより行われることを特徴とする請求項２記載の画像処理装置。
【請求項８】
前記第１計算部および前記第５計算部の処理は、前記３次元空間中のボリュームを２次元画像であるスライスの集合とみなし、一つの平面上の前記ボクセルの集合であるスライスに対する処理がＧＰＵの２次元画像への描画機能によって並列処理されることを特徴とする請求項２記載の画像処理装置。
【請求項９】
前記複数の形状データは、アクティブステレオ法により得られたものを含み、前記第４計算部での推定に、前記形状データを計測する時に利用された光源位置からの光が前記ボクセルを通過しているか否かの情報を利用することを特徴とする請求項１記載の画像処理装置。
【請求項１０】
前記第４計算部での推定に、前記ボクセルの位置と、前記光源位置と、前記ボクセルと前記光源位置とを通過する直線と前記形状データとの交点の位置、の３つの位置関係を利用することを特徴とする請求項９記載の画像処理装置。
【請求項１１】
前記光源位置から前記形状データまでの距離を表す距離画像を利用して、前記位置関係を得ることを特徴とする請求項１０記載の画像処理装置。
【請求項１２】
前記第５計算部で計算された第２符号付距離に基づいて等値面を形成する第６計算部を更に具備することを特徴とする請求項２記載の画像処理装置。
【請求項１３】
前記第１計算部乃至前記第５計算部の計算は、前記形状データの解像度よりも粗い解像度である第１解像度にて行われ、
前記形状の表面近くにあると推定される前記ボクセルが存在する領域または、前記形状の内側にあると推定される前記ボクセルと外側にあると推定される前記ボクセルとが接する領域に対して、前記第１解像度よりも細かい解像度である第２解像度で、前記第１計算部乃至前記第５計算部の計算を行うことを特徴とする請求項２記載の画像処理装置。
【請求項１４】
画像処理装置で動作する、形状を表す複数の形状データを統合する画像処理方法であり、
３次元空間を分割した単位であるボクセルが表す３次元位置と前記形状データとを入力とし、前記３次元位置と前記形状データとの符号付距離である第１符号付距離の計算を、前記形状データ毎に行う第１ステップと、
前記ボクセルが表す３次元位置と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記ボクセルが前記形状の表面付近にある場合、すなわち前期第１符号付距離の絶対値が閾値以下の場合、あるいは、前記ボクセルが外側にある場合、あるいはそれらのいずれの場合とも決定できない場合を分類する第２ステップと、
前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記いずれとも決定できないと分類されたボクセルが前記形状の内側にあるか外側にあるかを推定する第３ステップと、
前記表面付近と分類されたボクセルの３次元位置と、前記内側に分類または推定されたボクセルと前記外側に分類または推定されたボクセルとの境界部分に位置するボクセルの３次元位置とを、前記形状の表面位置として算出する第４ステップと、
を具備することを特徴とする画像処理方法。
【請求項１５】
画像処理装置で動作する、形状を表す複数の形状データを統合するプログラムであり、
３次元空間を分割した単位であるボクセルが表す３次元位置と前記形状データとを入力とし、前記３次元位置と前記形状データとの符号付距離である第１符号付距離の計算を、前記形状データ毎に行う第１機能と、
前記ボクセルが表す３次元位置と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記ボクセルが前記形状の表面付近にある場合、すなわち前期第１符号付距離の絶対値が閾値以下の場合、あるいは、前記ボクセルが外側にある場合、あるいはそれらのいずれの場合とも決定できない場合を分類する第２機能と、
前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記いずれとも決定できないと分類されたボクセルが前記形状の内側にあるか外側にあるかを推定する第３機能と、
前記表面付近と分類されたボクセルの３次元位置と、前記内側に分類または推定されたボクセルと前記外側に分類または推定されたボクセルとの境界部分に位置するボクセルの３次元位置とを、前記形状の表面位置として算出する第４機能と、
を実行させることを特徴とするプログラム。
【請求項１６】
ＧＰＵの並列計算機能を用いて、入力された複数の形状データを統合する画像処理装置であり、
前記ＧＰＵの記憶部の一部であると共に、前記形状データが格納される第１記憶領域と、
前記ＧＰＵの記憶部の一部であると共に、３次元空間を分割した要素であるボクセルの情報が格納される第２記憶領域と、
前記ＧＰＵの計算機能の一部であると共に、前記ボクセルが表す３次元位置と前記形状データの視点位置とを用いて、前記ボクセルと視点との第1距離を計算する処理を、ＧＰＵの並列計算部で並列に計算する第1計算部と、
前記3次元位置を前記形状データに投影した点と前記視点位置との第２距離を計算する処理を、ＧＰＵの並列計算部で並列に計算する第２計算部と，
前記第1距離と前記第２距離との差である第１符号付距離を、前記第１記憶領域から読み出した前記形状データの各々に対して計算する処理を、ＧＰＵの並列計算部で並列に計算する第３計算部と、
前記ＧＰＵの計算機能の一部であると共に、前記ボクセルについて、前記形状データの各々に対して算出された前記第１符号付距離の重み付き和として第２符号付距離を計算し、前記第２符号付距離を前記第２記憶領域に格納する第４計算部と、
を具備し、前記第１，第２，第３および第４計算部の処理は、前記３次元空間中の一つの平面上の前記ボクセルの集合である２次元スライス面に対して、ＧＰＵの２次元画像への描画機能を用いることで並列処理されることを特徴とする画像処理装置。
【請求項１７】
前記第１計算部では、前記ＧＰＵのシェーダで実行されるプログラムによって前記第１符号付距離が計算されることを特徴とする請求項１６記載の画像処理装置。
【請求項１８】
前記第２計算部では、前記ＧＰＵのブレンディング機能、すなわち複数の描画結果を加算する機能を用いて、前記第２符号付距離、すなわち前記第１符号付距離の重み付き和を計算することを特徴とする請求項１６記載の画像処理装置。
【請求項１９】
前記第１計算部および前記第２計算部では、前記ＧＰＵのシェーダによって前記第１符号付距離および前記第２符号付距離を計算することを特徴とする請求項１６記載の画像処理装置。
【請求項２０】
テクスチャ領域として確保された前記第１記憶領域に、前記形状データが距離画像として格納されることを特徴とする請求項１６記載の画像処理装置。
【請求項２１】
テクスチャ領域として確保された前記第１記憶領域に、前記形状データと、前記形状データにおいて、形状データのある部分が未観測であることを示す値とが、距離画像として格納されることを特徴とする請求項１６記載の画像処理装置。
【請求項２２】
ＧＰＵの計算機能を用いて、入力された複数の形状データを統合する画像処理方法であり、
前記ＧＰＵの記憶部であると共に前記形状データが格納される第１記憶領域と、３次元空間を分割した要素であるボクセルの情報が格納される第２記憶領域とを確保する第１ステップと、
前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記ボクセルが表す３次元位置と前記形状データとの符号付距離である第１符号付距離を、前記第１記憶領域から読み出した前記形状データの各々に対して計算する第２ステップと、
前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記形状データの各々に対して算出された前記第１符号付距離の重み付き和として第２符号付距離を計算し、前記第２符号付距離を前記第２記憶領域に格納する第３ステップと、
を具備することを特徴とする画像処理方法。
【請求項２３】
ＧＰＵの計算機能を用いて、入力された複数の形状データを統合する画像処理装置に、
前記ＧＰＵの記憶部であると共に前記形状データが格納される第１記憶領域と、３次元空間を分割した要素であるボクセルの情報が格納される第２記憶領域とを確保する第１機能と、
前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記ボクセルが表す３次元位置と前記形状データとの符号付距離である第１符号付距離を、前記第１記憶領域から読み出した前記形状データの各々に対して計算する第２機能と、
前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記形状データの各々に対して算出された前記第１符号付距離の重み付き和として第２符号付距離を計算し、前記第２符号付距離を前記第２記憶領域に格納する第３機能と、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法およびプログラムに関し、特に、複数の３次元形状データを統合する画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【０００２】
三次元計測によって得られる形状データは、距離画像の形式になっていることが多い。複数の計測結果から、全周の形状を得るには、これらの距離画像を位置合わせし、統合する必要がある。位置合わせされた複数の距離画像を統合する方法には、ｚｉｐｐｅｒｉｎｇ法（非特許文献１）や、符号付距離場を用いる方法（非特許文献２）が提案されている。特に近年、大きな入力データを効率的に処理可能な符号付距離場を用いる手法が、広く研究されるようになってきている。符号付距離場とは、３次元空間をボクセルの集合であるボリュームデータとし、各ボクセルと形状表面との距離を、形状の内外を表す符号をつけて格納したものである。一般には、符号機距離場において、ゼロ値の等値面は物体の表面形状を表す。従って、符号付距離場は、形状の表現方式の１つとも見做される。符号付距離場による形状表現は、物体表面の未観測部分などに発生する欠落部分を補間するためにも利用される。
【０００３】
ＣｕｒｌｅｓｓとＬｅｖｏｙは、ボリューム空間の各ボクセルをＵｎｓｅｅｎ（未観測）、Ｎｅａｒｓｕｒｆａｃｅ（物体表面）、Ｅｍｐｔｙ（物体外部）に場合分けし、ＵｎｓｅｅｎとＥｍｐｔｙとの間にメッシュを生成することにより欠落部分の補間を行っている（非特許文献１）。これは、ボリュームデータから、観測された表面の前面を削っていく処理に相当することから、ｓｐａｃｅ  ｃａｒｖｉｎｇ法（以下ＳＣ法と称する）と呼ばれる。ＳＣ法は、観測データが多い場合には、効果的に欠落部分の補間を行うことができるが、利用可能な距離画像が少ない場合には、失敗することが多い。これは、ｓｐａｃｅ  ｃａｒｖｉｎｇによって削られるボリューム空間の「削り残し」と、対象物体とが連結されてしまうことにより生じる。
【０００４】
このような問題を解決するには、未観測のボクセルを無くし、すべてのボクセルを「物体内部」と「物体表面」に分類することが考えられる。この時、未観測の部分には、物体の無い部分、物体内部であってもオクルージョンによって観測できない部分、物体表面の反射率が低いことなどによるデータ欠損が含まれるので、これらを考慮して分類を行う必要がある。
【０００５】
符号付距離場の等値面として表された形状データの欠落部分の補間に関しては、これまでいくつかの手法が提案されている。Ｄａｖｉｓらは、曲面を表す符号付距離場のボリュームデータが与えられたときに、ボリュームデータを平滑化フィルタで拡散させ、元の符号付距離場と合成することで、等値面で表された形状の補間を行う手法を提案した（非特許文献３）。
【０００６】
また、非特許文献４および非特許文献５では、符号付距離場の各ボクセルについて周囲のボクセルとの整合性をとることで、複雑な形状のシーンの補間を行うことに成功した。また、非特許文献６では、２次曲面を符号付距離場の穴に当てはめ、補間を行なう方法を提案した。
【０００７】
近年、急速にその性能が向上しているＧＰＵの演算性能を、グラフィックス以外の汎用計算に用いる手法が数多く提案されている。２次元輪郭からの３次元再構成にもＳＣ法が用いられるが、Ｎｉｔｓｃｈｋｅらは、この手法をＧＰＵで実装する手法を提案した（非特許文献７）。また、ＳｕｄらはＧＰＵを用いて、物体モデルからの距離場を高速に計算する方法を示し、物体同士の距離の判定に用いることを提案した（非特許文献８）。
【０００８】
更に、本願発明に関連する特許文献として、下記特許文献１乃至特許文献７がある。なお、以下の特許文献は、３次元形状の復元を行う点等では本願発明と共通するが、取り扱うデータが異なる等の明確な差違が、以下の特許文献に記載された技術と本願発明との間には存在する。
【０００９】
特許文献１では、ボリュームデータからの境界形状の復元方法が開示されており、具体的にはＣＴやＭＲＩへの適用が開示されている。
【００１０】
特許文献２では、複数の三次元形状データをボリューム方式で統合する場合に、立体物の薄肉部に関する形状の再現性を向上するための技術が開示されている。
【００１１】
特許文献３では、シルエットベースで形状復元されたボリュームデータを画像処理する事項が開示されている。
【００１２】
特許文献４では、複数の三次元形状データを統合するときに，スカラ値のボリューム（従来の意味でのボリューム）でなく，ベクトルポテンシャルと呼ばれる量を用いることで精度を上げる方法が開示されている。
【００１３】
特許文献５では、特許文献４でベクトルポテンシャルを用いて３次元データを統合するときに，ベクトルの方向を用いることで精度を上げる方法が開示されている。
【００１４】
特許文献６では、特許文献４で、統合前のデータが巨大なため、中間データを削減する手法が開示されている。
【００１５】
特許文献７では、ボリューム（符号付距離場）による形状統合方法を，大きく異なる形状データの接合に利用する発明が開示されている。
【非特許文献１】Ｂ．  Ｃｕｒｌｅｓｓ  ａｎｄ  Ｍ．  Ｌｅｖｏｙ：  “Ａ  ｖｏｌｕｍｅｔｒｉｃ  ｍｅｔｈｏｄ  ｆｏｒ  ｂｕｉｌｄ−ｉｎｇ  ｃｏｍｐｌｅｘ  ｍｏｄｅｌｓ  ｆｒｏｍ  ｒａｎｇｅ  ｉｍａｇｅｓ”、  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈ−ｉｃｓ、  ３０、  Ａｎｎｕａｌ  Ｃｏｎｆｅｒｅｎｃｅ  Ｓｅｒｉｅｓ、  ｐｐ．３０３−３１２（１９９６）．
【非特許文献２】Ｇ．  Ｔｕｒｋ  ａｎｄ  Ｍ．  Ｌｅｖｏｙ：  “Ｚｉｐｐｅｒｅｄ  ｐｏｌｙｇｏｎ  ｍｅｓｈｅｓ  ｆｒｏｍ  ｒａｎｇｅ  ｉｍａｇｅｓ”、  ＳＩＧＧＲＡＰＨ  ’９４：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２１ｓｔ  ａｎｎｕａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ｇｒａｐｈｉｃｓ  ａｎｄ  ｉｎｔｅｒａｃｔｉｖｅ  ｔｅｃｈｎｉｑｕｅｓ、  Ｎｅｗ  Ｙｏｒｋ、  ＮＹ、  ＵＳＡ、  ＡＣＭ  Ｐｒｅｓｓ、  ｐｐ．  ３１１−３１８  （１９９４）．
【非特許文献３】Ｊ．  Ｄａｖｉｓ、  Ｓ．  Ｒ．  Ｍａｒｓｃｈｎｅｒ、  Ｍ．  Ｇａｒｒ  ａｎｄ  Ｍ．  Ｌｅｖｏｙ：  “Ｆｉｌｌ−ｉｎｇ  ｈｏｌｅｓ  ｉｎ  ｃｏｍｐｌｅｘ  ｓｕｒｆａｃｅｓ  ｕｓｉｎｇ  ｖｏｌｕｍｅｔｒｉｃ  ｄｉ?ｕｓｉｏｎ．”、  ３ＤＰＶＴ、  ｐｐ．  ４２８−４３８  （２００２）．
【非特許文献４】Ｒ．  Ｓａｇａｗａ  ａｎｄ  Ｋ．  Ｉｋｅｕｃｈｉ：  “Ｔａｋｉｎｇ  ｃｏｎｓｅｎｓｕｓ  ｏｆ  ｓｉｇｎｅｄ  ｄｉｓ−ｔａｎｃｅ  ?ｅｌｄ  ｆｏｒ  ｃｏｍｐｌｅｍｅｎｔｉｎｇ  ｕｎｏｂｓｅｒｖａｂｌｅ  ｓｕｒｆａｃｅ”、  Ｐｒｏｃ．  ３ＤＩＭ  ２００３、  ｐｐ．  ４１０−４１７  （２００３）．
【非特許文献５】佐川、池内：“符号付距離場の整合化による形状モデル補間手法”、電子情報通信学会論文誌Ｄ、Ｊ８８−Ｄ２、３、ｐｐ．５４１−５５１（２００５）．
【非特許文献６】Ｔ．  Ｍａｓｕｄａ：  “Ｆｉｌｌｉｎｇ  ｔｈｅ  ｓｉｇｎｅｄ  ｄｉｓｔａｎｃｅ  ?ｅｌｄ  ｂｙ  ?ｔｔｉｎｇ  ｌｏｃａｌ  ｑｕａｄｒｉｃｓ”、  ３ＤＰＶＴ  ’０４：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ３Ｄ  Ｄａｔａ  Ｐｒｏ−ｃｅｓｓｉｎｇ、  Ｖｉｓｕａｌｉｚａｔｉｏｎ、  ａｎｄ  Ｔｒａｎｓｍｉｓｓｉｏｎ、  ２ｎｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  （３ＤＰＶＴ’０４）、  Ｗａｓｈｉｎｇｔｏｎ、  ＤＣ、  ＵＳＡ、  ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  Ｓｏｃｉｅｔｙ、  ｐｐ．  １００３−１０１０  （２００４）．
【非特許文献７】Ｃ．  ＮＩＴＳＣＨＫＥ、  Ａ．  ＮＡＫＡＺＡＷＡ  ａｎｄ  Ｈ．  ＴＡＫＥＭＵＲＡ：  “Ｒｅａｌ−ｔｉｍｅ  ｓｐａｃｅ  ｃａｒｖｉｎｇ  ｕｓｉｎｇ  ｇｒａｐｈｉｃｓ  ｈａｒｄｗａｒｅ”、画像の認識・理解シンポジウム（  ＭＩＲＵ）２００６、  ｐｐ．  ９２８−９３３  （２００６）．
【非特許文献８】Ａ．  Ｓｕｄ、  Ｎ．  Ｇｏｖｉｎｄａｒａｊｕ、  Ｒ．  Ｇａｙｌｅ  ａｎｄ  Ｄ．  Ｍａｎｏｃｈａ：  “Ｉｎ−ｔｅｒａｃｔｉｖｅ  ３ｄ  ｄｉｓｔａｎｃｅ  ?ｅｌｄ  ｃｏｍｐｕｔａｔｉｏｎ  ｕｓｉｎｇ  ｌｉｎｅａｒ  ｆａｃｔｏｒ−ｉｚａｔｉｏｎ”、  ＳＩ３Ｄ  ’０６：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００６  ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｉｎｔｅｒａｃｔｉｖｅ  ３Ｄ  ｇｒａｐｈｉｃｓ  ａｎｄ  ｇａｍｅｓ、  Ｎｅｗ  Ｙｏｒｋ、  ＮＹ、  ＵＳＡ、  ＡＣＭ  Ｐｒｅｓｓ、  ｐｐ．  １１７−１２４  （２００６）．
【非特許文献９】Ｗ．  Ｅ．  Ｌｏｒｅｎｓｅｎ  ａｎｄ  Ｈ．  Ｅ．  Ｃｌｉｎｅ：  “Ｍａｒｃｈｉｎｇ  ｃｕｂｅｓ：  Ａ  ｈｉｇｈ  ｒｅｓｏｌｕｔｉｏｎ  ３ｄ  ｓｕｒｆａｃｅ  ｃｏｎｓｔｒｕｃｔｉｏｎ  ａｌｇｏｒｉｔｈｍ”、  ＳＩＧＧＲＡＰＨ  ’８７：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １４ｔｈ  ａｎｎｕａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  ｇｒａｐｈｉｃｓ  ａｎｄ  ｉｎｔｅｒａｃｔｉｖｅ  ｔｅｃｈｎｉｑｕｅｓ、  Ｖｏｌ．  ２１、  Ｎｅｗ  Ｙｏｒｋ、  ＮＹ、  ＵＳＡ、  ＡＣＭ  Ｐｒｅｓｓ、  ｐｐ．  １６３−１６９  （１９８７）．
【特許文献１】特開２００５−０３８２１９号公報
【特許文献２】特開２００３−０５８９０４号公報
【特許文献３】特開２００２−３６６９３４号公報
【特許文献４】特開２０００−１１１３２４号公報
【特許文献５】特開２００２−２３６９３６号公報
【特許文献６】特開２００２−０５６３８０号公報
【特許文献７】特開２００１−０８４４０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、ＳＣ法（非特許文献１）では、まず全てのボクセルをＵｎｓｅｅｎ（未観測）の状態に初期化し、各距離画像から参照される物体の表面と視点位置の間に存在するボクセルをＥｍｐｔｙ（物体外）であるとして「削る」（この方法は、２次元輪郭からの３次元再構成に用いられるＳＣ法とは違い、距離画像上でデータの存在する領域について、表面の手前のボクセルを削り、観測されない周囲の領域についてはボクセルを残す）。この手法では、物体表面として観測された部分の手前の部分しかボリューム空間を削らないので、実際には物体の外部であるボクセルがＵｎｓｅｅｎ（未観測）として残存し、その部分とＥｍｐｔｙの領域との境界に余分なメッシュが発生する。十分な数の視点位置からの距離画像を統合する場合には、このような余分なメッシュは対象物体のメッシュと連結せず、容易に取り除くことが出来る。しかし、視点の数が少ない場合や、物体の特定の方向からの観測が行われない場合には、余分なメッシュが物体と連結してしまうことが多い。このことは、多くの応用において問題となる。
【００１７】
また、上記した非特許文献３に記載された技術では、後の実験で示すように、この手法は、等値面の拡散が正しくない方向に起こり、望ましい結果が得られない場合がある。特に、形状の欠落部分が、観測方向に対する自己オクルージョンによって生じている場合、補間の失敗が起こりやすい。
【００１８】
また、非特許文献４乃至非特許文献６に記載された技術では、ユークリッド距離による符号付距離場が利用されており、高い品質の穴埋めが可能であるが、計算コストが高い。
【００１９】
更にまた、複数の３次元画像の統合は、一般的にはパーソナルコンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で行われるが、３次元画像の統合には膨大な計算量が必要とされるため、この統合に長時間かかる問題もあった。
【００２０】
本発明は、上記問題を鑑みて成されたものである。本発明の主たる目的は、複数の３次元形状データを高い精度で統合できる画像処理装置等を提供することにある。
【課題を解決するための手段】
【００２１】
本発明は、物体の形状を表す複数の形状データを統合する画像処理装置であり、３次元空間を分割した単位であるボクセルが表す３次元位置と前記形状データとを入力とし、前記３次元位置と前記形状データとの符号付距離である第１符号付距離の計算を、前記形状データ毎に行う第１計算部と、前記ボクセルが表す３次元位置と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記ボクセルが、前記形状の表面付近にあるか、外側にあるか、あるいはそれらのいずれとも決定できないかを分類する第２計算部と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記いずれとも決定できないと分類されたボクセルが前記形状の内側にあるか外側にあるかを推定する第３計算部と、前記表面付近と分類されたボクセルの３次元位置と、前記内側に分類または推定されたボクセルと前記外側に分類または推定されたボクセルとの境界部分に位置するボクセルの３次元位置とを、前記形状の表面位置として算出する第４計算部と、を具備することを特徴とする。
【００２２】
本発明は、形状を表す複数の形状データを統合する画像処理方法であり、３次元空間を分割した単位であるボクセルが表す３次元位置と前記形状データとを入力とし、前記３次元位置と前記形状データとの符号付距離である第１符号付距離の計算を、前記形状データ毎に行う第１ステップと、前記ボクセルが表す３次元位置と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記ボクセルが、前記形状の表面付近にあるか、外側にあるか、あるいはそれらのいずれとも決定できないかを分類する第２ステップと、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記いずれとも決定できないと分類されたボクセルが前記形状の内側にあるか外側にあるかを推定する第３ステップと、前記表面付近と分類されたボクセルの３次元位置と、前記内側に分類または推定されたボクセルと前記外側に分類または推定されたボクセルとの境界部分に位置するボクセルの３次元位置とを、前記形状の表面位置として算出する第４ステップと、を具備することを特徴とする。
【００２３】
本発明のプログラムは、形状を表す複数の形状データを統合する画像処理装置に、３次元空間を分割した単位であるボクセルが表す３次元位置と前記形状データとを入力とし、前記３次元位置と前記形状データとの符号付距離である第１符号付距離の計算を、前記形状データ毎に行う第１機能と、前記ボクセルが表す３次元位置と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記ボクセルが、前記形状の表面付近にあるか、外側にあるか、あるいはそれらのいずれとも決定できないかを分類する第２機能と、前記複数の形状データまたは前記第１符号付距離のいずれか一方あるいは両方から、前記いずれとも決定できないと分類されたボクセルが前記形状の内側にあるか外側にあるかを推定する第３機能と、前記表面付近と分類されたボクセルの３次元位置と、前記内側に分類または推定されたボクセルと前記外側に分類または推定されたボクセルとの境界部分に位置するボクセルの３次元位置とを、前記形状の表面位置として算出する第４機能と、を実行させることを特徴とする。
【００２４】
本発明は、ＧＰＵの計算機能を用いて、入力された複数の形状データを統合する画像処理装置であり、前記ＧＰＵの記憶部の一部であると共に、前記形状データが格納される第１記憶領域と、前記ＧＰＵの記憶部の一部であると共に、３次元空間を分割した要素であるボクセルの情報が格納される第２記憶領域と、前記ＧＰＵの計算機能の一部であると共に、前記ボクセルが表す３次元位置と前記形状データとの符号付距離である第１符号付距離を、前記第１記憶領域から読み出した前記形状データの各々に対して計算する第１計算部と、前記ＧＰＵの計算機能の一部であると共に、前記ボクセルについて、前記形状データの各々に対して算出された前記第１符号付距離を統合して第２符号付距離を計算し、前記第２符号付距離を前記第２記憶領域に格納する第２計算部と、を具備することを特徴とする。
【００２５】
本発明は、ＧＰＵの計算機能を用いて、入力された複数の形状データを統合する画像処理方法であり、前記ＧＰＵの記憶部であると共に前記形状データが格納される第１記憶領域と、３次元空間を分割した要素であるボクセルの情報が格納される第２記憶領域とを確保する第１ステップと、前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記ボクセルが表す３次元位置と前記形状データとの符号付距離である第１符号付距離を、前記第１記憶領域から読み出した前記形状データの各々に対して計算する第２ステップと、前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記形状データの各々に対して算出された前記第１符号付距離を統合して第２符号付距離を計算し、前記第２符号付距離を前記第２記憶領域に格納する第３ステップと、を具備することを特徴とする。
【００２６】
本発明のプログラムは、ＧＰＵの計算機能を用いて、入力された複数の形状データを統合する画像処理装置に、前記ＧＰＵの記憶部であると共に前記形状データが格納される第１記憶領域と、３次元空間を分割した要素であるボクセルの情報が格納される第２記憶領域とを確保する第１機能と、前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記ボクセルが表す３次元位置と前記形状データとの符号付距離である第１符号付距離を、前記第１記憶領域から読み出した前記形状データの各々に対して計算する第２機能と、前記ＧＰＵの計算機能により、前記第２記憶領域の前記ボクセルについて、前記形状データの各々に対して算出された前記第１符号付距離を統合して第２符号付距離を計算し、前記第２符号付距離を前記第２記憶領域に格納する第３機能と、を実行させることを特徴とする。
【発明の効果】
【００２７】
本発明では、符号付距離場において、未観測のボクセルについても、物体の内側か外側かを判定するための、ベイズ推定に基づいた内外判定関数を使用したので、距離画像が少ない場合においても安定して統合・穴埋めすることができる。これにより、ｓｐａｃｅ  ｃａｒｖｉｎｇ法を改良することができる。更に、また、アクティブステレオ法によって得られる距離画像を用いることで、この判定関数の精度を向上させることもできる。
【００２８】
更に本発明では、３次元画像の統合する際の符号付距離場および内外判定関数の計算にＧＰＵを使用したので、これらの計算を極めて高速に行うことができる。
【発明を実施するための最良の形態】
【００２９】
先ず、本発明の画像処理装置等の概要を説明する。本発明は、概略的には、ＳＣ法において未観測とのみ定義されるボクセルを、さらに「物体内部」と「物体表面」に分類するアプローチにより物体の統合及び補間の精度向上を実現するものである。
【００３０】
これを実現するために本発明では以下２つのアプローチをとる。
（１）ベイズ推定法に基づいた、未観測ボクセルを分類するための判別関数の定義。
（２）計測結果がアクティブステレオ法によるものである場合、光源位置情報の利用。
【００３１】
これらのアプローチは、（１）だけでも利用可能であるが、両方併用することで効果を増す。本発明では、ＳＣ法に見られるような、物体の外の空間の大きな「削り残し」は発生しない。また、すべてのボクセルは、「物体内部」「物体外部」「物体表面」に分類されるため、必ず閉じた形状が得られる。
【００３２】
一方、近年、大量の計算を高速に行うための手法としてＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いる手法が注目されている。ＧＰＵは通常グラフィックスの計算に用いられるプロセッサであるが、その動作をプログラムで記述することが可能になってきており、高速なＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ／Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）の並列プロセッサとして利用することができる。符号付距離場の作成やボクセルの分類に用いられる評価式は、ＧＰＵによって実装することが可能であり、処理効率を大幅に高めることが出来る。この事項は、第３および第４の実施の形態として後述する。
【００３３】
＜第１の実施の形態：画像処理装置の構成＞
図１を参照して、本実施の形態に係る画像処理装置１０の構成を説明する。
【００３４】
本実施の形態の画像処理装置１０は、画像処理部１２と、制御部１４と、入力部１６と、記憶部１８と、表示部２０と、操作部２２とを主要に具備する。画像処理装置１０の全体の概略的機能は、入力された複数の３次元形状データを統合して１つの３次元形状データを生成することにある。また、具現化された画像処理装置１０としては、所定の機能を実行するアプリケーション（プログラム）がインストールされたパーソナルコンピュータ等のコンピュータでも良いし、所定の機能を実行するように構成された画像処理専用の機器として構成されても良い。更にまた、画像処理装置１０を構成する各部位は、バスを経由して相互に電気的に接続される。
【００３５】
画像処理部１２は、主たる画像処理の機能を果たす部位であり、符号付距離算出部１２Ａと、統合部１２Ｂと、分類部１２Ｃと、推定部１２Ｄと、判定部１２Ｅと、等値面形成部１２Ｆとを含む。
【００３６】
符号付距離算出部１２Ａは、入力された各々の３次元形状データ（距離画像）に対して、ボリュームの各ボクセルの符号付距離（第１符号付距離）を算出する部位である（請求項１の第１計算部）。
【００３７】
統合部１２Ｂは、符号付距離算出部１２Ａにて各々の形状データに関して算出された符号付距離を加算して、統合された符号付距離（第２符号付距離）を算出する部位である（請求項２の第５計算部）。
【００３８】
分類部１２Ｃは、各ボクセルが観測された物体形状の外側にあるか、表面近くにあるか、それ以外かを分類する部位である（請求項１の第２計算部）。
【００３９】
推定部１２Ｄは、入力された複数の形状データに基づいて、各ボクセルが、観測された物体形状の内側にあるか外側にあるかを推定する部位である（請求項１の第３計算部）。
【００４０】
判定部１２Ｅは、上記した分類部１２Ｃによる分類の結果および推定部１２Ｄの推定の結果に基づいて、各ボクセルが形状の内側にあるか、外側にあるか、または、表面近くかを判定する部位である。そして、ボクセルが形状の表面近くであると判定された場合は、そのボクセルの第２符号付距離を記憶部１８に出力する（請求項１の第４計算部）。
【００４１】
等値面形成部１２Ｆは、判定部１２Ｅから出力された第２符号付距離に基づいて等値面を生成して、メッシュモデルを形成する部位である（請求項１２の第６計算部）。
【００４２】
制御部１４は、画像処理装置１０全体（画像処理部１２、入力部１６、記憶部１８、表示部２０）の動作を制御している部位である。
【００４３】
入力部１６は、外部から画像処理装置１０に情報が入力される部位である。本実施の形態では、複数の３次元形状データが入力部１６から入力される。
【００４４】
記憶部１８は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）に代表される固定式の記憶ディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）やＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等の着脱式記憶ディスク、固定式あるいは着脱式の半導体メモリ等である。本実施の形態では、記憶部１８には、処理前の複数の３次元形状データ、この複数の３次元形状データを統合することにより生成された３次元形状データが記憶される。
【００４５】
更に、記憶部１８には、下記する画像処理方法を実行するためのプログラムが格納される。このプログラムは、使用者が操作部２２を操作することにより呼び出されて、上記した各部位の機能を実行させる。具体的には、入力された３次元形状のデータを統合して、新たな３次元画像のデータを生成するように、プログラムは各部位を動作させる。
【００４６】
表示部２０は、例えば液晶ディスプレイ、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ビデオプロジェクタであり、入力された３次元形状データや、統合された３次元形状データに基づく画像が表示される。
【００４７】
操作部２２は、例えば、キーボードやマウスであり、使用者がこの操作部２２を操作することにより、画像処理装置１０は複数の３次元形状データを統合する。
【００４８】
以上が画像処理装置１０の構成であるが、上記した構成要素の他にも例えば、３次元形状データを取得するカメラ等の撮像手段等が追加されても良い。
【００４９】
ここで、上記した各部位の処理は、逐次的にボリュームの全ての各ボクセルに対して繰り返して行われる。更には、上記した各部位の処理を、独立してボリュームの全てのボクセルに対して繰り返し行っても良い。
【００５０】
＜第２の実施の形態：画像処理方法＞
本実施の形態では、複数の３次元形状データを統合する方法を説明する。
【００５１】
図２を参照して、本形態の画像処理方法は、複数の３次元形状データを獲得するステップＳ１０と、各々の３次元形状データについて符号付距離を算出するステップＳ１１（第１ステップ）と、複数の３次元形状データの符号付距離を統合して、各ボクセルの符号付距離場を統合するステップＳ１２（第２ステップ）と、各ボクセルが形状の外側にあるか、表面近くにあるか、それ以外かを分類するステップＳ１３（第３ステップ）と、後述する判別関数に基づいてボクセルの物体の内外を推定するステップＳ１４（第４ステップ）と、ステップ１３およびステップＳ１４の結果からボクセルが形状の内側にあるか、外側にあるか、表面近くかを判定するステップＳ１５（第５ステップ）と、統合された符号付距離場から等値面を生成する（即ちメッシュモデルを形成する）ステップＳ１６とを含む。これら各ステップを以下にて詳述する。
【００５２】
ステップＳ１０：データの獲得
本ステップでは、３次元計測を行い、この計測により得られた画像から距離画像を生成する。３次元形状データ形式としては距離画像以外でも、ポリゴンや、点群、符号付距離場、ボリュームデータ等でも良い。
【００５３】
３次元計測としては、レーザレンジファインダのような非接触方式のものや接触式のスキャナなどを用いることが出来る。さらに、プロジェクタとカメラを用いたパターンコード化法等のアクティブステレオ法を用いれば、以下に述べる理由から精度向上が期待できる。この方法では、プロジェクタから対象物体に対してグレイコードと呼ばれる光の縞パターンを投影し、この様子をカメラで撮影する。この作業を行うことで、距離画像が得られる。
【００５４】
ステップＳ１１：符号付距離の算出
符号付距離場とは、三次元空間の各ボクセルについて、そのボクセルから物体表面までの距離をボクセル値の絶対値で、そのボクセルが物体外部または内部のいずれであるかをボクセル値の符号で表したスカラー場である（本形態では、内部を負、外部を正とする）。
【００５５】
符号付距離場をＤ（ｘ）と表すと、観測される物体の表面はＤ（ｘ）＝０を満たす等値面で表すことができる。そのボクセルから形状データまでの距離には、ユークリッド距離（ボクセル中心から形状データまでの最短距離）を使うことが考えられる。簡易的な手法としては、ユークリッド距離により符号付距離場を作成することは計算量が多いため、視線距離（計測における視点位置からの視線上での距離）などを用いることもできる。この場合、視線距離計算は一般のグラフィックハードウェアで実装可能であり非常に高速に処理できることと、本形態の手法により精度面の問題を解消できることから、本形態では、視線距離による符号付距離場を用いる。
【００５６】
具体的な、ボクセルから形状データまでの符号付距離の算出方法は、先ず、得られた距離画像から、カメラのパラメータを用いて座標系をオブジェクト座標からカメラ座標に変換する。
【００５７】
そして、距離画像の視点位置からボクセルまでの距離（ＶｏｘｅｌＤｉｓｔａｎｃｅ）を算出する。また視点位置から形状データまでの距離（ＩｍａｇｅＤｉｓｔａｎｃｅ）も算出する。そして、ＶｏｘｅｌＤｉｓｔａｎｃｅとＩｍａｇｅＤｉｓｔａｎｃｅとの差をとることにより、符号付距離が算出される。
【００５８】
ステップＳ１２：符号付距離の統合
本ステップでは、複数の３次元形状データの符号付距離場を一つに統合する。
【００５９】
複数の３次元形状データを統合して符号付距離場を構築する手法はいくつか提案されている。本ステップでは、画像バッファのあるボクセルｖの符号付距離場Ｄ（ｖ）は、各シーンの距離画像から得られた符号付距離場ｄ１（ｖ）、ｄ２（ｖ）、…、ｄｎ（ｖ）にそれぞれの重みｗｉ（ｖ）を乗じたものを累積して、以下の式により統合された符号付距離場を求める。
【００６０】
【数１】
0005120926.tif 000002
重みｗｉ（ｖ）は各距離値の精度を考慮して決定される。この値は、カメラからの視線方向と物体表面の法線方向のなす角によって決めることもできる。また、ｄｉ（ｖ）の絶対値がある閾値より大きい場合、そのボクセルは対象となる距離画像の表面からは遠いので、累積の計算には加えないでも良い。
【００６１】
他の符号付距離の統合方法としては、重みを使わず、単に各距離画像について得られた符号付距離を加算しても良い。
【００６２】
ステップＳ１３：ボクセルの分類
本ステップでは、各々のボクセルを、各形状データ（距離画像）について算出された符号付距離を参照して分類する。
【００６３】
図３を参照して、上記非特許文献１では、ボリューム空間の全てのボクセルをＥｍｐｔｙ（物体外部）、ＮｅａｒＳｕｒｆａｃｅ（表面付近）、Ｕｎｓｅｅｎ（未観測で、物体内部とも、外部とも、表面付近とも分類できない）の三つのいずれかの状態に場合分けする。そして、ＵｎｓｅｅｎとＥｍｐｔｙの境界にメッシュを生成することで形状の補間を行う。
【００６４】
ここで、例えば核磁気共鳴画像法（ＭＲＩ）やコンピュータ断層撮影（ＣＴ）などを用いて、ボクセルをＳｏｌｉｄ（物体内部）に分類すれば、Ｕｎｓｅｅｎ領域が減りなお都合が良い。
【００６５】
この方法の問題点は、削られなかったＵｎｓｅｅｎのボクセルには、
（１）物体の外部であって、どの距離画像においても観測値のある点の視線上に存在しないボクセル、
（２）物体の外部であって、ある距離画像において観測値のある点の視線上に存在するが、オクルージョンにより物体外部と判定されないボクセル、
（３）物体の内部、の３つの場合が存在するのに、これらを区別しないことにある。本形態の手法では、Ｕｎｓｅｅｎのボクセルについて、物体の外部、内部を判定するための判別関数をステップＳ１４で定義することでこの問題を解消する。
【００６６】
図４を参照して、本形態におけるボクセルのクラス分けについて述べる。あるボクセルについて、一つの距離画像からの符号付距離から、そのボクセルが物体の内部にあるか、外部にあるかについて、確定的に得られる情報には、以下の２種類がある。
【００６７】
ＮｅａｒＳｕｒｆａｃｅ（表面付近）：符号付距離の絶対値が指定した閾値以下の場合、対象のボクセルは“表面付近”とクラス分けされ、その符号付距離場を保持する（図４のｖ１の場合）。この場合、対象ボクセルは、表面近くにあると断定できる。
【００６８】
Ｅｍｐｔｙ（物体外部）：符号付距離の絶対値が閾値より大きくその符号が正の場合、対象のボクセルは物体とカメラの間に存在し、そこは物体の外部であると断定できるため“物体外部”とクラス分けする（図４のｖ２の場合）。
【００６９】
複数の距離画像から得られる情報を統合する際、あるボクセルについて、それぞれの距離画像から得られる情報は異なる。この時、ＮｅａｒＳｕｒｆａｃｅとなる距離画像が一つでもある場合、ボクセルのクラスもＮｅａｒＳｕｒｆａｃｅとする。そうでない場合、Ｅｍｐｔｙとなる距離画像が一つでもあればボクセルのクラスもＥｍｐｔｙとする。
【００７０】
上記の２種類の分類からは、ボクセルと物体の内外関係が確定的に決定できるが、上記以外の場合には、内外関係を確定的に決めることはできない。このような場合は、次のステップＳ１４で述べる判別関数によって内外関係を決定する。
【００７１】
本ステップにおける内外関係の判定は、上に挙げたように符号付距離から得られるが、形状データを入力として、判定を行なっても良い。
【００７２】
ステップＳ１４：ボクセルのクラスの推定
ステップＳ１３で、ボクセルと物体の内外関係が確定的に決定できない場合でも、ボクセルと距離画像との符号付距離からは以下の情報が得られる。
【００７３】
Ｏｃｃｌｕｄｅｄ（遮蔽領域）：符号付距離場の絶対値が閾値より大きくその符号が負の場合は、一概に外部／内部の断定をすることはできない。その場合、対象のボクセルのクラスを一時的にＯｃｃｌｕｄｅｄとし、後で物体外部／内部のどちらである可能性が高いかという推定を行う。推定の方法は後述する（図４のｖ３の場合）。
【００７４】
ＮｏＤａｔａ（データ欠損）：距離画像の欠損部分のため符号付距離場が得られないとき、外部／内部の判断をすることはできない。この場合、対象のボクセルのクラスを一時的にＮｏＤａｔａとし、後で物体内部、外部のいずれかであるかについて推定を行う（図４のｖ５の場合）。
【００７５】
図４のｖ４のように、対象となるボクセルが距離画像の画角の外にある場合、上記の分類のうち、ＥｍｐｔｙかＮｏＤａｔａとして取り扱うことができる。このうちのどちらにするかは、アプリケーションによって変えることができる。多くのアプリケーションでは、距離画像の画角外はＥｍｐｔｙとしてよいが、大きな物体をズームして計測する場合などは、画角外はＮｏＤａｔａとして取り扱うとよい。
【００７６】
距離画像から得られる情報が、Ｏｃｃｌｕｄｅｄ及びＮｏＤａｔａしかない場合には、そのボクセルが物体の内部であるか外部であるかは判断できない。こうしたボクセルに対しては、後述する判別関数によってそのボクセルが物体の内部であるか外部であるかを推定する。物体の外部であると判定されたボクセルには、Ｅｍｐｔｙのクラスを、内部であると判定されたボクセルにはＳｏｌｉｄ（物体内部）のクラスを割り当てる。以下では、これを実現する判別関数として、正規分布に関するベイズ推定にもとづき定義される関数を述べる。
【００７７】
物体の外側で正、内側で負となるようなスカラー値を考え、このスカラー値の予測分布をベイズ推定によって決定することを考える。データが無い段階での予測分布（主観確率の分布）は一様分布であるとし、各距離画像から計算されるデータから得られる観測値によって、ベイズの定理に基づいて予測分布を変化させる。正規分布に関するベイズ推定では、観測値のモデル分布を、平均値オｈが観測値に等しく、標準偏差σｈが観測値の精度の逆数になるような正規分布Ｎ（オｈ、σｈ）として表すことが多い。本形態でもこのような方法によって、ボクセルが物体の内側あるいは外側のどちらにあるかに関するｈｅｕｒｉｓｔｉｃｓを表現する。具体的には、オｈの符号によって、ｈｅｕｒｉｓｔｉｃｓによる物体の内外についての推定を、１／σｈによってそのｈｅｕｒｉｓｔｉｃｓの確信度を表すことにする。
【００７８】
対象ボクセルが、ある距離画像についてＯｃｃｌｕｄｅｄである場合、そのボクセルは観測位置から見て表面の後方にある。ボクセルの表面からの距離の絶対値（Ｄｉｓｔで表す）が比較的小さい場合、このボクセルは物体内部にある可能性が高い。逆に表面から遠くなる（Ｄｉｓｔが大きい）と、物体内部にある可能性は低くなる。そこで、対象ボクセルが物体内にある確信度を１／Ｄｉｓｔ程度であると考え、ｈｅｕｒｉｓｔｉｃｓに対応する分布をＮ（−１、Ｄｉｓｔ）で表現する。
【００７９】
また、対象ボクセルが、ある距離画像についてＮｏＤａｔａである場合、そのボクセルは物体の外である場合と、物体の内側でありながら、物体表面が何らかの理由で観測されなかった場合とがある。実際のデータにおいては、距離画像上の画素においてデータが存在しない領域は、物体が存在しないことが多い。このｈｅｕｒｉｓｔｉｃｓから、ボクセルは物体外にあり、その確信度は定数程度であると考え、ｈｅｕｒｉｓｔｉｃｓに対応する分布をＮ（１、Ｃｏｎｓｔ）で表現する。ここで、Ｃｏｎｓｔはユーザが決めるパラメータである。実験によれば、このＣｏｎｓｔは、物体の最小の厚み程度に設定すると良いようである。
【００８０】
正規分布に関するベイズ推定においては、観測で得られたｈｅｕｒｉｓｔｉｃｓに対応する分布Ｎ（オｈ、σｈ）により、予測分布Ｎ（オ、σ）は以下のように更新される。
【００８１】
【数２】
0005120926.tif 000003
これを全ての距離画像について行い、最終的な予測分布の平均値オの符号が正であれば対象のボクセルを“物体外部”に、負であれば“物体内部”にクラス分けする。オｈが１あるいは−１のどちらかであることを考慮して計算を行なうと、最終的なオの具体的な形が計算できるので、これをボクセルｖについての判別関数Ｃ（ｖ）と見なし、Ｃ（ｖ）の符号で物体の内外を判定することにする。具体的なＣ（ｖ）は、以下のような式になる。
とする。
【００８２】
【数３】
0005120926.tif 000004
【００８３】
【数４】
0005120926.tif 000005
ただし、Ｏｃｃ（ｉ、ｖ）、Ｎｏｄ（ｉ、ｖ）は、ボクセルｖについて距離画像ｉから得られる情報がそれぞれＯｃｃｌｕｄｅｄ、Ｎｏｄａｔａであるかどうかを、ｄｉ（ｖ）はボクセルと距離画像ｉ表面との符号付視線距離を表す。
【００８４】
以上のステップを実行させることにより、クラス分け（ボクセルの内外の判定）された統合結果が得られる。
【００８５】
上記判別関数の計算は、そのボクセルの符号付距離からの分類によって、その分類がＥｍｐｔｙ（物体外部）でもＮｅａｒＳｕｒｆａｃｅ（表面付近）でもないことが判明してから行なっても良いが、すべてのボクセルについて計算しても良い。後述する第３の実施の形態において述べている実装では、符号付距離の値にかかわらず、すべてのボクセルについて判別関数が計算されている。これは、全てのボクセルを区別無く並列処理するＧＰＵでの実装に好適である。
【００８６】
また、本ステップについて述べた判別関数としては、ベイズ推定以外の推定手法を使っても良い。例えば、単に、３次元空間中の特定の点からの距離によって、物体の内外を決めても良い。また、判別関数の入力としては、上記のように符号付距離から求めても、形状データを利用して求めても良い。
【００８７】
ステップＳ１５：ボクセルの判定
本ステップでは、ステップＳ１３でのボクセルの分類と、ステップＳ１４での推定に基づいて、すべてのボクセルを物体の内部、外部、あるいは表面付近のいずれかであると判定する。このとき、ステップＳ１３でのボクセルの分類は、ステップＳ１４での推定結果に優先する。例えば本形態においては、ステップＳ１３でＥｍｐｔｙ（物体外部）、ＮｅａｒＳｕｒｆａｃｅ（表面付近）と判定されたボクセルは、そのままＥｍｐｔｙ（物体外部）、ＮｅａｒＳｕｒｆａｃｅ（表面付近）とし、そうでないボクセルについては、ステップＳ１４の判別関数による内外判定によってＥｍｐｔｙ（物体外部）、Ｓｏｌｉｄ（物体内部）と判定される。この処理を、すべてのボクセルについて行うと、ボリューム内のボクセルのクラスは、Ｓｏｌｉｄ（物体内部）、ＮｅａｒＳｕｒｆａｃｅ（表面付近）、Ｅｍｐｔｙ（物体外部）の３種類の何れかに分類される。
【００８８】
これによって、ＮｅａｒＳｕｒｆａｃｅ（表面付近）、及び、Ｓｏｌｉｄ（物体内部）とＥｍｐｔｙ（物体外部）の境界部分として、統合された形状が得られる。Ｓｏｌｉｄ（物体内部）とＥｍｐｔｙ（物体外部）の境界部分を求めるには、Ｓｏｌｉｄのボクセルと隣り合ったＥｍｐｔｙのボクセルを抽出するか、逆にＥｍｐｔｙと隣り合ったＳｏｌｉｄのボクセルを抽出すればよい。
【００８９】
より精密にポリゴンメッシュを作成するためには、ＮｅａｒＳｕｒｆａｃｅ（表面付近）のボクセルに、符号付距離を格納し、後のステップＳ１６で述べるように等値面を生成すればよい。このためには、ＮｅａｒＳｕｒｆａｃｅの領域について、通常の符号付距離場（統合された符号付距離）を記憶部に記憶する。また、ボクセルのクラスがＳｏｌｉｄの領域には、負の固定値を記憶させる。更に、ボクセルのクラスがＥｍｐｔｙの領域には、正の固定値を割り当てて記憶させる。ここで、正負の固定値の絶対値は等しくする。
【００９０】
ステップＳ１６：等値面の生成
本ステップでは、生成された符号付距離場の等値面を生成することで、統合されたポリゴンメッシュを生成する。統合された符号付距離場Ｄ（ｘ）においては、Ｄ（ｘ）＝０を満たす等値面が、統合された形状を表している。統合結果をメッシュモデルとして取り出すためには、ボリュームデータから等値面を生成する手法であるマーチングキュースブス法（非特許文献９記載）が適用可能である。
【００９１】
ここで、上記した各部位の処理は、逐次的にボリュームの全ての各ボクセルに対して繰り返して行われる。更には、上記した各部位の処理を、独立してボリュームの全てのボクセルに対して繰り返し行っても良い。
【００９２】
更に、ボリューム全体のうち、等値面形状にかかわる部分は、一部のみである。そのため、最初に、入力された形状データよりも荒い解像度（第１解像度）で上記のアルゴリズムの計算を行う。次に、得られたボクセルのうち、ＮｅａｒＳｕｒｆａｃｅと判定された領域、あるいは物体の外部と内部が接する領域のみについて、第１解像度よりも細かい解像度（第２解像度）で処理（レンダリング）を行うと、処理を高速化することができる。後に述べる実験（第５の実施の形態）では、本形態の手法の実装に、このような階層的手法による高速化を用いた。
【００９３】
＜アクティブステレオ法への適用＞
アクティブステレオ法は、密な３次元形状を得るための代表的な方法の一つである。アクティブステレオ法では、カメラのほかに光源が利用される。このため光源からのＯｃｃｌｕｓｉｏｎにより、データ欠損が起こる場合があるが、逆にデータが測定されている場合には、その点と光源の間に物体が存在しないことの証拠となる。
【００９４】
そこで本形態では、アクティブステレオ法における光源を視点とする仮想カメラからの距離画像を生成し、これを利用する。あるシーンについてカメラおよび光源の二つの位置をそれぞれ視点位置とした距離画像（以下、カメラ距離画像・光源距離画像とする）を参照することを考える。図５で、光源からの光が遮られ欠損となった部分からは、物体表面までの距離を得ることはできない。しかし光源距離画像を参照することによって、表面からの距離を得ることができる。またそれ以外の部分でも、一つの測定結果からボクセルのクラス分けをＮｅａｒＳｕｒｆａｃｅあるいはＥｍｐｔｙにすることができる範囲が広くなり、そうでない場合でも上記した推定をより適切に行うことが可能となる。
【００９５】
カメラ距離画像の全ての画素について、その３次元位置を計算し、これを光源位置に仮想カメラがあると仮定し、投影することで光源距離画像を作成することができる。
【００９６】
ボクセルの分類は、カメラからの距離画像のみを利用する場合と大体同じであるが、ボクセルのクラス分けの優先順位は、カメラ距離画像でのＮｅａｒＳｕｒｆａｃｅ、光源距離画像でのＮｅａｒＳｕｒｆａｃｅ、カメラ距離画像でのＥｍｐｔｙ、光源距離画像でのＥｍｐｔｙの順とする。また、ボクセルｖについて物体の内外を判定するための判別関数Ｃ（ｖ）は、式（４）の関数を拡張し、
【００９７】
【数５】
0005120926.tif 000006
【００９８】
【数６】
0005120926.tif 000007
とする。ただし、Ｏｃｃ、Ｎｏｄ、ｄｉ（ｖ）の上付記号ｃ、ｌは、それぞれカメラ及び光源距離画像に関する量であることを示す。
【００９９】
＜第３の実施の形態：判別処理へのＧＰＵの適用＞
本形態では、上記した判別関数を用いてボクセルの内外を推定するステップを含む形状データの統合を、ＧＰＵを利用して行った場合を説明する。なお、この処理のうち符号付き距離値のＧＰＵ処理に関しては、第４の実施の形態として後で詳しく述べる。
【０１００】
上記した統合、補間アルゴリズムは、ＧＰＵを利用することで、高速に実行することができる。ＧＰＵは二次元画像単位の出力しか行なえないため、符号付き距離場のボリュームをスライス単位で計算する。各スライスをフレームバッファとしてレンダリングすることで符号付き距離値Ｄ（ｖ）および内外判定の判別関数Ｃ（ｖ）を計算する。
【０１０１】
レンダリングは、プログラマブルシェーダを用いたマルチパスレンダリングによって行う。各パスは、一つの距離画像についてのレンダリングであり、結果は、ブレンディング機能を用いて加算する。距離画像ｉについてのレンダリングを行う場合、レンダリングの準備として、ｉ番目のカメラ距離画像と、対応する光源距離画像を浮動小数点テクスチャに設定する。そして、フレームバッファ全体に一つの４角形を描画する命令を発行することで、各画素についてピクセルシェーダの処理が実行される。ピクセルシェーダは、距離画像とボクセル位置を入力値としてｄｉ（ｖ）ｗｉ（ｖ）、ｃｉ（ｖ）を計算し、フレームバッファに加算する。
【０１０２】
この処理を、カメラ距離画像、光源距離画像を切り替えながら、測定形状の数だけ繰り返す（アクティブステレオ法の場合）。最後に、符号付距離の重み付和Ｄ（ｖ）と判別関数値Ｃ（ｖ）を持つフレームバッファをＣＰＵ上へ読み戻し、距離値の有無と推定結果を統合し、符号付距離場のスライスを計算する。
【０１０３】
距離画像ｉについてのピクセルシェーダでの計算は次のような手順となる。ＲＧＢＡ（赤、緑、青、透明度）の４チャンネルのフレームバッファを利用し、ＲにＤ（ｖ）、ＧにＮｅａｒＳｕｒｆａｃｅを表すフラグ、ＢにＣ（ｖ）、ＡにＥｍｐｔｙを表すフラグを割り当てている。この様にすることで、２次元の情報を極めて高速に処理するＧＰＵの特性を利用して、符号付距離場および判別関数の計算にかかる時間を短くすることができる。
【０１０４】
具体的な処理手順は以下の通りであり、以下のステップの処理により、符号付距離と、判別関数の値が計算される。なお、ここでは、入力される形状データとして、アクティブステレオ法により得られたカメラ距離画像および光源距離画像が採用されている。
【０１０５】
入力：ボクセル位置ｖ、カメラパラメータｐｃｉ、光源位置の仮想カメラのパラメータｐｌｉ、カメラ距離画像のテクスチャＲｃｉ、光源距離画像のテクスチャＲｌｉ。
Ｓｔｅｐ１：ｖをｐｃｉ及びｐｌｉで射影した点ｘｃｉ（ｖ）、ｘｌｉ（ｖ）を計算。
Ｓｔｅｐ２：カメラおよび光源からの距離ｒｃｉ（ｖ）、ｒｌｉ（ｖ）をＲｃｉ（ｘｃｉ（ｖ））、Ｒｌｉ（ｘｌｉ（ｖ））としてサンプリング。
Ｓｔｅｐ３：ｒｃｉ（ｖ）が欠損値でなければカメラ視点からの符号付距離ｄｃｉ（ｖ）（視線距離）を計算。同様にｒｌｉ（ｖ）が欠損値でなければ光源視点からの符号付距離ｄｌｉ（ｖ）（視線距離）を計算。
Ｓｔｅｐ４：ｄｃｉ（ｖ）あるいはｄｌｉ（ｖ）が計算され、絶対値が閾値以下の場合（ＮｅａｒＳｒｕｆａｃｅの場合）ｄｃｉ（ｖ）、ｄｌｉ（ｖ）のどちらが有効であるかによって画素値（ｄｃｉ（ｖ）、１、０、０）あるいは（ｄｌｉ（ｖ）、１、０、０）を返す。ｄｃｉ（ｖ）あるいはｄｌｉ（ｖ）が計算され、絶対値が閾値以上の場合（Ｅｍｐｔｙの場合）画素値（０、０、０、１）を返す。
Ｓｔｅｐ５：ｒｃｉ（ｖ）、ｒｌｉ（ｖ）の欠損によって場合分けを行い、画素値（０、０、ｃｉ（ｖ）、０）を返す。
【０１０６】
次に、上記の処理により得られた値により、最終的な各ボクセルの値（符号付距離）を計算する。具体的には、処理後のフレームバッファの内容は、Ｇ＞０の場合ＮｅａＳｕｒｆａｃｅであるためＲ（Ｄ（ｖ））の値を符号付き距離とする。Ｇ＝０、Ａ＞０の場合はＥｍｐｔｙに該当するため物体外部の値を割り当てる。Ｇ＝０、Ａ＝０の場合Ｂ（Ｃ（ｖ））の値によって物体外部と内部を判断し、それぞれ値を割り当てる。符号付距離の重み付き和をとる場合には、距離画像の各画素についてあらかじめ重みを計算しておき、テクスチャとすることで、実装できる。
【０１０７】
＜第４の実施の形態：ＧＰＵを使用した符号付距離場の計算＞
本形態では、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を使用した符号付距離場の計算方法を説明する。上記した第３の実施の形態では、判別関数を用いてボクセルの内外を推定するステップを含む形状データの統合が説明されたが、本実施の形態では、ボクセルの分類や判定は行わず、ＧＰＵを用いて符号付距離を計算する画像処理装置および画像処理方法を説明する。
【０１０８】
図６を参照して、本形態の画像処理装置３０は、ＧＰＵから成る画像処理部３２と、制御部３４と、入力部３６と、記憶部３８と、表示部４０と、操作部４２とを主要に具備している。ここで、制御部３４、入力部３６、記憶部３８、表示部４０、操作部４２の具体的な構成は、図１に示した同名の部位と同様である。画像処理装置３０の特徴的な部分は、符号付距離場算出部３２Ａ等を含む画像処理部３２がＧＰＵから成る点にある。
【０１０９】
ＧＰＵから成る画像処理部３２は、第１記憶領域３２Ａと、第２記憶領域３２Ｂと、符号付距離算出部３２Ｃ（第１計算部）と、符号付距離統合部３２Ｄ（第２計算部）と、等値面形成部３２Ｅとを備えた構成となっている。
【０１１０】
第１記憶領域３２Ａおよび第２記憶領域３２Ｂは、ＧＰＵの内部に備えられた半導体メモリからなる。第１記憶領域３２Ａはテクスチャ領域として確保され、入力される形状データである距離画像が格納される。第１記憶領域３２Ａに格納された距離画像のデータは、形状データの符号付距離を算出するときに読み出される。第２記憶領域３２Ｂは、ボクセルの値を格納するための領域である。
【０１１１】
符号付距離算出部３２Ｃは、ＧＰＵの計算機能の一部である。符号付距離算出部３２Ｃでは、第２記憶領域３２Ｂに格納されたボクセルが表す３次元位置と、第１記憶領域３２Ａに格納された形状データとの符号付距離を計算する。符号付距離算出部３２Ｃとしては、ＧＰＵに備えられたシェーダを用いることができる。
【０１１２】
符号付距離統合部３２Ｄは、ＧＰＵの計算機能の一部であり、符号付距離算出部３２Ｃにて算出された符号付距離を統合する機能を有する。符号付距離統合部３２Ｄとしては、ＧＰＵに備えられたブレンディング機能を用いることができる。この部位にて統合された符号付距離のデータは、第２記憶領域３２Ｂに格納される。
【０１１３】
等値面形成部３２Ｅでは、符号付距離統合部により統合された符号付距離の値に基づいて、等値面を形成し、統合結果をメッシュモデルとして取り出す。
【０１１４】
更に、図７を参照して、本形態の画像処理方法は、形状データを入力するステップＳ２０と、入力された形状データからテクスチャを生成するステップＳ２１と、出力バッファを指定するステップＳ２２と、符号付距離を統合するステップＳ２３と、統合された符号付距離に基づいてメッシュモデルを生成するステップＳ２４と、３次元メッシュを出力するステップＳ２５とから成る。ここで、ステップＳ２３は、符号付距離を算出するステップＳ２３Ａ（第１ステップ）と、算出された符号付距離を加算（統合）するステップ２３Ｂ（第２ステップ）とを含む。また、本実施例では、ステップＳ２３とステップＳ２４を、３次元空間のボリュームのスライスごとに、逐次的に行なう。各ステップの詳細を以下に説明する。
【０１１５】
ステップＳ２０：形状データの入力
本ステップでは、複数の形状データが入力される。ここで、形状データは、例えば、上記した第２の実施の形態におけるステップＳ１０の手法により獲得することができる。入力される形状データは、画像距離の形式である。
【０１１６】
ステップＳ２１：テクスチャの形成
本ステップでは、距離画像テクスチャ及び重みテクスチャを生成する。
【０１１７】
先ず、ＧＰＵを用いた計算を行うため、距離画像をテクスチャへ変換するための手順と、上記した式（１）の重み部分を事前に計算するための重み画像テクスチャの作成手順を説明する。
【０１１８】
ＧＰＵ上で画像を扱うためには、距離画像をテクスチャ（距離画像テクスチャ）に変換する必要がある。
【０１１９】
本形態で用いる距離画像は画素値に符号付距離場を持っているが、すべての画素に距離値があるわけでなく、距離値が定義されていない欠損部分を持つ。距離画像のサブピクセルをサンプリングする場合、符号付距離場は隣接面素の距離値の線形補間で計算することができる。隣値する画素の距離値が欠損している場合は、サブピクセルのサンプリグした値も欠損している。
【０１２０】
以上のことから、ＧＰＵ上にて距離画像テクスチャで距離値と欠損状態を表し、効率的に扱うため次のようにテクスチャを作成する。まず、輝度（ｌｕｍｉｎａｎｃｅ）とアルファ（ａｌｐｈａ）の浮動小数点値テクスチャを作り、輝度（ｌｕｍｉｎａｎｃｅ）チャンネルに距離値を、アルファ（ａｌｐｈａ）チャンネルに欠損状態（０＝欠損、１＝欠損無し）を持つ浮動小数点値輝度アルファテクスチャ（ｌｕｍｉｎａｎｃｅ  ａｌｐｈａ）を作成する。
【０１２１】
このようなテクスチャとし、サブピクセルを線形補間でサンプリングすると、隣接ピクセルの欠損状態チャンネル（アルファチャンネル）の値が１（欠損無し）であれば、距離値チャンネル（輝度チャンネル）の値が距離値となる。欠損チャンネルの値が１でなければ、隣接ピクセルのいずれか（１つ以上）が欠損していると判断することができる。このように距離画像テクスチャを作成することで、ＧＰＵ上で高速に距離値を得ることが可能となる。
【０１２２】
次に、重み画像テクスチャを作成する。上記した式（１）の計算には、符号付距離場の重みが必要となる。本形態ではこの重みをＧＰＵ上で計算するために、重みを格納したテクスチャを作成する方法について述べる。
【０１２３】
符号付距離場の重みは距離画像から計算することができる。具体的には、距離画像の各画素について、カメラから見た視線方向が計算できる。また、各画素の周辺画素を含めた近傍から法線方向が計算できる。重みは、インデックスｉの距離画像の画素ｐの位置の法線方向をＮ（ｐ）、視線方向をＶ（ｐ）とした損合、法線方向と視線方向の内積Ｎ（ｐ）Ｖ（ｐ）となる。距離画像のすべての画素ｐの重みｗｉ（ｐ）＝Ｎ（ｐ）Ｖ（ｐ）を計算し、重み画像を作成する。ただし、距離画像の画素ｐが欠損していた損合は、重みは用いられないため未定義な値でよい。実際にテクスチャとして用いる場合は、前記した距離画像テクスチャと同様に欠損状態を持つが、欠損状態となるサブピクセルは距離画像テクスチャと同一な位置である。そのため、重み画像では距離画像テクスチャと一緒に用いるため欠損状態をアルファチャンネル等に持たせる必要はない。
【０１２４】
本形態では、重みの算出をＧＰＵでは行っておらず、ＣＰＵで事前に行っている。重み画像を事前に計算する理由は、処理速度効率化のためである。距離画像のみをテクスチャデータとし、ＧＰＵのピクセルシェーダ上でボクセル位置ｖの重みを計算することも可能であるが、そのためには、距離画像の対応するテクセルだけでなく、面の方向を求めるため周辺のテクセルも必要であり、計算負荷が大きくなる。
【０１２５】
また、本実施形態では重みを表すテクスチャを、距離画像のテクスチャと別に作成しているが、距離画像のアルファチャンネルに重みを入力することで、距離画像テクスチャに重み情報を持たせても良い。その場合、特殊な数値をアルファチャンネルに格納することで、欠損状態を表すことができる。
【０１２６】
ステップＳ２２：出力バッファの指定
次に、３次元空間ボリュームのスライステクスチャを生成し、出力バッファに指定する。符号付距離場は、ＧＰＵを用いてボリュームスライス単位で計算される。上記したように、ＧＰＵはフレームバッファと呼ばれる２次元画像へ計算結果を格納する。このフレームバッファに対して計算を行った結果は、通常スクリーン上で描画され、モニタ上に表示される。しかしながら本形態ではボリュームスライスがモニタ上に表示される必要性は無い。ＧＰＵには、Ｒｅｎｄｅｒ  Ｔｏ  Ｔｅｘｔｕｒｅ（ＲＴＴ）というフレームバッファへの書き込みをテクスチャへの書き込みとする機能があるため、この機能を用いボリュームスライスをテクスチャとして生成を行うことができる。
【０１２７】
ステップＳ２３：符号付距離の統合
本ステップでは、ＧＰＵの機能を用いて、各々の距離画像から符号付距離を算出し（ステップＳ２３Ａ）、算出された符号付距離を加算する（ステップＳ２３Ｂ）。具体的には、本ステップでは、画像距離テクスチャと重みテクスチャとを切り替えながら、スライステクスチャ全体のレンダリングを繰り返して実行する。ここで、符号付距離を計算するステップＳ２３Ａは、ＧＰＵのシェーダを用いて実行される。そして、符号付距離を加算するステップＳ２３ＢはＧＰＵのブレンディング機能を用いて実行される。
【０１２８】
図８に示すように、ＧＰＵは三角形ポリゴンをフレームバッファ上へレンダリングする。フレームバッファはボリュームスライスと同等に扱うため、ボリュームスライスの各ボクセルごとに１回ずつ計算が行われる必要がある。非常に単純ではあるが、（−１、−１）、（１、−１）、（−１、１）、（１、１）の頂点が成す正方形ポリゴンを入力として与え、この正方形ポリゴンがフレームバッファ全体を描画するように各種パラメータ（ｍｏｄｅｌ、ｖｉｅｗ、ｐｒｏｊｅｃｔｉｏｎ行列やｖｉｅｗｐｏｒｔ）を設定することによって、フレームバッファへの描画を行う。
【０１２９】
上記の例では、ボリュームスライスが正方形であると仮定しているが、ボリューム領域が直方体の場合、ボリュームスライスが長方形になる場合もある。
【０１３０】
また、上記の例では、フレームバッファ全体に対して、単一のポリゴンの描画命令を発行することで、ボリュームスライス全体についての符号付距離場を求めているが、より小さな図形の描画命令によって、フレームバッファへの一部のみの符号付距離場を求めることもできる。
【０１３１】
また、符号付距離場を求めたい領域全体に一つの図形の描画命令を発行するのではなく、その領域を多数の小さな図形に分割して、小さな図形の集合として描画することで、小さな図形の頂点すべてについて頂点シェーダが働き、ピクセルシェーダでの処理の一部を頂点シェーダに移すこともできる。
【０１３２】
頂点シェーダでは、正方形ポリゴンの各頂点変換を計算するが、その際ボリューム空間上でのスライス位置ｖが必要となるため、スライス位置ｖを頂点シェーダで計算し、ピクセルシェーダへ渡す必要がある。このスライス位置はピクセルシェーダ上では、各頂点から補間された値となっており、各ピクセルシェーダ上ではｖの値は、ピクセルシェーダの計算対象となるボクセルの位置となる。
【０１３３】
一辺の長さがｖｓのボリュームである場合、ボリュームの生成位置を（ｘｓ、ｙｓ、ｚｓ）から（ｘｓ＋ｖｓ、ｙｓ＋ｖｓ、ｚｓ＋ｖｓ）とし、ｚ軸の位置ｚ上にｘｙ平面のスライスを対象とすると、正方形ポリゴンの各頂点（ｘｐ、ｙｐ）から、ボリューム上での位置（ｘｖ、ｙｖ、ｚｖ）は次式で計算することができる。
【０１３４】
【数７】
0005120926.tif 000008
上記に述べたように計算することによって、ＧＰＵ上でボリュームのスライス単位での描画が可能となる。しかしながら、描画対象となるボリュームスライスはテクスチャとして表現する必要があるため、このボリュームスライスの画素が持つチャンネルを決定する必要がある。ここでは、通常のテクスチャマッピングで利用される場合のテクスチャとは異なり、符号付距離場を格納する必要がある。更に、符号付距離場は浮動小数点数で表す必要があるため、浮動小数点数テクスチャを利用する。また、符号付距離場が欠損しているかどうかを判断するフラグも必要となる。
【０１３５】
本形態では、符号付距離場を格納するチャンネルに輝度（ｌｕｍｉｎａｎｃｅ）を利用し、欠損フラグを格納するチャンネルにアルファ（ａｌｐｈａ）を用い、各チャンネルは３２ｂｉｔ浮動小数点数を利用する。ただし、欠損フラグはアルファ値が０の場合を欠損状態とし、それ以外の場合は欠損していない状態とする。
【０１３６】
次に、テクスチャへのフレームバッファの書き込みを行う。ＯｐｅｎＧＬにおいてこの機能を利用するためにはｐｂｆｆｅｒか、ＥＸＴ  ｆｒａｍｅｂｆｆｅｒ  ｏｂｊｅｃｔ拡張を用いる方法がある。ｐｂｆｆｅｒを利用する場合は、ｐｂｆｆｅｒと呼ばれるバッファを作成し、このバッファに対してレンダリングを行うように指定することで実現する。ＥＸＴ  ｆｒａｍｅｂｆｆｅｒ  ｏｂｊｅｃｔ拡張を利用する場合は、ｐｂｆｆｅｒではＯＳに依存する処理が必要となるが、ＯＳ依存の処理が必要なく容易に実装できる。
【０１３７】
本形態ではどちらの機能を用いても支障がないため、容易に実装可能で、ピクセルフォーマットに依存せず拡張性の高いＥＸＴ  ｆｒａｍｅｂｆｆｅｒ  ｏｂｊｅｃｔを利用した。
【０１３８】
ステップＳ２３Ａ：符号付距離場の算出
このステップでは、単一の距離画像からスライスへのＧＰＵを用いた符号付距離場の計算を行う。
【０１３９】
まず、頂点シェーダで処理された頂点はラスタライゼーションによって、フレームバッファ上で対応する各ピクセルごとにシェーディング計算が行なわれる。スライスに対してはラスタライゼーションによって図８に示すように、フレームバッファ（ボリュームスライス）全体に対してピクセルシェーダによる計算を行なうことが可能となっている。入力としてインデックスｉの単一の距離画像が与えられた場合、各ボクセルｖの符号付距離場の計算の式は、次式のように単純化することができる。
【０１４０】
【数８】
0005120926.tif 000009
この計算を行うために、予め次の値が必要となる。まず、距離画像そのもの、距離画像を撮影したカメラのカメラパラメータ（内部パラメータ、外部パラメータ両方）、重みが格納された重み画像、符号付距離場の範囲を制限するための閾値が必要となる。重みが格納された重み画像が必要となるが、重みの算出方法は上記したとおりである。
【０１４１】
ピクセルシェーダ（ＧＰＵ）での計算アルゴリズムは以下のような手順となる。
入力値：ボクセル位置ｖ（ｖは前述の頂点シェーダの出力）
Ｓｔｅｐ１：カメラパラメータから、ｖの距離画像空間上の位置ｐを計算する。
Ｓｔｅｐ２：距離画像についてｐの位置のテクセルをサンプリングする。このテクセルは視点からボクセルｖに向かう方向での物体形状までの距離でありｌｅｎｇｔｈｖとする。
Ｓｔｅｐ３：ｌｅｎｇｔｈｖが欠損していた場合は、このピクセルシェーダの計算を破棄し終了する。
Ｓｔｅｐ４：ボクセルと視点までの距離と、ｌｅｎｇｔｈｖの距離の差を計算し、符号付距離場ｄｉ（ｖ）とする。
Ｓｔｅｐ５：符号付距離場ｄｉ（ｖ）が、指定された閾値を越えていた場合、計算を破棄し終了する。
Ｓｔｅｐ６：距離画像と同様に、重み画像から重みを計算し、ｗｉ（ｖ）とする。
Ｓｔｅｐ７：ピクセルシェーダの計算結果として、重み付き距離値ｄｉ（ｖ）ｗｉ（ｖ）と欠損フラグに欠損無し（１）を返り値とする。
【０１４２】
以上のステップを実行させることにより、距離画像から符号付距離場が算出される。
【０１４３】
本実施形態では、ピクセルシェーダにおいてＳｔｅｐ１の計算を行なっているが、Ｓｔｅｐ１の計算を頂点シェーダによって行なうこともできる。この場合には、フレームバッファに描画するポリゴンあるいは３角形を細かく分割して表示命令を出すことで、多くの頂点においてＳｔｅｐ１が実行されるようにする必要がある。
【０１４４】
ステップＳ２３Ｂ：符号付距離の加算
本ステップでは、先ステップにより算出された符号付距離を加算する。
【０１４５】
単一の距離画像の場合は上記した式（１）および式（８）に示すように単純化することができる。しかしながら、複数の距離画像を対象とした場合、インデックスｉの距離画像ごとに重み付きの符号付距離場を足し合わせる必要がある。ここで、重み付きの符号付距離場をＧＰＵを用いて足し合わせる方法として、次の３つの手法が挙げられる。
（１）単一の距離画像から計算される符号付距離場のスライスを距離画像ごとに生成しＣＰＵを用いて足し合わせる。
（２）すべての距離画像とその重み画像をテクスチャとしてピクセルシェーダ上へ同時に渡し一度に計算を行なう。
（３）ＧＰＵのブレンディング機能を用いて、符号付距離場の加算をフレームバッファ上で行なう。
【０１４６】
（１）の方法では、距離画像ごとにスライス画像を生成する必要があり、またその統合にＧＰＵと比較して処理速度の遅いＣＰＵを利用する必要がある。そのため、実装は単純になるが処理時間と使用メモリ量が増えてしまう問題点がある。（２）の方法では、一度に計算を行うため高速に実行できる利点がある。しかしながら、ＧＰＵの制約として同時に利用可能なテクスチャの数に制限があり、一つの距離画像ごとに，距離画像を表すテクスチャと重みを表すテクスチャの２枚のテクスチャを利用するため、数枚程度の距離画像しか扱えない問題がある。（３）の方法では、手順としては（１）の手法と同一となるが統合の計算をフレームバッファ上で行い、ＧＰＵのブレンディングの機能を使って高速に処理することを期待できる利点がある。本形態では、（３）の方法が好適である。
【０１４７】
ＧＰＵを用いたブレンディングによる統合は図９に示すような計算方法となる。１つの距離画像と重み画像からスライス単位でレンダリングが行なわれ、各画素ごとに計算結果をブレンディングによる加算合計によって足し合わせを行なう。
【０１４８】
ボリュームスライステクスチャの準備から、ボリュームスライスへの符号付距離場のレンダリングまでの手順をまとめると、下記に記述するようなものとなる。
Ｓｔｅｐ１：ボリュームスライステクスチャを作成（準備）し、符号付距離場を０、欠損フラグを０（欠損状態）で初期化する。
Ｓｔｅｐ２：インデックスｉの距離画像と重み画像から、フレームバッファへ符号付距離場のスライスのレンダリングを行う。レンダリングによって、ＧＰＵ内部で頂点シェーダとピクセルシェーダが稼働し、符号付距離の計算が行なわれる。
Ｓｔｅｐ３：レンダリングが行なわれたスライスは、フレームバッファ上でブレンディングによる符号付距離の加算が行なわれる。
Ｓｔｅｐ４：フレームバッファの内容（ボリュームのスライスにおける符号付距離場データ）を、メインメモリなどの記憶装置に転送する。次のインデックスｉ＋１があれば、ｉ＝ｉ＋１とし、Ｓｔｅｐ２へ戻り、そうでなければ終了する。この繰り返しによって、ボリュームデータ全体の符号付距離場を計算する。このとき、最新の２枚のスライスのみをＧＰＵの記憶装置に保持し、本ステップの繰り返しごとに、ステップＳ２４の方法（下記）によってその２枚のスライス間の等値面を生成するようにすることで、記憶装置の容量を大幅に節約することができる。
【０１４９】
上記の記述では、Ｓｔｅｐ４において、ボリュームスライスを移動しながらの繰り返しにともない、逐次的に等値面を生成する方法を述べている。しかしながら、ボリューム全体について符号付距離を計算し、その後に等値面を生成してもかまわない。ただし、その場合は、大きな記憶容量が必要となる。
【０１５０】
ステップＳ２４：メッシュの生成
次に、先ステップにて算出された符号付距離場から等値面を生成する。即ち、符号付距離場からメッシュモデルへの変換を行う。符号付距離場からメッシュへの変換にはＭａｒｃｈｉｎｇ  Ｃｕｂｅｓ法を用いる。Ｍａｒｃｈｉｎｇ  Ｃｕｂｅｓ法は、符号付距離場に欠損が無い場合であれば、そのまま用いることが可能である。欠損がある場合のＭａｒｃｈｉｎｇ  Ｃｕｂｅｓ法の計算は、あるボクセル中心に隣接する８個のボクセルの符号付距離場に一つでも欠損があった場合は形状を生成しなければ良い。したがって、欠損がある場合はＭａｒｃｈｉｎｇ  Ｃｕｂｅｓ法の計算をスキップすることで若干高速化を図ることが可能となる。符号付距離場を計算するコストと、符号付距離場からＭａｒｃｈｉｎｇ  Ｃｕｂｅｓ法によってメッシュを生成するコストを比較した場合、符号付距離場を計算するコストがほとんどとなるため、本形態では、Ｍａｒｃｈｉｎｇ  Ｃｕｂｅｓ法をそのまま用いている。
【０１５１】
本実施例では、ボリュームデータの各スライスについて符号付距離場を計算する繰り返しループの内部で、最新の２枚のみのスライスの間のメッシュを、Ｍａｒｃｈｉｎｇ  Ｃｕｂｅｓ法によって逐次的に行なっている。従って、ボリュームデータ全体を記憶装置に格納する必要が無く、記憶装置の使用量を削減できる利点がある。
【０１５２】
具体的には、符号付距離場は３次元ボリューム構造となっている、解像度Ｎ×Ｎ×Ｎのボリュームを同時にメモリ上に確保する場合、Ｎ＝１０２４の解像度、符号付距離場に３２ｂｉｔ実数で４ＧＢのメモリを必要とする。現在のＧＰＵでは、これだけのメモリを確保することは不可能である。
【０１５３】
ＭａｒｃｈｉｎｇＣｕｂｅｓ法の計算方法を考慮した場合、各ボクセル中心の近傍８個の符号付距離場のみを１回の処理で必要としている。そのため、符号付距離場からマーチングキューブス法を行い、形状を生成するためには、少なくとも８個のボクセル領域を必要とする。
【０１５４】
ＧＰＵは二次元画像を対象とする計算に特化しているため、ボリュームのスライス単位の計算であれば高速に行うことが可能である。そのため、周辺８個のボクセルをスライスで得るためには、対象となるボクセルを含む上下２枚のスライスがあれば良いことがわかる。したがって、メモリ使用量は２×Ｎ×Ｎまで削減することができ、Ｎ＝１０２４の解像度、３２ｂｉｔ実数の距離値の場合８ＭＢのメモリ使用量となり、全体を確保した場合の４ＧＢと比較して大幅に削減することが可能となる。このメモリ使用量は一般的なＧＰＵにとって十分に収まる使用量となっている。
【０１５５】
そして、上記したステップにより生成された３次元メッシュの情報は、ＨＤＤ等の記憶手段に出力されて格納される。
【０１５６】
ここで、ＭａｒｃｈｉｎｇＣｕｂｅｓ法による等位面の計算は、ＧＰＵのジオメトリシェーダで行なってもよい。
【０１５７】
＜第５の実施の形態：実験結果の説明＞
提案手法の有効性を示すため、二種類のデータを用いて実験を行った。一つは、メッシュデータとして存在する形状モデルから得られた合成データである。形状モデルから、視点位置を変えながら７個の距離画像を作成した。このとき、アクティブステレオ法による計測を想定して、光源からのｏｃｃｌｕｓｉｏｎが発生している箇所は、欠損データとした。もう一つは、実際の物体をカメラとプロジェクタを用いたアクティブステレオ法で計測し、得られた実測データ（猪の形をした置物）である。計測は、視点位置を変えながら８回行った。
【０１５８】
それぞれのデータを、ＳＣ法、ｖｏｌｕｍｅｔｒｉｃ  ｄｉｆｆｕｓｉｏｎ法（以下ＶＤ法）、佐川らによって提案された複数の距離画像から符号付距離場に関しての「コンセンサス」を得る方法（以下コンセンサス法）、及び、上記した本発明の手法（アクティブステレオによる光源位置の情報を使用した場合）によって統合し、メッシュモデルを作成した。ＳＣ法とＶＤ法では、符号付距離場は視線距離によって計算され、コンセンサス法では、符号付距離場はユークリッド距離によって計算されている。ＶＤ法ではボリュームの拡散を３０回繰り返した。また、ボリュームのサイズは、５１２×５１２×５１２とした。高速化のため、本発明の手法ではまず６２×６２×６２の解像度で処理を行い、表面の存在する領域についてのみレンダリングを行った。また、本発明の手法では、補間された部分におけるエイリアシングを防ぐため、ボリュームに対して３×３×３の平滑化フィルタを適用した場合と、適用しない場合の処理を行った（ＳＣ法およびＶＭ法では行わなかった）。ＳＣ法、ＶＤ法、本発明の手法はＩｎｔｅｌ社Ｚｅｏｎプロセッサ（２．８ＧＨｚ）のＣＰＵと、ｎＶｉｄｉａ社ＧｅＦｏｒｃｅ８８００ＧＴＸのＧＰＵを搭載したＰＣで実行し、コンセンサス法については、Ｏｐｔｅｒｏｎ２７５（２．２ＧＨｚ）ｘ２個（合計４ＣＰＵ）構成のＰＣで実行した。
【０１５９】
補間なしの場合の統合結果を図１２、それぞれの方法による補間処理の結果（本発明の手法は平滑化を適用した場合）を図１３、図１４に示す。ここで、図１２（Ａ）は合成データであり、図１２（Ｂ）は実測のデータであり、両画像共に補完が行われていない。この図１２（Ａ）の場合、１０２４ｘ１０２４ｘ１０２４のボリュームで統合するために要した処理時間は、ＣＰＵの場合が１６３５秒、ＧＰＵの場合が１４２秒であり、ＧＰＵ処理により非常に高速化されていることが分かる。
【０１６０】
図１３（Ａ）はＳＣ法による結果であり、図１３（Ｂ）はＶＤ法による結果であり、図１３（Ｃ）はコンセンサス法による結果であり、図１３（Ｄ）は本実施の形態の手法による結果である。
【０１６１】
更に、図１４の各図も図１３と同様であり、図１４（Ａ）はＳＣ法による結果であり、図１４（Ｂ）はＶＤ法による結果であり、図１４（Ｃ）はコンセンサス法による結果であり、図１４（Ｄ）は本発明の手法による結果である。ここで、図１３（Ｄ）および図１４（Ｄ）では、平滑化処理が施されている。
【０１６２】
更に、符号付距離場と判別関数Ｃ（ｖ）とを、ある平面で切断した画像を図１５の各図に示す。具体的には、図１５（Ａ）は補完が行われていない符号付距離場を示し、図１５（Ｂ）はＳＣ法によるものであり、図１５（Ｃ）はＶＤ法によるものであり、図１５（Ｄ）は本発明の手法によるものであり、図１５（Ｅ）は図１５（Ａ）の耳下部の拡大図であり、図１５（Ｆ）は図１５（Ｃ）の耳下部の拡大図であり、図１５（Ｇ）は判別関数を示す図である。
【０１６３】
ここで、図１５の各図の色の対応に関して説明する。図１５（Ａ）、図１５（Ｂ）および図１５（Ｃ）では、灰色の部分がＵｎｓｅｅｎ、黒色の部分がＥｍｐｔｙ、白の部分がＮｅａｒＳｕｒｆａｃｅを表している。そして、図１５（Ｄ）では、灰色の部分が物体内部を示し、黒の部分が物体外部を示している。また、図１５（Ｇ）では、判別関数が正の値を薄い灰色で示し、判別関数が負の部分を濃い灰色で示している。
【０１６４】
図１３（Ａ）及び図１４（Ａ）から、合成データ、実測データどちらの場合でも、ＳＣ法では対象物体の周囲に余分なメッシュが生じている。これは物体の周囲の符号付距離場に、Ｕｎｓｅｅｎ（未観測）の「削り残し」（図１５（Ｂ）における対象物体外部の灰色の領域）が発生し、ＵｎｓｅｅｎとＥｍｐｔｙの間に余分なメッシュが生じたためである。対象物体のメッシュとこれらのメッシュが分離していれば、こうしたメッシュは取り除かれるが、今回用いたデータでは余分なメッシュと対象物体が連結し、図に示すような結果となった。
【０１６５】
また、図１３（Ｂ）を見ると、ＶＤ法ではウサギの像の底面部分の穴は補間されているが、耳の下部や胸の部分において望ましくない方向に穴の周辺のメッシュが広がっている。これは、図１５（Ｅ）から見て取れるように、これらの領域においては、形状の法線方向と距離画像の計測方向が大きく違うため、符号付距離場のＮｅａｒＳｕｒｆａｃｅとＵｎｓｅｅｎの境界面（図１５（Ｅ）の濃い灰色で示される直線状の部分）が、法線方向とは異なる方向に生じ、これにより、フィルタによる等値面の拡大が、形状の表面の広がりとは違う方向に起こるため（図１５（Ｆ）では右下方向に等値面が拡大している）であると考えられる。同様な現象は、実データにおいても起こっている（図１４（Ｂ））。
【０１６６】
一方、図１３（Ｃ）および図１４（Ｃ）を参照して、コンセンサス法では全ての穴が埋まり、穴の部分に生成された曲面が平坦なものになったことから、補間の品質は実験された手法の中では最も良いものになった。ただし、コンセンサス法では、符号付距離場の計算にユークリッド距離を用いるため、処理には大きな時間がかかった。
【０１６７】
本発明の手法では、図１３（Ｄ）および図１４（Ｄ）を参照して、穴の部分に生成された曲面は、不自然になっている部分があるが、全ての穴が埋まり、補間の品質としてはコンセンサス法に次いで良いものになっている。また、メッシュのトポロジーは、球体と等しくなった。このことから、補間された曲面に対してメッシュの曲率の最小化などの処理を施すなどの後処理により、結果の改善が可能であると思われる。
【０１６８】
また、図１５（Ｇ）より、判別関数Ｃ（ｖ）が正となる領域（白色の部分）は、対象物体の形状の粗い近似になっていることがわかる。
【０１６９】
計算時間については、図１０の表により、提案手法では、平滑化を行わない場合（ＳＣ法、ＶＤ法では平滑化をしていない）にはＳＣ法の０．４５〜０．５５倍、ＶＤ法の０．１５〜０．１７倍、平滑化を行った場合でもＳＣ法の０．６５〜０．７４倍、ＶＤ法の０．２１〜０．２３倍の計算時間で終了したことが分かる。このことから、提案手法をＧＰＵで実装することにより、高い効率で、かつ品質の高い補間結果が得られたことが分かる。また、図１１の表には、本発明の手法における実行時間の内訳が記載されている。
【産業上の利用可能性】
【０１７０】
本発明は、ＣＧモデリング、リバースエンジニアなどにおける、３次元形状復元ソフトウェアに適用できる。本発明をこれらのソフトウェアに適用させることで、ソフトウェアが３次元形状を精密に生成するのに必要とされる時間が短縮される。
【図面の簡単な説明】
【０１７１】
【図１】本発明の画像処理装置を示す図である。
【図２】本発明の画像処理方法を示すフローチャートである。
【図３】Ｓｐａｃｅ  Ｃａｒｖｉｎｇ法による補間を示す図である。
【図４】本発明に於けるボクセルのクラスを説明するための図である。
【図５】アクティブステレオ法を説明するための図である。
【図６】本発明の画像処理装置を示す図である。
【図７】本発明の画像処理方法を示すフローチャートである。
【図８】ボリュームスライスへのレンダリングステップを示す図である。
【図９】ＧＰＵを用いたブレンディングによるスライスの統合を示す図である。
【図１０】本発明と他の手法の画像処理にかかる処理時間を示す表である。
【図１１】図１０に示した本発明の処理の処理時間の内訳である。
【図１２】（Ａ）および（Ｂ）は、補間無しの統合結果を示す図である。
【図１３】（Ａ）乃至（Ｄ）は、補間を行った場合の統合結果を示す図である（合成データ）。
【図１４】（Ａ）乃至（Ｄ）は、補間を行った場合の統合結果を示す図である（実測データ）。
【図１５】（Ａ）乃至（Ｆ）は符号付き距離場の断面図であり、（Ｇ）は判別関数の断面図である。
【符号の説明】
【０１７２】
１０        画像処理装置
１２        画像処理部
１２Ａ      符号付距離算出部
１２Ｂ      統合部
１２Ｃ      分類部
１２Ｄ      推定部
１２Ｅ      判定部
１２Ｆ      等値面形成部
１４        制御部
１６        入力部
１８        記憶部
２０        表示部
２２        操作部
３０        画像処理装置
３２        画像処理部
３２Ａ      第１記憶領域
３２Ｂ      第２記憶領域
３２Ｃ      符号付距離算出部
３２Ｄ      符号付距離統合部
３２Ｅ      等値面形成部
３４        制御部
３６        入力部
３８        記憶部
４０        表示部
４２        操作部
【図１】
0005120926.tif 000010
【図２】
0005120926.tif 000011
【図３】
0005120926.tif 000012
【図６】
0005120926.tif 000013
【図７】
0005120926.tif 000014
【図８】
0005120926.tif 000015
【図９】
0005120926.tif 000016
【図１０】
0005120926.tif 000017
【図１１】
0005120926.tif 000018
【図４】
0005120926.tif 000019
【図５】
0005120926.tif 000020
【図１２】
0005120926.tif 000021
【図１３】
0005120926.tif 000022
【図１４】
0005120926.tif 000023
【図１５】
0005120926.tif 000024