JP2015198406A - 画像読取装置、方法およびプログラム - Google Patents

画像読取装置、方法およびプログラム Download PDF

Info

Publication number
JP2015198406A
JP2015198406A JP2014076463A JP2014076463A JP2015198406A JP 2015198406 A JP2015198406 A JP 2015198406A JP 2014076463 A JP2014076463 A JP 2014076463A JP 2014076463 A JP2014076463 A JP 2014076463A JP 2015198406 A JP2015198406 A JP 2015198406A
Authority
JP
Japan
Prior art keywords
document
image
unit
input
fingertip
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014076463A
Other languages
English (en)
Inventor
克幸 ▲高▼橋
克幸 ▲高▼橋
Katsuyuki Takahashi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014076463A priority Critical patent/JP2015198406A/ja
Publication of JP2015198406A publication Critical patent/JP2015198406A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Input (AREA)
  • Image Processing (AREA)
  • Position Input By Displaying (AREA)
  • Facsimile Scanning Arrangements (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Studio Devices (AREA)
  • Image Analysis (AREA)

Abstract

【課題】カメラスキャンシステムにおいて、ユーザーが物体上を指先でなぞる操作を行ったときに、物体が指とともに動いても正確に物体上の指先の動きを認識して操作性を向上させること。
【解決手段】書画台およびその近傍の平面に表示の投影を行うプロジェクタと、書画台に向かって配置され2次元画像を撮像する2次元画像撮像手段と、書画台に向かって配置され距離画像を取得する距離画像取得手段と、から構成されるカメラスキャンシステムにおいて、指先の位置を距離画像取得手段から得た距離画像から取得するとともに、物体の位置を2次元画像撮像手段で得た2次元画像から取得して、物体の移動量から物体上の座標系を算出し、指先の位置を物体上の座標系で算出し直す。
【選択図】図2

Description

本発明は、カメラスキャナを利用して平面物および立体物の両方のデータ化を行い、保存するための画像読取処理装置、方法およびプログラムに関する。
従来、文書をスキャンして電子データとして保存する場合、撮像センサとしてラインセンサを用いるラインスキャナと、2次元の撮像センサを用いるカメラスキャナとがある。特に、書画台の上方にカメラを配置し、原稿を上向きに書画台に置いて撮像するカメラスキャナの場合には、1枚の原稿であれば置くだけで素早くスキャンすることができるとともに、本のように厚みのある原稿も容易に書画台に置いてスキャンすることができる。
特許文献1では、書画台に置いた原稿をカメラで上面から読み取るシステムにおいて、プロジェクタとカメラを用いたユーザーインターフェイスが開示されている。プロジェクタによりユーザーインターフェイスを投影することで、紙等の現実の物体上に重畳して表示を行うことができる。また、カメラで手や指先の動きを検出することにより、手や指先で射影したユーザーインターフェイスや現実の物体への電子的な操作を行うことができる。このため、ユーザーは現実の物体を電子的データとのインターフェイスとして扱うことが可能となる。特許文献1では、特に指先で原稿上をなぞる動作により読取領域を指定する技術が開示されている。
特開2005−267034号公報
しかしながら、手や指先で現実物体上の点を指し示したり、また、現実物体上に重畳した電子データを操作したりする場合、手や指先が現実物体に触れるため、現実物体が操作中に動いてしまう、という課題が発生する。特許文献1のシステムでは、原稿は手で押さえることが前提となっており、指でなぞっている間に原稿が移動してしまうことは考慮されていなかった。
本発明は上記従来例に鑑みて成されたもので、ユーザーのジェスチャーにより読み取り対象物を移動させてしまっても、その移動による操作の誤認識を防止し、ユーザの意図を汲んだ処理を実現して、操作性及び生産性を向上させることを目的とする。
上記目的を達成するために、本発明は以下に記載した構成を有する。
書画台をその上方から撮影する撮影手段と、
前記書画台上における指定位置の入力を受け付ける入力手段と、
前記入力手段により入力された指定位置を、前記撮影手段により撮影された原稿上の座標に変換する変換手段と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された2つの指定位置により定まる読み取り範囲を保存する保存手段とを有することを特徴とする画像読取装置。
また他の側面によれば本発明は以下に記載した構成を有する。
書画台上の立体物である書籍原稿を認識する認識手段と、
前記書画台をその上方から撮影する撮影手段と、
前記書籍原稿上における指定位置の入力を受け付ける入力手段と、
前記入力手段により前記書籍原稿上で入力された指定位置と前記撮影手段により撮影した書籍原稿の画像とを前記書画台上の平面の座標系へと変換し、前記入力手段により入力された指定位置を、前記平面の座標系に変換された原稿上の座標にさらに変換する変換手段と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された2つの指定位置により定まる読み取り範囲を保存する保存手段とを有することを特徴とする画像読取装置。
本発明により、ユーザーのジェスチャーにより読み取り対象物を移動させてしまっても、本来のユーザーの意図通りの領域を指定することができ、操作性、生産性を向上することができる。
カメラスキャナ101のネットワーク構成を示す図である。 カメラスキャナ101の外観を示す図である。 コントローラ部201のハードウェア構成図である。 カメラスキャナ101の制御用プログラムの機能構成図およびシーケンス図である。 カメラスキャナ101の制御用プログラムの機能構成図およびシーケンス図である。 距離画像取得部408が実行する処理のフローチャートおよび説明図である。 ジェスチャー認識部409が実行する処理のフローチャートである。 ジェスチャー認識部409が実行する処理のフローチャートである。 ジェスチャー認識部409が実行する処理の説明図である。 物体検知部410が実行する処理のフローチャートである。 平面原稿撮影部411が実行する処理のフローチャートである。 平面原稿撮影部411が実行する処理の説明図である。 書籍画像撮影部412が実行する処理のフローチャートである 書籍画像撮影部412が実行する処理のフローチャートである。 書籍画像撮影部412が実行する処理の説明図である。 立体形状測定部413が実行する処理のフローチャートである。 立体形状測定部413が実行する処理の説明図である。 実施形態1のメイン制御部402が実行する処理のフローチャートである。 実施形態1のメイン制御部402が実行する処理のフローチャートである。 実施形態1のユーザーインターフェイス部403が投射表示する画面である。 実施形態2のメイン制御部402が実行する処理のフローチャートである。 実施形態3のメイン制御部402が実行する処理のフローチャートである。 実施形態4のメイン制御部402と平面原稿撮影部411が実行する処理のフローチャートである。 実施形態4のメイン制御部402と平面原稿撮影部411が実行する処理のフローチャートである。 実施形態5のメイン制御部402が実行する処理のフローチャートである。 実施形態5のメイン制御部402が実行する処理のフローチャートである。 実施形態5のユーザーインターフェイス部403が投射表示する画面である。 実施形態6の物体検知部410とメイン制御部402が実行する処理のフローチャートである。 実施形態6の物体検知部410とメイン制御部402が実行する処理のフローチャートである。
以下、本発明を実施するための形態について図面を参照して説明する。
[実施形態1]
図1は、一実施形態に係る画像読取装置であるカメラスキャナ101が含まれるネットワーク構成を示す図である。図1に示すように、カメラスキャナ101はイーサネット(登録商標)等のネットワーク104にてホストコンピュータ102およびプリンタ103に接続されている。図1のネットワーク構成において、ホストコンピュータ102からの指示により、カメラスキャナ101から画像を読み取るスキャン機能や、スキャンデータをプリンタ103により出力するプリント機能の実行が可能である。また、ホストコンピュータ102を介さず、カメラスキャナ101への直接の指示により、スキャン機能、プリント機能の実行も可能である。
<カメラスキャナの構成>
図2は、一実施形態に係るカメラスキャナ101の構成例を示す図である。図2(a)に示すように、カメラスキャナ101は、コントローラ部201、カメラ部202、腕部203、短焦点プロジェクタ207、距離画像センサ部208を含む。カメラスキャナの本体であるコントローラ部201と、撮像を行うためのカメラ部202、短焦点プロジェクタ207および距離画像センサ部208は、腕部203により連結されている。腕部203は関節を用いて曲げ伸ばしが可能である。
図2(a)には、カメラスキャナ101が設置されている書画台204も示している。カメラ部202および距離画像センサ部208のレンズは書画台204方向に向けられており、破線で囲まれた読み取り領域205内の画像を読み取り可能である。図2の例では、原稿206は読み取り領域205内に置かれているので、カメラスキャナ101に読み取り可能となっている。また、書画台204内にはターンテーブル209が設けられている。ターンテーブル209はコントローラ部201からの指示によって回転することが可能であり、ターンテーブル209上に置かれた物体とカメラ部202との角度を変えることができる。カメラ部202は単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることが好ましい。なお、図2に示されていないが、カメラスキャナ101は、LCDタッチパネル330およびスピーカ340をさらに含むこともできる。
図2(b)は、カメラスキャナ101における座標系について表している。カメラスキャナ101では各ハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。これらはそれぞれ、カメラ部202および距離画像センサ部207のRGBカメラ部363が撮像する画像平面、あるいはプロジェクタ207が投影する画像平面をXY平面とし、画像平面に直交した方向をZ方向として定義したものである。さらに、これらの独立した座標系の3次元データを統一的に扱えるようにするために、書画台204を含む平面をXY平面とし、このXY平面から上方に垂直な向きをZ軸とする直交座標系を定義する。
座標系を変換する場合の例として、図2(c)に、直交座標系と、カメラ部202を中心としたカメラ座標系を用いて表現された空間と、カメラ部202が撮像する画像平面との関係を示す。直交座標系における3次元点P[X,Y,Z]は、(1)式によって、カメラ座標系における3次元点Pc[Xc,Yc,Zc]へ変換できる。
[Xc, Yc, Zc]T = [Rc|tc][X, Y, Z, 1]T ... (1)
ここで、Rcおよびtcは、直交座標系に対するカメラの姿勢(回転)と位置(並進)によって求まる外部パラメータによって構成され、Rcを3×3の回転行列、tcを並進ベクトルと呼ぶ。逆に、カメラ座標系で定義された3次元点は(2)式によって、直交座標系への変換することができる。
[X, Y, Z]T = [Rc -1|-Rc -1tc][Xc, Yc, Zc, 1]T ... (2)
さらに、カメラ部202で撮影される2次元のカメラ画像平面は、カメラ部202によって3次元空間中の3次元情報が2次元情報に変換されたものである。すなわち、カメラ座標系上での3次元点Pc[Xc,Yc,Zc]を、(3)式によってカメラ画像平面での2次元座標pc[xp,yp]に透視投影変換することによって変換することが出来る。
λ[xp, yp, 1]T = A[Xc, Yc, Zc, 1]T ... (3)
ここで、Aは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される3×3の行列である。
以上のように、(1)式と(3)式を用いることで、直交座標系で表された3次元点群を、カメラ座標系での3次元点群座標やカメラ画像平面に変換することが出来る。なお、各ハードウェアデバイスの内部パラメータおよび直交座標系に対する位置姿勢(外部パラメータ)は、公知のキャリブレーション手法によりあらかじめキャリブレーションされているものとする。以後、特に断りがなく3次元点群と表記した場合は、直交座標系における3次元データを表しているものとする。
<カメラスキャナのコントローラのハードウェア構成>
図3は、カメラスキャナ101の本体であるコントローラ部201のハードウェア構成例を示す図である。図3に示すように、コントローラ部201は、システムバス301に接続されたCPU302、RAM303、ROM304、HDD305、ネットワークI/F306、画像処理プロセッサ307、カメラI/F308、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311およびUSBコントローラ312を含む。
CPU302はコントローラ部201全体の動作を制御する中央演算装置(プロセッサ)である。RAM303は揮発性メモリである。ROM304は不揮発性メモリであり、CPU302の起動用プログラムが格納されている。HDD305はRAM303と比較して大容量なハードディスクドライブ(HDD)である。HDD305にはコントローラ部201の実行する、カメラスキャナ101の制御用プログラムが格納されている。
CPU302は電源ON等の起動時、ROM304に格納されている起動用プログラムを実行する。この起動用プログラムは、HDD305に格納されている制御用プログラムを読み出し、RAM303上に展開するためのものである。CPU302は起動用プログラムを実行すると、続けてRAM303上に展開した制御用プログラムを実行し、制御を行う。また、CPU302は制御用プログラムによる動作に用いるデータもRAM303上に格納して読み書きを行う。HDD305上にはさらに、制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納することができ、CPU302によって読み書きされる。CPU302はネットワークI/F306を介してネットワーク104上の他の機器との通信を行う。
画像処理プロセッサ307はRAM303に格納された画像データを読み出して処理し、またRAM303へ書き戻す。なお、画像処理プロセッサ307が実行する画像処理は、回転、変倍、色変換等である。カメラI/F308はカメラ部202および距離画像センサ208と接続され、CPU302からの指示に応じてカメラ部202から画像データを、距離画像センサ部208から距離画像データを取得してRAM303へ書き込む。また、CPU302からの制御コマンドをカメラ部202および距離画像センサ208へ送信し、カメラ部202および距離画像センサ208の設定を行う。また、コントローラ部202は、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311およびUSBコントローラ312のうち少なくとも1つをさらに含むことができる。
ディスプレイコントローラ309はCPU302の指示に応じてディスプレイへの画像データの表示を制御する。ここでは、ディスプレイコントローラ309は短焦点プロジェクタ207およびLCDタッチパネル330に接続されている。シリアルI/F310はシリアル信号の入出力を行う。ここでは、シリアルI/F310はターンテーブル210に接続され、CPU302の回転開始・終了および回転角度の指示をターンテーブル209へ送信する。また、シリアルI/F310はLCDタッチパネル330に接続され、CPU302はLCDタッチパネル330が押下されたときに、シリアルI/F310を介して押下された座標を取得する。オーディオコントローラ311はスピーカ340に接続され、CPU302の指示に応じて音声データをアナログ音声信号に変換し、スピーカ340を通じて音声を出力する。USBコントローラ312はCPU302の指示に応じて外付けのUSBデバイスの制御を行う。ここでは、USBコントローラ312はUSBメモリやSDカードなどの外部メモリ350に接続され、外部メモリ350へのデータの読み書きを行う。
<カメラスキャナの制御用プログラムの機能構成>
図4Aは、CPU302が実行するカメラスキャナ101の制御用プログラムの機能構成401を示す図である。また、図4Bは、機能構成401の各モジュールの関係をシーケンス図として示したものである。カメラスキャナ101の制御用プログラムは前述のようにHDD305に格納され、CPU302が起動時にRAM303上に展開して実行する。メイン制御部402は制御の中心であり、機能構成401内の他の各モジュールを図4Bに示すように制御する。画像取得部416は画像入力処理を行うモジュールであり(図4BのS422)、カメラ画像取得部407、距離画像取得部408から構成される。カメラ画像取得部407はカメラI/F308を介してカメラ部202が出力する画像データを取得し、RAM303へ格納する。距離画像取得部408はカメラI/F308を介して距離画像センサ部208が出力する距離画像データを取得し、RAM303へ格納する。距離画像取得部408の処理の詳細は図5を用いて後述する。
認識処理部417はカメラ画像取得部407、距離画像取得部408が取得する画像データから書画台上の物体の動きを検知して認識するモジュールであり、ジェスチャー認識部409、物体検知部410から構成される。ジェスチャー認識部409は、画像取得部416から書画台204上の画像を取得し続け、タッチなどのジェスチャーを検知するとメイン制御部402へ通知する(図4BのS423)。物体検知部409は、メイン制御部402から物体載置待ち処理あるいは物体除去待ち処理の通知を受けると、画像取得部416から書画台204を撮像した画像を取得し、書画台204上に物体が置かれて静止するタイミングあるいは物体が取り除かれるタイミングを検知する処理を行う(図4BのS421)。ジェスチャー認識部409によるステップS423、物体検知部410によるステップS421の処理の詳細は図6〜図8を用いてそれぞれ後述する。
スキャン処理部418は実際に対象物のスキャンを行うモジュールであり、平面原稿画像撮影部411、書籍画像撮影部412、立体形状測定部413から構成される。平面原稿画像撮影部411は平面原稿、書籍画像撮影部412は書籍、立体形状測定部413は立体物に、それぞれ適した処理を実行し、それぞれに応じた形式のデータを出力する。これらのモジュールの処理(図4BのS424)の詳細は図9〜図14を用いてそれぞれ後述する。
ユーザーインターフェイス部403は、GUI部品生成表示部414と投射領域検出部415から構成される。GUI部品生成表示部414は、メイン制御部402からの要求を受け、メッセージやボタン等のGUI部品を生成する。そして、表示部406へ生成したGUI部品の表示を要求する。なお、書画台204上のGUI部品の表示場所は、投射領域検出部415により検出される。表示部406はディスプレイコントローラ309を介して、短焦点プロジェクタ207もしくはLCDタッチパネル330へ要求されたGUI部品の表示を行う。プロジェクタ207は書画台204に向けて設置されているため、書画台204上にGUI部品を投射することが可能となっている。また、ユーザーインターフェイス部403は、ジェスチャー認識部409が認識したタッチ等のジェスチャー操作、あるいはシリアルI/F310を介したLCDタッチパネル330からの入力操作、そしてさらにそれらの座標を受信する。そして、ユーザーインターフェイス部403は描画中の操作画面の内容と操作座標を対応させて操作内容(押下されたボタン等)を判定する。この操作内容をメイン制御部402へ通知することにより、操作者の操作を受け付ける(図4BのS425)。
ネットワーク通信部404は、ネットワークI/F306を介して、ネットワーク104上の他の機器とTCP/IPによる通信を行う。データ管理部405は、制御用プログラム401の実行において生成した作業データなど様々なデータをHDD305上の所定の領域へ保存し、管理する。例えば平面原稿画像撮影部411、書籍画像撮影部412、立体形状測定部413が生成したスキャンデータなどである。
<距離画像センサおよび距離画像取得部の説明>
図3に距離画像センサ208の構成を示している。距離画像センサ208は赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部361は対象物に、人の目には不可視である赤外線によって3次元測定パターンを投射する。赤外線カメラ362は対象物に投射した3次元測定パターンを読みとるカメラである。RGBカメラ363は人の目に見える可視光をRGB信号で撮影するカメラである。
距離画像取得部408の処理を図5(a)のフローチャートを用いて説明する。また、図5(b)〜(d)はパターン投射方式による距離画像の計測原理を説明するための図面である。距離画像取得部408による図5(a)の処理は、たとえばジェスチャー認識部409による図6AのステップS621や、物体検知部410による図8のステップS811、S841など、距離画像の取得のつど実行される。
距離画像取得部408が処理を開始すると、ステップS501では、図5(b)に示すように赤外線パターン投射部361を用いて赤外線による3次元形状測定パターン522を対象物521に投射する。ステップS502では、RGBカメラ363を用いて対象物を撮影したRGB画像523を取得し、さらに、ステップS501で投射した3次元測定パターン522を赤外線カメラ362で撮影した赤外線カメラ画像524を取得する。なお、赤外線カメラ362とRGBカメラ363とでは設置位置が異なるため、図5(c)に示すようにそれぞれで撮影される2つのRGBカメラ画像523および赤外線カメラ画像524の撮影領域が異なる。そこでステップS503では、赤外線カメラ362の座標系からRGBカメラ363の座標系への座標系変換を用いて赤外線カメラ画像524をRGBカメラ画像523の座標系に合わせる。なお、赤外線カメラ362とRGBカメラ363との相対位置関係や、それぞれの内部パラメータは事前のキャリブレーション処理により既知であるとする。
ステップS504では、図5(d)に示すように、3次元測定パターン522とステップS503で座標変換を行った赤外線カメラ画像524との間の対応点を抽出する。例えば、赤外線カメラ画像524上の1点を3次元形状測定パターン522上から探索して、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像524の画素の周辺のパターンを3次元形状測定パターン522上から探索し、一番類似度が高い部分と対応付けてもよい。この対応付けを容易化するために、3次元形状測定パターン522は、その任意の一部分が、他のどの一部分とも異なるパターンとなるよう構成しておくことが望ましく、それによって、パターンの一部分から、その一部分が全体におけるどの部分であるかを特定できる。また、3次元形状測定パターン522を3次元物体へ投射し、それを撮影して得たパターンは、元のパターンとの対応付が困難になる可能性がある。そこで、たとえば平面に近似できるようなごく狭い範囲に投影されたパターンの一部からそのパターン全体における位置を特定できるよう、3次元形状測定パターン522は、密度の高いパターンとしておくことが望ましい。
ステップS505では、赤外線パターン投射部361と赤外線カメラ362を結ぶ直線を基線525として三角測量の原理を用いて計算を行うことにより、赤外線カメラ362からの距離を算出する。ステップS504で対応付けが出来た画素については、赤外線カメラ362からの距離を算出して画素値として保存し、対応付けが出来なかった画素については、距離の計測が出来なかった部分として無効値を保存する。これをステップS503で座標変換を行った赤外線カメラ画像524の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。なお、赤外線カメラ362からの距離を算出するためには、赤外線カメラ362と赤外線パターン投射部361の位置関係およびそれぞれの内部パラメータがわかっている必要がある。これらは、事前のキャリブレーション処理により算出しておく。 ステップS506では、距離画像の各画素に対応付けてRGBカメラ画像525のRGB値を保存することにより、1画素につきR、G、B、距離の4つの値を持つ距離画像を生成する。ここで取得した距離画像は距離画像センサ208のRGBカメラ363で定義された距離画像センサ座標系が基準となっている。そこでステップS507では、図2(b)を用いて上述したように、距離画像センサ座標系として得られた距離データを直交座標系における3次元点群に変換する。以後、特に指定がなく3次元点群と表記した場合は、直交座標系における3次元点群を示すものとする。
なお、本実施例では上述したように、距離画像センサ208として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いることも可能である。例えば、2つのRGBカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するTOF(Time of Flight)方式を用いても構わない。
<ジェスチャー認識部の説明>
ジェスチャー認識部409の処理の詳細を、図6A、図6Bのフローチャートを用いて説明する。ジェスチャー認識部409による図6A、図6Bの処理は、たとえば物体検知部410により書画台への物体の載置の検知をトリガとして介されてもよいし、ジェスチャーの入力が必要な都度実行してもよい。また、カメラスキャナ101の立ち上げ後に自動的に実行開始されてもよい。図6Aにおいて、ジェスチャー認識部409が処理を開始すると、ステップS601では初期化処理を行う。初期化処理で、ジェスチャー認識部409は距離画像取得部408から距離画像を1フレーム取得する。ここで、ジェスチャー認識部409の処理開始時には書画台204上に対象物が置かれていない状態であるため、初期状態として書画台204の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル(以降、書画台204の平面パラメータと呼ぶ)を算出し、RAM303に保存する。
続いてステップS602では、ステップS621〜622に示す、書画台204上に存在する物体の3次元点群を取得する。3次元点群の取得は図5で説明した手順で行われる。その際、ステップS621では距離画像取得部408から距離画像と3次元点群を1フレーム取得する。ステップS622では書画台204の平面パラメータを用いて、取得した3次元点群から書画台204を含む平面にある点群を除去する。
ステップS603では、ステップS631〜S636に示す、取得した3次元点群からユーザーの手の形状および指先を検出する処理を行う。ここで、図7に示す、指先検出処理の方法を模式的に表した図を用いて説明する。ステップS631では、ステップS602で取得した3次元点群から、書画台204を含む平面から所定の高さ以上にある3次元点群を抽出することで、手の3次元点群を得る。ここで、人の手には固有の色があるため、画素の色によって手の3次元点群を特定する。手の色としては、予め定めた特定の色を用いてもよいが、ジェスチャーで指示するユーザーの手の色をあらかじめ読み取っておいてもよい。さらに、抽出した手の3次元点群を連続した領域ごとに分割し、所定の大きさ以上の領域を大きい方から2つまで手の3次元点群とする。これにより、ユーザー1人の左右両手に相当する手の3次元点群を得ることができる。図7(a)の3次元点群701は抽出した手の3次元点群の1つを表している。次に、ステップS635とステップS636で示したように、ステップS632からステップS634の処理を2つの手の3次元点群について繰り返す。なお、ステップS631で手の領域が1つしか見つからなければ、ステップS635とS636で示したループは1度だけ実行する。また、ステップS631で手の3次元点群が見つからなければステップS635とステップS636で示したループは実行しない。ステップS632では、抽出した手の3次元点群を、書画台204の平面に射影した2次元画像を生成して、その手の外形を検出する。図7(a)の2次元画像702は、書画台204の平面に投影した3次元点群を表している。投影は、点群の各座標を、書画台204の平面パラメータを用いて投影すればよい。また、図7(b)に示すように、投影した3次元点群から、xy座標の値だけを取り出せば、z軸方向から見た2次元画像703として扱うことができる。このとき、手の3次元点群の各点が、書画台204の平面に投影した2次元画像の各座標のどれに対応するかを、記憶しておくものとする。ステップS633では検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する。図7(c)は、外形の曲率から指先を検出する方法を模式的に表したものである。輪郭点704は、書画台204の平面に投影された2次元画像703の外形を表す点の一部を表している。ここで、輪郭点704のような外形を表す点のうち、隣り合う5個の輪郭点を含み、その他の輪郭点を含まないように円を描くことを考える。円705、円707が、その例である。この円を、全ての外形の点に対して順に描き、その直径(例えば706、708)が所定の値より小さい(曲率が小さい)ことを以て、指先とする。この例では隣り合う5個の点としたが、その数は限定されるものではない。この点の数が閾値となる曲率を定めるため、点の数はたとえば実験的に定めてもよい。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。ステップS634では、検出した指先の個数および各指先の座標を算出する。この時、前述したように、書画台204に投影した2次元画像の各点と、手の3次元点群の各点の対応関係を記憶しているため、各指先の3次元座標を得ることができる。今回は、3次元点群から2次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、RGB画像の肌色領域から手の領域を抽出し、上に述べたのと同様の方法(外形の曲率計算等)で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はRGB画像や距離画像といった、2次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する必要がある。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
続いて、ステップS606とステップS607のループで示したように、ステップS604とステップS605の処理を、ステップS631で抽出した手の3次元点群領域の数だけ繰り返して実行する。すなわち、ステップS631で2つの(両手分の)手の3次元点群を抽出した場合はステップS604とステップS605は2回繰り返す。また、ステップS631で1つの手の3次元点群しか抽出できなかった場合にはステップS604とステップS605の処理を1度実行する。さらに、テップS631で手の3次元点群を抽出できなかった場合にはステップS604とS605の処理は実行しないで、ステップS602へ戻る。
ステップS604では、図6BのステップS641〜S669に示す、検出した手の形状および指先からのジェスチャー判定処理を行う。ステップS641では、ステップS603で検出した指先が1つかどうか判定する。ただし、例えば人差し指と親指を同時に立てた手の形状の場合もあるため、指先が2つ以上検出された場合には親指の指先と思われる指先を除外して判定する。親指の指先かどうかの判定には、例えば、手の重心位置とそれぞれの指先の成す角度が所定の値(45〜90度の間程度が適切)以上である、といった方法を用いることができる。ステップS641において検出した指先が1つであればステップS642へ進み、検出した指先と書画台204を含む平面との距離を算出する。ステップS643では、後述する物体検知部410の処理によって抽出される、手および書画台平面の点群以外の立体物点群が存在するかを判定する。ステップS643で立体物点群があればステップS644へ進み、指先の点と立体物点群の各点との距離を算出し、距離が最小である点を指先に最も近い点として選択する。ステップS645では選択した指先に最も近い点と指先との距離が微小な所定の値以下であるかどうか判定する。ステップS645で指先に最も近い点と指先との距離が所定の値以下であればステップS649へ進み、指先が立体物にタッチしたジェスチャーがありと判定する。ステップS643で手および書画台平面の立体物点群が無いか、または、ステップS645で指先と立体物点群の距離の最小値が所定の値より大きければ、立体物タッチジェスチャーは無いと判定し、ステップS646へ進む。ステップS646では、ステップS642で算出した指先と書画台平面の距離が、微小な所定の値以下であるかどうか判定する。ステップS649で、指先と書画台平面の距離が所定の値以下であればステップS648へ進み、指先が書画台204へタッチした、平面タッチジェスチャーありと判定する。ステップS646で、指先と書画台平面の距離が所定の値より大きければステップS647へ進み、指先が移動したジェスチャー(タッチはしていないが指先が書画台204上に存在するジェスチャー)と判定する。
ステップS641において検出した指先が1つで無ければステップS661へ進み、ステップS634で検出した指先と書画台平面の距離の最小値を算出する。ステップS662では、後述する物体検知部410の処理によって抽出される手および書画台平面の点群以外の立体物点群が存在し、かつ、いずれかの指先がその立体物点群の上に重なっているかどうかを判定する。ステップS662がYESであればステップS663へ進み、ステップS634で検出した指先と立体物点群の距離の最小値を算出する。ステップS664ではステップS63で算出した距離の最小値が微小な所定値以下であるかどうかを判定する。ステップS664がYESであればステップS669へ進み、立体物を手で押さえたジェスチャーがあると判定する。ステップS662で立体物点群が存在しないかあるいはいずれかの指も立体物点群の上に重なっていないと判定するか、ステップS664で指先と立体物点群の距離が所定値より大きいと判定した場合には、ステップS665へ進む。ステップS665では、後述する物体検知部410の処理によって書画台204上に平面原稿があることが検知され、かつ、いずれかの指先がその平面原稿の上にあるかどうかを判定する。ステップS665がYESであればステップS666へ進み、ステップS661で算出した指先と書画台平面の距離の最小値が微小な所定の値以下かどうかを判定する。ステップS666がYESであればステップS668へ進み、平面原稿を手で押さえているジェスチャーがあると判定する。ステップS665で平面原稿が検知されていないか、あるいは平面原稿の上にいずれの指先も無い場合、または、ステップS666で指先と書画台平面の距離が所定値よりも大きい場合には、ステップS667へ進み、ジェスチャーが無いと判定する。
ステップS604でジェスチャーの判定を行うとステップS605へ進み、判定したジェスチャーをメイン制御部402へ通知する(ステップS667でジェスチャーが無いと判定した場合も、ジェスチャーが無いことをメイン制御部402へ通知する)。以上のようにステップS604とステップS605で示したループをステップS631で抽出した手の3次元点群領域の数だけ実行した後、ステップS602へ戻ってジェスチャー認識処理を繰り返す。
<物体検知部の処理>
図8のフローチャートを用いて物体検知部410の処理の説明を行う。物体検知部410が処理を開始すると、図8のステップS801では、ステップS811〜S813に示す初期化処理を行う。ステップS811では、カメラ画像取得部407からカメラ画像を、距離画像取得部408から距離画像をそれぞれ1フレーム取得する。ステップS812では、取得したカメラ画像を前フレームカメラ画像として保存する。ステップS813では、取得したカメラ画像および距離画像を書画台背景カメラ画像および書画台背景距離画像としてそれぞれ保存する。(以降、「書画台背景カメラ画像」および「書画台背景距離画像」と記載した場合は、ここで取得したカメラ画像および距離画像のことを指す。)
ステップS802では、ステップS821〜S828に示す、物体が書画台204上に置かれたことの検知(物体載置検知処理)を行う。ステップS821ではカメラ画像取得部407からカメラ画像を1フレーム取得する。ステップS821で新たに取得したカメラ画像を現フレームカメラ画像と呼ぶ。また、後述するステップS828で保存されたカメラ画像を前フレームカメラ画像と呼ぶ。ステップS822では取得したカメラ画像と前フレームカメラ画像との差分を計算してその絶対値を合計した差分値を算出する。ステップS823では算出した差分値があらかじめ決めておいた所定値以上かどうかを判定する。算出した差分値が所定値未満であれば書画台204上には物体が無いと判断し、ステップS828へ進んで現フレームのカメラ画像を前フレームカメラ画像として保存してからステップS821へ戻って処理を続ける。ステップS823において差分値が所定値以上であればステップS824へ進み、ステップS821で取得したカメラ画像と前フレームカメラ画像との差分値を、ステップS822と同様に算出する。ステップS825では算出した差分値があらかじめ決めておいた所定値以下であるかどうかを判定する。ステップS825において算出した差分値が所定値よりも大きければ書画台204上の物体が動いていると判断し、ステップS828へ進んで現フレームのカメラ画像を前フレームカメラ画像として保存してから、ステップS821へ戻り処理を続ける。ステップS825において算出した差分値が所定値以下であればステップS826へ進む。ステップS826では、ステップS825が連続してYESとなった回数から、差分値が所定値以下、つまり書画台204上の物体が静止した状態があらかじめ決めておいたフレーム数続いたかどうかを判定する。ステップS826において書画台204上の物体が静止した状態があらかじめ決めておいたフレーム数続いていないと判定したら、ステップS828へ進んで現フレームのカメラ画像を前フレームカメラ画像として保存し、ステップS821へ戻って処理を続ける。ステップS826において画台204上の物体が静止した状態があらかじめ決めておいたフレーム数続いたと判定したら、ステップS827へ進んで物体が置かれたことをメイン制御部402へ通知し、物体載置検知処理を終了する。
ステップS803では、ステップS831〜S835に示す、平面原稿領域取得処理を行う。ステップS831ではカメラ画像取得部407からカメラ画像を1フレーム取得する。ステップS832では、ジェスチャー認識部409が図6のステップS631で説明した処理によって抽出した手の領域を取得し、座標変換によって抽出した手の領域がカメラ画像上で占める領域を算出する。そして、算出した領域をカメラ画像からマスクすることにより、次ステップ以降の処理に手の領域が影響しないようにする。ステップS833では書画台背景画像と、ステップS832でマスク処理を行ったカメラ画像との差分画像を生成し、二値化を行う。ステップS834では、生成した差分二値化画像がカメラ座標系であるため、差分二値化画像を書画台平面へ射影変換することにより、直交座標系へ座標変換する。ステップS835で、差分のある領域を矩形近似し、原稿が存在する原稿領域として抽出する。そして、原稿領域の直交座標系における位置と傾きを算出し、ステップS803の平面原稿領域取得処理を終了する。
ステップS804では、ステップS841〜S843に示す、立体物3次元点群取得処理を行う。ステップS841では、距離画像取得部408から距離画像をそれぞれ1フレーム取得する。ステップS842では、取得した3次元点群から、書画台平面より下にある点を除去する。ステップS843では、ジェスチャー認識部409が図6のステップS631で説明した処理によって抽出した手の領域を取得する。そして、ステップS842で書画台平面以下の点を除去した3次元点群から、手の領域にある3次元点群を除去する。ステップS842、S843の処理により、書画台204上に置かれた物体の3次元点群を得ることができ、ステップS804の立体物3次元点群取得処理を終了する。
ステップS805では、ステップS803で取得する平面原稿領域とステップS804で取得する3次元点群が両方とも無くなったかどうかを判断する。ステップS805がNOであれば書画台204上には原稿あるいは立体物があるということになるため、ステップS803へ戻って平面原稿領域の取得およびステップS804の立体物3次元点群取得処理を繰り返す。ステップS805で平面原稿領域と3次元点群の両方とも無くなったと判断したらステップS806へ進み、書画台204上の物体除去をメイン制御部402へ通知し、物体検知部の処理を終了する。
<平面原稿画像撮影部の説明>
図9のフローチャートを用いて、平面原稿画像撮影部411が実行する処理を説明する。図10は平面原稿画像撮影部411の処理を説明するための模式図である。平面原稿画像撮影部411は処理を開始すると、ステップS901ではカメラ画像取得部407を介してカメラ部202からの画像を1フレーム取得する。ここで、カメラ部202の座標系は図2(b)で示したように書画台204に正対していないため、このときの撮影画像は図10(a)に示すように対象物1001、書画台204ともに歪んでいる。ステップS902では、書画台背景カメラ画像とステップS901で取得したカメラ画像との画素毎の差分を算出し、差分画像を生成した上で、差分のある画素が黒、差分の無い画素が白となるように二値化する。したがって、ここで生成した差分画像は、図10(b)の領域1002のように、対象物1001の領域が黒色である(差分がある)画像となる。ステップS903では差分領域1002を用いて、図10(c)のように対象物1001のみの画像を抽出する。ステップS904では、抽出した原稿領域画像に対して階調補正を行う。ステップS905では、抽出した原稿領域画像に対してカメラ座標系から書画台204への射影変換を行い、図10(d)のように書画台204の真上から見た画像1003に変換する。ここで用いる射影変換パラメータは、ジェスチャー認識部409の処理において、前述した図6BのステップS612で算出した平面パラメータとカメラ座標系から求めることができる。なお、図10(d)に示したように、書画台204上への原稿の置き方により、ここで得られる画像1003は傾いていることがある。そこで、ステップS906では、画像1003を矩形近似してからその矩形が水平になるように回転し、図10(e)で示した画像1004のように傾きの無い画像を得る。図10(f)に示すように、基準ラインに対しての矩形の傾きθ1およびθ2を算出し、傾きが小さい方(ここではθ1)を画像1003の回転角度として決定する。あるいは、図10(g)および図10(h)に示すように、画像1003中に含まれる文字列に対してOCR処理を行い、文字列の傾きから画像1003の回転角度の算出および天地判定処理をしてもよい。ステップS907では抽出した画像1004に対して、あらかじめ決めておいた画像フォーマット(例えばJPEG、TIFF、PDF等)に合わせて圧縮およびファイルフォーマット変換を行う。そして、データ管理部405を介してHDD305の所定の領域へファイルとして保存し、平面原稿画像撮影部411の処理を終了する。
<書籍画像撮影部の処理>
図11Aのフローチャートを用いて、書籍画像撮影部412が実行する処理について説明する。図12は書籍画像撮影部412の処理を説明するための模式図である。図11Aのフローチャートで、書籍画像撮影部412は処理を開始すると、ステップS1101ではカメラ画像取得部407、距離画像取得部408を用いて、カメラ部202からカメラ画像を、距離画像センサ部208から距離画像を、それぞれ1フレームずつ取得する。ここで得られるカメラ画像の例を図12(a)に示す。図12(a)では、書画台204と撮影対象書籍1211を含むカメラ画像1201が得られている。図12(b)はここで得られた距離画像の例である。図12(b)では、距離画像センサ部208に近い方が濃い色であらわされており、距離画像センサ部208から対象物体1212上の各画素への距離が含まれる距離画像1202が得られている。また、図12(b)において、距離画像センサ部208からの距離が書画台204よりも遠い画素については白であらわされており、対象物体1212の書画台204に接している部分(対象物体1212では右側のページ)も同じく白色となる。
ステップS1102では、ステップS1111〜S1116に示す、取得したカメラ画像と距離画像から書画台204上に載置された書籍物体の3次元点群を算出する処理を行う。ステップS1111ではカメラ画像1202と書画台背景カメラ画像との画素毎の差分を算出して二値化を行い、図12(c)のように物体領域1213が黒で示されるカメラ差分画像1203を生成する。ステップS1112ではカメラ差分画像1203を、カメラ座標系から距離画像センサ座標系への変換を行い、図12(d)のように距離画像センサ部208からみた物体領域1214を含むカメラ差分画像1204を生成する。ステップS1113では距離画像と書画台背景距離画像との画素毎の差分を算出して二値化を行い、図12(e)のように物体領域1215が黒で示される距離差分画像1205を生成する。ここで、対象物体1211の書画台204と同じ色で有る部分については、画素値の差が小さくなるためカメラ差分画像1203中の物体領域1213に含まれなくなる場合がある。また、対象物体1212の書画台204と高さが変わらない部分については距離センサ部208からの距離値が書画台204と差が小さいため、距離差分画像1205中の物体領域1215には含まれない場合がある。そこで、ステップS1114ではカメラ差分画像1203と距離差分画像1205の和をとって図12(f)に示す物体領域画像1206を生成し、物体領域1216を得る。ここで物体領域1216は書画台204と比べて色が異なるかまたは高さが異なる領域となり、カメラ差分画像1203中の物体領域1213か距離差分画像1205中の物体領域1215のいずれか片方のみを使った場合よりも、より正確に物体領域を表している。物体領域画像1206は距離画像センサ座標系であるため、ステップS1115では距離画像1202から物体領域画像1206中の物体領域1216のみを抽出することが可能である。ステップS1116ではステップS1115で抽出した距離画像を直交座標系に変換することにより図12(f)に示した3次元点群1217を生成する。この3次元点群1217が書籍物体の3次元点群である。
ステップS1103では、取得したカメラ画像と算出した3次元点群とから、書籍画像のゆがみ補正処理を行い、2次元の書籍画像を生成する。ステップS1103の処理は、図11Bで詳しく説明する。
図11Bのフローチャートを用いて、ステップS1103の書籍画像ゆがみ補正処理について説明する。書籍画像ゆがみ補正処理を開始すると、ステップS1121では物体領域画像1206を距離センサ画像座標系からカメラ座標系に変換する。ステップS1122ではカメラ画像1201から物体領域画像1206中の物体領域1216をカメラ座標系に変換したものを用いて物体領域を抽出する。ステップS1123では抽出した物体領域画像を書画台平面へ射影変換する。ステップS1124では射影変換した物体領域画像を矩形近似し、その矩形が水平になるように回転することによって、図12(g)の書籍画像1208を生成する。書籍画像1208は近似矩形の片方の編がX軸に平行となっているため、以降書籍画像1208に対してX軸方向へのゆがみ補正処理を行う。ステップS1125では書籍画像1208の最も左端の点をPとする(図12(g)の点P)。ステップS1126では書籍物体の3次元点群1217から点Pの高さ(図12(g)のh1)を取得する。ステップS1127では書籍画像1208の点Pに対してX軸方向に所定の距離(図12(g)のx1)離れた点をQとする(図12(g)の点Q)。ステップS1128では3次元点群1217から点Qの高さ(図12(g)のh2)を取得する。ステップS1129では点Pと点Qの書籍物体上での距離(図12(g)のl1)を式(4)の直線近似で算出する。
l1 = √(x12+(h1-h2) 2) ... (4)
ここで、h1、h2はそれぞれ点P,Qにおける書画台から原稿までの高さ、x1は、点P、Qを書画台に投影した、P,Q間の距離のx成分である。
ステップS1130では、ステップS1129で算出した距離l1でPQ間の距離を補正し、図12(g)における画像1219上の点P'と点Q' の位置に画素をコピーする。ステップS1131では書籍物体の3次元点群1217の点Pに相当する点のデータに補正後の座標を保存する。ステップS1132では処理を行った点Qを点Pとし、ステップS1128に戻って同じ処理を行うことによって図12(g)の点Qと点Rの間の補正を実行することができ、画像1219上の点Q'と点R'の画素とする。この処理を全画素について繰り返すことにより、画像1219はゆがみ補正後の画像となる。ステップS1133ではゆがみ補正処理を全ての点について終えたかどうかを判断し、終えていれば書籍物体のゆがみ補正処理を終了する。以上のようにして、ステップS1102、ステップS1103の処理を行ってゆがみ補正を行った書籍画像を生成することができる。
ゆがみ補正を行った書籍画像の生成後、ステップS1104では生成した書籍画像に階調補正を行う。ステップS1105では生成した書籍画像に対して、あらかじめ決めておいた画像フォーマット(例えばJPEG、TIFF、PDF等)に合わせて圧縮およびファイルフォーマット変換を行う。ステップS1106では生成した画像データを、データ管理部405を介してHDD305の所定の領域へファイルとして保存し、書籍画像撮影部412の処理を終了する。
<立体形状測定部の説明>
図13のフローチャートを用いて、立体形状測定部413が実行する処理について説明する。図14は立体形状測定部413の処理を説明するための模式図である。立体形状測定部413が処理を開始すると、ステップS1301ではシリアルI/F310を介してターンテーブル209へ回転指示を行い、ターンテーブル209を所定の角度ずつ回転させる。ここでの回転角度は小さければ小さいほど最終的な測定精度は高くなるが、その分測定回数が多くなり時間がかかるため、装置として適切な回転角度を予め決めておけば良い。
ステップS1302では書画台204内に設けられたターンテーブル209上の対象物に対して、カメラ部202とプロジェクタ207を用いて3次元点群測定処理を行う。図13(b)のフローチャートはステップS1302で実行する3次元点群測定処理のフローチャートである。3次元点群測定処理を開始すると、ステップS1311では図14(a)に示したターンテーブル209上の対象物1401に対して、プロジェクタ207から3次元形状測定パターン1402を投射する。ステップS1312では、カメラ画像取得部407を介してカメラ部202からカメラ画像を1フレーム取得する。ステップS1313では、3次元形状測定パターン1402と取得したカメラ画像間での対応点を図5のステップS504と同様にして抽出する。ステップS1314において、カメラ部208およびプロジェクタ207の位置関係から、カメラ画像上の各画素における距離を算出し、距離画像を生成する。ここでの測定方法は、距離画像取得部408の処理において、図5のステップ505で説明した測定方法と同じである。ステップS1315では距離画像の各画素について直交座標系への座標変換を行い、3次元点群を算出する。ステップS1316では算出した3次元点群から書画台204の平面パラメータを用いて書画台平面に含まれる3次元点群を除去する。そしてステップS1317では残った3次元点群の中から位置が大きく外れている点をノイズとして除去し、対象物1401の3次元点群1403を生成する。ステップ1318ではプロジェクタ207から投射している3次元形状測定パターン1402を消灯する。ステップS1319ではカメラ画像取得部407を介してカメラ部202からカメラ画像を取得し、その角度から見たときのテクスチャ画像として保存し、3次元点群測定処理を終了する。
2回目以降にステップS1302の3次元点群測定処理を実行した際は、ステップS1301でターンテーブル209を回転させて計測を行っているため、図14(c)に示すようにターンテーブル209上の対象物1401、プロジェクタ207およびカメラ202の角度が変わっている。そのため、図14(d)に示すように、ステップS1302で得られた3次元点群1402とは異なる視点から見た3次元点群1403が得られる。つまり、3次元点群1402ではカメラ部202およびプロジェクタ部207から死角となって算出できなかった部分の3次元点群が、3次元点群1403では含まれることになる。(逆に、3次元点群1403には含まれない3次元点群が、3次元点群1401に含まれている。)そこで、異なる視点から見た2つの3次元点群1402と1403を重ね合わせる処理を行う。
ステップS1303ではステップS1302で測定した3次元点群1403を、ターンテーブルが初期位置から回転した角度分逆回転することにより、3次元点群1403との位置を大まかに合わせた3次元点群1404を算出する。
ステップ1304ではステップS1303で算出された3次元点群と、既に合成された3次元点群との合成処理を行う。3次元点群の合成処理は特徴点を用いたICP(IterativeClosestPoint)アルゴリズムを用いる。ICPアルゴリズムでは合成対象の2つの3次元点群1402と1404から、それぞれコーナーとなる3次元特徴点を抽出する。そして、3次元点群1402の特徴点と3次元点群1404の特徴点の対応をとって、すべての対応点同士の距離を算出して加算し、3次元点群1404の位置を動かしながら対応点同士の距離の和が最小となる位置を繰り返し算出する。繰り返し回数が上限に達した場合や、対応点同士の距離の和が最小となる位置が算出されると、3次元点群1404を移動してから3次元点群1403と重ね合わせることにより、2つの3次元点群1402と1404を合成する。このようにして合成後の3次元点群1405を生成し、3次元点群合成処理を終了する。
ステップS1304の3次元点群合成処理が終了するとステップS1305ではターンテーブル209が1周回転したかを判断する。まだターンテーブル209が1周回転していなければ、ステップS1301へ戻ってターンテーブル209をさらに回転してからステップS1302を実行して別の角度の3次元点群を測定する。そしてステップS1303〜ステップS1304において既に合成した3次元点群1405と新たに測定した3次元点群との合成処理を行う。このようにステップS1301からステップS1305の処理をターンテーブル209が1周するまで繰り返すことにより、対象物1401の全周3次元点群を生成することができる。
ステップS1305でターンテーブル209が1周したと判断するとステップS1306へ進み、生成した3次元点群から3次元モデルを生成する処理を行う。3次元モデル生成処理を開始すると、ステップS1331では3次元点群からノイズ除去および平滑化を行う。ステップS1332では3次元点群から三角パッチを生成することで、メッシュ化を行う。ステップS1333ではメッシュ化によって得られた平面へステップS1319で保存したテクスチャをマッピングする。以上によりテクスチャマッピングされた3次元モデルを生成することが出来る。
ステップS1307ではテクスチャマッピング後のデータをVRMLやSTL等の標準的な3次元モデルデータフォーマットへ変換し、データ管理部405を介してHDD305上の所定の領域に格納し、立体形状測定部413の処理を終了する。
<メイン制御部の説明>
図15A,図15Bのフローチャートを用いてメイン制御部402が実行するスキャンアプリケーションの処理について説明する。メイン制御部402が処理を開始すると、図15AのステップS1501の物体載置待ち処理を実行する。ステップS1501の物体載置待ち処理では、まず、ステップS1511で書画台204にプロジェクタ207によって初期画面を投射表示する。この初期画面の一例を図16(a)に示す。図16(a)では、書画台204上にユーザーに対する操作指示等のメッセージ1601を投射表示している。続いてステップS1512では物体検知部410の処理を起動する。物体検知部410は図8のフローチャートで説明した処理の実行を開始する。ステップS1513では、物体検知部410からの物体載置通知を待つ。物体検知部410が図8のステップS827の処理を実行して物体載置をメイン制御部402へ通知すると、ステップS1513において物体載置通知ありと判断し、物体載置待ち処理を終了する。
ステップS1501の物体載置待ち処理を終了すると、メイン制御部402は続いてステップS1502の平面原稿スキャン領域指定開始処理を行う。平面原稿スキャン領域指定開始処理では、ステップS1521で図16(b)に示すスキャン領域指定画面を書画台204に投射表示する。図16(b)において、原稿1611はユーザーが置いた原稿であり、この上でユーザーが指先でドラッグ操作を行うことによりスキャン領域の指定を行うことができる。また、メッセージ1602は書画台204上に投射表示したメッセージである。ステップS1522では、ジェスチャー認識部409が平面タッチジェスチャーありと判定してメイン制御部402へ通知する(図6のステップS644、S605)のを待つ。ステップS1522で平面タッチジェスチャーありの通知を受け取るとステップS1523へ進み、物体検知部410が図8のステップS835で取得した平面原稿領域の位置と傾きを取得し、これを基に平面原稿から見た座標系、すなわち平面原稿座標系を算出する。ステップS1524では平面タッチジェスチャーを行った指先の位置を平面原稿座標系における位置に変換して算出する。そして、ステップS1525ではこの指定位置の座標を領域指定開始位置として記憶する。
ステップS1502の平面原稿スキャン領域指定開始処理を終了すると、ステップS1503の平面原稿スキャン領域指定処理を行う。その詳細を図15Bに示す。ステップS1503において、まず、ステップS1531では平面タッチジェスチャーありがジェスチャー認識部409から通知されたかどうかを判定する。ステップS1531で平面タッチジェスチャーの通知があればステップS1532へ進み、ステップS1523と同じく平面原稿領域の位置と傾きを取得し、平面原稿座標系を算出する。なおステップS1512で起動された物体検知処理(図8)は、物体が除去されるまで繰り返し物体例えば原稿を撮影してその位置と傾きとを算出することから、もし原稿が移動していれば、ステップS1532で算出される平面原稿座標系は、移動後の原稿における座標系となる。ステップS1533では平面タッチジェスチャーの指先位置から、平面原稿座標系での指先位置を算出する。ステップS1534では領域指定中画面を書画台204へ投射表示する。図16(d)が領域指定中画面の一例である。図16(d)において指先が指先1622の位置から指先1623の位置へ移動すると、その2点を対角頂点とする矩形1603を投射表示し、領域が指定中であることを示す。ステップS1534の処理を終えるか、あるいはステップS1531において平面タッチジェスチャー通知を受け取っていないと判定した場合、ステップS1535へ進む。ステップS1535ではジェスチャー認識部409から指先移動ジェスチャー通知、つまり指先が書画台204あるいは書画台204上の立体物から離れていることを意味する通知を受け取っているかどうかを判断する。ステップS1535で指先移動ジェスチャーを受け取っていなければ指先はまだ原稿に接触中であると判断できるため、ステップS1531へ戻って領域指定を続行する。ステップS1535で指先移動ジェスチャーを受け取っていれば、図16(e)のように指先1624が書画台204から離れていると判断できる。そこでステップS1536へ進んで、最後にステップS1533で算出した平面原稿座標系での指先位置を領域指定終了位置として記憶する。
ステップS1503の平面原稿スキャン領域指定処理を終了するとステップS1504へ進み、平面原稿スキャン実行処理を実行する。ステップS1504において、ステップS1551ではスキャン開始画面を書画台204へ投射表示する。図16(e)はスキャン開始画面の一例であり、スキャン開始を受け付けるスキャン開始ボタン1604を投射表示している。ユーザーインターフェイス部403は、ジェスチャー認識部409から通知される平面タッチジェスチャーの座標とボタンを表示している座標から、いずれかのボタンがユーザーによって押下されたことを検知する。(以降、ユーザーインターフェイス部による検知の説明を省略して「ボタンへのタッチを検知する」と記載する。)ステップS1552ではスキャン開始ボタン1604へのタッチを検知するのを待つ。ステップS1552でスキャン開始ボタン1604へのタッチを検知したらステップS1553へ進み、図9で説明した平面原稿撮影部411の処理を実行する。ステップS1554では、ステップS1525で記憶した領域指定開始位置と、ステップS1536で記憶した領域指定終了位置を対角とする矩形領域を、ステップS1553で撮影された画像から切り出し、データ管理部405を介してHDD305へ保存する。これにより、図16(j)に示したように、平面原稿1641から指先を原稿につけたままなぞる動作(ドラッグジェスチャー)によって指定された領域1642を切り出して画像データとして保存することができる。
続いて、ステップS1505では物体除去待ち処理を行う。ステップS1505において、ステップS1561ではスキャン終了画面の投射表示を行う。図16(f)はスキャン終了画面の一例であり、メッセージ1605を表示し原稿1611が取り除かれるのを待つ。ステップS1562では物体検知部410から物体除去通知を受け取るのを待ち、物体除去通知を受け取ったら平面原稿のスキャンを行うメイン制御部402の処理を終了する。
図15で説明したメイン制御部402の処理において、ステップS1523およびS1532で平面原稿の位置を取得し、ステップS1524およびS1533で平面原稿座標系での指先位置に算出し直すことにより、平面原稿が動いてしまった場合にも対応できる。例えば図16(g)において指先が指先1625の位置から指先1626の位置に移動したときに、一緒に原稿も、原稿1611の位置から原稿1622の位置に移動してしまったとする。このとき、原稿の移動を考慮しなければ指先1625と指先1626を含む矩形1651がスキャン領域となり、書画台204上の原稿が存在しない領域をスキャンしてしまう。しかし、前述のように平面原稿座標系での指先位置に算出し直していることにより、原稿上における指先位置の移動により示される矩形1606をスキャン領域とすることができる。また、図16(g)の原稿移動に続いて図16(h)のようにジェスチャー中の手では無い方の手1627で原稿を押さえた場合、手1627は指が1本だけ立った形では無いため、ジェスチャー認識部409は原稿を押さえたジェスチャーであると判断できる。そのため、図16(i)に示すようにジェスチャー中の手による領域指定操作を続行することができる。図16(i)では指先が指先1628の位置まで移動することにより、スキャン領域を矩形1607で指定している。また、原稿座標系の算出には原稿の位置と傾きの両方を使用しているため、図16(k)のように原稿が回転した場合でも適切に指先の位置を算出することができる。
[実施形態2]
実施形態1では、図16(g)のように原稿が移動した場合でも、原稿の位置を取得して平面原稿座標系での指先位置を算出することにより、原稿上を指先でなぞる操作を続行することを可能としている。本実施形態では、図16(g)のように指先の移動とともに原稿が移動した場合、一度指先を持ち上げて原稿から離し、再度原稿にタッチするという動作を領域指定操作のやり直しとして受け付けることを行う。
実施形態2では、実施形態1で図15A,図15Bのフローチャートを用いて説明したメイン制御部402の処理の一部が異なっている。実施形態2におけるメイン制御部402の処理を、図17のフローチャートを用いて説明する。
図17において、メイン制御部402が処理を開始すると、ステップS1501の物体置載待ち処理、ステップS1502の平面原稿スキャン領域指定開始処理、ステップS1503の平面原稿スキャン領域指定処理を順に行う。これらステップS1501、S1502、S1503の処理は図15で説明した処理と同じであるため、説明は省略する。
ステップS1503の平面原稿スキャン領域指定処理において、ユーザーが原稿から指先を離して所定の高さ以上になると、ステップS1701の平面原稿スキャン領域指定有効判定処理に進む。ステップS1701では、まず、ステップS1711で指定した領域の大きさを取得する。ここで、大きさとしては面積、あるいは周囲の長さでも良い。ステップS1712ではユーザーが領域指定を開始してから終了するまでの間に原稿が移動した移動量を算出する。ステップS1713では、ステップS1712で算出した原稿移動量に対する、ステップS1711で取得した指定領域の大きさの割合を算出する。そして、その割合があらかじめ決めておいた所定値より大きければ、ユーザーが指定したスキャン領域が有効であると判定し、ステップS1504の平面原稿スキャン実行処理およびステップS1505の物体除去待ち処理を行い、メイン制御部402の処理を終了する。ステップS1504およびステップS1505の処理内容は図15のステップS1504、S1505と同じであるため説明は省略する。
ステップS1713において、原稿移動量に対する指定領域の大きさの割合があらかじめ決めておいた所定値より小さければ、これは、例えば図16(g)のように、指先の移動とともに原稿が動いた直後に指先を原稿から離した場合ととらえることができる。そこで、この場合にはユーザーが指定したスキャン領域が無効であると判定し、ステップS1502の処理に戻る。ステップS1502では平面原稿スキャン領域の指定を開始する処理を再び行うため、ユーザーが最初からスキャン領域の指定を行うことが可能となる。
以上のように、実施形態2では原稿移動量に対してスキャン領域指定が小さかった場合にスキャン領域指定を無効と判定して再度指定できるようにすることで、原稿が大きく動いてしまった場合に領域指定をやり直すことができる。また、小さい領域を指定したい場合も、実施形態1で説明したような手で原稿を押さえる等の行為により原稿が移動しなければ、小さい領域を指定することは可能であるため、ユーザーの操作性は低下しない。
[実施形態3]
実施形態1では、図16(g)のように原稿が移動した場合でも、原稿の位置を取得して平面原稿座標系での指先位置を算出することにより、原稿上を指先でなぞる操作を続行することを可能としている。実施形態3では、原稿が移動したら最初から領域指定をやり直す方法を提供する。実施形態2との相違点は、実施形態2では、原稿移動量に対する指定領域の大きさをやり直しの判定基準としているのに対して、本実施形態では、原稿の移動量を判定基準としている点である。
図18は実施形態3のメイン制御部402が実行する処理のフローチャートである。なお、実施形態1と同じ処理については同じステップ番号を付与し、詳細な説明は省略する。
メイン制御部402が処理を開始すると、ステップS1501では物体載置待ち処理を行う。ステップS1502では平面原稿スキャン領域指定開始処理を行う。ステップS1803は平面原稿スキャン領域指定処理であり、この処理が実施形態1と異なるところである。平面原稿スキャン領域指定処理において、ステップS1831では、物体検知部410から取得した現在の原稿位置と、ステップS1502の平面原稿スキャン領域指定開始処理内で取得した原稿の位置から、原稿の位置が動いているかどうかを判定する。ステップS1831において、原稿が動いたと判定したらステップS1502の平面原稿スキャン領域指定開始処理に戻り、最初からスキャン領域指定の受付を行う。これにより、ユーザーは原稿が動いた場合にスキャン領域指定を最初からやり直すことができる。ステップS1831において原稿が動いていないと判定したらステップS1832へ進み、平面タッチジェスチャーありの通知を受け取ったかを判定する。ステップS1832において平面タッチジェスチャーありと判定したらステップS1833へ進んで、原稿の位置と傾きから平面原稿座標系での指先位置を算出し、ステップS1834で領域指定中画面の投射表示を行う。ステップS1834の処理を終えるか、またはステップS1832で平面タッチジェスチャー無しと判定したらステップS1835へ進み、指先移動ジェスチャー通知、つまり指先が書画台204から離れていることを意味する通知を受け取っているかどうかを判定する。ステップS1835において指先移動ジェスチャーが無ければ指先はまだ原稿にタッチしたままだと判断し、ステップS1831へ戻ってスキャン領域指定の受付を続行する。ステップS1835で指先移動ジェスチャー無しと判定したらステップS1504へ進んで平面原稿スキャン実行処理を行い、ステップS1505で物体除去待ち処理を行って、メイン制御部402の処理を終了する。
以上のように、実施形態3においては、スキャン領域指定処理中に原稿が動いたかどうかを監視し、原稿が動いた場合にはスキャン領域指定を最初から受け付け直すことによって、ユーザーがスキャン領域指定をやり直すことを可能にしている。
[実施形態4]
実施形態1では、原稿の位置を取得して平面原稿座標系での指先位置を算出することにより、原稿が移動しても原稿上を指先でなぞる操作を続行することを可能としている。一方原稿が静止していれば、原稿から見た指先位置(平面原稿座標系)を用いなくても、書画台から見た指先位置(直交座標系)を用いてスキャン領域指定が可能である。そこで、実施形態4では、原稿の静止を検知して、原稿が静止しているときのみスキャン領域指定を受け付けるようにする。
図19A、図19Bは実施形態4におけるメイン制御部402が実行する処理のフローチャートである。図15で説明したメイン制御部402の処理と同じ処理については、同じ符号を付与し、詳細な説明は省略する。
図19Aにおいてメイン制御部402が処理を開始すると、ステップS1501では物体検知部410からの物体載置通知を待つ物体載置待ち処理を行う。物体載置通知を受け取るとステップS1902の平面原稿スキャン領域指定開始処理を行う。ステップS1902において、ステップS1921ではスキャン領域指定画面の投射表示を行う。ここでのスキャン領域指定画面は、領域指定をユーザーに促すメッセージ等を含む。ステップS1922では、ジェスチャー認識部409からの平面タッチジェスチャーありの通知を受け取るのを待つ。ステップS1922で平面タッチジェスチャーありの通知を受け取るとステップS1923では物体検知部410が算出する平面原稿領域の位置を取得し、領域指定開始時の原稿位置として記憶する。ステップS1924では、ステップS1922で受け取った平面タッチジェスチャーの指先座標を、領域指定開始位置として記憶する。なお、ジェスチャー認識部409は直交座標系の3次元点群を基にジェスチャー判定を行うため、ここで受け取る指先座標も直交座標系での座標である。
続いてステップS1903の平面原稿スキャン領域指定処理を行う。ステップS1903において、ステップS1931では平面タッチジェスチャーありの通知をジェスチャー認識部409から受け取っているかを判定する。ステップS1931において平面タッチジェスチャーありの通知を受け取っていると判定したらステップS1932へ進み、物体検知部410が算出する平面原稿領域の位置を、現在の原稿位置として取得する。ステップS1933では、ステップS1923で取得した領域指定開始時の原稿位置と、ステップS1932で取得した現在の原稿位置とを比較し、原稿が動いたかどうかを判定する。ステップS1933で原稿が動いていなければステップS1934へ進み、ジェスチャー認識部409から原稿押さえジェスチャーありの通知を受け取っているかを判定する。ステップ1934で原稿押さえジェスチャーありの通知を受け取っていないと判定したらステップS1935へ進んで領域指定中画面を投射表示する。ここでの領域指定中画面は、指定中の領域を示す枠線等を含む。ステップS1935を終了するか、あるいは、ステップS1931で平面タッチジェスチャーありの通知を受け取っていない場合は、ステップS1936へ進んでジェスチャー認識部409から指先移動ジェスチャーありの通知を受け取っているかどうかを判定する。ステップS1936で指先移動ジェスチャーありの通知を受けとっていなければステップS1931へ戻って平面タッチジェスチャーの受け付け処理を続行する。ステップS1936で指先移動ジェスチャーありの通知を受けとっていればステップS1937へ進み、最後の平面タッチジェスチャーの指先座標(ここでも直交座標系)を領域指定終了位置として記憶し、平面原稿スキャン領域指定処理を終了する。
ステップS1933において原稿が移動したと判定するか、あるいは、ステップS1934で原稿押さえジェスチャーありの通知を受け取っていると判定したらステップS1938へ進む。ステップS1938では物体検知部410が算出する原稿領域の位置を繰り返し取得し、原稿があらかじめ決めておいた所定時間静止するまで待つ。ステップS1938で原稿が所定時間静止したらステップS1902へ戻り、平面原稿スキャン領域指定開始処理を再び行う。これにより、ユーザーは最初からスキャン領域指定をやり直すことが可能となる。
ステップS1903の平面原稿スキャン領域指定処理を終了すると、ステップS1904の平面原稿スキャン実行処理を行う。ステップS1904において、ステップS1941ではスキャン開始画面を投射表示する。ここでのスキャン開始画面はユーザーからのスキャン開始指示を受け付けるスキャン開始ボタンを含む。ステップS1942ではスキャン開始ボタンへのタッチを検知するのを待つ。ステップS1942でスキャン開始ボタンへのタッチを検知したらステップS1943へ進み、平面原稿画像撮影部が平面原稿撮影処理を実行する。
図19BはステップS1943において平面原稿画像撮影部が実行する処理を説明するフローチャートである。図19Bにおいて、ステップS1961ではカメラ画像取得部407からカメラ画像を1フレーム取得する。ステップS1962では取得したカメラ画像に対して階調補正を行う。ステップS1963ではカメラ画像を書画台平面へ射影変換する。ステップS1964では、ステップS1924で記憶した領域指定開始位置とステップS1937で記憶した領域指定終了位置を対角とする矩形領域を、射影変換後の画像から切り出す。ステップS1965では切り出した画像を圧縮およびフォーマット変換して保存し、平面原稿撮影部の処理を終了する。
図19Aにおいて、ステップS1904の平面原稿スキャン実行処理を終えるとステップS1505へ進んで物体除去待ち処理を行う。物体検知部410から物体除去の通知を受け取るとメイン制御部402の処理を終了する。
実施形態4においては、前述したように、メイン制御部402がステップS1933でスキャン領域指定中に原稿が動いたかどうかを判定し、動いた場合には原稿の静止を待ってスキャン領域指定開始処理を再度行う。そのため、原稿が動いた場合にユーザーがスキャン領域指定を再度行うことを可能としている。また、ステップS1934では原稿押さえジェスチャーがあった場合にも、原稿が動いた場合と同様に原稿の静止を待ってからスキャン領域指定開始処理を再度行っている。そのため、ユーザーが領域指定中に別の手で原稿を押さえ直した場合も、スキャン領域指定を再度行うことを可能としている。
[実施形態5]
実施形態1〜4では、書画台204上の平面原稿の動きを検知することにより、平面原稿上を指先でなぞる領域指定操作を可能としている。実施形態5では、厚みのある書籍原稿でも動きを検知し、書籍原稿上を指先でなぞる操作を可能とする。実施形態5においては、実施形態1と比較してメイン制御部402が実行する処理のみが異なる。図20A,図20Bは実施形態5のメイン制御部402が実行する処理のフローチャートである。
メイン制御部402が処理を開始すると、ステップS2001では物体載置待ち処理を行う。ステップS2001において、ステップS2011では初期画面を書画台204上に投射表示する。図21(a)はこのときに投射表示する初期画面の一例であり、ユーザーへのメッセージ2101を投射表示している。ステップS2012では物体検知部410の処理を起動する。このとき実行する物体検知部410の処理は、実施形態1において図8で説明した処理と同じである。ステップS2013では、メイン制御部402は物体検知部410からの物体載置通知を待つ。
ステップS2013で物体載置通知を受け取ると、ステップS2002の書籍原稿スキャン領域指定開始処理を行う。その詳細は図20Bに示す。ステップS2002において、ステップS2021ではスキャン領域指定画面を投射表示する。図21(b)はこのときに投射表示するスキャン領域指定画面の一例であり、ユーザーへのメッセージ2102を投射表示している。また、図21(b)において書籍原稿2111はユーザーが書画台204上に置いた書籍原稿である。ステップS2022ではジェスチャー認識部409から立体物タッチジェスチャーありの通知を受け取るまで待つ。図21(c)のように、指先2122が書籍原稿2111にあらかじめ決めておいた微小な所定値以下の距離に近づくと、ジェスチャー認識部409がそれを検知し、メイン制御部402はステップS2022で立体物タッチジェスチャーありの通知を受け取る。続いてステップS2023へ進んで、物体検知部410が算出した立体物の3次元点群を取得する。ステップS2024では、取得した3次元点群を用いて書籍画像ゆがみ補正処理を行う。このとき実行する書籍画像ゆがみ補正処理の内容は、図11Bで説明した処理と同じである。この書籍画像ゆがみ補正処理において、ステップS1131でタッチした点と補正後の座標が関連づけられているため、ステップS2025で補正後の書籍原稿上の指先位置を算出することが可能となる。このときの例を図21(d)に示す。図21(d)において、書籍画像2141はゆがみ補正後の書籍画像であり、その上の点2142がタッチされた点である。ここで算出した書籍原稿上の指先位置を領域指定開始位置として、ステップS2026で記憶しておく。
ステップS2002の書籍原稿スキャン領域指定開始処理に続いて、ステップS2003の書籍原稿スキャン領域指定処理を行う。その詳細は図20Bに示す。ステップS2003において、ステップS2031ではジェスチャー認識部409から立体物タッチジェスチャーありの通知を受け取っているかどうかを判定する。ステップS2031で立体物タッチジェスチャーありの通知を受け取っていれば、ステップS2032へ進んで物体検知部410が算出した立体物の3次元点群を取得する。ステップS2033では、取得した3次元点群を用いて書籍画像ゆがみ補正処理を行う。ステップ2034では、立体物タッチジェスチャーのタッチ位置と書籍画像ゆがみ補正処理の結果から、書籍原稿上の指先位置を取得する。ステップS2035では領域指定中画面を投射表示する。図21(e)が領域指定中画面の一例であり、指先が指先2124の位置まで移動したことに伴い、領域指定の矩形2103を投射表示している。また、図21(f)は補正後の書籍画像2143の図であり、指先2124に対応する補正後の点2143の位置をステップS2034で取得する。
ステップS2035の処理を終えるか、またはステップS2031で立体物タッチジェスチャー無しと判定したらステップS2036へ進み、指先移動ジェスチャー通知、つまり指先が書画台204および書画台204上の立体物から離れていることを意味する通知を受け取っているかどうかを判定する。ステップS2036において指先移動ジェスチャーが無ければ指先はまだ書籍原稿にタッチしたままだと判断し、ステップS2031へ戻ってスキャン領域指定の受付を続行する。ステップS2036で指先移動ジェスチャー無しと判定したらステップS2037へ進んで最後に取得した書籍原稿上の指先位置を領域指定終了位置として記憶する。図21(g)はこのときの一例の図であり、指先2125が書籍原稿2111から離れたことを指先移動ジェスチャー無しの通知で判定している。このとき、図21(h)に示したように、補正後の書籍原稿画像2141上の点2142がステップS2026で記憶した領域指定開始位置であり、また、点2144がステップS2037で記憶した領域指定終了位置である。点2142と点2144を対角とする矩形2145を指定されたスキャン領域とする。
ステップS2003の書籍原稿スキャン領域指定処理を終えると、続いてステップS2004の書籍原稿スキャン領域指定有効判定処理を行う。ステップS2004においては、指定されたスキャン領域の大きさ(面積、あるいは周囲長等でも良い)を取得する。ステップS2042では、ステップS2023で取得した領域指定開始時の3次元点群と、ステップS2032で取得した領域指定終了時の3次元点群のそれぞれの位置から、3次元点群の移動量を算出することにより、書籍原稿の移動量を算出する。ステップS2043ではステップS2042で算出した書籍原稿移動量に対する、ステップS2041で取得したスキャン領域の大きさの割合を算出し、それがあらかじめ決めておいた所定値以上であるかを判定する。ステップS2043で算出した割合が所定値よりちいさければ、スキャン領域指定は無効であると判断し、ステップS2002へ戻ってスキャン領域指定開始処理を行うことにより、ユーザーからの再度の領域指定を受け付けることができる。ステップS2043で算出した割合が所定値以上であればスキャン領域指定は有効であると判断し、ステップS2005へ進む。
ステップS2005では書籍原稿スキャン実行処理を行う。ステップS2005において、ステップS2051ではスキャン開始画面を投射表示する。図21(i)はスキャン開始画面の一例であり、スキャン開始を受け付けるスキャン開始ボタン2105を投射表示している。ステップS2062ではスキャンか位置ボタン2105へのタッチを待つ。ステップS2052でスキャン開始ボタン2105へのタッチを検知したらステップS2053へ進み、書籍画像撮影部412が処理を実行する。このときに書籍画像撮影部412が実行する処理は、図11のフローチャートで説明した処理である。ステップS2054では、書籍画像撮影部が撮影した画像から、図21(h)の矩形2145で示したスキャン指定領域を切り出し、保存する。
ステップS2005の書籍原稿スキャン実行処理を終えると、ステップS2006の物体除去待ち処理を行う。ステップS2006においては、ステップS2061でスキャン終了画面の投射表示を行う。図21(j)はこのスキャン終了画面の一例であり、ユーザーへのメッセージ2106を投射表示している。ステップS2062では物体検知部410からの物体除去通知を受け取るまで待ち、物体除去通知を受け取ったらメイン制御部402の処理を終了する。
実施形態5のメイン制御部402の処理において、ステップS2003で指先が立体物にタッチしていると判定している間、3次元点群の取得、書籍画像ゆがみ補正、書籍原稿上の指先位置取得、を繰り返し行っている。そのため、図21(k)のように、指先が指先2126の位置に移動したのに伴い書籍原稿2111が書籍原稿2112の位置へ移動してしまった場合でも、図21(l)のようにゆがみ補正後の書籍画像2141上の点2146をタッチしていると判定できる。そして、その後図21(m)に示すように手2128で書籍原稿2112を固定し、指先を指先2129の位置まで移動させた場合、図21(n)に示すように、ゆがみ補正後の書籍画像2141上の点矩形2148をスキャン領域として切り出すことが可能となる。
さらに、書籍原稿のスキャンにおいてもステップS2004のスキャン領域指定有効判定処理を指定領域の大きさと原稿移動量から行うことにより、実施形態2と同様にユーザーが領域指定をやり直すことが可能となる。
なお、本実施形態では、実施形態2と同様に、原稿に対するスキャン範囲の割合が所定値より小さいとその指定を無効としている。これを、原稿に対するスキャン範囲の割合にかかわらず指定された範囲を有効とすることもできる。また、実施形態3のように書籍原稿が移動したらスキャン範囲の指定をやり直させることもできるし、また、実施形態4のように書籍原稿が静止している場合に限ってスキャン範囲を指定させるよう構成してもよい。
[実施形態6]
実施形態5では、書籍原稿の移動を常に検知することによって書籍原稿が移動しても書籍原稿上の指先の位置を検出することができている。そのために、物体検知部410は距離画像を1フレーム取得する毎に立体物3次元点群取得処理を行い、また、メイン制御部402は指先の位置を取得するたびに書籍原稿ゆがみ補正処理を行っている。しかしながら、立体物3次元点群取得処理や書籍原稿ゆがみ補正処理は計算量が多いため、処理能力の低いCPUを使用している場合には処理能力が不足することも想定される。そこで、実施形態6では計算量の低減を行う。実施形態6は、実施形態5と比較して物体検知部410の処理とメイン制御部402の処理のみが異なる。そこで、物体検知部410とメイン制御部402の処理について図22A、図22Bのフローチャートを用いて説明する。
図22Aは実施形態6の物体検知部410が実行する処理のフローチャートである。図8で説明した処理と同じ処理を行う場合は同じ符号を付して説明を省略する。図22Aにおいて、物体検知部が処理を開始するとステップS801では図8で説明した初期化処理を行う。ステップS802では物体載置検知処理を行う。ステップS803では、カメラ画像取得部407から取得するカメラ画像を用いて平面原稿領域取得処理を行う。ステップS2211では、物体検知部410に対して立体物3次元点群再取得通知があったかどうかを判定する。ここで、立体物3次元点群再取得通知は後述するメイン制御部402が行う。ステップS2211で立体物3次元点群取得処理があったと判定したら、ステップS804へ進んで図8で説明した立体物3次元点群取得処理を行う(なお、1度も立体物3次元点群取得処理を行っていない場合もステップS2211からステップS804へ進む)。ステップS2211で立体物3次元点群再取得処理が無いと判定した場合には、ステップS2212へ進んで、ステップS803で取得した平面原稿領域を用いて平面原稿領域が移動したかどうかを判定する。ステップS2212で平面原稿領域が移動したと判定したらステップS2213へ進み、平面原稿領域の移動距離とZ軸周りの回転角度を算出する。ステップS2214では既に取得してある立体物3次元点群を、算出した移動距離だけ書画台平面に平行に移動するとともに、算出した回転角度だけ逆方向に回転させる。すなわち、一方の原稿画像を、算出したずれ量だけ移動させて移動後の他方の原稿画像を得る。ステップS804を実行するか、ステップS2215を実行するか、あるいはステップS2212で平面原稿領域が移動していないと判定した場合、ステップS805へ進み、平面原稿領域および立体物3次元点群が無くなったかどうかを判定する。ステップS805で面原稿領域および立体物3次元点群が存在すればステップS803へ戻って処理を続ける。ステップS805で面原稿領域および立体物3次元点群が無くなればステップS806へ進んで物体除去をメイン制御部402へ通知し、物体検知部410の処理を終了する。
図22Bは実施形態6のメイン制御部402が実行する処理のフローチャートである。図20Aで説明した処理と同じ処理を行う場合は同じ符号を付して説明を省略する。図22Bにおいてメイン制御部402が処理を開始すると、ステップS2001で物体載置待ち処理を行う。ステップS2002では書籍原稿スキャン領域指定開始処理を行う。ステップS2203では、書籍原稿スキャン領域指定処理を行う。ステップS2203の書籍原稿スキャン領域指定処理が実施形態5のメイン制御部402の処理と異なるところである。ステップS2231では物体検知部410がステップS803で取得した平面原稿領域の外形が変化したかどうかを判定する。ステップS2231がNOであればステップS2232へ進み、ジェスチャー認識部409から立体物押さえジェスチャーありまたは平面原稿押さえジェスチャーありの通知があったかどうかを判定する。ステップS2231かステップS2232のいずれかがYESであればステップS2233へ進み、物体検知部410へ立体部3次元点群の再取得を通知する。物体検知部410は前述のようにステップS2211で立体物3次元点群再取得通知があった場合にはステップS804の立体物3次元点群取得処理を行う。ステップS2234では、再取得した立体物3次元点群を用いて、図11Bで説明した書籍画像ゆがみ補正処理を行い、ステップS2235へ進む。ステップS2231およびステップS2232がいずれもNOであれば、ステップS2233の立体物3次元点群再取得およびステップS2234の書籍画像ゆがみ補正処理を行わずに、ステップS2235へ進む。ステップS2235では、ジェスチャー認識部2235から立体物タッチジェスチャーがあったかどうかを判定する。ステップS2235で立体物タッチジェスチャーが無ければステップS2238へ進む。ステップS2235で立体物タッチジェスチャーがあればステップS2236へ進み、指先がタッチしている点のデータに関連付けられた補正後の書籍原稿画像上の座標データから、書籍原稿上の指先位置を取得する。ステップS2237では領域指定中の画面を投射表示し、ステップS2238へ進む。ステップS2238では、指先移動ジェスチャー通知、つまり指先が書画台204および書画台204上の立体物から離れていることを意味する通知を受け取っているかどうかを判定する。ステップS2238において指先移動ジェスチャーが無ければ指先はまだ書籍原稿にタッチしたままだと判断し、ステップS2231へ戻ってスキャン領域指定の受付を続行する。ステップS2238で指先移動ジェスチャー無しと判定したらステップS2239へ進んで最後に取得した書籍原稿上の指先位置を領域指定終了位置として記憶する。
ステップS2203の書籍原稿スキャン領域指定処理を終了すると、続いてステップS2004の書籍原稿スキャン領域指定有効判定処理、ステップS2005の書籍原稿スキャン実行処理、ステップS2006の物体除去待ち処理を行う。これらは図20で説明したのと同じ処理なので説明は省略する。そして、メイン制御部402の処理を終了する。
物体検知部410の処理で説明したように、実施形態6ではステップS804の立体物3次元点群取得処理を毎フレーム行わず、3次元点群の平行移動および回転で簡略化している。3次元点群取得処理と比較して3次元点群の平行移動及び回転は単純な行列計算であるため計算量が少なく、さらに平面原稿領域取得処理によって移動した場合のみに平行移動(及び回転)処理を行っているため、計算量を低減することができている。また、メイン制御部402の処理で説明したように、書籍画像ゆがみ補正処理を、3次元点群の再取得のときだけに限ることでも計算量が低減している。また、平面原稿領域の外形が変化するか、あるいは押さえジェスチャーを検知したときには3次元点群再取得および書籍画像ゆがみ補正処理を行うことにより、ユーザーが書籍に触れたときに書籍の形状が変化しても、指先のタッチ位置の判定が正確に行うことが可能である。
[その他の実施例]
なお、実施形態5,6に示した書籍原稿のスキャン手順により平面原稿を読み取ることもできる。そのため、実施形態5,6の構成で平面原稿の読み取りを行ってもよい。また、平面原稿に対する処理を簡単化するために、平面原稿と書籍原稿とで処理を切り替えてもよい。その場合には、原稿の種類をユーザーに指定させたり、あるいは最初のジェスチャーが平面タッチジェスチャーであれば平面原稿としてスキャンし、立体物タッチジェスチャーであれば書籍原稿としてスキャンするように構成してもよい。後者の場合には、たとえば図15AのステップS1522では、ジェスチャーが平面タッチジェスチャーでないなら図20AのステップS2011に分岐するように構成する。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
101 カメラスキャナ、201 コントローラ部、202 カメラ部、204 書画台、207 プロジェクタ、208 距離画像センサ部

Claims (15)

  1. 書画台をその上方から撮影する撮影手段と、
    前記書画台上における指定位置の入力を受け付ける入力手段と、
    前記入力手段により入力された指定位置を、前記撮影手段により撮影された原稿上の座標に変換する変換手段と、
    前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された2つの指定位置により定まる読み取り範囲を保存する保存手段と
    を有することを特徴とする画像読取装置。
  2. 前記変換手段は、前記撮影手段により原稿が載置されていない前記書画台を撮影した背景画像と、前記撮影手段により撮影した原稿画像との差分の画像から、前記原稿の位置及び傾きを特定して前記書画台上の座標系を前記原稿上の座標系に変換することを特徴とする請求項1に記載の画像読取装置。
  3. ジェスチャーを認識する手段を更に有し、
    前記入力手段は、前記書画台上におけるジェスチャーによる指定位置の入力を受け付けることを特徴とする請求項1又は2に記載の画像読取装置。
  4. 前記2つの指定位置それぞれを指定した際の前記原稿の位置の差に対する前記読み取り範囲の大きさの割合が所定の値よりも小さければ、前記2つの指定位置を受け付け直すことを特徴とする請求項1乃至3のいずれか一項に記載の画像読取装置。
  5. 前記2つの指定位置それぞれを指定した際の前記原稿の位置にずれがある場合には、前記2つの指定位置を受け付け直すことを特徴とする請求項1乃至3のいずれか一項に記載の画像読取装置。
  6. ジェスチャーを認識する手段を更に有し、
    前記書画台上の原稿を押さえたジェスチャーを検知した場合には、前記原稿が所定時間静止することを待ってから、前記2つの指定位置を受け付け直すことを特徴とする請求項1または2に記載の画像読取装置。
  7. 前記書画台上に画像を投影する投影手段と、
    前記投影手段を用いて、前記入力手段により入力され前記変換手段により変換された2つの指定位置により定まる読み取り範囲を前記書画台上に投影する手段を更に有することを特徴とする請求項1乃至6のいずれか一項に記載の画像読取装置。
  8. 前記投影手段を用いて、ユーザーに対する操作指示をさらに投影することを特徴とする請求項7に記載の画像読取装置。
  9. 前記2つの指定位置それぞれを指定した際の前記原稿の位置にずれがある場合には、それぞれの位置における原稿の画像を前記撮影手段により撮影した画像からそれぞれ取得することを特徴とする請求項1乃至8のいずれか一項に記載の画像読取装置。
  10. 前記2つの指定位置それぞれを指定した際の前記原稿の位置にずれがある場合には、ずれの量に基づいて一方の位置における原稿の画像を移動することで、移動後の位置における画像を得ることを特徴とする請求項1乃至8のいずれか一項に記載の画像読取装置。
  11. 書画台上の立体物である書籍原稿を認識する認識手段と、
    前記書画台をその上方から撮影する撮影手段と、
    前記書籍原稿上における指定位置の入力を受け付ける入力手段と、
    前記入力手段により前記書籍原稿上で入力された指定位置と前記撮影手段により撮影した書籍原稿の画像とを前記書画台上の平面の座標系へと変換し、前記入力手段により入力された指定位置を、前記平面の座標系に変換された原稿上の座標にさらに変換する変換手段と、
    前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された2つの指定位置により定まる読み取り範囲を保存する保存手段と
    を有することを特徴とする画像読取装置。
  12. 前記2つの指定位置それぞれを指定した際の前記原稿の位置の差に対する前記読み取り範囲の大きさの割合が所定の値よりも小さければ、前記2つの指定位置を受け付け直すことを特徴とする請求項11に記載の画像読取装置。
  13. 請求項1乃至12のいずれか一項に記載の画像読取装置としてコンピュータを機能させるためのプログラム。
  14. 書画台をその上方から撮影する撮影手段を有する画像読取装置における画像読取方法であって、
    前記書画台上における指定位置の入力を受け付ける入力工程と、
    前記入力工程により入力された指定位置を、前記撮影手段により撮影された原稿上の座標に変換する変換工程と、
    前記撮影手段により撮影された前記原稿の画像のうち、前記入力工程により入力され前記変換工程により変換された2つの指定位置により定まる読み取り範囲を保存する保存工程と
    を有することを特徴とする画像読取方法。
  15. 書画台をその上方から撮影する撮影手段を有する画像読取装置における画像読取方法であって、
    書画台上の立体物である書籍原稿を認識する認識工程と、
    前記書籍原稿上における指定位置の入力を受け付ける入力工程と、
    前記入力工程により前記書籍原稿上で入力された指定位置と前記撮影手段により撮影した書籍原稿の画像とを前記書画台上の平面の座標系へと変換し、前記入力工程により入力された指定位置を、前記平面の座標系に変換された原稿上の座標にさらに変換する変換工程と、
    前記撮影手段により撮影された前記原稿の画像のうち、前記入力工程により入力され前記変換工程により変換された2つの指定位置により定まる読み取り範囲を保存する保存工程と
    を有することを特徴とする画像読取方法。
JP2014076463A 2014-04-02 2014-04-02 画像読取装置、方法およびプログラム Pending JP2015198406A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014076463A JP2015198406A (ja) 2014-04-02 2014-04-02 画像読取装置、方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014076463A JP2015198406A (ja) 2014-04-02 2014-04-02 画像読取装置、方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2015198406A true JP2015198406A (ja) 2015-11-09

Family

ID=54547853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014076463A Pending JP2015198406A (ja) 2014-04-02 2014-04-02 画像読取装置、方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2015198406A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017142635A (ja) * 2016-02-10 2017-08-17 日立オムロンターミナルソリューションズ株式会社 画像読取装置
JP2018005628A (ja) * 2016-07-04 2018-01-11 富士通株式会社 情報処理装置、インタラクション方法、およびインタラクションプログラム
JP2018054380A (ja) * 2016-09-27 2018-04-05 株式会社トプコン レーザスキャナシステム及び点群データのレジストレーション方法
WO2019035295A1 (ja) * 2017-08-18 2019-02-21 富士フイルム株式会社 原稿検出装置、原稿検出方法
JP2021097274A (ja) * 2019-12-13 2021-06-24 コニカミノルタ株式会社 画像読取機器、その制御方法、およびプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017142635A (ja) * 2016-02-10 2017-08-17 日立オムロンターミナルソリューションズ株式会社 画像読取装置
JP2018005628A (ja) * 2016-07-04 2018-01-11 富士通株式会社 情報処理装置、インタラクション方法、およびインタラクションプログラム
JP2018054380A (ja) * 2016-09-27 2018-04-05 株式会社トプコン レーザスキャナシステム及び点群データのレジストレーション方法
WO2019035295A1 (ja) * 2017-08-18 2019-02-21 富士フイルム株式会社 原稿検出装置、原稿検出方法
JPWO2019035295A1 (ja) * 2017-08-18 2020-07-09 富士フイルム株式会社 原稿検出装置、原稿検出方法
US10999472B2 (en) 2017-08-18 2021-05-04 Fujifilm Corporation Original document detection apparatus and original document detection method
JP2021097274A (ja) * 2019-12-13 2021-06-24 コニカミノルタ株式会社 画像読取機器、その制御方法、およびプログラム
JP7463708B2 (ja) 2019-12-13 2024-04-09 コニカミノルタ株式会社 画像読取機器、その制御方法、およびプログラム

Similar Documents

Publication Publication Date Title
JP6327931B2 (ja) 画像処理装置、情報処理方法及びプログラム
US10310675B2 (en) User interface apparatus and control method
CN107407959B (zh) 基于姿势的三维图像的操纵
JP2015198406A (ja) 画像読取装置、方法およびプログラム
KR20140112064A (ko) 가상 자
JP2016038820A (ja) 画像処理装置および制御プログラム
JP6289254B2 (ja) 画像処理装置、情報処理方法及びプログラム
JP6381361B2 (ja) データ処理装置、データ処理システム、データ処理装置の制御方法、並びにプログラム
JP2015170907A (ja) スキャナシステム、スキャナシステムのデータ処理方法、及びプログラム
US20180035077A1 (en) Remote communication system, method for controlling remote communication system, and storage medium
JP2016103137A (ja) ユーザインタフェース装置、画像処理装置及び制御用プログラム
JP6746419B2 (ja) 情報処理装置、及びその制御方法ならびにコンピュータプログラム
JP2017117373A (ja) 操作装置とその制御方法、及びプログラム
JP2018112894A (ja) システムおよび制御方法
JP2018107642A (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム
JP2015212892A (ja) 画像処理装置、情報処理方法及びプログラム
JP2017162126A (ja) 入力システム、入力方法、制御用プログラム、及び記憶媒体
JP6478641B2 (ja) 画像処理装置、情報処理方法及びプログラム
JP6643825B2 (ja) 装置及び方法
JP2017041668A (ja) 画像入力装置、画像入力システム、画像入力装置の制御方法、及びプログラム
JP6624861B2 (ja) 画像処理装置、制御方法およびプログラム
JP2018077673A (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム
JP6203070B2 (ja) スキャンシステムおよびその制御方法、並びにプログラム
JP2018173907A (ja) 情報処理装置、および情報処理装置の制御方法、プログラム
JP2018116360A (ja) 手入力装置、手入力装置の制御方法