本発明は、撮像位置を変えながら被写体を複数回に分けて撮像し、各撮像位置で得られた複数の画像を合成(タイリング又はつなぎ合わせともいう)することによって、被写体全体のデジタル画像を生成するための技術に関する。以下、本発明の具体的な適用例として、光学顕微鏡により拡大した被写体像を分割撮像し、高解像度かつ大サイズのデジタル静止画を合成出力する撮像装置について説明する。このような撮像装置は、例えば、細胞や組織の病理検査などに利用される。
<第1実施形態>
(撮像装置の構成)
図1(a)、(b)は本発明の第1実施形態に係る撮像装置のハードウェア構成を模式的に示している。
図1(a)に示すように、撮像装置は、概略、処理装置100、移動ユニット104、照明ユニット105、撮像ユニット106を備えている。移動ユニット104は、例えば、被写体(被検査物)を固定したプレパラート112を保持するステージと、ステージの位置を移動させるアクチュエータと、アクチュエータを駆動する制御回路などから構成される。照明ユニット(照明手段)105は、照明光を発する光源部105aと、照明光をプレパラート112上の被写体に導く照明光学系105bから構成される。光源部105aとしては、例えば、LED(発光ダイオード)、LD(レーザーダイオード)などを用いることができる。撮像ユニット106は、CCDやCMOSなどのイメージセンサ(撮像素子)からなる撮像部(撮像手段)106aと、被写体の透過光を拡大し撮像部106
aに導く撮像光学系106bから構成される。
カラー画像の撮像方法として、一般的なデジタルスチルカメラでは、RGB各色の画素を混在して配置したセンサによって撮像を行い、周囲の画素の出力を補間することによって、各画素のRGB値を得る「単板式」と呼ばれる方法が利用される。しかし、単板式は、補間処理による画質の低下が避けられないため、微細な構造観察を目的とする顕微鏡のように解像力(分解能)が重視される装置には適さない。したがって、色毎に別々に撮像を行うことが好ましい。一方、撮像を色毎に行う方法として、RGB各色のセンサを用いる「3板式」と呼ばれる方法がある。しかし、高解像度の撮像が必要となる顕微鏡の場合、センサには高価な高解像度タイプを用いるか、或いは複数のセンサを使用して画素数を増やす必要があるため、3板式のような構成ではコストアップとなってしまう。そこで、本実施形態の撮像装置では、1つのセンサにより時間的に異なるタイミングで(つまり時系列に)色毎の撮像を行う。この方法は、撮像時間が3倍になるという不利はあるものの、高解像度かつ高画質の静止画を低コストで撮像できるという点で非常に実用性に優れる。
図1(b)には、処理装置100の内部構成が示されている。図中、101は撮像装置の動作制御を行うCPU(中央演算処理装置)である。102はCPU101を動作させるためのプログラムコードを格納するためのROMである。103はCPU101がワークメモリとして使用するRAMである。
107は画像処理ユニットであり、撮像ユニット106により生成された画像情報に対して、面順次点順次変換や画像合成処理等の各種画像処理を施す、専用の処理ユニットである。面順次点順次変換は、撮像ユニット106において色毎に得られたRAW画像に対して、画素単位でカラーデータ(RGB値)をまとめるための処理であり、現像処理の役割がある。点順次のデータに変換する理由は、後段の画像処理の利便を高めるためである。例えば、1画素のカラーデータが連続していると、画素単位の画像処理や、周辺画素を参照する画像処理を行う場合などに、メモリへのデータアクセスが高速になる効果がある。更に、画像を領域分割する際に、画素の単位でデータがまとまっていた方が領域の管理がしやすいなどの利点がある。
画像合成処理は、撮像位置を変えて撮像された複数の画像をつなぎ合せる処理である。移動ユニット104による移動誤差、レンズの収差、センサ上の素子のばらつきなどの様々な原因により、画像間の境界が不連続になることは避けられない。そこで、本実施形態では、隣接する画像同士が少しずつ重複するように撮像を行い、その重複領域内で位置合わせ、変形、画素値の調整などを行うことで、画像同士のつなぎ目を滑らかにする。画像合成処理は、従来公知の方法も含め、どのような方法を用いてもよい。
109は画像バッファ用RAMであり、現像処理待ちの画像データが一時的に格納される色別バッファや、合成処理待ちの画像データが一時的に格納される合成バッファとして利用されるメモリである。108はI/F部であり、コンピュータなどの他の機器113との間で通信を行うためのものである。なお、図1(b)における画像バッファ用RAM109以外の各部は動作制御信号を送受信するための制御用バス110を介して接続され、CPU101による制御に基づいて動作する。また、画像データは画像バッファ用RAM109に格納され、画像データを送受信するためのデータ用バス111を介して各部からアクセスされる。
なお、本装置の動作制御はCPU101が行うものとして説明したが、本発明はこれに限るものではない。例えば一部もしくは全てのタイミング制御をハードウェア化しても良い。また、画像処理は画像処理ユニット107で行うものとして説明したが、画像処理の
一部或いは全部をCPU101で実行するようにしても良い。また、図1(b)においては制御用バス110とデータ用バス111を異なるものとして記載しているが、同一のバスを使用するようにしても良い。また、図1(a)では、撮像位置を変えるために、移動ユニット104が被写体(プレパラート112)のみを移動させているが、撮像部のみ、或いは、被写体と撮像部の両方を移動させても良い。図1(a)、(b)は本発明の撮像装置の構成を限定するものではなく、本発明の手段を実行可能な構成であれば、他の構成でも構わない。
(撮像装置の機能構成)
図2は第1実施形態の撮像装置の主な機能構成を模式的に示すブロック図である。
201は、動作指示の入力を受け付けるための動作指示入力端子である。動作指示は、撮像装置本体に取り付けられた不図示の操作パネルを用いて入力されても良いし、PC端末などの外部機器113から入力されても良い。202は、撮像位置切替部であり、被写体の撮像位置を移動させ、異なる位置における撮像が行えるようにするためのものである。撮像位置切替部202は、図1のCPU101と移動ユニット104により実現される機能である。
203は光源部であり、複数の色の光を切り替えて照射させることが可能である。光源部203から発せされる光としては、例えば被写体をカラーで撮像する場合には、R、G、Bの3種類の光が用いられる。白色光源とR、G、Bのカラーフィルタの組み合わせにより、R、G、Bの3種類の光を生成する構成でもよいし、R色光源、G色光源、B色光源の3種類の光源を用いる構成でもよい。204は撮像部であり、CCDやCMOSなどのセンサを用いて被写体を撮像し、画像情報を取得する。なお、光源部203、撮像部204は、それぞれ図1の光源部105a、撮像部106aに対応する。
205は撮像制御部(制御手段)であり、撮像位置切替部202による撮像位置の移動、光源部203の色の切り替えや照射タイミング、撮像部204の撮像開始タイミングなどを制御する。210は処理状況把握部であり、後述する画像合成部208における合成処理の状況を監視し、撮像制御部205に通知する。撮像制御部205及び処理状況把握部210は、図1のCPU101により実現される機能である。
206は現像処理部であり、撮像部204により撮像された色毎の画像情報(RAW画像)に対して、前述した現像処理(面順次点順次変換など)を施すことにより、カラー画像を生成する。207は色別バッファであり、撮像部204から得られる色毎の画像情報を(現像処理が終了するまで)一時的に保持するためのメモリである。上述のように、撮像は色毎に異なるタイミングで行われる。例えば、撮像をR、G、Bの順で行う場合、色別バッファ207には最後に撮像される色以外の色(ここではRとG)の画像を保持する。そして、現像処理部206は、撮像部204から最後の色(ここではB)の画像情報を受け取ると、色別バッファ207には格納せずに、順次他の色(ここではRとG)の画像情報を用いて現像処理を行い、画像合成部208に出力する。このような構成にすることにより、1色分の画像データをバッファに蓄積する時間を省略することができ、全3色のデータをバッファに蓄積する場合に比べ、処理時間を短縮することが可能となる。更に、この構成では1色分の画像バッファが不要となるため、コスト削減を行うことが可能となる。本実施形態の撮像装置で取り扱う高解像度画像はデータ量が大きいため、1色分の画像バッファの削減は効果が大きい。
208は画像合成部であり、撮像位置切替部202により移動して撮像を行った結果得られた複数の位置における画像情報に対して、合成処理を施す。209は合成バッファであり、現像処理部206から出力された画像情報のうち、画像合成部208において合成処理が施される合成領域の画像情報を(合成処理が終了するまで)一時的に保持するメモ
リである。
211は画像圧縮部であり、画像合成部208から出力された画像情報を圧縮する機能である。画像圧縮部211で圧縮された画像情報は、I/F部212により出力端子213を介して外部機器に送信される。なお、画像圧縮部211による圧縮処理を行うか否かを選択できるようにしても良い。また、画像情報を圧縮する必要がなければ、画像圧縮部211の機能を無くしても良い。
図2の現像処理部206、画像合成部208、画像圧縮部211は、図1の画像処理ユニット107により実現される機能であり、色別バッファ207と合成バッファ209は、画像バッファ用RAM109により実現される機能である。また、I/F部212は、図1のI/F部108に対応している。
(動作フロー)
図3は第1実施形態における撮像装置の動作フローを示すフローチャートである。
処理が開始されると、S301において撮像制御部205が装置の動作条件などの初期化を行う。初期化として実行される内容は、例えば、光源部203で使用する光源色や、色を切り替える順番、撮像位置切替部202における初期位置や移動量、或いは移動の順番、更には、撮像部204において行われる撮像時の解像度などが挙げられる。また、光量の調整や、センサゲイン調整などの調整を行うようにしても良い。
続いてS302において、撮像位置切替部202が撮像位置を今回の撮像位置に移動させる。S303では、撮像制御部205が今回の撮像で使用する光源色を光源部203に設定し、続いてS304において光源部203の動作を開始させて被写体に光を照射させる。
S305においては、撮像制御部205は、今回の撮像がS301で設定された色を切り替える順番の中で、最後に設定される光源色に対する撮像であるか否かの判定を行う。S305において最後の色の撮像ではないと判定された場合、S306において撮像部204による撮像が実行される。次にS307に進み、撮像された画像情報の色別バッファ207への保存が行われる。S307における画像情報の保存が終了すると、処理はS303に戻り、次の撮像のために光源色の設定が行われる。
一方、S305において今回の撮像が最後の色の撮像であると判定されると、処理はS308に移行する。S308では、処理状況把握部210が、前回の撮像位置において撮像された画像情報に対する合成処理が終了しているか否かを判定する。なお、合成処理は2回目の撮像が終わるまでは開始されないため、1回目及び2回目の撮像時には、S308において合成処理は終了しているという判定結果を返すか、S308の処理をスキップすると良い。
ここで、処理状況把握部210は、画像合成部208における合成処理の演算が終了し、かつ、合成バッファ209の書き込みが可能になったことを、合成処理の終了ととらえるとよい。「合成バッファ209の書き込みが可能」とは、合成処理待ちの画像情報を上書きすることなく、新たに撮像した画像情報を合成バッファ209に格納することができることを意味する。合成処理の演算終了に伴い、合成処理済みの画像情報が保持されていたバッファ領域が空き状態(上書き可能状態)となり、新たに撮像した画像情報をそのバッファ領域に格納することが可能となる。なお、合成処理の演算終了と、合成バッファ209の書き込み許可のタイミングは実質的に同じであるため、処理状況把握部210は、画像合成部208の演算の進行状況と合成バッファ209の書き込み可否のいずれか一方
を監視するだけでもよい。
S308において合成処理が終了していないと判定されると、撮像制御部205は、S309において前回の合成処理が終了するまで処理を待った後に、S310に移行する。一方、S308において合成処理が終了していると判定された場合、S309における待ちを行うことなく、S310に処理を移行する。S310では、撮像部204が現在の撮像位置における最後の色の撮像を開始する。
そしてS311では、撮像部204から最後の色の画素データが逐次入力されると、現像処理部205は対応する位置における他の色の画素データを色別バッファ207から読み込んで、点順次画像を生成して出力する。必要であれば、現像処理部205は色変換などの画像処理も行う。次にS312では、画像合成部208が画像保存と出力を行う。詳しくは、画像合成部208は、入力される画像情報を複数の領域に分割し、画像合成に必要となる領域(合成領域)のデータは合成バッファ209に保存し、画像合成に必要でない領域(非合成領域)のデータは合成バッファ209に保存せずに出力する。
S313において、画像合成部208は、合成バッファ209のデータ蓄積状況を確認し、合成処理に必要なデータが揃っている合成領域が存在するか否かを判定する。S313において合成処理に必要なデータが揃っている合成領域が存在すると判定された場合には、画像合成部208は、S314において当該合成領域に対する合成処理の実行を開始する。合成処理が施された画像情報は順次画像圧縮部211に出力される。一方、S313において合成処理に必要なデータが揃っている合成領域が存在しないと判定された場合には、処理をS315に移行させる。2回目の撮像以降は、通常、S313でNO判定になることはなく、現像処理に引き続いて合成処理が行われることになる。
S315では、撮像制御部205が現在の撮像位置が最後の撮像位置であるか否かの判定を行う。S315において最後の撮像位置ではないと判定された場合には、処理はS302に戻り、撮像位置切替部202が次の撮像位置への移動を行った後、上述の動作が繰り返される。一方、S315において最後の撮像位置ではないと判定された場合にはS316に移行し、実行中の合成処理が終了するのを待って、動作を終了させる。
なお、光源部203から照射される光は白色など1種類のみであっても良く、この場合には、S305における最後の色の撮像であるか否かの判定はパスし、常に最後の色であるものとして以降の処理を実行する。またこの場合、S303における色の設定は不要である。
(動作タイミング)
次に図4を用いて、本実施形態における各部の動作タイミングを説明する。なお、図4では、光源から照射される光の色は3色である例を用いて説明する。
図4中、401は撮像位置切替部202の動作状態を示している。402は撮像部204が第1色において撮像を行う際の動作状態を示している。403は撮像部204が第2色において撮像を行う際の動作状態を示している。404は撮像部204が第3色、つまり最終色において撮像を行う際の動作状態を示している。なお、図3におけるステップS311で説明したように、最終色が入力された時点で面順次点順次変換が行われ、画像合成部208へ画像情報が入力される。405は画像合成部208における合成処理の動作状態を示している。
406〜408は、合成処理が終了している状態(つまり405がオフの状態)における撮像開始タイミングを示している。例えば、1回目と2回目の撮像や、合成処理が最終
色の撮像よりも早く終了した場合には、406〜408のようなタイミングで各色の撮像が行われる。タイミング406は撮像位置切替部202の動作が終了した後のタイミングであり、撮像制御部205はタイミング406に基づいて第1色の撮像を開始する。タイミング407は第1色の撮像が終了したタイミングであり、撮像制御部205はタイミング407に基づいて光源の色の切り替え、及び第2色の撮像を開始する。タイミング408は第2色の撮像が終了したタイミングであり、合成処理が終了していることから、撮像制御部205はタイミング408に基づいて光源の色の切り替え、及び最終色の撮像を開始する。
合成処理に必要な画像情報が合成バッファ209に蓄積されるタイミング409において合成処理が開始される。一方、合成処理の終了状態とは無関係に、最終色の撮像が終了するタイミング410に基づいて、次の撮像位置への移動が開始される。そして上述と同様に、撮像位置の移動が終了したタイミング411に基づいて第1色の撮像が開始され、続いて、第1色の撮像が終了したタイミング412に基づいて第2色の撮像が開始される。ここで、第2色の撮像が終了したタイミング413においては、合成処理が実行中である。そのため、撮像制御部205は合成処理が終了するのを待ち(図3のS309参照)、合成処理が終了したタイミング414に基づいて最終色の撮像を開始する(図3のS310参照)。
タイミング414のように合成処理が終了したタイミングで最終色の撮像開始を制御することにより、合成バッファ209中の合成処理待ちデータの上書きが発生することを防止できる。また、合成処理が済んだデータ(例えば、前々回の撮像で得られたデータ)が格納されていたバッファ領域を今回の撮像で得られたデータの格納に利用することで、合成バッファ209の効率的な使用が可能となり、必要なバッファ容量を減らす効果がある。
なお、合成処理待ちデータの上書きを防止する目的は、例えば撮像位置の移動(401)又は最終色の撮像(404)の時間間隔を合成処理の時間長さよりも十分大きく設定することでも達成できる。しかしその場合は、無駄な待ち時間が発生する可能性がある。特に合成処理の時間長さが画像によって変化する場合には、最大の時間長さに合わせて他の動作タイミングを決定せざるを得ないため、無駄な待ち時間が多くなる。これに対して、本実施形態の方法によれば、待ち時間を可及的に少なくでき、測定時間(図3のフローの総処理時間)の短縮を図ることができるという効果もある。加えて、本実施形態では、最終色以外の色(第1色と第2色)については、合成処理の終了を待たずに(合成処理の処理状況とは無関係に)先行してRAW画像の撮像を開始している。これにより、合成処理の終了後ただちに最終色のRAW画像の撮像を開始できるようになるため、この点も総処理時間の短縮に寄与している。
なお、図4においては、各動作は時間的な隙間無く実行されるようになっているが、本発明はこれに限るものではない。例えば、動作開始可能なタイミングから実際に次の動作が開始されるまでの間に、動作切り替えのための時間が挿入されることなどがあってもよい。
(合成領域と非合成領域)
次に、図5を用いて撮像位置の移動と合成領域の例を説明する。図5(a)は撮像領域全体と、各撮像位置を示している。図5(a)は、撮像領域全体が4つの小領域501、502、503、504に分割され、撮像位置の移動は501、502、503、504の順に行われる例を示している。図5(b)〜図5(e)は、それぞれ、撮像位置501〜504に対応する撮像領域の詳細を示している。
撮像位置501に対応する撮像領域は、図5(b)に示すように、他の撮像領域とオーバーラップしない領域Aと、他の撮像領域とオーバーラップしている領域E、F、Iから構成されている。領域E、F、Iは、画像合成部208において隣接している他の撮像領域との間で合成処理が行われる合成領域(合成処理対象領域とも呼ぶ)である。一方で、領域Aは合成処理が行われずに出力される非合成領域(合成処理非対象領域とも呼ぶ)である。同様に、図5(c)〜図5(e)において、領域E、F、G、H、Iは合成領域であり、領域B、C、Dは非合成領域である。図5(f)は撮像領域全体の中における領域A、B、C、D、E、F、G、H、Iの位置関係を示している。合成領域E、F、G、H、Iは合成バッファ209に保存され、画像合成部208において合成処理が施される。一方、非合成領域A、B、C、Dは画像合成部208に入力されると、合成領域と分離され、そのまま出力される。
ここで、上述のように図5(a)に示す順番で撮像が行われた場合、図5(b)及び図5(c)の領域が撮像されると領域Eの合成処理が実行される。合成処理の終了後、領域Eのデータは不要となる。そのため、領域Eで使用した合成バッファを、図5(d)及び図5(e)の領域Hのデータを保持するためのバッファとして使いまわすことが可能となる。このように合成処理が終了した領域で使用していたバッファを次の合成処理に使いまわすことにより、全ての撮像位置における合成領域用のバッファを別々に確保する場合に比べ、必要なバッファ量を削減することが可能となる。特に高解像度撮像が行われる場合には使用するバッファ量が大きくなるため、使い回しによるバッファ削減はメモリ削減効果が大きく、コスト削減に大きく寄与する。例えば、図5(f)の例では、合成領域として特に大きいのは領域E、F、G、Hの4箇所であるが、このうち領域Hのバッファを削減することが可能となる。そのため、領域Iが他の領域に比べ十分小さい場合であれば、バッファとして必要なメモリ量を約3/4にすることが可能となる。
なお、本実施形態では、処理時間が可変、若しくは予め予測できない画像合成方法が好ましく適用可能である。パターンマッチングによる位置合わせはその一例である。例えば、合成する画像が2枚の矩形画像である場合、片方の画像の頂点から特定量だけ内側の位置にある所定範囲の部分画像を切り出して基準画像とし、基準画像が他方の画像中のどの位置にあるかを検出する。検出にあたっては、他方の画像中で位置をずらしながら基準画像との差分演算を行い、差分が最も小さい位置が該当する位置であると判断する。上記位置検出を複数の位置から切り出した基準画像に対して行い、得られた位置関係から回転や平行移動の量を特定する。そして、2枚の画像に対して回転や平行移動の補正を行った後に、重み付け加算平均をとり合成画像を得る。なお、この方法は本発明に適用可能な画像合成方法の一例であり、本発明はこれに限定されるものではない。
本実施形態においては、画像合成部208が同時に処理できる合成領域の数については言及してこなかった。例えば図5(a)において最後の小領域504が撮像される際には、図5(e)に示されるように領域D、G、H、Iが撮像される。このとき、3つの合成領域G、H、Iの画像情報が時間的に近いタイミングで揃うことになる。そのため、高速に処理を実行するためには、画像合成部208が複数の合成処理を並列に実行できるようにすると良い。なお、実行可能な並列処理数は、合成領域が同時に揃う最大数にしておくことで、最も高速に処理を行うことが可能となる。或いは、各撮像位置において同時に揃う合成領域数の中で最も発生頻度の高い回数の分だけ、合成処理を並列に行うことが可能なようにしておく構成でも良い。最も発生頻度が高い回数にすることで、使用される頻度の低いプログラム或いは回路を削減させることが可能となる。その結果、平均的な処理速度を保ちつつ、プログラムを格納するROM或いは回路規模の削減によるコスト削減を行うことが可能となる。なお、図5に示す内容は本発明における撮像位置の移動と合成領域の一例であり、本発明はこれに限定されるものではない。
以上述べたように、第1実施形態によると、色別バッファと合成バッファを効率良く使用するように撮像開始タイミングを制御することにより、不要なメモリを必要とせずコストを削減することが可能となる。また、合成処理の処理状況に応じて撮像のタイミングを制御することにより、不要な待ち時間を発生させること無く、総処理時間を短縮することが可能となる。
<第2実施形態>
第1実施形態においては、基本的な構成として、1つの撮像部の撮像動作を、合成処理の処理状況に基づいて制御する例について説明した。本実施形態では更に、撮像装置が複数の撮像部を有する場合において、複数の合成処理の処理状況に基づいて複数の撮像部の撮像開始タイミングを制御する例について説明する。
(撮像装置の機能構成)
図6は、本発明の第2実施形態に係る撮像装置の機能構成を模式的に示すブロック図である。なお、第1実施形態の撮像装置(図2)と同様の箇所には同じ符号を付してあり、説明は省略する。
601は撮像制御部であり、図2の撮像制御部205に対応するものである。撮像制御部601は、複数の撮像部602〜604の撮像タイミングの制御を行う点が、図2の撮像制御部205とは異なる。図2における撮像部204、現像処理部206、色別バッファ207の組み合わせと同様に、撮像部602〜604に対しては、現像処理部605〜607と色別バッファ608〜610が各々組になって接続されている。なお、色別バッファ608〜610が最後に撮像される色以外の画像を保持する構成も、色別バッファ207と同様である。
現像処理部605〜607の出力はそれぞれ同一センサ内画像合成部611〜613に接続されている。同一センサ内画像合成部611〜613は、入力された画像情報を複数の領域に分割し、合成領域のデータは合成バッファ614〜617へ保存し、非合成領域のデータはそのまま画像圧縮部621、623、625へ出力する。そして、合成バッファ614〜617に合成処理に必要な画像が蓄積されると、同一センサ内画像合成部611〜613、及び、センサ間領域画像合成部618、619は合成処理を開始する。ここで、図6においては、同一センサ内画像合成部611〜613は、同一のセンサが異なる位置で撮像した2枚の画像を合成する合成処理部である。一方、センサ間領域画像合成部618、619は、異なるセンサで撮像された2枚の画像を合成する合成処理部である。
620は処理状況把握部であり、画像合成部611、612、613、618、619の処理状況を監視し、撮像制御部601に通知する。621〜625は画像情報を圧縮する画像圧縮部である。そして、626は複数の画像情報を入力し、外部装置へ出力するためのI/F部である。
なお、本発明において、同一センサ内画像合成部、及びセンサ間領域画像合成部は必ずしも分かれていなくても良く、同一の画像合成部が同一のセンサ内、及び異なるセンサ間で撮像された画像を合成するようにしても良い。
また、図6では画像合成処理を行う複数の画像合成部611、612、613、618、619の処理状況を、1つの処理状況把握部620で監視するようにしてあるが、本発明はこれに限ったものではない。例えば、複数の画像合成部に対して各々処理状況把握部を設けるようにし、各々の処理状況を撮像制御部601に送信するようにしても良い。或いは、合成バッファ614〜617に対して、各々処理状況把握部を設けるようにしても良い。更には、図9において後述するような、実際に割り当てられた合成バッファに対し
て各々処理状況把握部を設けるようにするなど、上記以外の様々な変形例への適用が可能である。
(動作フロー)
次に、図7を用いて第2実施形態における撮像装置の動作フローを説明する。なお、図7において第1実施形態の動作フロー(図3)と同様の項目には同じ符号が付してあり、必要がない限り説明は省略する。
処理が開始されると、S301〜S305までは図3の説明と同様に実行される。S305において、最後の色の撮像ではないと判定された場合、S701において撮像制御部601は全ての撮像部602〜604の撮像を開始する。続いて、S702において各撮像部602〜604から得られた画像情報が、対応する色バッファ608〜610に各々保存される。
一方、S305において今回の撮像が最後の色の撮像であると判定されると、処理はS703に移行する。S703では、処理状況把握部620が、複数の合成処理が実行されている中で、終了している合成処理があるか否かを判定する。なお、S703における合成処理終了の判定基準は、図3におけるS308と同様である。そして、終了している合成処理が1つ以上存在する場合には、処理はS704に移行する。
S704では、撮像制御部601は、合成処理が終了したことにより開放された合成処理用のバッファに対応する撮像部を、複数の撮像部602〜604の中から特定する。そして、S705では、撮像制御部601は、S704において特定された撮像部による撮像を開始する。S706では、撮像が開始された撮像部から最後の色の画素データが入力されるのに応じて、対応する現像処理部が点順次画像を生成して出力する。次いで、S707において、撮像が開始された撮像部に対応する同一センサ内画像合成部が、S312と同様に、合成領域のデータを合成バッファに保存するとともに、非合成領域のデータを出力する。
S707の後、又は、S703で終了している合成処理が検出できなかった場合に、処理はS708へ移行する。S708では、画像合成部611〜613、618、619が、複数の合成バッファ全てに対して、データが揃っている合成領域があるか否か判定する。そして、データが揃っている合成領域が存在する場合には、S709に移行して該データが揃っている合成領域全てに対して合成処理の実行と出力の開始を行い、S710へ移行する。一方、S708において、データが揃っている合成領域が複数の合成バッファのいずれにも存在しない場合には、S710へ移行する。
S710では、現在の光源の色において全ての撮像部602〜604が撮像を完了しているか否かを判定し、全ての撮像部602〜604の撮像が完了していないと判断された場合には、処理をS703に戻す。一方、S710において全ての撮像部602〜604の撮像が完了していると判断された場合には、S711に移行する。S711では、現在の撮像位置が最後の撮像位置であるか否かの判定が行われる。最後の撮像位置ではない場合には、処理をS302に移行させ、撮像位置を移動して上述の動作を繰り返す。一方、S711で最後の撮像位置であると判断された場合、S712において残っている合成処理の終了待ちを行った後に処理を終了させる。
なお、S703、S708、S710の判断が全てNOと判定されている場合、処理はS703、S708、S710の間でループを形成することになる。この状態は実行中の合成処理が存在し、合成処理の終了を待っている状態である。合成処理の待ちに対しては、S703、S708、S710のループを形成しているいずれかの場所において処理終
了待ちを行っても良い。また例えばソフトウェアプログラムにおいて実現する場合などでは、条件判断であってもCPUの処理時間を要するため、特別な待ち状態を必ずしも入れる必要は無い。また、特定時間の待ちを行うことにより一定時間間隔で終了状態を確認するような構成にしても良い。
また、S708でNOと判断された後で、S710の判断が開始される前に合成処理が終了するようなタイミングが存在する場合には、S710においてYESと判断された後で、S708、及びS709による条件付処理を実行するようにしても良い。
図7における上述の説明のように動作を実行させることにより、複数の撮像部602〜604を有する構成において、無駄な待ち時間を発生させることなく撮像を開始させることが可能になる。
(動作タイミング)
次に図8を用いて、本実施形態における各部の動作タイミングを説明する。なお、第1実施形態(図4)と同様に、光源から照射される光の色は3色である例を用いて説明する。
図8中、801は撮像位置切替部202の動作状態を示している。802〜804はそれぞれ撮像部602が第1色〜第3色の撮像を行う際の動作状態を示している。805は同一センサ内画像合成部611における合成処理の動作状態を示している。806〜808はそれぞれ撮像部603が第1色〜第3色の撮像を行う際の動作状態を示している。809は同一センサ内画像合成部612における合成処理の動作状態を示している。810〜812はそれぞれ撮像部604が第1色〜第3色の撮像を行う際の動作状態を示している。813は同一センサ内画像合成部613における合成処理の動作状態を示している。814はセンサ間領域画像合成部618における合成処理の動作状態を示している。815はセンサ間領域画像合成部619における合成処理の動作状態を示している。
なお、図7におけるステップS706で説明したように、最終色が入力された時点で面順次点順次変換が行われ、同一センサ内画像合成部611〜613へ画像情報が入力される。
816〜818は全ての合成処理が終了している状態における撮像開始タイミングを示している。816〜818の期間は、いずれの画像合成部611〜613、618、619も合成処理を行っていない(805、809、813、814、815参照)。
タイミング816は撮像位置切替部202の動作が終了した後のタイミングを示しており、撮像制御部601はタイミング816に基づいて撮像部602〜604の第1色の撮像を開始する。タイミング817は撮像部602〜604の第1色の撮像が終了したタイミングを示しており、撮像制御部601はタイミング817に基づいて光源の色の切り替え、及び撮像部602〜604の第2色の撮像を開始する。タイミング818は撮像部602〜604の第2色の撮像が終了したタイミングを示している。タイミング818では、全ての合成処理が終了しているために、撮像制御部601はタイミング818に基づいて光源の色の切り替え、及び撮像部602〜604の最終色の撮像を開始する。
そして合成処理に必要な画像情報が合成バッファ614〜617に蓄積されるタイミング819において合成処理が開始される。なお、図8に示す例では説明の簡略化のためにタイミング819において全ての合成処理が開始されているが、実際には異なっていても良い。
一方、合成処理の終了状態とは無関係に、最終色の撮像が終了するタイミング820に基づいて、次の撮像位置への移動が開始される。そして上述の第1色の撮像と同様に、撮像位置の移動が終了したタイミング821に基づいて、撮像部602〜604の第1色の撮像が開始され、続いて、第1色の撮像が終了したタイミング822に基づいて第2色の撮像が開始される。
ここで、撮像部602の動作に関連する合成処理(つまり撮像部602で撮像した画像情報が用いられる合成処理)は805及び814である。図8の例では、同一センサ内の合成処理805の方がセンサ間領域の合成処理814よりも後のタイミングで終了している。更に、第2色の撮像終了タイミング823よりも合成処理805の終了タイミングの方が遅い。そのため、撮像部602の最終色の撮像開始タイミングは、第2色の撮像終了タイミング823ではなく、関連する合成処理805、814の全てが終了したタイミング824に基づいて決定する。すなわち、撮像部602の最終色の撮像開始タイミングは、第2色の撮像終了タイミング、合成処理805の終了タイミング、及び合成処理814の終了タイミングの中で最も遅いタイミング824と同じかそれより遅くする。
一方、撮像部603の動作に関連する合成処理は809、814、815であり、図8の例では、合成処理815の終了タイミングが最も遅い。更に、第2色の撮像終了タイミング823よりも合成処理815の終了タイミングの方が遅い。そのため、撮像部603の最終色の撮像開始タイミングは、第2色の撮像終了タイミングと関連する合成処理809、814、815の終了タイミングの中で最も遅いタイミング825となる。また、撮像部604の最終色の撮像タイミングも同様であり、第2色の終了タイミングと関連する合成処理813、815の終了タイミングの中で最も遅いタイミング825となる。
(合成バッファの使用例)
次に図9を用いて、本実施形態による撮像制御における合成バッファの効率的な使用例を説明する。
図9(a)は撮像部602〜604の配置と、各撮像位置の関係を示している。A1は撮像部602の初期位置を、B1は撮像部603の初期位置を、C1は撮像部604の初期位置を、それぞれ示している。撮像部602〜604は、撮像部602と603が水平方向に重複領域を持ち、また撮像部603と604も水平方向に重複領域を持つように、デルタ状に配置されている。撮像部602〜604の撮像位置は、撮像位置切替部202により垂直方向に移動される。撮像位置の移動により、撮像部602は、A1、A2、A3、…、の順で、撮像部603は、B1、B2、B3、…、の順で、撮像部604はC1、C2、C3、…、の順で垂直方向にそれぞれ移動する。
図9(b)は、図9(a)のそれぞれの撮像位置での画像が保存される合成バッファを示している。各撮像位置の中央部分は非合成領域であり、周囲の6分割された領域が合成領域である。図9(b)中、904〜908は水平方向合成領域であり、図9(b)中の各撮像位置の上下に位置する。水平方向合成領域は上下の撮像位置間で合成処理が行われる領域であり、図9の例では同一の撮像部における異なる撮像位置間での撮像結果が合成される。この合成処理が、図6の同一センサ内画像合成部611〜613で行われる処理や、図8の合成処理805、809、813に対応する。一方、図9(b)中、909〜912は、垂直方向合成領域であり、図9(b)中の各撮像位置の左右に位置する。垂直方向合成領域は、左右の撮像位置間で合成処理が行われる領域であり、図9の例では異なる撮像部による撮像結果が合成される。この合成処理が、図6のセンサ間領域画像合成部618、619の処理や、図8の合成処理814、815に対応する。
次に、水平方向合成領域に関する合成バッファの使われ方の例を、図9(b)を用いて
示す。最初の撮像位置A1、B1(図9(b)では不図示)、C1が撮像されると、904に対応する画像がバッファHrz1Aに、905に対応する画像がバッファHrz2Aにそれぞれ保存される。ここで、904は合成処理が不要であるため、単に出力のみが行われたことをもって合成処理が終了したとする。そのため、次に撮像位置A2を撮像する際には、904の合成バッファとして使用していたバッファHrz1Aを907の合成バッファとして使うことが可能となる。そして、撮像位置A2が撮像されると、同一の合成領域である905及び906に対して合成処理が実行される。905及び906に対する合成処理の結果が出力されると、905の合成バッファとして使用されていたHrz2Aは次の撮像位置A3で使うことが可能となり、撮像位置A3の908に対応するバッファとして使用される。
一方、垂直方向合成領域に関する合成バッファの使われ方の例は次のようになる。最初の撮像位置A1、B1、C1が撮像されると、909に対応する画像がバッファVrt_R1Aに保存される。次に、撮像位置の移動が行われ、撮像位置A2、B2、C2が撮像されると910に対応する画像がバッファVrt_L2Bに保存される。そして、同一の合成領域である909及び910に対して合成処理が実行され、合成処理結果が出力されると、909に対応する画像バッファVrt_R1A、及び、910に対応する画像バッファVrt_L2Bが次の撮像位置で使用可能となる。そして、次の撮像位置A3、B3、C3のための合成バッファとして、909で使用したバッファVrt_R1Aを911に、910で使用したバッファVrt_L2Bを912にそれぞれ割り当てる。
図9(b)に示すように、合成処理が終了し合成バッファが空いた時点で、該空いた合成バッファを次の撮像時の合成処理に使いまわすことが可能となる。そのため、処理状況把握部620においては合成バッファの空き状況が保障できる状態を検出するようにすると良い。例えば、合成処理が終了したか否か、合成処理部が全てのデータを出力したか否か、或いは、合成バッファが空いたか否かなどの状態を検出すると良い。
図9(b)で説明したように、合成処理が終了した領域で使用していたバッファを次の合成処理に使いまわすことにより、全ての撮像位置における合成領域用のバッファを別々に確保する場合に比べ、必要なバッファ量を削減することが可能となる。特に高解像度撮像が行われる場合には使用するバッファ量が大きくなるため、使い回しによるバッファ削減はメモリ削減効果が大きく、コスト削減に大きく寄与する。図9(b)に示した例では、A1〜A3において必要なバッファは、水平方向合成領域用のバッファが3個、垂直方向合成領域用のバッファが左右各々5個ずつあればよい。また、B2〜B4において必要なバッファは、水平方向合成領域用のバッファが3個、垂直方向合成領域用のバッファが左右各々2個あればよい。ここで、全ての撮像位置の各合成領域に対して別々に合成バッファを持たせる構成の場合には、水平方向合成領域には6個のバッファ、垂直方向合成領域には左右6個ずつのバッファが必要となる。これと比較すると、本実施形態の構成により、必要なバッファ量は、水平方向合成領域で1/2、A1〜A3の垂直方向合成領域で5/6、B2〜B4の垂直方向合成領域で1/3になる。
なお、図9に示す撮像部の配置、形状、撮像位置や、領域の分割の仕方などは、本発明の好適な一例であるが、本発明はこれに限定されるものではない。また、本実施形態で挙げた例以外にも、撮像位置の移動方向或いは移動量に応じて合成バッファの割り振り方を変更しても良い。これにより、状況に応じて効率的に合成バッファが使用できる。
本実施形態においては、例えば図6の602〜604に示すように、撮像部が3つである例を用いて説明した。しかし、撮像部の数は3つに限らず、撮像部が2つ以上存在する装置構成には本実施形態の方法を同じように適用可能である。
また、本実施形態では、撮像制御部601が複数の撮像部の撮像開始タイミングを個別に決定し、合成バッファへの書き込みが可能となった撮像部から順に撮像を開始させている。実行可能な処理から順に開始することで、処理負荷やアクセスの集中を抑制できる効果が期待できる。ただし本発明はこの方法に限らず、例えば、1つの撮像位置における全ての合成処理が終了し合成バッファが利用可能になった後で、全ての撮像部の撮像を同時に開始する方法も好ましく採用できる。例えば光源の光量が時間的に変動する場合、撮像タイミングの違いにより画像のばらつきが生じる可能性がある。もし全ての撮像部の撮像開始タイミングを同期させれば、そのような画像のばらつきを抑制することが可能となる。
他の応用例としては、幾つかの撮像部をグルーピングして、グループ単位で同期を取りながら撮像タイミングを制御する方法が挙げられる。この方法は、例えば撮像部の数に対して現像処理部、或いは画像合成部の数が少なく、複数の撮像部を幾つかのグループに分けて、グループ単位の出力結果を現像処理部、或いは画像合成部が処理する場合に有効である。上述の構成にすることで、現像処理部、或いは、画像合成部の回路数、若しくはプログラムを格納するROMやRAMの数を削減する効果があり、コスト削減の効果も得ることが可能となる。
以上述べた第2実施形態の構成によれば、複数の撮像部により分割撮像を行う装置構成であっても、第1実施形態と同様、色別バッファと合成バッファの効率的な使用が出来、バッファ量の削減によるコスト低減が可能となる。また、不要な待ち時間を発生させること無く、総処理時間を短縮することが可能となる。
<第3実施形態>
上述の第1実施形態及び第2実施形態の構成は、合成処理にかかる時間が可変であり、予め予測困難な場合に好ましく適用することができる。しかし、合成処理のアルゴリズムによっては、合成領域の単位サイズ当たりの処理時間が予め分かっている、或いは、最大処理時間が予め分かっている場合がある。本実施形態では、合成処理の処理時間、或いは最大処理時間が予測可能な場合における撮像部の撮像開始タイミングの制御方法について説明する。
(撮像装置の機能構成)
図10は、本発明の第3実施形態に係る撮像装置の機能構成を模式的に示すブロック図である。なお、図2及び図6と同様の項目には同じ符号を付し説明は省略する。
図10中、1001は合成処理領域設定部であり、各合成領域の垂直方向、及び、水平方向の画素数を設定する。1002は合成処理速度情報記憶部であり、合成領域の垂直方向及び水平方向の画素数に応じた合成処理速度情報を記憶する。合成処理速度情報としては、例えば、単位サイズ(単位画素数)当たりの合成処理の処理時間などを用いることができる。1003は撮像制御部であり、合成処理領域設定部1001で設定された各合成領域の画素数、及び、合成処理速度情報記憶部1002に記憶されている合成処理速度情報に基づいて、撮像部の撮像開始タイミングを制御する。
(動作フロー)
図11は、本実施形態における撮像装置の動作フローを示すフローチャートである。なお、図3及び図7と同様の項目には同じ符号を付し説明は省略する。
処理が開始され、S301で初期化が完了すると、S1101において合成処理領域設定部1001が各合成領域の水平方向及び垂直方向の画素数を決定する。このとき、合成処理領域設定部1001は、各合成領域の設定を、複数の撮像部602〜604の相対的
な位置関係に基づいて行うと良い。また、撮像制御部1003は、合成処理領域設定部1001の出力結果に基づいて、撮像位置切替部202による撮像位置の移動量を決定する。
次に、S1102において、撮像制御部1003は、合成処理速度情報記憶部1002に格納されている合成処理速度情報を取得する。なお、S1102において取得する合成処理速度情報は単一のものではなく、合成処理領域の水平方向及び垂直方向の画素数、或いは、撮像範囲中における合成領域の位置によって異なる場合がある。そこで、例えば合成領域の位置毎に予め合成処理速度情報を求めておき、テーブル化して、合成処理速度情報記憶部1002に記憶しておくと良い。或いは、複数の撮像部を有する場合に、各撮像部の相対的な位置関係や撮像部の移動量などにより合成処理速度が異なる場合には、撮像部毎に合成処理速度情報を記憶しておくと良い。更には、撮像位置や合成領域の位置が少ない場合には、予め全ての合成処理速度情報を求めておき、記憶するようにしても良い。また、撮像部の移動量が可変の場合には、移動量が決定された時点で合成処理速度情報を計算しても良い。
そして、S1103では、S1102において取得された合成処理速度情報に基づいて、合成処理終了の予測時間を決定する。S302〜S305、S701、S702の動作は前述の図3或いは図7と同様に行われ、S305において、最後の色の撮像であると判断されると、処理はS1104に移行する。S1104では、撮像制御部1003は、S1103において決定された予測時間が経過しているか否かを調べることにより、合成処理が終了したか否かの判断を行う。それ以降の動作は、図3或いは図7と同様である。
なお、S1103において決定される予測時間は、典型的には、合成処理に必要な時間(すなわち、合成処理の開始から、合成処理の演算が終了し、かつ、合成バッファの書き込みが可能になるまでの時間)である。しかしこれに限らず、例えば、S705における最後の色の撮像開始から合成バッファの書き込みが可能になるまでの時間を、予測時間としても良い。予測時間が撮像処理及び現像処理に必要な時間も含んでいると、各撮像部に撮像指示を出した時刻からの経過時間と予測時間を比較するだけで、次回の撮像開始の可否を判定することが可能となる。その結果、予測時間が合成処理に必要な時間のみである場合と比較すると、撮像部や現像処理部の処理終了時刻や、画像合成部の処理開始時刻などを別途考慮する必要がなくなるため、簡易な構成で制御が可能となる。
(合成処理時間)
次に、図12を用いて、合成領域の画素数と合成処理に必要な時間の関係について説明する。
図12(a)は現像処理部により面順次点順次変換が施された後に画像合成部に入力される画像情報である。図12(a)の矢印は撮像された画像内におけるデータ並び順の例を示しており、左から右、上から下、の順で撮像部から出力される。図12(a)では、1つの水平方向に関するデータ列が左から右に出力され、垂直方向に対してはN行分のデータが上から順に撮像部から出力される様子を示している。
図12(b)〜(d)は各々隣接する撮像結果を示しており、(b)〜(d)の順に撮像されるものとする。図12(b)における領域Dと図12(c)における領域D’は同一領域に対する撮像結果であり、撮像領域の左右に存在する縦長の合成領域である。同様に、図12(b)におけるEと図12(d)におけるE’は同一領域に対する撮像結果であり、撮像領域の上下に存在する横長の合成領域である。まず図12(b)が撮像されているため、図12(c)の撮像後には、DとD’の画像の合成処理が実行可能となる。図12(d)の撮像後には、EとE’の画像の合成処理が実行可能となる。しかし、以下に述べるように、合成処理の開始は、必ずしも、1回の撮像結果全てが揃うまで待つ必要は
ない。
図12(a)の画像データの並び順と図12(c)を併せたものが図12(e)であり、図12(a)の画像データの並び順と図12(d)を併せたものが図12(f)である。画像データが左から右、上から下の順で画像合成部に入力されるため、図12(e)のD’の領域のデータが揃うのは、最後のN行における領域D’の幅分のデータが入力された時点である。一方、図12(f)のE’の領域のデータが揃うのは、領域E’の高さ分の2行のデータが入力された時点である。すなわち、領域D’の合成処理は1回の撮像結果のほとんどすべてのデータが入力されないと開始できないが、領域E’の合成処理はそれよりも早い段階で開始可能である。以上のように、合成領域の水平方向及び垂直方向の画素数、及び撮像範囲中における合成領域の位置に応じてデータが揃うタイミングが異なり、合成処理を開始できるタイミングが異なる。言い換えると、データ入力速度、合成領域の水平方向及び垂直方向の画素数、撮像範囲中における合成領域の位置が予め分かっていれば、合成処理を開始できるタイミングが予め予測可能となる。
なお、処理速度が予め予測可能な合成処理方法としては、2つの画像を平均する方法などが挙げられる。このとき、合成領域内の画素の位置に応じて重み付け平均を行うと良い。例えば、図12(b)、(c)における領域DとD’の場合であれば、Dが左側領域Aに対する連続性が高く、D’が右側の領域Bに対する連続性が高い。そのため、合成領域の左側ほどDの画素の重みを大きく、右側ほどD’の画素の重みを大きくする。
本実施形態においては、撮像位置切替部202による撮像位置の移動量を、合成処理領域設定部1001の出力結果に基づいて決定する例を示した。しかし、逆に、撮像位置の移動量が予め決まっている場合には、撮像位置の移動量に基づいて、合成処理領域設定部1001の出力を決定するようにしても良い。
また、上述の例では合成処理時間が予め予測可能なものとして説明したが、処理時間が変動するような場合であっても、最大処理時間が分かっている場合には最大処理時間を予測時間として用いても良い。更に、予測時間が撮像開始から合成処理の終了までの期間である場合には、撮像開始から合成処理終了までの間の全ての処理に必要な時間の最大処理時間を、予測時間としても良い。なお、ここでは複数の撮像部を持つ装置構成について説明したが、本実施形態の方法は第1実施形態のように1つの撮像部の装置構成についても好ましく適用できる。
以上述べた第3実施形態の構成によれば、第1実施形態及び第2実施形態と同様、色別バッファと合成バッファの効率的な使用が出来、バッファ量の削減によるコスト低減が可能となる。また、不要な待ち時間を発生させること無く、総処理時間を短縮することが可能となる。さらに、画像合成部や合成バッファの状況を監視する必要がないため、第1及び第2実施形態に比べて、構成の簡易化が期待できる。
<第4実施形態>
第1〜第3の実施形態においては、最後の1色に対応する画像データを色別バッファに保持しない構成の例を説明した。本実施形態では、色別バッファが全ての色の画像データを保持する場合において、合成処理の処理状況に基づいて撮像開始タイミング及び現像開始タイミングを制御する例を示す。
本実施形態においては、光源の色毎に撮像された全色の画像データが色別バッファに格納される。そして、全色格納されると、現像処理部で面順次点順次変換が実行され、画像合成部に画像が出力される。このような系においては、撮像部における撮像開始タイミングを正しく制御しないと、色別バッファに対する上書きが発生する可能性がある。そこで
本実施形態においては、合成処理の処理状況に応じて最初の色に対する撮像開始タイミングの制御を行うことにより、上述のような問題を回避する。
本実施形態に係る撮像装置の機能構成は、色別バッファが保持する色数を除き、第1〜第3の実施形態(図2、図6、図10)と同様である。以下、図6の構成を例に挙げて、本実施形態の撮像装置の動作について説明する。
図13は本実施形態に係る撮像装置の動作フローを示すフローチャートである。なお、前述の図3、図7、及び図11の項目と同様の項目には同じ符号を付し、説明は省略する。
処理が開始され、前述の実施形態と同様にS301〜S304が実行される。そして、S1301において、撮像制御部601は現在の撮像が最初の色に対する撮像か否か判定する。S1301において最初の色であると判定された場合、処理はS1302に進む。S1302では、撮像制御部601は全ての合成領域の合成処理が開始された撮像領域があるか否か判定する。S1302においてNOと判定された場合には、再びS1302の判断を繰り返す。なお、S1302でNOと判定された場合には、必要に応じて所定時間の待ちを入れても良い。一方、S1302においてYESと判定された場合には、処理はS1303に移行する。S1303では、撮像制御部601は全ての合成領域の合成処理が開始された撮像領域に対応する撮像部を特定する。次に、S1304においては、撮像制御部601は、S1303で特定された撮像部の撮像を開始する。S1305において撮像された各色の画像データが色バッファへ保存される。
そして、S1306では、撮像制御部601は、現在の撮像位置において、全ての撮像部の撮像が開始されたか否かを判定する。撮像が開始されていない撮像部がある場合には、必要に応じて不図示の待ちを行った後に、処理はS1302に移行する。また、全ての撮像部の撮像が開始されていた場合には、処理はS303に戻る。
一方、S1301において、最初の色ではないと判定された場合、処理はS701に進む。なお、本実施形態において光源色の数が1つであった場合は、S1301の判定結果は常にNOにすると良い。S701及びS702の動作は前述の実施形態と同様である。S1307では、撮像制御部601が最後の色の撮像であるか否か判定する。最後の色ではないと判定されると、処理はS303へ移行する。一方、最後の色であると判定されると、処理はS1308へ移行する。
S1308では、撮像制御部601は、前回の撮像に対する合成処理が終了しているか否かを判定し、終了していないならばS1309において合成処理の終了を待ってから処理をS706へ、終了しているならば処理を直接S706へ、それぞれ移行させる。すなわち、前回の撮像に対する合成処理が終了し、合成バッファへの書き込みが可能となった時点で、現像処理が開始されるように、撮像制御部601が現像開始タイミングを制御するのである。これにより第1〜第3実施形態と同様、合成バッファ内の合成処理待ちのデータに対する上書きを防止できる。S706、S707の処理は上述の実施形態と同様である。S1310では上述のS708と同様の判定が行われるが、データが揃っている合成領域が無いと判定された場合の遷移先がS711となる。また、S1310でデータが揃っていると判定された場合には処理がS709に移行するが、S709の処理を実行した後も処理はS711に移行する。
本実施形態によれば、以下のような処理が行われることになる。
合成に必要なデータが合成バッファ614〜617に蓄積されると、画像合成部611〜613、618、619による合成処理が開始される。合成処理の開始状況はS130
2において監視され、合成処理が全て開始されたことが確認されると同時に、現像処理部605、606、607の現像処理が終了したことも確認される。なお、合成処理が開始可能な状態とは、前回の合成処理が終了していて、且つ、合成バッファ614〜617に現像処理部605、606、607からの出力が格納されている状態である。つまり、画像合成部611〜613、618、619における合成処理と、現像処理部605〜607における現像処理のうち、遅い方の処理時間が、処理状況把握部620で把握されることになる。そして、現像処理部605〜607の処理の終了とともに、色別バッファ608〜610が書き込み可能となるため、S1304において次の撮像が開始される。これにより、色別バッファ608〜610内の現像処理待ちのデータに対する上書きを防止でき、撮像1回分の最小限の色別バッファで効率的な撮像を行うことが可能となる。
なお、処理状況把握部620では、色別バッファ608、609、610に対する上書きが発生しないような処理状況を検出するようにすると良く、上述のように合成処理が開始されたか否かを検出するようにすると良い。或いは、処理状況把握部620は、現像処理部605〜607における処理の終了を検出しても良い。
本実施形態で述べた制御は、第1実施形態の構成に適用することも可能である。さらには、本実施形態で述べた制御を第3実施形態の構成に適用することも可能である。具体的には、S1302における合成処理の開始タイミングを、合成処理速度情報記憶部1002に保持されている合成処理速度情報から予測可能であれば良い。例えば、合成処理速度情報が画像合成部における合成処理と現像処理部における処理のうち遅い方の処理時間を指すようにすると良い。
以上述べた本実施形態によれば、合成処理の処理状況に応じて撮像開始タイミングを制御することにより、色毎に撮像した画像を全ての色について色バッファに保持するような構成の場合に、色バッファの上書きの発生を防止できる。したがって、撮像1回分の最小限のバッファだけで(すなわち余分なバッファを必要とせず)、効率的な撮像を行うことが可能となる。
なお、上述した本発明における各実施形態の説明では光源は複数の色の光を発するものとしたが、本発明はこれに限るものではない。例えば光源が白色光を発し、撮像部側で色フィルタを使用するようにしても良い。また、いわゆる単板式の撮像部を用いて1回撮像し、現像処理部において色補間を行うことによりカラー画像化するのでもよい。或いは、グレースケールの結果でも良い場合には所定の1色の光を使用して、1回だけ撮像を行う構成でも良い。この場合、上述の色別バッファには1回分の撮像結果のみが格納され、現像処理が実行されるようにすると良い。或いは、単板式の場合には、色補間処理後の点順次画像を格納するようにしても良い。つまり、本発明は光源の切り替えや撮像回数、現像処理の内容によらず、様々な応用例に対して適用可能である。