(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024147397
(43)【公開日】2024-10-16
(54)【発明の名称】平面検出方法、情報処理装置、投影制御システム及びプログラム
(51)【国際特許分類】
G06T 7/60 20170101AFI20241008BHJP
G06T 7/64 20170101ALI20241008BHJP
【FI】
G06T7/60 200Z
G06T7/64
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2023060371
(22)【出願日】2023-04-03
(71)【出願人】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(72)【発明者】
【氏名】原 駿介
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA09
5L096CA02
5L096DA02
5L096FA09
5L096FA59
5L096FA66
5L096FA67
5L096GA19
5L096GA32
5L096GA51
5L096JA11
(57)【要約】
【課題】平面を従来よりも精度良く検出する。
【解決手段】平面検出方法は、情報処理装置200の制御部110が、所定の領域における2次元座標情報と深度情報とに基づく3次元情報から点群データを取得し、所定の領域が分割された複数のグリッドそれぞれに含まれる2次元座標情報を有する点群データであるグリッド点群データに基づいて、それぞれのグリッドの平面パラメータであるグリッドパラメータを導出し、グリッドパラメータの差が所定の条件を満たしており、かつ隣り合っている複数のグリッドを連結したグリッドグループを生成し、グリッドグループに含まれる点群データであるグリッドグループ点群データに基づいて、平面を検出するための第1平面パラメータを導出する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
情報処理装置の制御部が、
所定の領域における2次元座標情報と深度情報とに基づく3次元情報から点群データを取得し、
前記所定の領域が分割された複数のグリッドそれぞれに含まれる2次元座標情報を有する前記点群データであるグリッド点群データに基づいて、それぞれのグリッドの平面パラメータであるグリッドパラメータを導出し、
前記グリッドパラメータの差が所定の条件を満たしており、かつ隣り合っている前記複数のグリッドを連結したグリッドグループを生成し、
前記グリッドグループに含まれる前記点群データであるグリッドグループ点群データに基づいて、平面を検出するための第1平面パラメータを導出する、
平面検出方法。
【請求項2】
前記所定の条件は、前記複数のグリッドの前記グリッドパラメータの差が連続性判定閾値未満であることである、
請求項1に記載の平面検出方法。
【請求項3】
前記制御部が、
前記グリッドグループを複数生成した場合、
面積が最も大きい前記グリッドグループを選択し、
選択した前記グリッドグループに含まれる2次元座標情報を有する前記点群データであるグリッドグループ点群データに基づいて、前記第1平面パラメータを導出する、
請求項1に記載の平面検出方法。
【請求項4】
前記制御部が
RANSACを用いて前記グリッド点群データから前記グリッドパラメータを導出する、
請求項1に記載の平面検出方法。
【請求項5】
前記制御部が、
最小二乗法を用いて前記グリッドグループ点群データから前記第1平面パラメータを導出する、
請求項1に記載の平面検出方法。
【請求項6】
前記制御部が、
前記第1平面パラメータが表す平面からの法線距離が第1閾値未満である点群データであって、前記グリッドグループに含まれる2次元座標情報又は前記グリッドグループに隣接する2次元座標情報を有する前記点群データである第1抽出点群を抽出し、
前記第1抽出点群に基づいて、平面を検出するための第2平面パラメータを導出する、
請求項1に記載の平面検出方法。
【請求項7】
前記制御部が、
最小二乗法を用いて前記第1抽出点群から前記第2平面パラメータを導出する、
請求項6に記載の平面検出方法。
【請求項8】
前記制御部が、
前記第2平面パラメータが表す平面からの法線距離が第2閾値未満である点群データである第2抽出点群を抽出し、
前記第2抽出点群からなる平面領域を検出する、
請求項6に記載の平面検出方法。
【請求項9】
前記制御部が、
前記第2平面パラメータが表す平面からの法線距離が第2閾値未満である点群データである第2抽出点群を抽出し、前記第2抽出点群に基づいて新たな第2平面パラメータを導出する処理を所定の回数繰り返して、最終的な第2平面パラメータを導出する、
請求項6に記載の平面検出方法。
【請求項10】
前記制御部が、
前記第2平面パラメータと前記新たな第2平面パラメータとの差異が所定範囲内だった場合には、それ以後新たな第2平面パラメータを導出する処理は繰り返さず、その時点での新たな第2平面パラメータを最終的な第2平面パラメータとする、
請求項9に記載の平面検出方法。
【請求項11】
前記第1閾値と前記第2閾値とは値が異なる、
請求項8に記載の平面検出方法。
【請求項12】
所定の領域における2次元座標情報と深度情報とに基づく3次元情報から点群データを取得し、
前記所定の領域が分割された複数のグリッドそれぞれに含まれる2次元座標情報を有する前記点群データであるグリッド点群データに基づいて、それぞれのグリッドの平面パラメータであるグリッドパラメータを導出し、
前記グリッドパラメータの差が所定の条件を満たしており、かつ隣り合っている前記複数のグリッドを連結したグリッドグループを生成し、
前記グリッドグループに含まれる2次元座標情報を有する前記点群データであるグリッドグループ点群データに基づいて、平面を検出するための第1平面パラメータを導出する、
制御部を備える、
情報処理装置。
【請求項13】
所定の領域を撮影して撮影画像を取得する少なくとも1つのカメラと、
制御部を備える情報処理装置と、
投影装置と、
を備える投影制御システムであって、
前記情報処理装置の前記制御部は、
前記カメラによって撮影された前記撮影画像から、前記所定の領域における2次元座標情報と深度情報とに基づく3次元情報を抽出し、
抽出した前記3次元情報から点群データを取得し、
前記所定の領域が分割された複数のグリッドそれぞれに含まれる2次元座標情報を有する前記点群データであるグリッド点群データに基づいて、それぞれのグリッドの平面パラメータであるグリッドパラメータを導出し、
前記グリッドパラメータの差が所定の条件を満たしており、かつ隣り合っている前記複数のグリッドを連結したグリッドグループを生成し、
前記グリッドグループに含まれる2次元座標情報を有する前記点群データであるグリッドグループ点群データに基づいて、平面を検出するための第1平面パラメータを導出し、
前記第1平面パラメータが表す平面からの法線距離が第1閾値未満である点群データであって、前記グリッドグループに含まれる2次元座標情報又は前記グリッドグループに隣接する2次元座標情報を有する前記点群データである第1抽出点群を抽出し、
前記第1抽出点群に基づいて、平面を検出するための第2平面パラメータを導出し、
前記第2平面パラメータが表す平面からの法線距離が第2閾値未満である点群データである第2抽出点群を抽出し、
前記第2抽出点群からなる平面領域を検出し、
前記投影装置は、
前記情報処理装置の前記制御部が検出した平面領域に映像を投影する、
投影制御システム。
【請求項14】
コンピュータに、
所定の領域における2次元座標情報と深度情報とに基づく3次元情報から点群データを取得し、
前記所定の領域が分割された複数のグリッドそれぞれに含まれる2次元座標情報を有する前記点群データであるグリッド点群データに基づいて、それぞれのグリッドの平面パラメータであるグリッドパラメータを導出し、
前記グリッドパラメータの差が所定の条件を満たしており、かつ隣り合っている前記複数のグリッドを連結したグリッドグループを生成し、
前記グリッドグループに含まれる前記点群データであるグリッドグループ点群データに基づいて、平面を検出するための第1平面パラメータを導出する、
処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、平面検出方法、情報処理装置、投影制御システム及びプログラムに関する。
【背景技術】
【0002】
投影装置(プロジェクタ)が映像を投影する投影面に凸凹等があると、その投影面には映像を適切に投影することができない場合がある。また、移動体が走行する路面に障害物や段差があると、その路面を走破することができない場合がある。これらの問題を解決するために(映像を適切に投影可能な投影面や走破可能な路面等を判定するために)、平面を検出する技術が知られている。例えば特許文献1には、3次元データをグリッドに分割して区画毎にRANSAC(Random Sample Consensus)を用いて平面検出を行う技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示されている平面検出技術は、RANSACを用いることによって各グリッドがどのような平面であるかを精度良く検出することができる。しかし、各グリッドにおいてそれぞれ独立に平面検出を行うため、グリッドに分割される前の元の平面を精度良く検出することはできない。
【0005】
本発明は上記実情に鑑みてなされたものであり、平面を従来よりも精度良く検出することができる平面検出方法、情報処理装置、投影制御システム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明に係る平面検出方法の一態様は、
情報処理装置の制御部が、
所定の領域における2次元座標情報と深度情報とに基づく3次元情報から点群データを取得し、
前記所定の領域が分割された複数のグリッドそれぞれに含まれる2次元座標情報を有する前記点群データであるグリッド点群データに基づいて、それぞれのグリッドの平面パラメータであるグリッドパラメータを導出し、
前記グリッドパラメータの差が所定の条件を満たしており、かつ隣り合っている前記複数のグリッドを連結したグリッドグループを生成し、
前記グリッドグループに含まれる前記点群データであるグリッドグループ点群データに基づいて、平面を検出するための第1平面パラメータを導出する。
【発明の効果】
【0007】
本発明によれば、平面を従来よりも精度良く検出することができる。
【図面の簡単な説明】
【0008】
【
図1】実施の形態に係る投影制御システムの構成例及び使用時のイメージを示す図である。
【
図2】実施の形態に係る投影制御システムの機能構成の一例を示す図である。
【
図3】実施の形態に係る平面検出処理のフローチャートの一例である。
【
図4】撮影画像中の点群データの一例のイメージを示す図である。
【
図5】点群データをグリッドで分割したイメージを示す図である。
【
図6】グリッド内でのRANSACを説明するために、1つのグリッド内でランダムに3点を選択したイメージを示す図である。
【
図7】グリッド内でのRANSACを説明するために、1つのグリッド内でランダムに10点を選出したイメージを示す図である。
【
図8】実施の形態に係るグリッドグループ生成処理のフローチャートの一例である。
【
図9】各グリッドに付与されたグループ番号の一例を示す図である。
【
図11】グリッドグループから得られる平面との距離が第1閾値未満の点群データのイメージを示す図である。
【
図12】グリッドグループから得られる平面との距離が第1閾値未満の点群データのうち連続している点群データのイメージを示す図である。
【
図13】第1抽出点群から得られる平面との距離が第2閾値未満の点群データのイメージを示す図である。
【発明を実施するための形態】
【0009】
実施の形態に係る投影制御システム等について、図面を参照して説明する。なお、図中同一又は相当する部分には同一符号を付す。
【0010】
(実施の形態)
実施の形態に係る投影制御システム100は、例えば
図1に示すように、3D(Dimensional)カメラ240とプロジェクタ250とが、PC(Personal Computer)210に接続されて構成される。そして、投影制御システム100は、PC210で制御され、作業台300上の平面領域320(作業物310やユーザの手等がない領域)を3Dカメラ240で検出し、その平面領域320上にプロジェクタ250で投影コンテンツを投影する。
【0011】
投影制御システム100は、例えば
図1に示すように、PC210に、3Dカメラ240がUSB(Universal Serial Bus)で接続され、プロジェクタ250がHDMI(登録商標)(High-Definition Multimedia Interface)で接続されて構成される。
【0012】
投影制御システム100及び情報処理装置200は、機能構成としては、
図2に示すように、情報処理装置200が制御部110、記憶部120、操作入力部130を備え、投影制御システム100はこれらに加えて検出部140、投影部150を備える。例えば情報処理装置200となるPC210が制御部110、記憶部120、操作入力部130に対応し、3Dカメラ240が検出部140に対応し、プロジェクタ250が投影部150に対応する。もっとも、投影制御システム100が備える各装置のうち、どの装置をこれらの各機能構成部に対応させるかは任意である。例えば、情報処理装置200を操作入力部130に対応させずに、プロジェクタ250を操作入力部130と投影部150に対応させてもよい。
【0013】
制御部110は、例えばCPU(Central Processing Unit)等のプロセッサで構成される。制御部110は、記憶部120に記憶されているプログラムにより、投影制御システム100の各種機能を実現する処理や後述する平面検出処理等を実行する。また、制御部110はマルチスレッドに対応し、複数の処理を並行して実行することができる。
【0014】
記憶部120は、制御部110が実行するプログラムや、必要なデータを記憶する。記憶部120は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等を含み得るが、これらに限られるものではない。なお、記憶部120は、制御部110の内部に設けられていてもよい。
【0015】
操作入力部130は、キーボード、マウス、押しボタンスイッチ等のユーザインタフェースを備え、ユーザからの操作入力を受け付ける。
【0016】
検出部140は画像情報(2次元座標情報)と深度情報(距離情報)とに基づく3次元情報を取得できる3Dカメラ240を備え、作業台300の上面等、所定の領域の状態(検出部140で撮影された対象の立体形状を表す点群の3次元位置の情報)を取得する。制御部110は、後述する平面検出処理を実行することにより、検出部140が取得した情報(点群の位置情報)に基づいて、撮影対象のどこが平面であるかを検出することができる。なお、
図1に示す例では、投影制御システム100は検出部140として3Dカメラ240を備えることとしたが、検出部140は必ずしも3Dカメラ240を備えなければならないわけではない。検出部140は、撮影対象の点群の3次元位置情報を取得することができるなら、3Dカメラ240に代えて任意のセンサを備えることができる。
【0017】
例えば、投影制御システム100は、検出部140として所定の領域を撮影して撮影画像を取得する少なくとも1つのカメラを備え、制御部110は、このカメラによって撮影された撮影画像から、所定の領域における2次元座標情報と深度情報とに基づく3次元情報を抽出してもよい。
【0018】
投影部150はプロジェクタ(投影装置)であり、光源、投影デバイス、レンズユニット等を備える。光源、投影デバイス等の方式は任意である。
【0019】
本実施の形態では、ユーザが作業台300に作業物310を置いて作業する際に、情報処理装置200に操作入力部130を介して例えば作業ガイドの投影を指示すると、制御部110は投影の前に、後述する平面検出処理を行い、平面検出処理で取得された検出平面に作業ガイドを投影する。
【0020】
制御部110が実行する平面検出処理について
図3を参照して説明する。まず、制御部110は検出部140に撮影を指示し、検出部140は当該指示に従って対象(例えば作業台300等)を撮影する(ステップS101)。
【0021】
そして、制御部110は、検出部140で撮影した対象の3次元位置を表す点群データを取得する(ステップS102)。これにより、例えば
図4に示すような点群データが得られる。なお、
図4には便宜上、撮影画像330にランダムに点が存在しているイメージの図を示しているが、実際には検出部140では、撮影画像330のピクセル毎に、当該ピクセルまでの距離(深度情報)が取得できている。したがって、実際には制御部110はステップS102で、撮影画像330に含まれる全てのピクセルの3次元位置を取得する。
【0022】
次に、制御部110は、取得した点群データをグリッド毎に分割する(ステップS103)。これにより、撮影画像330は、例えば
図5に示すように所定のグリッド331に分割される。
図5では、撮影画像330を縦5個×横8個の合計40個の正方形のグリッド331に分割している例を示しているが、グリッド331のサイズや分割数は任意である。また、グリッド331は正方形でなくてもよく、またグリッドサイズは全てのグリッド331で均等でなくてもよい。本実施の形態では基本的には撮影画像330全体で均等に点群データが取得されるので、均等なグリッドに分割しているが、例えば取得できる点群データに密度のムラが生じる場合には、点群データの密度が高い領域は細かいグリッドに分割し、密度が低い領域は大きなグリッドに分割するようにしてもよい。
【0023】
そして、制御部110は、RANSACを用いてグリッドそれぞれの平面パラメータを導出する(ステップS104)。なお、このステップで導出される平面パラメータは、グリッドの平面パラメータなので、グリッドパラメータとも呼ばれる。
【0024】
具体的には、まずステップS1-1として、
図6に示すように、グリッド331に含まれる点群データ(グリッド点群データ)の中から3点(例えば白丸332で示す3点)をランダムに選択し、この3点を通る平面(この例では三角形333を含む平面)の平面パラメータを導出する。平面パラメータとは平面を表す方程式ax+by+cz+d=0の係数a,b,c,dである。ただし、本実施の形態では、この平面が原点を通ることはない(3Dカメラ240の位置が原点となるが、原点を通る平面を検出する必要はないため)ので、dの値を1に正規化することにより、平面パラメータ(グリッドパラメータ)をa,b,cの3つの値で表すこととする。
【0025】
次に、ステップS1-2として、
図7に示すように、グリッド331に含まれる点群データの中から所定の選出数(例えばA個)の点(例えば網掛丸334で示す10点)をランダムに選出し、ステップS1-1で選択した3点で表される平面と本ステップで選出した点との距離をA個分すべて加算することにより、ステップS1-1で算出した平面パラメータの誤差を求める。
【0026】
以上のステップS1-1及びステップS1-2を所定のサンプリング回数(例えばB回)繰返し、誤差が最も小さくなる平面パラメータを、当該グリッド331の平面パラメータ(グリッドパラメータ)とする。
【0027】
図3に戻り、次に制御部110は、グリッドグループ生成処理を実行する(ステップS105)。この処理は、隣り合うグリッド331間で平面パラメータを比較して平面の連続性を判定し、平面が連続しているとみなせる複数のグリッド331を1つにグループ化してグリッドグループを生成する処理である。
【0028】
このグリッドグループ生成処理について
図8を参照して説明する。まず隣り合うグリッドの連続性を判定した結果を格納する配列変数B[i][j][k]を用意する。ここで、iはグリッドの上下方向の位置(一番上は0)、jはグリッドの左右方向の位置(一番左は0)、kは当該グリッドにおいて連続性を判定した方向(0は上、1は右、2は下、3は左)を表す。
【0029】
まず制御部110は、グリッドの位置を示す変数i,jを0に初期化する(ステップS201)。これにより、最も左上のグリッドから判定が開始されることになる。
【0030】
そして、制御部110は、隣り合うグリッドとの平面連続性を判定した結果(連続しているなら1、連続していないなら0)を配列変数B[i][j][k]に格納する(ステップS202)。平面連続性の判定は、グリッドパラメータの差が所定の条件を満たすか否か、より具体的にはグリッドパラメータの差が連続性判定閾値未満か否かで行われる。一例として、(i,j)に位置するグリッド1について、右隣の(i,j+1)に位置するグリッド2との平面連続性を判定する場合を説明する。この場合、グリッド1の右隣がグリッド2なのでk=1となる。そして、グリッド1の平面パラメータがa1,b1,c1で、グリッド2の平面パラメータがa2,b2,c2だったとする。
【0031】
この場合、a1-a2の絶対値、b1-b2の絶対値、c1-c2の絶対値が、全て連続性判定閾値未満なら、制御部110は、この2つのグリッドは連続していると判定し、B[i][j][1]に1を格納する。これらの3つの絶対値のうち、1つでも連続性判定閾値以上のものが存在したなら、制御部110は、この2つのグリッドは連続していないと判定し、B[i][j][1]に0を格納する。
【0032】
なお、平面性判定対象のグリッドが撮影画像330の端のグリッドだった場合には、撮影画像330の外側に向かう方向に隣り合うグリッドは存在しないので、制御部110は、その方向には平面が連続していないと判定する。例えば、撮影画像330の最も左上のグリッドの上方向にはグリッドが存在しないので、制御部110は、配列変数B[0][0][0]に0を格納する。
【0033】
ただし、グリッド内の点の深度(3Dカメラ240からの距離)の大小により平面パラメータの値のばらつきの大きさも変わる。具体的には、深度が小さい場合より大きい場合の方が平面パラメータの値のばらつきが大きくなる。したがって、深度に応じて連続性判定閾値を変化させた方が、より適切に平面の連続性の判定を行うことができる。そこで、例えば上述の例で、グリッド1内の点の深度(グリッド1内から任意に選択した1点の深度でも良いし、所定の個数を選択してそれらの深度を平均した値でもよい)がz1だった場合の連続性判定閾値を
m×z1+n
のように、深度に依存した値に設定してもよい。ただし、m,nは実験等により求めた定数とする。
【0034】
さらに、a1とa2の差の絶対値及びb1とb2の差の絶対値と比較する連続性判定閾値は深度に依存した値とし、z(深度と同じ方向の軸)の係数であるc1とc2の差の絶対値と比較する連続性判定閾値は深度に依存しない定数に設定してもよい。発明者が実験した結果、平面パラメータのうちa及びbの値のばらつきは深度に依存するが、cの値のばらつきは深度にあまり依存しないことが判明したからである。
【0035】
図8に戻り、制御部110は、変数i,jを更新する(ステップS203)。例えばグリッドの数が縦5個×横8個の合計40個であるなら、このステップではまずjに1を加算し、jが8になったら、jを0に戻してiに1を加算する。
【0036】
そして、制御部110は、全グリッドに対して平面の連続性を判定したか否かを判定する(ステップS204)。上述の例ではiが5になったら全グリッドに対して連続性の判定を行ったことになり、iが4以下ならまだ判定されていないグリッドが残っていることになる。
【0037】
まだ判定されていないグリッドが残っているなら(ステップS204;No)、ステップS202に戻る。全グリッドに対して平面の連続性を判定したなら(ステップS204;Yes)、制御部110は、変数i,jを0に初期化する(ステップS205)。
【0038】
そして、制御部110は、配列変数B[i][j][k]を参照し、隣り合うグリッドと平面が連続していたら、平面が連続しているグリッドに同じグループ番号を付与する(ステップS206)。より詳細には、位置(i,j)のグリッド(自グリッド)について、隣り合うグリッド(隣接グリッド)として右隣(i,j+1)のグリッド及び下(i+1,j)のグリッドとの連続性を確認し、連続していた場合に以下の付与ルールに従って同じグループ番号を付与する。
【0039】
‐自グリッドにも隣接グリッドにも番号が付与されていなければ未使用番号を割り振る。
‐自グリッドに番号が付与されていたら、その番号を隣接グリッドにも付与する。
‐隣接グリッドに番号が付与されていたら、その番号を自グリッドにも付与する。
‐自グリッドにも隣接グリッドにも番号が付与されていて、それらが異なる番号だったなら、小さい方の番号(統一番号)に統一し、大きい方の番号をルックアップテーブルに重複番号として登録。
‐ルックアップテーブルに登録された重複番号が付与されているグリッドのグループ番号を、当該重複番号に対応する統一番号に更新し、当該重複番号を未使用番号に戻す。
【0040】
そして制御部110は、変数i,jを更新する(ステップS207)。この処理は上述のステップS203の処理と同様である。
【0041】
そして、制御部110は、配列変数B[i][j][k]の全ての値を確認したか否かを判定する(ステップS208)。この判定は上述のステップS204での判定と同様にiの値で判定できる。
【0042】
まだ確認していない配列変数B[i][j][k]が残っているなら(ステップS208;No)、ステップS206に戻る。配列変数B[i][j][k]の全ての値を確認したなら(ステップS208;Yes)、同一のグループ番号が付与されたグリッドをグループ化してグリッドグループを生成し(ステップS209)、グリッドグループ生成処理を終了する。
【0043】
このグリッドグループ生成処理を行うことにより、例えば
図9で示すように平面が連続している各グリッド331には同じグループ番号が付与される。そして、同一のグループ番号が付与されたグリッド331をグループ化することで、
図10に示すようなグリッドグループ335が得られる。なお、本実施の形態では、ステップS209では最も多い個数のグリッドを含むグループ番号(
図10では1)が付与されたグリッド331のみをグループ化する。
【0044】
グリッドグループ生成処理においては、グループ番号の種類数だけ複数のグリッドグループが生成される可能性があるが、このように最も多い個数のグリッドを含むグループ番号が付与されたグリッド331のみをグループ化することにより、複数のグリッドグループが生成される場合でも、面積が最も大きいグリッドグループのみを選択することができる。そうすると、その後の処理はその選択したグリッドグループに対してのみ行えばよいので処理が高速化される。また、面積が最大のグリッドグループを対象に平面パラメータを導出することにより、他のグリッドグループを対象にした場合に比較して導出される平面パラメータの精度を向上させることができる。
【0045】
ただし、検出平面の用途によっては、面積が最大のグリッドグループだけを対象とするのではなく、全てのグリッドグループについて、それぞれ平面パラメータを導出したい場合も考えられる。したがって、制御部110は、最多数のグループ番号以外の番号が付与されたグリッド331についてもそれぞれ同一のグループ番号が付与されたグリッドをグループ化して、複数のグリッドグループ335を生成してもよい。この場合、後述する処理もそれぞれのグリッドグループに対して並行して行うことになる。
【0046】
図3に戻り、制御部110は、ステップS105で生成したグリッドグループ335の平面パラメータ(第1平面パラメータ)を導出する(ステップS106)。具体的には、制御部110は、グリッドグループ335に含まれる全ての点群データ(グリッドグループ点群データ)に最もフィットする平面の(すなわち、平面を検出するための)平面パラメータを最小二乗法により求め、第1平面パラメータとする。
【0047】
次に、制御部110は、ステップS102で取得された全ての3次元点群データの中から、ステップS106で導出した第1平面パラメータで表される平面からの法線距離が第1閾値未満である点群を抽出し、抽出した点群のうち連続しているものだけを選択して第1抽出点群とする(ステップS107)。ここで、「点群のうち連続しているもの」とは、撮影画像330中の当該点群に対応するピクセルが隣接している点群である。
【0048】
ステップS107の処理により、例えば
図11で示すように、グリッドグループ335から得られる平面Gとの距離が第1閾値未満の点群(例えば
図11に黒丸336で示されている点)が抽出され、平面Gとの距離が第1閾値以上の点群(例えば
図11に網掛丸337で示されている点)は抽出されない。さらに、これらの抽出された点群のうち、連続しているもの(例えば
図12に黒丸336で示されている点群)が選択され、連続していないもの(例えば
図12に白丸338で示されている点群)は選択されない。この結果、
図12に示す例では、黒丸336で示されている点群が第1抽出点群として抽出されることになる。
【0049】
図3に戻り、制御部110は、ステップS107で抽出された第1抽出点群から最小二乗法を用いて平面パラメータ(第2平面パラメータ)を導出する(ステップS108)。具体的には、制御部110は、第1抽出点群に含まれる全ての点に最もフィットする平面の(すなわち、平面を検出するための)平面パラメータを最小二乗法により求め、第2平面パラメータとする。
【0050】
次に、制御部110は、ステップS102で取得された全ての3次元点群データの中から、ステップS108で導出した第2平面パラメータで表される平面からの法線距離が第2閾値未満である点群を抽出し、抽出した点群のうち連続しているものだけを選択して第2抽出点群とする(ステップS109)。
【0051】
そして、制御部110は、第2抽出点群に含まれる連続した点群を全て連結して得られる平面領域を検出平面として取得し(ステップS110)、平面検出処理を終了する。
【0052】
ステップS109の処理により、例えば
図13で示すように、第2平面パラメータで表される平面Hとの距離が第2閾値未満の点群(例えば
図13に黒丸336及び白丸338で示されている点)が抽出され、これらの抽出された点群のうち、連続しているもの(例えば
図13に黒丸336で示されている点)が選択され、これらの選択された点群が第2抽出点群となる。そして、ステップS110の処理により、例えば
図14で示すように、ステップS109で抽出された第2抽出点群(例えば
図14に黒丸336で示されている点)を全て連結して得られる平面領域(例えば
図14に示されている平面領域339)が検出平面として取得される。
【0053】
なお、制御部110は、ステップS109の後に再度ステップS108に戻って新たな第2平面パラメータを導出する処理を所定の回数繰り返してもよい。すなわち、制御部110は、ステップS109で抽出された第2抽出点群から最小二乗法を用いて平面パラメータ(新たな第2平面パラメータ)を導出し、ステップS102で取得された全ての3次元点群データの中から、この新たな第2平面パラメータで表される平面からの法線距離が第2閾値未満である点群を抽出し、抽出した点群のうち連続しているものだけを選択して新たな第2抽出点群を抽出してもよい。
【0054】
さらにこの場合、直前の第2平面パラメータと新たに得られた第2平面パラメータとの差異が所定範囲内だったら、制御部110はステップS108に戻らずに、その時点での第2平面パラメータを最終的な第2平面パラメータとして、ステップS110に進んで検出平面を取得してもよい。
【0055】
また、グリッドグループ生成処理において複数のグリッドグループを生成した場合、制御部110は、各グリッドグループからそれぞれ別の検出平面を取得することになる。この場合、取得できた複数の検出平面を提示して、どの検出平面を採用するかユーザに選択させてもよい。また、何らかの基準(例えば、面積が最大、最も平坦、重心が最も中央に近い等)に従って、制御部110が1つの検出平面を選択してもよい。
【0056】
また、上述の第1閾値と第2閾値とは同じ値を設定してもよいし、異なる値を設定してもよい。これらの閾値が大きいと比較的広い平面が検出されやすくなる反面、検出された平面に凸凹が含まれやすくなる。基本的には、どのような平面を検出したいかによって第1閾値及び第2閾値には同じ値(広い面積を重視するなら大きめの値、平坦性を重視するなら小さめの値)を設定するのがよい。また、まず広めの平面に当たりを付けてから平坦性を重視した平面を検出したい場合には第1閾値より第2閾値を小さい値に設定するのがよい。逆に、まず平坦性を重視した平面に当たりを付けてから面積が広い平面を検出したい場合には第1閾値より第2閾値を大きい値に設定するのがよい。
【0057】
なお、平面検出処理(
図3)で取得される検出平面の形状は不定であるが、プロジェクタ250が投影するエリアは所定のアスペクト比の長方形である。したがって、制御部110は、平面検出処理で検出された検出平面の内部であって、検出平面に内接する所定のアスペクト比の長方形をプロジェクタ250の投影領域に設定してもよい。
【0058】
逆に、制御部110は、平面検出処理で検出された検出平面を内部に含むようにプロジェクタ250の投影領域を設定し、投影領域内の検出平面内に投影コンテンツを投影するようにしてもよい。
【0059】
また、投影制御システム100において、上述のように検出された平面に投影コンテンツを投影するためには、投影部150における座標(プロジェクタ座標)と検出部140における座標(カメラ座標)との対応関係の情報が必要になる場合がある。その場合には、この対応関係の情報を取得するために、事前にキャリブレーション処理を行っておく。
【0060】
キャリブレーション処理の処理内容は任意だが、例えば、まず作業台300の上に何も載置されていない状態で、市松模様のチェック画像を投影部150(プロジェクタ250)で作業台300に投影して、投影された画像を検出部140(3Dカメラ240)で撮影する。そして、制御部110は、撮影した画像中の各交点の座標(カメラ座標)と、元のチェック画像中の各交点の座標(プロジェクタ座標)とを対応させる。この両座標の対応に基づき、投影制御システム100は、作業台300上のある領域(カメラ座標で表される領域)に投影するには、どのような画像(プロジェクタ座標で表される画像)を投影すればよいか等、プロジェクタ座標とカメラ座標の対応関係の情報を取得することができる。
【0061】
以上説明した平面検出処理により、制御部110は、所定の領域における3次元情報から点群データを取得し、この所定の領域が分割された複数のグリッドそれぞれに含まれる点群データ(グリッド点群データ)に基づいて、グリッド単位での平面パラメータ(グリッドパラメータ)を導出するとともに、平面の連続性を考慮して複数の連続したグリッドから生成されたグリッドグループの平面パラメータ(第1平面パラメータ)を導出することができるので、平面を従来よりも精度良く検出することができる。
【0062】
また、上述のグリッドグループ生成処理においては、複数のグリッドグループが生成された場合、制御部110は、面積が最も大きいグリッドグループを選択し、選択したグリッドグループに含まれる点群データに基づいてグリッドグループの平面パラメータ(第1平面パラメータ)を導出することにより、処理の高速化と、平面パラメータの精度の向上を図ることができる。
【0063】
また、制御部110は、RANSACを用いて各グリッドの平面パラメータを導出することにより、導出されるグリッドパラメータの精度を向上させることができる。
【0064】
また、制御部110は、グリッドグループに含まれる全ての点群データ(グリッドグループ点群データ)に最もフィットする平面の平面パラメータ(第1平面パラメータ)を最小二乗法により導出することにより、導出される第1平面パラメータの精度を向上させることができる。
【0065】
また、制御部110は、第1平面パラメータが表す平面からの法線距離が第1閾値未満であり、かつ、グリッドグループに含まれるか又は隣接する点群データ(第1抽出点群)に基づいて第2平面パラメータを導出する。したがって、制御部110は、導出される第2平面パラメータの精度を第1平面パラメータの精度よりもさらに向上させることができる。
【0066】
また、制御部110は、第1抽出点群に含まれる全ての点に最もフィットする平面の平面パラメータを最小二乗法により導出することにより、導出される第2平面パラメータの
精度を向上させることができる。
【0067】
また、制御部110は、第2平面パラメータが表す平面からの法線距離が第2閾値未満である点群データ(第2抽出点群)からなる平面領域を検出平面として取得することにより、平面を従来よりも精度良く検出することができる。
【0068】
また、制御部110は、第2平面パラメータが表す平面からの法線距離が第2閾値未満である点群データである第2抽出点群に基づいて新たな第2平面パラメータを導出する処理を所定の回数繰り返して、最終的な第2平面パラメータを導出することにより、最終的に導出される第2平面パラメータの精度をさらに向上させることができる。
【0069】
また、制御部110は、上述のように新たな第2平面パラメータを導出する処理を所定の回数繰り返す際に、第2平面パラメータと新たな第2平面パラメータとの差異が所定範囲内だった場合には、それ以後新たな第2平面パラメータを導出する処理は繰り返さず、その時点での新たな第2平面パラメータを最終的な第2平面パラメータとすることにより、最終的に導出される第2平面パラメータの精度を落とさずに処理を高速化することができる。
【0070】
(変形例)
上述の実施の形態では、投影制御システム100は、投影部150を備え、情報処理装置200は、投影面(投影部150で投影するエリア)を検出するために平面検出処理を行っていた。しかし、これは平面検出処理の活用例の1つにすぎない。例えば、投影部150を備えないシステム(平面検出システム)においても、机の上の平面領域を検出して、その検出した平面領域を「物体等が存在しない作業エリアとして使用可能なエリア」としてディスプレイ等に表示する等の活用方法もある。これに限らず平面検出処理は、平面領域が必要になる用途であれば、任意の用途に用いることができる。
【0071】
また、上述の実施の形態では、投影面に用いる平面を検出するために、グリッドグループの生成においては、各グリッドの平面パラメータが類似しているだけでなく、グリッド同士が隣り合っていることも同じグループ番号が付与されるための条件としていた。しかし、各グリッドの平面パラメータが類似していることのみを条件として、同じグループ番号を付与するようにしてもよい。このようにすることにより、分断されている平面であっても、同一の平面として検出することができるようになる。例えば、机の中央部分に大きな作業物が載置されていて、机の上の左の平面領域と右の平面領域とが作業物で分断されていたとしても、左右の平面領域を1つの平面領域として検出可能になる。
【0072】
(その他の変形例)
なお、投影制御システム100は、PC210、3Dカメラ240、プロジェクタ250からなるシステムに限らず、測距機能を備えたプロジェクタ250単体のシステムや、3Dカメラ240とプロジェクタ250からなるシステムとして実現することもできる。また、上述の実施の形態では制御部110はPC210が備えるものとして説明したが、例えばプロジェクタ250が制御部110を備え、投影制御システム100の制御を全てプロジェクタ250の備える制御部110が行うようにしてもよい。また、投影が不要のシステム(平面検出システム)の場合には、PC210、3Dカメラ240からなるシステムとして実現することもできる。さらに、3Dカメラ240が、制御部110、記憶部120、操作入力部130を備えることにより、3Dカメラ240のみからなる平面検出システムを実現することもできる。
【0073】
また、情報処理装置200としてのPC210は、通常のPCに限らず、制御部110と記憶部120を備えたコンピュータであれば任意のコンピュータを用いることができる。情報処理装置200は、例えばワンボードマイコンでもよい。
【0074】
また、上記実施の形態では、制御部110が実行する平面検出処理等のプログラムが、記憶部120に予め記憶されているものとして説明した。しかし、プログラムを、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto-Optical disc)、メモリカード、USBメモリ等の非一時的なコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各処理を実行することができるコンピュータを構成してもよい。
【0075】
さらに、プログラムを搬送波に重畳し、インターネットなどの通信媒体を介して適用することもできる。例えば、通信ネットワーク上の掲示板(BBS:Bulletin Board System)にプログラムを掲示して配信してもよい。そして、このプログラムを起動し、OS(Operating System)の制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の各処理を実行できるように構成してもよい。
【0076】
また、制御部110は、シングルプロセッサ、マルチプロセッサ、マルチコアプロセッサ等の任意のプロセッサ単体で構成されるものの他、これら任意のプロセッサと、ASIC(Application Specific Integrated Circuit)やFPGA(Field‐Programmable Gate Array)等の処理回路とが組み合わせられて構成されてもよい。
【0077】
以上、本発明の好ましい実施の形態について説明したが、本発明は係る特定の実施の形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲とが含まれる。
【符号の説明】
【0078】
100…投影制御システム、110…制御部、120…記憶部、130…操作入力部、140…検出部、150…投影部、200…情報処理装置、210…PC、240…3Dカメラ、250…プロジェクタ、300…作業台、310…作業物、320,339…平面領域、330…撮影画像、331…グリッド、332,338…白丸、333…三角形、334,337…網掛丸、335…グリッドグループ、336…黒丸