[第1実施形態]
本発明の第1実施形態による画像処理装置について、図1乃至図4を用いて説明する。なお、本実施形態では、画像処理装置を、撮像装置の一部の機能ブロックとして用いた場合を例にして説明する。ここでは、撮像装置としてデジタルカメラを例示して説明するが、デジタルビデオカメラ、スマートフォン、カメラ付き携帯電話、車載カメラ等の他の撮像装置に適用することも可能である。
図1は、本実施形態による画像処理装置を備える撮像装置の構成例を示すブロック図である。撮像装置1000は、図1に示すように、センサ100と、撮像補正部101と、画像処理部103と、表示処理部104と、表示部105と、を備えている。また、撮像装置1000は、データ転送部107と、バス108と、メモリ制御部109と、メモリ部110と、不揮発性メモリ制御部111と、不揮発性メモリ112と、を備えている。また、撮像装置1000は、CPU113と、表示デバイス114と、タイミング調整部115と、を備えている。図1には示していないが、撮像装置1000は、センサ100からのアナログ信号をデジタル信号に変換するAD変換器、画像データを例えばJPEG形式やMPEG形式などに圧縮し或いは圧縮されたデータを伸張する圧縮伸張部等を更に備えていてもよい。
センサ100は、受光した被写体像を電気信号に変換して撮像データを生成する撮像素子であり、例えばCCDイメージセンサやCMOSイメージセンサ等により構成される。センサ100は、撮像補正部101に接続されており、センサ100が撮影した撮像データは撮像補正部101へと出力される。動画撮影の場合には、撮像データが周期的にセンサ100から撮像補正部101へと出力される。また、センサ100は、タイミング調整部115に接続されており、所定のタイミング信号、例えば1フレームの開始のタイミングを示す信号をタイミング調整部115に出力する。
撮像補正部101は、センサ100から入力される撮像データに対して、画素補正、黒レベル補正、シェーディング補正、傷補正などの補正処理を行い、補正済みの画像データを出力する機能ブロックである。また、撮像補正部101は、画像処理部103で画像データを処理する際にホワイトバランスの調整などに使用する補助パラメータの生成のための補助データ(第2の画像データ)の生成を行う。撮像補正部101は、データ転送部107に接続されており、補正処理を行った画像データ及び補助データを、データ転送部107及びメモリ制御部109を介してメモリ部110に書き出す。
また、撮像補正部101は、バッファ102を備えている。バッファ102は、メモリ部110のキャリブレーション処理中であって、メモリ部110へのアクセスができない期間にセンサ100から供給される画像データを溜めておくためのバッファである。バッファ102の容量は、キャリブレーション処理に要する時間、キャリブレーション間隔、センサ100からの画像データの転送速度等を考慮して決定される。例えば、キャリブレーション処理中にセンサ100から転送されるデータが2ラインであり、キャリブレーション間隔が1フレーム(16.6ms)に1回以下であれば、少なくとも2ライン分のデータを保持するに十分なバッファ102を用意する。同様に、キャリブレーション間隔が1フレームに2回であれば4ライン分、3回であれば6ライン分のデータを保持するに十分な容量のバッファ102を用意する。なお、本実施形態では、キャリブレーション間隔が1フレームに1回以下である場合を例にして説明を行う。
画像処理部103は、ホワイトバランス調整、倍率色収差補正、ガンマ補正、輝度・色生成処理、幾何変形、ノイズリダクションなどの複数の処理を実行し、画像データに対して適切な画像処理を施す機能ブロックである。画像処理部103は、データ転送部107に接続されており、メモリ制御部109及びデータ転送部107を介してメモリ部110から画像データを受信する。そして、画像処理部103は、所定の画像処理を施した画像データ(第1の画像データ)を、データ転送部107及びメモリ制御部109を介してメモリ部110に書き出す。
なお、本明細書では、撮像補正部101と画像処理部103とを総括して画像処理部(第1の画像処理部)と呼ぶことがある。
表示処理部104(第3の画像処理部)は、拡縮といったリサイズや表示デバイス114に合わせた色域変換など、画像処理部103で処理した画像データに対して適切な画像処理を施す機能ブロックである。表示処理部104は、データ転送部107に接続されており、メモリ制御部109及びデータ転送部107を介してメモリ部110から画像データ(第1の画像データ)を受信する。そして、表示処理部104は、所定の画像処理を施した画像データ(第3の画像データ)を、データ転送部107及びメモリ制御部109を介してメモリ部110に書き出す。
表示部105(第2の画像処理部)は、画像データ(第3の画像データ)に対して表示デバイス114に合わせたフォーマット変換などの処理を施す機能ブロックである。表示部105が実行する処理として、表示デバイス114の表示サイズに合わせるために表示画像の周辺に固定色(例えば黒塗り)の画素を追加する処理が挙げられる。また、表示部105が実行する他の処理として、表示データへの撮影時間などの埋め込み処理、いわゆるOSD(On-Screen Display)画像を重畳する処理が挙げられる。表示部105は、データ転送部107に接続されており、メモリ制御部109及びデータ転送部107を介してメモリ部110から画像データを受信する。そして、表示部105は、画像データに対して所定の処理を施した表示データを、表示デバイス114へと転送する。
また、表示部105は、バッファ106を備えている。バッファ106は、メモリ部110のキャリブレーション処理中であって、メモリ部110へのアクセスができない期間に表示デバイス114に表示データを送信し続けられるように表示データを蓄積しておくためのバッファである。バッファ106の容量は、キャリブレーション処理に要する時間、表示デバイス114が表示データを表示するのに要する時間等を考慮して適宜決定される。例えば、キャリブレーション時間が、表示デバイス114が1ラインの表示データを表示する時間に相当する場合には、少なくとも1ライン分の表示データを保持するに十分な容量のバッファ106を用意する。表示部105は、タイミング調整部115に接続されており、バッファ106に表示データが溜まったタイミングを示す信号を、タイミング調整部115に供給する。
データ転送部107は、データ転送を行う複数のDMAC(Direct Memory Access Controller)の不図示のWRDMAC(Write Direct Memory Access Controller)及びRDDMAC(Read Direct Memory Access Controller)により構成される。データ転送部107に出力された画像データは、WRDMACによってバス108に出力され、メモリ制御部109を介してメモリ部110に一時的に記憶される。メモリ部110に一時的に記憶された画像データは、メモリ制御部109を介してバス108に出力され、データ転送部107のRDDMACによって撮像補正部101、画像処理部103、表示処理部104、表示部105へと出力される。
バス108は、不図示のシステムバスとデータバスとから構成され、各々独立したバス構成となっている。
メモリ制御部109は、バス108及びメモリ部110に接続されており、CPU113やデータ転送部107からの指示に応じてメモリ部110へのデータの書き込みやメモリ部110からのデータの読み出しを制御する機能ブロックである。また、メモリ制御部109は、タイミング調整部115に接続されており、タイミング調整部115からキャリブレーション処理の開始通知を受信する。メモリ制御部109は、メモリ部110の動作タイミングを調整するキャリブレーション処理を実行する。具体的には、メモリ制御部109は、キャリブレーション処理の開始通知を受信すると、メモリ部110への通常のメモリアクセス動作を停止する。そして、メモリ部110に対し、ストローブ信号とデータ信号との間のタイミング調整を行うキャリブレーション処理を実行する。キャリブレーション処理は、後述するタイミング調整部115やCPU113からの指示に応じて実行する。また、メモリ制御部109は、図示しないカウンタを有しており、タイミング調整部115やCPU113からの指示を受けてカウントを開始し、所定のカウント値(周期カウント値)に達したときにキャリブレーション処理を実行する機能を備えている。
メモリ部110は、所定枚数の静止画像や所定時間の動画像、音声等のデータ、CPU113の動作用の定数、プログラム等を格納するのに十分な記憶容量を備える記憶装置であり、DRAMなどのメモリ素子により構成される。メモリ部110は、複数のメモリにより構成することも可能である。本実施形態では、4つのメモリ(メモリA、メモリB、メモリC、メモリD)によりメモリ部110を構成する場合を例にして説明を行う。
不揮発性メモリ制御部111は、バス108及び不揮発性メモリ112に接続されており、CPU113からの指示に応じて不揮発性メモリ112へのデータの書き込みや不揮発性メモリ112からのデータの読み出しを制御する機能ブロックである。不揮発性メモリ112は、電気的に消去・記録可能なメモリ素子であり、例えばEEPROM等により構成される。不揮発性メモリ112には、CPU113の動作用の定数、プログラム等が記憶される。
CPU113は、デジタルカメラの全体の動作制御を司るマイクロコンピュータなどで構成され、撮像装置1000を構成する各機能ブロックに対して様々な指示を行い、各種の制御処理を実行する。具体的には、CPU113は、バス108を介して接続された撮像補正部101、画像処理部103、表示処理部104、表示部105、データ転送部107、メモリ制御部109、不揮発性メモリ制御部111を制御する。また、CPU113は、プログラム上で予め指定されたキャリブレーション処理の開始タイミングや禁止期間、制御の開始や終了のタイミング、不図示の割り込みコントローラからの割り込みタイミング等のタイミング信号を、タイミング調整部115に供給する。CPU113は、不揮発性メモリ112に記録されたプログラムを実行することで、本実施形態の各処理を実現する。
表示デバイス114は、表示部105から供給された表示データを、LCDやEVFなどに表示する。また、表示デバイス114は、タイミング調整部115に接続されており、1フレームの開始のタイミングを示す信号を、タイミング調整部115に供給する。
タイミング調整部115は、センサ100、表示部105、表示デバイス114、CPU113から所定の信号を受信し、メモリ制御部109へキャリブレーション処理の開始通知を行う機能ブロックである。センサ100及び表示デバイス114から受信する信号としては、例えば、1フレームの開始のタイミングを示す信号が挙げられる。表示部105から受信する信号としては、例えば、バッファ106に表示データが溜まったタイミングを示す信号が挙げられる。CPU113から受信する信号としては、例えば、プログラム上で予め指定されたキャリブレーション処理の開始タイミングや禁止期間、制御の開始や終了のタイミング、不図示の割り込みコントローラからの割り込みタイミング等のタイミング信号が挙げられる。
また、タイミング調整部115は、これら信号を受け取ってから所定の時間が経過した後にキャリブレーション処理の開始通知を行うように構成することも可能である。例えば、タイミング調整部115に図示しないカウンタを設け、信号を受信したタイミングからカウントを開始し、所定のカウント値(周期カウント値)に達したとき(周期タイミング)にキャリブレーション処理の開始通知するように構成することができる。
図2は、各処理部のメモリ部110へのアクセス態様を示す図である。ここでは、メモリ部110が、メモリA200、メモリB201、メモリC202、メモリD203の4つのメモリにより構成されている場合を想定する。
センサ100は、取得した撮像データを撮像補正部101に出力する。撮像補正部101は、センサ100から受信した撮像データに対して所定の補正処理を施し、補正済み画像データをメモリA200に書き込む。同時に、撮像補正部101は、センサ100から受信した画像データから補助データ(第2の画像データ)を作成し、作成した補助データをメモリB201に書き込む。
画像処理部103は、メモリA200に格納された補正済み画像データを読み出し、読み出した補正済み画像データに対して所定の画像処理を施し、画像処理済み画像データ(第1の画像データ)をメモリA200に書き込む。
表示処理部104(第3の画像処理部)は、メモリA200に格納された画像処理済み画像データを読み出し、読み出した画像処理済み画像データに対して所定の表示処理を施して表示データを生成し、生成した表示データをメモリC202に書き込む。
表示部105(第2の画像処理部)は、メモリC202に格納された表示データを読み出し、読み出した表示データにOSD画像を重畳する重畳処理を施し、重畳処理後の表示データを表示デバイス114に送信する。
CPU113は、Vブランキング期間に、メモリB201に格納された補助データを読み出し、補助データから所定の補正パラメータ、例えばホワイトバランス用の補正パラメータを生成し、生成した補正パラメータを画像処理部103に設定する。この動作は、1フレーム毎に繰り返し実行する。
また、CPU113は、不揮発性メモリ112に記録されたプログラムを実行する。通常、不揮発性メモリ112はメモリ部110よりアクセス速度が遅いため、不揮発性メモリ112に記録されたプログラムを一旦メモリB201やメモリD203に展開し、メモリB201やメモリD203にアクセスしてプログラムを実行することが望ましい。
このように、センサ100から出力される撮像データは、撮像補正部101を介してメモリA200及びメモリB201に書き込まれる。また、表示デバイス114に転送される表示データは、メモリC202から読み出される。
次に、本実施形態による画像処理装置におけるメモリ部110のキャリブレーション処理のタイミングについて、図3及び図4を用いて説明する。ここでは、4フレーム(66.66ms=16.66ms×4)ごとに各メモリのキャリブレーション処理が必要な場合を想定した動作の説明を行う。なお、本実施形態における各メモリのキャリブレーション処理は、少なくともメモリの数に対応するフレーム数毎に行えばよく、5フレーム以上毎に行ってもよい。
図3は、タイミング調整部115が実行するキャリブレーションタイミング調整処理の処理フローを示す図である。
タイミング調整部115は、キャリブレーションタイミング調整処理が開始すると、まず、メモリA200がキャリブレーション処理の対象であるか否かを判定する(ステップS300)。メモリA200がキャリブレーション処理の対象である場合(YES)にはステップS301へと移行し、メモリA200がキャリブレーション処理の対象でない場合(NO)にはステップS303へと移行する。キャリブレーション処理の対象であるか否かの判定は、過去3フレーム以内にキャリブレーション処理が実施されているかどうかを基準とする。すなわち、過去3フレーム以内にメモリA200に対してキャリブレーション処理が実施されていない場合にはキャリブレーション処理の対象であると判定する。また、過去3フレーム以内にメモリA200に対してキャリブレーション処理が実施されている場合にはキャリブレーション処理の対象ではないと判定する。後述するステップS303、ステップS306、ステップS309における判定も同様に行う。
ステップS301において、タイミング調整部115は、メモリA200のキャリブレーション処理の実行タイミングであるか否かを判定する。キャリブレーション処理の実行タイミングである場合(YES)にはステップS302へと移行し、キャリブレーション処理の実行タイミングでない場合(NO)にはステップS303へと移行する。
キャリブレーション処理の実行タイミングであるか否かの判定は、メモリA200にアクセスする処理部の動作状態に基づいて行われる。例えば、本実施形態の場合、メモリA200には撮像補正部101が補正済み画像データを書き込むため、撮像補正部101が1フレーム分の補正済み画像データをメモリA200に書き終えたかどうかで判定を行う。すなわち、撮像補正部101が1フレーム分の補正済み画像データをメモリA200に書き終えていない場合には、キャリブレーション処理を実行しないと判定する。また、撮像補正部101が1フレーム分の補正済み画像データをメモリA200に書き終えている場合には、キャリブレーション処理が実行可能であると判定する。
具体的には、撮像補正部101が1フレーム分の補正済み画像データをメモリA200に書き終えたことをデータ転送部107が判定し、CPU113に割り込みを発生させる。CPU113は、キャリブレーション処理の実行タイミングを示す信号をタイミング調整部115に送信する。タイミング調整部115は、その信号に基づいてキャリブレーション処理の実行のタイミングであるか否かの判定を行う。ただし、撮像補正部101はバッファ102を有しているため、高速フレーム動画像の記録時など、CPU113が1フレーム毎に割り込みを受け取ることが困難な場合には、特にキャリブレーション禁止期間を設けずに、実行判定は総てOKとしても構わない。
ステップS302において、タイミング調整部115は、メモリ制御部109にメモリA200のキャリブレーション処理の実行タイミングを通知する。通知を受信したメモリ制御部109は、メモリA200に対して所定のタイミングでキャリブレーション処理を実行する。キャリブレーション処理の終了後は、ステップS312へと移行する。
ステップS303において、タイミング調整部115は、メモリB201がキャリブレーション処理の対象であるか否かを判定する。メモリB201がキャリブレーション処理の対象である場合(YES)にはステップS304へと移行し、メモリB201がキャリブレーション処理の対象でない場合(NO)にはステップS306へと移行する。
ステップS304において、タイミング調整部115は、メモリB201のキャリブレーション処理の実行タイミングであるか否かを判定する。キャリブレーション処理の実行タイミングである場合(YES)にはステップS305へと移行し、キャリブレーション処理の実行タイミングでない場合(NO)にはステップS306へと移行する。
キャリブレーション処理の実行タイミングであるか否かの判定は、メモリB201にアクセスする処理部の動作状態に基づいて行われる。例えば、本実施形態の場合、CPU113がメモリB201から補正データを読み出して補正パラメータを生成するため、この期間に該当する場合にはキャリブレーション処理を実行しないと判定する。CPU113が補正パラメータを作成している期間は、撮像補正部101が1フレーム分の補正済み画像データをメモリA200に書き終えた後のタイミング、いわゆるVブランキング期間に該当する。ただし、補正パラメータの作成は、殆どの場合、Vブランキング期間よりも短い期間の間に終了する。
具体的には、CPU113が補正データを読み出して補正パラメータを作成している期間に、CPU113はキャリブレーション処理の禁止を示す信号を送信する。タイミング調整部115は、この信号に基づいてキャリブレーション処理の実行の可否の判定を行う。
ステップS305において、タイミング調整部115は、メモリ制御部109にメモリB201のキャリブレーション処理の実行タイミングを通知する。通知を受信したメモリ制御部109は、メモリB201に対して所定のタイミングでキャリブレーション処理を実行する。キャリブレーション処理の終了後は、ステップS312へと移行する。
ステップS306において、タイミング調整部115は、メモリC202がキャリブレーション処理の対象であるか否かを判定する。メモリC202がキャリブレーション処理の対象である場合(YES)にはステップS307へと移行し、メモリC202がキャリブレーション処理の対象でない場合(NO)にはステップS309へと移行する。
ステップS307において、タイミング調整部115は、メモリC202のキャリブレーション処理の実行タイミングであるか否かを判定する。キャリブレーション処理の実行タイミングである場合(YES)にはステップS308へと移行し、キャリブレーション処理の実行タイミングでない場合(NO)にはステップS309へと移行する。
キャリブレーション処理の実行タイミングであるか否かの判定は、メモリC202にアクセスする処理部の動作状態に基づいて行われる。例えば、本実施形態の場合、メモリC202に対して、表示処理部104による表示データの書き込みと、表示部105による表示データの読み出しとが行われる。したがって、表示部105のバッファ106に、キャリブレーション処理の実行中にメモリC202にアクセスできない期間の表示データが溜まっていれば、キャリブレーション処理を実行すると判定する。
具体的には、バッファ106に表示データが溜まっていることを示す信号を表示部105がタイミング調整部115に送信し、タイミング調整部115はこの信号に基づいてキャリブレーション処理を実行すると判定する。或いは、表示デバイス114への表示データの送信完了タイミングを示す信号を表示部105がタイミング調整部115に送信し、タイミング調整部115はこの信号に基づいてキャリブレーション処理を実行すると判定する。
ステップS308において、タイミング調整部115は、メモリ制御部109にメモリC202のキャリブレーション処理の実行タイミングを通知する。通知を受信したメモリ制御部109は、メモリC202に対して所定のタイミングでキャリブレーション処理を実行する。キャリブレーション処理の終了後は、ステップS312へと移行する。
ステップS309において、タイミング調整部115は、メモリD203がキャリブレーション処理の対象であるか否かを判定する。メモリD203がキャリブレーション処理の対象である場合(YES)にはステップS310へと移行し、メモリD203がキャリブレーション処理の対象でない場合(NO)にはステップS312へと移行する。
ステップS310において、タイミング調整部115は、メモリD203のキャリブレーション処理の実行タイミングであるか否かを判定する。キャリブレーション処理の実行タイミングである場合(YES)にはステップS311へと移行し、キャリブレーション処理の実行タイミングでない場合(NO)にはステップS312へと移行する。
キャリブレーション処理の実行タイミングであるか否かの判定は、メモリD203にアクセスする処理部の動作状態に基づいて行われる。例えば、本実施形態の場合、メモリD203に展開したプログラムをCPU113が実行するため、CPU113からの信号に基づいてキャリブレーション処理の実行の判定を行う。
ステップS311において、タイミング調整部115は、メモリ制御部109にメモリD203のキャリブレーション処理の実行タイミングを通知する。通知を受信したメモリ制御部109は、メモリD203に対して所定のタイミングでキャリブレーション処理を実行する。キャリブレーション処理の終了後は、ステップS312へと移行する。
ステップS312において、タイミング調整部115は、キャリブレーション処理を終了するか否かの判定を行う。キャリブレーション処理を終了する場合(YES)には一連のキャリブレーションタイミング調整処理を終了し、終了しない場合(NO)にはステップS300へと戻る。キャリブレーション処理の終了判定が行われる具体例としては、不図示の操作ボタンにより電源がオフにされたときや、表示デバイス114への表示を消すなどの省電力モードに移行したときなどが挙げられる。
図4は、メモリ部110へのアクセス状況を時間方向(横軸)に示したタイミング図である。図4には、連続する4フレーム分の動作を示しており、矢印はメモリ部110のキャリブレーション処理を実行するタイミングを示している。
図4に示す動作例では、図3の処理フローに沿って、1フレーム目にメモリA200、2フレーム目にメモリB201、3フレーム目にメモリC202、4フレーム目にメモリD203のキャリブレーション処理を実行している。図示しない5フレーム目以降は、1フレーム目から4フレーム目までと同様の処理が繰り返し行われる。
特許文献1に開示されている技術では、メモリ装置側にバッファとなるレジスタセットを設けるため、複数のメモリを有する装置においては、メモリの個数分、回路規模が増加することになる。そのため、メモリシステムの小型化を妨げる可能性があった。また、メモリのバッファ容量は有限のため、センサから1フレームの画像転送中に複数のメモリに対してキャリブレーション処理が発生すると、センサからの画像データを取りこぼすことが起こりうる。また、補助データを書き込んでいるメモリは、Vブランキング期間に、CPUが、補助データを読み込み、画像処理へ渡す補正パラメータを作成する。しかし、Vブランキング期間にキャリブレーション処理を実施すると、補正パラメータの作成が間に合わない可能性がある。また、表示処理をした表示データの表示装置への送信時には、表示データを絶え間なく表示デバイスへと送信する必要がある。しかしながら、メモリ側のバッファに表示データが蓄積されていない状態でキャリブレーション処理が実行されると、表示デバイスへの表示データを送信できなくなる可能性があり、表示が乱れてシステム破綻する可能性がある。
また、特許文献2に開示されている技術では、複数のメモリに対して同時にキャリブレーション処理を実行するため、複数のメモリへのアクセスを同時に実行できない期間が存在することになる。画像処理装置では、補正パラメータの生成時にアクセスしているメモリへのキャリブレーション処理のタイミングと、表示デバイスが表示するとき、つまり表示データにアクセスしているメモリへのキャリブレーション処理のタイミングとが異なる。同時にキャリブレーション処理を実行すると、どちらかのキャリブレーション禁止期間に重なり、補正パラメータの作成ができず画像データの生成が間に合わないことや、表示データの欠落によって表示デバイスの表示画像に乱れが生じることが起こりうる。
この点、本実施形態による画像処理装置では、撮像補正部101がバッファ102を備え、表示部105がバッファ106を備えている。撮像補正部101及び表示部105がキャリブレーション時間を考慮した最低限の容量のバッファ102,106を備えることで、各メモリにキャリブレーション処理用のバッファを設ける場合よりも回路規模を削減することが可能となる。メモリを多く搭載する画像処理装置であれば、より回路規模の削減効果が大きくなる。
また、本実施形態では、4つのメモリのそれぞれに対して4フレーム毎に行うキャリブレーション処理を、メモリ毎に異なるフレーム期間(一定周期の複数の期間のうちの異なる期間)に実行するようにしている。すなわち、各フレームに1度のキャリブレーション処理を実行する構成となっている。各メモリのキャリブレーション間隔が5フレーム以上、例えば5フレーム毎や6フレーム毎にキャリブレーション処理を実行するような場合には、キャリブレーション処理を実行しないフレーム期間が発生する。いずれの場合にも、各フレームにおいて行われるキャリブレーション処理の回数は、1回以下である。そして、各メモリのキャリブレーション処理は、各メモリのキャリブレーション禁止期間を外して定められた所定の期間にそれぞれ実行することができる。これにより、センサ100からの画素データの取りこぼしや表示デバイス114の表示の乱れなどのシステム破綻を防止することができる。
なお、本実施形態では、キャリブレーション禁止期間として、CPU113が補正パラメータを生成している期間、表示部105がバッファ106に表示データを溜めている期間を例示したが、キャリブレーション禁止期間はこれらに限定されるものではない。キャリブレーション禁止期間は、それぞれのメモリにアクセスする処理部の動作状態に応じて適宜設定することができる。
このように、本実施形態によれば、メモリを備える画像処理装置において、回路規模の増大やシステムの破綻を防止しつつメモリのキャリブレーション処理を実行することができる。
[第2実施形態]
本発明の第2実施形態による画像処理装置について、図5及び図6を用いて説明する。第1実施形態による画像処理装置と同様の構成要素には同一の符号を付し、説明を省略し或いは簡潔にする。
本実施形態では、第1実施形態に示した画像処理装置の他の駆動方法を説明する。本実施形態の駆動方法においては、撮像補正部101のバッファ102及び表示部105のバッファ106は、必ずしも有する必要はない。
本実施形態による画像処理装置におけるメモリ部110のキャリブレーション処理のタイミングについて、図5及び図6を用いて説明する。ここでは、第1実施形態と同様、4フレーム(66.66ms=16.66ms×4)ごとに各メモリのキャリブレーション処理が必要な場合を想定した動作の説明を行う。
図5は、タイミング調整部115が実行するキャリブレーションタイミング調整処理の処理フローを示す図である。第1実施形態との違いは、撮像補正部101がアクセスするメモリA200とメモリB201とをグループ化していることである。
タイミング調整部115は、キャリブレーションタイミング調整処理が開始すると、まず、メモリA200及びメモリB201がキャリブレーション処理の対象であるか否かを判定する(ステップS500)。メモリA200及びメモリB201がキャリブレーション処理の対象である場合(YES)にはステップS501へ移行し、メモリA200及びメモリB201がキャリブレーション処理の対象でない場合(NO)にはステップS503へと移行する。キャリブレーション処理の対象であるか否かの判定は、過去3フレーム以内にキャリブレーション処理が実施されているかどうかを基準とする。すなわち、過去3フレーム以内にメモリA200及びメモリB201に対してキャリブレーション処理が実施されていない場合にはキャリブレーション処理の対象であると判定する。また、過去3フレーム以内にメモリA200及びメモリB201に対してキャリブレーション処理が実施されている場合にはキャリブレーション処理の対象ではないと判定する。
ステップS501において、タイミング調整部115は、メモリA200及びメモリB201のキャリブレーション処理の実行タイミングであるか否かを判定する。キャリブレーション処理の実行タイミングである場合(YES)にはステップS502へと移行し、キャリブレーション処理の実行タイミングでない場合(NO)にはステップS503へと移行する。
キャリブレーション処理の実行タイミングであるか否かの判定は、メモリA200及びメモリB201にアクセスする処理部の動作状態に基づいて行われる。例えば、撮像補正部101が1フレーム分の補正済み画像データをメモリA200に書き終え、且つ、CPU113がメモリB201から読み出した補正データに基づいて補正パラメータを作成する期間が終了したときに、キャリブレーション処理を実行する。具体的には、CPU113は、補正パラメータの作成を終了した後、キャリブレーション処理の開始を知らせる信号をタイミング調整部115に送信する。タイミング調整部115は、この信号に基づいてキャリブレーション処理を実行すると判定する。
ステップS502において、タイミング調整部115は、メモリ制御部109にメモリA200及びメモリB201のキャリブレーション処理の実行タイミングを通知する。通知を受信したメモリ制御部109は、メモリA200及びメモリB201に対して所定のタイミングでキャリブレーション処理を実行する。キャリブレーション処理の終了後は、ステップS509へと移行する。
ステップS503からステップS509までの処理は、図3を用いて説明した第1実施形態のステップS306からステップS312までの処理と同じであるため、ここでの説明は省略する。
図6は、メモリ部110へのアクセス状況を時間方向(横軸)に示したタイミング図である。図6には、連続する4フレーム分の動作を示しており、矢印はメモリ部110のキャリブレーション処理を実行するタイミングを示している。
図6に示す動作例では、図5の処理フローに沿って、1フレーム目にメモリA200、メモリB201、メモリC202及びメモリD203のキャリブレーション処理を実行している。2フレーム目から4フレーム目には、メモリのキャリブレーション処理を実行していない。図示しない5フレーム目以降は、1フレーム目から4フレーム目までと同様の処理が繰り返し行われる。
メモリA200,B201のキャリブレーション処理は、撮像補正部101がメモリA200にアクセスしていない期間(Vブランキング期間)、且つ、CPU113がメモリB201にアクセスしていない期間(補正パラメータの生成完了後)に実行する。メモリC202のキャリブレーション処理は、表示部205が表示データの送信を完了したタイミング、つまり表示のVブランキング期間に実行する。メモリD203のキャリブレーション処理は、CPU113がアクセスしていないタイミングで実行する。
なお、本実施形態では各メモリのキャリブレーション間隔を4フレームとしたが、図6に示すように、総てのメモリのキャリブレーション処理は1フレーム期間の間に実施することができる。したがって、本実施形態においては、各メモリのキャリブレーション間隔は1フレームに設定することも可能である。
以上説明したように、本実施形態による画像処理装置では、メモリ部110へのアクセスを、撮像系のグループと、表示系のグループと、CPU系のグループとの3つに分けている。このように構成することで、キャリブレーション処理のタイミングもグループ化することができ、各メモリのキャリブレーション間隔が短い場合にも対応することが可能となる。また、メモリ部110にアクセスしていない期間にキャリブレーション処理を行うことで、バッファ102及びバッファ106の容量を削減し、或いは、バッファ102,106を除去することが可能となり、回路規模の更なる削減が可能となる。
このように、本実施形態によれば、メモリを備える画像処理装置において、回路規模の増大やシステムの破綻を防止しつつメモリのキャリブレーション処理を実行することができる。
[第3実施形態]
本発明の第3実施形態による画像処理装置について、図7及び図8を用いて説明する。第1及び第2実施形態による画像処理装置と同様の構成要素には同一の符号を付し、説明を省略し或いは簡潔にする。
本実施形態では、第1実施形態に示した画像処理装置の他の駆動方法を説明する。本実施形態の駆動方法においては、メモリ部110が1つのメモリで構成されている場合を想定する。
本実施形態による画像処理装置におけるメモリ部110のキャリブレーション処理のタイミングについて、図7及び図8を用いて説明する。ここでは、1フレーム(16.66ms)ごとにメモリ部110のキャリブレーション処理が必要な場合を想定した動作の説明を行う。
図7は、タイミング調整部115が実行するキャリブレーションタイミング調整処理の処理フローを示す図である。
タイミング調整部115は、キャリブレーションタイミング調整処理が開始すると、まず、メモリ部110がキャリブレーション処理を実行するタイミングであるか否かを判定する(ステップS700)。メモリ部110がキャリブレーション処理を実行するタイミングである場合(YES)にはステップS701へと移行し、メモリ部110がキャリブレーション処理を実行するタイミングでない場合(NO)にはステップS712へと移行する。
キャリブレーション処理を実行するタイミングであるか否かの判定は、メモリ部110にアクセスする処理部の構成や動作状態に基づいて行う。例えば、撮像補正部101がバッファ102を有する場合は、CPU113による補助データの読み出しから補正パラメータの作成終了までの期間をキャリブレーション禁止期間とし、禁止期間を知らせる信号をCPU113がタイミング調整部115に送信する。タイミング調整部115は、CPU113から受信した信号に基づいてキャリブレーション処理の実行の可否の判定を行う。撮像補正部101がバッファ102を持たない場合、撮像補正部101が1フレーム分の画像データをメモリ部110に書き終え、且つ、CPU113が補正パラメータを作成し終えたタイミングである場合に、キャリブレーション処理を実行すると判定する。具体的には、補正パラメータの作成を終了した後、CPU113はキャリブレーション処理の開始を知らせる信号をタイミング調整部115に送信する。
ステップS701において、タイミング調整部115は、CPU113から受信した信号に基づいて、メモリ制御部109にメモリ部110のキャリブレーション処理の実行タイミングを通知する。通知を受信したメモリ制御部109は、メモリ部110に対して所定のタイミングでキャリブレーション処理を実行する。キャリブレーション処理の終了後は、ステップS712へと移行する。
ステップS712の処理は、図3を用いて説明した第1実施形態のステップS312の処理と同じであるため、ここでの説明は省略する。
図8は、撮像補正部101がバッファ102を持たない構成において、メモリ部110へのアクセス状況を時間方向(横軸)に示したタイミング図である。図8には、連続する2フレーム分の動作を示しており、矢印はメモリ部110のキャリブレーション処理を実行するタイミングを示している。図8に付した斜線部は、撮像補正部101がバッファ102を有するか否かにかかわらず、共通にキャリブレーション処理が禁止される期間を表している。
図8に示す動作例では、図7の処理フローに沿って、各フレームにおいてメモリ部110のキャリブレーション処理を実行している。メモリ部110のキャリブレーション処理は、撮像補正部101がメモリ部110にアクセスしていない期間(Vブランキング期間)、且つ、CPU113がメモリ部110にアクセスしていない期間(補正パラメータの生成完了後)に実行する。
以上説明したように、本実施形態では、メモリ部110のキャリブレーション禁止期間を設けることで、補正パラメータ生成をVブランキング期間内に終えることが可能となり、システムの破綻を防ぐことが可能となる。また、バッファ102を持たない構成を採用することも可能となるため、回路規模の更なる削減が可能となる。
このように、本実施形態によれば、メモリを備える画像処理装置において、回路規模の増大やシステムの破綻を防止しつつメモリのキャリブレーション処理を実行することができる。
[第4実施形態]
本発明の第4実施形態による画像処理装置について、図9乃至図12を用いて説明する。第1乃至第3実施形態による画像処理装置と同様の構成要素には同一の符号を付し、説明を省略し或いは簡潔にする。
本実施形態では、第1実施形態に示した画像処理装置の他の駆動方法を説明する。本実施形態の駆動方法においては、第3実施形態の場合と同様、メモリ部110が1つのメモリで構成されている場合を想定する。
本実施形態による画像処理装置におけるメモリ部110のキャリブレーション処理のタイミングは、図7のステップS700における判定基準が異なるほかは、第3実施形態と同様である。ここでは、1フレーム(16.66ms)ごとにメモリ部110のキャリブレーション処理が必要な場合を想定した動作の説明を行う。
タイミング調整部115は、キャリブレーションタイミング調整処理が開始すると、まず、メモリ部110がキャリブレーション処理を実行するタイミングであるか否かを判定する(ステップS700)。メモリ部110がキャリブレーション処理を実行するタイミングである場合(YES)にはステップS701へと移行し、メモリ部110がキャリブレーション処理を実行するタイミングでない場合(NO)にはステップS712へと移行する。
キャリブレーション処理を実行するタイミングであるか否かの判定は、メモリ部110にアクセスする処理部の動作状態に基づいて行われる。例えば、メモリ部110に対しては、表示処理部104による表示データの書き込みと、表示部105により表示データの読み出しとが行われる。そこで、本実施形態では、第3実施形態の判定に加え、表示部105のバッファ106に、キャリブレーション処理の実行中にメモリ部110にアクセスできない期間の表示データが蓄積されていれば、キャリブレーション処理を実行すると判定する。
具体的には、バッファ106に表示データが蓄積されていることを示す信号を表示部105がタイミング調整部115に送信し、タイミング調整部115はこの信号に基づいてキャリブレーション処理を実行すると判定する。或いは、表示デバイス114への表示データの送信完了タイミングを示す信号を表示部105がタイミング調整部115に送信し、タイミング調整部115はこの信号に基づいてキャリブレーション処理を実行すると判定する。表示部105がバッファ106を持たない場合は、Vブランキング期間の開始のタイミングでキャリブレーション処理を実行すると判定する。具体的には、Vブランキング期間の開始のタイミングを示す信号を表示デバイス114がタイミング調整部115に送信し、タイミング調整部115はこの信号に基づいてキャリブレーション処理を実行すると判定する。
図9乃至図12は、メモリ部110へのアクセス状況を時間方向(横軸)に示したタイミング図である。図9乃至図12には、連続する2フレーム分の動作を示しており、矢印はメモリ部110のキャリブレーション処理を実行するタイミングを示している。図9乃至図12に付した斜線部は、キャリブレーション処理が禁止されている期間を表している。
図9は、表示部105がバッファ106を有する構成の場合における表示データのメモリアクセスのタイミングを示すタイミング図である。図9に示す動作例では、図7の処理フローに沿って、各フレームにおいてメモリ部110のキャリブレーション処理を実行する。具体的には、バッファ106に表示データが蓄積されるまでの期間をキャリブレーション禁止期間とし、バッファ106に表示データが蓄積された後にメモリ部110のキャリブレーション処理を実施している。
図10は、表示部105がバッファ106を持たない構成の場合における表示データのメモリアクセスのタイミングを示すタイミング図である。図10に示す動作例においても、図7の処理フローに沿って、各フレームにおいてメモリ部110のキャリブレーション処理を実行する。具体的には、表示データを表示デバイス114に転送する期間をキャリブレーション禁止期間とし、表示のVブランキング期間にメモリ部110のキャリブレーション処理を実施している。
図11は、撮像補正部101がバッファ102を有し、表示部105がバッファ106を有する構成の場合における表示データ及び補正済み画像データのメモリアクセスのタイミングを示すタイミング図である。図11に示す動作例においても、図7の処理フローに沿って、各フレームにおいてメモリ部110のキャリブレーション処理を実行する。具体的には、CPU113が補正パラメータを生成している期間と、バッファ106に表示データが蓄積されるまでの期間との両方を、キャリブレーション禁止期間としている。そして、これらキャリブレーション禁止期間を外して、且つ、撮像の開始と表示の開始を待ってからキャリブレーション処理を実施している。なお、撮影タイミングに応じて、撮像と表示の開始が一意に決まらない静止画像を撮像する画像処理装置は、本構成のようにバッファ102,106を有する構成が望ましい。
図12は、撮像補正部101がバッファ102を持たず、表示部105がバッファ106を有する構成の場合における表示データ及び補正済み画像データのメモリアクセスのタイミングを示すタイミング図である。図12に示す動作例においても、図7の処理フローに沿って、各フレームにおいてメモリ部110のキャリブレーションを実行する。具体的には、CPU113が補正パラメータ生成している期間と、バッファ106に表示データが蓄積されるまでの期間との両方をキャリブレーション禁止期間としている。キャリブレーション処理の実行タイミングは、CPU113が補正パラメータを生成した後となる。本構成では、CPU113が補正パラメータを生成した後にキャリブレーション処理を実行する期間と、バッファ106に表示データが蓄積されるまでの期間とが重ならないように、表示の開始や撮像の開始のタイミングを調整する必要がある。
以上説明したように、本実施形態では、メモリ部110へのキャリブレーション禁止期間を設けることで、表示デバイス114の表示の乱れを防止することが可能となり、システムの破綻を防ぐことが可能となる。また、バッファ106を持たない構成を採用することも可能となるため、回路規模の更なる削減が可能となる。また、画像データと表示データの格納に同一のメモリを用いたときも、補正パラメータ生成をVブランキング期間内に終えることができ、また、表示デバイス114の表示の乱れを防止することが可能となり、システムの破綻を防ぐことが可能となる。また、バッファ102を持たない構成も可能となるため、回路規模の更なる削減が可能となる。
このように、本実施形態によれば、メモリを備える画像処理装置において、回路規模の増大やシステムの破綻を防止しつつメモリのキャリブレーション処理を実行することができる。
[第5実施形態]
本発明の第5実施形態による画像処理装置について、図13乃至図15を用いて説明する。
図13は、本実施形態による画像処理装置の概略構成を示すブロック図である。本実施形態では、画像処理装置を、撮像装置の一部の機能ブロックとして用いた場合を例にして説明する。図13は、例えばデジタルカメラやデジタルビデオカメラといった撮像装置における画像処理用LSI(Large Scale Integrated-circuit)を中心とした画像処理回路の概略を示している。
本実施形態の画像処理装置を搭載した撮像装置1000は、撮像センサ部300と、撮像補正部301と、同期信号生成部302と、画像処理部303,304と、メモリインターフェース部305,306と、メモリ部307,308と、を備える。各処理ブロックは、不図示のCPU(Central Processing Unit)によって、パラメータの変更や処理の開始、停止といった動作制御が可能である。CPUは、更に、不図示のユーザ操作部を介して、ユーザからの指示に基づき各処理ブロックを制御することが可能である。
撮像センサ部300は、レンズなどの光学系やCCDイメージセンサ、CMOSイメージセンサといった撮像センサで構成されており、不図示のユーザ操作指示部を介したユーザからの指示に従い、受光した被写体像を電気信号に変換して撮像データを生成する。
撮像補正部301は、撮像センサ部300で生成された撮像データに対して、画素補正、黒レベル補正、シェーディング補正、傷補正などの処理を施してメイン画像データを生成し、後段の画像処理部303に出力する。同時に、撮像補正部301は、例えば、ホワイトバランスの調整などに使用する補助パラメータ生成のためのサブ画像データを作成し、後段の画像処理部304に出力する。
ここで、撮像補正部301は、同期信号生成部302から出力される同期信号1を基に補正処理を行う。同期信号1は、例えば撮像センサ部300が1フレームあたり33msecの駆動タイミングで動作する場合、33msecの間隔でパルスを発生するデジタル信号である。
撮像補正部301は、内部に不図示のバッファを備えている。このバッファは、後段のメモリ部307及びメモリ部308がトレーニング中でメモリへのアクセスができない期間に、撮像センサ部300からの撮像データを溜めておくためのバッファである。ここで、本実施形態のような複数のメモリへ同時にデータを出力する画像処理装置では、トレーニングによるメモリアクセス不可期間のデータ退避用のバッファの容量は、後段のメモリ部307とメモリ部308の双方のトレーニングが影響する。ただし、本実施形態では、トレーニング実行タイミングの制御により、同期信号1で規定される1フレーム内でメモリに対するトレーニングが1回だけ実行されるように制御するため、バッファはトレーニング1回分相当の退避データの容量を実装していればよい。
画像処理部303は、撮像補正部301から出力されるメイン画像データに対し、ホワイトバランス調整、倍率色収差補正、ガンマ補正や輝度・色生成処理、幾何変形、ノイズリダクションなどの複数の処理を実行する。このようにして、画像処理部303で生成された記録用画像データ(第1の画像データ)は、メモリインターフェース部305を介して、DRAMで構成されるメモリ部307に記録される。なお、メモリ部307は、第1乃至第4実施形態におけるメモリA200に相当する。
また、画像処理部304は、撮像補正部301から出力されるサブ画像データに対し、例えばリサイズ処理や簡易的な輝度・色生成処理を行い、ホワイトバランス調整用の補助パラメータを生成するための評価値用画像データ(第2の画像データ)を生成する。画像処理部304で生成された評価値用画像データは、メモリインターフェース部306を介して、DRAMで構成されるメモリ部308に記録される。なお、メモリ部308は、第1乃至第4実施形態におけるメモリB201に相当する。撮像補正部301は同期信号1に基づき動作するため、画像処理部303及び画像処理部304から出力される画像データは同期信号1と同じフレームレートでメモリ部307及びメモリ部308に書き込まれる。
なお、本明細書では、撮像補正部301と画像処理部303,304とを総括して画像処理部(第1の画像処理部)と呼ぶことがある。
次に、メモリインターフェース部305及びメモリインターフェース部306の詳細について、図14を用いて説明する。なお、図14にはメモリインターフェース部305を例示しているが、メモリインターフェース部306も同様の構成を有している。
メモリインターフェース部305は、図14に示すように、周期カウント部400と、トレーニング実行指示部401と、トレーニング部403と、メモリ制御部404と、を備えている。メモリインターフェース部305は、画像処理部303から出力される画像データを、メモリ制御部404を介してメモリ部307へ記録する。
ここで、メモリインターフェース部305には、画像処理部303のほか、不図示のマスターモジュールが繋がっている。これらマスターモジュールとメモリインターフェース部305とは、例えばAMBA(Advanced Microcontroller Bus Architecture)規格のAXIプロトコルによるメモリバスで繋がっている。
各マスターモジュールからはライトやリードのコマンドがメモリ制御部404に送られ、不図示のコマンド調停回路により、メモリ部307へのコマンド発行順を決定する。その後、コマンドはメモリ制御部404に内蔵されている不図示のコマンドFIFO(First In First Out)に、決定したコマンド発行順でコマンドを貯めていく。コマンドFIFOから読み出されたコマンドは、例えばDFI(DDR PHY Interface)規格のコマンドに変換され、メモリ制御部404の最もメモリ部307側に配置された不図示のインターフェース回路へと転送される。
ここで、インターフェース回路とは、DRAM−PHY(Physical-Layer)であり、メモリ部307とメモリアクセスを行うためのデジタル回路及びアナログ回路で構成されている。DRAM−PHYでは、コマンドFIFOからのコマンドに基づき、メモリ部307へメモリアクセスコマンドを発行する。
以上により、画像処理部303などのマスターモジュールは、メモリインターフェース部305を介して、メモリ部307へのデータアクセスが可能となる。
次に、メモリインターフェース部305におけるトレーニング制御について説明する。
メモリインターフェース部305には、同期信号生成部302から、撮像補正部301で使用している同期信号1と同じ信号が入力される。同期信号1は、周期カウント部400に内蔵されている周期カウンタのカウントアップ用のタイミング信号として用いられる。これにより、周期カウント部400では、撮像補正部301以降の画像処理と同期したフレームレートで周期カウントが可能となる。また、周期カウント部400に内蔵されている周期カウンタは、クリア条件となるカウントクリア値をレジスタとして内蔵しているため、CPU402からの指示で任意の値に設定することが可能である。
同期信号1は、前述の通り、撮像センサ部300の1フレームあたりの駆動タイミングと同じ33msec間隔でパルスを発生する。よって、定期的に実行が必要なトレーニングの実行間隔として規定されているトレーニングインターバルが100msecであれば、カウントクリア値を2に設定することで3フレーム分の99msec単位で周期カウントすることが可能となる。
周期カウント部400で生成されたカウント値は、後段のトレーニング実行指示部401に送られる。トレーニング実行指示部401は、周期カウント部400から供給されたカウント値と、CPU402により設定されたカウント比較値とを比較し、一致した場合にトレーニング実行指示としてトリガ信号を後段のトレーニング部403に出力する。なお、トレーニング実行指示部401は、第1乃至第4実施形態におけるタイミング調整部に対応する。
トレーニング部403は、トレーニング実行指示部401からのトリガ信号を基にメモリ制御部404を介して、メモリ部307との間でトレーニングを実行する。このとき、メモリ制御部404では、コマンドFIFOに溜まっている次のアクセスコマンドの発行を中断し、トレーニング部403からのトレーニングに関するコマンド発行を優先する。
次に、トレーニングについて説明する。本発明におけるトレーニングとは、温度変化と電圧変化によって生じるメモリインターフェース部305とメモリ部307とのタイミングスペックとなるtDQS2DQ及びtDQSCKの変動をキャリブレーションすることである。本実施形態及び次の第6実施形態におけるトレーニングは、第1乃至第4実施形態におけるキャリブレーション処理と実質的に同じ処理である。
まず、tDQS2DQのトレーニングについて説明する。tDQS2DQは、ライト時のDQSとDQの遅延時間を表しており、トレーニング時は、例えばLPDDR4ではDRAMデバイスに内蔵されているDQSのクロックツリー遅延変動量モニタの結果をMR(Mode Register)から読み取る。DRAMデバイスのMRへのアクセスは、図14のトレーニング部403によりメモリ制御部404を介してMRアクセス専用のコマンドが発行されることで可能である。DRAMデバイスのDQSのクロックツリー遅延変動量モニタの結果より、メモリ制御部404内にある不図示の遅延量調整回路で、ライト時に出力するDQの遅延量を調整する。これにより、温度変化と電圧変化によって変動するライト時のtDQS2DQを補正することが可能となる。
次に、tDQSCKのトレーニングについて説明する。tDQSCKは、リード時にDRAMデバイスから送られるDQSの取り込みタイミングを規定している値である。例えばLPDDR4ではDRAMデバイス内の固有値を持つMRをリードすることでキャリブレーション処理を行い、メモリインターフェース部305内にある不図示の遅延量調整回路で、リード時に入力するDQSのGatingタイミングを調整する。これにより、温度変化と電圧変化によって変動するリード時のtDQSCKを補正することが可能となる。
以上のメモリインターフェース部305の構成は、前述したようにメモリインターフェース部306の構成と同じである。よって、メモリ部308に対するトレーニング実行タイミングは、メモリ部307に対するトレーニング実行タイミングと同様に、同期信号1に同期したフレーム単位で任意に設定することが可能である。
次に、本実施形態よる画像処理装置におけるメモリ部307及びメモリ部308に対するトレーニング実行タイミングについて、図15を用いて説明する。図15は、本実施形態による画像処理装置におけるメモリ部のトレーニングタイミングを示すタイミング図である。
図15に示した例では、メモリインターフェース部305の周期カウント1及びメモリインターフェース部306の周期カウント2は、3フレーム分に設定している。また、メモリインターフェース部305は、カウント比較値を0とすることで、周期カウント1が0となるT10,T11,T12及びT13のタイミングでトレーニングが行われる。また、メモリインターフェース部306は、カウント比較値を2とすることで、周期カウント2が2となるT20,T21,T22及びT23のタイミングでトレーニングが行われる。
これにより、メモリ部307,308に対するトレーニングはトレーニングインターバルを遵守した形で、同期信号1における異なるフレームタイミング(一定周期の複数の期間のうちの異なる期間)で、それぞれのトレーニングを実行することが可能となる。
このように、本実施形態によれば、複数のDRAMへの同時アクセスが必要な画像処理において、画像処理の同期信号に基づいてDRAMごとのトレーニング実行タイミングをフレーム単位で制御することが可能となる。これにより、同一フレーム内では1回のトレーニングしか実行しないように制御することができるため、画像処理側のバッファ容量を増大することなく、システム破綻を防止することが可能となる。
[第6実施形態]
本発明の第6実施形態による画像処理装置について、図16乃至図18を用いて説明する。第5実施形態による画像処理装置と同様の構成要素には同一の符号を付し、説明を省略し或いは簡潔にする。
図16は、本実施形態による画像処理装置を搭載した撮像装置の概略構成を示すブロック図である。本実施形態の撮像装置1000は、第5実施形態と同様、撮像センサ部300と、撮像補正部301と、同期信号生成部302と、画像処理部303,304と、メモリインターフェース部305,306と、メモリ部307,308と、を備えている。本実施形態の撮像装置1000は、更に、同期信号生成部500と、同期信号選択部501と、表示制御部502と、メモリインターフェース部503と、メモリ部504と、ディスプレイ部505と、を備えている。
表示制御部502(第2の画像処理部)は、メモリ部308及びメモリ部504から読み出した画像データに対してリサイズ処理、ガンマ処理、色域変換などの複数の処理を実行し、ディスプレイ部505に表示する表示データを生成する。なお、表示制御部502は、第1乃至第4実施形態の画像処理装置における表示処理部104及び表示部105に相当する。ディスプレイ部505は、LCDなどの表示デバイスである。メモリインターフェース部503は、第5実施形態で説明したメモリインターフェース部305と同じ構成である。
ここで、例えばメモリ部308には、撮像データを基に画像処理部304によって生成された画像データ(第1の画像データ)が記録されている。また、メモリ部504には、CPUによって生成されたOSD(On-Screen Display)データ(第3の画像データ)が記録されている。
表示制御部502は、メモリ部308の画像データとメモリ部504のOSDデータとを、ディスプレイ部505の表示レートに合わせて同時に読み出し、これらの画像を重畳してなる表示データをディスプレイ部505に転送する。このとき、表示制御部502は、表示処理を表示レートに同期させるために、同期信号生成部500で生成される同期信号2を基準として表示データの読み出しや表示処理を行う。
また、表示制御部502は、複数のメモリからデータを読み出し、一定レートで表示画像をディスプレイ部505へ転送する必要があるため、撮像補正部301と同様にトレーニングによるメモリアクセス不可期間のデータ退避用のバッファを内蔵している。この表示制御部502に内蔵されているバッファも、複数のメモリから同時にデータを読み出すため、メモリ部308とメモリ部504との双方のトレーニングによるメモリアクセス不可期間が影響する。ただし、本実施形態では、後述するトレーニング実行タイミングの制御により、同期信号2における同一フレーム内にメモリに対するトレーニングが1回だけ実行されるように制御する。そのため、バッファはトレーニング1回分相当の退避データの容量のみ実装していればよい。
次に、同期信号選択部501について説明する。同期信号選択部501では、同期信号生成部302から供給される同期信号1の周期と、同期信号生成部500から供給される同期信号2の周期とを比較し、周期が長い方を選択し、後段のメモリインターフェース部に選択した同期信号を送る。
ここで、同期信号選択部501において、同期信号1の周期と同期信号2の周期とを比較し、周期が長い方を選択する理由について、図17及び図18を用いて説明する。図17及び図18は、本実施形態による画像処理装置におけるメモリ部のトレーニングタイミングを示すタイミング図である。
本実施形態では、撮像補正部301を起点とした画像処理において、メモリ部307とメモリ部308とが同時に使用される。同様に、表示制御部502を起点とした表示処理においては、メモリ部308とメモリ部504とを同時に使用することになる。ただし、記録用画像の画像処理と表示処理とでは、それぞれの画像処理レートが異なる場合がある。例えば、記録用画像の画像処理を追尾処理やAF(Auto Focus)用にディスプレイ部505の表示レートよりも早い処理レートで実行する場合が該当する。
具体的な例として、図17に示したように、例えば記録用画像の画像処理のための同期信号1は、ディスプレイ部505の表示レートの33msecより早い16msecの周期で生成される場合がある。
ここで、図17に示したWR10〜WR15は、撮像補正部301を起点とした画像処理において生成された記録用画像データを、同期信号1のフレーム周期で、メモリ部307に書き込んでいるアクセス期間を示している。同様に、図17に示したWR20〜WR25は、撮像補正部301を起点とした画像処理において生成された評価値用画像データを、同期信号1のフレーム周期でメモリ部308に書き込んでいるアクセス期間を示している。
また、図17に示したRD20〜RD22は、表示制御部502を起点とした表示処理において、ディスプレイ部505に表示するための自然画像データを、同期信号2のフレーム周期で、メモリ部308から読み出しているアクセス期間を示している。同様に、図17に示したRD30〜RD32は、表示制御部502を起点とした表示処理において、ディスプレイ部505に表示するためのOSDデータを、同期信号2のフレーム周期で、メモリ部504から読み出しているアクセス期間を示している。
図17において、T10は、メモリ部307に対するトレーニングが実行される期間を示している。このとき、記録用画像データの書き込みアクセスWR10はトレーニング実行期間T10によって中断されるため、同時に画像処理を行っているメモリ部308への評価値用画像データの書き込みアクセスWR20も中断される。図17において、このメモリ部307に対するトレーニング実行期間T10によって、メモリ部308への書き込みアクセスWR20が中断される期間をW10と表記している。
同様に、図17において、T20はメモリ部308に対するトレーニングが実行される期間を示している。このとき、メモリ部308へは評価値用画像データの書き込みアクセスWR22と、自然画像データの読み出しアクセスRD21が、トレーニング実行期間T20によって中断される。ここで、T20はメモリ部308に対するトレーニング実行期間T20によって、撮像補正部301を起点とした画像処理と、表示制御部502を起点とした表示処理は同時にメモリアクセスが中断する。よって、メモリ部308に対するトレーニング実行期間T20と同時刻に、メモリ部307への書き込みアクセスWR12が、図17に示したW20の期間、メモリアクセスが中断される。同様に、メモリ部308に対するトレーニング実行期間T20と同時刻に、メモリ部504からの読み出しアクセスRD31がW20の期間、メモリアクセスが中断される。
同様に、図17においてT30は、メモリ部504に対するトレーニングが実行される期間を示している。このとき、トレーニング実行期間T30によって、表示処理における読み出しアクセスRD32が中断されるため、その影響がメモリ部308の読み出しアクセスRD22に中断期間W30として現れる。
ここで、図17では、メモリ部307、メモリ部308、メモリ部504は、周期の長い表示処理用の同期信号2を基に周期カウンタをカウントアップし、トレーニング実行タイミングを制御している。これにより、各処理において、1フレーム内には1回分のトレーニングしか実行されないためシステムの破綻が発生しない。
また、図17において、同期信号1と同期信号2は分かりやすいように同期している様に示しているが、双方の周期は非同期関係になる場合がある。
図18に、同期信号が非同期関係にある場合の各メモリへのアクセスタイミングの一例を示す。図18では、複数の画像処理の同期信号が非同期関係にある場合に、周期の短い同期信号でトレーニング実行タイミングを制御した際に発生する問題を示している。
図18において、メモリ部308に対するトレーニング実行期間T20が、例えば周期の短い同期信号1でカウントされた周期カウンタが2を示すときに実行したとする。このとき、トレーニング実行期間T20によって、メモリ部308の読み出しアクセスRD21が中断されるため、同時に処理しているメモリ部504の読み出しアクセスRD31はW20の期間アクセスが中断される。
同様に、メモリ部504に対するトレーニング実行期間T30が、例えば周期の短い同期信号1でカウントされた周期カウンタが4を示すときに実行したとする。このとき、表示処理については1フレームの処理期間中に2回分のトレーニングが発生することになり、前述したバッファの容量が足りなくなりシステム破綻を起す。
また、図18において、トレーニング実行タイミングをフレーム単位よりも細かい粒度で位相調整が可能であるとしても、各メモリのアクセス状況を監視しながらトレーニング実行タイミングを制御する必要があるため、制御が複雑になる。
また、図17及び図18には各メモリへのアクセスが分かりやすいように主たるデータアクセスしか示していないが、実際の撮像装置などの画像処理やシステム動作では、様々な複数のメモリアクセスが同時に発生している。そのため、複数のメモリに対するトレーニングを同時刻に実施しようとしても、待ち合わせのための無駄なメモリアクセス中断の期間を要することとなり、効率的なメモリシステムを実現することはできない。
以上の問題を解決するために、本実施形態で説明したように、同期信号選択部501において、同期信号1の周期と同期信号2の周期とを比較し、周期が長い方の同期信号を選択するように構成することが望ましい。そして、選択した同期信号の周期を単位として、メモリ部307,308,504のトレーニングを実行する。
このように、本実施形態によれば、複数のDRAMへの非同期なメモリアクセスが発生する画像処理が混在しても、適切な同期信号を選択することでこの同期信号に基づいてDRAMごとのトレーニング実行タイミングをフレーム単位で制御することが可能となる。
これにより、非同期に複数の画像処理によるメモリアクセスが発生しても、同一フレーム内では1回のトレーニングしか実行しないように制御することができるため、画像処理側のバッファ容量を増大することなく、システム破綻を防止することが可能となる。
[変形実施形態]
本発明は、上記実施形態に限らず種々の変形が可能である。
例えば、いずれかの実施形態の一部の構成を他の実施形態に追加した例や、他の実施形態の一部の構成と置換した例も、本発明の実施形態である。
また、上記第1及び第2実施形態では画像処理装置が4つのメモリA200〜メモリD203を有する場合を説明した。また、第3及び第4実施形態では画像処理装置が1つのメモリを有する場合を説明した。また、第5及び第6実施形態では画像処理装置が3つのメモリ部307,308,504を有する場合を説明した。しかしながら、画像処理装置が備えるメモリの数は、画像処理装置が搭載されるシステムや画像処理装置が行う処理の数や種類等に応じて適宜変更されうる。
また、上記各実施形態で説明した各メモリ部のキャリブレーション処理の間隔は一例であって、適宜変更が可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、上記実施形態は、いずれも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならない。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。