(57)【要約】【課題】３次元スキャンを行ったその場で、実物を用いた直感的な操作を行うことができる画像処理装置を提供する。【解決手段】ステージ２０４に載置された物体１６０１の三次元形状を計測し、計測した三次元形状を色などに基づいて分割し、分割結果を、プロジェクタ２０７を用いて物体１６０１の表面に投影する。また、指先１６０４による物体１６０１へのタッチを検出し、タッチが分割されたどの部分にされたかを判定し、ユーザーの指示が、分割されたデータのどの部分になされたのかを視覚的に示す。【選択図】図１８
2016038820.tif 000002
【特許請求の範囲】
【請求項１】
物体を載置するためのステージと、
画像を投影するためのプロジェクタと、
前記ステージに載置された物体の３次元形状およびその姿態を計測する計測手段と、
計測された３次元形状を所定規則にしたがって分割し、分割された分割画像の集合である物体画像を生成するとともに、生成した物体画像を前記プロジェクタに供給し、該プロジェクタから前記物体の姿態に応じた角度で前記物体の表面または当該物体の近傍の前記ステージへ投影させる制御手段と、
を備えて成る、画像処理装置。
【請求項２】
前記物体に対するユーザの接触部位を認識する認識手段を備えており、
前記制御手段は、認識された前記接触部位が他の部位と異なる表示態様となるように前記物体画像を生成する、
請求項１記載の画像処理装置。
【請求項３】
前記物体画像の前記認識された接触部位に対する編集の指示を受け付ける受付手段を備えており、
前記制御手段は、受け付けた指示に従って当該物体画像を編集し、編集された前記物体画像を前記プロジェクタから前記物体の表面または当該物体の近傍の前記ステージへ投影させる、
請求項２記載の画像処理装置。
【請求項４】
前記制御手段は、前記指示が前記分割画像の削除である場合に、前記物体画像から当該分割画像を消去する、
請求項３記載の画像処理装置。
【請求項５】
前記制御手段は、前記指示が前記分割画像の色変更である場合に、色変更が指示された分割画像の色を変更する、
請求項３記載の画像処理装置。
【請求項６】
前記物体が複数色の部材で構成されており、
前記制御手段は、前記３次元形状を形状と色の両方で分割することにより前記分割画像を決定する、
請求項３ないし５のいずれか１項記載の画像処理装置。
【請求項７】
前記３次元形状の編集の形態が変更可能である、
請求項６記載の画像処理装置。
【請求項８】
前記制御手段は、前記３次元形状の編集の形態に応じて、前記認識された接触部位の表示態様を変更させる、
請求項７記載の画像処理装置。
【請求項９】
前記制御手段は、前記３次元形状の分割ができなかったときにエラー情報を出力する、
請求項１ないし８のいずれか１項記載の画像処理装置。
【請求項１０】
前記３次元形状の分割は複数の分割形態に切替可能であり、
前記制御手段は、いずれかの分割形態を他の分割形態に切り替える際に前記エラー情報を出力する場合は、分割形態の切り替えを行わない、
請求項９記載の画像処理装置。
【請求項１１】
前記制御手段は、前記３次元形状の分割ができなかった場合は、前記切り替えができないようにする、
請求項１０記載の画像処理装置。
【請求項１２】
前記制御手段は、前記物体の死角になる部分が当該物体に存在するときは、前記死角が少なくなる位置まで、当該物体を変位させる、
請求項１ないし１１のいずれか１項記載の画像処理装置。
【請求項１３】
前記ステージを回転させるターンテーブルを有し、
前記制御手段は、前記死角が少なくなる位置まで、前記ターンテーブルを回転させる、請求項１２記載の画像処理装置。
【請求項１４】
前記物体が書籍であり、
前記制御手段は、前記書籍に対応する前記物体画像に対してブロック単位での分離を施す像域分離処理を行い、この像域分離処理により分離された各ブロックの画像を前記プロジェクタにより前記書籍原稿へ投影する、
請求項１ないし１３のいずれか１項記載の画像処理装置。
【請求項１５】
前記制御手段は、前記物体画像へのユーザーによる接触態様を検出し、前記物体画像のどの部分に接触されたかを特定するとともに、接触された部位の画像を保存する、
請求項１４記載の画像処理装置。
【請求項１６】
前記制御手段は、前記物体画像に対応する３次元形状の物体をプリントするプリンタ装置へ送出するためのプリントジョブを生成する、
請求項１ないし１５のいずれか１項記載の画像処理装置。
【請求項１７】
物体を載置するためのステージと、画像を投影するためのプロジェクタとを有するコンピュータを、
前記ステージに載置された物体の３次元形状およびその姿態を計測する計測手段、
計測された３次元形状を所定規則にしたがって分割し、分割された分割画像の集合である物体画像を生成するとともに、生成した物体画像を前記プロジェクタに供給し、該プロジェクタから前記物体の姿態に応じた角度で前記物体の表面または当該物体の近傍の前記ステージへ投影させる制御手段として動作させる、
制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、平面物および立体物のデータ化を行い、保存する際の編集を容易にする画像処理装置および制御プログラムに関する。
【背景技術】
【０００２】
近年、３Ｄ（３次元（「three dimensions」）の俗称、以下同じ）スキャナや３Ｄプリンタといった３次元データを扱う技術の研究が盛んである。３Ｄスキャナは、三角測量の原理等を用いて物体の３次元形状を取得し、データ化する。３Ｄプリンタは、例えば樹脂材料を積層するなどして３次元データを実体化する。近年の３Ｄプリンタでは、一部分だけ色や材質を変更することが可能になっている。
従来、３Ｄスキャナや３Ｄプリンタで扱うデータを部分的に編集するには、ＣＡＤ（computer aided design）データ等をＰＣ（パーソナルコンピュータの略、以下同じ）で編集する必要があった。また、ＣＡＤデータを用いて部分的な編集を行う箇所を指定する必要があり、ＣＡＤに関する専門知識が必要であった。このような問題を解決すべく、特許文献１には、３Ｄエディタ上で輪郭を用いて３次元データを編集する技術が開示されている。この技術では、３Ｄエディタを用いて輪郭情報から所望の部分を切り出し、拡大縮小などの編集を可能としている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１３９４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された技術では、３Ｄスキャナにより３次元データを取り込んだその場で部分的な編集をすることはできない。
本発明の主たる課題は、例えば物体形状を表す３次元データを取り込んだその場で、物体の実物を用いて部分的な編集の指示を行うことを可能とする画像処理装置を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の画像処理装置は、物体を載置するためのステージと、画像を投影するためのプロジェクタと、前記ステージに載置された物体の３次元形状およびその姿態を計測する計測手段と、計測された３次元形状を所定規則にしたがって分割し、分割された分割画像の集合である物体画像を生成するとともに、生成した物体画像を前記プロジェクタに供給し、該プロジェクタから前記物体の姿態に応じた角度で前記物体の表面または当該物体の近傍の前記ステージへ投影させる制御手段とを備えて成る装置である。
【発明の効果】
【０００６】
本発明によれば、物体の３次元形状を分割した上で、その分割画像の集合である物体画像を、プロジェクタを用いて物体の姿勢に応じた角度で物体の表面またはステージに投影される。そのため、物体がステージに載置された状態で、現物を用いた直感的な操作が可能となり、操作性を大きく向上させることができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１実施形態の画像処理装置の全体構成図。
【図２】３Ｄスキャナの構成および座標系の説明図。
【図３】コントローラ部のハードウェア構成図。
【図４】３Ｄスキャナのソフトウエアモジュールの機能構成図。
【図５】ソフトウエアモジュールの機能間の関係説明図。
【図６】（ａ），（ｂ），（ｃ）は距離センサ部の説明図。
【図７】距離画像取得部の処理手順説明図。
【図８】ジェスチャー認識部の処理手順説明図。
【図９】（ａ）〜（ｄ）は手の形状および指先の検出過程の説明図。
【図１０】（ａ）は物体検知部、（ｂ）は物体載置検知処理、（ｃ）は物体除去検知処理の各手順説明図。
【図１１】平面原稿画像撮影部の処理手順説明図。
【図１２】平面原稿画像撮影部の処理を説明するための模式図。
【図１３】（ａ），（ｂ）は書籍画像撮影部４１２の処理手順説明図。
【図１４】書籍画像撮影部が行う処理の内容の模式図。
【図１５】立体形状測定部が実行する処理手順説明図。
【図１６】立体形状測定部の処理を説明するための模式図。
【図１７】メイン制御部が実行するスキャンアプリケーションの処理手順説明図。
【図１８】物体を３次元スキャンした際の、編集操作の一例を模式的に表した図。
【図１９】第１実施形態でメイン制御部が実行する分割投影処理の手順説明図。
【図２０】（ａ）〜（ｄ）はステージにおける物体の状態を示す模式図。
【図２１】第２実施形態でメイン制御部が実行する分割投影処理の手順説明図。
【図２２】（ａ）〜（ｃ）は、図２１における処理の模式図。
【図２３】第３実施形態でメイン制御部が実行する分割投影処理の手順説明図。
【図２４】（ａ）〜（ｃ）は、図２３における処理の模式図。
【図２５】第４実施形態でメイン制御部が実行する分割投影処理の手順説明図。
【図２６】（ａ）〜（ｃ）は図２５の処理の模式図。
【図２７】第５実施形態でメイン制御部が実行する分割投影処理の手順説明図。
【図２８】（ａ）〜（ｃ）は、図２７の処理の模式図。
【発明を実施するための形態】
【０００８】
以下、本発明の実施の形態例を説明する。
［第１実施形態］
図１は、本発明の第１実施形態の画像処理装置の全体構成図である。画像処理装置１は、３Ｄスキャナ１０１、ホストコンピュータ１０２およびプリンタ１０３をイーサネット等のネットワーク１０４に接続して構成される。３Ｄスキャナ１０１は、ホストコンピュータ１０２の指示により画像を読み取り、スキャンデータを出力する。このような機能をスキャン機能と呼ぶ。プリンタ１０３は、スキャンデータをプリントアウトする。このような機能をプリント機能と呼ぶ。なお、ホストコンピュータ１０２を介さず、３Ｄスキャナ１０１を直接操作して、スキャン機能、プリント機能を行うことも可能である。
【０００９】
＜３Ｄスキャナの構成＞
図２は、３Ｄスキャナ１０１の構成および座標系の説明図である。３Ｄスキャナ１０１は、図２（ａ）に示すように、コントローラ部２０１、カメラ部２０２、腕部２０３、短焦点プロジェクタ２０７、距離センサ部２０８を有する。コントローラ部２０１、カメラ部２０２、短焦点プロジェクタ２０７および距離センサ部２０８は、腕部２０３により連結されている。腕部２０３は、関節を用いて曲げ伸ばしが可能である。
【００１０】
図２（ａ）には、３Ｄスキャナ１０１が設置されているステージ２０４が示されている。ステージ２０４は物体を載置するためのものであり、書類の原稿を載置する用途では特に「書画台」と呼ばれる。カメラ部２０２のレンズおよび距離センサ部２０８のセンサは、ステージ２０４に向けられている。３Ｄスキャナ１０１は、破線で囲まれた読み取り領域２０５内の画像を読み取ることができる。図示の例では、原稿２０６が読み取り領域２０５内に置かれている。そのため、３Ｄスキャナ１０１は、この原稿２０６を読み取ることができる。ステージ２０４はターンテーブル２０９上に設けられる。ターンテーブル２０９は、コントローラ部２０１からの指示により回転する。そのため、ステージ２０４に載置された物体に対するカメラ部２０２の角度を変えることができる。
【００１１】
カメラ部２０２は、単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像とを選択できるものとすることが好ましい。なお、図２には示されていないが、３Ｄスキャナ１０１は、ＬＣＤ（Liquid Crystal Display）タッチパネル３３０およびスピーカ３４０をさらに含むこともできる。
【００１２】
図２（ｂ）は、３Ｄスキャナ１０１における座標系の説明図である。３Ｄスキャナ１０１では、カメラ部２０２などのようなハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。
これらの座標系では、カメラ部２０２および距離センサ部２０７のＲＧＢカメラ部５０３が撮像する画像平面、あるいは、プロジェクタ２０７が投射する画像平面をＸＹ平面とする。また、画像平面に直交した方向をＺ方向とする。そのため、カメラ座標系は、Ｘｃ，Ｙｃ，Ｚｃで定義される。距離画像座標系は、Ｘｓ，Ｙｓ，Ｚｓで定義される。プロジェクタ座標系は、Ｘｐ，Ｙｐ，Ｚｐで定義される。これらの座標系は独立している。この独立した座標系の３次元データを統一的に扱えるようにするため、本実施形態では、ステージ２０４を含む平面をＸＹ平面とする。また、このＸＹ平面から上方に垂直な向きをＺ軸とする直交座標系を定義する。
【００１３】
図２（ｃ）は、直交座標系と、カメラ部２０２を中心としたカメラ座標系を用いて表現された空間と、カメラ部２０２が撮像する画像平面との関係を示す説明図である。直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］は、以下の（１）式により、カメラ座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］に変換される。
【数１】
2016038820.tif 000003
（１）式のＲｃおよびｔｃは、直交座標系に対するカメラの姿勢（回転）と位置（並進）などの外部パラメータにより定まる。Ｒｃは３×３の回転行列、ｔｃを並進ベクトルである。逆に、カメラ座標系で定義された３次元点は、以下の（２）式によって直交座標系に変換される。
【数２】
2016038820.tif 000004
【００１４】
カメラ部２０２で撮影される２次元のカメラ画像平面は、カメラ部２０２によって３次元空間中の３次元情報が２次元情報に変換されたものである。すなわち、カメラ座標系上での３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］を、以下の（３）式によってカメラ画像平面での２次元座標ｐｃ［ｘｐ，ｙｐ］に透視投影変換することで算出することができる。
【数３】
2016038820.tif 000005
Ａは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される３×３の行列である。
【００１５】
上記（１）式および（３）式を用いることで、直交座標系で表された３次元点群を、カメラ座標系での３次元点群座標やカメラ画像平面に変換することができる。なお、各ハードウェアデバイスの内部パラメータおよび直交座標系に対する位置姿勢（外部パラメータ）は、公知のキャリブレーション手法によりあらかじめキャリブレートされているものとする。以後、特に断りがなく「３次元点群」と表記した場合は、直交座標系における３次元データを表すものとする。
【００１６】
＜コントローラの構成＞
図３は、コントローラ部２０１のハードウェア構成例を示す図である。コントローラ部２０１は、ＣＰＵ３０２、ＲＡＭ３０３、ＲＯＭ３０４、ＨＤＤ３０５をシステムバス３０１に接続して構成される。システムバス３０１には、ネットワークＩ／Ｆ（Ｉ／Ｆはインタフェースの略、以下同じ）３０６、画像処理プロセッサ３０７、カメラＩ／Ｆ３０８、ディスプレイコントローラ３０９も接続されている。さらに、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１およびＵＳＢ（Universal Serial Bus）コントローラ３１２も接続されている。
【００１７】
ＣＰＵ（Central Processing Unit）３０２は、起動用プログラムおよび制御用プログラムを読み込んで実行することにより、コントローラ部２０１全体の動作を制御する。ＲＡＭ（Random Access Memory）３０３は揮発性メモリであり、ＣＰＵ３０２のワークエリアとして使用される。ＲＯＭ（Read Only Memory）３０４は不揮発性メモリであり、起動用プログラムや各種パラメータが格納されている。ＨＤＤ（Hard Disk Drive）３０５は大容量ストレージとなるハードディスクドライブである。ＨＤＤ３０５には３Ｄスキャナ１０１の制御用プログラム、この制御用プログラムの動作に必要な各種設定情報、後述する画像分割のための規則、カメラ入力によって生成した画像データなどが格納される。格納された制御用プログラム、設定情報、規則、画像データなどは、ＣＰＵ３０２によって読み書きされる。
【００１８】
ＣＰＵ３０２は、電源ＯＮなどを契機に起動用プログラムを読み込み、実行する。起動用プログラムは、ＨＤＤ３０５に格納されている制御用プログラムを読み出し、ＲＡＭ３０３上に展開するためのものである。ＣＰＵ３０２は、起動用プログラムを実行すると、次いでＲＡＭ３０３上に展開された制御用プログラムを実行し、後述する各種の制御を行う。ＣＰＵ３０２は、また、制御用プログラムによる動作用データやパラメータをＲＡＭ３０３に格納して読み書きを行う。ＣＰＵ３０２は、ネットワークＩ／Ｆ３０６を介してネットワーク１０４上の他の機器との通信を行う。
【００１９】
画像処理プロセッサ３０７は、ＲＡＭ３０３に格納された画像データを読み出して所要の画像処理を行い、ＲＡＭ３０３へ書き戻す。画像処理は、回転、変倍、色変換等である。カメラＩ／Ｆ３０８は、カメラ部２０２および距離センサ部２０８と接続されており、ＣＰＵ３０２からの指示に応じてカメラ部２０２から画像データを、距離センサ部２０８から距離画像データを取得してＲＡＭ３０３へ書き込む。また、ＣＰＵ３０２からの制御コマンドをカメラ部２０２および距離センサ部２０８へ送信し、カメラ部２０２および距離センサ部２０８の設定を行う。
【００２０】
コントローラ部２０１は、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１およびＵＳＢコントローラ３１２のうち少なくとも１つをさらに含むことができる。ディスプレイコントローラ３０９は、ＣＰＵ３０２の指示に応じてディスプレイへの画像データの表示を制御する。ディスプレイコントローラ３０９は、短焦点プロジェクタ２０７およびＬＣＤタッチパネル３３０に接続されている。
シリアルＩ／Ｆ３１０は、シリアル信号の入出力を行う。シリアルＩ／Ｆ３１０はターンテーブル２０９に接続されており、ＣＰＵ３０２の回転開始・終了および回転角度の指示をターンテーブル２０９へ送信する。また、シリアルＩ／Ｆ３１０はＬＣＤタッチパネル３３０に接続されており、ＣＰＵ３０２がＬＣＤタッチパネル３３０が押下されたときに、シリアルＩ／Ｆ３１０を介して押下された座標を取得する。
【００２１】
オーディオコントローラ３１１はスピーカ３４０に接続され、ＣＰＵ３０２の指示に応じて音声データをアナログ音声信号に変換し、スピーカ３４０を通じて音声を出力する。ＵＳＢコントローラ３１２はＣＰＵ３０２の指示に応じて外付けのＵＳＢデバイスの制御を行う。ここでは、ＵＳＢコントローラ３１２はＵＳＢメモリやＳＤカードなどの外部メモリ３５０に接続され、外部メモリ３５０へのデータの読み書きを行う。
【００２２】
＜画像処理装置の機能構成＞
ＣＰＵ３０２は、制御用プログラムを実行することにより、３Ｄスキャナ１０１に複数のソフトウエアモジュールを形成する。図４は、ソフトウエアモジュールの機能構成図であり、図５は機能間の関係説明図である。以下、図４および図５を参照して画像処理装置において実現される機能について説明する。
メイン制御部４０２は、ソフトウエアモジュール４０１の各モジュール間の動作を統括的に制御する制御手段として機能する。メイン制御部４０２の具体的な制御内容については後述する。
【００２３】
画像取得部４１６は、カメラ画像取得部４０７、距離画像取得部４０８を有する。カメラ画像取得部４０７はカメラＩ／Ｆ３０８を介してカメラ部２０２が出力する画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８はカメラＩ／Ｆ３０８を介して距離センサ部２０８が出力する距離画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８の処理の詳細については後述する。
【００２４】
認識処理部４１７は、カメラ画像取得部４０７、距離画像取得部４０８と協働で、物体に対するユーザの接触部位を認識する認識手段として機能する。そのために、認識処理部４１７は、ジェスチャー認識部４０９、物体検知部４１０を有する。ジェスチャー認識部４０９は、画像取得部４１６からステージ２０４上の画像を取得し続け、ユーザーによる物体への接触態様、例えばタッチなどのジェスチャーを検知すると、タッチされた物体上の部位などをメイン制御部４０２へ通知する。物体検知部４１０は、メイン制御部４０２から物体載置待ち処理あるいは物体除去待ち処理の通知を受けると、画像取得部４１６からステージ２０４を撮像した画像を取得する。そして、ステージ２０４上に物体が置かれて静止するタイミングあるいは物体が取り除かれるタイミングを検知する処理を行う。ジェスチャー認識部４０９、物体検知部４１０の処理の詳細については後述する。
【００２５】
スキャン処理部４１８は、画像取得部４１６と協働で、ステージ２０４に載置された物体の３次元形状およびその姿態を計測する計測手段として機能する。そのために、スキャン処理部４１８は、平面原稿画像撮影部４１１、書籍画像撮影部４１２、立体形状測定部４１３を有する。平面原稿画像撮影部４１１は平面原稿、書籍画像撮影部４１２は書籍、立体形状測定部４１３は物体に、それぞれ適した処理を実行し、それぞれに応じた形式のデータを出力する。これらのモジュールの処理の詳細については後述する。
【００２６】
ユーザーインターフェイス部４０３は、ＧＵＩ部品生成表示部４１４と投射領域検出部４１５を有する。ＧＵＩ部品生成表示部４１４は、メイン制御部４０２からの要求を受け、メッセージやボタン等のＧＵＩ部品を生成する。そして、表示部４０６へ生成したＧＵＩ部品の表示を要求する。なお、ステージ２０４上のＧＵＩ部品の表示場所は、投射領域検出部４１５により検出される。表示部４０６はディスプレイコントローラ３０９を介して、短焦点プロジェクタ２０７もしくはＬＣＤタッチパネル３３０へ要求されたＧＵＩ部品の表示を行う。プロジェクタ２０７は、投射元がステージ２０４に向けて設置されているため、ステージ２０４上にＧＵＩ部品の画像を投射することができる。また、ユーザーインターフェイス部４０３は、ジェスチャー認識部４０９が認識したユーザーの接触態様（ジェスチャーの内容）、あるいはシリアルＩ／Ｆ３１０を介したＬＣＤタッチパネル３３０からの入力操作、そしてさらに入力された部位の座標などを受信する。そして、ユーザーインターフェイス部４０３は描画中の操作画面の内容と操作座標を対応させて操作内容（押下されたボタン等）を判定する。この操作内容をメイン制御部４０２へ通知することにより、操作者の操作を受け付ける（受付手段）。
【００２７】
ネットワーク通信部４０４は、ネットワークＩ／Ｆ３０６を介して、ネットワーク１０４上の他の機器とＴＣＰ／ＩＰによる通信を行う。データ管理部４０５は、制御用プログラムの実行において生成した作業データなど様々なデータをＨＤＤ３０５上の所定の領域へ保存し、管理する。例えば平面原稿画像撮影部４１１、書籍画像撮影部４１２、立体形状測定部４１３が生成したスキャンデータなどである。
【００２８】
＜距離センサ部および距離画像取得部＞
距離センサ部２０８および距離画像取得部４０８は、距離の計測手段として機能する。図６（ａ）は距離センサ部２０８の配置図、同（ｂ），（ｃ）はパターン投射方式による距離画像の計測原理の説明図である。また、図７は、距離画像取得部４０８の処理手順説明図である。
図６（ａ）を参照し、距離センサ部２０８は、赤外線パターン投射部３６１、赤外線カメラ３６２およびＲＧＢカメラ３６３を含んで構成される。赤外線パターン投射部３６１は、計測対象となる物体５２１に対し、人の目には不可視である赤外線によって３次元形状測定パターン５２２を投射する。３次元形状測定パターン５２２は、格子またはドットをマトリクスに配したドットマトリクスのようなものである。赤外線カメラ３６２は物体５２１に投射した３次元形状測定パターンを撮像する。ＲＧＢカメラ３６３は、物体５２１を人の目に見える可視光でＲＧＢ信号として撮像する。図６（ｂ）はＲＧＢカメラ画像５２３および赤外線カメラ画像５２４を示す。赤外線カメラ３６２とＲＧＢカメラ３６３とは設置位置が異なる。そのため、図６（ｃ）に示すように、ＲＧＢカメラ画像５２３および赤外線カメラ画像５２４の撮影領域が異なる。
【００２９】
図７を参照し、距離画像取得部４０８は、図６（ａ）に示すように赤外線パターン投射部３６１を用いて赤外線による３次元形状測定パターン５２２を物体５２１に投射する（Ｓ５０１）。また、ＲＧＢカメラ３６３によりＲＧＢカメラ画像５２３を得、赤外線カメラ３６２により赤外線カメラ画像５２４を得る（Ｓ５０２）。距離画像取得部４０８は、赤外線カメラ３６２の座標系からＲＧＢカメラ３６３の座標系への座標系変換を行い、赤外線カメラ画像５２４をＲＧＢカメラ画像５２３の座標系に合わせる（Ｓ５０３）。赤外線カメラ３６２とＲＧＢカメラ３６３の相対位置や、それぞれの内部パラメータは、事前のキャリブレーション処理により既知であるものとする。
【００３０】
その後、図６（ｃ）に示されるように、３次元形状測定パターン５２２とＳ５０３で座標変換された赤外線カメラ画像５２４との間の対応点を抽出する（Ｓ５０４）。例えば、赤外線カメラ画像５２４上の１点を３次元形状測定パターン５２２上から探索し、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像５２４の画素の周辺のパターンを３次元形状測定パターン５２２上から探索し、一番類似度が高い部分と対応付けてもよい。
【００３１】
赤外線パターン投射部３６１と赤外線カメラ３６２を結ぶ直線を、図６（ａ）に示される基線５２５として三角測量の原理を用いて計算し、赤外線カメラ３６２からの距離を算出する（Ｓ５０５）。Ｓ５０４で対応付けができた画素については、赤外線カメラ３６２からの距離を算出して画素値として保存する。対応付けができなかった画素については、距離計測ができなかった部分として無効値を保存する。これをＳ５０３で座標変換を行った赤外線カメラ画像５２４の全画素に対して行う。このようにして、画素毎に距離値が関連付けられた距離画像を生成する。
【００３２】
距離画像の各画素にＲＧＢカメラ画像５２３のＲＧＢ値を関連付けることにより、１画素につきＲ（赤）、Ｇ（緑）、Ｂ（青）、距離の４つの値を持つ距離画像を生成する（Ｓ５０６）。ここで取得した距離画像は、距離センサ部２０８のＲＧＢカメラ３６３で定義された距離センサ部座標系が基準となっている。そこで上述したように、距離センサ部座標系として得られた距離データを直交座標系における３次元点群に変換する（Ｓ５０７）。以後、特に指定がなく３次元点群と表記した場合は、直交座標系における３次元点群を示すものとする。
【００３３】
なお、本実施形態では、上述したように距離センサ部２０８として赤外線パターン投射方式を採用しているが、他の方式の距離センサ部を用いることも可能である。例えば、２つのＲＧＢカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するＴＯＦ（Time of Flight）方式を用いても構わない。
【００３４】
＜ジェスチャー認識部＞
ジェスチャー認識部４０９の処理手順例を、図８を参照して説明する。図８を参照すると、ジェスチャー認識部４０９は、初期化処理を行う（Ｓ６０１）。初期化処理により、ジェスチャー認識部４０９は、距離画像取得部４０８から上記の距離画像を１フレーム取得する。ジェスチャー認識部４０９の開始時は、ステージ２０４上に物体が置かれていない状態である。そのため、初期状態として、ステージ２０４の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル（以降、ステージ２０４の平面パラメータと呼ぶ）とを算出し、ＲＡＭ３０３に保存する。
【００３５】
ステージ２０４上に物体が載置されると、ジェスチャー認識部４０９は、その物体の３次元点群を取得する（Ｓ６０２）。その際、距離画像取得部４０８から距離画像と３次元点群を１フレーム取得する（Ｓ６２１）。また、ステージ２０４の平面パラメータを用いて、取得した３次元点群からステージ２０４を含む平面にある点群を除去する（Ｓ６２２）。ジェスチャー認識部４０９は、また、取得した３次元点群からユーザーの手の形状および指先を検出する（Ｓ６０３）。その詳細をＳ６３１〜Ｓ６３４に示す。
【００３６】
ジェスチャー認識部４０９による手の形状および指先の検出要領を図９（ａ）〜（ｄ）を参照して説明する。ジェスチャー認識部４０９は、Ｓ６０２で取得した３次元点群から、ステージ２０４を含む平面から所定の高さ以上にある、肌色の３次元点群を抽出することで、手の３次元点群を得る（Ｓ６３１）。そして、抽出した手の３次元点群を、ステージ２０４の平面に射影した２次元画像を生成し、その手の外形を検出する（Ｓ６３２）。図９（ａ）は、肌色の３次元点群７０１とステージ２０４の平面に投射した３次元点群７０２を表している。投射は、点群の各座標をステージ２０４の平面パラメータを用いて行う。また、図９（ｂ）に示すように、投影した３次元点群から、ｘｙ座標の値だけを取り出せば、ｚ軸方向から見た２次元画像７０３として扱うことができる。このとき、手の３次元点群の各点が、ステージ２０４の平面に投影した２次元画像の各座標のどれに対応するかを、記憶しておくものとする。ジェスチャー認識部４０９は、その後、検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する（Ｓ６３３）。
【００３７】
図９（ｃ）は、外形の曲率から指先を検出する要領を表す。点７０４は、ステージ２０４の平面に投影された２次元画像７０３の外形を表す点の一部を表している。ここで、点７０４のような、外形を表す点のうち、隣り合う５個の点を含むように円を描くことを考える。円７０５，７０７が、その例である。この円７０５，７０７を、全ての外形の点に対して順に描き、その直径（例えば７０６，７０８）が所定の値より小さい（曲率が小さい）部分を指先と判別する。この例では、隣り合う５個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。その後、検出した指先の個数および各指先の座標を算出する（Ｓ６３４）。前述したように、ステージ２０４に投影した２次元画像の各点と、手の３次元点群の各点の対応関係を記憶しているため、各指先の３次元座標を得ることができる。
【００３８】
なお、図９では３次元点群から２次元画像に投影した画像から指先を検出する例を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、ＲＧＢカメラ画像の肌色領域から手の領域を抽出し、上に述べたのと同様の方法（外形の曲率計算等）で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標は、ＲＧＢカメラ画像や距離画像のような２次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の３次元座標に変換する必要がある。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
【００３９】
図８に戻り、ジェスチャー認識部４０９は、検出した手の形状および指先からのジェスチャー判定処理を行う（Ｓ６０４）。その詳細をＳ６４１〜Ｓ６４６に示す。
ジェスチャー認識部４０９は、まず、Ｓ６０３で検出した指先が１つかどうかを判定する（Ｓ６４１）。指先が１つでなければ（Ｓ６４１：ＮO）ジェスチャー無しと判定する（Ｓ６４６）。Ｓ６４１において検出した指先が１つであれば（Ｓ６４１：ＹＥＳ）、ジェスチャー認識部４０９は、検出した指先とステージ２０４を含む平面との距離を算出する（Ｓ６４２）。ジェスチャー判定に際しては、ステージ２０４上に物体点群が存在するかどうかを確かめる（Ｓ６５１）。物体点群は、手領域の３次元点群と同じく、直交座標系の座標情報を持った点群データである。物体点群の意味は、ステージ２０４上におかれた物体の３次元点群データのことをいうものとする。図９（ｄ）の例でいえば、点７０９の集まりが物体点群を表現している。物体点群の取得処理については後述する。
【００４０】
Ｓ６５１において物体点群が存在すると判定した場合（Ｓ６５１：ＹＥＳ）、ジェスチャー認識部４０９は、検出した指先と物体点群の距離を算出する（Ｓ６５２）。算出手法は図９（ｄ）に示した通り、指先点７０８から点７０９を含む物体点群のすべての点の座標までの距離を算出し、最も距離が短かったものを物体点群との距離とする。Ｓ６５１において物体点群が存在しないと判定した場合（Ｓ６５１：ＮＯ）はＳ６４３へ進む。
ジェスチャー認識部４０９は、Ｓ６５２で算出された距離が微小な所定値以下であるかどうかを判定する（Ｓ６５３）。所定値以下であれば（Ｓ６５３：ＹＥＳ）、物体タッチジェスチャーありと判定する（Ｓ６５４）。所定値を超える場合（Ｓ６５３：ＮＯ）Ｓ６４３へ進む。
【００４１】
ジェスチャー認識部４０９は、Ｓ６４３において、Ｓ６４２で算出した距離が微小な所定値以下であるかどうかを判定する（Ｓ６４３）。微小な所定値以下であれば（Ｓ６４３：ＹＥＳ）、指先がステージ２０４へタッチした、平面タッチジェスチャーと判定する（Ｓ６４４）。Ｓ６４３においてＳ６４２で算出した距離が所定値以下で無ければ（Ｓ６４３：ＮＯ）、指先移動ジェスチャー（タッチはしていないが指先がステージ２０４上に存在するジェスチャー）と判定する（Ｓ６４５）。
その後、ジェスチャー認識部４０９は、判定したジェスチャーをメイン制御部４０２へ通知し、Ｓ６０２へ戻ってジェスチャー認識処理を繰り返す（Ｓ６０５）。
【００４２】
＜物体検知部の処理＞
図１０（ａ）を参照して物体検知部４１０の処理手順を説明する。物体検知部４１０は、まず、初期化処理を行う（Ｓ８０１）。すなわち、カメラ画像取得部４０７からカメラ画像を、距離画像取得部４０８から距離画像をそれぞれ１フレーム取得する（Ｓ８１１）。そして、取得したカメラ画像を前フレームカメラ画像として保存する（Ｓ８１２）。取得したカメラ画像および距離画像をステージ背景カメラ画像およびステージ背景距離画像としてそれぞれ保存する（Ｓ８１３）。なお、「ステージ背景カメラ画像」および「ステージ背景距離画像」と記載した場合は、ここで取得したカメラ画像および距離画像のことを指す。
初期化処理後、物体検知部４１０は、物体がステージ２０４上に置かれたことの検知（物体載置検知処理）を行う（Ｓ８０２）。処理の詳細は後述する。その後、Ｓ８０２で載置を検知したステージ２０４上の物体が除去されることの検知（物体除去検知処理）を行う（Ｓ８０３）。処理の詳細は後述する。
【００４３】
図１０（ｂ）はＳ８０２の物体載置検知処理の手順説明図である。物体検知部４１０は、物体載置検知処理を開始すると、カメラ画像取得部４０７からカメラ画像を１フレーム取得する（Ｓ８２１）。そして、取得したカメラ画像と前フレームカメラ画像との差分を計算してその絶対値を合計した差分値を算出する（Ｓ８２２）。物体検知部４１０は、算出した差分値があらかじめ決めておいた所定値以上かどうかを判定する（Ｓ８２３）。所定値未満であればステージ２０４上には物体が無いと判断し、Ｓ８２８へ進んで現フレームのカメラ画像を前フレームカメラ画像として保存する（Ｓ８２８）。その後、Ｓ８２１へ戻る。
【００４４】
Ｓ８２３において差分値が所定値以上の場合（Ｓ８２３：ＹＥＳ）、物体検知部４１０は、Ｓ８２１で取得したカメラ画像と前フレームカメラ画像との差分値を、Ｓ８２２と同様に算出する（Ｓ８２４）。そして、算出した差分値があらかじめ決めておいた所定値以下であるかどうかを判定する（Ｓ８２５）。所定値よりも大きければ（Ｓ８２５：ＹＥＳ）ステージ２０４上の物体が動いていると判断し、現フレームのカメラ画像を前フレームカメラ画像として保存する（Ｓ８２８）。その後、Ｓ８２１へ戻る。
Ｓ８２５において算出した差分値が所定値以下の場合（Ｓ８２５：ＮＯ）、物体検知部４１０は、Ｓ８２５が連続してＹＥＳとなった回数から、差分値が所定値以下かどうかを判定する。すなわち、ステージ２０４上の物体が静止した状態があらかじめ決めておいたフレーム数続いたかどうかを判定する（Ｓ８２６）。続いていないと判定した場合（Ｓ８２６：ＮＯ）、現フレームのカメラ画像を前フレームカメラ画像として保存する（Ｓ８２８）。その後、Ｓ８２１へ戻る。Ｓ８２６においてステージ２０４上の物体が静止した状態があらかじめ決めておいたフレーム数続いたと判定した場合（Ｓ８２６：ＹＥＳ）、物体検知部４１０は、物体が置かれたことをメイン制御部４０２へ通知し（Ｓ８２７）、物体載置検知処理を終える。
【００４５】
図１０（ｃ）はＳ８０３の物体除去検知処理の手順説明図である。物体除去検知処理を開始すると、物体検知部４１０は、カメラ画像取得部４０７からカメラ画像を１フレーム取得する（Ｓ８３１）。取得したカメラ画像とステージ背景カメラ画像との差分値を算出する（Ｓ８３２）。さらに算出した差分値が予め決めておいた所定値以下かどうかを判定する（Ｓ８３３）。Ｓ８３３で算出した差分値が予め決めておいた所定値よりも大きければステージ２０４上にまだ物体が存在するため、物体検知部４１０は、Ｓ８３１へ戻って処理を続ける。Ｓ８３３において算出した差分値が予め決めておいた所定値以下であればステージ２０４上の物体が無くなったため、物体検知部４１０は、物体除去をメイン制御部４０２へ通知し、物体除去検知処理を終了する。
【００４６】
＜平面原稿画像撮影部＞
図１１は、平面原稿画像撮影部４１１が実行する処理の手順説明図である。また、図１２は、平面原稿画像撮影部４１１の処理を説明するための模式図である。平面原稿画像撮影部４１１は、カメラ画像取得部４０７を介してカメラ部２０２からの画像を１フレーム取得する（Ｓ９０１）。カメラ部２０２の座標系は、図２（ｂ）で示したようにステージ２０４に正対していない。そのため、このときの撮影画像は、図１２（ａ）に示すように、物体１００１、ステージ２０４ともに歪んでいる。
そのため、平面原稿画像撮影部４１１は、ステージ背景カメラ画像とＳ９０１で取得したカメラ画像との画素毎の差分を算出し、差分画像を生成した上で、差分のある画素が黒、差分の無い画素が白となるように二値化する（Ｓ９０１）。ここで生成した差分画像は、図１２（ｂ）の差分領域１００２のように、物体１００１の領域が黒色である（差分がある）画像となる。
【００４７】
平面原稿画像撮影部４１１は、差分領域１００２を用いて、図１２（ｃ）のように物体１００１のみの画像を抽出する（Ｓ９０３）。また、抽出した原稿領域画像に対して階調補正を行う（Ｓ９０４）。抽出した原稿領域画像に対してカメラ座標系からステージ２０４への射影変換を行い、図１２（ｄ）のようにステージ２０４の真上から見た画像１００３に変換する（Ｓ９０５）。ここで用いる射影変換パラメータは、ジェスチャー認識部４０９の処理において、前述したＳ６１２で算出した平面パラメータとカメラ座標系から求めることができる。なお、図１２（ｄ）に示したように、ステージ２０４上への原稿の置き方により、ここで得られる画像１００３は傾いていることがある。そこで、平面原稿画像撮影部４１１は、画像１００３を矩形近似してからその矩形が水平になるように回転し、図１２（ｅ）で示した画像１００４のように傾きの無い画像を得る（Ｓ９０６）。
【００４８】
平面原稿画像撮影部４１１は、図１２（ｆ）に示すように、基準ラインに対しての矩形の傾きθ１およびθ２を算出し、傾きが小さい方（ここではθ１）を画像１００３の回転角度として決定する。あるいは、図１２（ｇ）および図１２（ｈ）に示すように、画像１００３中に含まれる文字列に対してＯＣＲ処理を行い、文字列の傾きから画像１００３の回転角度の算出および天地判定処理をしてもよい。
【００４９】
平面原稿画像撮影部４１１は、また、抽出した画像１００４に対して、あらかじめ決めておいた画像フォーマット（例えばＪＰＥＧ、ＴＩＦＦ、ＰＤＦ等）に合わせて圧縮およびファイルフォーマット変換を行う（Ｓ９０７）。そして、データ管理部４０５を介してＨＤＤ３０５の所定の領域へファイルとして保存し、平面原稿画像撮影部４１１の処理を終了する。
【００５０】
＜書籍画像撮影部の処理＞
次に、図１３（ａ），（ｂ）および図１４を参照して、書籍画像撮影部４１２が実行する処理について説明する。図１４は、書籍画像撮影部４１２が行う処理の内容の模式図である。
図１３（ａ）を参照すると、書籍画像撮影部４１２は、カメラ画像取得部４０７、距離画像取得部４０８を用いて、カメラ部２０２からカメラ画像を、距離センサ部２０８から距離画像を、それぞれ１フレームずつ取得する（Ｓ１１０１）。ここで得られるカメラ画像の例を図１４（ａ）に示す。図１４（ａ）では、ステージ２０４と撮影対象書籍１２１１を含むカメラ画像１２０１が得られている。図１４（ｂ）はここで得られた距離画像の例である。図１４（ｂ）では、距離センサ部２０８に近い方が濃い色であらわされており、距離センサ部２０８から物体１２１２上の各画素への距離が含まれる距離画像１２０２が得られている。また、図１４（ｂ）において、距離センサ部２０８からの距離がステージ２０４よりも遠い画素については白で表されている。物体１２１２のステージ２０４に接している部分（物体１２１２では右側のページ）も同じく白色となる。
【００５１】
書籍画像撮影部４１２は、取得したカメラ画像と距離画像からステージ２０４上に載置された書籍物体の３次元点群を算出する処理を行う（Ｓ１１０２）。すなわち、カメラ画像１２０１とステージ背景カメラ画像との画素毎の差分を算出して二値化を行い、図１４（ｃ）のように物体領域１２１３が黒で示されるカメラ差分画像１２０３を生成する（Ｓ１１１１）。書籍画像撮影部４１２は、また、カメラ差分画像１２０３を、カメラ座標系から距離センサ部座標系への変換を行い、図１４（ｄ）のように距離センサ部２０８からみた物体領域１２１４を含むカメラ差分画像１２０４を生成する（Ｓ１１１２）。また、距離画像とステージ背景距離画像との画素毎の差分を算出して二値化を行い、図１４（ｅ）のように物体領域１２１５が黒で示される距離差分画像１２０５を生成する（Ｓ１１１３）。
【００５２】
ここで、物体１２１１のステージ２０４と同じ色で有る部分については、画素値の差が小さくなるためカメラ差分画像１２０３中の物体領域１２１３に含まれなくなる場合がある。また、物体１２１２のステージ２０４と高さが変わらない部分については距離センサ部２０８からの距離値がステージ２０４と差が小さいため、距離差分画像１２０５中の物体領域１２１５には含まれない場合がある。そこで、書籍画像撮影部４１２は、カメラ差分画像１２０３と距離差分画像１２０５の和をとって図１４（ｆ）に示す物体領域画像１２０６を生成し、物体領域１２１６を得る（Ｓ１１１４）。
【００５３】
物体領域１２１６は、ステージ２０４と比べて色が異なるかまたは高さが異なる領域となる。そのため、カメラ差分画像１２０３中の物体領域１２１３か距離差分画像１２０５中の物体領域１２１５のいずれか片方のみを使った場合よりも、より正確に物体領域を表している。物体領域画像１２０６は距離センサ部座標系である。そのため、書籍画像撮影部４１２は、距離画像１２０２から物体領域画像１２０６中の物体領域１２１６のみを抽出する（Ｓ１１１５）。書籍画像撮影部４１２は、Ｓ１１１５で抽出した距離画像を直交座標系に変換することにより図１２（ｆ）に示した３次元点群１２１７を生成する（Ｓ１１１６）。この３次元点群１２１７が書籍物体の３次元点群である。
【００５４】
書籍画像撮影部４１２は、取得したカメラ画像と、算出した３次元点群から、書籍画像のゆがみ補正処理を行い（Ｓ１１０３）、２次元の書籍画像を生成する。Ｓ１１０３の処理は、図１３（ｂ）に示す通りである。すなわち、物体領域画像１２０６を距離センサ部画像座標系からカメラ座標系に変換する（Ｓ１１２１）。カメラ画像１２０１から物体領域画像１２０６中の物体領域１２１６をカメラ座標系に変換したものを用いて物体領域を抽出する（Ｓ１１２２）。抽出した物体領域画像をステージ平面へ射影変換する（Ｓ１１２３）。射影変換した物体領域画像を矩形近似し、その矩形が水平になるように回転することによって、図１４（ｇ）の書籍画像１２０８を生成する（Ｓ１１２４）。書籍画像１２０８は近似矩形の片方の編がＸ軸に平行となっているため、以降書籍画像１２０８に対してＸ軸方向へのゆがみ補正処理を行う。
【００５５】
書籍画像１２０８の最も左端の点をＰとする（図１４（ｇ）の点Ｐ）（Ｓ１１２５）。書籍物体の３次元点群１２１７から点Ｐの高さ（図１４（ｇ）のｈ１）を取得する（Ｓ１１２６）。書籍画像１２０８の点Ｐに対してＸ軸方向に所定の距離（図１４（ｇ）のｘ１）離れた点をＱとする（図１４（ｇ）の点Ｑ）（Ｓ１１２７）。３次元点群１２１７から点Ｑの高さ（図１４（ｇ）のｈ２）を取得する（Ｓ１１２８）。点Ｐと点Ｑの書籍物体上での距離（図１４（ｇ）のｌ１）を直線近似で算出する（Ｓ１２１９）。
【数４】
2016038820.tif 000006
【００５６】
算出した距離ｌ１でＰＱ間の距離を補正し（Ｓ１１３０）、図１４（ｇ）における画像１２１９上の点Ｐ’と点Ｑ’ の位置に画素をコピーする。処理を行った点Ｑを点Ｐとし、Ｓ１１２８に戻って同じ処理を行うことによって図１２（ｇ）の点Ｑと点Ｒの間の補正を実行する（Ｓ１１３１）。これにより、画像１２１９上の点Ｑ’と点Ｒ’の画素とする。この処理を全画素について繰り返すことにより、画像１２１９はゆがみ補正後の画像となる。ゆがみ補正処理を全ての点について終えたかどうかを判断し（Ｓ１１３２）、終えていれば書籍物体のゆがみ補正処理を終了する。以上のようにして、Ｓ１１０２、Ｓ１１０３の処理を行ってゆがみ補正を行った書籍画像を生成することができる。
【００５７】
ゆがみ補正を行った書籍画像の生成後、生成した書籍画像に階調補正を行う（Ｓ１１０４）。生成した書籍画像に対して、あらかじめ決めておいた画像フォーマット（例えばＪＰＥＧ、ＴＩＦＦ、ＰＤＦ等）に合わせて圧縮およびファイルフォーマット変換を行う（Ｓ１１０５）。生成した画像データを、データ管理部４０５を介してＨＤＤ３０５の所定の領域へファイルとして保存し（Ｓ１１０６）、書籍画像撮影部４１２の処理を終了する。
【００５８】
＜立体形状測定部＞
次に、図１５を参照して、立体形状測定部４１３が実行する処理手順について説明する。図１６は立体形状測定部４１３の処理を説明するための模式図である。
立体形状測定部４１３は、シリアルＩ／Ｆ３１０を介してターンテーブル２０９へ回転指示を行い、ターンテーブル２０９を所定の角度ずつ回転させる（Ｓ１３０１）。ここでの回転角度は小さければ小さいほど最終的な測定精度は高くなるが、その分測定回数が多くなり時間がかかるため、装置として適切な回転角度を予め決めておけばよい。
【００５９】
立体形状測定部４１３は、次に、ステージ２０４内に設けられたターンテーブル２０９上の物体に対して、カメラ部２０２とプロジェクタ２０７を用いて３次元点群測定処理を行う（Ｓ１３０２）。図１５（ｂ）はＳ１３０２で実行する３次元点群測定処理の手順説明図である。
図１５（ｂ）を参照すると、立体形状測定部４１３は、図１６（ａ）に示したターンテーブル２０９上の物体１４０１に対して、プロジェクタ２０７から３次元形状測定パターン１４０２を投射する（Ｓ１３１１）。また、カメラ画像取得部４０７を介してカメラ部２０２からカメラ画像を１フレーム取得する（Ｓ１３１２）。その後、３次元形状測定パターン１４０２と取得したカメラ画像間での対応点を図５のＳ５０４と同様にして抽出する（Ｓ１３１３）。そして、カメラ部２０２およびプロジェクタ２０７の位置関係から、カメラ画像上の各画素における距離を算出し、距離画像を生成する（Ｓ１３１４）。ここでの測定方法は、距離画像取得部４０８の処理において、Ｓ５０５で説明した測定方法と同じである。
【００６０】
立体形状測定部４１３は、距離画像の各画素について直交座標系への座標変換を行い、３次元点群を算出する（Ｓ１３１５）。算出した３次元点群からステージ２０４の平面パラメータを用いてステージ平面に含まれる３次元点群を除去する（Ｓ１３１６）。残った３次元点群の中から位置が大きく外れている点をノイズとして除去し、物体１４０１の３次元点群１４０３を生成する（Ｓ１３１７）。立体形状測定部４１３は、また、プロジェクタ２０７から投射している３次元形状測定パターン１４０２を消灯する（Ｓ１３１８）。さらに、カメラ画像取得部４０７を介してカメラ部２０２からカメラ画像を取得し、その角度から見たときのテクスチャ画像として保存する（Ｓ１３１９）。その後、３次元点群測定処理を終了する。
【００６１】
２回目以降にＳ１３０２の３次元点群測定処理を実行した際は、Ｓ１３０１でターンテーブル２０９を回転させて計測を行っている。つまり、図１６（ｃ）に示すようにターンテーブル２０９上の物体１４０１、プロジェクタ２０７およびカメラ部２０２の角度が変わっている。そのため、図１６（ｄ）に示すように、Ｓ１３０２で得られた３次元点群１４０２とは異なる視点から見た３次元点群１４０３が得られる。この３次元点群１４０２では、カメラ部２０２およびプロジェクタ２０７から死角となって算出できなかった部分の３次元点群が、３次元点群１４０３では含まれることになる。そこで、立体形状測定部４１３は、異なる視点から見た２つの３次元点群１４０２と１４０３を重ね合わせる処理を行う。
【００６２】
具体的には、立体形状測定部４１３は、Ｓ１３０２で測定した３次元点群１４０３を、ターンテーブルが初期位置から回転した角度分逆回転することにより、３次元点群１４０３との位置を大まかに合わせた３次元点群１４０４を算出する（Ｓ１３０３）。立体形状測定部４１３は、Ｓ１３０３で算出された３次元点群と、既に合成された３次元点群との合成処理を行う（Ｓ１３０４）。３次元点群の合成処理は特徴点を用いたＩＣＰ（IterativeClosestPoint）アルゴリズムを用いる。ＩＣＰアルゴリズムでは合成対象の２つの３次元点群１４０２と１４０４から、それぞれコーナーとなる３次元特徴点を抽出する。その後、３次元点群１４０２の特徴点と３次元点群１４０４の特徴点の対応をとって、すべての対応点同士の距離を算出して加算し、３次元点群１４０４の位置を動かしながら対応点同士の距離の和が最小となる位置を繰り返し算出する。繰り返し回数が上限に達した場合や、対応点同士の距離の和が最小となる位置が算出された場合、立体形状測定部４１３は、３次元点群１４０４を移動させる。その後に３次元点群１４０３と重ね合わせることにより、２つの３次元点群１４０３と１４０４を合成する。このようにして合成後の３次元点群１４０５を生成し、３次元点群合成処理を終了する。
【００６３】
Ｓ１３０４の３次元点群合成処理が終了すると、立体形状測定部４１３は、ターンテーブル２０９が１周回転したかどうかを判断する（Ｓ１３０５）。まだターンテーブル２０９が１周回転していなければ、Ｓ１３０１へ戻り、ターンテーブル２０９をさらに回転してからＳ１３０２を実行し、別の角度の３次元点群を測定する。そしてＳ１３０３〜Ｓ１３０４において既に合成した３次元点群１４０５と新たに測定した３次元点群との合成処理を行う。このようにＳ１３０１からＳ１３０５の処理をターンテーブル２０９が１周するまで繰り返すことにより、物体１４０１の全周３次元点群を生成することができる。
【００６４】
Ｓ１３０５でターンテーブル２０９が１周したと判断した場合、立体形状測定部４１３は、生成した３次元点群から３次元モデルを生成する処理を行う（Ｓ１３０６）。３次元モデル生成処理を開始すると、３次元点群からノイズ除去および平滑化を行う（Ｓ１３３１）。立体形状測定部４１３は、３次元点群から三角パッチを生成することで、メッシュ化を行う（Ｓ１３３２）。メッシュ化によって得られた平面へＳ１３１９で保存したテクスチャをマッピングする（Ｓ１３３３）。このようにして、テクスチャマッピングされた３次元形状の物体画像を生成する。以下、このような３次元形状を「３次元モデル」、この物体画像を「３次元モデルデータ」という。
立体形状測定部４１３は、３次元モデルデータをＶＲＭＬやＳＴＬ等の標準的な３次元モデルデータフォーマットへ変換し、データ管理部４０５を介してＨＤＤ３０５上の所定の領域に格納する（Ｓ１３０７）。これにより、立体形状測定部４１３の処理を終了する。
【００６５】
＜メイン制御部＞
次に、メイン制御部４０２による個別的な制御動作の一例を説明する。まず、図１７を参照してメイン制御部４０２が実行するスキャンアプリケーションの処理手順について説明する。ここでは、３Ｄスキャナ１０１で物体を３次元スキャンした後、スキャンデータに対してその場で編集を施し、３次元プリントジョブを生成する場合の例を挙げる。
図１８は、物体を３次元スキャンした際の、編集操作の一例を模式的に表した図である。図１８（ａ）には、カメラ型の物体１６０１がステージ２０４に載置されている例が示されている。図１８（ｂ）は、ステージ２０４上で３次元スキャンを実行した後の、物体１６０１を状態を示す。図１８（ｂ）では、物体１６０１の部分１６０２と１６０３毎に、異なる色の光が、プロジェクタ２０７から、それぞれの部分の表面上に投影されている様子が示されている。このように投影することで、ユーザーは、物体１６０１が、３Ｄスキャナ１０１によってどのように認識され、どの部分を編集したらよいかを容易に把握することができる。次に、図１８（ｃ）に示すように、ユーザーは編集したい部分１６０３に対して、手１６０４でタッチする。この物体へのタッチを認識することによって、ユーザーは、編集箇所を３Ｄスキャナ１０１に知らせることができる。これらの処理の具体的な手順を、以下に説明する。
【００６６】
メイン制御部４０２が処理を開始すると、ステージ２０４にスキャンの物体が載置されるのを待つ（Ｓ１５０１）。物体載置待ち処理を開始すると、ユーザーインターフェイス部４０３のＧＵＩ部品生成表示部４１４を介して、ステージ２０４にプロジェクタ２０７によって初期画面を投影する（Ｓ１５１１）。例えば、図２０（ａ）に示すようなステージ２０４上に物体を置くことをユーザーに促すメッセージ１７２１のＧＵＩ部品の画像を生成し、投影する。その後、メイン制御部４０２は、物体検知部４１０を起動させる。物体検知部４１０は、図１０に示した処理手順を実行する（Ｓ１５１２）。メイン制御部４０２は、物体検知部４１０からの物体載置通知を待つ（Ｓ１５１３）。物体検知部４１０が図１０のＳ８２７の処理を実行して物体載置を通知すると、メイン制御部４０２は、物体載置通知ありと判断し（Ｓ１５１３）、物体載置待ち処理を終了する。
【００６７】
Ｓ１５０１の物体載置待ち処理を終了すると、メイン制御部４０２は、続いてスキャン実行処理を行う（Ｓ１５０３）。スキャン実行処理開始時には、図２０（ｂ）に示したスキャン開始画面が、ＧＵＩ部品生成表示部４１４を介してステージ２０４に投射されている。図２０（ｂ）では、物体１６０１が、ステージ２０４上に置かれている状態を表している。つまり、図２０（ｂ）における物体１６０１は、真上から見た状態を表している。２Ｄスキャンボタン１７２２は平面原稿の撮影指示を受け付けるボタン、書籍スキャンボタン１７２３は書籍原稿の撮影指示を受け付けるボタン、３次元スキャンボタン１７２４は立体形状の測定指示を受け付けるボタンである。
ユーザーインターフェイス部４０３は、前述したようにジェスチャー認識部４０９から通知されるタッチジェスチャーの座標とこれらのボタンを表示している座標から、いずれかのボタンがユーザーによって押下されたことを検知する。（以降、ユーザーインターフェイス部による検知の説明を省略して「ボタンへのタッチを検知する」と記載する。）
【００６８】
また、ユーザーインターフェイス部４０３は、２Ｄスキャンボタン１７２２、書籍スキャンボタン１７２３、３次元スキャンボタン１７２４へのタッチを検知すると、選択したスキャン実行を行う。あるいは、選択したスキャンの実行開始指示を受け付けるスキャン開始ボタンを別途配置し、２Ｄスキャンボタン１７２２、書籍スキャンボタン１７２３、３次元スキャンボタン１７２４のそれぞれを排他的に選択できるようにしてもよい。その際には、ユーザーのいずれかのボタンへのタッチを検知すると、タッチされたボタンを選択状態とし、他のボタンの選択を解除する。
【００６９】
メイン制御部４０２は、スキャン開始ボタン１７２２〜１７２４のタッチを検知するまで待つ（Ｓ１５３１）。タッチされたスキャン開始ボタンが２Ｄスキャンボタン１７２２の場合にはＳ１５３２へ進み平面原稿画像撮影部４１１の処理を実行する。書籍スキャンボタン１７２３の場合にはＳ１５３３へ進み、書籍画像撮影部４１２の処理を実行する。また、３次元スキャンボタン１７２４の場合にＳ１５３４へ進み、立体形状測定部４１３の処理を実行する。そしてＳ１５３２〜Ｓ１５３４のいずれかによる処理が終了すると、スキャン実行処理を終了する（Ｓ１５０３）。スキャン実行処理が終了すると、メイン制御部４０２は、分割投影処理を実行する（Ｓ１５０６）。
【００７０】
図１９を参照して、分割投影処理について説明する。メイン制御部４０２は、直前のＳ１５０３で実行した処理が、立体形状測定部４１３による処理、つまり３次元スキャンであったかどうかを確かめる（Ｓ１７０１）。３次元スキャンだった場合はＳ１７０２へ移行し、違った場合は分割投影処理を終了する。
メイン制御部４０２は、距離画像取得部４０８により取得された３次元点群から、ステージ２０４の平面を除去して保存する（Ｓ１７０２）。平面を除去する方法は前述した通りである。これにより、現在の物体１６０１の３次元点群を保存することができる。
【００７１】
その後、メイン制御部４０２は、立体形状測定部４１３で取得した３次元モデルデータのうち、３次元形状の部分を所定規則にしたがって分割（セグメンテーション）し、分割画像（セグメント）を得る（Ｓ１７０３）。３次元モデルデータの分割の仕方については、例えば特開２０１１−４８７９１号公報に開示されている公知技術を用いることができる。所定規則は、本実施形態では、形状を単位として分割するなどである。この規則は、ＨＤＤ３０５に格納されている。メイン制御部４０２は、また、分割画像の集合である物体画像（セグメンテーション後の３次元モデルデータ）を生成する。
【００７２】
また、メイン制御部４０２は、直前のステップで保存した、物体１６０１の３次元点群のそれぞれが、物体画像におけるどの分割画像に相当するかを判定する。つまり、セグメンテーション結果を判定する。そのために、メイン制御部４０２は、３次元形状の計測の際に複数回測定した物体の最後の姿態の状態に、直交座標系内で、物体画像を回転させる。次に、メイン制御部４０２は、物体１６０１の３次元点群のそれぞれが、物体画像のうち、どの分割画像に属しているかを判定する。そのため、分類したい物体１６０１の３次元点群の一点と、各分割画像の集合体である物体画像を構成する全点との距離を計測する。そこで最短距離となった物体画像を構成する点が属する分割画像が、分類したい物体１６０１の３次元点群の一点が属する分割画像となる。この処理を、物体１６０１の３次元点群の点すべてにおいて実行すれば、各点がどちらの分割画像に属するかを認識することができる。
【００７３】
メイン制御部４０２は、直前のＳ１７０３で分割した分割画像ごとに異なる色の光を割り当て、ユーザーからの各種指示を受け付けるための各種メニューとリンクするデータと共に、プロジェクタ２０７に供給する。そして、物体画像については、プロジェクタ２０７から、計測した物体１６０１の姿態に応じた角度で物体１６０１の表面または当該物体１６０１の近傍のステージ２０４へ投影させる。つまり、分割結果を表示する（Ｓ１７０４）。投影には、公知のプロジェクションマッピングの技術を用いることができる。すなわち、直前のＳ１７０３でそれぞれの分割画像に分類した物体１６０１の３次元点群を用い、この座標系を直交座標系からプロジェクタ２０７の座標系に変換する。メイン制御部４０２は、この（Ｘｐ，Ｙｐ）平面で見た画像を投影する。分割画像毎に異なる光を投影することで、ユーザーは、物体１６０１がどのように分割されたかを視認することができる。
【００７４】
この状態を真上から見た様子を模式的に表したのが、図２０（ａ）である。図２０（ｂ）では、物体１６０１の部分１７２６と部分１７２７に、それぞれ異なる光が投影されている。同時に、スキャンされた物体１６０１の３次元プレビュー画像１７２５が右上に表示されている。
プロジェクタ２０７からは、ユーザーによる各種指示を受け付けるためのメニューボタン１７２８〜１７３４も投影される。ボタン１７２８は編集の指示、すなわち部分編集のモードに入るための指示を受け付けるボタンである。図２０（ｃ）の状態では、網掛けがされて選択状態になっている様子を示している。
ボタン１７２９は、分割形態（セグメンテーション方法）を立体形状のままで行うかどうかの選択を受け付けるボタンである。本実施形態では、立体形状を用いた分割を行ったので、デフォルトでこれが選択されている。ボタン１７３０は、色で分割する際に用いる。これは第２実施形態で詳しく説明する。
【００７５】
ボタン１７３１は、物品画像における一部または全部の分割画像の削除（消去）の指示を受け付けるボタンである。ボタン１７３２は、分割画像の一部または全部の色変更の指示を受け付けるボタンである。ボタン１７３３は、物品画像を３次元プリントジョブに変換して、３次元プリンタに送信する指示を受け付けるボタンである。なお、３次元プリンタは図示を省略したが、図１の１０４のネットワークを介して、３Ｄスキャナ１０１と接続されているものとする。ボタン１７３４は、現在の３次元スキャン処理の終了指示を受け付けるボタンである。
【００７６】
メイン制御部４０２は、また、ジェスチャー認識部４０９から、物体１６０１に対するユーザーの接触態様が検知されたかどうか、つまり、物体タッチ検出の通知があったかどうかを確認する（Ｓ１７０５）。検出がなかった場合は、Ｓ１７０７へ移行する。検出があった場合は接触部位（タッチされた点）が、どの分割画像に属するかを判定する（Ｓ１７０６）。物体タッチの検出には、Ｓ１７０３でセグメントに割り振った物体１６０１の３次元点群を用いているので、物体画像のどの部位（分割画像）にタッチされたかを容易に判定することができる。このとき、タッチされた分割画像への投影光を点滅させたり、光量を変化させたりして、認識された接触部位が他の部位と異なる表示態様となるように物体画像を生成してもよい。つまり、ユーザーのタッチ動作が認識されたことをユーザーにフィードバックしてもよい。
【００７７】
メイン制御部４０２は、ユーザーによるメニューボタン１７２８〜１７３４の押下が行われたかどうかを判定する（Ｓ１７０７）。メニューボタン１７２８〜１７３４の押下が行われた場合は、それぞれ押されたメニューボタンの種類によって、Ｓ１７０８〜Ｓ１７１０の何れかに移行する。メニューボタン１７２８〜１７３４が押下されなかった場合は、Ｓ１７０５へ戻り、再び物体タッチが検出されたかどうかを確認する。
【００７８】
メイン制御部４０２は、編集メニューのボタン１７３１、１７３２が押下された場合は、Ｓ１７０８へ移行する。３次元プリント実行ボタン１７３３が押下された場合は、Ｓ１７０９へ移行する。処理終了ボタン１７３４が押下された場合は、Ｓ１７１０へ移行する。
メイン制御部４０２は、物体画像（セグメンテーション後の３次元モデルデータ）に対して、各種編集処理を施し、保存する（Ｓ１７０８）。例えば、Ｓ１７０６で物体１６０１の部分１７２７にタッチされたと特定したうえで、削除ボタン１７３１が押下された場合は、３次元モデルの該当部分の削除、すなわち分割画像を消去する処理を行う。このとき、物体１６０１表面上への投影画像は、図２０（ｄ）の１７３５の部分のように、タッチされた分割画像に該当する箇所だけ投影が消される。同時に、プレビュー画像１７３６でも、該当部分のデータが削除されて表示される。また、実際の物体画像（投影元の物体画像）のデータでは、該当部分が削除されたデータが新たに作成されて保存される。色変更の場合も同様の処理が実行され、投影画像の色はユーザーにより選択された色に変更され、プレビュー画像の色も選択された色に変更される。
【００７９】
３次元プリント実行ボタン１７３３が押下された場合、メイン制御部４０２は、３次元プリントジョブを発行する（Ｓ１７０９）。部分編集が何もなされていない場合は、物体１６０１の物体画像そのものを用いて、接続されている３次元プリンタにより定まるデータフォーマットに変換される。部分編集が実行されている場合は、部分編集が施された  物体画像に対して、データフォーマットの変換を行う。変換されたデータは、３次元プリントジョブとして生成され、ネットワーク１０４経由で、不図示の３次元プリンタへ送出される。その後、メイン制御部４０２は、保存されていないデータを破棄して（Ｓ１７１０）、Ｓ１５０６の分割投影処理を終了する。
以上の処理を繰り返すことで、３Ｄスキャンや３Ｄプリントなどを実行する際、ユーザーは、その場で物体１６０１の実物を用いた直感的な操作を行うことが可能になる。
【００８０】
［第２実施形態］
第１実施形態では、物体画像（セグメンテーション後の３次元モデルデータ）をその場で部分的に編集するために、物体を形状で分割し、その結果をプロジェクタ２０７で投影し、物体への接触態様に応じて編集箇所などの指定を行う場合の例を説明した。しかし、ユーザーが部分的な編集を行う際、形状で分けられた部分的な編集のみではなく、色で分けられた部分を編集したいことも考えられる。第２実施形態では、形状での分割だけでなく、色での分割も行う場合の例を説明する。第２実施形態では、図２１の処理手順説明図と、図２２（ａ）〜（ｃ）の模式図とを用いて説明する。
【００８１】
図２２（ａ）に示す物体１８２１は、部分１８２８と部分１８２９とで色分けされている。第２実施形態では、この物体１８２１の３次元形状を計測する。この時のメイン制御部４０２の処理の内容は、図１７に示した処理とほぼ同様であり、Ｓ１５０６の分割投影処理の手順が第１実施形態と異なる。そこで、この部分を中心に説明する。
メイン制御部４０２による分割投影処理の手順は、図２１に示す通りである。図１９と同様のＳ１７ｘｘで示した処理ステップは、図１９の処理ステップと同様の処理なので、詳しい説明は省略する。
【００８２】
メイン制御部４０２は、立体形状測定部４１３で計測し、生成された物体画像が、複数色の部材で構成されるものかどうかを確かめる（Ｓ１８０１）。この処理は、物体画像を構成する各点の色の値を、所定の色空間に分布させることで確認できる。複数色の部材が存在する場合、メイン制御部４０２は、物体１８２１の３次元モデルを形状と色の両方で分割し、物体１８２１の現在の３次元点群が属する分割画像を決定する（Ｓ１８０２）。形状に関してこれを行う処理は、第１実施形態において説明したＳ１７０３の処理と同様である。色に関しては、Ｓ１８０１で利用した３次元モデルを構成するデータの、所定の色空間への分布を用いる。この色空間の中で、分布させたデータを、Ｋ−ｍｅａｎｓ法などの公知のクラスタリング手法を用いて分割すればよい。こうして色で分割された分割画像に対して物体１８２１の３次元点群を割り振るためには、Ｓ１７０３で形状に対して行った方法と同様にして割り振ることができる。または、３次元点群も所定の色空間に分布させ、クラスタリング手法を用いて分割してもよい。
【００８３】
Ｓ１８０１において、複数色の部材が存在しなかった場合、メイン制御部４０２は、形状のみに対して、物体１８２１の３次元モデルを分割し、物体１８２１の現在の３次元点群がどの分割画像に属するかを決定する（Ｓ１８０３）。この方法は、Ｓ１７０３のそれと同じであるので、説明は省略する。
その後、メイン制御部４０２は、形状での分割結果を、プロジェクタ２０７を用いてプロジェクションする。すなわち、物体１８２１の表面またはその近傍のステージ２０４へ投影する（Ｓ１８０４）。この方法は、Ｓ１７０４のそれと同様の処理である。ここで、色で分割されていても、デフォルトで形状での分割結果を投影するようにしているが、色での分割結果を投影するようにしてもよい。このときの様子は図１８（ｃ）に示されている。
【００８４】
物体タッチが検出された場合、メイン制御部４０２は、現在投影されている分割形態が、形状か色のどちらかを判断する（Ｓ１８０５）。形状であった場合はＳ１８０６へ移行し、色であった場合はＳ１８０７へ移行する。この分岐により、後で説明するＳ１８０８で分割形態を切り替えた際も、タッチがどの分割形態で分割されたどの分割画像に対して行われたかを判断することができる。
【００８５】
メイン制御部４０２は、その後、形状での分割の情報を用いて、どの分割画像にタッチされたかを判定する（Ｓ１８０６）。この処理は、Ｓ１７０６の処理と同様の処理である。また、メイン制御部４０２は、色での分割したことの情報を用いて、どの分割画像にタッチされたかを判定する（Ｓ１８０７）。この処理はＳ１７０６の処理を、色で分割された分割画像に対して行うと考えればよい。
メイン制御部４０２は、Ｓ１７０７で押下されたボタンが、分割形態切替の指示を受け付けるボタン１８３０もしくは１８３１であった場合、Ｓ１８０８へ移行する。例えば、図２２（ｂ）の状態でボタン１８３１が押下された場合は、図２２（ｃ）の状態へ移行する。図２２（ｂ）でボタン１８３０が選択状態で網掛け表示されているのに対し、図２２（ｃ）では、ボタン１８３０の網掛け表示はなくなり、ボタン１８３１が選択状態として網掛け表示されている。
【００８６】
メイン制御部４０２は、物体への投影画像を色で分割した画像に変更して投影する（Ｓ１８０８）。投影の仕方は形状での場合と同じである。図２２（ｃ）では、部分１８２５と部分１８２６とが同じ色で投影され、部分１８２７がもう一つの色で投影されている。この状態で、Ｓ１７０８で説明したような各種編集処理を施すことが可能である。
【００８７】
以上の処理を繰り返すことで、物体１８２１を形状だけではなく色でも分割し、その場で編集することが可能となる。つまり、分割形態が切替可能であり、これに応じて編集形態も変更可能となる。
なお、第２実施形態では分割形態を形状と色で切り替えられるようにする場合の例を説明したが、両方で分割した結果を表示するモードを設けてもよい。また、分割結果を投影する際に、投影面を異なる色の光で色分けする例について説明したが、境界線だけを投影するようにしてもよい。例えば、形状で分割した結果を異なる色の光を用いた投影で表し、色で分割した結果を、境界線の投影で示すようにしてもよい。これにより、どちらの分割形態で分割されたのかをユーザーに明示することができる。
【００８８】
［第３実施形態］
第１および第２実施形態では、物体の物体画像（３次元モデルデータ）をその場で部分的に編集するために、物体を形状や色で分割し、その結果をプロジェクションマッピングにより投影し、物体タッチによって編集箇所の指定を行う例を説明した。しかし、分割が常に成功するとは限らない。第３実施形態では、分割に失敗した場合の処理について説明する。
【００８９】
図２３は、第３実施形態においてメイン制御部４０２が実行する分割投影処理の手順説明図である。図２４（ａ）〜（ｃ）は、その処理の内容を示す模式図である。メイン制御部４０２の処理の殆どは、第１、第２実施形態と同じく、図１９の処理手順説明図で示される。但し、Ｓ１５３０の分割投影処理は、図２３に示されるものとなる。
第３実施形態では、図２２（ａ）に示した物体１８２１をステージ２０４に置いた場合の例を説明する。図２３の、Ｓ１７ｘｘやＳ１８ｘｘは、図１９や図２１のそれと同じ処理であるため、詳しい説明は省略する。
【００９０】
メイン制御部４０２は、Ｓ１８０２で３次元モデルを形状および色で分割する処理を実行した後、形状による分割が成功したかどうかを判定する（Ｓ１９０１）。その判定基準は、例えば、形状による分割の結果、分割画像の数が所定の数より大きくなった場合は複雑すぎるため、エラー情報を出力する。
メイン制御部４０２は、分割画像の幅が最も小さくなる部分を調べる。そして、その幅が、距離画像取得部４０８で取得した距離画像の解像度より小さい場合はエラーとする。形状による分割が成功した場合はＳ１９０２へ移行し、失敗した場合はステップ１９０４へ移行する。
【００９１】
メイン制御部４０２は、色による分割が成功したかどうかを判定する（Ｓ１９０２）。例えば、色空間におけるクラスタリングの結果、所定のクラス以上のクラスの数に分割された場合は、分割に成功せず、エラーとする。もしくは、色空間上は複数の色にまたがって広く分布しているにもかかわらず、クラスタリング手法により分割点が見つけられなかった場合にエラーとしてもよい。色による分割が成功した場合はＳ１８０４へ移行し、失敗した場合はＳ１９０３へ移行する。
【００９２】
形状での分割に成功し、色での分割が失敗した場合、メイン制御部４０２は、図２４（ａ）に示す色での分割に失敗した旨のメッセージ１９２１を所定時間プロジェクションする。つまり、プロジェクタ２０７で投影する（Ｓ１９０３）。その際、形状での分割数を合わせて投影してもよい。その後、メイン制御部４０２は、Ｓ１９０２と同様、色での分割に成功したかどうかの判定を行う（Ｓ１９０４）。成功していた場合はＳ１９０５へ移行し、失敗していた場合はＳ１９０７へ移行する。
【００９３】
形状での分割に失敗し、色での分割に成功した場合、メイン制御部４０２は、図２４（ｂ）に示す形状での分割に失敗した旨のメッセージ１９２２を所定時間プロジェクションする（Ｓ１９０５）。このとき、色により分割された分割画像の数を表示してもよい。メイン制御部４０２は、色で分割された分割画像を明示するため、物体１８２１の表面上にプロジェクションマッピングする（Ｓ１９０６）。この方法は、Ｓ１８０４で説明した、形状での分割結果をプロジェクションする方法と同様の方法である。
【００９４】
形状でも色でも分割に失敗した場合、メイン制御部４０２は、図２４（ｃ）のように分割に失敗した旨のメッセージを、所定時間プロジェクションする（Ｓ１９０７）。Ｓ１９０７の処理を終えると、Ｓ１７０７へと移行する。
メイン制御部４０２は、形状のみで分割を実施した後に、形状での分割が成功したかどうかを判定する（Ｓ１９０８）。この処理は、Ｓ１９０１の処理と同じ処理である。成功した場合はＳ１８０４へ移行し、失敗した場合は、Ｓ１９０９へ移行する。
【００９５】
メイン制御部４０２は、図２４（ｃ）に示す分割に失敗した旨のメッセージ１９２３を、所定時間プロジェクションする（Ｓ１９０９）。その後、図２１に示した、分割形態の切り替えボタン１８３０または１８３１が押下されたかどうかを判定する（Ｓ１７０７）。押下された場合、メイン制御部４０２は、分割形態の切り替え処理を行う。
メイン制御部４０２は、Ｓ１９０１、Ｓ１９０２、Ｓ１９０４、Ｓ１９０８でエラー情報が出力される（エラー有りと判定された）場合は、その旨をユーザーに知らせる。すなわち、分割形態の切り替えが行われてもエラーがあるため切り替えができない旨をプロジェクションで所定時間表示する（Ｓ１９１０）。そして、切り替え処理を行う前の設定に戻す。
なお、本実施形態では、エラーがあっても切り替えボタンを押下できる状態であるようにしているが、エラーが発生した時点で、エラーが発生した方の分割への切り替えボタンを押下できないように自動的に設定してもよい。
以上の処理を繰り返すことで、分割にエラーがある場合でも、その旨をユーザーに通知することが可能となる。
【００９６】
［第４実施形態］
ここまでの実施形態では、物体の３次元モデルデータをその場で部分的に編集するために、物体を形状や色で分割し、その結果をプロジェクションマッピングによって表示し、物体タッチによって編集箇所の指定を行う方法を説明した。物体に対してプロジェクションマッピングを行う場合、物体のプロジェクタ２０７に対する角度によっては、ある部分が別の部分のプロジェクタから見た死角をつくり、想定通りにプロジェクションできない可能性がある。また、距離センサ部２０８からみた死角ができる可能性もあり、ユーザーが所望の箇所にタッチできなくなるおそれがある。第４実施形態では、このような状態を回避するための例を説明する。
【００９７】
図２５は、第４実施形態においてメイン制御部４０２が実行する分割投影処理の手順説明図である。図２６（ａ）〜（ｃ）は、図２５の処理の模式図である。図２６（ａ）には、ステージ２０４に載置された物体１６０１に対して分割結果をプロジェクションする際、死角が発生してプロジェクションがうまくできていない様子が示されている。形状で分割した結果、部分２０２１と部分２０２２にプロジェクションするはずが、死角による影２０２３ができ、部分２０２２のほとんどにプロジェクションできていない。
【００９８】
図２６（ｃ）は、死角ができる様子を横から見た図である。プロジェクタ２０７の視線部分２０２７が部分２０３１に邪魔される。そのため、部分２０３２への投影結果では、範囲２０２９で死角となり、投影ができない。距離センサ部でも同じことがいえる。そこで、メイン制御部４０２は、図２５のような処理を行う。図２５のうち、Ｓ１７ｘｘの処理ステップは、図１９のそれと同様の処理であるので詳しい説明を省略する。
メイン制御部４０２は、物体１６０１の３次元モデルを分割した後（Ｓ１７０３）、死角を回避する処理を実行する（Ｓ２００１）。この処理は、図２５（ｂ）の処理手順説明図で示される。すなわち、メイン制御部４０２は、物体１６０１の表面上に、死角が発生するためにプロジェクションやタッチができない部分がないかどうかを確認する（Ｓ２００２）。そのために、まず、分割された直行座標系における３次元モデルのデータを、プロジェクタ２０７の座標系に変換する。そして、プロジェクタ２０７から見た２次元画像を作成し、各分割画像の実際に見えている面積を求める。これとは別に、分割画像毎のデータ（分割された３次元モデルデータ）についても同様の処理を施し、死角がなければ見えるはずの面積を計算する。分割画像毎に、実際に見えている面積が、死角がなければ見えるはずの面積の何割かを算出する。この割合が、所定の値より小さい場合は、死角ありと判断する。
【００９９】
メイン制御部４０２は、次に、死角が最も小さくなる角度を計算する（Ｓ２００３）。そのために、各分割画像の実際に見えている面積の差の絶対値を計算する。３つ以上の分割画像がある場合は、全ての２つの分割画像の面積の差の絶対値を計算した上で、それらの差の絶対値を足し合わせる。この差の絶対値を保存したうえで、ステージ２０４上で、直交座標系のｚ軸周りに仮想的に所定角度だけ回転させた物体画像を作成し、上記同様に、プロジェクタ２０７から見た２次元画像を作成する。この２次元画像を用いて、実際に見えている分割画像の差を計算して保存する。仮想的な回転、差の計算を繰り返し、横軸に回転角、縦軸に差の値をとってプロットする。このとき、極小値が現れるまで回転を続ける。極小値となったときの回転角の値を死角が最も小さくなる角度として決定する。その後、メイン制御部４０２は、Ｓ２００３で求めた角度だけ、物体１６０１を変位させる。具体的には、ターンテーブル２０９を回転するように、コントローラ部２０１に指示を出す（Ｓ２００４）。コントローラ部２０１は、ターンテーブル２０９を指示された角度だけ回転させる。
【０１００】
上記説明は、プロジェクタ２０７から見た死角が最小になる角度を算出し、その分だけ回転する場合の例であるが、距離センサ部から見た死角も併せて検出し、両方の死角が最小になる回転角度を求めるようにしてもよい。
本実施形態では、また、ターンテーブル２０９を回転する構成をとっているが、ターンテーブル２０９を回さずとも、ユーザーが自分の手で物体を回すようにしてもよい。この場合、図２６（ｂ）のように、死角が発生するため回転する旨のメッセージ２０３０と、回転の方向と量を表す矢印を表示すればよい。
以上の処理を繰り返すことで、物体がプロジェクタ２０７や距離センサ部に対していかなる角度で置かれていようとも、死角を回避してプロジェクションやタッチの検出ができるようになる。
【０１０１】
［第５実施形態］
ここまでの実施形態では、物体を形状や色で分割して、その結果をプロジェクションマッピングによって表示したり、タッチ検出したりする例を説明した。また、この技術を、ユーザーインターフェイスへ応用する例として説明した。第５実施形態では、上記技術の他の応用例として、書籍物体の画像をブロック分割して所望の部分だけ保存する例について説明する。図２７は、第５実施形態においてメイン制御部４０２が実行する分割投影処理の手順説明図。図２８（ａ）〜（ｃ）は図２７の処理の模式図である。
【０１０２】
図２８（ａ）のように、ステージ２０４上に書籍物体２１２１を載置することを考える。書籍物体２１２１内には、テキストや画像など、様々なコンテンツが記載されている。図２８（ｂ）は、書籍物体２１２１が置かれたステージ２０４を真上、つまり直行座標系のｚ軸の正の方向から見た画像である。
本実施形態におけるメイン制御部４０２の処理は、これまでに述べた実施形態と同様に、図１９に示した処理手順とほぼ同様となる。Ｓ１５０６の分割投影処理は、図２７の処理手順で表される。図２７中のＳ１７ｘｘは、図１９におけるそれと同じ処理ステップであるので、詳しい説明を省略する。
【０１０３】
メイン制御部４０２は、Ｓ１５０３のスキャン実行処理で、書籍画像撮影部４１２による、書籍物体２１２１のスキャンが実行されたかどうかを確認する（Ｓ２１０１）。書籍物体２１２１のスキャンが実行された場合、メイン制御部４０２は、書籍物体２１２１へのタッチを検出するための３次元点群を保存する（Ｓ２１０２）。この処理内容は、Ｓ１７０２の処理と同様の処理である。書籍物体のスキャンが実行されない場合はＳ２１０９へ移行する。
【０１０４】
メイン制御部４０２は、Ｓ１１０６で保存した書籍物体２１２１の物体画像に対して像域分離処理を行う（Ｓ２１０３）。像域分離の処理は、テキストが書かれているブロック、写真のブロック等、ブロック単位での分離を施す処理である。これは公知の技術を用いることができる。メイン制御部４０２は、この分離結果を、プロジェクタ２０７を用いて書籍物体２１２１に対してプロジェクションする（Ｓ２１０４）。その際、書籍画像撮影部４１２の処理で行った書籍画像の引き伸ばし処理の逆の処理を施すことで、分離したブロックの領域を示す投影画像を作成することができる。このようにして作成した投影画像をプロジェクションした様子が、図２８（ｃ）の模式図に表されており、点線２１２２が分離された各ブロックの投影結果を表している。
【０１０５】
メイン制御部４０２は、ユーザーの接触態様、すなわち物体タッチが検出されたかどうかを確認する（Ｓ２１０５）。この処理は、Ｓ１７０５の処理と同様の処理である。メイン制御部４０２は、その後、タッチされたブロックがどれかを特定する（Ｓ２１０６）。このために、現在の書籍物体２１２１の３次元点群を、真上つまり、直交座標系のｚ軸の正の方向からみた画像に変換し、書籍画像撮影部４１２と同様の引き伸ばし処理を施す。その上で書籍物体の領域のみを切り出す。そして、Ｓ１１０６で保存し、像域分離された書籍物体の画像の領域に重なるように変換する。ここで分離されたブロック内にある点群の点を、対応するブロックの点として決定する。この処理の後、タッチされた点が、どのブロックに属するか確認すればよい。
【０１０６】
メイン制御部４０２は、タッチされたブロックの画像を切り出し、所定のフォーマットに変換して保存する（Ｓ２１０７）。平面タッチにより終了ボタンが押下されたかどうかを確認する（Ｓ２１０８）。終了ボタンが押下された場合はＳ２１０９へ移行し、押下されなかった場合はＳ２１０５へ戻って物体タッチの通知がないか確認する。Ｓ２１０９では、保存していない画像を破棄するなどの終了処理を行い、分割投影処理を終了する。
以上の処理を繰り返すことで、書籍物体の内容をその場でブロック分割して保存することが可能となる。
【０１０７】
このように、第１ないし第５実施形態によれば、形状と色による物体の分割を行った上で、その分割結果を、プロジェクタ２０７を用いて、物体表面上に投影する。これにより、ユーザーは物体のどの部分が編集可能かどうかをその場で視認することができる。また、分割画像に対してユーザーが指示を行う際、ユーザーの指によるタッチがどの分割画像に対して行われたのかを検出し、ユーザーからの編集箇所の指示を受け付けることができる。そのため、３Ｄスキャンしたデータに対してその場で現物を用いた直感的な操作が可能となり、操作性を大きく向上させることができる。
【０１０８】
上記各実施形態では、コンピュータが制御プログラムを実行することにより所要の機能を実現する例を説明したが、本発明の実施の形態は、このような例に限定されない。例えば、制御プログラムの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットと協働で処理を実行し、それによって前述した各実施形態の機能が実現される場合も含まれる。また、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。また、上記制御プログラムなどを記録した記憶媒体もまた、本発明の実施の一態様である。このような記憶媒体としては、例えば、フレキシブルディスク、外部ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【図２】
2016038820.tif 000007
【図３】
2016038820.tif 000008
【図４】
2016038820.tif 000009
【図５】
2016038820.tif 000010
【図６】
2016038820.tif 000011
【図７】
2016038820.tif 000012
【図８】
2016038820.tif 000013
【図１０】
2016038820.tif 000014
【図１１】
2016038820.tif 000015
【図１３】
2016038820.tif 000016
【図１５】
2016038820.tif 000017
【図１７】
2016038820.tif 000018
【図１９】
2016038820.tif 000019
【図２１】
2016038820.tif 000020
【図２３】
2016038820.tif 000021
【図２５】
2016038820.tif 000022
【図２７】
2016038820.tif 000023
【図２８】
2016038820.tif 000024
【図１】
2016038820.tif 000025
【図９】
2016038820.tif 000026
【図１２】
2016038820.tif 000027
【図１４】
2016038820.tif 000028
【図１６】
2016038820.tif 000029
【図１８】
2016038820.tif 000030
【図２０】
2016038820.tif 000031
【図２２】
2016038820.tif 000032
【図２４】
2016038820.tif 000033
【図２６】
2016038820.tif 000034