(57)【特許請求の範囲】
【請求項１】
読取台に置かれた対象物に照射手段によって光を照射し、前記対象物を撮像手段によって撮像して前記対象物の画像を読み取る画像読取装置であって、
前記対象物の形状を測定する測定手段と、
前記照射手段が前記対象物に光を照射しているときに前記撮像により取得した前記対象物の画像データと、前記測定の結果とに基づいて、前記照射手段が前記対象物に照射する光量を補正する補正手段と
を備えることを特徴とする画像読取装置。
【請求項２】
前記照射手段は、前記補正手段により補正された光量に従って、前記対象物に光を照射し、
前記撮像手段は、当該照射している間に前記対象物を撮像することを特徴とする請求項１に記載の画像読取装置。
【請求項３】
前記測定手段は、
前記対象物に赤外線パターンを投射する投射手段と、
前記対象物に投射された赤外線パターンを読み取る読取手段と、
ＲＧＢカメラと
を備えることを特徴とする請求項１又は２に記載の画像読取装置。
【請求項４】
前記測定手段は、１画素につきＲ、Ｇ、Ｂ、距離の４種類の画素値を持つラスタービットマップデータである距離画像情報を作成することを特徴とする請求項１乃至３の何れか一項に記載の画像読取装置。
【請求項５】
前記補正手段は、前記距離画像情報に基づき前記対象物の表面の法線ベクトルを導出することを特徴とする請求項４に記載の画像読取装置。
【請求項６】
前記補正手段は、前記導出した法線ベクトルに基づき、前記照射手段により照射され且つ前記対象物の表面で反射されて前記撮像手段に入る光量を導出することを特徴とする請求項５に記載の画像読取装置。
【請求項７】
前記導出される光量は、以下の式
【数１】
0006422362.tif 000034
により算出されることを特徴とする請求項６に記載の画像読取装置（ただし、Ｉpは光量であり、Ｌは前記対象物の注目点から前記照射手段に伸びるベクトルの正規化ベクトルであり、Ｎは前記注目点における前記対象物の表面の法線の正規化ベクトルであり、ＩLは反射補正係数である）。
【請求項８】
前記導出される光量は、以下の式
【数２】
0006422362.tif 000035
により算出されることを特徴とする請求項６に記載の画像読取装置（ただし、Ｉpは光量であり、Ｌは前記対象物の注目点から前記照射手段に伸びるベクトルの正規化ベクトルであり、Ｎは前記注目点における前記対象物の表面の法線の正規化ベクトルであり、Ｖは前記注目点から前記撮像手段に伸びるベクトルの正規化ベクトルであり、Ｒは前記注目点において前記照射手段から入射した光が正反射する方向の正規化ベクトルであり、ｋd，ｋsは反射補正係数であり、αは鏡面反射係数である）。
【請求項９】
前記補正手段は、ラスタービットマップにおける画素毎に、前記導出した光量に基づき補正パラメータを導出することを特徴とする請求項６乃至８の何れか一項に記載の画像読取装置。
【請求項１０】
前記補正手段は、前記照射手段が光を照射していないときに前記撮像により取得した前記対象物の画像データに基づいて、前記光量を補正することを特徴とする請求項１乃至９の何れか一項に記載の画像読取装置。
【請求項１１】
読取台に置かれた対象物に照射手段によって光を照射し、前記対象物を撮像手段によって撮像して前記対象物の画像を読み取る画像読取装置で実行される画像読取方法であって、
前記対象物の形状を測定する測定ステップと、
前記照射手段が前記対象物に光を照射しているときに前記撮像により取得した前記対象物の画像データと、前記測定の結果とに基づいて、前記照射手段が前記対象物に照射する光量を補正する補正ステップと
を備えることを特徴とする画像読取方法。
【請求項１２】
コンピュータに、請求項１１に記載の方法を実行させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャナを利用して原稿等を読み取り、画像データを保存する技術に関する。
【背景技術】
【０００２】
従来、文書等の原稿をスキャンし画像データを保存する機器（所謂「スキャナ」）として、ラインセンサを用いた撮像によりライン毎に画像データを取得するラインスキャナがある。また、他の種類のスキャナとして、撮像センサ（カメラ）を用いて２次元画像データを取得するカメラスキャナもある。書画台に上向きに置かれた原稿を書画台の上方に配置されたカメラが撮像する方式のカメラスキャナでは、原稿が１枚の用紙であれば置くだけで素早くスキャンすることができ、書籍のように厚みのある原稿も書画台に置いて容易にスキャンすることができる。
【０００３】
特許文献１には、１枚の用紙の文書や厚みのある書籍等の原稿だけでなく、厚みのある立体物を書画台に置いてスキャンし当該立体物の立体形状を測定するカメラスキャナが開示されている。このカメラスキャナは、撮像するカメラとともに投光部を備えており、投光部から投光する計測パターンをカメラで撮像し、三角測量の原理を用いて書画台に置かれた物体の立体形状を測定する。そして、このカメラスキャナは、当該測定結果に基づき、書画台に置かれた物体が平面原稿であるか、書籍であるか、立体物であるかを判定し、当該判定結果に応じて適切な撮影モードで撮影する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−７８７２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示されている発明では、対象物の形状に起因して取得画像の画質が低下する（例えば、対象物の凹凸が原因で取得画像において明暗差が生じる）恐れがある。
【課題を解決するための手段】
【０００６】
本発明は、読取台に置かれた対象物に照射手段によって光を照射し、前記対象物を撮像手段によって撮像して前記対象物の画像を読み取る画像読取装置であって、前記対象物の形状を測定する測定手段と、前記照射手段が前記対象物に光を照射しているときに前記撮像により取得した前記対象物の画像データと、前記測定の結果とに基づいて、前記照射手段が前記対象物に照射する光量を補正する補正手段とを備えることを特徴とする画像読取装置である。
【発明の効果】
【０００７】
本発明により、対象物の形状に起因する取得画像の画質低下を防ぐことが可能となる。
【図面の簡単な説明】
【０００８】
【図１】カメラスキャナ１００の説明図
【図２】コントローラ部１０１のハードウェア構成を示すブロック図
【図３】カメラスキャナ１００の制御用プログラムのソフトウェア構成を示すブロック図
【図４】スキャン処理の流れを示すフローチャート
【図５】スキャン処理におけるデータフローを示す図
【図６】距離画像情報取得処理の説明図
【図７】プロジェクタ照射光量補正パラメータ生成処理の流れを示すフローチャート
【図８】光量Ｉpの計算方法の説明図
【図９】係数ｄ、ｋd、ｋs、αの生成方法の説明図
【図１０】係数ｄ、ｋd、ｋs、αの生成処理のフローチャート
【図１１】プロジェクタ照射処理のフローチャート
【図１２】本発明による効果の一例を示す図
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための最良の形態について図面を参照しながら説明する。尚、以下で示す構成は例示に過ぎず、また、本発明は図示する構成に限定されるものではない。
【００１０】
［実施例１］
＜カメラスキャナの構成＞
図１は、本実施例に係る画像読取装置、より具体的にはカメラスキャナ１００の説明図であり、図１（ａ）は、カメラスキャナ１００の構成例を示す外観図である。図１（ａ）に示すように、カメラスキャナ１００は、コントローラ部１０１と、カメラ部１０２と、距離画像センサ部１０３とで構成される。コントローラ部１０１及びカメラ部１０２並びにカメラ部１０２及び距離画像センサ部１０３は、腕部１０４により連結されている。
【００１１】
コントローラ部１０１は、ＣＰＵ、ＲＡＭ、ＲＯＭ等で構成され、カメラ部１０２や距離画像センサ部１０３を制御する。また、コントローラ部１０１は、光を照射するプロジェクタ１０１１を備えている。コントローラ部１０１の詳細は後述する（図２を参照）。
【００１２】
カメラ部１０２はレンズを有し、このレンズは、白色のマット（非光沢）素材でできている読取台１１０に向けられている。カメラ部１０２は、読取台１１０上の読取領域１１１に置かれた対象物（例えば、図１（ａ）の例では、原稿１２０が置かれている）を撮像して、対象物の画像データを取得する。
【００１３】
距離画像センサ部１０３はレンズを有し、このレンズは、読取台１１０に向けられている。距離画像センサ部１０３は、このレンズを介して読取台１１０上の読取領域１１１内を読み取る。ここで、距離画像センサ部１０３は、赤外線によるパターン投射方式を採用するセンサを含み、赤外線パターン投射部１０３１と、赤外線カメラ部１０３２と、ＲＧＢカメラ部１０３３とで構成される。赤外線パターン投射部１０３１は、読取領域１１１に置かれた対象物に対し、人間の目には不可視の赤外線による３次元測定パターンを投射する。赤外線カメラ部１０３２は、当該対象物に投射された３次元測定パターンを読み取る。ＲＧＢカメラ部１０３３は、当該対象物の表面で反射された可視光波長域の光を赤・緑・青の３領域に分割しＲＧＢ信号として記録する。
【００１４】
図１（ｂ）は、カメラスキャナ１００における座標系を示す図である。本実施例では、図１（ｂ）に示すように、カメラスキャナ１００に対して、複数の異なる座標系が定義される。
【００１５】
即ち、コントローラ部１０１に対して、プロジェクタ座標系という座標系（ＸｐＹｐＺｐ座標系）が定義される。このプロジェクタ座標系では、プロジェクタ１０１１が投影する画像の画像平面をＸｐＹｐ平面とし、このＸｐＹｐ平面に直交する方向をＺｐ方向と定義している。
【００１６】
カメラ部１０２に対して、カメラ座標系という座標系（ＸｃＹｃＺｃ座標系）が定義される。このカメラ座標系では、カメラ部１０２が撮像する画像の画像平面（カメラ画像平面）をＸｃＹｃ平面とし、このＸｃＹｃ平面に直交する方向をＺｃ方向と定義している。
【００１７】
距離画像センサ部１０３に対して、距離画像センサ座標系という座標系（ＸｓＹｓＺｓ座標系）が定義される。この距離画像センサ座標系では、ＲＧＢカメラ部１０３３が撮像する画像の画像平面をＸｓＹｓ平面とし、このＸｓＹｓ平面に直交する方向をＺｓ方向と定義している。
【００１８】
さらに、これらの独立した３つの座標系の３次元データを統一的に扱えるようにするために、読取台１１０を含む平面をＸＹ平面とし、このＸＹ平面から上方に垂直な方向をＺ軸正方向とする直交座標系（ＸＹＺ座標系）を定義する。
【００１９】
図１（ｃ）は、直交座標系（ＸＹＺ座標系）と、カメラ座標系（ＸｃＹｃＺｃ座標系）と、カメラ画像平面との関係を示す図である。図１（ｃ）を用いて、直交座標系（ＸＹＺ座標系）で表現される空間と、カメラ部１０２を中心としたカメラ座標系（ＸｃＹｃＺｃ座標系）で表現される空間と、カメラ部１０２が撮像する画像の画像平面との関係を示しながら、座標系の変換の一例を説明する。直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］は、式（１）によって、カメラ座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］へ変換できる。
【００２０】
【数１】
0006422362.tif 000002
【００２１】
ここで、Ｒｃは回転行列であり、直交座標系に対するカメラの姿勢（即ち、カメラが直交座標系に対してどの程度回転しているかを示すカメラの向き）よって求まる外部パラメータによって構成される３行３列の行列である。ｔｃは並進ベクトルであり、直交座標系に対するカメラの位置によって求まる外部パラメータによって構成されるベクトルである。尚、式（１）とは逆に、カメラ座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］は、式（２）によって、直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］へ変換できる。
【００２２】
【数２】
0006422362.tif 000003
【００２３】
カメラ部１０２での撮像により取得される２次元のカメラ画像の画像平面をｘｙ平面とする座標系（カメラ画像座標系）における座標情報は、カメラ部１０２によって３次元空間中の３次元情報が２次元情報に変換された結果として得られるものである。即ち、式（１）を用いて直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］から変換したカメラ座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］に対して、式（３）を用いて透視投影変換を行うことで、カメラ画像座標系における２次元座標ｐｃ［ｘｐ，ｙｐ］を導出する。
【００２４】
【数３】
0006422362.tif 000004
【００２５】
ここで、Ａはカメラの内部パラメータ行列であり、焦点距離、画像中心位置などのパラメータによって構成される３行３列の行列である。
【００２６】
以上のように、式（１）〜（３）を用いることで、直交座標系で表された３次元点群の座標を、カメラ座標系における３次元点群の座標やカメラ画像座標系における２次元点群の座標に変換することができる。尚、各ハードウェアデバイスの内部パラメータと、直交座標系に対する位置姿勢（外部パラメータ）とは、公知のキャリブレーション手法により予めキャリブレーションされているものとする。以後、特に断りがなく３次元点（群）と表記した場合は、直交座標系における３次元データを表しているものとする。
【００２７】
＜コントローラ部１０１のハードウェア構成＞
図２は、コントローラ部１０１のハードウェア構成を示すブロック図である。図２に示すように、コントローラ部１０１は、ＣＰＵ２０１と、ＲＡＭ２０２と、ＲＯＭ２０３と、ＨＤＤ２０４と、画像処理プロセッサ２０５と、カメラＩ／Ｆ２０６と、ディスプレイコントローラ２０７とで構成される。これらの構成要素は、システムバス２０８によって互いに接続されており、システムバス２０８を介した情報の送受信が可能である。
【００２８】
ＣＰＵ２０１は、コントローラ部１０１全体の動作を制御する中央演算装置である。ＲＡＭ２０２は、揮発性メモリである。ＲＯＭ２０３は不揮発性メモリであり、ＣＰＵ２０１の起動用プログラムが格納されている。ＨＤＤ２０４は、ＲＡＭ２０２と比較して大容量なハードディスクドライブである。ＨＤＤ２０４には、ＣＰＵ２０１によって実行される、カメラスキャナ１００の制御用プログラムが格納されている。
【００２９】
ＣＰＵ２０１は、電源ＯＮによりカメラスキャナ１００が起動されると、ＲＯＭ２０３に格納されている起動用プログラム（公知のブートローダーなどに相当）を実行する。この起動用プログラムは、ＨＤＤ２０４に格納されている制御用プログラムを読み出し、該読み出した制御用プログラムをＲＡＭ２０２上に展開するために予め実行されるプログラムである。ＣＰＵ２０１は、起動用プログラムを実行し、ＲＡＭ２０２上に制御用プログラムを展開すると、続けて当該展開した制御用プログラムを実行することで、カメラスキャナ１００の制御を開始する。制御用プログラムに従って実行される処理に用いられる一時データは、ＲＡＭ２０２に格納される。ＣＰＵ２０１は、ＲＡＭ２０２に対して当該一時データの読み込み及び書き込みを行う。ＨＤＤ２０４には、制御用プログラムに加えて、制御用プログラムに従って実行される処理に必要な各種設定に関するデータや、カメラ入力によって生成した画像データも格納することができる。これらのデータについても、ＣＰＵ２０１によってＨＤＤ２０４に対する読み込み及び書き込みが行われる。
【００３０】
画像処理プロセッサ２０５は、ＲＡＭ２０２に格納された画像データを読み出して、該読み出した画像データに対する画像処理を施し、画像処理を施した後の画像データをＲＡＭ２０２へ上書きする。尚、画像処理プロセッサ２０５が実行する画像処理とは、例えば、公知の回転、変倍、色変換等の処理である。
【００３１】
カメラＩ／Ｆ２０６は、カメラ部１０２及び距離画像センサ部１０３と接続されている。カメラＩ／Ｆ２０６は、ＣＰＵ２０１からの指示に従い、カメラ部１０２から画像データを、距離画像センサ部１０３から距離及び画像に関する情報（以下、距離画像情報）を取得する。取得した画像データや距離画像情報は、ＲＡＭ２０２へ書き込まれる。また、カメラＩ／Ｆ２０６は、ＣＰＵ２０１から受け取った制御コマンドをカメラ部１０２及び距離画像センサ部１０３へ転送する。これにより、ＣＰＵ２０１は、カメラ部１０２及び距離画像センサ部１０３に対する設定等の制御を行う。
【００３２】
ディスプレイコントローラ２０７は、ＣＰＵ２０１からの指示に従い、表示を制御する。本実施例では、ディスプレイコントローラ２０７は、プロジェクタ１０１１に接続されており、プロジェクタ１０１１による画像データに基づく投影を制御する。
【００３３】
＜カメラスキャナ１００の制御用プログラムのソフトウェア構成＞
図３（ａ）は、本実施例に係るスキャン処理を実現するため、ＣＰＵ２０１によって実行されるカメラスキャナ１００の制御用プログラムのソフトウェア構成を示すブロック図である。この制御用プログラムは、上述のように、ＨＤＤ２０４に格納されており、カメラスキャナ１００起動時にＲＡＭ２０２上に展開され、実行される。以下、制御用プログラムが持つソフトウェアモジュール郡について説明する。
【００３４】
図３（ａ）に示すように、制御用プログラムは、メイン制御部３０１と、距離画像センサ制御部３０２と、カメラ制御部３０３と、ディスプレイ制御部３０４と、補正パラメータ生成部３０５と、画像処理制御部３０６とを備えている。
【００３５】
メイン制御部３０１は、以下のソフトウェアモジュールを統括的に制御することで、カメラスキャナ１００によって実行される本実施例に係るスキャン処理を実現する（このスキャン処理の詳細は後述する）。
【００３６】
距離画像センサ制御部３０２は、カメラＩ／Ｆ２０６を介して距離画像センサ部１０３を制御することで、距離画像センサ部１０３が生成した距離画像情報を取得し、該取得した距離画像情報をＲＡＭ２０２へ格納する。
【００３７】
カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御することで、カメラ部１０２が生成した画像データを取得し、該取得した画像データをＲＡＭ２０２へ格納する。
【００３８】
ディスプレイ制御部３０４は、ディスプレイコントローラ２０７を介してプロジェクタ１０１１を制御する。具体的には、ディスプレイ制御部３０４は、プロジェクタ１０１１を光源として機能させ、ＲＡＭ２０２等に格納された画像情報に基づいて光を照射させる。ここでいう画像情報とは、多値の二次元ラスタービットマップデータであり、画素毎の画素値（例えば、輝度値、濃度値など）から成るデータである。
【００３９】
補正パラメータ生成部３０５は、ＲＡＭ２０２に格納された、距離画像センサ部１０３により取得した距離画像情報と、カメラ部１０２により取得した画像データとに基づき、プロジェクタ１０１１の照射光量を補正するための補正パラメータ（以下、プロジェクタ照射光量補正パラメータ）を生成する。この補正パラメータ生成処理の詳細は後述する。
【００４０】
画像処理制御部３０６は、画像処理プロセッサ２０５を制御して、ＲＡＭ２０２等に格納された画像データに対して画像処理（例えば、回転、変倍、色変換等の処理）を実行する。
【００４１】
＜カメラスキャナ１００によって実行されるスキャン処理＞
図４（ａ）は、カメラスキャナ１００によって実行される本実施例に係るスキャン処理の流れを示すフローチャートである。本実施例に係るスキャン処理は、メイン制御部３０１による統括的な制御のもと、制御用プログラムのメイン制御部３０１以外のソフトウェアモジュールによる処理が順次実行されることで実現される。また、図５（ａ）は、ＲＡＭ２０２に保存されるデータに着目して、本実施例に係るスキャン処理を説明するデータフロー図である。以下、図４（ａ）及び図５（ａ）を用いて、本実施例に係るスキャン処理を詳細に説明する。
【００４２】
ステップＳ４０１において、ディスプレイ制御部３０４は、ディスプレイコントローラ２０７を介してプロジェクタ１０１１を制御し、プロジェクタ１０１１に、初期画像情報５００に基づいて読取領域１１１上に光を照射させる。ここで、初期画像情報５００とは、多値の二次元ラスタービットマップデータであり、次の３つの特徴を持つ。
（１）全画素が無彩色である。
（２）全画素の輝度値又は濃度値が最大値未満であり且つ最小値より大きい。
（３）全画素が、同一の輝度値又は濃度値を持つ。ただし、許容可能な誤差範囲（５％程度）であれば、全画素の輝度値又は濃度値は、同一ではなく概同一で良い。
【００４３】
加えて本実施例では、このラスタービットマップデータをＲＧＢ色空間、各色ｎビット深度で表現するものとする。このとき、ラスタービットマップデータにおける各画素の色成分値は、以下の値を持つものとする。
【００４４】
【数４】
0006422362.tif 000005
【００４５】
ステップＳ４０１でプロジェクタ１０１１が光を照射している間に実行されるステップＳ４０２において、カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御することでカメラ画像データ５０１を取得する。取得したカメラ画像データ５０１は、ＲＡＭ２０２に保存される。
【００４６】
ステップＳ４０３において、距離画像センサ制御部３０２は、カメラＩ／Ｆ２０６を介して距離画像センサ部１０３を制御することで距離画像情報５０２を取得する。取得した距離画像情報５０２は、ＲＡＭ２０２に保存される。ここで、距離画像情報５０２は、距離画像センサ部１０３と、スキャン対象物の各部との間の距離に関する情報を含む。この距離に関する情報とは、画素毎の画素値（距離値）で構成されたラスタービットマップ形式のデータであって、スキャン対象物のうち距離画像センサ部１０３の近くにある部分に対して大きい値を持つ一方、遠くにある部分に対しては小さい値を持つような２次元配列のデータである。本ステップで実行される距離画像情報取得処理の詳細は後述する。
【００４７】
ステップＳ４０４において、補正パラメータ生成部３０５は、ステップＳ４０２で取得したカメラ画像データ５０１と、ステップＳ４０３で取得した距離画像情報５０２とに基づき、プロジェクタ照射光量補正パラメータ５０３を生成し、ＲＡＭ２０２に保存する。本ステップで実行されるプロジェクタ照射光量補正パラメータ生成処理の詳細は後述する。
【００４８】
ステップＳ４０５において、ディスプレイ制御部３０４は、ディスプレイコントローラ２０７を介してプロジェクタ１０１１を制御し、プロジェクタ１０１１に、ステップＳ４０４で生成したプロジェクタ照射光量補正パラメータ５０３に従って読取領域１１１上に光を照射させる。本ステップで実行されるプロジェクタ照射処理の詳細は後述する。
【００４９】
ステップＳ４０５でプロジェクタ１０１１が光を照射している間に実行されるステップＳ４０６において、カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御することで補正後のカメラ画像データ５０４を取得する。取得した補正後のカメラ画像データ５０４は、ＲＡＭ２０２に保存される。
【００５０】
ステップＳ４０７において、画像処理制御部３０６は、画像処理プロセッサ２０５を制御して、ステップＳ４０６で取得した補正後のカメラ画像データ５０４に対する画像処理を実行する。当該画像処理が施された画像データは、最終的なスキャン画像データ５０５としてＲＡＭ２０２やＨＤＤ２０４等に保存される。尚、ここでいう画像処理とは、例えば、読取領域１１１内に置かれた原稿１２０に対応する領域を切り出し、原稿内の文字・画像が正立したラスタービットマップデータを取得する処理である。これ以外の処理、例えば、公知の色ムラ補正や画像の鮮鋭化処理を、この画像処理に加えても良い。
【００５１】
＜距離画像情報取得処理＞
以下、上述の距離画像情報取得処理（図４（ａ）のステップＳ４０３）について、図６を用いて詳細に説明する。ここで、図６（ａ）は距離画像情報取得処理の流れを示すフローチャートであり、図６（ｂ）、図６（ｃ）、図６（ｄ）はパターン投射方式を利用した距離の計測原理を説明するための図である。
【００５２】
距離画像情報取得処理が開始されるとまず、ステップＳ６０１において、図６（ｂ）に示すように赤外線パターン投射部１０３１を用いて赤外線による３次元形状測定パターン６２２を対象物６２１に投射する。
【００５３】
ステップＳ６０２において、ＲＧＢカメラ部１０３３を用いて対象物６２１を撮像することでＲＧＢカメラ画像６２５を取得する。また、赤外線カメラ部１０３２を用いてステップＳ６０１で投射した３次元形状測定パターン６２２を撮像することで赤外線カメラ画像６２４を取得する。尚、赤外線カメラ部１０３２と、ＲＧＢカメラ部１０３３とでは設置位置が異なるため、図６（ｄ）に示すように、ＲＧＢカメラ画像６２５と、赤外線カメラ画像６２４とでは、撮像領域が異なってくる。このとき、ＲＧＢカメラ部１０３３の撮像領域が、赤外線カメラ部１０３２の撮像領域よりも広くなるようにする。これは、後続のステップＳ６０３で赤外線カメラ画像６２４をＲＧＢカメラ画像６２５の座標系に合わせるためである。
【００５４】
ステップＳ６０３において、赤外線カメラ部１０３２の座標系からＲＧＢカメラ部１０３３の座標系への座標系変換を行って赤外線カメラ画像６２４をＲＧＢカメラ画像６２５の座標系に合わせる。尚、赤外線カメラ部１０３２と、ＲＧＢカメラ部１０３３との間の相対位置関係や、夫々のカメラ部の内部パラメータは、事前のキャリブレーション処理により既知であるとする。
【００５５】
ステップＳ６０４において、図６（ｃ）に示すように、３次元形状測定パターン６２２と、ステップＳ６０３で座標変換が行われた赤外線カメラ画像６２４との間で対応点を抽出する。例えば、赤外線カメラ画像６２４上の１点を３次元形状測定パターン６２２から探索して、同一の点が検出された場合に、赤外線カメラ画像６２４上の１点と、３次元形状測定パターン６２２上の１点との対応付けを行う。或いは、赤外線カメラ画像６２４における注目画素および当該注目画素の周辺画素から成るパターンについて、このパターンと類似する部分を３次元形状測定パターン６２２から探索（パターンマッチング）し、３次元形状測定パターン６２２の中で最も類似度が高い部分を当該パターンと対応付けすることで、対応点を抽出しても良い。
【００５６】
ステップＳ６０５において、赤外線パターン投射部１０３１と、赤外線カメラ部１０３２とを結ぶ直線を基線６２３として三角測量の原理を用いて計算を行うことにより、赤外線カメラ部１０３２から対象物の各部までの距離を画素毎に算出する。ここでいう三角測量とは、ある基線の両端にある既知の点から測定したい点への角度をそれぞれ測定することによって、その点の位置を決定する三角法および幾何学を用いた測量方法である。尚、三角測量の原理は既知であるため、詳細な説明は省略する。本ステップでは、ステップＳ６０４で対応付けができた点の位置にある画素については、赤外線カメラ部１０３２から対象物の各部までの距離を算出し、当該算出した距離を画素値として保存する。一方、ステップＳ６０４で対応付けができなかった位置の画素については、距離の計測ができなかった部分であると判定して、無効値を画素値として保存する。この処理をステップＳ６０３で座標変換を行った赤外線カメラ画像６２４の全画素に対して行うことで、各画素に対する画素値（距離値）から成る距離画像を生成する。
【００５７】
ステップＳ６０６において、距離画像の各画素に対するＲＧＢカメラ画像６２５のＲＧＢ値を保存することにより、１画素につきＲ、Ｇ、Ｂ、距離の４種類の画素値を持つ距離画像情報を生成する。ここで生成された距離画像情報は、距離画像センサ部１０３のＲＧＢカメラ部１０３３に対して定義された距離画像センサ座標系（ＸｓＹｓＺｓ座標系）を基準としている。
【００５８】
そこで次のステップＳ６０７において、図１（ｂ）を用いて上述したように、距離画像センサ座標系における距離画像情報を直交座標系における距離画像情報に変換する。
【００５９】
尚、本実施例では上述したように、赤外線パターン投射方式を採用する距離画像センサ部１０３を用いる場合について説明したが、他の方式を採用する距離画像センサ部を用いることも可能である。例えば、２つのＲＧＢカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するＴＯＦ（Ｔｉｍｅ  ｏｆ  Ｆｌｉｇｈｔ）方式を採用する距離画像センサ部を用いても構わない。
【００６０】
以上が、距離画像情報取得処理の内容である。
【００６１】
＜プロジェクタ照射光量補正パラメータ生成処理＞
以下、上述のプロジェクタ照射光量補正パラメータ生成処理（図４（ａ）のステップＳ４０４）について、図７（ａ）を用いて詳細に説明する。図７（ａ）は、ステップＳ４０４におけるプロジェクタ照射光量補正パラメータ生成処理の流れを示すフローチャートである。
【００６２】
ステップＳ７０１において、補正パラメータ生成部３０５は、ＲＡＭ２０２に保存されたカメラ画像データ５０１を読み取る。
【００６３】
ステップＳ７０２において、補正パラメータ生成部３０５は、ステップＳ７０１で読み取ったカメラ画像データ５０１から白色部の輝度値ｉMaxを求める。輝度値ｉMaxを求める処理ではまず、カメラ画像データ５０１の座標（ｘ，ｙ）＝（ｉ，ｊ）における画素を注目画素とし、当該注目画素の色成分値（Ｒij，Ｇij，Ｂij）から輝度値Ｌijを以下の操作により求める。
【００６４】
【数５】
0006422362.tif 000006
【００６５】
ここで、Ｍａｘは与えられた要素のうちの最大値を求める操作である。
【００６６】
尚、上記の輝度値Ｌijを求める方法とは別の実施例として、以下のようにＮＴＳＣビデオ標準に従った式（６）を用いて輝度値Ｌijを計算しても本発明を実施できる。
【００６７】
【数６】
0006422362.tif 000007
【００６８】
本実施例では、幅がwidthピクセル、高さがheightピクセルのカメラ画像データ５０１の輝度値の配列ＬcamをＬcam＝(Ｌ11，Ｌ12，Ｌ13・・・Ｌ21，Ｌ22，Ｌ23・・・Ｌwidth height)と定義する。そして、以下の処理によって輝度値ｉMaxを求める。
【００６９】
【数７】
0006422362.tif 000008
【００７０】
つまりステップＳ７０２では、与えられたカメラ画像データ５０１の全画素を走査し、全画素の輝度値のうちの最大の輝度値を求めることによって、輝度値ｉMaxを求めている。また、以下の処理によって輝度値ｉMinを求める。
【００７１】
【数８】
0006422362.tif 000009
【００７２】
ここで、Ｍｉｎは、与えられた要素のうちの最小値を求める操作である。つまりステップＳ７０２では、与えられたカメラ画像データ５０１の全画素を走査し、全画素の輝度値のうちの最小の輝度値を求めることによって、輝度値ｉMinを求めている。
【００７３】
ステップＳ７０３において、補正パラメータ生成部３０５は、ＲＡＭ２０２に保存された距離画像情報５０２を読み取る。
【００７４】
ステップＳ７０４において、補正パラメータ生成部３０５は、ステップＳ７０３で読み取った距離画像情報５０２に基づきスキャン対象物のサーフェス（表面）法線を導出する。ここで導出するサーフェス法線とは、三次元形状のメッシュデータにおける、各メッシュの法線ベクトル群である。各メッシュの法線ベクトルを求める方法として以下の２つの方法がある。
【００７５】
第一の方法は、距離画像情報５０２のメッシュデータを作成し、当該作成したメッシュデータから、各メッシュの法線ベクトルを計算する方法である。
【００７６】
第二の方法は、距離画像情報５０２から法線ベクトルを直接計算する方法である。具体的には、注目した点群（平面を推定するので、少なくとも３つの注目点が必要となる）に対して近似平面を推定し、さらにその推定した近似平面に対する垂直方向をメッシュの法線方向として推定する方法である。この平面の近似の計算は、最小二乗法（least-squares）を用いることで実現できる。より具体的には、この法線ベクトルを直接計算する方法は、以下のような数式で表すことができる。ｐiを注目点、Ｃを距離画像情報５０２によって表される距離画像における注目点近傍の点（以下、近傍点）と前記注目した点群の中央点との間の距離を行列要素とする共分散行列、ｋを近傍点の数、
【００７７】
【数９】
0006422362.tif 000010
【００７８】
を近傍点群の平均、λjをｊ番目の共分散の固有値行列、
【００７９】
【数１０】
0006422362.tif 000011
【００８０】
をｊ番目の固有値とする。このとき、以下の式を使うことでメッシュの法線ベクトルを算出することができる。
【００８１】
【数１１】
0006422362.tif 000012
【００８２】
ただし、上記式からは法線ベクトルの向きが、紙面下方と、紙面上方とのいずれであるかが定まらない。本実施例では、このときの法線ベクトルの向きは、紙面上方、即ちカメラ部１０２を向いた方向とする。
【００８３】
また、この法線ベクトルから法線の正規化ベクトルＮを求めておく。法線の正規化ベクトルＮは、後続のステップＳ７０５において、光量Ｉpを計算する際に必要となる（詳細は後述する）。
【００８４】
尚、本実施例では、距離画像情報５０２から近似平面を求めるために最小二乗法を使っているが、他の近似手法を使ったとしても本発明を実施できる。
【００８５】
ステップＳ７０５において、補正パラメータ生成部３０５は、読取領域１１１上における物理的な位置に対応する画素毎の画素値から成るプロジェクタ照射光量補正パラメータ５０３を生成し、ＲＡＭ２０２に保存する。
【００８６】
以上が、プロジェクタ照射光量補正パラメータ生成処理の内容である。
【００８７】
＜補正パラメータＩinの計算＞
上述のステップＳ７０５における処理について詳細に説明する。ステップＳ７０５ではまず、補正パラメータ生成部３０５は、読取領域１１１に対応する２次元配列であるプロジェクタ照射光量補正パラメータ５０３の配列要素を全てゼロにすることで、プロジェクタ照射光量補正パラメータ５０３を初期化する。次いで、補正パラメータ生成部３０５は、２次元配列であるプロジェクタ照射光量補正パラメータ５０３における各画素に対する補正パラメータＩinを計算する。
【００８８】
以下、図８（ａ）を用いて補正パラメータＩinの計算方法について説明する。本実施例では、プロジェクタ照射光量補正パラメータ５０３における一画素（注目画素）に対する補正パラメータＩinを求めるにあたって、次のようにベクトル及び係数を定義する。即ち、注目画素に対応する原稿８００上の注目点８０１からプロジェクタ１０１１に伸びるベクトルの正規化ベクトルをＬ、注目点８０１に対するステップＳ７０４で求めた法線の正規化ベクトルをＮ、反射補正係数をＩLとする（図８（ａ）を参照）。本実施例では、ランバートの反射モデルを応用し、以下の式（１２）を用いることでカメラ部１０２に入る光量Ｉpを求める。
【００８９】
【数１２】
0006422362.tif 000013
【００９０】
即ち、カメラ部１０２に入る光量Ｉpは、ベクトルＬと、ベクトルＮとの内積、及び、当該内積結果と、反射補正係数ＩLとの乗算により求めることができる。
【００９１】
反射補正係数ＩLは、ＲＧＢ各色の画素値がｎビット深度で表現されるとき、白色部の輝度値ｉMaxを用いて以下の式（１３）により計算することができる。
【００９２】
【数１３】
0006422362.tif 000014
【００９３】
このとき、プロジェクタ照射光量補正パラメータ５０３における各画素の補正パラメータＩinは、以下の式（１４）を用いて計算することができる。
【００９４】
【数１４】
0006422362.tif 000015
【００９５】
ここでｄは、プロジェクタ照射用補正係数である。プロジェクタ照射用補正係数ｄとは、ＨＤＤ２０４に保存されている定数であり、プロジェクタ１０１１から照射される光量と、カメラ部１０２の感度とを考慮して、カメラスキャナ１００の生産時に生成された定数である（プロジェクタ照射用補正係数ｄの生成方法は後述する）。式（１４）を見ると、補正パラメータＩinは、読取領域１１１において対象物の形状に依存して光量Ｉpが少なくなる部分は大きな値をとる一方、対象物の形状に依存して光量Ｉpが多くなる部分は小さな値をとることが分かる。
【００９６】
補正パラメータ生成部３０５は、以上の計算を各画素に対して繰り返し行い、各画素に対する補正パラメータＩinを求めることで、二次元配列であるプロジェクタ照射光量補正パラメータ５０３を生成し、生成したプロジェクタ照射光量補正パラメータ５０３をＲＡＭ２０２に保存する。
【００９７】
尚、本実施例は、反射モデルとしてランバートの反射モデルを例に挙げて説明したが、フォンの反射モデルなど他の反射モデルを用いたとしても本発明を実施できる。
【００９８】
以上が、補正パラメータＩinの計算に関する内容である。
【００９９】
＜プロジェクタ照射用補正係数ｄの生成処理＞
以下、上述の式（１４）におけるプロジェクタ照射光量補正係数ｄの生成方法について、図３（ｂ）、図９（ａ）、図１０（ａ）を用いて説明する。
【０１００】
プロジェクタ照射光量補正係数ｄの生成処理は、カメラスキャナ１００の制御用プログラムが持つモジュールである係数算出部によって実行される。図３（ｂ）は、生産ラインにおいてＣＰＵ２０１により実行される、カメラスキャナ１００の制御用プログラムのソフトウェア構成を示すブロック図である。ここで、係数算出部３０７は、カメラスキャナ１００の生産時のみ、制御用プログラムが有するモジュールである。従って、図３（ａ）及び図３（ｂ）から分かるように、上述の本実施例に係るスキャン処理（図４（ａ）を参照）を実行する際には、制御用プログラムは係数算出部３０７を有さない。
【０１０１】
コントローラ部１０１の設計時にこの係数ｄを算出しＨＤＤ２０４に予め保存しておくことで、上述のステップＳ７０５において、補正パラメータＩinを計算できるようになる。
【０１０２】
続いて、図９（ａ）を用いて、プロジェクタ照射光量補正係数ｄ生成時の原稿９００と、プロジェクタ１０１１と、カメラ部１０２との位置関係について説明する。プロジェクタ照射光量補正係数ｄ生成時に、注目点９０１からプロジェクタ１０１１に伸びるベクトルの正規化ベクトルＬと、法線の正規化ベクトルＮとのなす角度が４５度となるように、原稿９００と、プロジェクタ１０１１との位置関係を定める。また、注目点９０１からカメラ部１０２に伸びるベクトルの正規化ベクトルＶと、法線の正規化ベクトルＮとのなす角度が４５度となるように、原稿９００と、カメラ部１０２との位置関係を定める。さらに、本実施例では光の反射モデルとしてランバートの反射モデルを想定しているので、光を反射する原稿９００は、全面白色のマット（非光沢）素材のものを使用する。図９（ａ）に示す環境下で、プロジェクタ照射光量補正係数ｄは生成される。
【０１０３】
続いて、図１０（ａ）を用いて、プロジェクタ照射光量補正係数ｄの生成処理の流れについて説明する。
【０１０４】
ステップＳ１００１において、ディスプレイ制御部３０４は、ディスプレイコントローラ２０７を介してプロジェクタ１０１１を制御し、プロジェクタ１０１１に、初期画像情報に基づいて読取領域１１１上に光を照射させる。本ステップで用いる初期画像情報は、ステップＳ４０１で用いる初期画像情報５００と同一である。
【０１０５】
ステップＳ１００１でプロジェクタ１０１１が光を照射している間に実行されるステップＳ１００２において、カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御することでカメラ画像データを取得する。ここで取得したカメラ画像データは、ＲＡＭ２０２に保存される。
【０１０６】
ステップＳ１００３において、係数算出部３０７は、ステップＳ１００２で取得したカメラ画像データを用いてプロジェクタ照射光量補正係数ｄを算出する。以下、ステップＳ１００３におけるプロジェクタ照射光量補正係数ｄの算出方法を、詳細に説明する。
【０１０７】
プロジェクタ照射光量補正係数ｄを算出するためにまず、ステップＳ１００２で取得したカメラ画像データを用いて輝度値ｉMaxを計算する。輝度値ｉMaxは、上述の式（７）を用いて求めることができる。即ち、カメラ画像データの全画素を走査し、全画素の輝度値のうちの最大の輝度値を求めることによって、輝度値ｉMaxを求める。
【０１０８】
次いで、求めた輝度値ｉMaxから上述の式（１３）を用いて反射補正係数ＩLを計算する。
【０１０９】
次いで、計算した反射補正係数ＩL及び図９（ａ）の位置関係から上述の式（１２）を用いて光量Ｉpを計算する。
【０１１０】
次いで、初期画像情報から注目点９０１に対応する注目画素に対する輝度値を取得し、該取得した輝度値をＩinとして、上述の式（１４）を変形した次の式（１５）を用いて、プロジェクタ照射光量補正係数ｄを求める。
【０１１１】
【数１５】
0006422362.tif 000016
【０１１２】
ステップＳ１００３で算出されたプロジェクタ照射光量補正係数ｄは、ＨＤＤ２０４に保存されて、プロジェクタ照射光量補正係数ｄの生成処理は終了する。
【０１１３】
以上が、プロジェクタ照射用補正係数ｄの生成処理の内容である。
【０１１４】
＜プロジェクタ照射処理＞
以下、上述のプロジェクタ照射処理（図４（ａ）のステップＳ４０５）について、図１１を用いて詳細に説明する。
【０１１５】
ステップＳ１１０１において、ディスプレイ制御部３０４は、ステップＳ４０４でＲＡＭ２０２に保存されたプロジェクタ照射光量補正パラメータ５０３を読み込む。
【０１１６】
ステップＳ１１０２において、ディスプレイ制御部３０４は、照射領域内の部分領域をどの程度の明るさの光で照射するかを示す画素毎の輝度値から成るプロジェクタ照射用のラスタービットマップデータを作成してＲＡＭ２０２に保存する。具体的にはまず、ディスプレイ制御部３０４は、グレースケールの色空間であるプロジェクタ照射用のラスタービットマップデータを、輝度値が０の色（即ち黒色）で初期化する。次いで、ディスプレイ制御部３０４は、ステップＳ１１０１で読み込んだプロジェクタ照射光量補正パラメータ５０３に基づき、次の式（１６）を用いてプロジェクタ照射用のラスタービットマップデータを構成する各画素値を計算する。
【０１１７】
【数１６】
0006422362.tif 000017
【０１１８】
上述の通り、本実施例では、プロジェクタ照射光量補正パラメータ５０３における各画素に対する補正パラメータをＩinとしている。また、プロジェクタ照射光量補正パラメータ５０３を変換するために用いるプロジェクタの照射位置、画素数を考慮したアフィン変換関数をＡとする。
【０１１９】
ただし、プロジェクタ照射光量補正パラメータ５０３およびプロジェクタ照射用のラスタービットマップデータはともに離散空間であるから、本実施例では公知の線形補間法を用いてプロジェクタ照射用のラスタービットマップデータを求めるものとする。もちろん、線形補間法以外の方法、例えばバイキュービック法などの補間方法を用いても良い。
【０１２０】
ステップＳ１１０３において、ディスプレイ制御部３０４は、ステップＳ１１０２でＲＡＭ２０２に保存されたプロジェクタ照射用のラスタービットマップデータに基づいて、プロジェクタ１０１１に、読取領域１１１上に光を照射させる。この照射は、カメラ画像データ取得処理（図４（ａ）のステップＳ４０６）が完了するまで継続して実行される。
【０１２１】
＜本実施例による効果＞
上述したように、本実施例に係るカメラスキャナ１００は、読取領域１１１に置かれたスキャン対象物の３次元形状を測定し、スキャン対象物の表面の法線ベクトルを導出する。そして、カメラスキャナ１００は、当該導出した法線ベクトルに基づき、プロジェクタ１０１１から照射された光のうちカメラ部１０２に入る光の量を導出する。そして、カメラスキャナ１００は、導出したカメラ部１０２に入る光の量に基づき、プロジェクタ１０１１がスキャン対象物を照射する光の量を補正する。そして、カメラスキャナ１００は、当該補正した光量に基づく照射をプロジェクタ１０１１が実行している間に、スキャン対象物を撮像し、スキャン対象物の画像を取得する。
【０１２２】
本実施例により、スキャン対象物が立体的な形状を有することによって引き起こされる取得画像の画質低下（例えば、スキャン対象物の凹凸が原因の明暗差によって引き起こされる取得画像の画質低下）を防ぐことができる。
【０１２３】
図１２は、本実施例による効果の一例を示す図であり、書籍をスキャンした場合の、本実施例に係る補正前のスキャン画像、及び、本実施例に係る補正後のスキャン画像を示している。補正前のスキャン画像では、書籍の厚みに起因して左ページが暗くなっている一方、補正後のスキャン画像では、左右のページで明度差が無くなっており、本実施例によりスキャン画像の画質が改善していることが分かる。
【０１２４】
また、本実施例により、最終的な画像処理（図４（ａ）のステップＳ４０７）における追加の補正処理に頼ることなく、スキャン対象物の立体形状に起因する明暗差等を補正したスキャン画像を得ることができる。
【０１２５】
［実施例２］
実施例１では、プロジェクタ１０１１から照射される照射光以外の光、即ち環境光の光量が、照射光の光量と比較して十分に小さいことを前提としている。しかしながら、環境光が照射光と比較して無視できない明るさである場合には、以下の問題が生じる。
【０１２６】
このような場合に実施例１の手法を用いると、例えば読取領域１１１に置かれたスキャン対象物の凹凸に起因する明度差が存在するような取得画像を補正する際に、暗い部分（影部）の明るさが明るい部分（ハイライト部分）よりもさらに明るくなるように補正されてしまうという過補正の恐れがある。この過補正は、プロジェクタ１０１１から照射される照射光によるスキャン対象物の凹凸を起因とする明度差が、環境光の影響により小さくなり、プロジェクタ照射処理（図４（ａ）のステップＳ１００−５）において暗い部分（影部）に照射される光の量が過剰となるために起こる。
【０１２７】
本施例では、この過補正を防ぐことで、より高画質なスキャン画像を取得する。以下、本実施例について、実施例１との差異を中心に説明する。尚、以下の説明において、実施例１と共通する内容については、説明を簡易化又は省略する。
【０１２８】
＜カメラスキャナ１００によって実行されるスキャン処理＞
図４（ｂ）は、カメラスキャナ１００によって実行される本実施例に係るスキャン処理の流れを示すフローチャートである。本実施例に係るスキャン処理は、メイン制御部３０１による統括的な制御のもと、制御用プログラムのメイン制御部３０１以外のソフトウェアモジュールによる処理が順次実行されることで実現される。また、図５（ｂ）は、ＲＡＭ２０２に保存されるデータに着目して、本実施例に係るスキャン処理を説明するデータフロー図である。以下、図４（ｂ）及び図５（ｂ）を用いて、本実施例に係るスキャン処理を詳細に説明する。
【０１２９】
ステップＳ４１０において、カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御し、環境光で照射されたスキャン対象物を撮像することで、環境光によるカメラ画像データ５０６を取得する。取得した環境光によるカメラ画像データ５０６は、ＲＡＭ２０２に保存される。
【０１３０】
ステップＳ４１１〜Ｓ４１３は、実施例１と同様である（実施例１におけるステップＳ４０１〜Ｓ４０３に相当する）。
【０１３１】
ステップＳ４１４において、補正パラメータ生成部３０５は、ステップＳ４１０で取得した環境光によるカメラ画像データ５０６と、ステップＳ４１２で取得したカメラ画像データ５０１と、ステップＳ４１３で取得した距離画像情報５０２とに基づき、プロジェクタ照射光量補正パラメータ５０３を生成し、ＲＡＭ２０２に保存する。本ステップの詳細は後述する。
【０１３２】
ステップＳ４１５〜Ｓ４１７は、実施例１と同様である（実施例１におけるステップＳ４０５〜Ｓ４０７に相当する）。
【０１３３】
＜プロジェクタ照射光量補正パラメータ生成処理＞
以下、上述のプロジェクタ照射光量補正パラメータ生成処理（図４（ｂ）のステップＳ４１４）について、図７（ｂ）を用いて詳細に説明する。図７（ｂ）は、ステップＳ４１４におけるプロジェクタ照射光量補正パラメータ生成処理の流れを示すフローチャートである。
【０１３４】
ステップＳ７１１において、補正パラメータ生成部３０５は、ＲＡＭ２０２に保存された環境光によるカメラ画像データ５０６を読み取る。
【０１３５】
ステップＳ７１２において、補正パラメータ生成部３０５は、ステップＳ７１１で読み取った環境光によるカメラ画像データ５０６からカメラ部１０２に入射する環境光の光量ｉenvを求める。本実施例では、幅がwidthピクセル、高さがheightピクセルの環境光によるカメラ画像データ５０６の輝度値の配列Ｌcam_envをＬcam_env＝(Ｌenv_11，Ｌenv_12，Ｌenv_13・・・・・・Ｌenv_width height)と定義する。そして、以下の処理によって光量ｉenvを求める。
【０１３６】
【数１７】
0006422362.tif 000018
【０１３７】
ここで、Ａｖｇは与えられた輝度値の平均値を求める操作である。つまりステップＳ７１２では、与えられた環境光によるカメラ画像データ５０６の全画素を走査し、全画素の輝度値の平均を取ることによって、光量ｉenvを求める。
【０１３８】
ステップＳ７１３〜Ｓ７１６は、実施例１と同様である（実施例１におけるステップＳ７０１〜Ｓ７０４に相当する）。
【０１３９】
ステップＳ７１７において、補正パラメータ生成部３０５は、読取領域１１１上における物理的な位置と対応する画素毎の画素値から成るプロジェクタ照射光量補正パラメータ５０３を生成し、ＲＡＭ２０２に保存する。
【０１４０】
＜補正パラメータＩinの計算＞
上述のステップＳ７１７における処理について詳細に説明する。ステップＳ７１７ではまず、補正パラメータ生成部３０５は、読取領域１１１に対応する２次元配列であるプロジェクタ照射光量補正パラメータ５０３の配列要素を全てゼロにすることで、プロジェクタ照射光量補正パラメータ５０３を初期化する。次いで、補正パラメータ生成部３０５は、２次元配列であるプロジェクタ照射光量補正パラメータ５０３における各画素に対する補正パラメータＩinを計算する。
【０１４１】
本実施例では実施例１と同様に、注目点８０１からプロジェクタ１０１１に伸びるベクトルの正規化ベクトルをＬ、注目点８０１に対してステップＳ７１６で求めた法線の正規化ベクトルをＮ、反射補正係数をＩLとし、ランバートの反射モデルを応用して以下の式（１８）を用いることでカメラ部１０２に入る光の量Ｉpを求める（図８（ａ）を参照）。
【０１４２】
【数１８】
0006422362.tif 000019
【０１４３】
式（１８）から分かるように、カメラ部１０２に入る光量Ｉpは、上述の式（１２）の右辺に対して環境光の光量ｉenvを加算することで求めることができる。
【０１４４】
反射補正係数ＩLは、ＲＧＢ各色の画素値がｎビット深度で表現されるとき、白色部の輝度値ｉMaxを用いて以下の式（１９）により計算することができる。
【０１４５】
【数１９】
0006422362.tif 000020
【０１４６】
プロジェクタ照射光量補正パラメータ５０３における各画素の補正パラメータＩinは、実施例１と同様、以下の式（２０）を用いて計算することができる。
【０１４７】
【数２０】
0006422362.tif 000021
【０１４８】
ここでｄは、実施例１と同様にプロジェクタ照射用補正係数であり、ＨＤＤ２０４に予め保存されている定数である。尚、プロジェクタ照射用補正係数ｄは、実施例１と同様、式（１５）を用いて求めることができる。
【０１４９】
補正パラメータ生成部３０５は、以上の計算を各画素に対して繰り返し行い、各画素に対する補正パラメータＩinを求めることで、二次元配列であるプロジェクタ照射光量補正パラメータ５０３を生成し、ＲＡＭ２０２に保存する。
【０１５０】
＜本実施例による効果＞
本実施例により、環境光がプロジェクタから照射される光と比較して無視できない明るさである場合に起こり得る過補正を防ぐことで、高画質なスキャン画像データを得ることができる。
【０１５１】
［実施例３］
実施例１及び実施例２では、スキャン対象物である原稿の表面において照射光が拡散反射することを前提とすることから、光の反射モデルとしてランバートの反射モデルを使用した。しかし、マット（非光沢）な紙でさえ照射光が完全に拡散反射をするわけではなく、スキャン対象物によっては補正に誤差が生じかねない。実際に、光沢感を持ち、強い鏡面反射特性を持つ紙種も知られている。
【０１５２】
スキャン対象物の表面において照射光が完全に拡散反射しない場合（例えば、スキャン対象物が鏡面反射特性を持つ用紙である場合）、カメラ部１０２の位置に依存して、スキャン対象物の表面で反射されてカメラ部１０２に入射する光の強度が変化する。従って、鏡面反射特性に応じた反射光強度が強ければ強いほど、拡散反射を前提とした実施例１及び実施例２における補正の誤差が大きくなる。よって、スキャン対象物である原稿の紙種によっては、カメラ部１０２の位置を考慮した補正を行うことが望ましい。
【０１５３】
上述の内容を鑑み、本実施例では、スキャン対象物の鏡面反射特性も考慮してカメラ部１０２に入る光量Ｉpを算出し、当該算出した光量Ｉpに基づいて補正パラメータＩinを計算する。
【０１５４】
以下、本実施例について、上述の実施例との差異を中心に説明する。尚、以下の説明において、上述の実施例と共通する内容については説明を簡易化又は省略する。
【０１５５】
＜補正パラメータＩinの計算＞
以下、図８（ｂ）を用いて補正パラメータＩinの計算方法について説明する。本実施例では、補正パラメータＩinを求めるにあたって、次のようにベクトル及び係数を定義する。即ち、原稿８００上の注目点８０１からプロジェクタ１０１１に伸びるベクトルの正規化ベクトルをＬ、注目点８０１からカメラ部１０２に伸びるベクトルの正規化ベクトルをＶ、注目点８０１に対する法線の正規化ベクトルをＮ、注目点８０１においてプロジェクタ１０１１から入射した光が正反射する方向の正規化ベクトルをＲとする（図８（ｂ）を参照）。このとき、ベクトルＲは、以下の式（２１）を用いて計算することができる。
【０１５６】
【数２１】
0006422362.tif 000022
【０１５７】
本実施例では、フォンの反射モデルを応用し、以下の式（２２）を用いることでカメラ部１０２に入る光量Ｉpを求める。
【０１５８】
【数２２】
0006422362.tif 000023
【０１５９】
ここでｋd，ｋsは反射補正係数であり、αは鏡面反射係数である。これらの係数は、カメラスキャナ１００の生産時に係数算出部３０７により生成される（これらの係数の生成方法は後述する）。
【０１６０】
プロジェクタ照射光量補正パラメータ５０３における各画素の補正パラメータＩinは、上述の実施例と同様、以下の式（２３）を用いて計算することができる。
【０１６１】
【数２３】
0006422362.tif 000024
【０１６２】
ここでｄは、上述の実施例と同様、プロジェクタ照射用補正係数である。
【０１６３】
＜反射補正係数ｋdの生成処理＞
以下、上述の式（２２）における反射補正係数ｋdの生成処理について説明する。
【０１６４】
最初に、図９（ｂ）を用いて、反射補正係数ｋd生成時の原稿９００と、プロジェクタ１０１１と、カメラ部１０２との位置関係について説明する。反射補正係数ｋdを生成するにあたり、原稿９００上の注目点９０１からプロジェクタ１０１１に伸びるベクトルの正規化ベクトルＬと、法線の正規化ベクトルＮとのなす角度が４５度となるように、原稿９００と、プロジェクタ１０１１との位置関係を定める。また、ベクトルＬと、注目点９０１からカメラ部１０２に伸びるベクトルの正規化ベクトルＶとが等しくなるように、原稿９００と、カメラ部１０２との位置関係を定める。このように原稿９００、プロジェクタ１０１１、カメラ部１０２の位置関係を定めると、ベクトルＶと、鏡面反射方向の正規化ベクトルＲとのなす角度は９０度となる。さらに、本実施例では光の反射モデルとしてフォンの反射モデルを想定しているので、光を反射する原稿９００は、全面白色の光沢素材のものを使用する。
【０１６５】
図９（ｂ）に示す環境下で反射補正係数ｋdは、生成される。続いて、図１０（ｂ）を用いて、反射補正係数ｋdの生成処理の流れについて説明する。
【０１６６】
ステップＳ１０１１において、ディスプレイ制御部３０４は、ディスプレイコントローラ２０７を介してプロジェクタ１０１１を制御し、プロジェクタ１０１１に、初期画像情報に基づいて読取領域１１１上に光を照射させる。本ステップで用いる初期画像情報は、ステップＳ４０１で用いる初期画像情報５００と同一である。
【０１６７】
ステップＳ１０１１でプロジェクタ１０１１が光を照射している間に実行されるステップＳ１０１２において、カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御することでカメラ画像データを取得する。取得したカメラ画像データは、ＲＡＭ２０２に保存される。
【０１６８】
ステップＳ１０１３において、係数算出部３０７は、ステップＳ１０１２で取得したカメラ画像データを用いて反射補正係数ｋdを算出する。以下、ステップＳ１０１３における反射補正係数ｋdの算出方法を、詳細に説明する。
【０１６９】
反射補正係数ｋdを算出するために、上述の式（２２）を変形した式を用いる。図９（ｂ）に示す環境では、ベクトルＲと、ベクトルＶとのなす角度は９０度でありＲ・Ｖ＝０となる。従って、式（２２）は、以下の式（２４）のように表すことができる。
【０１７０】
【数２４】
0006422362.tif 000025
【０１７１】
また、図９（ｂ）に示す環境では、ベクトルＬと、ベクトルＮとのなす角度は４５度であるから、式（２４）は、以下の式（２５）のように表すことができる。
【０１７２】
【数２５】
0006422362.tif 000026
【０１７３】
従って、反射補正係数ｋdは、以下の式（２６）を用いて算出することができる。
【０１７４】
【数２６】
0006422362.tif 000027
【０１７５】
このように反射補正係数ｋdは、カメラ部１０２に入る光量Ｉpから算出することができる。
【０１７６】
以上が、反射補正係数ｋdの生成処理の内容である。
【０１７７】
＜反射補正係数ｋsの生成処理＞
以下、上述の式（２２）における反射補正係数ｋsの生成処理について説明する。
【０１７８】
最初に、図９（ａ）を用いて、反射補正係数ｋs生成時の原稿９００と、プロジェクタ１０１１と、カメラ部１０２との位置関係について説明する。反射補正係数ｋsを生成するにあたり、原稿９００上の注目点９０１からプロジェクタ１０１１に伸びるベクトルの正規化ベクトルＬと、法線の正規化ベクトルＮとのなす角度が４５度となるように、原稿９００と、プロジェクタ１０１１との位置関係を定める。また、ベクトルＮと、注目点９０１からカメラ部１０２に伸びるベクトルの正規化ベクトルＶとのなす角度が４５度となるように、原稿９００と、カメラ部１０２との位置関係を定める。このとき、ベクトルＬと、鏡面反射方向の正規化ベクトルＲとのなす角度が９０度となるようにする。さらに、本実施例では光の反射モデルとしてフォンの反射モデルを想定しているので、光を反射する原稿９００は、全面白色の光沢素材のものを使用する。
【０１７９】
図９（ａ）に示す環境下で反射補正係数ｋsは、生成される。続いて、図１０（ｃ）を用いて、反射補正係数ｋsの生成処理の流れについて説明する。
【０１８０】
ステップＳ１０２１において、ディスプレイ制御部３０４は、ディスプレイコントローラ２０７を介してプロジェクタ１０１１を制御し、プロジェクタ１０１１に、初期画像情報に基づいて読取領域１１１上に光を照射させる。本ステップで用いる初期画像情報は、ステップＳ４０１で用いる初期画像情報５００と同一である。
【０１８１】
ステップＳ１０２１でプロジェクタ１０１１が光を照射している間に実行されるステップＳ１０２２において、カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御することでカメラ画像データを取得する。取得したカメラ画像データは、ＲＡＭ２０２に保存される。
【０１８２】
ステップＳ１０２３において、係数算出部３０７は、ステップＳ１０２２で取得したカメラ画像データを用いて反射補正係数ｋdを算出する。以下、ステップＳ１０２３における反射補正係数ｋsの算出方法を、詳細に説明する。
【０１８３】
反射補正係数ｋsを算出するために、上述の式（２２）を変形した式を用いる。図９（ａ）に示す環境では、ベクトルＲと、ベクトルＶとのなす角度は０度でありＲ・Ｖ＝１となる。従って、式（２２）は、以下の式（２７）のように表すことができる。
【０１８４】
【数２７】
0006422362.tif 000028
【０１８５】
また、図９（ａ）に示す環境では、ベクトルＬと、ベクトルＮとのなす角度は４５度であるから、式（２７）は、以下の式（２８）のように表すことができる。
【０１８６】
【数２８】
0006422362.tif 000029
【０１８７】
従って、反射補正係数ｋsは、以下の式（２９）を用いて算出することができる。
【０１８８】
【数２９】
0006422362.tif 000030
【０１８９】
このように反射補正係数ｋsは、カメラ部１０２に入る光量Ｉp及び反射補正係数ｋdから算出することができる。
【０１９０】
以上が、反射補正係数ｋsの生成処理の内容である。
【０１９１】
＜鏡面反射係数αの生成処理＞
以下、上述の式（２２）における鏡面反射係数αの生成処理について説明する。
【０１９２】
最初に、図９（ｃ）を用いて、鏡面反射係数α生成時の原稿９００と、プロジェクタ１０１１と、カメラ部１０２との位置関係について説明する。鏡面反射係数αを生成するにあたり、原稿９００上の注目点９０１からプロジェクタ１０１１に伸びるベクトルの正規化ベクトルＬと、法線の正規化ベクトルＮとのなす角度が７５度となるように、原稿９００と、プロジェクタ１０１１との位置関係を定める。また、ベクトルＮと、注目点９０１からカメラ部１０２に伸びるベクトルの正規化ベクトルＶとのなす角度が４５度となるように、原稿９００と、カメラ部１０２との位置関係を定める。このとき、ベクトルＶと、鏡面反射方向の正規化ベクトルＲとのなす角度が３０度となるように、原稿９００と、プロジェクタ１０１１と、カメラ部１０２との位置関係を定める。さらに、本実施例では光の反射モデルとしてフォンの反射モデルを想定しているので、光を反射する原稿９００は、全面白色の光沢素材のものを使用する。
【０１９３】
図９（ｃ）に示す環境下で鏡面反射係数αは、生成される。続いて、図１０（ｄ）を用いて、鏡面反射係数αの生成処理の流れについて説明する。
【０１９４】
ステップＳ１０３１において、ディスプレイ制御部３０４は、ディスプレイコントローラ２０７を介してプロジェクタ１０１１を制御し、プロジェクタ１０１１に、初期画像情報に基づいて読取領域１１１上に光を照射させる。本ステップで用いる初期画像情報は、ステップＳ４０１で用いる初期画像情報５００と同一である。
【０１９５】
ステップＳ１０３１でプロジェクタ１０１１が光を照射している間に実行されるステップＳ１０３２において、カメラ制御部３０３は、カメラＩ／Ｆ２０６を介してカメラ部１０２を制御することでカメラ画像データを取得する。取得したカメラ画像データは、ＲＡＭ２０２に保存される。
【０１９６】
ステップＳ１０３３において、係数算出部３０７は、ステップＳ１０３２で取得したカメラ画像データを用いて鏡面反射係数αを算出する。以下、ステップＳ１０３３における鏡面反射係数αの算出方法を、詳細に説明する。
【０１９７】
鏡面反射係数αを算出するために、上述の式（２２）を変形した式を用いる。図９（ｃ）に示す環境では、ベクトルＲと、ベクトルＶとのなす角度は３０度であるから、式（２２）は、以下の式（３０）のように表すことができる。
【０１９８】
【数３０】
0006422362.tif 000031
【０１９９】
また、図９（ｃ）に示す環境では、ベクトルＬと、ベクトルＮとのなす角度は７５度であるから、式（３０）は、以下の式（３１）のように表すことができる。
【０２００】
【数３１】
0006422362.tif 000032
【０２０１】
従って、鏡面反射係数αは、以下の式（３２）を用いて算出することができる。
【０２０２】
【数３２】
0006422362.tif 000033
【０２０３】
このように鏡面反射係数αは、カメラ部１０２に入る光量Ｉp及び反射補正係数ｋd，ｋsから算出することができる。
【０２０４】
以上が、鏡面反射係数αの生成処理の内容である。
【０２０５】
上記の処理により算出した係数ｋd，ｋs，αをＨＤＤ２０４に予め保存しておくことで、プロジェクタ照射光量補正パラメータ５０３における各画素に対する補正パラメータＩinを計算できるようになる。
【０２０６】
＜本実施例の効果＞
本実施例により、スキャン対象物が強い鏡面反射特性を持つ場合であっても、高画質なスキャン画像データを得ることができる。
【０２０７】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0006422362.tif 000036
【図２】
0006422362.tif 000037
【図３】
0006422362.tif 000038
【図４】
0006422362.tif 000039
【図５】
0006422362.tif 000040
【図６】
0006422362.tif 000041
【図７】
0006422362.tif 000042
【図８】
0006422362.tif 000043
【図９】
0006422362.tif 000044
【図１０】
0006422362.tif 000045
【図１１】
0006422362.tif 000046
【図１２】
0006422362.tif 000047