以下、本発明の好ましい実施例について、添付図面を参照して説明する。図1は、本発明の画像入出力装置1の外観斜視図である。
画像入出力装置1は、デジタルカメラとして機能するデジカメモード、ウェブカメラとして機能するwebcamモード、3次元形状を検出して立体画像を取得するための立体画像モード、湾曲した原稿等を平面化した平面化画像を取得するための平面化画像モード、被写体の撮像画像データと手本データとを比較し、その結果を投影して表示する手本トレースモード等の種々のモードを備えた装置である。
図1では、特に、立体画像モードや平面化画像モードにおいて、被写体としての原稿Pの3次元形状を検出するために、後述する画像投影部13から明暗を交互に並べてなる縞状のパターン光を投影している様子を図示している。
画像入出力装置1は、略箱状に形成された撮像ヘッド2と、その撮像ヘッド2と一端が連結されたパイプ状のアーム部材3と、そのアーム部材3の他端と連結され、平面視略L型に形成されたベース4とを備えている。
撮像ヘッド2は、その内部に後述する画像投影部13や画像撮像部14を内包するケースである。撮像ヘッド2の正面には、その中央部に筒状の鏡筒5と、鏡筒5の斜め上方にファインダ6と、そのファインダ6の反対側にフラッシュ7とが配置されている。また、ファインダ6とフラッシュ7との間に、後述する画像撮像部14の一部である撮像光学系21のレンズの一部が外面に露出しており、この露出部分から被写体の画像が入力される。
鏡筒5は、撮像ヘッド2の正面から突出し、その内部に画像投影部13の一部である投影光学系20を内包するカバーである。この鏡筒5によって、投影光学系20が保持され、全体を焦点調節のため移動可能とされ、且つ、傷つくのが防止されている。また、鏡筒5端面からは、画像投影部13の一部である投影光学系20のレンズの一部が外面に露出しており、この露出部分から投影面に向かって画像信号光が投影される。
ファインダ6は、撮像ヘッド2の背面から正面を通して配設される光学レンズで構成されている。撮像装置1の背面から使用者がのぞき込んだ時に、撮像光学系21がCCD22上に結像する範囲とほぼ一致する範囲が見えるようになっている。
フラッシュ7は、例えば、デジカメモードや手本トレースモードにおいて、必要な光量を補足するための光源であり、キセノンガスが充填された放電管で構成されている。よって、撮像ヘッド2に内蔵されているコンデンサ(図示せず)からの放電により繰り返し使用することができる。
また、撮像ヘッド2の上面には、手前側にレリーズボタン8と、そのレリーズボタン8の奥方にモード切替スイッチ9と、モード切替スイッチ9の反対側にモニタLCD10とが配置されている。
レリーズボタン8は、「半押し状態」と「全押し状態」との2種類の状態に設定可能な2段階の押しボタン式のスイッチで構成されている。レリーズボタン8の状態は後述するプロセッサ15に管理されており、「半押し状態」で周知のオートフォーカス(AF)および自動露出(AE)機能が起動し、ピント、絞り、シャッタスピードが調節され、「全押し状態」で撮像等が行われる。
モード切替スイッチ9は、デジカメモード、webcamモード、立体画像モード、平面化画像モード、手本トレースモード、オフモード等の種々のモードに設定可能なスイッチである。モード切替スイッチ9の状態はプロセッサ15に管理されており、モード切替スイッチ9の状態がプロセッサ15によって検出されることで各モードの処理が実行される。
モニタLCD10は、液晶ディスプレイ(Liquid Crystal Display)で構成されており、プロセッサ15からの画像信号を受けて画像を使用者に表示する。例えば、モニタLCD10には、デジカメモードやwebcamモードや手本トレースモードにおける撮像画像や、立体画像モードにおける3次元形状検出結果画像、平面化画像モードにおける平面化画像等が表示される。
更に、撮像ヘッド2の側面には、その上方にRF(無線)インターフェイスとしてのアンテナ11と、撮像ヘッド2とアーム部材3とを連結する連結部材12とが配置されている。
アンテナ11は、後述するRFドライバ24を介してデジカメモードで取得した撮像画像データや立体画像モードで取得した立体画像データ、手本トレースモードで取得した比較結果情報データ等を外部インターフェイスに無線通信によって送信する一方で、手本トレースモードで使用する手本データ及び作業結果判断プログラム等を外部インターフェイスから無線通信によって受信し、後述するRFドライバ24に出力するものである。
連結部材12は、内周面に雌ねじが形成されたリング状に形成され、撮像ヘッド2の側面に回動可能に固定されている。また、アーム部材3の一端側には雄ねじが形成されている。この雌ねじと雄ねじとを嵌合させることで、撮像ヘッド2とアーム部材3とを着脱自在に連結することができると共に、撮像ヘッド2を任意の角度で固定することができるようになっている。従って、撮像ヘッド2を取り外し、通常のデジカメ(デジタルカメラ)として使用できる。
アーム部材3は、撮像ヘッド2を所定の撮像位置に変化可能に保持するためのものであり、任意の形状に屈曲可能な蛇腹状のパイプで構成されている。よって撮像ヘッド2を任意の位置に向けることができる。
ベース4は、机上等の載置台に載置され、撮像ヘッド2とアーム部材3とを支持するものである。平面視略L字型に形成されているので、安定して撮像ヘッド2等を支持することができる。また、ベース4とアーム部材3とは着脱自在に連結されているので、持ち運びに便利であり、省スペースで収納することもできる。
図2は、撮像ヘッド2の内部構成を模式的に示す図である。撮像ヘッド2の内部には、主に、画像投影部13と、画像撮像部14と、プロセッサ15とが内蔵されている。
画像投影部13は、投影面に任意の投影画像を投影するためのユニットであり、投影方向に沿って、基板16と、複数個のLED17(その総称として以下「LEDアレイ17A」という)と、光源レンズ18と、投影LCD19と、投影光学系20とを備えている。尚、この画像投影部13については、図3において詳細に説明する。
画像撮像部14は、被写体としての原稿Pを撮像するためのユニットであり、光の入力方向に沿って、撮像光学系21と、CCD22とを備えている。
撮像光学系21は、複数枚のレンズで構成され、周知のオートフォーカス機能を有し、自動で焦点距離及び絞りを調整して外部からの光をCCD22上に結像する。
CCD22は、CCD(Charge Coupled Device)素子などの光電変換素子をマトリクス状に配列して構成され、撮像光学系21を介して表面に結像される画像の光の色及び強さに応じた信号を生成し、これをデジタルデータに変換してプロセッサ15に出力する。
プロセッサ15には、フラッシュ7、レリーズボタン8、モード切替スイッチ9、モニタLCDドライバ23を介してモニタLCD10、RFドライバ24を介してアンテナ11、電源インターフェイス25を介してバッテリ26、外部メモリ27、キャッシュメモリ28、光源ドライバ29を介してLEDアレイ17A、投影LCDドライバ30を介して投影LCD19、CCDインターフェイス31を介してCCD22の各々が電気的に接続され、プロセッサ15によって管理されている。
外部メモリ27は、着脱自在なフラッシュROMであり、デジカメモードやwebcamモード、そして立体画像モードにおいて撮像した撮像画像や3次元情報、手本トレースモードにおいて比較結果情報を撮像した場合の撮像画像などを記憶する。具体的には、SDカード、コンパクトフラッシュ(登録商標)カード等を使用することができる。
キャッシュメモリ28は、高速な記憶装置である。例えば、デジカメモードや手本トレースモードにおいて撮像した撮像画像を高速でキャッシュメモリ28に転送し、プロセッサ15で画像処理を行ってから外部メモリ27に格納されるように使われる。具体的には、SDRAM、DDRRAM等を使用することができる。
尚、電源インターフェイス25はバッテリ26を、光源ドライバ29はLEDアレイ17Aを、投影LCDドライバ30は投影LED19を、CCDインターフェイス31はCCD22を各々制御する各種のIC(Integrated Circuit:集積回路)によって構成されている。
図3(a)は画像投影部13の拡大図であり、(b)は光源レンズ18の平面図であり、(c)は投影LCD19とCCD22との配置関係を示す図である。
上述した通り、画像投影部13は、投影方向に沿って、基板16と、LEDアレイ17Aと、光源レンズ18と、投影LCD19と、投影光学系20とを備えている。
基板16は、LEDアレイ17Aを実装すると共に、LEDアレイ17Aとの電気的な配線をするためのものである。具体的には、アルミ製基板に絶縁樹脂を塗布してから無電解メッキにてパターンを形成したものやカラエポ基材をコアとする単層または多層構造の基板を使用することができる。
LEDアレイ17Aは、投影LCD19に向けて放射状の光を発光する光源であり、基板16上に、複数個のLED17(発光ダイオード)が千鳥状に配列され、銀ペーストを介して接着されている。また、ボンディングワイヤを介して電気的に結線されている。
このように光源として複数個のLED17を使用することで、光源として白熱電球、ハロゲンランプ等を使用する場合に比べて、電気を光に変換する効率(電気光変換効率)を高め、同時に赤外線や紫外線の発生を抑えることができる。よって、省電力で駆動でき、節電化、長寿命化を図ることができる。また、装置の温度上昇を低減させることができる。
この様に、LED17はハロゲンランプ等に比べて熱線の発生が極めて低いので、後述する光源レンズ18や投影光学系20として、樹脂製のレンズを採用することができる。よって、ガラス製のレンズを採用する場合に比べて、各レンズ18,20を安価で軽量に構成することができる。
また、LEDアレイ17Aを構成する各LED17は、各々同じ発光色を発光するもので、材料にAl、In、Ga、Pの4元素を用いたアンバー色を発光するもので構成されている。よって、複数色の発光色を発光させる場合に生ずる色収差の補正を考慮する必要はなく、色収差を補正するために投影光学系20として色消しレンズを採用する必要はないので、投影光学系20の設計の自由度を向上させることができる。
また、他の発光色に比べて電気光変換率が約80lumen/Wと高い4元素材料のアンバー色LEDを採用することで、一層、高輝度、節電、長寿命化を図ることができる。尚、各LED17を千鳥状に配置する事に関する効果については、図4を参照して説明する。
具体的には、LEDアレイ17Aは59個のLED17からなり、各LED17は50mW(20mA,2.5V)で駆動され、結局、全59個のLED17は略3Wの消費電力で駆動される。また、各LED17から発光される光が、光源レンズ18、投影LCD19を通過して投影光学系20から照射される場合の光束値としての明るさは、全面照射の場合であっても25ANSIルーメン程度に設定されている。
この明るさを採用することで、例えば、立体画像モードにおいて、人や動物の顔面等の被写体の3次元形状を検出する場合に、人や動物に眩しさを与えず、人や動物が目をつぶっていない状態の3次元形状を検出することができる。
光源レンズ18は、LEDアレイ17Aから放射状に発光される光を集光するレンズであり、その材質はアクリルに代表される光学樹脂で構成されている。
具体的には、光源レンズ18は、LEDアレイ17Aの各LED17に対向する位置に投影LED19側に向けて凸設された凸状のレンズ部18aと、そのレンズ部18aを支持するベース部18bと、そのベース部18bの内部空間であってLEDアレイ17Aを内包する開口に充填されるLED17の封止および基板16と光源レンズ18との接着を目的としたエポキシ封止材18cと、ベース部18bから基板16側に突設され、光源レンズ18と基板16とを接続する位置決めピン18dとを備えている。
光源レンズ18は、開口の内部にLEDアレイ17Aを内包させつつ、基板16に穿設されている長孔16に位置決めピン18dを差込み、基板16上に固定される。
よって、省スペースで光源レンズ18を配置することができる。また、基板16にLEDアレイ17Aを実装するという機能の他に、光源レンズ18を支持するという機能を兼任させることで、光源レンズ18を支持する部品を別途必要とせず、部品の点数を削減することができる。
また、各レンズ部18aは、LEDアレイ17Aの各LED17と1対1の関係で対向する位置に配置されている。
よって、各LED17から発光される放射状の光は、各LED17に対向する各レンズ部18によって効率良く集光され、図に示すような指向性の高い放射光として投影LED19に照射される。この様に指向性を高めたのは、投影LCD19に略垂直に光を入射することによって、面内の透過率ムラが抑制され得るためである。また同時に、投影光学系20は、テレセントリック特性を持ち、その入射NAが0.1程度であるため、垂直±5°以内の光のみが内部の絞りを通過できるように規制されているためである。従って、LED17からの光を出射角度を垂直に揃え、且つ、±5°にほどんどの光束を入れることが画質向上の要点となる。
投影LCD19は、光源レンズ18を通過して集光された光に空間変調を施して、投影光学系20に向けて画像信号光を出力する空間変調素子であって、具体的には、縦横の比率の異なる板状の液晶ディスプレイ(Liquid Crystal Display)で構成されている。
また、(C)に示すように、この投影LCD19を構成する各画素は、その液晶ディスプレイの長手方向に沿って一直線状に並べられた1の画素列と、その1の画素列とは液晶ディスプレイの長手方向に所定間隔ずれた他の画素列とを交互に並列に並べて配置されている。
尚、(C)は紙面手前側に撮像ヘッド2の正面を向け、紙面裏側から光が投影LCD19に向けて照射され、紙面手間側からCCD22に被写体像が結像される状態であるとする。
このように、投影LCD19を構成する画素を長手方向に千鳥状に配置することで、長手方向と直交する方向(短手方向)において、投影LCD19によって空間変調が施される光を1/2ピッチで制御することができる。従って、細いピッチで投影パターンを制御でき、分解能を上げて高精度に3次元の形状を検出することができる。
特に、後述する立体画像モードや平面化画像モードにおいて、被写体の3次元形状を検出すべく、被写体に向けて明暗を交互に並べてなる縞状のパターン光を投光する場合に、その縞方向を投影LCD19の短手方向に一致させることで、明暗の境界を1/2ピッチで制御することができるので、同様に高精度に3次元の形状を検出することができる。
また、撮像ヘッド2の内部において、投影LCD19とCCD22とは、(C)に示すような関係で配置される。具体的には、投影LCD19の幅広面とCCD22の幅広面とは略同一の方向に向いて配置されているので、投影LCD19から投影面に投影されている画像をCCD22に結像させる場合に、投影画像をハーフミラー等で屈曲させることなく、そのままの状態で投影画像を結像させることができる。
また、CCD22は、投影LCD19の長手方向側(画素列が延びる方向側)に配置されている。よって、特に、立体画像モードや平面化画像モードにおいて、三角測量の原理を利用して被写体の3次元形状を検出する場合には、CCD22と被写体とのなす傾きを1/2ピッチで制御することができるので、同様に高精度に3次元の形状を検出することができる。
投影光学系20は、投影LED19を通過した画像信号光を投影面に向けて投影する複数のレンズであり、ガラス及び樹脂の組み合わせからなるテレセントリックレンズで構成されている。テレセントリックとは、投影光学系20を通過する主光線は、入射側の空間では光軸に平行になり、射出瞳の位置は無限になる構成をいう。このようにテレセントリックにすることで、前述のように投影LCD19を垂直±5°で通過する光のみを投影し得るので、画質を向上させることができる。
図4は、LEDアレイ17Aの配列に関する説明をするための図である。(a)は光源レンズ18を通過した光の照度分布を示す図であり、(b)はLEDアレイ17Aの配列状態を示す平面図であり、(c)は投影LCD19面における合成照度分布を示す図である。
(a)に示すように、光源レンズ18を通過した光は、半値拡がり半角θ(=略5°)で、(a)左側に図示するような照度分布を有する光として投影LCD19の表面に到達するように設計されている。
また、(b)に示すように、複数のLED17は基板上16に千鳥状に配列されている。具体的には、複数個のLED17をdピッチで直列に並べたLED列を、√3/2dピッチで並列に並べ、更に、そのLED列を1列おきに同じ方向に1/2d移動させた状態になるように配置されている。
換言すれば、1のLED17と、その1のLED17の周辺のLCD17との間隔はdになるように設定されている(三角格子配列)。
そして、このdの長さは、LED17の1つから出射された光によって投影LCD19において形成される照度分布の半値全幅(FWHM(Full Width Half Maximun))以下となる様に決定されている。
よって、光源レンズ18を通過して投影LCD19の表面に到達する光の合成照度分布は、(c)に示すように小さなリップルを含んだ略直線状になり、投影LCD19の面に略均一に光を照射することができる。従って、投影LCD19における照度ムラを抑制することができ、結果的に、高品質な画像を投影することができる。
図5は、画像入出力装置1の電気的なブロック図である。尚、既に上述した構成ついては、その説明を省略する。プロセッサ15は、CPU35と、ROM36と、RAM37とを備えている。
CPU35は、ROM36に記憶されたプログラムによる処理に応じて、RAM37を利用して、レリーズボタン8の押下げ操作の検知、CCD22から画像データの取り込み、その画像データの転送、格納、モード切替スイッチ9の状態の検出等の各種処理を行う。
ROM36には、カメラ制御プログラム36aと、パターン光撮影プログラム36bと、輝度画像生成プログラム36cと、コード画像生成プログラム36dと、コード境界抽出プログラム36eと、レンズ収差補正プログラム36fと、三角測量演算プログラム36gと、原稿姿勢演算プログラム36hと、平面変換プログラム36iとが格納されている。
カメラ制御プログラム36aは、図6に示すメイン処理を含む撮像装置1全体の制御に関するプログラムである。
パターン光撮影プログラム36bは、原稿Pの3次元形状を検出するために被写体にパターン光を投影した状態と、投影していない状態とを撮像するプログラムである。
輝度画像生成プログラム36cは、パターン光撮影プログラム36bによってパターン光を投影した状態を撮像したパターン光有画像と、パターン光を投影していない状態を撮像したパターン光無画像との差分をとり、投影されたパターン光の輝度画像を生成するプログラムである。
また、パターン光は複数種類のものが時系列に投影され各パターン光毎に撮像され、撮像された複数枚のパターン光有画像の各々とパターン光無画像との差分がとられ、複数種類の輝度画像が生成される。
コード画像生成プログラム36dは、輝度画像生成プログラム36cによって生成される複数枚の輝度画像を重ね合わせ、各画素毎に所定のコードを割り当てたコード画像を生成するプログラムである。
コード境界抽出プログラム36eは、コード画像生成プログラム36dによっって生成されるコード画像と、輝度画像生成プログラム36cによって生成される輝度画像とを利用して、コードの境界座標をサブピクセル精度で求めるプログラムである。
レンズ収差補正プログラム36fは、コード境界抽出プログラム36eによってサブピクセル精度で求められているコードの境界座標に対して、撮像光学系20の収差補正を行うプログラムである。
三角測量演算プログラム36gは、レンズ収差補正プログラム36fによって収差補正がなされたコードの境界座標から、その境界座標に関する実空間の3次元座標を演算するプログラムである。
原稿姿勢演算プログラム36hは、三角測量演算プログラム36gで演算された3次元座標から原稿Pの3次元形状を推定して求めるプログラムである。
平面変換プログラム36iは、原稿姿勢演算プログラム36hで演算される原稿Pの3次元形状に基づき、原稿Pの正面から撮像したような平面化画像を生成するプログラムである。
RAM37には、パターン光有画像格納部37aと、パターン光無画像格納部37bと、輝度画像格納部37cと、コード画像格納部37dと、コード境界座標格納部37eと、ID格納部37fと、収差補正座標格納部37gと、3次元座標格納部37hと、原稿姿勢演算結果格納部37iと、平面変換結果格納部37jと、投影画像格納部37kと、作業結果判断プログラム格納部37lと、ワーキングエリア37mとが記憶領域として割り当てられている。
パターン光有画像格納部37aは、パターン光撮影プログラム36bによって原稿Pにパターン光を投影した状態を撮像したパターン光有画像を格納する。パターン光無画像格納部37bは、パターン光撮影プログラム36bによって原稿Pにパターン光を投影していない状態を撮像したパターン光無画像を格納する。
輝度画像格納部37cは、輝度画像生成プログラム36cによって生成される輝度画像を格納する。コード画像格納部37dは、コード画像生成プログラム36dによって生成されるコード画像を格納する。コード境界座標格納部37eは、コード境界抽出プログラム36eによって、抽出されるサブピクセル精度で求められた各コードの境界座標を格納する。ID格納部37fは、境界を有する画素位置において明暗の変化を有する輝度画像に割り当てられるID等を格納する。収差補正座標格納部37gは、レンズ収差補正プログラム36fによって収差補正がなされたコードの境界座標を格納する。3次元形状座標格納部37hは、三角測量演算プログラム36gによって演算される実空間の3次元座標を格納する。
原稿姿勢演算結果格納部37iは、原稿姿勢演算プログラム36hによって演算される原稿Pの3次元形状に関するパラメータを格納する。平面変換結果格納部37jは、平面変換プログラム36iよって生成される平面変換結果を格納する。投影画像格納部37kは、画像投影部13から投影する画像情報を格納する。ワーキングエリア37mは、CPU15での演算のために一時的に使用するデータを格納する。
作業結果判断プログラム格納部37lは、アンテナ11を介して受信した作業結果判断プログラムを格納する。なお、「作業結果判断プログラム」とは、手本トレースモードにおいて実行される処理において、被写体の撮像画像データとその被写体に関する参照情報との比較結果を、比較結果情報として生成するためのプログラムである。
図6は、メイン処理のフローチャートである。尚、このメイン処理におけるデジカメ処理(S605)、webcam処理(S607)、立体画像処理(S609)、平面化画像処理(S611)、手本トレース処理(S613)の各処理についての詳細は後述する。
メイン処理では、まず、電源が起動されると(S601)、プロセッサ15やその他のインターフェイス等が初期化される(S602)。
そして、モード切替スイッチ9の状態を判別するキースキャンが行われ(S603)、モード切替スイッチ9の設定がデジカメモードか否かが判断され(S604)、デジカメモードであれば(S604:Yes)、後述するデジカメ処理に移行する(S605)。
一方、デジカメモードでなければ(S604:No)、モード切替スイッチ9の設定がwebcamモードか否かが判断され(S606)、webcamモードであれば(S606:Yes)、後述するwebcam処理に移行する(S607)。
一方、webcamモードでなければ(S605:No)、モード切替スイッチ9の設定が立体画像モードか否かが判断され(S608)、立体画像モードであれば(S608:Yes)、後述する立体画像処理に移行する(S609)。
一方、立体画像モードでなければ(S608:No)、モード切替スイッチ9の設定が平面化画像モードか否かが判断され(S610)、平面化画像モードであれば(S610:Yes)、後述する平面化画像処理に移行する(S611)。
一方、平面化画像モードでなければ(S610:No)、モード切替スイッチ9の設定が手本トレースモードか否かが判断され(S612)、手本トレースモードであれば(S612:Yes)、後述する手本トレース処理に移行する(S613)。
一方、手本トレースモードでなければ(S612:No)、モード切替スイッチ9がオフモードか否かが判断され(S612)、オフモードでなければ(S612:No)、S603からの処理を繰り返し、オフモードであれば(S612:Yes)、当該処理を終了する。
図7は、デジカメ処理(図6のS605)のフローチャートである。デジカメ処理は、画像撮像部14によって撮像した画像を取得する処理である。
この処理では、まず、CCD22に高解像度設定信号を送信する(S701)。これにより高品質の撮像画像を使用者に提供することができる。
次に、モニタLCD10にファインダ画像(ファインダ6を介して見える範囲の画像)を表示する(S702)。よって、使用者は、ファインダ6を覗き込むことなく、モニタLCD10に表示された画像によって実際の撮像の前に、撮像画像(撮像範囲)を確認することができる。
次に、レリーズボタン8をスキャンし(S703a)、レリーズボタン8が半押しされたか否かを判断する(S703b)。半押しされていれば(S703b:Yes)、オートフォーカス(AF)および自動露出(AE)機能を起動し、ピント、絞り、シャッタスピードを調節する(S703c)。尚、半押しされていなければ(S703b:No)、S703aからの処理を繰り返す。
次に、再び、レリーズボタン8をスキャンし(S703d)、レリーズボタン8が全押しされたか否かを判断する(S703e)。全押しされていれば(S703e:Yes)、フラッシュモードか否かを判断する(S704)。
その結果、フラッシュモードであれば(S704:Yes)、フラッシュ7を投光して(S705)、撮影し(S706)、フラッシュモードでなければ(S704:No)、フラッシュ7を投光することなく撮影する(S706)。尚、S703eの判断において、全押しされていなければ(S703e:No)、S703aからの処理を繰り返す。
次に、撮影した撮像画像をCCD22からキャッシュメモリ28に転送し(S707)、キャッシュメモリ28に記憶された撮像画像をモニタLCD10に表示する(S708)。このように、撮像画像をキャッシュメモリ28に転送することでメインメモリに転送する場合に比較して、撮像画像を高速にモニタLCD10に表示させることができる。そして、その撮像画像を外部メモリ27に格納する(S709)。
最後に、モード切替スイッチ9に変化が無いか否かを判断し(S710)、そ変化が無ければ(S710:Yes)、S702からの処理を繰り返し、変化があれば(S710:No)、当該処理を終了する。
図8は、webcam処理(図6のS607)のフローチャートである。webcam処理は、画像撮像部14で撮像した撮像画像(静止画および動画を含む)を外部ネットワークに送信する処理である。尚、本実施例では、撮像画像として動画を外部ネットワークに送信する場合を想定している。
この処理では、ます、CCD22に低解像度設定信号を送信し(S801)、周知のオートフォーカス(AF)及び自動露出(AE)機能を起動して、ピント、絞り、シャッター速度を調節した後に(S802)、撮影を開始する(S803)。
そして、撮影された撮像画像をモニタLCD10に表示し(S804)、ファインダ画像を投影画像格納部37kに格納し(S805)、後述する投影処理を行い(S806)、投影画像格納部37kに格納されている画像を投影面に投影する。
また、撮像画像をCCD22からキャッシュメモリ28に転送し(S807)、キャッシュメモリ28に転送された撮像画像をRFインターフェイスであるRFドライバ24及びアンテナ11を介して外部ネットワークに送信する(S808)。
そして、最後に、モード切替スイッチ9に変化が無いか否かを判断し(S809)、変化が無ければ(S809:Yes)、S802からの処理を繰り返し、変化があれば(S809:No)、当該処理を終了する。
図9は、投影処理(図8のS806)のフローチャートである。この処理は、投画像投影部13から影画像格納部37kに格納されている画像を投影面に投影する処理である。この処理では、まず、投影画像格納部37kに画像が格納されているか否かを確認する(S901)。格納されていれば(S901:Yes)、投影画像格納部37kに格納されている画像を投影LCDドライバ30に転送し(S902)、投影LCDドライバ30から、その画像に応じた画像信号を投影LCD19に送り、投影LCD19に画像を表示する(S903)。
次に、光源ドライバ29を駆動し(S904)、その光源ドライバ29からの電気信号によってLEDアレイ17Aを点灯し(S905)、当該処理を終了する。
こうして、LEDアレイ17Aが点灯すると、LEDアレイ17Aから発光する光は、光源レンズ18を介して投影LCD19に到達し、投影LCD19において、投影LCDドライバ30から送信される画像信号に応じた空間変調が施され、画像信号光として出力される。そして、その投影LCD19から出力される画像信号光は、投影光学系20を介して投影面に投影画像として投影される。
図10は、立体画像処理(図6のS609)のフローチャートである。立体画像処理は、被写体の3次元形状を検出し、その立体画像としての3次元形状検出結果画像を取得、表示、投影する処理である。
この処理では、まず、CCD22に高解像度設定信号を送信し(S1001)、モニタLCD10にファインダ画像を表示する(S1002)。
次に、レリーズボタン8をスキャンし(S1003a)、レリーズボタン8が半押しされたか否かを判断する(S1003b)。半押しされていれば(S1003b:Yes)、オートフォーカス(AF)および自動露出(AE)機能を起動し、ピント、絞り、シャッタスピードを調節する(S1003c)。尚、半押しされていなければ(S1003b:No)、S1003aからの処理を繰り返す。
次に、再び、レリーズボタン8をスキャンし(S1003d)、レリーズボタン8が全押しされたか否かを判断する(S1003e)。全押しされていれば(S1003e:Yes)、フラッシュモードか否かを判断する(S1003f)。
その結果、フラッシュモードであれば(S1003f:Yes)、フラッシュ7を投光して(S1003g)、撮影し(S1003h)、フラッシュモードでなければ(S1003f:No)、フラッシュ7を投光することなく撮影する(S1003h)。尚、S1003eの判断において、全押しされていなければ(S1003e:No)、S1003aからの処理を繰り返す。
次に、後述する3次元形状検出処理を行い、被写体の3次元形状を検出する(S1006)。
次に、3次元形状検出処理(S1006)における3次元形状検出結果を外部メモリ27に格納し(S1007)、3次元形状検出結果をモニタLCD10に表示する(S1008)。尚、この3次元形状検出結果とは、各計測頂点の実空間における3次元座標(X,Y,Z)の集合体として表示する。
次に、3次元形状検出結果としての計測頂点をポリゴンで結んでそのサーフェスを表示した立体画像(3DのCG画像)としての3次元形状検出結果画像を投影画像格納部37kに格納し(S1009)、図8のS806の投影処理と同様な投影処理を行う(S1010)。尚、この場合には、図18において説明する投影LCD19上の座標を3次元空間座標に変換する式の逆関数を利用して、求められた3次元座標に対する投影LCD19上の座標を求めることで、3次元形状結果座標を投影面に投影させることができる。
そして、モード切替スイッチ9に変化が無いか否かを判断し(S1011)、変化が無ければ(S1011:Yes)、S702からの処理を繰り返し、変化があれば(S1011:No)、当該処理を終了する。
図11(a)は、上述した3次元形状検出処理(図10のS1006)において、3次元形状を検出するために利用する空間コード法の原理を説明するための図であり、(b)は(a)とは異なるパターン光を示す図である。パターン光にはこれら(a)または(b)のいずれを用いても良く、更には、多階調コードであるグレイレベルコードを用いても良い。
尚、この空間コード法につての詳細は、佐藤宏介、他1名、「空間コード化による距離画像入力」、電子通信学会論文誌、85/3Vol.J 68−D No3 p369〜375に詳細に開示されている。
空間コード法は、投影光と観測画像間の三角測量に基づいて被写体の3次元形状を検出する方法の1種であり、(a)に示すように、投影光源Lと観測器Oとを距離Dだけ離して設置し、空間を細長い扇状領域に分割しコード化することを特徴とする。
図中の3枚のマスクパターンA,B,CをMSBから順番に投影すると、各扇状領域はマスクによって明「1」と暗「0」とにコード化される。例えば、点Pを含む領域は、マスクA,Bでは光が当たらず、マスクCでは明になるので、001(A=0、B=0、C=1)とコード化される。
各扇状の領域には、その方向φに相当するコードが割り当てられ、それぞれを1本のスリット光線とみなすことができる。そこで各マスクごとに情景を観測機器としてのカメラで撮影し、明暗パターンを2値化してメモリの各ビットプレーンを構成していく。
こうして、得られた多重ビットプレーン画像の横方向の位置(アドレス)は、観測方向θに相当し、このアドレスのメモリの内容は投影光コード、即ち、φを与える。このθとφとから注目点の座標を決定する。
また、この方法で使用するマスクパターンとしては、(a)ではマスクパターンA,B,Cのような純2進コードを用いる場合を図示しているが、マスクの位置ズレが起こると領域の境界で大きな誤差が生ずる危険性がある。
例えば、(a)の点Qは領域3(011)と領域4(100)の境界を示しているが、もしマスクAの1がずれ込むと領域7(111)のコードが生ずる可能性がある。換言すれば、隣接する領域間でハミング距離が2以上のところで、大きな誤差が発生する可能性がある。
そこで、この方法で使用するマスクパターンとしては、(b)に示すように、隣接する領域間でハミング距離が常に1であるコードを使うことで、上述したようなコード化誤差を避けることができるとされている。
図12(a)は、3次元形状検出処理(図10のS1006)のフローチャートである。この処理では、まず、撮像処理を行う(S1210)。この撮像処理は、図11(a)に示す複数枚の純2進コードのマスクパターンを利用して画像投影部13から、明暗を交互に並べてなる縞状のパターン光(図1参照)を時系列的に被写体に投影し、各パターン光が投影されている状態を撮像したパターン光有画像と、パターン光が投影されていな状態を撮像したパターン光無画像とを取得する処理である。
撮像処理を終了すると(S1210)、3次元計測処理を行う(S1220)。3次元計測処理は、撮像処理によって取得したパターン光有画像とパターン光無画像とを利用して、実際に被写体の3次元形状を計測する処理である。こうして、3次元計測処理を終了すると(S1220)、当該処理を終了する。
図12(b)は、撮像処理(図12(a)のS1210)のフローチャートである。この処理は、パターン光撮影プログラム36aに基づき実行され、まず、画像投影部13からパターン光を投影することなく、画像撮像部14によって被写体を撮像することで、パターン光無画像を取得する(S1211)。尚、取得したパターン光無画像はパターン光無画像格納部37bに格納される。
次に、カウンタiを初期化し(S1212)、そのカウンタiの値が最大値imaxか否かを判断する(S1213)。尚、最大値imaxは使用するマスクパターンの数によって決定される。例えば、8種類のマスクパターンを使用する場合には、最大imax(=8)となる。
そして、判断の結果、カウンタiの値が最大値imaxより小さい場合には(S1213:Yes)、使用するマスクパターンの内、i番のマスクパターンを投影LCD19に表示し、そのi番のマスクパターンによって投影されるi番のパターン光を投影面に投影し(S1214)、そのパターン光が投影されている状態を画像撮像部14によって撮影する(S1215)。
こうして、被写体にi番のパターン光が投影された状態を撮像したパターン光有画像を取得する。尚、取得したパターン光有画像は、パターン光有画像格納部37aに格納される。
撮影を終了すると、i番のパターン光の投影を終了し(S1216)、次のパターン光を投影すべく、カウンタiに「1」を加算して(S1217)、S1213からの処理を繰り返す。
そして、カウンタiの値が最大値imaxより大きいと判断すると(S1213:No)、当該処理を終了する。即ち、この撮像処理においては、1枚のパターン光無画像と、最大値imax枚のパターン光有画像とを取得することになる。
図12(c)は、3次元計測処理(図12(a)のS1220)のフローチャートである。この処理は、輝度画像生成プログラム36cに基づき実行され、まず、輝度画像を生成する(S1221)。ここで、輝度は、YCbCr空間におけるY値であり、各画素のRGB値よりY=0.2989・R+0.5866・G+0.1145・Bから計算される値である。各画素についてY値を求めることにより、各パターン光有及び無し画像に関する輝度画像を生成する。生成した輝度画像は、輝度画像格納部37cに格納される。また、パターン光の番号に対応した番号を各輝度画像に割り付けておく。
次に、コード画像生成プログラム36dにより、上述した空間コード法を利用して、生成した輝度画像を組み合わせることで、各画素毎にコード化されたコード画像を生成する(S1222)。
このコード画像は、輝度画像格納部37cに格納したパターン光有り画像に関する輝度画像の各画素について、あらかじめ設定した輝度閾値と比較し、その結果を結合させることで生成することができる。生成されたコード画像はコード画像格納部37dに格納される。
次に、コード境界抽出プログラム36eにより、後述するコード境界座標検出処理を行い(S1223)、各画素毎に割り当てられたコードの境界座標をサブピクセル精度で検出する。
次に、レンズ収差補正プログラム36fにより、レンズ収差補正処理を行う(S1224)。この処理によって、撮像光学系21の歪みなどの影響で誤差を含んでいるS1223で検出されるコード境界座標の誤差を補正することができる。
次に、三角測量演算プログラム36gにより、三角測量原理による実空間変換処理を行う(S1225)。この処理によって収差補正が施された後のCCD空間上のコード境界座標は、実空間における3次元座標に変換され、3次元形状検出結果としての3次元座標が求められる。
図13は、コード境界座標検出処理(図12のS1223)の概略を説明するための図である。上側の図は、CCD空間において実際のパターン光の明暗の境界を境界線Kで示し、そのパターン光を上述した空間コード法でコード化し、1のコードと他のコードとの境界を図中太線で示した図である。
即ち、上述した空間コード法におけるコード化は、各画素単位で行われるため、実際のパターン光の境界線Kと、コード化された境界(図中太線)とではサブピクセル精度の誤差が生ずる。そこで、このコード境界座標検出処理は、コードの境界座標をサブピクセル精度で検出することを目的とする。
この処理では、まず、ある検出位置(以下「curCCDX」と称す)において、ある着目コード(以下「curCode」という)から他のコードに変化する第1画素Gを検出する(第1画素検出工程)。
例えば、curCCDXにおいて、上から順番に各画素を検出すると、境界(太線)まではcurCodeを有する画素であるが、境界の次の画素、即ち、第1画素Gにおいて、curCodeは変化しているので、これを第1画素Gとして検出する。
次に、その第1画素Gの画素位置において、図12のS1221において輝度画像格納部37cに格納された輝度画像の内から、明暗の変化を持つ輝度画像の全部を抽出する(輝度画像抽出工程)。
次に、近似に利用するための画素領域を特定するために検出位置を「2」左側に移動させ、検出位置curCCDX−2の位置において、コード画像を参照して、着目コード(curCode)から他のコードに変化する画素(境界画素(curCCDX−2の検出位置では画素H))を探し、その画素を中心に予め定めた範囲(本実施例の場合Y軸方向に−3画素と+2画素の範囲)の画素範囲を特定する(画素領域特定手段の一部)。
次に、その予め定めた範囲内において、図中の下側の左側のグラフに示すように、Y方向の画素位置と輝度とに関する近似式(図中実線で示す)を求め、その近似式における輝度閾値bThとの交点におけるY座標Y1を求める(境界座標検出工程の一部)。
尚、輝度閾値bThは、予め定められた範囲内から算出(例えば、各画素の輝度の平均の2分の1)しても良く、予め与えられた固定値であっても良い。これにより、明と暗との境界をサブピクセル精度で検出することができる。
次に、検出位置をcurCCDX−2から「1」右側に移動させ、curCCDX−1において上述したのと同様な処理を行い、curCCDX−1における代表値を求める(境界座標検出工程の一部)。
このように、境界画素を中心にY軸方向に予め定めた範囲と、X軸方向におけるcurCCDX−2からcurCCDX+2の範囲とで構成される画素領域(図中右下がり斜線部参照)において、各検出位置における代表値を求める。
これまでの処理をcurCodeから他のコードへ変化する画素を持つ輝度画像の全てに行い、各輝度画像についての代表値の加重平均値を最終的にcurCodeにおける境界座標として採用する(境界座標検出工程の一部)。
これにより、コードの境界座標を高精度にサブピクセル精度で検出することができ、この境界座標を利用して上述した三角測量原理による実空間変換処理(図12のS1225)を行うことで、高精度に被写体の3次元形状を検出することができる。
また、このように輝度画像に基づき算出される近似式を利用して境界座標をサブピクセル精度で検出することができるため、従来のように撮像枚数を増加させることもなく、また、純2進コードで明暗付けられたパターン光であっても良く、特殊なパターン光であるグレイコードを用いる必要はない。
尚、本実施例では、各検出位置において境界画素を中心にY軸方向に「−3」から「+2」の範囲と、X軸方向における検出位置としてのcurCCDX−2からcurCCDX+2の範囲とで構成される領域を、近似を求めるための画素領域として説明したが、この画素領域のY軸、X軸の範囲はこれらに限定されるものではない。例えば、curCCDXの検出位置における境界画素を中心としたY軸方向への所定範囲だけを画素領域としても良い。
図14は、コード境界座標検出処理(図12のS1223)のフローチャートである。この処理は、コード境界抽出プログラム36eに基づき実行され、まず、CCD空間におけるコード境界座標列の各要素を初期化し(S1401)、curCCDXを開始座標に設定する(S1402)。
次に、curCCDXが終了座標以下か否かを判断し(S1403)、終了座標以下であれば(S1403:Yes)、curCodeを「0」に設定する(S1404)。即ち、curCodeは当初、最小値に設定される。
次に、curCodeが最大コードより小さいか否かを判断する(S1405)。curCodeが最大コードより小さければ(S1405:Yes)、curCCDXにおいてコード画像を参照して、curCodeの画素を探し(S1406)、curCodeの画素が存在するか否かを判断する(S1407)。
その結果、curCodeの画素が存在していれば(S1407:Yes)、curCCDXにおいて、そのcurCodeよりも大きなCodeの画素をコード画像を参照して探し(S1408)、そのcurCodeよりも大きなcurCodeの画素が存在するか否かを判断する(S1409)。
その結果、curCodeよりも大きなCodeの画素が存在していれば(S1409:Yes)、後述する境界をサブピクセル精度で求める処理を行う(S1410)。そして、次のcurCodeについて境界座標を求めるべく、curCodeに「1」を加算して(S1411)、S1405からの処理を繰り返す。
即ち、境界は、curCodeを有する画素の画素位置またはcurCodeよりも大きなCodeの画素の画素位置に存在しているため、本実施例では、暫定的に境界は、curCodeより大きなcurCodeの画素の画素位置にあると仮定して処理を進めるものである。
また、curCodeが存在していない場合や(S1407:No)、curCodeよりも大きなCodeの画素が存在していない場合には(S1409:No)、次のcurCodeについて境界座標を求めるべく、curCodeに「1」を加算して(S1411)、S1405からの処理を繰り返す。
こうして、0から最大コードまでのcurCodeについて、S1405からS1411までの処理を繰り返し、curCodeが最大コードより大きくなると(S1405:No)、検出位置を変更すべく、curCCDXに「dCCDX」を加算し(S1412)、新たな検出位置において、上述したのと同様にS1403からの処理を繰り返す。
そして、curCCDXを変更してゆき、最終的にcurCCDXが終了座標より大きくなると(S1403)、即ち、開始座標から終了座標までの検出が終了すると、当該処理を終了する。
図15は、コード境界座標をサブピクセル精度で求める処理(図14のS1410)のフローチャートである。
この処理では、まず、図12のS1221において輝度画像格納部37cに格納された輝度画像の内から、図14のS1409において検出されたcurCodeよりも大きなCodeを有する画素の画素位置において、明暗の変化を持つ輝度画像の全部を抽出する(S1501)。
そして、その抽出した輝度画像のマスクパターン番号を配列PatID[]へ格納し、その抽出した輝度画像の画像数をnoPatIDへ格納する(S1502)。尚、配列PatID[]とnoPatIDとはID格納部37fに格納される。
次に、カウンタiを初期化し(S1503)、カウンタiの値がnoPatIDより小さいか否かを判断する(S1504)。その結果、小さいと判断されれば(S1504:Yes)、カウンタiに対応するPatID[i]のマスクパターン番号を持つ輝度画像について、境界のCCDY値を求め、その値をfCCDY[i]へ格納する(S1505)。
このS1505の処理を終了すると、カウンタiに「1」を加算し(S1506)、S1504からの処理を繰り返す。そして、S1504において、カウンタiの値がnoPatIDより大きいと判断されると(S1504:No)、即ち、S1501で抽出された全部の輝度画像についてS1505の処理が終了すると、S1505の処理で求めたfCCDY[i]の加重平均値を計算し、その結果を境界値とする(S1507)。
尚、加重平均値に代えて、S1505の処理で求めたfCCDY[i]の中央値を計算し、その結果を境界値としたり、統計的な計算により境界値を計算したりすることもできる。
即ち、境界座標は、curCCDXの座標と、S1507で求められる加重平均値とで表現され、この境界座標をコード境界座標格納部37eに格納して、当該処理を終了する。
図16は、PatID[i]のマスクパターン番号を持つ輝度画像について、境界のCCDY値を求める処理(図15のS1505)のフローチャートである。
この処理では、まず、「curCCDX−dx」と「0」との内、大きい値をccdxとして設定する「ccdx=MAX(curCCDX−dx,0)」で表される処理を行うと共に、カウンタjを初期化する(S1601)。
具体的には、S1601でいう「0」はCCDX値の最小値を意味し、例えば、今、検出位置としてのcurCCDX値が「1」で、予め設定されているdx値が「2」であったとすると、「curCCDX−dx」は「−1」となり、CCDX値の最小値である「0」よりも小さくなるため、「−1」における以降の処理は、「ccdx=0」として設定する処理を行う。
即ち、CCDX値の最小値よりも小さい位置については、以降の処理を除外する処理を行う。
尚、この「dx」の値は、予め「0」を含む適当な整数に設定することができ、図13で説明した例では、この「dx」は「2」に設定されており、図13の例に従えば、このccdxは「curCCDX−2」に設定されることになる。
次に、ccdx<=MIN(curCCDX+dx,ccdW−1)であるか否かを判断する(S1602)。つまり、左辺の「MIN(curCCDX+dx,ccdW−1)」は、「curCCDX+dx」と、CCDX値の最大値「ccdW」から「1」を減算した「ccdW−1」との内、小さい値であることを意味しているので、その値と「ccdx」値との大小を比較する。
即ち、CCDX値の最大値よりも大きい位置については、以降の処理を除外する処理を行う。
そして、判断の結果、ccdxがMIN(curCCDX+dx,ccdW−1)よりも小さければ(S1602:Yes)、コード画像とPatID[i]が割り当てられた輝度画像とを参照して、境界の存在する画素の画素位置のeCCDY値を求める(S1603)。
例えば、検出位置を図13に示すcurCCDX−1であるとすると、画素Iを境界が存在する画素候補として検出し、画素Iの位置においてeCCDY値を求める。
次に、PatID[i]のマスクパターン番号を持つ輝度画像から、MAX(eCCDY−dy,0)<=ccdy<=MIN(eCCDY+dy−1,ccdH−1)の範囲で、ccdy方向における輝度に関する近似多項式Bt=fb(ccdy)を求める(S1604)。
次に、その近似多項式Btと輝度閾値bThとの交差するccdy値を求め、その値をefCCDY[j]へ格納する(S1605)。このS1604とS1605とによって、サブピクセル精度の境界座標の検出をすることができる。
次に、ccdxとカウンタjとに各々「1」を加算し(S1605)、S1602からの処理を繰り返す。即ち、curCCDXを中心とした左右の所定範囲内における各検出位置において、サブピクセル精度の境界を検出するのである。
そして、S1602において、「ccdx」が「MIN(curCCDX+dx,ccdW−1)」より大きいと判断されると(S1602:No)、curCCDX−dxからcurCCDX+dxの範囲で計算されたefCCDY[j]について、ccdy=fy(ccdx)の近似多項式を求める(S1606)。この処理によってS1605において検出された各値を用いるので、1つの検出位置において境界座標を検出しようとする場合に比べて、境界座標の検出精度を向上させることができる。
こうして得られた近似多項式とcurCCDXとの交点を、PatID[i]のマスクパターン番号を持つ輝度画像についての境界のCCDY値として(S1607)、当該処理を終了する。ここまでの処理を図15のフローチャートに示すように、抽出した全部の輝度画像の1枚、1枚に実行し、求められた境界座標について加重平均値を計算して、その結果を最終的な境界座標としているので(S1507)、更に、境界座標の検出精度を向上させることができる。
図17は、レンズ収差補正処理(図12のS1224)を説明するための図である。レンズ収差補正処理は、図17(a)に示すように、撮像光学系21の収差により、入射した光束が理想レンズにより結像すべき位置からずれてしまうことに対して、撮像された画素の位置を本来結像すべき位置へ補正する処理である。
この収差補正は、例えば、図17(b)に示すように、撮像光学系21の撮像範囲において、入射光の角度である半画角hfaをパラメータとして光学系の収差を計算して求めたデータを基に補正する。
この収差補正処理では、レンズ収差補正プログラム36fに基づき実行され、コード境界座標格納部37eに格納されているコード境界座標について行なわれ、収差補正処理がなされたデータは、収差補正座標格納部37gに格納される。
具体的には、実画像における任意点座標(ccdx、ccdy)を理想カメラ画像での座標(ccdcx、ccdcy)に変換する次の(1)から(3)のカメラキャリブレーション(近似式)を用いて補正する。
本実施例では、収差量dist(%)は、半画角hfa(deg)を用いてdist=f(hfa)と記述する。また、撮像光学系21の焦点距離をfocallength(mm)、ccd画素長pixellength(mm)、CCD22におけるレンズの中心座標を(Centx、Centy)とする。
(1)ccdcx=(ccdx−Centx)/(1+dist/100)+Centx
(2)ccdcy=(ccdy−Centy)/(1+dist/100)+Centy
(3)hfa=arctan[(((ccdx−Centx)2+(ccdy−Centy)2)0.5)×pixellength/focallength]
図18は、三角測量原理による実空間変換処理(図12のS1225)において、CCD空間における座標から、3次元空間における3次元座標を算出する方法を説明するための図である。
三角測量原理による実空間変換処理では、三角測量演算プログラム36gによって、収差補正座標格納部37gに格納されている収差補正がなされたコード境界座標についての3次元空間における3次元座標が算出される。こうして算出される3次元座標は、3次元座標格納部37hに格納される。
本実施例では、撮像される横方向に湾曲した原稿Pに対する画像入力出力装置1の座標系として、撮像光学系21の光軸方向をZ軸、そのZ軸に沿って撮像レ光学系21の主点位置からVPZ離れた地点を原点、画像入出力装置1に対して水平方向をX軸、垂直方向をY軸とする。
また、3次元空間(X,Y,Z)への画像投影部13からの投影角度θp、撮像レンズ光学系20の光軸と画像投影部13の光軸との距離をD、撮像光学系21のY方向の視野をYftopからYfbottom、X方向の視野をXfstartからXfend、CCD22のY軸方向の長さ(高さ)をHc、X軸方向の長さ(幅)をWcとする。尚、投影角度θpは、各画素毎に割り当てられたコードに基づき与えられる。
この場合、CCD22の任意座標(ccdx,ccdy)に対応する3次元空間位置(X,Y,Z)は、CCD22の結像面上の点と、パターン光の投影点と、X−Y平面に交差する点とで形成される三角形について5つの式を解くことで得ることができる。
(1)Y=−(tanθp)Z+PPZ+tanθp−D+cmp(Xtarget)
(2)Y=−(Ytarget/VPZ)Z+Ytarget
(3)X=−(Xtarget/VP)Z+Xtarget
(4)Ytarget=Yftop−(ccdcy/Hc)×(Yftop−Yfbottom)
(5)Xtarget=Xfstart+(ccdcx/Wc)×(Xfend−Xfstart)
尚、(1)におけるcmp(Xtarget)は、撮像光学系20と画像投影部13とのズレを補正する関数であり、ズレが無い理想的な場合にはcmp(Xtarget)=0とみなすことができる。
一方、上述したのと同様に、画像投影部13に含まれる投影LCD19上の任意座標(lcdcx、lcdcy)と3次元空間中の3次元座標(X,Y,Z)との関係は次の(1)から(4)の式で表せる。
尚、本実施例では、画像投影部13の主点位置(0,0,PPZ)、画像投影部13のY方向の視野をYpftopからYpfbottom、X方向の視野をXpfstartからXpfend、投影LED19のY軸方向の長さ(高さ)をHp、X軸方向の長さ(幅)Wpとする。
(1)Y=−(Yptarget/PPZ)Z+Yptarget
(2)X=−(Xptarget/PPZ)Z+Xptarget
(3)Yptarget=Ypftop−(lcdcy/Hp)×(Xpftop−Xpfbottom)
(4)Xptarget=Xpfstart+(lcdcx/Wp)×(Xpfend−Xpfstart)
この関係式を利用することで、3次元空間座標(X,Y,Z)を上記(1)から(4)の式に与えることで、LCD空間座標を(lcdcx,lcdcy)を算出することができる。よって、例えば、3次元空間に任意の形状、文字を投影するためのLCD素子パターンを算出することができる。
図19は、平面化画像処理(図6のS611)のフローチャートである。平面化画像処理は、例えば、図1に示すような湾曲した状態の原稿Pを撮像した場合や矩形状の原稿を斜め方向から撮像した場合(撮像された画像は台形状になる)であっても、その原稿が湾曲していない状態やその面に対して垂直方向から撮像したような状態に補正された平面化画像を取得、表示する処理である。
この処理では、まず、CCD22に高解像度設定信号を送信し(S1901)、モニタLCD10にファインダ画像を表示する(S1902)。
次に、レリーズボタン8をスキャンし(S1903a)、レリーズボタン8が半押しされたか否かを判断する(S1903b)。半押しされていれば(S1903b:Yes)、オートフォーカス(AF)および自動露出(AE)機能を起動し、ピント、絞り、シャッタスピードを調節する(S1903c)。尚、半押しされていなければ(S1903b:No)、S1903aからの処理を繰り返す。
次に、再び、レリーズボタン8をスキャンし(S1903d)、レリーズボタン8が全押しされたか否かを判断する(S1903e)。全押しされていれば(S1903e:Yes)、フラッシュモードか否かを判断する(S1903f)。
その結果、フラッシュモードであれば(S1903f:Yes)、フラッシュ7を投光して(S1903g)、撮影し(S1903h)、フラッシュモードでなければ(S1903f:No)、フラッシュ7を投光することなく撮影する(S1903h)。尚、S1903eの判断において、全押しされていなければ(S1903e:No)、S1903aからの処理を繰り返す。
次に、上述した3次元形状検出処理(図10のS1006)と同一の処理である3次元形状検出処理を行い、被写体の3次元形状を検出する(S1906)。
次に、3次元形状検出処理(S1906)によって得られた3次元形状検出結果に基づき、原稿Pの姿勢を演算する原稿姿勢演算処理を行う(S1907)。この処理によって原稿Pの姿勢パラメータとして、原稿Pの画像入力装置1に対する位置Lや角度θ、湾曲φ(x)が演算される。
次に、その演算結果に基づき、後述する平面変換処理を行い(S1908)、たとえ、原稿Pが湾曲していたとしても湾曲していない状態に平面化された平面化画像を生成する。
次に、平面変化処理(S1908)によって得られた平面化画像を外部メモリ27に格納し(S1909)、平面化画像をモニタLCD10に表示する(S1910)。
そして、モード切替スイッチ9に変化が無いか否かを判断し(S1911)、その結果、変化が無ければ(S1911:Yes)、再び、S702からの処理を繰り返し、変化があれば(S1911:No)、当該処理を終了する。
図20は、原稿姿勢演算処理(図19のS1907)を説明するための図である。尚、本等の原稿の仮定条件として、原稿Pの湾曲はy方向に一様であるとする。この原稿姿勢演算処理では、まず、図20(a)に示すように、3次元座標格納部37hに格納されているコード境界に関する座標データから3次元空間位置において2列に並ぶ点を回帰曲線近似した2本の曲線を求める。
例えば、パターン光を投影した範囲の上下それぞれ4分の1の位置情報(コード63とコード64の境界と、コード191とコード192との境界とに関する境界)から求めることができる。
その2本の曲線のX軸方向の位置が「0」における点を結ぶ直線を想定し、この直線がZ軸と交わる点、つまり、光軸が原稿Pと交差する点を、原稿Pの3次元空間位置(0,0,L)とし、この直線がX−Y平面となす角を原稿PのX軸まわりの傾きθとする。
次に、図20(b)に示すように、原稿Pを、先に求めたX軸まわりの傾きθ分だけ逆方向に回転変換し、つまり、原稿PをX−Y平面に対して平行にした状態を想定する。
そして、図20(c)に示すように、X−Z平面における原稿Pの断面について、Z軸方向の変位をXの関数として湾曲φ(X)で表すことができる。こうして、原稿姿勢パラメータとして、原稿Pの位置Lや角度θ、湾曲φ(x)が演算され、当該処理を終了する。
図21は、平面変換処理(図19のS1908)のフローチャートである。この処理は、まず、RAM37のワーキングエリア37mに当該処理の処理領域を割り当て、当該処理に用いるカウンタbの変数を初期値(b=0)に設定する(S2101)。
次に、原稿姿勢演算プログラム36hでの演算結果による原稿Pの位置Lと、傾きθと、湾曲φ(x)とに基づき、パターン光無画像格納部37bに格納されたパターン光無画像の4隅の点を、それぞれ、Z方向に−L移動し、X軸方向に−θ回転し、更にφ(x)にする湾曲の逆変換(後述する「湾曲処理」と同等な処理)により求められる点で取成される矩形領域(つまり、原稿Pの文字等が書かれた面が略直交方向から観察されたような画像となる矩形領域)を設定すると共に、この矩形領域内に含まれる画素数aを求める(S2102)。
次に、設定された矩形領域を構成する各画素に対応するパターン光無画像上の座標を求めて、この座標周辺の画素情報から、平面化画像の各画素の画素情報を設定する。
つまり、まず、カウンタbが画素数aに到達したか否かを判断する(S2103)。カウンタbが画素数aに到達していなけば(S2103:No)、矩形領域を構成する1つの画素について、Y軸を中心に湾曲φ(x)回転移動させる湾曲計算処理を行い(S2104)、X軸を中心に傾きθ回転移動させ(S2105)、Z軸方向に距離Lだけシフトさせる(S2106)。
次に、求められた3次元空間位置を、先の3角測量の逆関数により理想カメラで写されたCCD画像上の座標(ccdcx,ccdcy)を求め(S2107)、使用している撮像光学系20の収差特性に従って、先のカメラキャリブレーションの逆関数により、実際のカメラで写されたCCD画像上の座標(ccdx,ccdy)を求め(S2108)、この位置に対応するパターン光無画像の画素の状態を求めて、RAM37のワーキングエリア37mに格納する(S2109)。
そして、次の画素について上述したS2103からS2109までの処理を実行すべく、カウンタbに「1」を加算する(S2110)。
こうして、S2104からS2110までの処理をカウンタbが画素数aになるまで繰り返すと(S2103:Yes)、S2101において、当該処理を実行するためにワーキングエリア37mに割り当てた処理領域を開放して(S2111)、当該処理を終了する。
図22(a)は、湾曲処理(図21のS2104)についての概略を説明するための図であり、(b)は平面変換処理(図19のS1908)によって平面化された原稿Pを示している。尚、この湾曲処理についての詳細については、電子情報通信学会論文誌DIIVol.J86−D2 No.3 p409「アイスキャナによる湾曲ドキュメント撮影」に詳細に開示されている。
湾曲Z=φ(x)は、求められたコード境界座標列(実空間)で構成される3次元形状を、任意のY値におけるXZ平面に平行な平面切断された断面形状を、最小2乗法により多項式で近似した式で表現される。
湾曲する曲面を平面化する場合、(a)に示すように、Z=φ(x)上の点に対応する平面化された点は、Z=φ(0)からZ=φ(x)までの曲線の長さによって対応付けられることになる。
こうした湾曲処理を含む平面変換処理によって、例えば、図1のように湾曲している状態の原稿Pを撮像した場合であっても、図22(b)に示すように、平面化された平面画像を取得することができ、このように平面化された画像を用いればOCR処理の精度を高めることができるため、その画像によって、原稿に記載された文字や図形等を明確に認識することができる。
次に、図23〜図28を参照して、画像入出力装置1における動作モードの1つである手本トレースモードについて説明する。この手本トレースモードは、使用者が、作業の基準を示す参照情報に従って、例えば、書道などの作業を行なった場合に、その作業結果と参照情報とを比較し、その比較結果を画像として投影するモードである。
図23は、手本トレースモードにおける第1の例を説明するための図である。この図23では、使用者が実施する作業である書道の参照情報として、書道の手本である参照情報画像R1を、画像入出力装置1の画像投影部14から、この画像入出力装置1の画像撮像部13により撮像可能な投影面上の領域である撮像領域100内に配置された被写体である半紙OB1上に投影した状態を図示している。使用者が、この参照情報画像R1に倣って作業を実施した後、その作業結果を撮像し、その撮像画像を参照情報画像R1と比較する。尚、この撮像領域100は、画像入出力装置1における画像投影部14による投影方向上の画像投影可能な面、即ち、画像投影面でもある。ここで、この撮像領域100の境界を示す枠を、投影LCD19から投影画像として投影するようにしてもよい。撮像領域100の境界を示すことによって、使用者は撮像可能な領域を明確に把握することができる。
図24は、この手本トレースモードにおいて実行される手本トレース処理(図6のS613)のフローチャートである。手本トレース処理は、被写体の撮像画像データと手本などの参照情報とを比較し、その結果を画像として投影する処理である。
この処理では、まず、CCD22に高解像度設定信号を送信する(S2401)。これにより高品質の撮像画像を使用者に提供することができる。
次に、参照情報及び作業結果判断プログラムを、アンテナ11を介して受信し(S2402)、受信した作業結果判断プログラムを作業結果判断プログラム格納部37lに格納し(S2403)、受信した参照情報に対応する参照情報画像を投影画像格納部37kに格納する(S2404)。
次に、モニタLCD10にファインダ画像(ファインダ6を介して見える範囲の画像)を表示する(S2405)。よって、使用者は、ファインダ6を覗き込むことなく、モニタLCD10に表示された画像によって実際の撮像の前に、撮像画像(撮像範囲)を確認することができる。
次に、図8のS806の投影処理と同様な投影処理を行う(S2406)。S2406の投影処理では、投影画像格納部37kに参照情報画像が格納されているので、その参照情報画像が撮像領域100内に投影される。そして、使用者は、この参照情報画像に倣って作業を行なう。
例えば、上述した図23に示した第1の例によれば、参照情報画像R1として、書道の手本の画像が撮像領域100内に配置された半紙OB1上に投影されると、使用者は、墨汁をつけた筆を用いて、半紙OB1上に投影された参照情報画像R1をお手本として書を書く。
次に、レリーズボタン8をスキャンし(S2407a)、参照情報画像に倣って作業を行なった使用者によってレリーズボタン8が半押しされたか否かを判断する(S2407b)。半押しされていれば(S2407b:Yes)、光源ドライバ29をオフ制御し(S2407c)、その光源ドライバ29からの電気信号によってLEDアレイ17Aを消灯する(S2407d)。よって、例えば、上述した図23に示した第1の例の場合、半紙OB1上に投影されていた参照画像R1が非投影とされる。
次に、オートフォーカス(AF)および自動露出(AE)機能を起動し、ピント、絞り、シャッタスピードを調節する(S2407e)。尚、半押しされていなければ(S2407b:No)、S2407aからの処理を繰り返す。
次に、再び、レリーズボタン8をスキャンし(S2407f)、レリーズボタン8が全押しされたか否かを判断する(S2407g)。全押しされていれば(S2407g:Yes)、フラッシュモードか否かを判断する(S2412)。
その結果、フラッシュモードであれば(S2412:Yes)、フラッシュ7をたいて(S2413)、撮像領域100内にある被写体を撮影する(S2414)。一方、フラッシュモードでなけば(S2412:No)、フラッシュ7をたくことなく撮影する(S2414)。尚、S2407gの判断において、全押しされていなければ(S2407g:No)、S2407aからの処理を繰り返す。
次に、撮影した撮像画像をCCD22からキャッシュメモリ28に転送し(S2415)、キャッシュメモリ28に記憶された撮像画像をモニタLCD10に表示する(S2416)。このように、撮像画像をキャッシュメモリ28に転送することでメインメモリに転送する場合に比較して、撮像画像を高速にモニタLCD10に表示させることができる。
次に、S2414の処理により撮像された被写体の撮像画像データを、作業結果判断プログラム格納部37lに格納されている作業結果判断プログラムにより判断する(S2417)。S2417の処理では、作業結果判断プログラムに従って、参照情報と被写体の撮像画像データとを比較し、その比較結果を取得し、その比較結果に応じて、修正情報や評価情報などの比較結果情報を生成する。
尚、「修正情報」とは、参照情報と被写体の撮像画像データとを比較した結果として、参照情報との相違に関する部分について、被写体が修正されるべき点に関する情報である。また、「評価情報」とは、参照情報と被写体の撮像画像データとを比較した結果として、参照情報を基準とした場合の被写体の評価を示すものである。
次に、生成された比較結果情報に対応する比較結果情報画像を投影画像格納部37kに格納する(S2418)。尚、2418の処理において、比較結果情報画像は、S2404の処理により投影画像格納部37kに格納された参照情報画像に上書きするように格納してもよいし、S2404の処理により投影画像格納部37kに格納されている参照情報画像に対応付けて一緒に格納するようにしてもよい。
次に、図8のS806の投影処理と同様な投影処理を行う(S2419)。S2419の投影処理では、投影画像格納部37kに少なくとも格納されている比較結果情報画像が、撮像領域100内に少なくとも投影される。例えば、比較結果情報画像が修正情報に対応する修正情報画像であれば、その修正情報画像が投影され、また、比較結果情報画像が評価情報に対応する評価情報画像であれば、その評価情報画像が投影される。よって、使用者は、投影された修正情報画像や評価情報画像などの比較結果情報画像を視認することにより、自身の作業の欠点や完成度や習熟度などを明確に認識することができる。
なお、S2419の処理において、投影画像格納部37kに、比較結果情報画像が参照情報画像と共に格納されている場合には、比較結果情報画像と共に参照情報画像が投影される。参照情報画像が比較結果情報画像と共に投影されることにより、比較結果情報を得るに到った基準の情報である参照情報と、作業者により実施された作業との差違を明確に比較することができる。
次に、レリーズボタン8を再度スキャンし(S2420a)、使用者によってレリーズボタン8が全押しされたか否かを判断し(S2420b)、全押しされていなければ(S2420b:No)、S2420aの処理を繰り返す。一方で、全押しされていれば(S2420b:Yes)、フラッシュモードか否か判断し(S2421)、フラッシュモードであれば(S2421:Yes)、フラッシュ7をたいて(S2422)、撮像領域100内にある被写体を撮影する(S2423)。一方、フラッシュモードでなけば(S2421:No)、フラッシュ7をたくことなく撮影する(S2423)。尚、S2420bの処理において、レリーズボタン8が全押しされていると判断される前に、レリーズボタンの半押し状態が検出されて、オートフォーカス(AF)および自動露出(AE)機能の起動と、ピント、絞り、シャッタスピードの調節とがなされているものとする。
次に、S2423の処理により撮像した撮像画像をCCD22からキャッシュメモリ28に転送し(S2424)、キャッシュメモリ28に転送された撮像画像を外部メモリ27に格納する(S2425)。よって、比較結果情報を画像として保存することができる。
次に、光源ドライバ29をオフ制御し(S2426)、その光源ドライバ29からの電気信号によってLEDアレイ17Aを消灯する(S2427)。よって、撮像領域100内に投影されていた比較結果情報画像などが非投影とされる。
次に、モード切替スイッチ9に変化が無いか否かを判断し(S2428)、変化が無ければ(S2428:Yes)、S2402からの処理を繰り返す。例えば、参照情報が、操作マニュアルなどのように1以上の工程からなる作業における各工程の参照情報である場合に、各工程毎にS2402〜S2428の処理を繰り返し実行されると、使用者は、各工程毎における自身の作業と参照情報との比較結果情報を知ることができる。あるいは、修正情報に従って修正がなされた作業結果を、再度、作業結果判断プログラムにより判断し、修正箇所が完全に修正されるまでS2402〜S2428の処理を繰り返し実行させることもできる。
一方で、S2428の処理により判断した結果、モード切替スイッチ9に変化があれば(S2428:No)、当該処理を終了する。
図25は、上述した手本トレース処理におけるS2419の処理の結果として比較結果情報画像が投影された状態を説明する図である。図25には、図23に示した参照情報画像R1として投影された書道の手本に従って、使用者により書かれた二文字からなる書M1に対して上述した手本トレース処理を実行した結果を示している。なお、図25において、半紙OB1上に書かれた書M1は、図面の理解を容易にするために白抜きの文字で示している。
書M1の書かれた半紙OB1を被写体として撮像した場合の撮像画像データを作業結果判断プログラムにより判断した結果として、図25に示すように、参照情報と比較して修正すべき箇所が6箇所の修正情報画像C1a〜C1fとして投影される。このような修正情報画像C1a〜C1fが投影されることにより、使用者は、自分の書の欠点やその欠点を修正する上で必要な情報を得ることができる。
また、図25には、修正情報画像C1a〜C1f以外に、作業結果判断プログラムにより得られた比較結果情報画像として、参照情報に対する評価結果を示す評価情報画像C2が投影されている。図25の場合は、書M1が、お手本としての参照情報に対して満足いくレベルに達しているという評価である「合格」の文字が投影されている。このような評価情報画像C2が投影されることにより、使用者は、自分の書の完成度や習熟度に関する情報を得ることができる。
図26は、上述した手本トレースモードにおける第2の例を説明する図であり、折り紙による折り鶴の作成に対して手本トレースモードを実行している状態を示している。この第2の例における参照情報は、折り鶴の折り順に従う複数工程(複数ステップ)の参照情報から構成されるものである。
図26には、撮像領域100内に配置された第1工程として対角線に2つ折りした折り紙を被写体OB2とし、その被写体OB2に、次の工程の参照情報として、谷折り線を示す参照情報画像R2aが投影される。また、撮像領域100内に、投影された参照情報画像R2a部分を谷折りすることを文字情報として示す参照情報画像R2bと参照情報画像R2aが折り鶴の折り順の第2工程に対応するものであることを文字情報として示す参照情報画像R2cとが投影されている。
使用者は、これらの参照情報画像R2a〜R2cを視覚的に認識することにより、「折り鶴を折る」という一連の作業において、次の工程で何をすべきであるかを、マニュアル本などを作業中に確認することなく認識することができる。よって、作業労力を軽減させ得る。
なお、図示はしないが、使用者が、参照情報画像R2a〜R2cに従って作業を行なった後、作業の施された後の被写体OB2を次の被写体として撮像し、その撮像画像データを作業結果判断プログラムにより判断させると、その比較結果情報画像が撮像領域100内の所定の位置に表示される。その場合において、その折り方が正しい場合にのみ、次の工程に対応する参照情報画像を投影し、その一方で、その折り方が誤っている場合には、修正情報画像を投影し、修正情報画像の示す修正情報に基づいて、再度、作業をさせるように構成するように構成してもよい。このように、各工程単位で、その工程に対する比較結果情報画像を投影することにより、使用者は、各工程単位で、作業の完成度や修正点などを認識し得、その結果として、複数の工程からなる一連の作業を正確に実施させることができる。また、各工程毎に比較結果情報画像を投影する際、必要に応じて、対応する工程の参照情報画像を一緒に投影するように構成してもよい。それによって、使用者は、各工程単位での作業の完成度や修正点などをより具体的に認識し得る。
図27は、上述した手本トレースモードにおける第3の例を説明する図であり、箱状体に蓋をし、その蓋をネジで締めるという作業に対して手本トレースモードを実行している状態を示す図である。図27(a)は、作業前に参照情報画像が投影されている図であり、図27(b)は、作業後に比較結果情報画像が投影されている図である。
図27(a)に示すように、撮像領域100内には、配置されたネジ締めが行なわれる前の箱状体が被写体OB3として配置されており、次の作業としてネジを4つ締めることを文字情報として示す参照情報画像R3aが撮像領域100内に投影されると共に、その被写体OB3上に、ネジを締めるべき箇所を指し示す矢印が参照情報画像R3bとして投影されている。
使用者は、これらの参照情報画像R3a〜R3bに倣って作業を実行し、作業実行後に、作業が実施された被写体OB3を画像入出力装置1により撮像する。その撮像画像データは、上述した手本トレース処理に従って、作業結果判断プログラムにより判断され、その比較結果情報画像が、図27(b)に示すように、撮像領域100内の所定の位置に表示される。
図27(b)には、ネジを締めるべき箇所が1箇所脱落していた場合に投影される比較結果情報画像が図示されている。図27(b)に示すように、撮像領域100内に、ネジの締め忘れがあることを文字情報として示す修正情報画像C3aが投影されると共に、被写体OB3上に、ネジを締め忘れている箇所を指し示す矢印が修正情報画像C3bとして投影されている。
使用者は、図27(b)に示すような修正情報画像C3a〜C3bにより、作業において不足してる点を適切に認識することができ、それを修正することによって、正確な作業の実施が可能となる。
図28は、上述した手本トレースモードの第1の例において、アーム部材3を屈曲させることにより、画像入出力装置1における画像撮像部14が、被写体である半紙OB1を左前方から撮像している状態を示す図である。なお、図26に示すように画像入出力装置1が配置されると、画像投影部13もまた左前方から半紙OB1上に参照画像や比較結果情報画像などの投影画像を投影することになる。
画像入出力装置1は、アーム部材3の屈曲により、被写体の撮像方向及び投影方向を変えることができるので、作業に応じた位置に配置され得、それによって、作業の効率化を図ることができる。一般的に、使用者の利き腕は右利きであることが多いので、図28に示すように、アーム部材3の屈曲によって画像入出力装置1の撮像方向及び投影方向を左前方からの向きとすることによって、画像入出力装置1の存在そのものによる作業の実施妨害を抑制することができる。
なお、画像入出力装置1の撮像方向及び投影方向は、図28に示すような左前方に限定されず、被写体に対して作業を施す方向に対して、上面視において対向する方向とすれば、画像入出力装置1による作業の妨害に対して抑制効果を有し得る。例えば、上述した第1の例において、左利きの使用者が半紙OB1に書を書く場合には、画像撮像部14による撮像方向及び画像投影部13による投影方向を右前方からの向きとすればよい。
図28に示したように、画像撮像部14による撮像方向を、被写体の表面に対して略垂直な方向以外の方向とした場合、台形状の撮像画像が得られるので、比較結果情報の精度を向上させるために、この台形状の撮像画像を補正して、略垂直方向から撮像した場合に同等な、又は、略垂直方向から撮像した場合に対応する状態に平面化された平面化画像を取得することが好ましい。
なお、図24に示した手本トレース処理(S613)において、平面化画像を利用して比較結果情報を得る場合には、S2414の処理による被写体の撮影の後、S2415の処理へ移行する前に、以下に示すS2431〜S2434の処理を実行すればよい。
具体的には、S2314の処理後、図16(a)の3次元形状計測処理と同様の3次元計測処理を実行し(S2431)、次いで、その3次元計測処理により得られた3次元形状検出結果である三次元座標(X,Y,Z)を外部メモリ27に格納し(S2432)、次いで、図19のS1907の原稿姿勢演算処理と同様の原稿姿勢演算処理を実行し(S2433)、次いで、図19のS1908の処理と同様の平面変換処理を実行して平面化画像を取得する(S2434)。
そして、S2434の処理により取得されたそのように取得された被写体の平面化画像データを、S2417の処理において、作業結果判断プログラム格納部37lに格納されている作業結果判断プログラムにより判断すればよい。
また、図24に示した手本トレース処理(S613)におけるS2423の処理により、比較結果情報画像の投影された被写体を撮像した後に、S2424の処理の前に、上述したS2431〜S2434と同様の処理を行うことにより、撮像画像を平面化画像に変換するように構成してもよい。それによって、比較結果情報を、無歪な撮像画像として保存することができる。
上述のように、手本トレース処理において、撮像画像を平面化画像に変換されことにより、撮像方向が斜めである場合だけでなく、被写体が3次元形状を有し、そのためにその表面が湾曲している場合であっても、撮像データの歪みに起因する比較結果情報の誤差を低減し得、それによって、高精度の比較結果情報を得ることができる。
一方で、画像投影部13による投影方向を、被写体の表面に対して略垂直な方向以外の方向とした場合についても、被写体上に投影される画像に歪みが生じるために、場合によっては、使用者に認識不能な投影画像となり得る。よって、そのように歪んで投影される投影画像に対して、無歪な投影画像として投影されるように補正を施すことが好ましい。
なお、図24に示した手本トレース処理(S613)において、投影方向に依存することなく無歪の投影画像を投影する場合には、図8のS806の投影処理と同様に実行される投影処理(S2406,S2419)におけるS902の処理に換えて、後述するような投影用画像変換処理(S2900)を実行するように構成すればよい。
図29は、その無歪投影用画像変換処理(S2900)のフローチャートである。この無歪投影用画像変換処理(S2900)は、投影画像格納部37kに格納される画像情報に従って投影LCD19に表示される画像を、無歪な状態で被写体に投影可能な画像に変換する処理である。
この処理では、まず、RAM37のワーキングエリア37mに当該処理の処理領域を割り当て、当該処理に用いるカウンタqの変数を初期値(q=0)に設定する(S2901)。
次に、無歪投影用画像(つまり、湾曲した被写体上において無歪である画像)に変換された後の画像となる矩形領域として、LCD空間座標(lcdcx,lcdcy)の空間を設定すると共に、この矩形領域内に含まれる画素数Qaを求める(S2902)。
次に、投影画像格納部37kに格納される比較結果情報画像や参照情報画像などの画像情報を、理想カメラ画像上の座標(ccdcx,ccdcy)に配置する(S2903)。
次に、設定された矩形領域を構成するLCD空間座標(lcdcx,lcdcy)上の各画素について、上述したS2432の処理により外部メモリ27に格納された被写体の表面上の点である三次元座標(X,Y,Z)を用いることにより、無歪投影用画像の各画素の画素情報を設定する。
つまり、まず、カウンタqが画素数Qaに到達したか否かを判断する(S2904)。カウンタqが画素数Qaに到達していなければ(S2904:No)、カウンタqの値に対応する画素のLCD空間座標(lcdcx,lcdcy)を、外部メモリ27に格納された被写体上の座標(X,Y,Z)に変換する(S2905)。
次に、S2905の処理により変換されて得られた被写体上の座標(X,Y,Z)を、理想カメラ画像上の座標(ccdcx,ccdcy)に変換する(S2906)。
次に、S2906の処理により変換されて得られた座標(ccdcx,ccdcy)に配置されている画素情報を取得し、その画素情報を、カウンタqの値に対応するLCD空間座標(lcdcx,lcdcy)に書き込む(S2907)。
そして、次の画素について上述したS2904からS2907までの処理を実行すべく、カウンタqに「1」を加算する(S2908)。
こうして、S2904からS2908までの処理を、カウンタqが画素数Qaになるまで繰り返すと(S2904:Yes)、設定された矩形領域を構成するLCD空間座標(lcdcx,lcdcy)に対応付けられた画素情報を、投影LCDドライバ30に転送する(S2909)。
最後に、S2901において、当該処理を実行するためにワーキングエリア37mに割り当てた処理領域を開放して(S2910)、当該処理を終了する。
S2909の処理により、LCD空間座標(lcdcx,lcdcy)上の画素情報が投影LCDドライバ30へ転送されることにより、投影LCD19は、歪曲面上において無歪に投影される投影画像が表示される。よって、被写体上に無歪な画像が投影される。
従って、無歪投影用画像変換処理(S2900)を実行することにより、投影方向が斜めである場合だけでなく、被写体が3次元形状を有し、そのためにその表面が湾曲している場合であっても、無歪な投影画像を投影することができる。その結果として、特に、比較結果情報画像として修正情報画像や評価情報画像を投影する場合に、使用者にその情報を正確に認識させることができる。
図30は、上述した第1実施例の光源レンズ18に関する第2実施例の光源レンズ60を説明するための図であり、(a)は第2実施例の光源レンズ60を示す側面図であり、(b)は第2実施例の光源レンズ60を示す平面図である。尚、上述したのと同一な部材には、同一の符号を付し、その説明は省略する。
第1実施例における光源レンズ18は、各LED17に対応する凸状の非球面形状からレンズ部18aをベース18b上に一体的に並べて配置して構成されているのに対し、この第2実施例の光源レンズ50は、LED17の各々を内包する砲弾型に形成された樹脂製レンズを各々別体に構成したものである。
このように、各LED17を内包する光源レンズ50を各々別体に構成することで、各々のLED17とそれに対応する各々の光学レンズ50との位置が1対1で決められるので、相対的な位置精度を高めることができ、光の出射方向が揃うという効果がある。
これに対し、基板16上にレンズアレイをまとめて位置合わせをすると、各々のLED17がダイボンディングされる際の位置決め誤差やレンズアレイと基板の線膨張係数の違いから、光の出射方向がバラバラになってしまう恐れがある。
従って、投影LCD19の面には、LED17からの光の入射方向が投影LCD19の面に垂直にそろった光が照射され、投影光学系20の絞りを均一に通過できる様になるため、投影画像の照度ムラを抑えることができ、結果的に高品質な画像を投影することができる。尚、光源レンズ50に内包されているLED17はリードおよびリフレクタからなる電極51を介して基板16に実装されている。
また、この第2実施例における1群の光源レンズ50の外周面には、各光源レンズ50を束ねて所定の方向に規制する枠状の弾性を有する固定部材52が配置されている。この固定部材52は、ゴム、プラスチック等の樹脂製材料で構成されている。
第2実施例の光源レンズ50は各LED17に対して各々別体に構成されているので、各光源レンズ50の凸状の先端部が形成する光軸の角度を正しく揃えて投影LCD19と対向するように設置することが困難である。
そこで、この固定部材52によって1群の光源レンズ50を取り囲み、各光源レンズ50の外周面同士を接触させ、各光源レンズ50の光軸が投影LCD19と正しい角度で対向するように各光源レンズ50の位置を規制することで、各光源レンズ50から投影LCD19に向けて光を略垂直に照射させることができる。よって、投影LCD19の面に垂直にそろった光が照射され、投影レンズの絞りを均一に通過できる様になるため、投影画像の照度ムラを抑えることができる。従って、一層、高品質な画像を投影することができる。
尚、この固定部材52は、予め所定の大きさに規定された剛性を有するものであっても良く、弾性力を有する材料で構成してその弾性力によって各光源レンズ50の位置を所定の位置に規制するようにしても良い。
図31は、図30で説明した光源レンズ50を所定位置に規制する固定部材52に関する第2実施例を説明するための図であり、(a)は光源レンズ50を固定した状態を示す斜視図であり、(b)はその部分的な断面図である。尚、上述したのと同一の部材には、同一の符号を付し、その説明は省略する。
この第2実施例の固定部材60は、各光源レンズ50の外周面に沿った断面を有する断面視円錐形状の貫通孔60aが穿設された板状に形成されている。各光源レンズ50は、この各貫通孔60aに差し込まれて固定される。
また、この固定部材60と基板16との間には弾性を有する付勢プレート61が介装されており、更に、この付勢プレート61と各光源レンズ50の下面との間には、電極51を囲むように弾性を有する環状のOリング62が配置されている。
尚、光源レンズ50に内包されるLED17は、付勢プレート61、基板16に穿設されたスルーホールを貫通する電極51を介して基板16に実装されている。
上述した固定部材60によれば、各光源レンズ50を、その光源レンズの外周面に沿った断面を有する各貫通孔60aに各々貫通させて固定するので、上述した固定部材50よりも、一層確実に光源レンズ50の光軸を正しい角度で投影LCD19に向くように固定することができる。
また、組立時に、Oリング62の付勢力によってLED17を正しい位置に付勢して固定することができる。
また、本装置1を運搬する場合等に生ずる可能性のある衝撃力を、Oリング62の弾性力によって吸収することができ、その衝撃の影響で光源レンズ50の位置がずれてしまい、光源レンズ50から垂直に投影LCD19に向けて光を照射できないという不都合を防止することができる。
上記実施例において、請求項1記載の参照情報取得手段としては、図24の手本トレース処理におけるS2402の処理が該当し、参照情報投影手段としては、図24の手本トレース処理におけるS2406及びS2419の投影処理が該当する。
また、請求項2及び3記載の比較結果情報取得手段としては、図24の手本トレース処理におけるS2417の処理が該当し、比較結果投影手段としては、図24の手本トレース処理におけるS2419の投影処理が該当する。
また、請求項4記載の三次元情報生成手段としては、上述したS2431〜S2432の処理が該当し、平面画像補正手段としては、上述したS2433〜2434の処理が該当する。
また、請求項5記載の空間変調制御手段としては、図29の無歪投影用画像変換処理が該当する。
また、請求項8記載の参照情報投影手段としては、図24の手本トレース処理におけるS2419の投影処理が該当する。
以上実施例に基づき本発明を説明したが、本発明は上記実施例に何ら限定されるものでなく、本発明の主旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
例えば、上記実施例では、平面化画像モードとして、平面化された画像を取得、表示する処理を説明したが、周知のOCR機能を搭載させ、平面化された平面画像をこのOCR機能によって読み取らせるように構成しても良い。かかる場合には、OCR機能によって湾曲した状態の原稿を読み取る場合に比べて高精度に原稿に記載された文章を読み取ることができる。
また、上記実施例における図15のS1501においては、明暗の変化を持つ輝度画像の全部を抽出し、その全部について暫定的なCCDY値を求める場合について説明したが、抽出する輝度画像としては、全部である必要はなく、1枚以上であれば、その枚数に限定されることはない。抽出する枚数を減らすことで境界座標を高速に求めることができる。
また、上記実施例における図15のS1507では、fCCDY[i]を加重平均し、図16のS1607ではefCCDY[j]を近似多項式として、各値を平均化する場合について説明したが、各値を平均化する方法としては、これらに限定されるものではなく、例えば、各値の単純平均値を採る方法、各値の中央値を採用する方法、各値の近似式を算出し、その近似式における検出位置を境界座標とする方法、統計的な演算により求める方法等であっても良い。
また、例えば、上記実施例における平面化画像モードにおける3次元形状検出処理においては、原稿Pの3次元形状を検出するために、複数種類の明暗を交互に並べてなる縞状のパターン光を投影する場合について説明したが、3次元形状を検出するための光は、かかるパターン光に限定されるものではない。
例えば、図32に示すように、湾曲原稿の3次元形状の検出を簡便に行う場合には、画像投影部13から2本の帯状のスリット光70,71を投影するようにしても良い。この場合には、8枚のパターン光を投影する場合にくらべ、僅か2枚の撮像画像から高速に3次元形状の検出をすることができる。
また、図24を参照して説明した手本トレース処理のS2419の処理において、1つの作業の参照情報が複数の工程の参照情報から構成されていれば、各工程に対して得られた比較結果情報画像と、その工程に対応する参照情報画像とを動画により順次連続投影するように構成してもよい。例えば、書道における書の作成を1つの作業とする場合において、参照情報が、その書における書順毎の手本情報であるとすれば、上述した手本トレースモードの第1の例において、書M1に対する比較結果情報を、書M1の書順に従って分割し、対応する書順の手本情報画像と共に、動画として順次連続投影するように構成してもよい。その結果として、使用者の作業と参照情報との類似点や差違をより明確に認識することができる。