以下、本発明の好ましい実施例について、添付図面を参照して説明する。図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と、3次元情報格納部37mと、指差座標入力部37nと、ワーキングエリア37oとが記憶領域として割り当てられている。
パターン光有画像格納部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から投影する画像情報を格納する。ワーキングエリア37oは、CPU15での演算のために一時的に使用するデータを格納する。
作業内容情報格納部37lは、体積・重量計測モードにおいて、作業の内容を示す情報である作業内容情報を格納する。3次元情報格納部37mは、体積・重量計測モードや指定点計測モードにおいて取得された3次元情報を格納する。指差座標格納部37nは、指定点計測モードにおいて、使用者による指差により指定された指定点を格納する。ワーキングエリア37oは、CPU15での演算のために一時的に使用するデータを格納する。
図6は、メイン処理のフローチャートである。尚、このメイン処理におけるデジカメ処理(S605)、webcam処理(S607)、立体画像処理(S609
)、平面化画像処理(S611)、体積・重量計測処理(S613)、指定点計測処理(S615)の各処理についての詳細は後述する。
メイン処理では、まず、電源が起動されると(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の設定が指定点計測モードか否かが判断され(S614)、指定点計測モードであれば(S614:Yes)、後述する指定点計測処理に移行する(S615)。
一方、指定点計測モードでなければ(S614: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のワーキングエリア37oに当該処理の処理領域を割り当て、当該処理に用いるカウンタ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のワーキングエリア37oに格納する(S2109)。
そして、次の画素について上述したS2103からS2109までの処理を実行すべく、カウンタbに「1」を加算する(S2110)。
こうして、S2104からS2110までの処理をカウンタbが画素数aになるまで繰り返すと(S2103:Yes)、S2101において、当該処理を実行するためにワーキングエリア37oに割り当てた処理領域を開放して(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〜図27を参照して、画像入出力装置1における動作モードの1つである体積・重量計測モードについて説明する。この体積・重量計測モードは、作業内容情報に従って、被写体の体積・重量の計測を行い、その結果として得られた計測情報を投影するモードである。
図23は、この体積・重量計測モードにおいて実行される体積・重量計測処理(図6のS613)のフローチャートである。この体積・重量計測処理は、被写体の3次元形状検出結果を用い、体積計測や重量計測などの各種作業内容に応じた計測を行い、その計測結果に基づく画像を投影する処理である。
この処理では、まず、CCD22に高解像度設定信号を送信する(S2301)。これにより高品質の撮像画像を使用者に提供することができる。
次に、作業内容情報をアンテナ11を介して受信し(S2302)、受信した作業内容情報格納部37lに格納する(S2303)。なお、「作業内容情報」は、食肉塊を等体積又は等重量に分割する作業や、木片から所定形状を掘り出す作業など、使用者により指定される作業内容を示す情報である。なお、指定される作業内容が被写体の重量情報又は重量分布情報の取得を要する作業である場合には、その作業内容情報には、被写体の密度データが含まれる。
次に、モニタLCD10にファインダ画像(ファインダ6を介して見える範囲の画像)を表示する(S2304)。よって、使用者は、ファインダ6を覗き込むことなく、モニタLCD10に表示された画像によって実際の撮像の前に、撮像画像(撮像範囲)を確認することができる。
次に、レリーズボタン8をスキャンし(S2305a)、レリーズボタン8が半押しされたか否かを判断する(S2305b)。半押しされていれば(S2305b:Yes)、オートフォーカス(AF)および自動露出(AE)機能を起動し、ピント、絞り、シャッタスピードを調節する(S2305c)。尚、半押しされていなければ(S2305b:No)、S2305aからの処理を繰り返す。
次に、再び、レリーズボタン8をスキャンし(S2305d)、レリーズボタン8が全押しされたか否かを判断する(S2305e)。全押しされていれば(S2305e:Yes)、フラッシュモードか否かを判断する(S2309)。
S2309の処理により判断した結果、フラッシュモードであれば(S2309:Yes)、フラッシュ7を投光して(S2310)、撮影する(S2311)。尚、S2305eの判断において、全押しされていなければ(S2305e:No)、S2305aからの処理を繰り返す。
一方、フラッシュモードでなければ(S2309:No)、フラッシュ7を投光することなく撮影する(S2311)。尚、S2308の判断において、全押しされていなければ(S2308:No)、S2305からの処理を繰り返す。
次に、図10のS1006の3次元形状検出処理と同様な3次元形状検出処理を行い、被写体の3次元形状を検出する(S2312)。
次に、3次元形状検出処理(S2312)における3次元形状検出結果として、各計測頂点の実空間における3次元座標(X,Y,Z)を3次元情報格納部37mに格納する(S2313)。
次に、3次元形状検出結果に基づいて、作業内容情報格納部37lに格納される作業内容情報に応じた計測を行い、その計測結果である計測情報を生成すると共に、その計測情報に基づく投影情報を生成する(S2314)。なお、「計測情報に基づく投影情報」とは、該計測情報に応じて、後述する無歪画像投影処理(S2316)により対象物又は投影方向に投影される情報である。この「計測情報に基づく投影情報」には、例えば、該計測情報に対応する文字情報又は図形情報や、該作業内容情報に応じた切断線や切削加工線や切削深度情報などの作業指示情報などが例示される。
なお、S2314の処理において、作業内容情報が計測情報を不要とする作業情報である場合には、3次元形状検出結果に基づいて、作業内容情報格納部37lに格納される作業内容情報に応じた指示情報を生成し、その指示情報に基づく投影情報を生成するように構成してもよい。
次に、計測情報に基づく投影情報に対応する計測結果画像を投影画像格納部37kに格納し(S2315)、その投影画像格納部37kに格納された計測結果画像を、被写体表面の歪曲や画像投影部13の投影方向に依存することなく無歪の画像として対象物又は投影方向に投影されるように、投影画像格納部37kに格納されている計測結果画像を補正する無歪投影用画像変換処理(S2316)を実行する。なお、この無歪投影用画像変換処理(S2316)については後述する。
次に、図8のS806の投影処理と同様な投影処理を行う(S2317)。よって、計測結果画像が無歪の画像として対象物又は投影方向に投影される。この投影処理(S2317)により、無歪な計測結果画像が対象物又は投影方向に投影されると、使用者は、この計測結果画像に従って作業を実行する。例えば、計測結果画像が被写体を略等体積に区分した切断線である場合には、その切断線に応じて切断を行なう。
次に、その被写体に対する作業の終了が指示されたか否かを判断する(S2318)。なお、この作業の終了の認識は、画像入出力装置1に設けられた非図示の作業終了ボタンの操作、又は、アンテナ11を介して外部ネットワークから受信される作業終了信号の検出などにより認識される。
S2316の処理により判断した結果、作業の終了が指示されていなければ(S2316:No)、S2316の処理を繰り返す。一方で、作業の終了が指示されると(S2316:Yes)、光源ドライバ29をオフ制御し(S2317)、その光源ドライバ29からの電気信号によってLEDアレイ17Aを消灯する(S2318)。よって、撮像領域100内に投影されていた画像などが非投影とされる。
次に、モード切替スイッチ9に変化が無いか否かを判断し(S2319)、モード変化スイッチ9に変化が無ければ(S2319:Yes)、S2302からの処理を繰り返す。例えば、作業内容情報が食肉の加工ラインで、1つの食肉塊を略等体積に切断する作業であった場合には、個々の食肉塊毎に、S2302〜S2319の処理が繰り返し実行される。
一方で、S2319の処理により判断した結果、モード切替スイッチ9に変化があれば(S2319:No)、当該処理を終了する。
図24は、上述した無歪投影用画像変換処理(図23のS2316)のフローチャートである。この無歪投影用画像変換処理(S2316)は、投影画像格納部37kに格納される計測結果情報などの画像情報に従って投影LCD19に表示される画像を、無歪な状態で被写体又は投影方向に投影可能な画像に変換する処理である。
この処理では、まず、RAM37のワーキングエリア37oに当該処理の処理領域を割り当て、当該処理に用いるカウンタqの変数を初期値(q=0)に設定する(S2401)。
次に、無歪投影用画像(つまり、湾曲した被写体上において無歪である画像)に変換された後の画像となる矩形領域として、LCD空間座標(lcdcx,lcdcy)の空間を設定すると共に、この矩形領域内に含まれる画素数Qaを求める(S2402)。
次に、投影画像格納部37kに格納される計測結果情報などの画像情報を、理想カメラ画像上の座標(ccdcx,ccdcy)に配置する(S2403)。
次に、設定された矩形領域を構成するLCD空間座標(lcdcx,lcdcy)上の各画素について、上述したS2311の処理により3次元形状座標格納部37hに格納された被写体の表面上の点である三次元座標(X,Y,Z)を用いることにより、無歪投影用画像の各画素の画素情報を設定する。
つまり、まず、カウンタqが画素数Qaに到達したか否かを判断する(S2404)。カウンタqが画素数Qaに到達していなければ(S2404:No)、カウンタqの値に対応する画素のLCD空間座標(lcdcx,lcdcy)を、外部メモリ27に格納された被写体上の座標(X,Y,Z)に変換する(S2405)。
次に、S2405の処理により変換されて得られた被写体上の座標(X,Y,Z)を、理想カメラ画像上の座標(ccdcx,ccdcy)に変換する(S2406)。
次に、S2406の処理により変換されて得られた座標(ccdcx,ccdcy)に配置されている画素情報を取得し、その画素情報を、カウンタqの値に対応するLCD空間座標(lcdcx,lcdcy)に書き込む(S2407)。
そして、次の画素について上述したS2404からS2407までの処理を実行すべく、カウンタqに「1」を加算する(S2408)。
こうして、S2404からS2408までの処理を、カウンタqが画素数Qaになるまで繰り返すと(S2404:Yes)、設定された矩形領域を構成するLCD空間座標(lcdcx,lcdcy)に対応付けられた画素情報を、投影画像格納部37kに格納する(S2409)。
最後に、S2401において、当該処理を実行するためにワーキングエリア37oに割り当てた処理領域を開放して(S2410)、当該処理を終了する。
S2409の処理により、LCD空間座標(lcdcx,lcdcy)上の画素情報が投影画像格納部37kに格納されることにより、この無歪投影用画像変換処理(S2316)に続く投影処理(S2317)において、投影LCD19には、歪曲面上において無歪に投影される投影画像が表示される。よって、被写体又は投影方向に無歪な画像が投影される。
従って、無歪投影用画像変換処理(S2316)を実行することにより、被写体が3次元形状を有し、そのためにその表面が湾曲している場合や、投影方向が斜めである場合において、無歪な計測結果画像を投影することができる。その結果として、例えば、被写体を略等体積に切断させる作業において、切断指示線を被写体上の正確な位置に投影させることができる。
図25は、体積・重量計測処理モードにおける第1の例を説明するための図である。この体積・重量計測処理モードにおける第1の例では、食肉の加工ラインにおいて、コンベア200により搬送されるワークW1としての食肉塊を略等体積に切断する作業が実施される。
図25には、食肉の加工ラインにおいて、コンベア200により搬送されるワークW1としての食肉塊を略等体積に切断するために、その3次元形状を検出するための明暗を交互に並べてなる縞状のパターン光が、画像入出力装置1の画像投影部13から、撮像領域100内に位置するワークW1に投影されている様子を図示している。尚、図25は、上述した3次元形状検出処理(S2310)において実行される処理の一部に対応する。
尚、撮像領域100は、画像入出力装置1における画像投影部14による投影方向上の画像投影可能な面、即ち、画像投影面でもある。ここで、この撮像領域100の境界を示す枠を、投影LCD19から投影画像として投影するようにしてもよい。撮像領域100の境界を示すことによって、使用者は撮像可能な領域を明確に把握することができる。
また、図25に示す体積・重量計測処理モード第1の例では、画像入出力装置1のベース4は、コンベア200の搬送を妨害しないように、一方が短く構成されている。
図26は、上述した体積・重量計測処理におけるS2315の処理の結果として計測結果画像が投影された状態を説明する図である。画像入出力装置1が、ワークW1を略等体積に4つに分割する作業に関する作業内容情報を受信した場合、S2310の処理により生成された3次元形状結果に基づいて、S2312の処理により計測情報として体積情報が取得され、その体積情報に基づく投影情報として、ワークW1を略等体積に4分割するための切断線の情報が生成される。その結果として、図26に示すように、生成された切断線の情報が、3本の線状の計測結果画像R1としてワークW1上に投影される。この計測結果画像R1に基づいて、使用者がワークW1を切断すると、ワークW1を略等体積に4分割することができる。
尚、ワークW1を計測結果画像R1に基づいて切断する場合、画像入出力装置1にカッタなどの切断手段を設け、自動的にワークW1を切断するように構成してもよい。また、その場合、計測結果画像R1を投影することなく、S2310の処理により生成された切断線の情報に基づいて切断手段によりワークW1を自動的に切断するように構成してもよい。これによって、ワークの切断作業を効率化することができる。
この図26では、ワークW1を略等体積に4つに分割する作業について説明したが、画像入出力装置1が、ワークW1を複数の略等重量の塊に分割する作業に関する作業内容情報を受信した場合にはワークW1を略等重量に分割する計測結果画像R1がワークW1に投影される。このようなワークW1を複数の等重量の塊に分割する作業の場合には、作業内容情報には、ワークW1の密度情報又は密度分布情報が含まれる。この場合、S2312の処理において、S2310の処理により生成された3次元形状結果に基づいて体積情報が取得されると、その体積に密度情報又は密度分布情報が積算されて重量情報又は重量分布情報が計測情報として取得される。そして、その重量情報又は重量分布情報に基づく投影情報として、ワークW1を略等重量の複数の塊に分割するための切断線の情報が生成される。
また、画像入出力装置1が、ワークW1における所定重量又は所定体積の一部分を得ることを作業内容情報として受信した場合には、S2312の処理において、S2310の処理により生成された3次元形状結果に基づいてその作業に応じた計測情報が取得されるので、その計測情報に基づく計測結果画像R1をワークW1上に投影することができる。
上述のように、その作業内容に応じて、ワークW1の3次元形状情報に基づいてワークW1に対する体積情報や重量情報などの計測情報を得、その計測情報に基づく計測結果画像として、切断線などの作業指示情報がワークW1に直接投影されるので、使用者は効率的にその作業を実行することができる。
図27は、上述した体積・重量計測モードにおける第2の例を説明する図である。この第2の例では、撮像領域100内に配置されたワークW2としての木片を所定形状に切削するという作業が実施される。
図27には、上述した体積・重量計測処理におけるS2315の処理の結果として、計測結果画像として、切削深度情報画像R2a〜R2bと切削加工線画像R3とが投影された状態が示されている。画像入出力装置1が、ワークW2を所定形状に切削する作業に関する作業内容情報を受信した場合、S2310の処理により生成された3次元形状結果に基づいて、S2312の処理により計測情報として、目的とする形状を得るために必要な切削部分の情報が取得される。そして、その取得された計測情報に基づく投影情報として、ワークW2に対する切削時の切削深度を指示する切削深度情報や、所定の切削加工(例えば、角を丸くする)を指示する切削加工線の情報が生成される。その結果として、図27に示すように、生成された切削深度情報及び切削加工線の情報が、それぞれ、切削深度情報画像R2a〜R2c及び切削加工線画像R3としてワークW2上に投影される。
なお、切削深度情報画像R2a〜R2cは、その切削深度を十字印の大きさによって表している。例えば、図27では、最も小さい十字印である切削深度情報画像R2aが投影された部分を最も浅い深度で切削するよう指示するものである。その十字印は、切削深度情報画像R2bにおいてより大きくなり、切削深度情報画像R2cにおいてさらに大きく、この順でより深い切削深度で切削するよう指示するものである。
また、切削加工情報画像R3は、S2312の処理の結果として生成された切削加工線の情報に対応する画像であり、所定の切削加工(例えば、角を丸くする)を指示するための画像である。
使用者が、これらの切削深度情報画像R2a〜R2c及び切削加工指示線R3に応じた切削を実行することにより、ワークW2を目的の形状とすることができる。切削深度情報画像R2a〜R2c及び切削加工指示線R3がワークW2に直接投影されるので、効率的な作業を可能とする。
以上説明したように、この体積・重量計測モードによれば、作業内容情報に応じて、3次元情報に基づく各種計測が実行され、その計測結果に応じた画像が、被写体としてのワークやその被写体の近傍に投影されるので、使用者が所望とする計測情報を容易に視認することができる。
また、3次元情報に基づく計測情報として、被写体であるワークの体積情報や重量分布情報や重量情報を得ることができる上に、それらの体積情報や重量分布情報や重量情報に基づいてワークを略等体積や略等重量などに区分するための作業指示線などをワーク上に投影することができるので、ワーク上に投影された作業指示線に基づいて作業をすればよく、作業を効率的に行うことができる。
次に、図28〜図30を参照して、画像入出力装置1における動作モードの1つである指定点計測モードについて説明する。この指定点計測モードは、指や棒上のポインタにより指定された少なくとも1つの点により形成される点、線分、又は領域について計測を行うことのできるモードである。
図28は、この指定点計測モードを説明する図である。図28には、指定点計測モードの一例として、撮像領域100内に配置されたワークW3としての部品に対し、「2点採寸」として、使用者により指差された2点間の距離の計測が実行された様子を示している。
この指定点計測モードでは、図28に示すように、撮像領域100内の所定の位置(図28では撮像領域100の下方側)に計測指示ボタンB1〜B3と入力終了ボタンB4とが投影されている。計測指示ボタンB1〜B3は、各ボタンに対応付けられた計測の実行を指示するボタンであり、使用者により指差されることによって入力され、対応する計測が実行される。
計測指示ボタンB1は「3D入力」を指示するものであり、この計測指示ボタンB1が入力されると、後述する指定点計測処理により、3次元形状が計測され、その計測結果画像として、ワークW3の3次元立体画像が投影される。
計測指示ボタンB2は「2点採寸」を指示するものであり、この計測指示ボタンB2が入力されると、指先などによる指差により指定された2点間の距離を、3次元形状検出結果に基づいて計測し、その計測結果画像がワークW3上又は撮像領域100に投影される。なお、図28には、選択ボタン画像B2に対応する「2点採寸」が選択された場合が図示されている。図28に示すように、右手300aにより指差されるワークW3上の点と、右手300aの位置から移動された右手300bにより指差されるワークW3上の点との2点間の距離が計測されて、その計測結果画像R4がワークW3上に投影されている状態が図示されている。
図28に示される計測結果画像R4は、2点間の距離を示す数値である。このように計測画像が文字情報として投影されることにより、使用者はその情報を容易に認識することができる。
計測指示ボタンB3は「高さ測定」を指示するものであり、この計測指示ボタンB3が入力されると、指先などによる指差により指定された位置とワークW3の置かれている面との高さが計測され、その計測結果画像として、高さを数値で示す文字情報などがワークW3上又は撮像領域100に投影される。
また、入力終了指示ボタンB4は、上述の「2点採寸」又は「高さ測定」を実行する際において、指先による指定点の入力を終了する場合に用いられるものであり、指先などによる指差によって入力される。
図29は、この指定点計測モードにおいて実行される指定点計測処理(図6のS615)のフローチャートである。この指定点計測処理は、被写体の3次元形状検出結果を用い、上述した選択ボタン画像B1〜B4により選択された計測を実行し、その計測結果に基づく画像を投影する処理である。
この処理では、まず、CCD22に低解像度動画設定信号を送信する(S2901)。よって、低解像度の動画データを用いるので、演算量が少なく、処理を高速に行い得る。
次に、指定点計測モード初期画面画像を投影画像格納部37kに格納する(S2902)。なお、この指定点計測モード初期画面画像の画像データは、ROM37の非図示の領域に予め格納されている。
次に、モニタLCD10にファインダ画像を表示し(S2902)、続いて、図8のS806の投影処理と同様な投影処理を行う(S2904)。S2904の処理の結果として、指定点計測モード初期画面画像が投影されると、撮像領域100内の所定の位置に選択ボタン画像B1〜B4が投影された状態となる(図28参照)。
次に、周知のオートフォーカス(AF)及び自動露出機能(AE)を起動して、ピント、絞り、シャッター速度を調節した後に(S2905)、所定間隔で撮像領域100内を撮影し、2つの連続する撮像画像データの各画素の差分をとることにより、生成されたイメージを検査し、指先により指差された座標である指差座標を取得する(S2906)。なお、指先などによる指差座標の決定には、例えば、特開平7−168949号公報に記載される方法などを用いることができる。
次に、S2906により取得された指差座標が、計測指示ボタンB1〜B3を指差するものであるか否かを判断し(S2907)、計測指示ボタンB1〜B3のいずれも指差されていなければ(S2907:No)、S2906〜S2907の処理を繰り返す。一方で、計測指示ボタンB1〜B3のいずれかが指差されていれば(S2907:Yes)、動画撮影を停止し(S2908)、計測情報を得るための計測情報生成処理(S2909)を実行する。なお、この計測情報生成処理(S2909)については後述する。
計測情報生成処理(S2909)の実行後、レリーズボタン8を再度スキャンし(S2910)、レリーズボタン8が全押しされたか否かを判断し(S2911)、全押しされていなければ(S2911:No)、S2911の処理を繰り返す。一方で、全押しされていれば(S2911:Yes)、フラッシュモードか否か判断し(S2912)、フラッシュモードであれば(S2912:Yes)、フラッシュ7をたいて(S2913)、撮像領域100内を撮影する(S2914)。一方、フラッシュモードでなければ(S2912:No)、フラッシュ7をたくことなく撮影する(S2914)。尚、S2911の処理において、レリーズボタン8が全押しされていると判断される前に、レリーズボタンの半押し状態が検出されて、オートフォーカス(AF)および自動露出(AE)機能の起動と、ピント、絞り、シャッタスピードの調節とがなされているものとする。
詳細については後述するが、計測情報生成処理(S2909)の実行後には、使用者により選択された指示計測指示ボタンB1〜B3に応じて生成された計測情報に基づく画像が撮像領域100内に投影されているので、S2914の処理により、その計測情報に基づく画像が撮像される。従って、投影されている計測情報に基づく画像を撮像画像データとして記録しておくことができる。
次に、S2914の処理により撮像した撮像画像をCCD22からキャッシュメモリ28に転送し(S2915)、キャッシュメモリ28に転送された撮像画像を外部メモリ27に格納する(S2916)。よって、計測指示ボタンの種類に応じた計測による結果として得られた各種計測情報を画像として保存することができる。
次に、光源ドライバ29をオフ制御し(S2917)、その光源ドライバ29からの電気信号によってLEDアレイ17Aを消灯する(S2918)。よって、撮像領域100内に投影されていた画像などが非投影とされる。
次に、モード切替スイッチ9に変化が無いか否かを判断し(S2919)、モード変化スイッチ9に変化が無ければ(S2919:Yes)、S2901の処理に戻り、2901〜S2919の処理を繰り返す。一方で、S2919の処理により判断した結果、モード切替スイッチ9に変化があれば(S2919:No)、当該処理を終了する。
図30は、上述した計測情報生成処理(図29のS2909)のフローチャートである。この計測情報生成処理(S2909)は、使用者により選択された指示計測指示ボタンB1〜B3に応じた計測情報を生成する処理である。
この処理では、まず、CCD22に高解像度設定信号を送信する(S3001)。
次に、レリーズボタン8をスキャンし(S3002a)、レリーズボタン8が半押しされたか否かを判断する(S3002b)。半押しされていれば(S3002b:Yes)、オートフォーカス(AF)および自動露出(AE)機能を起動し、ピント、絞り、シャッタスピードを調節する(S3002c)。尚、半押しされていなければ(S3002b:No)、S3002aからの処理を繰り返す。
次に、再び、レリーズボタン8をスキャンし(S3002d)、レリーズボタン8が全押しされたか否かを判断する(S3002e)。全押しされていれば(S3002e:Yes)、フラッシュモードか否かを判断する(S3006)。
S3006の処理により判断した結果、フラッシュモードであれば(S3006:Yes)、フラッシュ7を投光して(S3007)、撮影する(S3008)。尚、S3002eの判断において、全押しされていなければ(S3002e:No)、S3002aからの処理を繰り返す。
一方、フラッシュモードでなければ(S3006:No)、フラッシュ7を投光することなく撮影する(S3008)。尚、S3005の判断において、全押しされていなければ(S3005:No)、S3002からの処理を繰り返す。
次に、図10のS1006の3次元形状検出処理と同様な3次元形状検出処理を行い、被写体の3次元形状を検出する(S3009)。
次に、3次元形状検出処理(S3009)における3次元形状検出結果として、各計測頂点の実空間における3次元座標(X,Y,Z)を3次元情報格納部37mに格納する(S3010)。
次に、図29のS2907の処理により入力が確認された計測指示ボタンB1〜B3が何かを判断し(S3011)、以降では、その計測指示ボタンB1〜B3の種類に応じた処理を行なう。
S3011の処理により判断した結果、計測指示ボタンB2又はB3の入力が確認された場合には(S3011:2点採寸、高さ測定)、後述する指差指示範囲計測処理(S3012)を実行することによって、計測指示ボタンの種類に応じた計測及びその計測結果の投影などを行う。この指差指示範囲計測処理(S3012)の実行後、当該処理を終了する。
一方、S3011の処理により判断した結果、計測指示ボタンB1の入力が確認された場合には(S3011:3D入力)、S3010の処理の結果として3次元情報格納部37mに格納されている3次元形状検出結果を外部メモリ27に格納し(S3013)、その3次元形状検出結果をモニタLCD10に表示する(S3014)。尚、この3次元形状検出結果とは、各計測頂点の実空間における3次元座標(X,Y,Z)の集合体として表示する。
次に、3次元形状検出結果としての計測頂点をポリゴンで結んでそのサーフェスを表示した立体画像(3DのCG画像)としての3次元形状検出結果画像を投影画像格納部37kに格納し(S3015)、図8のS806の投影処理と同様な投影処理を行う(S3016)。尚、この場合には、図18を参照して上述したように、投影LCD19上の座標を3次元空間座標に変換する式の逆関数を利用し、求められた3次元座標に対する投影LCD19上の座標を求めることによって、3次元形状結果座標を投影面に投影させることができる。そして、このS3016の処理後、当該処理を終了する。
図31は、上述した指差指示範囲計測処理(図30のS3012)のフローチャートである。この指差指示範囲計測処理(S3012)は、指や棒上のポインタにより指定された少なくとも1つの点により形成される点、線分、又は領域について計測を行い、その計測画像を被写体又は投影方向に投影する処理である。
この処理では、まず、CCD22に低解像度動画設定信号を送信する(S3101)。よって、低解像度の動画データを用いるので、演算量が少なく、処理を高速に行い得る。
次に、周知のオートフォーカス(AF)及び自動露出(AE)機能を起動して、ピント、絞り、シャッター速度を調節した後に(S3102)、上述したS2906(図29)の処理と同様に、所定間隔で撮像領域100内を撮影し、2つの連続する撮像画像データの各画素の差分をとることにより、生成されたイメージを検査し、指先により指差された座標である指差座標を取得する(S3103)。
次に、S3103により取得された指差座標が、入力終了指示ボタンB4を指差するものであるか否かを判断し(S3104)、入力終了指示ボタンB4が指差されていなければ(S3104:No)、その指差座標を、指差座標格納部37nに格納し(S3105)、S3104の処理に戻る。一方で、入力終了指示ボタンB4が指差されていれば(S3104:Yes)、動画撮影を停止する(S3106)。
上述したS3013〜S3015の処理により、使用者の指などの指示部材の指し示す位置を時間をずらして経時的に撮像することにより、その指示部材の指し示す軌跡が取得されることになる。
次に、計測指示ボタンの種類と指差座標格納部37nに格納される指差座標に応じた計測情報を生成する(S3107)。S3107の処理では、例えば、計測指示ボタンB2に対応する「2点採寸」の場合には、指差座標格納部37nに格納される2点の指差座標と、3次元形状座標格納部37mに格納される3次元形状検出結果とに基づいて、該2点間の距離が計測される。
次に、計測情報に基づく計測結果画像を投影画像格納部37kに格納し(S3108)、上述した図23のS2316と同様の無歪投影用画像変換処理を実行し(S3109)、次に、図8のS806の投影処理と同様な投影処理を行う(S3110)。これによって、投影画像格納部37kに格納された計測結果画像を、被写体表面の歪曲や画像投影部13の投影方向に依存することなく無歪の画像として対象物又は投影方向に投影される。そして、このS3110の処理後、当該処理を終了する。
尚、上述したS3017の処理において、計測指示ボタンB3に対応する「高さ測定」の場合には、指差座標格納部37nに格納される1点の指差座標と、3次元形状座標格納部37mに格納される3次元形状検出結果とに基づいて、撮像領域100の面と指差された位置(即ち、指差座標格納部37nに格納される1点の指差座標)との高さが計測される。
また、本実施例では、指定点計測モードにおける次範囲計測処理(S3012)として、指差される2点間の距離を計測する「2点採寸」及び撮像領域100の面と指差された点の位置との高さを計測する「高さ測定」のみについて説明したが、使用者の指により指差される指の軌跡により囲まれる領域の面積や体積や重量などを計測情報として得るように構成してもよい。
以上説明したように、この指定点計測処理モードによれば、使用者の指やペン類や指示棒などの指示部材の軌跡により指定される点や線分や領域について、3次元情報に基づく計測情報を得ることができ、その計測情報に基づく各種画像が被写体であるワークやそのワーク近傍に投影されるので、使用者は、所望する計測情報を容易に視認することができる。
また、計測情報を所望する点、線分、領域は、使用者の指やペン類や指示棒などの指示部材の軌跡が経時的に撮像されることにより指定されるので、使用者の所望とする計測情報を容易に取得することができる上に、その指定点の入力を容易に行うことができる。
尚、画像入出力装置1のアーム部材3は、上述したように任意の形状に屈曲可能であり、画像投影部13及び画像撮像部14を有する撮像ヘッド2を任意の位置に向けることができる。よって、上述した体積・重量計測モード及び指定点計測モードにおいて、撮像方向及び投影方向を作業の妨害にならない方向とすることによって、撮像方向及び投影方向がその作業により妨害されることを低減し得、それによって作業の効率化を図ることができる。例えば、使用者の利き腕が右腕である場合に、左前方からとすると、作業が妨害され難くなり都合がよい。
図32は、上述した第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の位置を所定の位置に規制するようにしても良い。
図33は、図32で説明した光源レンズ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記載の三次元情報生成手段としては、図30の計測情報生成処理におけるS3009の処理が該当し、計測手段としては、図31の指差指示情報生成処理におけるS3107の処理が該当する。また、請求項1記載の補正手段としては、図31の指差指示情報生成処理におけるS3109の処理(無歪投影用画像変換処理)が該当する。
また、請求項2記載の指定点入力手段は、図31の指差指示情報生成処理におけるS3103〜S3105の処理が該当する。
また、請求項4記載の三次元情報生成手段としては、図23の体積・重量計測処理におけるS2312の処理が該当し、計測手段としては、図23の体積・重量計測処理におけるS2314の処理が該当し、指示情報生成手段としては、図23の体積・重量計測処理におけるS2314の処理が該当し、補正手段としては、図23の体積・重量計測処理におけるS2316の処理(無歪投影用画像変換処理)が該当する。
また、請求項6記載の密度情報取得手段としては、図23の体積・重量計測処理におけるS2302の処理が該当する。
また、請求項7記載の三次元情報生成手段としては、図23の体積・重量計測処理におけるS2312の処理が該当し、指示情報生成手段としては、図23の体積・重量計測処理におけるS2314の処理が該当する。また、請求項7記載の補正手段としては、図23の体積・重量計測処理におけるS2316の処理(無歪投影用画像変換処理)が該当する。
また、請求項10記載の切断手段としては、「計測結果画像に基づいて被写体であるワークを切断するカッタなどの切断手段」が該当する。
以上実施例に基づき本発明を説明したが、本発明は上記実施例に何ら限定されるものでなく、本発明の主旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
例えば、上記実施例では、平面化画像モードとして、平面化された画像を取得、表示する処理を説明したが、周知のOCR機能を搭載させ、平面化された平面画像をこのOCR機能によって読み取らせるように構成しても良い。かかる場合には、OCR機能によって湾曲した状態の原稿を読み取る場合に比べて高精度に原稿に記載された文章を読み取ることができる。
また、上記実施例における図15のS1501においては、明暗の変化を持つ輝度画像の全部を抽出し、その全部について暫定的なCCDY値を求める場合について説明したが、抽出する輝度画像としては、全部である必要はなく、1枚以上であれば、その枚数に限定されることはない。抽出する枚数を減らすことで境界座標を高速に求めることができる。
また、上記実施例における図15のS1507では、fCCDY[i]を加重平均し、図16のS1607ではefCCDY[j]を近似多項式として、各値を平均化する場合について説明したが、各値を平均化する方法としては、これらに限定されるものではなく、例えば、各値の単純平均値を採る方法、各値の中央値を採用する方法、各値の近似式を算出し、その近似式における検出位置を境界座標とする方法、統計的な演算により求める方法等であっても良い。
また、例えば、上記実施例における平面化画像モードにおける3次元形状検出処理においては、原稿Pの3次元形状を検出するために、複数種類の明暗を交互に並べてなる縞状のパターン光を投影する場合について説明したが、3次元形状を検出するための光は、かかるパターン光に限定されるものではない。
例えば、図34に示すように、湾曲原稿の3次元形状の検出を簡便に行う場合には、画像投影部13から2本の帯状のスリット光70,71を投影するようにしても良い。この場合には、8枚のパターン光を投影する場合にくらべ、僅か2枚の撮像画像から高速に3次元形状の検出をすることができる。
また、上記実施例における体積・重量計測処理(図23)において、S2314の処理により得られた計測情報を外部メモリ27に記憶するように構成してもよい。また、S2317の投影処理後、被写体であるワーク上に投影された画像を撮像するように構成してもよい。
また、上記実施例における指差指示範囲計測処理(図31)におけるS3107の処理により得られた計測情報を外部メモリ27に記憶するように構成してもよい。これによって、計測情報を得られた計測情報を外部メモリ27から外部インターフェイスに無線通信によって送信し、外部機器において利用することが可能となる。