JP2012028997A - 画像処理装置およびカメラ - Google Patents
画像処理装置およびカメラ Download PDFInfo
- Publication number
- JP2012028997A JP2012028997A JP2010165132A JP2010165132A JP2012028997A JP 2012028997 A JP2012028997 A JP 2012028997A JP 2010165132 A JP2010165132 A JP 2010165132A JP 2010165132 A JP2010165132 A JP 2010165132A JP 2012028997 A JP2012028997 A JP 2012028997A
- Authority
- JP
- Japan
- Prior art keywords
- image processing
- clock
- image
- processing circuit
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Picture Signal Circuits (AREA)
- Facsimiles In General (AREA)
- Television Systems (AREA)
- Studio Devices (AREA)
Abstract
【課題】 処理能力を維持しつつ消費電力の低減を図ること。
【解決手段】 画像データに画像処理を施すとともに、内部に第1のクロックゲート手段を有する画像処理部と、外部メモリにアクセスするための外部メモリインターフェース部と、各部を制御する制御部と、画像処理部と外部メモリインターフェース部と制御部とを相互に接続してデータ転送を行うための内部バスと、動作用の第1のクロックを画像処理部と外部メモリインターフェース部と制御部とに供給するクロック生成部とを備え、画像処理部は、第1のクロックゲート手段により第1のクロックを規定の割合で遮断することにより、第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第2のクロックを生成し、第2のクロックに同期して画像処理を行う。
【選択図】 図3
【解決手段】 画像データに画像処理を施すとともに、内部に第1のクロックゲート手段を有する画像処理部と、外部メモリにアクセスするための外部メモリインターフェース部と、各部を制御する制御部と、画像処理部と外部メモリインターフェース部と制御部とを相互に接続してデータ転送を行うための内部バスと、動作用の第1のクロックを画像処理部と外部メモリインターフェース部と制御部とに供給するクロック生成部とを備え、画像処理部は、第1のクロックゲート手段により第1のクロックを規定の割合で遮断することにより、第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第2のクロックを生成し、第2のクロックに同期して画像処理を行う。
【選択図】 図3
Description
本発明は、画像データに画像処理を施す画像処理装置およびその画像処理装置を備えたカメラに関する。
従来より、電子カメラなどにおいて画像データに画像処理を施す画像処理装置が広く知られている(例えば、特許文献1参照)。このような画像処理装置においては、撮像素子の画素数の増大などに伴い、高い処理能力が期待されている。
処理能力を向上させるには、動作クロックの周波数を上げれば良い。例えば、動作クロックの周波数を2倍に上げれば処理速度も2倍に上がり、反対に動作クロックの周波数を1/2に下げれば処理速度の方も1/2に低下する。すなわち、要求される処理能力に合わせて適切なクロックの周波数を決めれば良い。しかし、処理能力の向上を目的に動作クロックの周波数を上げると、消費電力が増大するという問題がある。一方、消費電力を低減させると、上述の処理性能が低下してしまう。
本発明の画像処理装置およびカメラは、上記問題に鑑みてなされたものであり、処理能力を維持しつつ消費電力の低減を図ることを目的とする。
本発明の画像処理装置は、画像データに画像処理を施す画像処理部と、外部メモリにアクセスするための外部メモリインターフェース部と、各部を制御する制御部と、前記画像処理部と前記外部メモリインターフェース部と前記制御部とを相互に接続してデータ転送を行うための内部バスと、動作用の第1のクロックを前記外部メモリインターフェース部と前記制御部とを含む各部に供給するクロック生成部と、前記クロック生成部から供給された前記第1のクロックを規定の割合で遮断することにより、前記第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第2のクロックを生成する第1のクロックゲート手段とを備え、前記画像処理部は、前記第2のクロックに同期して前記画像処理を行うことを特徴とする。
なお、前記第1のクロックを規定の割合で遮断することにより、前記第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第3のクロックを生成する第2のクロックゲート手段をさらに備え、前記画像処理部は、前記画像データに画像処理を施す第1の画像処理部と、前記第1の画像処理部により画像処理が施された前記画像データに画像処理を施す第2の画像処理部とからなり、前記第1の画像処理部は、前記第2のクロックに同期して前記画像処理を行い、前記第2の画像処理部は、前記第3のクロックに同期して前記画像処理を行っても良い。
また、前記第1のクロックゲート手段は、前記第2のクロックを前記第2の画像処理部にも供給し、前記第2の画像処理部は、前記第1の画像処理部により画像処理が施された前記画像データに画像処理を施す第3の画像処理部と、前記第3の画像処理部により画像処理が施された前記画像データに画像処理を施す第4の画像処理部とを備え、前記第3のクロックを前記第3の画像処理部および前記第4の画像処理部に供給する第1の供給方法と、前記第2のクロックを前記第3の画像処理部に供給し、前記第3のクロックを前記第4の画像処理部に供給する第2の供給方法とを切り換え可能な切り換え部をさらに備えても良い。
また、前記第4の画像処理部は、解像度変換処理回路を含み、前記第2のクロックゲート手段は、前記解像度変換処理回路により前記画像データを拡大する際には、拡大倍率に応じて前記第3のクロックの周波数を変更しても良い。
また、前記第2のクロックゲート手段は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部による画像処理と、前記第3のクロックに同期した前記第2の画像処理部による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部による画像処理と、前記第1の画像処理部から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第3の画像処理部に入力し、前記第3のクロックに同期した前記第3の画像処理部および前記第4の画像処理部による画像処理を施しても良い。
また、前記第2のクロックゲート手段は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部による画像処理と、前記第3のクロックに同期した前記第2の画像処理部による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部および前記第3の画像処理部による画像処理と、前記第3の画像処理部から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第4の画像処理部に入力し、前記第3のクロックに同期した前記第4の画像処理部による画像処理を施しても良い。
また、内部に第3のクロックゲート手段を有し、表示装置に前記画像データを表示するための表示コントローラをさらに備え、前記内部バスは、前記画像処理部と前記外部メモリインターフェース部と前記制御部と前記表示コントローラとを相互に接続してデータ転送を行い、前記クロック生成部は、前記第1のクロックを前記表示コントローラに供給し、前記表示コントローラは、前記第3のクロックゲート手段により前記第1のクロックを規定の割合で遮断することにより、前記第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第4のクロックを生成し、前記第4のクロックに同期して前記画像データを表示するための処理を行っても良い。
本発明の別の画像処理装置は、画像データに画像処理を施す画像処理部と、外部メモリにアクセスするための外部メモリインターフェース部と、各部を制御する制御部と、前記画像処理部と前記外部メモリインターフェース部と前記制御部とを相互に接続してデータ転送を行うための内部バスと、動作用の第1のクロックを前記外部メモリインターフェース部と前記制御部に供給するとともに、前記第1のクロックの周波数以下の周波数を持つ第2のクロックを前記画像処理部に供給し、前記第1のクロックと前記第2のクロックとの周波数関係を維持しつつ、前記第1のクロックの周波数と前記第2のクロックの周波数とを変更可能なクロック生成部とを備えたことを特徴とする。
なお、前記画像処理部は、画像処理回路と内部バスインターフェース部とを有し、前記クロック生成部は、前記第1のクロックを前記内部バスインターフェース部に供給するとともに、前記第2のクロックを前記画像処理回路に供給し、前記画像処理回路は、前記第2のクロックに同期して前記画像データに対して画像処理を施しても良い。
また、前記画像処理部は、前記内部バスを介してアクセス可能なレジスタとメモリとを備え、前記画像処理回路が停止している際には、最短の基本サイクルで前記レジスタおよび前記メモリに対するアクセスを行い、前記画像処理回路が動作している際には、その動作状態に応じて、前記基本サイクルを延長した長時間サイクルにより前記レジスタおよび前記メモリに対するアクセスを行っても良い。
また、前記画像処理回路における処理に前記画像データのブランキング期間と有効画素期間とが含まれる場合、前記ブランキング期間中は前記基本サイクルで前記レジスタおよび前記メモリに対するアクセスを行い、前記有効画素期間中は前記長時間サイクルにより前記レジスタおよび前記メモリに対するアクセスを行っても良い。
また、前記画像処理回路における処理の実行中において、前記画像処理回路が停止する期間は前記基本サイクルで前記レジスタおよび前記メモリに対するアクセスを行い、前記画像処理回路が動作する期間は前記長時間サイクルで前記レジスタおよび前記メモリに対するアクセスを行っても良い。
また、前記内部バスと前記レジスタとの間に配置される書き込みバッファと読み出しバッファとを備え、前記書き込みバッファは、前記レジスタの中の予め指定されたレジスタを前記内部バスを介して書き込む場合には、一旦データを格納した後に、目的のレジスタに前記データが移動されるように書き込みを行い、前記読み出しバッファは、前記レジスタの中の予め指定されたレジスタを前記内部バスを介して読み出す場合には、格納された値を読み出すとともに、前記指定されたレジスタの値が変化する度に新しい値をコピーするように読み出しを行い、前記書き込みバッファおよび前記読み出しバッファと前記内部バスとの間のデータ受け渡しは前記第1のクロックに同期して前記基本サイクルで行われ、前記書き込みバッファおよび前記読み出しバッファと前記指定されたレジスタとの間のデータ受け渡しは前記第2のクロックに同期して行われても良い。
また、前記画像処理回路は、第1の画像処理回路と、前記第1の画像処理回路により画像処理が施された前記画像データに画像処理を施す第2の画像処理回路とを備え、前記クロック生成部は、前記第2のクロックとともに前記第2のクロックとは異なる周波数を持つ第3のクロックを前記画像処理部に供給し、前記第1の画像処理回路は、前記第2のクロックに同期して前記画像処理を行い、前記第2の画像処理回路は、前記第3のクロックに同期して前記画像処理を行っても良い。
また、前記第2の画像処理回路は、前記第1の画像処理回路により画像処理が施された前記画像データに画像処理を施す第3の画像処理回路と、前記第3の画像処理回路により画像処理が施された前記画像データに画像処理を施す第4の画像処理回路とを備え、前記第3のクロックを前記第3の画像処理回路および前記第4の画像処理回路に供給する第1の供給方法と、前記第3のクロックを前記第4の画像処理回路に供給する第2の供給方法とを切り換える切り換え部をさらに備えても良い。
また、前記第4の画像処理回路は、解像度変換処理回路を含み、前記クロック生成部は、前記解像度変換処理回路により前記画像データを拡大する際には、拡大倍率に応じて前記第3のクロックの周波数を変更しても良い。
また、前記クロック生成部は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路による画像処理と、前記第3のクロックに同期した前記第2の画像処理回路による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路による画像処理と、前記第1の画像処理回路から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第3の画像処理回路に入力し、前記第3のクロックに同期した前記第3の画像処理回路および前記第4の画像処理回路による画像処理を施しても良い。
また、前記クロック生成部は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路による画像処理と、前記第3のクロックに同期した前記第2の画像処理回路による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路および前記第3の画像処理回路による画像処理と、前記第3の画像処理回路から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第4の画像処理回路に入力し、前記第3のクロックに同期した前記第4の画像処理回路による画像処理を施しても良い。
また、表示装置に前記画像データを表示するための表示コントローラをさらに備え、前記内部バスは、前記画像処理部と前記外部メモリインターフェース部と前記制御部と前記表示コントローラとを相互に接続してデータ転送を行い、前記クロック生成部は、前記第1のクロックの周波数以下の周波数を持つ第4のクロックを前記表示コントローラに供給し、前記表示コントローラは、前記第4のクロックに同期して前記画像データを表示するための処理を行っても良い。
また、前記表示コントローラは、内部バスインターフェース部および表示処理回路を有し、前記クロック生成部は、前記第1のクロックを前記内部バスインターフェース部に供給するとともに、前記第4のクロックを前記表示処理回路に供給し、前記表示処理回路は、前記第4のクロックに同期して、前記画像データを表示するための処理を行っても良い。
本発明のカメラは、上述した何れの画像処理装置を備えることを特徴とする。
本発明の画像処理装置およびカメラによれば、処理能力を維持しつつ消費電力の低減を図ることができる。
<第1実施形態>
以下、図面を用いて本発明の第1実施形態について説明する。第1実施形態では、本発明の画像処理装置を備えた電子カメラを例に挙げて説明する。
以下、図面を用いて本発明の第1実施形態について説明する。第1実施形態では、本発明の画像処理装置を備えた電子カメラを例に挙げて説明する。
図1は、電子カメラ1の構成を示すブロック図である。図1において、中央の破線で囲まれた部分が画像処理装置である。
電子カメラ1は、図1に示すように、上述した画像処理装置を中心に、撮影レンズ部(不図示のフォーカスレンズ、ズームレンズ、メカ絞り、メカシャッターを駆動するモータを含む)10、CCD11、CCD11から読み出された画像信号をデジタルデータに変換するAnalog Front End(以下、「AFE」と称する)12、CCD11を駆動するTiming Generator(以下、「TG」と称する)13、撮影レンズ部10のモータを作動させるMotor Driver IC(以下、「MDIC」と称する)14、液晶モニタなどを備える表示部15、後述するMPUのデータや画像データを記憶するSDRAM16、プログラムやカメラデータを記憶するフラッシュメモリ17の各部を備える。なお、CCD11に代えてCMOSなどの撮像素子を用いても良い。本実施形態では、図2に示すベイア配列のCCDを例に挙げて説明する。
また、画像処理装置には、各部を制御するMPU20、SDRAM16用のSDRAMコントローラ21、フラッシュメモリ17用のフラッシュコントローラ22、メモリカードインターフェース(以下、「カードIF」と称する)23、コンピュータなどの外部機器とのインターフェースであるUSB24、パラレルポート25、シリアルポート26、CCDインターフェース(以下、「CCDIF」と称する)27、画像処理回路28、JPEG処理部29、表示コントローラ30の各部を備えるとともに、クロック生成回路31を備える。また、画像処理装置には、不図示の時間管理用のタイマー、汎用A/D変換器、DMAコントローラ(以下「DMAC」と称する)等も含まれる。これらの内部モジュールは、クロック生成回路31から供給されるクロックに同期して作動する。
次に、電子カメラ1の動作を簡単に説明する。被写体像は撮影レンズ部10を介してCCD11の撮像面上に結像される。MPU20は、撮影時のメカシャッター駆動、絞り駆動、フォーカスレンズ駆動(AF制御)、ズームレンズ駆動を、シリアルポート26とパラレルポート25とを介してMDIC14を制御することにより行う。CCD11は、TG13のパルスによって駆動され、被写体の露光(画像信号電荷の蓄積)や画像信号の様々な読み出し動作がこれにより制御される。CCD11から読み出された画像信号はAFE12によって最適サンプリングされ、画素毎にデジタルデータへと変換される。TG13およびAFE12は、MPU20からシリアル通信によって設定される。なお、AFE12とTG13とVドライバを1つにパッケージした構成でも良い。
デジタル化された画像データは、TG13から出力された垂直同期信号(以下、「VD信号」と称する)、水平同期信号(以下、「HD信号」と称する)、CCDクロックに同期して画像処理装置に入る。CCDIF27の詳細は後述する。画像データは、画像処理回路内を順次運ばれ処理される。画像処理が施されたデータは、画像BUSからSDRAMコントローラ21を経由してSDRAM16に記憶される。
画像処理の施されたデータをSDRAM16から読み出し、画像BUSから表示コントローラ30に入力すれば、表示部15や外部のTVモニタなどにその画像を表示することができる。画像を100%視野率で表示するにはディスプレイの画素数に合わせて画像を変倍する(解像度変換)。また、SDRAM16上に文字やアイコン等のグラフィックデータを描画し、これを表示コントローラ30に入力すれば電子カメラ1における様々な情報を表示することができる(以下、この機能を「On Screen Display=OSD」と称する)。OSD面と画像とを重ねて表示することもできる。
また、画像処理の施されたデータをSDRAM16から読み出し、これを画像BUSからJPEG処理部29に入力すれば圧縮された画像データが得られる。圧縮データはJPEG処理部29から出力され、画像BUSを介してSDRAM16に記憶される。この圧縮データをSDRAM16から読み出し、MPU−BUSを介してカードIF23に送ればメモリカードに記録され撮影は完了する。
一方、画像を再生する場合は圧縮された画像データをメモリカードから読み出し、これをMPU−BUSを介して一旦SDRAM16に送り記憶する。この圧縮データをSDRAM16から読み出し、画像BUSを介してJPEG処理部29に送り伸長する。伸長された画像データはJPEG処理部29から出力され、再び画像BUSを介してSDRAM16に記憶される。この画像データをSDRAM16から読み出し、画像BUSを介して画像処理回路28に送り適当なサイズに解像度変換する。解像度変換の施された画像データは画像処理回路28から出力され、画像BUSを介してSDRAM16に記憶される。解像度変換された画像データをSDRAM16から読み出し、画像BUSを介して表示コントローラ30に入力すれば表示部15に再生画像が表示される。解像度変換が不要な場合はJPEG伸長された画像データをそのまま表示する。
メモリカードに記録された画像データ(JPEGファイル等)を外部のコンピュータなどに保存するには、電子カメラ1とコンピュータとをUSBケーブルで接続する。まずメモリカードから画像データを読み出し、MPU−BUSを介してこれを一旦SDRAM16に記憶する。この画像データをSDRAM16から読み出し、MPU−BUSを介してUSB24に送れば外部のコンピュータに保存される。これと逆の流れで外部のコンピュータなどのファイルを電子カメラ1のメモリカードに記録することもできる。画像BUSを介して画像処理装置とSDRAM16とがデータをやり取りする場合はDMACを使用してDMA転送により行う。一方、メモリカードや外部のコンピュータなどとSDRAM16とのデータのやり取りはMPU−BUSを経由して行われるが、これにはMPU20によるソフトウェア転送とDMACによるDMA転送との両方が利用できる。ここまで説明した電子カメラ1の様々な動作はMPU20のプログラムによって制御される。
次に、画像処理回路28の詳細について説明する。図3は、画像処理回路28の構成および処理の流れを示す図である。また、図4は、CCDIF27の内部構成を示す図である。
CCDIF27は、図4に示すように、クロックゲート部50を備える。また、CCDIF27は、1フレームの有効画素期間中に入ってきたRAW−DATAを図2に示したようなベイア配列とするために、必要に応じて並べ換えを行う。後述するView動作(スルー画表示)や動画撮影においては、低解像度で高フレームレートの画像信号をCCD11から読み出しているが、その場合は画素加算が行われていることが多く、画素加算が行われていると1H期間(HDの周期)の画像信号には空間的に数ラインの画像信号が混在していることが多い。そこで、CCDIF27では図4のように複数のラインバッファを備え、これを利用してベイア配列に並べ替えられた画像信号を出力するようにしている。並べ替えのパターンは不図示のレジスタに設定されるが、それらのレジスタの設定はMPU−BUSを介してMPU20により行われる。基本的な並べ換えの機能は図4中の「1stラインバッファ」と「2ndラインバッファ」に対するWRITEとREADによって実現される。そのため、WRITE制御回路とREAD制御回路とが併せて設けられている。WRITE制御回路には、CCDクロックの他に垂直同期信号VDと水平同期信号HDとが入力されており、HDの1周期の期間内に入ってきた有効なRAW−DATAだけをそのライン単位で1stラインバッファか2ndラインバッファの何れか一方にWRITEする。そして、次のHD信号が入ってラインが移った時は、それに合わせてもう一方のラインバッファに切り換え、新たなラインのやはり有効なRAW−DATAだけを、切り換えられたラインバッファにWRITEする。なお、CCDIFにおけるクロックゲート部50などの動作の詳細は後述する。
画像処理回路28は、図3に示すように、Pre−Process部28aとPost−Process部前段28bと、Post−Process部後段28cとからなる。また、画像処理回路28は、クロックゲート部40とセレクタ41とを備える。Pre−Process部28aは、図3中の欠陥補正から水平間引きまでの処理を行い、Post−Process部前段28bは、図3中のWB調整から色変換・色補正までの処理を行い、Post−Process部後段28cは、図3中の解像度変換からCbCr間引きまでの処理を行う(詳細は後述する)。図3に示すように、クロックゲート部40は、クロック生成回路31により生成される「SYSCLK」に基づいて、「IPCLK2」を生成する。また、クロックゲート部50は、「SYSCLK」、「CCDクロック(以下、「CCDCLK」と称する)」、「VDおよびHD」に基づいて、「IPCLK1」を生成する。各クロックの詳細は後述する。
なお、クロックゲート部40およびクロックゲート部50は、図5に示すような構成を有し、入力されたクロックを規定の割合で遮断して等価的に周波数の低下したクロックを出力する(クロックゲーティング)。図5において、「CLOCK」が入力されたクロックを表し、これが図5のクロックゲート回路によって制御される。クロックゲート回路から出力されたクロックゲート信号とCLOCKとは、論理積回路に入力され、これによってクロックの供給や遮断が行われる。「ENABLE」はクロックゲート回路の動作許可信号であり、「ENABLE状態」の時はクロックゲート回路の動作状態に応じてクロックの供給や遮断が行われるが、「DISABLE状態」の時は完全にクロックが遮断されて低消費電力状態となる。
このように、停止させても良い、あるいは停止させなければならないモジュール(回路ブロック)のクロックを遮断することにより、消費電流を抑えることができる。
電子カメラ1の撮影モードは2つの動作に分かれる。その一つがView動作(Live View、スルー画表示)であり、もう一つがスチル画撮影動作である。View動作ではCCD11の画素ラインを間引いて信号を読み出しているので、垂直解像度は低いが高速レート(例えば、約30フレーム/sec等)の画像信号が得られる。これはリアルタイムで被写体像(スルー画)をモニタしたり、AFやAEの制御を行ったりするのに適している。
一方、スチル画撮影動作ではCCD11からフル解像度の画像信号を読み出すので時間が掛かり、しかも1枚の画像(フレーム)の信号を複数のフィールドに分けて読み出している点がView動作と異なる。各フィールドの画像信号はCCD11の画素ラインが飛び飛び(インタレース)に読み出されたものであり、スチル画撮影動作の画像処理はPre−Process部28aによる前処理とPost−Process部前段28bおよびPost−Process部後段28cによる後処理との2段階に分けて行われる。
すなわち、Pre−Process部28aによる前処理だけが施されたそれぞれのフィールド画像データを一旦SDRAM16に記憶し、SDRAM16上で1枚の画像データ(フレーム)を合成する。この画像データをライン順(ノンインタレース)にSDRAM16から読み出してPost−Process部前段28bおよびPost−Process部後段28cによる後処理を施し、再びSDRAM16に記憶すればスチル画の画像処理が完了する。
画像処理回路28に入った画像データは、まず欠陥画素補正が施される。続いて画像の黒レベルを決定するOBクランプ処理が行われる。さらに画像データは色別に異なるゲイン調整(乗算)を受ける。CCD11の画素は色毎に感度が異なるため、標準光源下で白の被写体もそのままでは白にならない。通常は標準光源下でGのゲインを1にして、RとBとの感度をGに合わせるように感度比調整回路の乗算器を設定し、ゲイン調整を行う(感度比調整)。ここまでの処理がPre−Process部28aによる前処理であり、スチル画撮影動作の場合はここで画像データが一旦SDRAM16に移される。そのため、Pre−Process部28aの最後には画像BUSに向けて出力バッファ(FIFOなど)が設けられている。なお、この際には、水平間引き回路は動作させず、画像データの出力がそのまま出力バッファに出力される(水平間引き回路がバイパスされる)。
View動作の場合は続けて後続のPost−Process部前段28bおよびPost−Process部後段28cによる後処理も実行される。スルー画像のサイズは、通常小さい(例えば、VGAサイズ)ので、Pre−Proecss部28aの最後に置かれている水平間引き回路によって水平画素数を削減した画像データを、Post−Process部前段28bおよびPost−Process部後段28cに送っている。View動作の場合はPre−Process部28aによる前処理中にAE/AF/AWB(自動露出/AF/オートホワイトバランス)評価値(3A評価値)の抽出も行われる。これらの評価値はMPU−BUS側の出力バッファメモリに格納され、MPU−BUSを介してMPU20に読み取られる。なお、この3A評価値を、SDRAM16に記録するようにしても良い。MPU20はこれらの評価値を基に演算を行い、その結果にしたがって適当なフレーム間隔でAE/AF/AWB制御を行う。なお、AE制御は電子シャッターやメカ絞りの調整により行い、AF制御はモータでフォーカスレンズを駆動することにより行い、AWB制御はRとBとのゲインを調整することにより行う。WB調整は、光源が標準光源と異なる場合に必要であり、AWBとはAWB評価値に基づいてMPU20が自動的にこの調整を行うことである。AWB評価値の抽出は前述の感度比調整が済んだ画像データに対して行われる。
一方、スチル画撮影動作の場合はPre−Process部28aによる前処理中にAWB評価値のみ抽出される。スチル画の露光は終わっているのでAE/AF評価値は不要である。スチル画のAWB評価値はフィールド別に抽出されるため、1枚の画像(フレーム)全体のAWB評価値を得るにはフィールド別の評価値を積算する必要がある。AWB評価値抽出回路がこの積算機能を持っていない場合は、各フィールドの評価値をMPU20が読み出し、ソフトウェアで積算する。積算されたAWB評価値からRとBとのゲインを決めてPost−Process部前段28bのWB調整回路の乗算器に設定し、その後のAWBに備える。SDRAM16にはPre−Process部28aによる前処理の済んだ1枚のスチル画データが記憶されており、これをライン順(ノンインタレース)に読み出して画像BUSから画像処理回路28に入力するとPost−Process部前段28bおよびPost−Process部後段28cによる後処理が施される。そのため、画像BUSから画像処理回路28に向かって入力バッファ(FIFOなど)が設けられている。
Post−Process部前段28bおよびPost−Process部後段28cによる後処理では、最初にWB調整が行われる。WB調整に続いて画像データにはγ補正が施される。CCD11の画素は図2に示したように単一の色信号から成るので、γ補正を受けた画像データも1色/画素のデータであることに変わりがない。この画像データに次の色補間処理を施して3色/画素のデータに変換する。
続いて色補正/色変換が施されて目的の色空間の画像データとなる。これらはカラーマトリックス処理を含む。色補正は好ましい色を実現する処理で、複雑なものはLUTを使用する。色変換が終わった後の画像データは通常YCbCrの画像データである。このYCbCrの画像データに解像度変換を施し目的の画像サイズに変換する。
次の空間フィルタでは輝度信号(Y)のエッジ強調と色差信号(Cb,Cr)のLPF処理が行われる。最後にCbCr間引きを行ってY:Cb:Cr=4:2:2の画像データに変換し、これを画像BUS経由でSDRAM16に記憶してスチル画のPost−Process部前段28bおよびPost−Process部後段28cによる後処理が終了する。そのため、Post−Process部後段28cの最後には画像BUSに向けて出力バッファ(FIFOなど)が設けられている。なお、Y:Cb:Cr=4:4:4の画像データのデータを得たい場合はCbCr間引きをスキップする。
また、動画撮影動作の場合はスルー画データをそのままJPEG処理部29によりJPEG圧縮して動画ファイルを作成し、これをメモリカードに記録する。したがって動画撮影動作の画像処理の流れはView動作と同じである。
また、図3の画像処理回路28には入力バッファ(FIFOなど)から色補正/色変換回路に向かう画像データパスもある。これは、YCbCr→RGBあるいはRGB→YCbCrという色変換を行ったり、YCbCrまたはRGBのデータに解像度変換を施したりする場合に利用される。さらにスチル画撮影動作におけるサムネイル作成や、再生モードにおける再生画像のサイズ合わせにも利用される。なお、画像処理回路28は、不図示の制御レジスタ、ステータスレジスタ、画像処理のパラメータレジスタやテーブル情報を格納するメモリ、さらに、3A評価値格納用のメモリ等を多数備えている。これらのレジスタはMPU−BUSを介してMPU20からアクセスされる。
なお、Pre−Process部28aによる前処理およびPost−Process部前段28bおよびPost−Process部後段28cによる後処理は、クロック生成回路31により生成されるクロックに同期して行われる。
図6は、クロック生成回路31からクロックの供給について説明する図である。
画像処理装置の電源が入ると、クロック生成回路31では基準クロックの発振が始まり、そこで生成されたクロックが「SYSCLK」としてMPU20と一部の周辺モジュールに供給される。クロック生成回路31はPLLシンセサイザから成っており、これから様々な周波数のクロックを生成することができる。電源投入時は「SYSCLK」の周波数が低く設定され電力の消費を抑えている。なお、DMAC(DMAC1およびDMAC2)やSDRAMコントローラ21には、実際に「SYSCLK」が必要となるまでその供給を停止して無駄な電力が消費されないようにする。画像処理装置のリセットが解除されると、MPU20はフラッシュメモリ17に格納されたプログラム(電子カメラ1のファームウェア)の実行を開始する。
MPU20は、まず内部バス(MPU−BUS)を介してクロック生成回路31のレジスタをアクセスし「SYSCLK」の周波数を適切な値に変更する。次いでMPU20はSDRAMコントローラ21に「SYSCLK」を供給してこれを初期化する。これによってSDRAM16がMPU20のワークメモリとして使用できるようになる。カメラの中にはフラッシュメモリ17に入っているファームウェアをSDRAM16に移してから実行しているものもある。その場合にフラッシュメモリ17から直接実行されるのはBOOTプログラムだけである。MPU20はBOOTプログラムを実行してファームウェア本体をSDRAM16に移す。DMA転送を使うとファームウェア本体を速くSDRAM16に移すことができる。その場合はBOOTプログラムの中でMPU20がDMAC2に転送を行わせる。MPU20は、まずDMAC2に「SYSCLK」を供給し、次いでMPU−BUSを介してDMAC2の必要なレジスタを設定した後、DMA転送を起動する。
ファームウェア本体はMPU−BUSを介してフラッシュメモリ17からSDRAM16へ転送される。DMA転送が終了したらMPU20はDMAC2に供給した「SYSCLK」を止めて電力消費を抑える。その後MPU20はBOOTプログラムの最後にあるJUMP命令を実行して、SDRAM16に転送されたファームウェア本体にプログラムを移す。そこからカメラとしての動作が可能になる。
MPU20は、電子カメラ1の動作に応じて画像処理装置内部の使用するモジュール(図1を参照)に必要なクロックを供給する。使用しないモジュールのクロックは止めて無駄な電力の消費を抑える。画像処理を実行する場合は画像処理回路28に「SYSCLK」を供給し、DMAC1には「SYSCLK」を供給する。その時はSDRAM16から処理前の画像データをREADして画像処理回路28に送り、画像処理回路28から出力された処理後の画像データ(YCbCr)をSDRAM16にWRITEするというデータフローが発生する。スチル画撮影動作においてPre−Process部28aによる前処理後の画像データにPost−Process部前段28bおよびPost−Process部後段28cによる後処理を施す場合や、画像再生動作においてYCbCrデータに解像度変換を施して表示部15の液晶モニタに合うサイズの画像を得る場合等がこのデータフローに該当する。ただし、View動作の場合とスチル画撮影動作におけるPre−Process部28aによる前処理の場合だけは、CCDIF27から画像処理回路28に直接入ってきたRAWデータが処理されるので、データフローはSDRAM16へのWRITEのみとなる。後者の場合は「CCDCLK」に同期して、1画素ずつRAWデータが入ってくるので、それを「IPCLK1」で動作している画像処理回路28内部の画像信号処理回路に流すためには「CCDCLK」と「IPCLK1」の同期合わせが必要である。そのため「IPCLK1」の周波数が「CCDCLK」の周波数よりも高くなければならない。
クロックゲート部40およびクロックゲート部50によるクロックゲーティングは、図3で説明した画像処理回路28において有効に利用される。例えば、クロックゲート回路で行われるクロックの間引きの例を図7(1)に示す。
図7(1)の「CLOCK」が入力されたクロックであり、「Gated−CLOCK」の方が1/2に分周されたクロックを表す。クロックゲート回路ではクロックを停止する期間には「Low」レベルとなり、クロックを供給する期間には「High」レベルとなるようなゲート信号が生成されている。そして、入力されたクロックとそのゲート信号との「論理積」が出力される。
図7(1)では入力されたクロックの1サイクルおきにLowとHighとを繰り返すクロックゲート信号によって「1/2分周」が行われている。このクロックゲート回路では、クロックゲート信号の波形に留意し、分周されたクロックに欠損が発生しないように注意しなければならない。すなわち、入力されたクロックであるCLOCKおよび分周されたクロックであるGated−CLOCKの立ち上がりエッジが、略同じタイミングになるよう注意する。通常は入力されたクロックの反転信号の立ち上がりエッジに同期してゲート信号をLowレベルやHighレベルに変化させる。
以上説明したクロックゲーティングを利用すれば、クロックが遮断されている期間は非動作状態なのでリーク電流程度しか流れない。したがって省電力化がかなり期待できる。
そこで、第1実施形態では、高い周波数のクロックを供給しておき、内部に設けられたクロックゲート部40およびクロックゲート部50によって低い周波数のクロックに変換する。
図7(1)では、クロックゲーティングにより1つ置きにクロックを遮断して半分の周波数のクロックに変換している。しかし、クロックゲート信号を細かく制御すれば、図7(2)に示す「1/3分周」されたクロックや、図7(3)に示す「2/3分周」されたクロックを生成することもできる。これはクロックゲート信号のHighレベルの期間とLowレベルの期間とを別々に制御することによって実現される。例えば「N/M」というクロックの間引き(分周)は「M」が間引きの周期であって、「N」はクロックゲート信号がHighレベルになってクロックが取り出される期間を示し、「M−N」はクロックゲート信号がLowレベルになってクロックが遮断される期間となる。入力されたクロックをカウンタで計数し、その計数値によって周期が「M」でHighレベル期間が「N」となるようなクロックゲート信号を生成することができる。
なお、図7(1)ないし(3)から明らかなように、クロックゲーティングによって間引かれた(分周された)クロックはLowレベルとHighレベルの長さ(Duty比)が大幅に異なる。しかし、これは後で説明するように実用上は問題ない。さらに、図7(1)から(3)において「Gated−CLOCK」のパルスとそれに対応する「CLOCK」のパルスとは破線に示すように位相が一致している。
第1実施形態では、上記したクロックゲーティングによって、画像処理回路28を低い周波数のクロックで動作させる。この場合、画像処理装置の内部BUSである画像BUSとMPU−BUSとに同じクロックを供給することが重要である。図6で説明したように、画像処理回路28には、「SYSCLK」が供給されている。クロックゲート部40およびクロックゲート部50は、この「SYSCLK」をより周波数の低いクロックに変換する。図3で説明したPre−Process部28aとPost−Process部前段28bおよびPost−Process部後段28cとをそれぞれ異なる周波数のクロックで動作させるために、この2つのクロックゲート部(クロックゲート部40およびクロックゲート部50)を備える。そのため、クロック生成回路31から供給するクロックは「SYSCLK」のみであり、シンプルな構成を実現することができる。
第1実施形態では、クロックゲート部50では「IPCLK1」を生成し、これをPre−Process部28aに供給する。一方、第2のクロックゲート部40では、「IPCLK2」を生成し、この「IPCLK2」と「IPCLK1」との何れか一方をセレクタ41により選択してPost−Process部前段28bおよびPost−Process部後段28cに供給する。なお、IPCLK2の周波数はIPCLK1の周波数と異なる周波数である。セレクタ41は、View動作(スルー画表示)の場合はIPCLK1を選択し、スチル画撮影動作の場合はIPCLK2を選択する。
このように、クロックゲーティングによってソースクロックである「SYSCLK」から低周波数のクロック(IPCLK1およびIPCLK2)を生成し、それによって画像処理回路28内部の画像信号処理回路を動作させる。IPCLK1とIPCLK2とは、MPU20や内部BUS(MPU−BUSおよび画像バス)やSDRAMコントローラ21およびSDRAM16に供給されているソースクロックであるSYSCLKから生成されているので、IPCLK1およびIPCLK2の立ち上がりエッジは、「SYSCLK」の立ち上がりエッジと高い精度で一致している。なお、このSYSCLKは、クロック生成回路31により生成されたクロックそのものであっても良いし、適宜クロックゲーティングなどが施されたクロックであっても良い。
さらに、第1実施形態では、画像処理回路28の動作状態に応じてクロックを制御する。上述したクロックの制御により、画像処理回路28内部の画像信号処理回路が動作している時でも停止しているときでも、その内部のレジスタやメモリをMPU−BUSから高速にWRITEやREADすることができる。この場合の「高速」とは、画像処理回路28内部の画像信号処理回路の内部のレジスタやメモリをMPU−BUSから高速にWRITEまたはREADする際に、遅延が発生しない(「WAIT」が入らない)という意味である。すなわち、画像処理回路28内部のレジスタやメモリを常にMPU−BUSからWAIT無しでWRITEやREADすることができる。
図8および図9のタイミング図を参照して詳細を説明する。図8は、MPU−BUSからWRITEする場合のタイミング図であり、図9は、MPU−BUSから画像処理回路28内部のレジスタをREADする場合のタイミング図である。
ここでは、MPU−BUSはAHB(Advanced High-performance BUS)のような高速なBUSであると仮定する。「SYSCLK」はMPU−BUSのBUSクロックであり、AHBの「HCLK」に対応する。「HWDATA[31:0]」はMPU−BUSのWRITE用データBUSである。MPU−BUSのアドレスBUSは省略している。また「IPCLK」は上述したIPCLK1またはIPCLK2を表している。「REGISTER値」は、画像処理回路28内部のレジスタの値を表す。また、図8および図9では、MPU−BUSから画像処理回路28内部のレジスタをWRITEおよびREADする場合の例を示したが、MPU−BUSから画像処理回路28内部のメモリをWRITEおよびREADする場合も同様である。
図8は、画像処理回路28内部の1つのレジスタをMPU−BUSから繰り返しWRITEし、画像処理回路28内部の画像信号処理回路がそのレジスタを繰り返し参照(READ)する場合を表している。また、「GSYSCLK」の「T0」,「T3」,「T6」,「T9」という各サイクル(時刻)に「IPCLK」のクロック・パルスが存在する。
同一サイクル(時刻)における「SYSCLK」と「IPCLK」の立ち上がりエッジは高い精度で一致している。T0サイクルにおける「IPCLK」の立ち上がりエッジでは画像処理回路28内部の画像信号処理回路によってこのレジスタの値がREAD(ラッチ)されるが、その時はMPU−BUSからWRITEは行われていないので、READされた値(図8中の網掛けの値)は正しい値となる。一方、T1サイクルにおける「SYSCLK」の立ち上がりエッジではMPU−BUSから「DATA0」という値がそのレジスタにWRITE(ラッチ)されている。「DATA0」という値がMPU−BUS上に出始めるタイミングは、1つ前のT0サイクルであるが、「DATA0」は次のT1サイクルにおける「SYSCLK」の立ち上がりエッジで、そのレジスタにWRITE(ラッチ)される。T1サイクルには「IPCLK」のクロック・パルスが存在しないので、この時のWRITEは画像処理回路28内部の画像信号処理回路に何の影響も与えない。「DATA0」はT1サイクルにおける「SYSCLK」の立ち上がりエッジより少し遅れてこのレジスタに反映される。
続いてT3サイクルにおける「SYSCLK」の立ち上がりエッジでは、MPU−BUSから「DATA1」という値がそのレジスタにWRITE(ラッチ)される。一方、同じT3サイクルにおける「IPCLK」の立ち上がりエッジでは、画像処理回路28内部の画像信号処理回路によってこのレジスタの値がREAD(ラッチ)される。このように全く同じタイミングで1つのレジスタのWRITEとREADが行われる。この場合に、不正な値が画像処理回路28内部の画像信号処理回路に渡される(READされる)ことが懸念される。しかし、「DATA1」という値がそのレジスタに反映されるのはT3サイクルにおける「SYSCLK」の立ち上がりエッジより少し遅れるので、その間に画像処理回路28内部の画像信号処理回路は「IPCLK」の立ち上がりエッジで1つ前の「DATA0」という値をREAD(ラッチ)する。これは、立ち上がりエッジの一致したクロックでWRITEとREADとが行われているので、「DATA0」でもなく、「DATA1」でもない不正な値が画像処理回路28に渡されることはない。
図8の例において、T1サイクルのWRITEもT3サイクルのWRITEも、共に1サイクルで終了し、WRITEの遅延は発生しない。さらに、この後のT6サイクルでも、T3サイクルの場合と全く同じことが起こる。すなわち、T6サイクルにおける「SYSCLK」の立ち上がりエッジでは、MPU−BUSから「DATA2」という値がそのレジスタにWRITE(ラッチ)されると共に、同じT6サイクルにおける「IPCLK」の立ち上がりエッジでは、画像処理回路28内部の画像信号処理回路によってそのレジスタの値がREAD(ラッチ)されている。その結果はT3サイクルの場合と全く同じであって、画像処理回路28内部の画像信号処理回路には1つ前の「DATA1」という値が渡されると共に、T6サイクルにおける「SYSCLK」の立ち上がりエッジより少し遅れて「DATA2」という値がそのレジスタに反映される。続いて、T8サイクルにおける「SYSCLK」の立ち上がりエッジでは、MPU−BUSから「DATA3」という値がそのレジスタにWRITE(ラッチ)されている。T8サイクルには「IPCLK」のクロック・パルスが存在しないので、このWRITEは画像処理回路28内部の画像信号処理回路に何の影響も与えない。T6サイクルのWRITEもT8サイクルのWRITEも共に1サイクルで終了し、やはりWAITは入っていない。一方、T9サイクルにおける「IPCLK」の立ち上がりエッジでは、画像処理回路28内部の画像信号処理回路によってこのレジスタの値がREAD(ラッチ)される。このT9サイクルではMPU−BUSからのWRITEは行われていないので、画像処理回路28内部の画像信号処理回路はMPU−BUSから何の影響も受けずにそのレジスタの値をREAD(ラッチ)することができる。この時はT8サイクルでWRITEされた「DATA3」という値が、画像処理回路28内部の画像信号処理回路に渡される。
このようにWRITEに対してREADが1サイクル遅れている場合に、最も速く最新の値を画像処理回路28内部の画像信号処理回路に渡すことができる。
図9は、画像処理回路28内部の画像信号処理回路が1つのレジスタの値を繰り返し更新(WRITE)し、そのレジスタの値をMPU−BUSから繰り返しREADする場合を表している。図9における「HRDATA[31:0]」は、MPU−BUSのREAD用データBUSであり、それ以外については図8で説明したWRITEの場合と同じである。
WRITEの場合と同様に「SYSCLK」の「T0」,「T3」,「T6」,「T9」というサイクル(時刻)には「IPCLK」のクロック・パルスが存在している。同一サイクル(時刻)における「SYSCLK」と「IPCLK」の立ち上がりエッジが高い精度で一致していることも同じである。T0サイクルにおける「IPCLK」の立ち上がりエッジでは、画像処理回路28内部の画像信号処理回路から「DATA1」という値がこのレジスタにWRITE(ラッチ)されている。その立ち上がりエッジより少し遅れてレジスタの値が「DATA0」から「DATA1」に変わっているのでそれが分かる。一方、同じT0サイクルにおける「SYSCLK」の立ち上がりエッジではHRDATA[31:0]上(MPU−BUS上)に現れた「DATA0」がREAD(ラッチ)されている。以下ではHRDATA[31:0]上に現れたデータがラッチされることを「MPU−BUSからのREAD(ラッチ)」と表現する。
「DATA0」はT0サイクルの1つ前のサイクルの途中からHRDATA[31:0]に現れるので、T0サイクルにおける「IPCLK」の立ち上がりエッジで「DATA1」がそのレジスタにWRITE(ラッチ)されたとしても「DATA0」は正しくREAD(ラッチ)される。続いて、T1サイクルにおける「SYSCLK」の立ち上がりエッジでは「DATA1」という値がMPU−BUSからREAD(ラッチ)されている。この「DATA1」はT0サイクルにおける「IPCLK」の立ち上がりエッジで、そのレジスタにWRITE(ラッチ)された値である。この場合は、最短の時間で「DATA1」がMPU−BUSからREAD(ラッチ)されたことになる。このことはMPU−BUSからのWRITEの場合と同じである。T1サイクルには「IPCLK」のクロック・パルスが存在しないので、画像処理回路28内部の画像信号処理回路の影響を受けずにMPU−BUSからのREADが行われる。
T0サイクルのREADもT1サイクルのREADも共に1サイクルで終了し、READの遅延は発生しない。
続くT3サイクルとT4サイクルでもT0サイクルとT1サイクルの場合と全く同じことが起こっている。すなわち、T3サイクルにおける「IPCLK」の立ち上がりエッジで画像処理回路28内部の画像信号処理回路から「DATA2」という値がそのレジスタにWRITE(ラッチ)されると共に、T3サイクルにおける「SYSCLK」の立ち上がりエッジではMPU−BUSからそのレジスタがREAD(ラッチ)される。その結果はT0サイクルの場合と全く同じであって、MPU−BUSは1つ前の「DATA1」という値をREAD(ラッチ)すると共に、T3サイクルにおける「IPCLK」の立ち上がりエッジより少し遅れて「DATA2」という値がそのレジスタに反映される。
一方、T4サイクルおける「SYSCLK」の立ち上がりエッジでは「DATA1」という値がMPU−BUSからREAD(ラッチ)されているが、これは1つ前のT3サイクルにおける「IPCLK」の立ち上がりエッジでそのレジスタにWRITE(ラッチ)された値である。この場合も最短の時間で「DATA2」がMPU−BUSからREAD(ラッチ)されており以前の場合と同様である。T4サイクルには「IPCLK」のクロック・パルスが存在しないので画像処理回路28内部の画像信号処理回路の影響を受けずにMPU−BUSからのREADが行われる。このT3サイクルのREADもT4サイクルのREADも共に1サイクルで終了し、やはりWAITが入っていない。
その後のT6サイクルとT7サイクルも全く同じである。すなわち、T6サイクルにおける「IPCLK」の立ち上がりエッジで画像処理回路28内部の画像信号処理回路から「DATA3」という値がそのレジスタにWRITE(ラッチ)されると共に、同じT6サイクルにおける「SYSCLK」の立ち上がりエッジではMPU−BUSからそのレジスタがREAD(ラッチ)されている。その結果はT0サイクルの場合と全く同じであって、MPU−BUSは1つ前の「DATA2」という値をREAD(ラッチ)すると共に、T6サイクルにおける「IPCLK」の立ち上がりエッジより少し遅れて「DATA3」という値がそのレジスタに反映される。
一方、T7サイクルおける「SYSCLK」の立ち上がりエッジでは「DATA3」という値がMPU−BUSからREAD(ラッチ)されているが、これはT6サイクルにおける「IPCLK」の立ち上がりエッジでそのレジスタにWRITE(ラッチ)された値である。この場合も最短の時間で「DATA3」がMPU−BUSからREAD(ラッチ)されており以前と同様である。T7サイクルには「IPCLK」のクロック・パルスが存在しないので画像処理回路28内部の画像信号処理回路の影響を受けることなくMPU−BUSからのREADが行われる。T6サイクルのREADもT7サイクルのREADも共に1サイクルで終了し、やはりWAITは入っていない。
最後のT9サイクルもT0サイクルの場合と同様である。すなわち、T9サイクルにおける「IPCLK」の立ち上がりエッジで画像処理回路28内部の画像信号処理回路から図9中の「網掛け」の値(DATA3の後方の値)がそのレジスタにWRITE(ラッチ)されると共に、同じT9サイクルにおける「SYSCLK」の立ち上がりエッジではMPU−BUSからそのレジスタがREAD(ラッチ)されている。その結果はT0サイクルの場合と同様であって、MPU−BUSは1つ前の「DATA3」という値をREAD(ラッチ)すると共に、T9サイクルにおける「IPCLK」の立ち上がりエッジより少し遅れて上述した「網掛け」の値がそのレジスタに反映される。T9サイクルのREADも1サイクルで終了してWAITは入っていない。
このように、MPU−BUSのバスクロックの立ち上がりエッジと画像処理回路28内部の画像信号処理回路のクロックの立ち上がりエッジが一致していれば、画像処理回路28が動作中であってもその内部のレジスタやメモリをMPU−BUSから常にWAIT無しでREADすることができる。
なお、MPU20や内部BUS(MPU−BUSと画像BUS)やSDRAMコントローラ21を実際に動作させているクロック(「SYSCLK」)の立ち上がりエッジと、画像処理回路28内部の画像信号処理回路を動作させる低周波数のクロック(IPCLK1とIPCLK2)の立ち上がりエッジとを高い精度で一致させておくことが重要である。特に、MPU−BUSのバスクロックの立ち上がりエッジと一致させることは必須である。ソースクロックの「SYSCLK」からこれら2つのクロックを生成する際に、その遅延量を正確にコントロールしつつ設計することが望ましい。
このようにして生成されたクロックを用いるなら画像処理回路28内部の画像信号処理回路が動作している時であっても、画像処理回路28内部のレジスタやメモリをMPU−BUSから常にWAIT無しで高速にWRITEやREADすることができる。
また、画像処理回路28内部の画像信号処理回路のクロックであるIPCLK1とIPCLK2が遮断されていたとしても、MPU−BUSのバスクロックである「SYSCLK」が画像処理回路28(バスインターフェース部)に供給されているなら内部のレジスタやメモリをWRITEやREADすることができる。画像処理回路28内部の画像信号処理回路が停止している時は殆どのレジスタやメモリが使用されないので、電力も殆ど消費されないようにするのが好ましい。そこで、MPU−BUSからそれらがアクセスされない時は、「SYSCLK」が遮断されるようにすることが望ましい。内部のレジスタやメモリへ「SYSCLK」を供給したり遮断したりするための「供給/遮断」ビットを制御レジスタの内に設け、その制御レジスタにだけ「SYSCLK」を供給するように構成しても良い。
次に、View動作時(スルー画表示と動画撮影)にデジタルズームにより画像の拡大を行う場合でも、必要最小限のブロックだけクロックの周波数を上げるようにして消費電力を抑える処理について説明する。
CCDIF27→Pre−Process部28a→Post−Process部前段28b→Post−Process部後段28c」というダイレクトパスを利用している場合は、デジタルズームで画像の拡大を行う時には、解像度変換ブロック以降のステージのクロックの周波数を上げなければならない。本実施形態では、画像処理回路28内部の画像信号処理回路に供給されるクロックが異なっている。
図3に示すように、本実施形態では、Post−Process部前段28bおよびPost−Process部後段28cに別々のクロックを供給することができる。すなわち、Post−Process部前段28bおよびPost−Process部後段28cの両方に「IPCLK2」を供給する場合と、解像度変換ブロックより前のPost−Process部前段28bにはPre−Process部28aと同じ「IPCLK1」を供給し、解像度変換ブロック以降のPost−Process部後段28cには「IPCLK2」を供給することができる。より厳密には、解像度変換ブロックにはIPCLK1とIPCLK2の両方が供給される。解像度変換ブロック内部のラインバッファへのWRITEはIPCLK1で行われ、ラインバッファからのREADはIPCLK2で行われる(非同期動作)。このようにPost−Process部前段28bおよびPost−Process部後段28cに供給されるクロックを少なくとも2つに分けることで、デジタルズームにより画像の拡大を行う場合にも解像度変換ブロックより前は低い周波数のクロック(IPCLK1)で動作させることができるので消費電力が抑えられる。デジタルズームの倍率に応じてIPCLK2の周波数を上げ下げすることにより、無駄な電力消費をさらに抑えることができる。
ただし、上述した処理において、デジタルズームの倍率が大きくなり過ぎると、クロック(IPCLK2)の周波数が上限に達してそれ以上拡大できなくなってしまうという問題がある。そこで、デジタルズームの拡大率がある値(規定の値)よりも大きくなった場合は、「CCDIF11→Pre−Process部28a→Post−Process部前段28b→Post−Process部後段28c」というダイレクトパスを以下の何れかのパスに変更して高倍率の拡大を実現する。
第1のパスは、図10に示すように、「CCDIF27→Pre−Process部28a→SDRAM16→Post−Process部前段28b→Post−Process部後段28c」というパスである。また、第2のパスは、図11に示すように、「CCDIF27→Pre−Process部28a→Post−Process部前段28b→SDRAM16→Post−Process部前段28b→Post−Process部後段28c」というパスである。
図10に示した第1のパスでは、図3中の水平間引きブロックによって水平画素数が削減されたベイア配列の画像データが一旦SDRAM16に移される。この画像データはSDRAM16からREADされ再び画像処理回路28に入って、Post−Process部前段28bおよびPost−Process部後段28cによる後処理が施される。この場合、Post−Process部前段28bおよびPost−Process部後段28cがIPCLK2というクロックで動作する。このとき、IPCLK2の周波数は「CCDCLK」(IPCLK1)と同程度か、あるいはそれよりも低い周波数まで下げることができる。Post−Process部前段28bおよびPost−Process部後段28cで処理される画像(ベイア配列の画像)のサイズが小さい(例えば、VGAサイズ程度)ので、IPCLK2の周波数を十分落としても十分な処理速度(例えば、30fps)を実現することができる。
実際の処理では処理時間に余裕を持たせるためにIPCLK2の周波数を限界まで下げるようなことは行わないと考えられるが、それでもIPCLK2の周波数をかなり低く設定することができるので消費電流も抑えられる。なお、この第1のパスや第2のパスを用いる場合は、上述のダイレクトパスに比べてスルー画の表示が1フレーム(VDの周期)遅れることと、SDRAM16のトラフィックが増えるという問題がある。SDRAM16のトラフィックが増えるという問題についてはIPCLK2の周波数を下げていることと、Post−Process部前段28bおよびPost−Process部後段28cで処理される画像(ベイア配列の画像)のサイズが小さいということにより問題を軽減することができる。第1のパスは、スチル画の画像処理のパスと同じであるため、特別なパスを用意しなくても良いというメリットがある。
さらに、View動作(スルー画表示と動画撮影)専用に、図11に示した第2のパスを用意することにより、SDRAM16のトラフィックの問題をより軽減することができる。第2のパスでは、例えば、γ補正後のビット数(8bit等)の少ないベイア配列の画像データをSDRAM16に転送しているので、第1のパスよりもSDRAM16のトラフィックを減らすことができる。
ここまで、画像処理回路28における制御について説明した。本実施形態のクロックの制御は、他のモジュールにも適用することができる。ここでは、図1の表示コントローラ30におけるクロックの制御について説明する。表示コントローラ30は、SDRAM16上に置かれた画像データ(YCbCr)を取り込んで所定のフォーマットの映像信号に変換し、その映像信号を表示部15や外部のTVモニタ等のディスプレイ装置に表示する。スルー画の表示であれば画像処理回路28から出力されたYCbCrデータをSDRAM16に記憶し、それを表示コントローラ30に取り込んで表示する。
スルー画データは、例えば、約30fpsで画像処理回路28から出力されるので、表示コントローラ30もその都度新しいスルー画データを取り込んで表示する。これによって、ユーザは約30fpsのレートでリアルタイムに被写体を観察することができる。スチル画の表示も同様であって、まずメモリカードに記録されているJPEGファイルを読み出して伸長し、そのYCbCrデータを画像処理回路28に取り込んでディスプレイ装置に合った画像サイズに変換してSDRAM16に記憶する。そして、その画像データを、例えば30fpsのレートで表示コントローラ30に繰り返し取り込んでディスプレイ装置に表示すればスチル画の再生が行われる。
ディスプレイ装置にはその他に様々な文字やアイコンから成るカメラ情報(OSD:On Screen Display)が表示される。OSD情報は64色(6bit)や256色(8bit)等のパレット画像であり、文字やアイコン等のビットマップデータに基づきMPU20のプログラム(ファームウェア)によってSDRAM16上に描画される。描画されたパレット画像データはSDRAM16から表示コントローラ30に取り込まれ、内部にあるカラーパレットによってYCbCrデータに変換されてディスプレイ装置に表示されることになる。カラーパレットはLUTであり、各画素の値に対応するアドレスに記憶されたYCbCrデータを取り出して出力する。スルー画とスチル画、あるいはスチル画とスチル画を重ね合わせて表示するピクチャー・イン・ピクチャー機能についても同様である。また、ピクチャー・イン・ピクチャー表示された画像にさらにOSD情報を重ねて表示することもある。
図12は、表示コントローラ30の概略を示すブロック図である。図12中の「自然画」はスルー画やスチル画を意味する。前述のようにSDRAM16上に置かれた自然画のデータ(YCbCr)や、文字やアイコンから成るOSDの描画データをこの表示コントローラ30に取り込んで処理し、ディスプレイ装置に表示する。これらのデータは、画像BUSから表示コントローラ30に取り込まれるので、画像BUSとのインターフェース部には入力バッファが置かれている。「自然画入力バッファ1」と「自然画入力バッファ2」はスルー画やスチル画のデータ(YCbCr)を取り込むためのバッファメモリであり、「OSD面入力バッファ1」とはOSDデータ(パレット画像)を取り込むためのバッファメモリである。これらの表示用データは図6等で説明した「DMAC1」を利用したDMA転送により、画像BUSを経由してSDRAM16から前述の入力バッファに送られる。自然画の入力バッファが2つとOSDの入力バッファが1つあるので、この表示コントローラ30は、ピクチャー・イン・ピクチャー表示された画像にOSD情報を重ねて表示できる。また、表示コントローラ30は、図5などを用いて説明したクロックゲート部60を備える(詳細は後述する)。
画像BUSを介して入力バッファに取り込まれた自然画のデータ(YCbCr)は後述の「Pixelクロック」に載って表示コントローラ30内部の画像信号処理回路に入る。自然画1の画像信号処理回路には「信号処理1」、自然画2には「信号処理2」というブロックがそれぞれ置かれており、ここで画素数の変換やフィルタ処理等が行われる。「画素数の変換」は入力された自然画データ(YCbCr)の水平画素数を、NTSCやPAL等のTV信号の水平有効画素数、あるいは表示部15の液晶モニタの水平画素数に合わせるための簡易な「水平方向変倍」や、本格的な解像度変換ブロックによる「デジタルズーム」(拡大のみ)等が用意されている。また、信号処理1と信号処理2の機能が異なっていることもある。例えば信号処理1が高機能な解像度変換ブロックを備え、信号処理2の方は簡易な水平方向変倍だけを備えるという構成もある。
これらの自然画データ(YCbCr)は続く「MIX」ブロックにて、予め設定された混合率にしたがって画素同士の加算が行われる。自然画1と自然画2のサイズが等しければ画面全体で重ね合わせ表示が行われるが、片方のサイズが小さければ画面の一部を利用した重ね合わせ表示となる。このMIXブロックで2つの自然画の重ね合わせ表示が実現される。一方、OSDデータ(パレット画像)の方も、画像BUSを介して入力バッファに取り込まれ、やはり同じPixelクロックに載って内部の画像信号処理回路に入る。OSDの画像信号処理回路にはカラーパレットが置かれており、パレット画像であったOSDデータはここで自然画と同じ「YCbCrデータ」に変換される。このカラーパレットではその他に「点滅」等の属性が付加されることが多く、これによってOSDの特定色の文字やアイコンを点滅させて注意を促すことができる。
カラーパレットで変換されたOSDデータ(YCbCr)は続く2つ目の「MIX」ブロックで、予め設定された2つ目の混合率に従ってピクチャー・イン・ピクチャー表示の自然画データ(YCbCr)と画素同士の加算が行われる。OSDデータ(YCbCr)のサイズに応じて画面全体か画面の一部でOSD情報が表示される。この2つ目のMIXブロックで3面(自然画1と自然画2とOSD情報)の重ね合わせ表示が実現される。2つ目のMIXブロックを出た3面重ね合わせ表示データ(YCbCr)は続いて「デジタルビデオエンコーダ」と「デジタルディスプレイIF」とに入る。デジタルビデオエンコーダは、上述したNTSCやPAL等のデジタルTV信号への変換を行い、さらに次の「DAC(DA変換器)」は、アナログTV信号を生成して外部のTVモニタに表示する。デジタルディスプレイIFは、上述した表示用データを適切な形式のデータに変換して表示部15に表示する。外部TVモニタへの表示と電子カメラ1の表示部15への表示とは排他的であることもある。
このように、表示コントローラ30の内部にも画像処理回路28において説明したような内部の画像信号処理回路があり、表示用の画像データは1画素ずつこの画像信号処理回路のPixelクロックに載ってその中を流れていく。このような表示コントローラ30内部の画像信号処理回路は、既定の周波数のPixelクロックで動作していることが多い。その周波数とは例えば、「27MHz」である。また、電子カメラ1の表示部15についても、同様に「27MHz」というPixelクロックに載せて表示用のデータを取り込んでいるものが多い。そのため、図1のクロック生成回路31は、この「27MHz」のクロックを生成する必要がある。一方、この画像処理装置はUSB24も備えているが、USB24は「48MHz」や「24MHz」や「12MHz」という周波数のクロックを必要とするので、クロック生成回路31は同時にこれらの中の何れか1つの周波数のクロックも生成しなければならない。1つのソースクロックからこれら2つの周波数のクロックを生成するために「PLL=(Phase Locked Loop)」が利用されているが、このPLLの発振周波数を決めるために、例えば以下の関係が利用される。
648MHz = 24MHz * 27 ・・・・ (式2)
648MHz = 27MHz * 24 ・・・・ (式3)
すなわち、「24MHz」の水晶発振子を用いてソースクロックを生成し、それをPLLLで「27倍」して「648MHz」というクロックを生成し、それを分周して「27MHz」のクロックを得る。または、「27MHz」の水晶発振子からソースクロックを生成し、それをPLLで「24倍」して「648MHz」のクロックを生成し、それを分周して「24MHz」のクロックを得ても良い。USBの規格では、クロック周波数の精度(偏差と温度ドリフト)が規定されているので、上述した2つの式のうち、式2の方を利用することが多い。このようにして得られた「648MHz」からこの画像処理装置のクロックを全て生成する。前述の「SYSCLK」もその一つである。この「648MHz」のクロックを分周して得られる「SYSCLK」としては以下のような周波数が利用できる。
648MHz = 27MHz * 24 ・・・・ (式3)
すなわち、「24MHz」の水晶発振子を用いてソースクロックを生成し、それをPLLLで「27倍」して「648MHz」というクロックを生成し、それを分周して「27MHz」のクロックを得る。または、「27MHz」の水晶発振子からソースクロックを生成し、それをPLLで「24倍」して「648MHz」のクロックを生成し、それを分周して「24MHz」のクロックを得ても良い。USBの規格では、クロック周波数の精度(偏差と温度ドリフト)が規定されているので、上述した2つの式のうち、式2の方を利用することが多い。このようにして得られた「648MHz」からこの画像処理装置のクロックを全て生成する。前述の「SYSCLK」もその一つである。この「648MHz」のクロックを分周して得られる「SYSCLK」としては以下のような周波数が利用できる。
216MHz(1/3分周),162MHz(1/4分周),129.6MHz(1/5分周),108MHz(1/6分周),92.6MHz(1/7分周),81MHz(1/8分周),72MHz(1/9分周),64.8MHz(1/10分周),58.9MHz(1/11分周),54MHz(1/12分周),49.8MHz(1/13分周),46.3MHz(1/14分周) ・・・ (式4)
なお、式4に示した周波数では「162MHz」,「108MHz」,「81MHz」,「54MHz」の4つが注目される。すなわち、これらの周波数のクロックをそれぞれ「1/6」,「1/4」,「1/3」,「1/2」というように分周すれば「27MHz」のクロックが得られる。例えば、「SYSCLK」としてこれらの周波数のクロックを選べば、上述したクロックゲート部60によるクロックゲーティングによって、「1/6」,「1/4」,「1/3」,「1/2」のように間引いて(分周して)「27MHz」のクロックを生成することができる。
なお、式4に示した周波数では「162MHz」,「108MHz」,「81MHz」,「54MHz」の4つが注目される。すなわち、これらの周波数のクロックをそれぞれ「1/6」,「1/4」,「1/3」,「1/2」というように分周すれば「27MHz」のクロックが得られる。例えば、「SYSCLK」としてこれらの周波数のクロックを選べば、上述したクロックゲート部60によるクロックゲーティングによって、「1/6」,「1/4」,「1/3」,「1/2」のように間引いて(分周して)「27MHz」のクロックを生成することができる。
ここで、分周比の分子が「1」であることが重要である。これは、クロックゲーティングで間引き(分周)により作られた「27MHz」のクロック・パルスが等間隔となる必要があるからである。表示コントローラ30内部の画像信号処理回路のPixelクロックが等間隔でないと、水平方向の画素間隔が広がったり狭まったりするので、表示された画像が歪むおそれがある。特に、アナログのTV信号には歪みが発生してしまう。すなわち、図7(3)で説明したような「N/M」(MおよびNは整数)という間引き(分周)は好ましくない。
このようなクロックゲーティングによって得られた「27MHz」のクロックを使用すれば、表示コントローラ30においても、上述した画像処理回路28と同様の効果を得ることができる。すなわち、表示コントローラ30が動作している場合であっても、MPU−BUSから内部のレジスタやメモリをWRITEやREADする際にWAITが入らない。例えば、図12のカラーパレットの値を変更(WRITE)する場合の処理を高速に行うことができる。これは、「SYSCLK」から生成された「27MHz」のクロック・パルスと、MPU−BUSのバスクロックである「SYSCLK」のクロック・パルスは、立ち上がりエッジが高い精度で一致していることに起因する。図12において、表示コントローラ30に供給されているクロックは、「27MHz」のクロックおよび「SYSCLK」である。「SYSCLK」は、MPU−BUSと画像BUSとの共通バスクロックであり、前述の表示用のデータ(自然画とOSD)も、この「SYSCLK」に同期して画像BUSから表示コントローラ30に入る。一方、表示コントローラ30内部の画像信号処理回路は図12のクロックゲート部60により「SYSCLK」から生成された「27MHz」のPixelクロックで動作する。そして、図12のMPU−BUSからも「SYSCLK」に同期して内部のレジスタとメモリがWRITEやREADされる。
なお、図12の信号処理1や信号処理2が高機能の解像度変換ブロックを備えている場合には、デジタルズームの倍率を変更する場合にもレジスタの値の変更(WRITE)を高速に行うことができる。View動作(スルー画表示と動画撮影)のように画像処理回路28と表示コントローラ30を同時に動かす場合は、「CCDCLK」と「SYSCLK」の同期合わせが必要になることもあるので「SYSCLK」の周波数の選択範囲はさらに狭くなる。上記の式4では「162MHz」,「108MHz」,「81MHz」が好適である。しかし、「SYSCLK」で同時にMPU20や内部BUS(MPU−BUSと画像BUS)やSDRAMコントローラ21が動作していると、それらが常に高い周波数で動作することになるので消費電力の増大が懸念される。この問題については、クロックゲート部60によるクロックゲーティングによって「SYSCLK」の方を低い周波数に変換(間引き)すれば良い。「SYSCLK」の方は「N3/M3」(M3およびN3は整数)という間引き(分周)を行うことができるからである。このような対応により、多様な周波数の「SYSCLK」を得ることができる。
さらに、「DDR−SDRAM」を用いる場合は、一般にDDR−SDRAMは最低周波数が決まっていることが多い。そこで、バスクロックの周波数がDDR−SDRAMのクロックの周波数よりも低い時には、DDR−SDRAMからデータをREADすると、内部BUS(MPU−BUSおよび画像BUS)がそのデータを受け取ることができない場合がある。そこで、SDRAMコントローラ21の内部に「WRITEバッファ」と「READバッファ」を設ければ良い。DDR−SDRAMとそれらのバッファとのデータ受け渡しはDDR−SDRAMのクロックで行う。そして、DDR−SDRAMおよびSDRAMコントローラ21には高い周波数の「SYSCLK」を供給し、MPU20と内部BUS(MPU−BUSおよび画像BUS)とSDRAMコントローラ21とには低い周波数(間引き)の「SYSCLK」を供給すれば良い。
なお、表示コントローラ30において、上述したカラーパレットの値の変更(WRITE)だけを行う場合は、従来のように「SYSCLK」の立ち上がりエッジと一致していない「27MHz」のクロックで表示コントローラ30内部の画像信号処理回路を動作させても良い。表示コントローラ30の動作中にカラーパレットの値の変更(WRITE)するのは、特定の文字やアイコンの色を頻繁に切り換えてユーザに注意を促したり、ある操作が選択されたことを明示したり、あるいはある動作が進行中であること示したりすることが目的である。これらの目的はユーザが視認できる程度の低い周波数で切り換えられるので、図3で説明したものと同様の「WRITEバッファ」を利用することで対応しても良い。「WRITEバッファ」を使用すれば表示コントローラ30の動作中にカラーパレットをMPU−BUSからWAIT無しでWRITEすることができる。同様に表示コントローラ30の動作中に「ステータスレジスタ」や「割り込み要因レジスタ」等をMPU−BUSからWAIT無しでREADするために「READバッファ」を備えることが望ましい。それ以外のレジスタやメモリをMPU−BUSからWRITEやREADする時は或る程度WAITが挿入されても大きな問題はない。ただし、表示コントローラ30の動作中に多数のレジスタの値や、メモリ内の多数のエントリの値を変更する(WRITE)するのであれば上述したクロックゲーティングを用いるのが望ましい。
さらに、図1のUSB24やカードIF23においても特定の周波数のクロックが使われている。ただし、これらのインターフェースにおけるデータの送受信はパケット単位で行われる。すなわち、それらのコントローラはパケットサイズ分の「バッファメモリ」を備えており、MPU−BUSとのデータの受け渡しはこのバッファメモリを介して行われる。一方、前述の特定周波数のクロックはシリアル化されたパケットデータをインターフェースのデータ線を通して送受信するためのビットクロックとして使われるが、その送受信も前述のバッファメモリとの間で行われるのでMPU−BUSからのWRITEやREADとは排他的でかつ非同期である。バッファメモリをMPU−BUSからWRITEやREADする時はそのバスクロック(「SYSCLK」)に同期して行っても良いのでWAITは入らない。バッファメモリを2つ持つならデータ送受信の速度が上がることは言うまでもない。また、前述のコントローラとの間でコマンドやレスポンス等の情報をやり取りするためのレジスタをMPU−BUSからWRITEやREADする時も、そのバスクロック(「SYSCLK」)に同期して行っても良い。また、USB24やカードIF23のコントローラ内部の動作クロックを前述のようにクロックゲーティングにより「SYSCLK」から生成しても良い。その場合はMPU−BUSのバスクロックである「SYSCLK」と立ち上がりエッジの一致した低周波数のクロックが得られるので、どの様な場合でもMPU−BUSからのWRITEやREADが高速に行われると共に、それらのコントローラ自身の消費電力を抑えることも可能である。また、例を挙げた以外の様々なモジュールへの適用についても同様である。
最後に、上述したデジタルズームによる画像の拡大にいついて補足する。図13は、デジタルズームによる画像の拡大を表す概念図である。デジタルズームは図3の解像度変換ブロックで行われるが、図13(1)の外側の矩形は、この解像度変換ブロックに入る入力画像を表す。デジタルズームの倍率が「1」であればこの左の外側の矩形と同じサイズの出力画像が解像度変換ブロックから出る。図13(2)の矩形は、この出力画像を表しているが、これは(1)の外側の矩形と同じサイズである。デジタルズームの倍率はこの画像サイズが基準となる。デジタルズームは基本的に倍率が「1」以上の拡大となるが出力画像のサイズは常に同じである。倍率が「1」より大きい場合は(1)の外側の入力画像の中央部を切り出して、元と同じサイズまで拡大する。
図13(1)の内側の矩形は、この切り出される画像を表しているが、その外側の網掛けの部分は破棄されるので解像度変換ブロックにとってはブランキング期間と同じである。当然であるが(1)の外側の矩形のさらに外には本来のブランキング期間が存在する。解像度変換ブロックで処理されるのは(1)の内側の小さな画像であるが、(1)の網掛けの部分がブランキング期間として残っているので、入力レートが上がるわけではない。すなわち、入力画像の1H期間(HDの周期)と1V期間(VDの周期)は変わっていない。拡大後の出力画像(2)のサイズは(1)の網掛け部分を含めたサイズと同じなので、入力画像の1H期間(HDの周期)で出力画像の1ラインを出力することができるはずであり、さらに入力画像の1V期間(VDの周期)で出力画像の1フレームを出力することもできる。したがって、解像度変換ブロックの動作クロックもその前のステージの動作クロックと同じで良いと考えられるが、解像度変換ブロックでは垂直方向の拡大も行われるのでラインの補間が必要になる。複数のラインの画像データからそれらに挟まれたラインの画像データを生成するので、解像度変換ブロックにはラインバッファが必要である。
図13(3)はこのラインバッファを表す。解像度変換のアルゴリズムは色々あるがここでは2本のラインからその間のラインを補間する場合を例に説明する。したがって、ラインバッファは2本必要である。補間されるラインが1より多くても同じ2ラインのデータが利用される。解像度変換ブロックは入ってきた画像データをリアルタイムで拡大して出力しなければならない。補間されたラインの画像データが全て出力されるまでは2本のラインバッファに画像データを保持する必要があるが、その間にも次のラインの画像データが入ってくるので、ラインバッファをさらに1本用意してそこに格納しなければならない。(3)にはそのためのラインバッファも図示されている。すなわち、ラインバッファ1とラインバッファ2には「ラインn」と「ラインn+1」との画像データがそれぞれ格納されており、これらの画像データからその2本のラインに挟まれたラインの画像データを生成する。
一方、その補間処理が行われている間に入ってくる「ラインn+2」の画像データはラインバッファ3に格納している。ラインnとラインn+1とを利用した補間処理が全て終わると、ラインバッファ1は解放されて次の「ラインn+3」の画像データを格納するために使われ、次はラインバッファ2とラインバッファ3に入っているラインn+1とラインn+2の画像データを利用して補間処理が行われる。このようにラインバッファをサイクリックに切り換えて補間処理が続けられる。
ここで図13(4)のように補間されるラインが2本ある場合の処理を考える。(4)の「実線」の○は前述のラインnとラインn+1の画素で、これらを利用して補間処理が行われ、その2本のラインに挟まれた「破線」の○が補間された「ラインn’」と「ラインn’’」の画素である。最初にラインn’の補間が行われてその画像データが出力され、続いてラインn’の補間が行われてその画像データが出力される。したがって、その間はラインnとラインn+1の画像データがラインバッファに残っていなければならない。しかしラインn’の画像は拡大されているので水平サイズは元と同じであり、そのためラインn’の画像データを全て出力するのに入力画像の1H期間(HDの周期)掛かる。
次のラインn’’の画像データを全て出力するのも同じ1H期間(HDの周期)掛かるので、結局ラインnとラインn+1との画像データは2H期間ラインバッファに残っていなければならない。ところが、その間にはラインn+2に続いてラインn+3の画像データも解像度変換ブロックに入ってくるので、ラインバッファ3が溢れてしまう。実際はブランキング期間の間も補間されたラインの画像データを出力し続けることができるので2H期間よりは短い。しかし、ラインバッファが溢れてしまうというおそれはある。デジタルズームの倍率が上がって3本や4本のラインを補間することになれば溢れる可能性は増大する。したがって、ラインn+3の画像データが入ってくる前に補間処理を終えて、その画像データを全て出力する必要があるが、それに許される時間は入力画像の1H期間(HDの周期)と水平ブランキング期間(図13(1)の網掛け部分を含む)との合計である。
この短時間に必要なラインの補間を終えるには解像度変換ブロックのクロックの周波数を上げるしかない。解像度変換ブロックには「CCDCLK」の周波数で決まるレートで画像データが入ってくるが、これは一定なので解像度変換ブロックのクロックの周波数を上げれば前述の制限時間内に必要なラインの補間を終えることができる。クロックの周波数をどの程度上げるかは倍率によって決まる。図13の例では、(3)に示すように補間用のラインバッファと次のラインのデータを受け取るためのラインバッファが別々にあるので、前方のステージから送られてくる画像データを受け取ることとラインの補間を別々のクロックで非同期に動かすことができる。本発明では解像度変換ブロック以降のステージに供給するクロックと、それより前方のステージに供給するクロックとを別々にすることで前述の非同期動作に対処している。
以上説明したように、第1実施形態によれば、外部メモリインターフェース部と制御部と内部バスとの動作クロックである第1のクロックを、クロックゲート手段により規定の割合で遮断して前記第1のクロックと同期し、かつ周波数の低い第2のクロックを生成し、第2のクロックに同期して画像処理を行う。したがって、処理能力を維持しつつ消費電力の低減を図ることができる。また、第1のクロックと高い精度で立ち上がりエッジの一致している第2のクロック(低周波数のクロック)に同期して画像処理を行うことにより、画像処理部内のレジスタやメモリを内部バスから常にWAIT無しで高速にアクセスすることができる。
また、第1実施形態によれば、画像処理部の後半部分に供給されるクロックの周波数を制御することにより、消費電力の低減を図ることができる。
また、第1実施形態によれば、画像処理部内に供給するクロックの周波数を適宜切り換えることにより、消費電力の低減を図ることができる。
また、第1実施形態によれば、画像データを拡大する際に、拡大倍率に応じて画像処理部の後半部部分に供給するクロックの周波数を変更する。したがって、拡大倍率が高く、負荷の大きい場合に限ってクロックの周波数を上げることにより、消費電力の増加を最小限に抑えることができる。
また、第1実施形態によれば、拡大倍率に応じて、画像処理のパスを適宜変更することにより、画像処理部内部の画像信号処理回路の動作クロックを最低周波数まで下げることができる。したがって、大幅な消費電力の削減が期待できる。
また、第1実施形態によれば、表示コントローラについても同様の処理を行うことにより、処理能力を維持しつつ消費電力の低減を図ることができる。さらに、表示コントローラが動作中であってもその内部のレジスタやメモリを内部バスから高速にアクセスすることができる。
なお、第1実施形態では、図4で説明したように、CCDIF27に並べ換えの機能を有する例を示したが、本発明はこの例に限定されない。並べ換え機能を有さない場合には、2つのクロック(CCDCLKとIPCLK1)の同期合わせを適宜行えば良い。
また、第1実施形態では、図6で説明したように、クロックゲート部40を画像処理回路28内に設け、クロックゲート部50をCCDIF27内に設ける例を示したが、本発明はこの例に限定されない。クロックゲート部40およびクロックゲート部50はクロック生成回路31内に設ける構成としても良いし、CCDIF27、画像処理回路28、クロック生成回路31とは独立したクロック分配回路として構成しても良い。クロック分配回路として構成した場合、クロック生成回路31からSYSCLKを受け取り、例えば図5で説明したのと同様の手法を用いてIPCLK1およびIPCLK2を生成し、それらをCCDIF27や画像処理回路28へ出力するようにすれば良い。
<第2実施形態>
以下、図面を用いて本発明の第2実施形態について説明する。第2実施形態では、第1実施形態と同様に、本発明の画像処理装置を備えた電子カメラを例に挙げて説明する。なお、第2実施形態は第1実施形態の変形例である。したがって、第1実施形態と異なる部分についてのみ説明する。また、第1実施形態と同様の構成については同じ符号を用いて説明する。
以下、図面を用いて本発明の第2実施形態について説明する。第2実施形態では、第1実施形態と同様に、本発明の画像処理装置を備えた電子カメラを例に挙げて説明する。なお、第2実施形態は第1実施形態の変形例である。したがって、第1実施形態と異なる部分についてのみ説明する。また、第1実施形態と同様の構成については同じ符号を用いて説明する。
第2実施形態の電子カメラは、第1実施形態の電子カメラ1と略同様の構成を示す(図1参照)。
図14は、第1実施形態の図3に相当する画像処理回路28の構成および処理の流れを示す図である。
図14に示すように、画像処理回路28は、第1実施形態で説明したクロックゲート部40およびクロックゲート部50を備えない。その代わりに、クロック生成回路31は、第1実施形態で説明した「SYSCLK」と「IPCLK1」と「IPCLK2」とを生成し、適宜供給する。
図15は、第1実施形態の図6に相当するクロック生成回路31からクロックの供給について説明する図である。
図15に示すように、クロック生成回路31は、画像処理回路28に「SYSCLK」と「IPCLK1」と「IPCLK2」とを供給し、その他の部分には「SYSCLK」のみを供給する。第2の実施形態において、「IPCLK1」および「IPCLK2」の周波数は「SYSCLK」の周波数以下となるように設定され、かつその関係を維持したまま「SYSCLK」と「IPCLK1」と「IPCLK2」との周波数が変更できる。ただし、画像処理回路28内部の画像信号処理回路は「IPCLK1」および「IPCLK2」のみで動作し、「SYSCLK」の方は内部バスと画像処理回路28とをつなぐバスインターフェース部の動作にのみ関わっている。これにより画像処理回路28とその他の主要モジュールはそれぞれ必要に応じた処理速度で動作できるようになり、電子カメラ1全体の性能を維持したまま同時に消費電力を低減することができる。
すなわち、画像処理回路28内部の画像信号処理回路は「IPCLK1」および「IPCLK2」という低い周波数のクロックで動作するので消費電力が抑えられ、MPU20やDMAコントローラ21やSDRAM16の方は「SYSCLK」という高い周波数のクロックで動作するので十分な演算速度とデータ転送速度が確保される。
ただし、第2実施形態においては、内部バスからレジスタへのREADおよびWRITEと、画像処理回路28内部の画像信号処理回路からレジスタへのREADおよびWRITEとを同期させる必要である。これは、内部バスからレジスタへのREADおよびWRITEと、画像信号処理回路からレジスタへのREADおよびWRITEが、ほぼ同時に起こる場合があるためである。これらがほぼ同時に起こった場合の同期制御について、図16および図17を用いて説明する。
図16は、MPU−BUSから画像処理回路28内部のレジスタをWRITEする場合のタイミング図であるが、そのWRITEとほぼ同時に画像信号処理回路から同じレジスタのREADが行われている。一方、図17は、MPU−BUSから画像処理回路28内部のレジスタをREADする場合のタイミング図であるが、そのREADとほぼ同時に画像信号処理回路から同じレジスタへのWRITEが行われている。
ここでは、第1実施形態と同様に、MPU−BUSはAHB(Advanced High-performance BUS)のような高速なBUSであると仮定する。「SYSCLK」はMPU−BUSのBUSクロックであり、AHBの「HCLK」に対応する。「HWDATA[31:0]」はMPU−BUSのWRITE用データBUSであり、「HRDATA[31:0]」はMPU−BUSのREAD用データBUSである。MPU−BUSのアドレスBUSは省略している。また「IPCLK」は上述したIPCLK1またはIPCLK2を表している。「Register−In」は、画像処理回路28内部のレジスタへの入力データ(WRITEデータ)、「Register−Out」は、画像処理回路28内部のレジスタからの出力データ(READデータ)を表す。「Write−Enable」は、該当レジスタへの書き込みの許可/禁止を制御する信号である。「WAIT」は、上述した同期制御のために、処理タイミング調整するための信号である。
この同期制御においては、レジスタやメモリへのWRITEを全て「Write−Enable」がTRUE(書き込み許可)である期間の「IPCLK」の立ち上がりエッジによって行う。それらがMPU−BUSからWRITEされる場合であっても、「SYSCLK」ではなく「IPCLK」の立ち上がりエッジによってWRITEしている点が通常とは異なる。
MPU−BUSがAHBであるとすれば「SYSCLK」はHCLKとなる。MPU20からのWRITEなのでSINGLEWRITEと仮定する。
図16に示すように、「SYSCLK」の2番目のサイクルT1は、アドレスとコントロール情報(WRITEコマンド、WRITEモードなど)がMPU20から送られ、T2の立ち上がりエッジで画像処理回路28にラッチされる。それらの情報はT2のサイクルでデコードされ、該当するレジスタやメモリへのWRITE制御が始まる(不図示)。T2からそのアドレスに対応するWRITEデータの出力される期間が始まり、MPU20によってWRITEされるデータ(図16中の「New−DATA」)がHWDATA[31:0]上に出力される。一方、画像処理回路28内部の画像信号処理回路は、T2のサイクルに含まれるIPCLKの立ち上がりエッジから次の立ち上がりエッジまでの期間(IPCLKの1サイクル)で、当該レジスタの値を参照(READ)している。すなわち、このIPCLKの1サイクルの後の立ち上がりエッジで、当該レジスタの値が画像信号処理回路によってラッチされる。そこで、ラッチのタイミングと同じIPCLKの立ち上がりで、HWDATA[31:0]上の値を当該レジスタにREADするようになっている、従ってHWDATA[31:0]上のデータはそのWRITEが完了するまで保持されなければならない。そのため、画像処理回路28はT22のサイクルに含まれるIPCLKの立ち上がりエッジに同期して「WAIT」をHighに変化させる。その「WAIT」信号はT2のサイクルの途中からMPU−BUSに出力され始め(図16中の「AND」)、MPU−BUSにWAITを掛ける。HWDATA[31:0]上のデータ(「New−DATA」)は、T3の立ち上がりエッジまでにはセットアップ時間を含めて確定しているので、画像処理回路28はそのエッジに同期して「Write−Enable」を有効(High)にする。
図16「WAIT」は引き続きHigh状態を維持してWAITを続ける。
「WRITE−Enable」が有効(High)になってから最初の「IPCLK」の立ち上がりエッジが到着するとデータ(「New−DATA」)は当該レジスタにWRITEされ、それに伴って「Write−Enable」は無効(Low)にクリアされる。「Write−Enable」がクリアされるのと並行して、「WAIT」がLow状態に復帰する。「WAIT」は「SYSCLK」の立ち上がりエッジによって毎回ラッチされているが、T5の立ち上がりエッジでラッチされた「WAIT」は未だセット状態(Low状態)なのでMPU−BUSはHWDATA[31:0]上の「New−DATA」を保持し続ける。「WAIT」は引き続きT6の立ち上がりエッジでラッチされるが、今度はそれがクリア状態(Low)なので、MPU−BUSはHWDATA[31:0]上への「New−DATA」の出力を停止してバスを開放する。従って、MPU−BUSは次のT7のサイクルから次のデータのWRITEを行うことができる。画像処理回路28内部の画像信号処理回路が当該レジスタを参照(READ)しないIPCLKのサイクルにおいては、当該レジスタがMPU−BUSから何時WRITEされてもよい。そのIPCLKのサイクルでは「WAIT」がLow状態のままであるから、MPU−BUSはSYSCLKの立ち上がりエッジで当該レジスタにデータをWRITEすることができ、その結果WRITEはSYSCLKの1サイクルで完了する。
逆に、図16においては、T4のサイクルに含まれるIPCLKの立ち上がりエッジで、画像そり回路28内部の画像信号処理回路が当該レジスタの値を参照(READ)しており、そのためこのIPCLKの立ち上がりエッジ付近では、IPCLKと非同期のSYSCLKの立ち上がりエッジで当該レジスタにWRITEすることはできない。そのため、MPU−BUSにWAITをかけてHWDATA[31:0]上に出力した「New−DATA」を長く保持しておき、その間にIPCLKの立ち上がりエッジによって当該レジスタにWRITEしている。画像信号処理回路によるREAD(参照)と、MPU−BUSからのWRITEは共に同じIPCLKの立ち上がりエッジで行われことになるので、画像信号処理回路は図16の「Old−DATA」の方を読み取ることになり、「Old−DATA」でもなく、「New−DATA」でもない不正な値を読み取るという恐れはない。詳細な動作は上述した通りである。これ以外のサイクルにおいては、SYSCLKの立ち上がりエッジで当該レジスタのWRITEが行われており、WRITEはSYSCLKの1サイクルで完了するので、高速にWRITEが行われていることになる。尚、上述した「WAIT」とはAHBにおける「HREADY」の極性を反転したものと等価であり、実際のAHBシステムにおいては、「HREADY」によってWAITの制御が行われている。図16のように、レジスタからのREAD(画像信号処理回路による参照)と、同じレジスタへのWRITE(MPU−BUSからの書き込み)が同時に起こる場合は、WRITE後の新しい値(図16の「New−DATA」)は次のIPCLKの立ち上がりエッジ以降で画像信号処理回路によって利用される。
次に、MPU20によって画像処理回路28のレジスタやメモリがREADされる場合について図17を用いて説明する。MPU−BUSは図16と同様にAHBであり、SINGLEREADが行われるものと仮定する。
この場合、画像処理回路28内部の画像信号処理回路からレジスタやメモリにデータがWRITEされることがあり、そのWRITEとほぼ同時にMPU20が当該レジスタやメモリをREADすることがあったとしても、MPU20は正しい値を読み取るように制御しなければならない。正しい値とは、WRITE前の値か、WRITE後の値を意味しており、それ以外の値であった場合は不正なREADとなる。
まず、T0のサイクルでアドレスとコントロール情報(READコマンドやREADモードなど)がMPU20から送られ、続くT1の立ち上がりエッジでそれらが画像処理回路28にラッチされる(不図示)。それらの情報はT1のサイクルでデコードされ、それに該当するレジスタやメモリからのREADが開始される(不図示)。一方、T0のサイクルに含まれるIPCLKの立ち上がりエッジからは画像処理回路28内部の画像信号処理回路による同一レジスタへのWRITEが始まっているので、これらのREADとWRITEがほぼ同時に起こっていることになる。そこでこれらのREADとWRITEを同期させる制御が必要となる。
T1のサイクルの途中からは、当該レジスタやメモリに記憶されているデータがHRDATA[31:0]上に現れるが、これとほぼ同時に動作中の画像信号処理回路によって当該レジスタやメモリへのWRITEが行われるので、HRDATA[31:0]上に現れたそのデータをT2の立ち上がりエッジでラッチする(MPU20が読み取る)ことは適切でない。画像信号処理回路は、T0のサイクルに含まれるIPCLKの立ち上がりから当該レジスタやメモリへのWRITEサイクルに入るので、画像処理回路28はそのIPCLKの立ち上がりエッジに同期して、まず「WAIT」をHigh状態に変化させる。その「WAIT」信号はデータと同じくT1のサイクルの途中からMPU−BUSに出力され始め(図17中の「AND」)、MPU−BUSにWAITを掛ける。上述したIPCLKの立ち上がりエッジ(T0のサイクルに含まれる)に同期して(少し遅れて)、画像信号処理回路で生成された新しいデータ(図17中の「New−DATA」)が当該レジスタの入力(「Register−In」)に供給され、その「New−DATA」は次のIPCLKの立ち上がりエッジ(T2のサイクルに含まれる)によって当該レジスタにWRITE(ラッチ)される。このIPCLKの立ち上がりエッジ以降は、「New−DATA」が当該レジスタに記憶されているので、HRDATA[31:0]上のデータも上述したIPCLKの立ち上がりエッジ(T2のサイクルに含まれる)より少し遅れて古い値から「New−DATA」に切り替わる。ただし、このデータが切り替わる時は、データの不定期間が存在する(確定した値にならない)。そこで、この不定期間のデータをMPU20が読み取らないようにするため、更に次のIPCLKの立ち上がりエッジ(T4のサイクルに含まれる)まで「WAIT」をHigh状態に維持する。この3番目のIPCLKの立ち上がりエッジに同期して「WAIT」は再びLow状態に復帰する。すなわち、「WAIT」はIPCLKの2サイクルに渡ってHigh状態となる。一方、MPU−BUS側では、T2以降のSYSCLKの立ち上がりエッジで毎回HRDATA[31:0]上のデータと「WAIT」をラッチしているが、T2からT5までの立ち上がりエッジでは「WAIT」がHigh状態なのでラッチしたデータを破棄して更に待ち続ける。そして、次のT6の立ち上がりエッジでは「WAIT」がLow状態に復帰しているので。このときラッチしたデータが最終的な値としてMPU20に読み取られ、バスが開放される。そして、MPU−BUSは次のT7のサイクルから、次のデータのREADを行うことができる。ところで、MPU−BUSからのREADにWAITが掛かったのは、画像信号処理回路からのWRITEとほぼ同時に起こったからであり、画像信号処理回路からのWRITEが行われないサイクルでは「WAIT」がHigh状態に変わることはないので、MPU−BUSからREADはSYSCLKの1サイクルで完了し、高速なREADが実現されている。尚、「WAIT」信号はAHBにおける「HREADY」信号の極性を反転したものと等価であり、実際のAHBシステムでは「HREADY」によって制御が行われている点は上述したWRITEの場合と同じである。
例えば、以上説明したようにすれば、画像処理回路28のレジスタをREADやWRITEする際の同期合わせを行うことができる。ただし、MPU−BUSからのREADやWRITEを画像処理回路28内部の画像信号処理回路の動きに同期させた場合は、かなり長いWAITが挿入されることになり、MPU20が画像処理回路28のレジスタやメモリをREADやWRITEする速度が大幅に低下してしまう。このように画像処理回路28内部の画像信号処理回路を「SYSCLK」とは異なる「IPCLK(IPCLK1およびIPCLK2)」で動作させた場合は、MPU20が画像処理回路28内部のレジスタやメモリをREADやWRITEする速度が低下してしまうのでMPU20の処理性能が落ちてしまう。
そのため、MPU20の性能を十分に発揮するために、WAITが入るのを抑制する必要がある。
そこで、画像処理回路28による画像処理が行われている最中であってもMPU−BUSから画像処理回路28内部のレジスタやメモリを高速にアクセスできるようにする方法((1)〜(5))について説明する。
(1)画像処理回路28内部の画像信号処理回路において画像処理が行われていない場合は、MPU−BUSから画像処理回路28内部のレジスタやメモリをREADやWRITEする際にWAITが掛からないようにした。画像処理回路28内部の画像信号処理回路において画像処理が行われていない場合は、画像処理回路28内部の画像信号処理回路が停止しており、画像処理回路28内部の画像信号処理回路からレジスタやメモリがREADやWRITEされることは無い。したがって、MPU−BUSからそれらをREADやWRITEする際に「WAIT」がLow状態のままでも構わないはずである。画像処理回路28の制御レジスタは画像処理回路28内部の画像信号処理回路の「動作/停止」を指示する制御ビットを含み、この制御ビットが「停止」に設定されている場合はMPU−BUSから画像処理回路28内部のレジスタやメモリがREADやWRITEする際に「WAIT」がLow状態に維持されるようにした。
画像処理回路28内部のレジスタやメモリの設定(WRITE)は「SYSCLK」の立ち上がりによって行われ、それはSYSCLKの1サイクルで完了するので、画像処理を開始する前の初期設定が素早く行われる。
画像処理中にMPU−BUSから画像処理回路28内部のレジスタやメモリをREADやWRITEする必要が無い場合、すなわち画像処理が開始される前や画像処理が終了した後でそれらをREADやWRITEすれば済むような動作の場合は、このような方法によりMPU20の処理性能を落とさないようにすることができる。
スチル画撮影動作におけるPost−Process部前段28bおよびPost−Process部後段28cによる後処理や再生動作における解像度変換等の場合は、SDRAM16上に置かれた画像処理前の画像データに対して画像処理を施すことになるので、画像処理を開始するタイミングに制約は無い。したがって画像処理を開始する前に予めそれらのレジスタやメモリ(補正テーブル等)の設定(WRITE)を行い、画像処理が終了してから処理結果が入っているレジスタ(ステータスレジスタ等)をREADするような場合には、この方法を利用することができるので、READやWRITEが高速に行われる。
(2)画像処理中であっても、ブランキング期間のように画像処理回路28内部の画像信号処理回路が停止する期間は、MPU−BUSから画像処理回路28内部のレジスタやメモリをREADやWRITEする際にWAITが掛からないようにした。
画像処理中にMPU−BUSからレジスタやメモリがREADやWRITEされるのはView動作(スルー画表示)や、スチル画撮影動作におけるPre−Process部28aによる前処理(撮像素子からの画像信号読み出し中に行われる)の場合である。図14における網掛けのブロックは画像処理中であってもMPU−BUSからREADやWRITEされることがある。欠陥画素補正回路の「補正テーブル」とは欠陥画素のアドレスが記憶されたメモリであり、これは画像処理中に画像処理回路28内部の画像信号処理回路から参照(READ)される。1フレーム分の欠陥画素アドレスが全てこのメモリに記憶できる場合は画像処理中にMPU−BUSからこのテーブルをWRITEする必要はないが、それができない場合は補正の終わった欠陥画素のアドレスをこれから入ってくる欠陥画素のアドレスに順次更新(WRITE)していかなければならない。「3A評価値」とは、上述したように、AE/AF/AWB制御のための評価値であり、画像処理中はこれらの値がレジスタやメモリにWRITEされるので、3A評価値を用いた制御を行うために、MPU20はその値READしなければならない。
View動作(スルー画表示)の場合はあるフレーム間隔で絶えず3つの評価値をREADしているが、スチル画撮影動作におけるPre−Process部28aの前処理の場合は、その処理中にAWB評価値だけREADすれば良い。ただし、スチル画撮影動作におけるPre−Process部28aの前処理で1フレーム分のAWB評価値を画像処理回路28内部のメモリに記憶しておくことができる場合は、Pre−Process部28aによる前処理が終了してから(画像処理回路28内部の画像信号処理回路が停止した後)でも、その値をREADすればよい。View動作(スルー画表示)の場合は画像信号処理回路の動作中に「WB調整」のレジスタの値が更新(WRITE)されることがある。以前のフレームのAWB評価値に基づいて算出された新しいWB調整値(R画素とB画素のゲイン)がそのレジスタに設定(WRITE)されるからである。同様にView動作(スルー画表示)の場合は画像信号処理回路の動作中に「解像度変換」のレジスタの値が変更(WRITE)されることもある。デジタルズームの倍率が変わる場合はそのズームパラメータが新たに解像度変換回路のレジスタに設定(WRITE)されるからである。
このように画像信号処理回路の動作中であってもMPU−BUSから画像処理回路28内部のレジスタやメモリがREADやWRITEされることは多い。画像処理中は画像処理回路28内部の画像信号処理回路がレジスタやメモリの値を参照(READ)したり、画像処理回路28内部の画像信号処理回路で生成されたデータ(3A評価値等)がレジスタやメモリに出力(WRITE)されたり、あるいは画像処理回路28内部の画像信号処理回路がステータスレジスタの値を更新(WRITE)したりする。
以前に述べたように画像処理回路28内部の画像信号処理回路からのREADやWRITEとMPU−BUSからのREADやWRITEがほぼ同時に起こった場合は、当該レジスタやメモリをREADした方は不正なデータを得るおそれがある。この問題を防ぐためにはMPU−BUSからのREADやWRITEにWAITを掛けることが考えられるが、前述のように画像処理中はレジスタやメモリへのREADやWRITEが多いので、WAITを掛けるのをできるだけ抑えて高速化を図るのが好ましい。
第2実施形態では、以下のようにしてWAITが掛かるのを軽減している。すなわち、View動作(スルー画表示)や、スチル画撮影動作におけるPre−Processの場合はAFEから画像処理回路28に直接RAWデータが入ってくるが、その中には有効画素の存在しないブランキング期間も含まれているのでその間は画像処理回路28内部の画像信号処理回路を停止する必要がある。ただし、処理の内容に応じて停止するタイミングを調整する必要がある。このようにブランキング期間中に画像処理回路28内部の画像信号処理回路が停止されることで、レジスタやメモリが画像処理回路28内部の画像信号処理回路からREADやWRITEされることは無くなる。したがって、このように、画像処理回路28内部の画像信号処理回路を停止している間はMPU−BUSから画像処理回路28内部のレジスタやメモリをREADやWRITEする際にWAITを掛けなくても構わない。
図18は、ブランキング期間と有効画素期間とについて説明する図である。図18中の外側の矩形は、ブランキング期間と有効画素期間との両方を含む1フレーム期間を表す。図18に示すように、内側の矩形は有効画素期間であるためMPU−BUSからレジスタをREADやWRITEする場合はWAITを掛ける必要がある。一方、その外側の網掛けの部分はブランキング期間であるのでMPU−BUSからREADやWRITEする際にWAITを掛けない。
このようにブランキング期間に入って画像処理回路28内部の画像信号処理回路が停止している時は、MPU−BUSから画像処理回路28内部のレジスタやメモリをREADやWRITEする際にWAITが掛からないので、設定値の変更(WRITE)、および3A評価値やステータスレジスタ等のREADを素早く行うことができる。
なお、図14に示したCCDIF27にはTG13から水平同期信号(HD)、垂直同期信号(VD)、画素クロック(CCDCLK)が与えられており、これらの信号を用いてブランキング期間や有効画素期間の検出が行われる。
第2実施形態では有効画素期間内であってもWAITを掛けることにより、MPU−BUSから画像処理回路28内部のレジスタやメモリをREADやWRITEすることができるようになっているが、有効画素期間内にそれらの値を変更(WRITE)したり、参照(READ)したりすることに意義があるかどうかは別である。例えば、1フレームの画像処理の途中で画像処理パラメータ等を変更(WRITE)するようなことを行うと画像の上部と下部で処理結果が異なってしまうので止めるべきであろう。同様に、1画素毎(IPCLKの1サイクル毎)にその値が変わるようなレジスタやメモリをMPU−BUSからREADすることも無意味だろう。有効画素期間内のREADやWRITEにWAITが掛かっているのは、単にMPU−BUSと画像処理回路28内部の画像信号処理回路の間で不正な値の受け渡しが行われないようにするためであり、その期間内に画像処理回路28内部のレジスタやメモリをREADやWRITEすることが有意義ということではない。実際に画像処理回路28内部の画像信号処理回路の動作中にそれらの値をREADやWRITEするとしたら、フレームの切り替わり点である垂直ブランキング期間に行うことが多いだろう。このように画像処理回路28内部の画像信号処理回路の動作中にそのレジスタやメモリをMPU−BUSからREADやWRITEする場合はその意義を十分考えなければならないが、それが必要な場合はたとえブランキング期間という限られた時間であっても高速にREADやWRITEを行うことができることはメリットである。
(3)画像処理回路28内部の画像信号処理回路が動作中であっても、それらのレジスタやメモリが画像処理回路28内部の画像信号処理回路からREADやWRITEされる期間が限られている場合、それを除いた期間はMPU−BUSから画像処理回路28内部のレジスタやメモリをREADやWRITEする際にWAITが掛からないようにしている。
例えば、図14の感度比調整やWB調整回路のブロックにおいては各色の画素値とそれに対応するゲイン係数との乗算が行われるが、そのゲイン係数が入っているレジスタは有効画素期間中「IPCLK(IPCLK1またはIPCLK2)」の全ての立ち上がりエッジで参照(READ)されることになる。ただし、入力されるのは図3のベイア配列のような1色/画素のデータであるから、全ての色(R,Gr,Gb,B)のゲインレジスタが参照(READ)されるわけではなく該当する1つだけである。図14
また、図14のγ補正がLUT方式で行われる場合には、そのγ−LUTが格納されているメモリもγ補正ブロックの有効画素期間中に「IPCLK(IPCLK1またはIPCLK2)」の全ての立ち上がりエッジで参照(READ)されるはずである。
また、図14のγ補正がLUT方式で行われる場合には、そのγ−LUTが格納されているメモリもγ補正ブロックの有効画素期間中に「IPCLK(IPCLK1またはIPCLK2)」の全ての立ち上がりエッジで参照(READ)されるはずである。
この(3)は前の(2)の方法をより一般化したもので以下のようになる。
すなわち、画像処理回路28内部の画像信号処理回路が動作中であっても、それぞれの画像処理ブロックにおいてそのレジスタやメモリがREADやWRITEされる期間とREADやWRITEが行われない期間とを単純かつ明確に分けることができる場合、前者の期間ではMPU−BUSからそれらのレジスタやメモリがREADやWRITEされる際にWAITが掛かるようにしており、後者の期間ではそれと反対にWAITが掛からないようにしている。垂直ブランキング期間におけるMPU−BUSからのREADやWRITEではWAITが掛からないようになっているが、これは代表的な例である。
この方法が特に有効なのは「3A評価値」をMPU−BUSからREADする場合である。良く知られているように、3A評価値は1フレームの有効画素配列上に幾つもの検出用ウィンドウを設定しておき、View動作時(スルー画表示)やスチル画撮影動作におけるPre−Process部28aによる処理の際、これらのウィンドウに入った画素からそれぞれの評価値を抽出している。各ウィンドウに含まれる画素がそのウィンドウを全て通過してしまうとそのウィンドウの評価値は確定する。評価値が確定したウィンドウについては次のフレームに移って再び同一ウィンドウの評価値の抽出を始めるまで、その値が変化することはない。したがって、評価値の確定したウィンドウから順次その評価値をREADすることができる。すなわち、次のフレームに移って再び同一ウィンドウの評価値の抽出を始めるまでは、その評価値の入っているレジスタやメモリが3A評価値検出回路からWRITEされることはないので、MPU−BUSからそれらのレジスタやメモリをREADする際はWAITが掛からない。すなわち、3Aの評価値を高速にREADすることができる。3A評価値のウィンドウ数は多いので、その評価値が高速にREADできるというのは非常に大きなメリットである。1つのウィンドウから複数の評価値が出力されることもあるのでその効果は大きい。なお、1フレームの全ウィンドウ分の評価値を記憶しておくレジスタやメモリを持たない場合は、適当な時点でそれらの評価値を一旦SDRAM16に記憶させて次のウィンドウのためにレジスタやメモリを開放しなければならない。その場合は更にREADの回数が増えるので、上述したメリットが活かせる。
通常は、評価値が確定したことを割り込みによってMPU20に通知してその評価値のREADを開始する。しかし、ウィンドウ毎にこの割り込みを発生していては割り込みハンドラをコールする回数が増えてオーバーヘッドが大きくなる。1回の割り込み要求で複数のウィンドウの評価値をまとめてREADする方が効率的である。良く行われるのは水平方向に並んだ1行分のウィンドウの評価値をまとめてREADすることである。画像処理回路28にはラスタ順にRAWデータが入ってくるので、水平に並んだウィンドウを最後のラインが通過し終わるとそれらの評価値が全て確定する。したがって、そのタイミングで割り込みを発生させるのが最も効率的である。この割り込みの要因は割り込みハンドラ内で割り込みコントローラのレジスタ(割り込み要因レジスタ)をREADすることで知ることができる。
この割り込み要因レジスタのREADだけで3A評価値の確定したことが分かれば最も早く3A評価値のREADを開始することができるが、単に画像処理回路28内部の画像信号処理回路からの割り込みで要求であることしか分からなければ、割り込みハンドラ内でさらに画像処理回路28内部のレジスタをREADして割り込みの要因を知ることになる。その場合でも、ポーリングによって評価値が確定したことを知るのに比べればはるかに効率的である。
(4)画像処理回路28内部のMPU−BUSインターフェース部には書き込み用のWRITEバッファと読み出し用のREADバッファが設けられており、予め選択された画像処理回路28内部のレジスタに対してMPU−BUSからWRITEやREADを行った場合はこれらのバッファを介してデータの受け渡しが行われるようにする。これらのバッファに対するMPU−BUSからのWRITEやREADは常においてWAITが掛からないので高速である。
図19はこのような「WRITEバッファ」と「READバッファ」が設けられた画像処理回路28の構成を示している。図19において、「IPCLK」は上述したIPCLK1またはIPCLK2を表している。MPU−BUSからWRITEされる入力レジスタの場合は、MPU−BUSとそのレジスタの間にWRITEバッファが設けられている。これは従来から使われている方法であり、MPU−BUSからのデータは「SYSCLK」の立ち上がりエッジによってこのWRITEバッファにWRITEされ、それは「SYSCLK」の1サイクルで完了する(WAITが掛からない)。WAITが掛からないのでMPU−BUSは速やかに開放され他のデータ転送のために利用することができる。
WRITEバッファに格納されたこのデータは次いで「IPCLK」の立ち上がりエッジによって目的の入力レジスタに移される(ラッチされる)。WRITEバッファへのデータのWRITEと、そこから入力レジスタへのデータ移動は異なるクロックで行われるので完全に非同期であり、適宜同期合わせを行った上で実行される。例えば以下のようになる。すなわち、WRITEバッファにデータがWRITEされるとそのフラグが「非FULL」から「FULL」に変わり、そのFULLフラグは「IPCLK」の立ち上がりエッジでWRITE制御回路にラッチされその状態が判定される。
ラッチされたフラグがFULL状態であれば、続く「IPCLK」の立ち上がりエッジによってそのデータが目的のレジスタに移動される。あるいは、フラグではなく、図16のように「Write−Enable」信号を発生させ、「Write−Enable」が有効(High状態)になってから最初のIPCLKの立ち上がりエッジでWRITEバッファから入力レジスタにデータを移動するようにしても良い。このデータ移動が行われる時でも画像処理回路28内部の画像信号処理回路はそれに構わずその当該入力レジスタの値を参照(READ)しても良い。データの移動(WRITE)とデータの参照(READ)は共に「IPCLK」の立ち上がりエッジで行われるので、これらが同時に起こったとしても参照(READ)される値は確実に移動前の値となり、移動前の値でもなく、移動後の値でもないという不正な値が得られることはない。移動後の値は次の「IPCLK」の立ち上がりエッジ以降に画像処理回路28内部の画像信号処理回路によって参照(READ)される。
目的の入力レジスタにデータが移動されてしまうとWRITEバッファは空になるので、続けて別の入力レジスタにデータをWRITEするのにそれを利用することができる。しかし多数の入力レジスタに続けてデータをWRITEするような場合、1つのWRITEバッファではそれが空になるまで次のデータのWRITEが待たされてしまう。したがって、WRITEバッファは複数備えることが望ましい。入力レジスタの数だけWRITEバッファを設けられれば理想的であるが(2重レジスタ)、回路規模が増大してコストや消費電力の点で不利となる。そこで、画像信号処理回路の動作中に書き換えの必要がある入力レジスタの数に見合った数のWRITEバッファを用意しておき、必要に応じてそれらを使い回すようにすれば良い。
一方、MPU−BUSからのREADの場合は、上述したWRITEとは逆の動作が行われる。READの場合は、MPU−BUSから出力レジスタの値を読み取ることになるが、図19のようにその出力レジスタとMPU−BUSの間にはREADバッファが設けられており、出力レジスタの値は一旦このREADバッファにコピーされ、MPU−BUSはREADバッファからそのコピーされた値をREADする。画像信号処理回路から出力レジスタにWRITEされた値は、速やかにREADバッファにコピーされることが望ましい。MPU−BUSからのREADが行われてから出力レジスタの値をREADバッファにコピーするのでは、MPU−BUSが最新の値を得るまでに時間が掛かってしまう(遅延が生ずる)。そこで、MPU−BUSからREADされるか否かに関わらず、画像信号処理回路から出力レジスタWRITEが行われた場合は、出力レジスタにWRITEされた値を自動的にREADバッファにコピーする。逆に、画像信号処理回路から出力レジスタへのWRITEが行われなければ、READバッファは以前の値を保持し続ける。すなわち、出力レジスタとREADバッファの値は常に一致するように制御されている。ただし、全ての出力レジスタにREADバッファを設ける必要は無く(2重レジスタ)、画像信号処理回路の動作中にMPU−BUSからREADする必要のある出力レジスタ文だけ設ければ良い。カメラの動作モード等に応じてREADする出力レジスタが変わる場合は、出力レジスタとREADバッファの組み合わせを変えられるようにしておけば、少数のREADバッファで多数の出力レジスタに対応することができるのでより使いやすくなる。ここで、出力レジスタの値をREADするタイミングは重要である。画像信号処理回路はIPCLKで動作しており、自身のタイミングで新しいデータを出力レジスタにWRITEする。一方、MPU−BUSはSYSCLKに同期してREADバッファからデータをREADしている。すなわち、これら2つの動作は完全に非同期である。したがって、MPU−BUSが正しい値をREADするためには、出力レジスタの値をREADバッファにコピーする際に同期合わせを行う必要がある。MPU−BUSが上述したAHBであるとすれば、MPU−BUSからのREADはSYSCLK(AHBの場合はHCLK)の1サイクル目にアドレスとコントロール情報(READコマンドやREADモードなど)が画像信号処理回路に送られ、次の2サイクル目の途中からREADバッファ内のデータがHRDATA[31:0]上に現れ、3サイクル目の始まりであるSYSCLKの立ち上がりエッジでその値がMPU−BUSによってラッチされる(読み取られる)。すなわち、データをラッチする(読み取る)時間はSYSCLKの1サイクルで完了している。仮にIPCLKの立ち上がりエッジによって出力レジスタの値を当該READバッファにコピーするとしたら、3サイクル目の立ち上がりエッジの前後の僅かな時間は、このデータコピーを禁止しなければならない。然るに、当該READバッファからデータがREADされることが分かるのは、上述したアドレス情報がデコードされてから(2サイクル目の途中)であるため、3サイクル目の立ち上がりエッジの前にデータコピーを禁止する(Disable信号を発生する)ことは困難である。READバッファは3サイクル目の始まりであるSYSCLKの立ち上がりエッジでMPU−BUSにラッチされる(読み取られる)ことが決まっているので(WAITが掛からない)、コピー前の値でもなく、コピー後の値でもない不正な値がMPU−BUSに読み取られないようにするには、SYSCLKの立ち上がりエッジによって出力レジスタのデータを当該READバッファにコピーするのが現実である。一方、画像信号処理回路は新しい出力データを生成すると、それをIPCLKの立ち上がりエッジによって出力レジスタにWRITE(ラッチ)しているので、出力レジスタにWRITEを行うIPCLKの立ち上がりエッジから十分遅れたSYSCLKとほぼ同じタイミングによって新しい出力レジスタの値を当該READバッファにコピーするとよい。ただし、そのSYSCLKとほぼ同じタイミングで、次の新しいデータが出力レジスタにWRITEされると同じ問題が起こってしまうので、出力レジスタへのWRITEは頻繁に行われないことを仮定する。例えば、IPCLKの1サイクル毎、あるいはそれに近いような頻度で画像信号処理回路からWRITEが行われる(データが更新される)ような出力レジスタをMPU−BUSから非同期にREADすることは意味が無いと思われるので、この仮定は現実的なものと言える。そこで、あるIPCLKの立ち上がりエッジで画像信号処理回路から当該出力レジスタに新しいデータがWRITEされた場合は、その次のIPCLKの立ち上がりエッジで「Write−Enable」信号を有効にする。そして、「Write−Enable」信号が有効になった後の最初のSYSCLKの立ち上がりエッジによって当該出力レジスタのデータを当該READバッファにコピーする。次のIPCLKの立ち上がりエッジでは新しいデータが完全にWRITEされているので、確実にその値が当該READバッファにコピーされる。当該出力レジスタへのWRITEは頻繁には発生しないので、WRITEされたデータがREADバッファにコピーされる時、それとほぼ同時に次のデータが当該出力レジスタにWRITEされるという問題はない。しかし、IPCLKの周波数がかなり低い場合は、WRITEされたデータが当該READバッファにコピーされるのが大分遅れてしまう。そこで、当該出力レジスタに新しいデータをWRITEするIPCLKの立ち上がりエッジに同期して上述した「Write−Enable」信号が有効となるように時間差(遅延)を設ける。このようにすれば、まずIPCLKの立ち上がりエッジで新しいデータが出力レジスタにWRITEされ、ついて上述した「Write−Enable」信号が有効に変化し、最後に「Write−Enable」信号が有効に変わった後の最初のSYSCLKの立ち上がりエッジで新しいデータがREADバッファにコピー(ラッチ)されると共に、「Write−Enable」信号がクリア(無効)されて一連の動作が終わる。READバッファへのコピーはSYSCLKの立ち上がりエッジで行われるので、MPU−BUSから任意のタイミング(非同期)で当該READバッファをREADしても構わない。READバッファのデータをREADする場合は、アドレスとコントロール情報を送るのにSYSCLKの1サイクル、データを読み取る(ラッチする)のに同じく1サイクルの、合計2サイクルで完了しており、これよりも速いREADの動作は無い。WAITが掛かる場合は、データを読み取る(ラッチする)サイクルが長引くので遅くなっている。このように、READバッファを設けることで、高速なREADが実現される。
MPU−BUSからのREAD全体の動作は以下のようになる。画像処理回路28は動作前にリセットされ、内部のレジスタにはまず初期値が設定される。次に画像処理回路28の動作中にMPU−BUSからREADされる出力レジスタがある場合は、その出力レジスタを指定する(指定レジスタに設定する)。指定レジスタへの設定(WRITE)は画像処理回路28の動作前に行われるので、この時のMPU−BUSからのWRITEではWAITが掛からない。ただし、指定できる出力レジスタの数はREADバッファの数が最大となる。この指定レジスタへの設定(WRITE)が行われると、それに同期して指定された出力レジスタの値(初期値)がそれぞれのREADバッファにコピーされる。デフォルトの出力レジスタが予め指定レジスタに設定されるようになっていれば、リセット後はそれらの出力レジスタの初期値が自動的にそれぞれのREADバッファにコピーされる。画像処理回路28にIPCLKが供給されていない場合は、それが供給されてからREADバッファへのコピーが行われる。このように、指定された出力レジスタの値と、それに対応するREADバッファの値は画像処理回路28の動作前から一致するようになっている。画像処理回路28が動作を始めてからは、内部の画像処理回路から指定された出力レジスタに新しいデータがWRITEされる度に、当該出力レジスタにWRITEされたデータが対応するREADバッファにコピーされ、両者のデータは常に一致する。一方、MPU−BUSから非同期に指定された出力レジスタのREADを行うと、当該出力レジスタではなく対応するREADバッファの方からデータが読み出される。上述したように。このREADはWAITが掛からないので高速である。割り込みによって指定された出力レジスタのデータをREADすることも可能である。すなわち、画像信号処理回路によって新しいデータが指定された出力レジスタにWRITEされ、そのデータが対応するREADバッファにコピーされた時に割り込みが発生するようにしておくと、その割り込みに応答してREADバッファのデータをREADすることになるので、必ず新しい方をREADすることができる。指定されたレジスタは元々画像信号処理回路から頻繁にWRITEされるものではないので、割り込みによってREADするのに好都合である(逆の言い方をすると、そのような出力レジスタを選んで指定している)。
以上説明した(1)〜(4)では、画像処理回路28内部のレジスタやメモリをMPU−BUSから高速に(WAITを掛けない)WRITEやREADする方法について説明した。画像処理回路28内部の画像信号処理回路が「IPCLK」というクロックで動いている一方で、MPU−BUSはそれとは非同期の「SYSCLK」というクロックで動いているため、MPU−BUSから画像処理回路28内部のレジスタやメモリをWRITEやREADする場合は通常WAITが掛かってしまうが、(1)〜(4)のような方法によりWAITの掛からない高速なWRITEやREADが実現される。
(5)View動作(スルー画表示)においてMPU−BUSから画像処理回路28内部のレジスタやメモリの値を更新(WRITE)する場合、画像処理回路28内部の画像信号処理回路が動作している/動作していないにかかわらず常にWAITの掛からない高速なWRITEが行われるようにした。これは、スルー画の画像処理で使われるパラメータ等を多量に書き換える場合に有用である。
スチル画撮影動作においてPre−Process部28aによる処理が行われる場合は、この方法が使えない。View動作(スルー画表示)においてのみ利用することができ、ハードウェアも増えず最も簡単に実現される。この方法ではMPU−BUSから画像処理回路28内部のレジスタやメモリにデータをWRITEする際WAITが掛からないようにしているので、そのデータは「SYSCLK」の立ち上がりエッジによって直接目的のレジスタやメモリにWRITEされる。これは画像処理回路28の動作クロックである「IPCLK」と非同期に行われるので画像処理回路28内部の画像信号処理回路には不正な値が伝えられるおそれがある。しかし、そのことは無視する。したがって、ブランキング期間中と有効画素期間中の区別無くWAITの掛からないWRITEが行われる。
ただし、そのWRITEの動作は1つのフレーム期間内に完了する必要がある。View動作(スルー画表示)においてCCDIF27に垂直同期信号(VD)が入力されたら前述のレジスタやメモリへのWRITEを開始する。View動作(スルー画表示)におけるフレーム周波数は約30Hz(33msec)なので、これだけ長い時間があれば画像処理回路28内部のレジスタやメモリのデータをかなり多数更新(WRITE)することができる。内部のレジスタやメモリには画像処理で使われるパラメータ等が入っているので、当然そのフレームのスルー画は乱れてしまうがそのフレームをディスプレイに表示しなければ問題は無い。そこで、そのフレームのスルー画は破棄して前のフレームのスルー画を2回続けて表示することにする。View動作(スルー画表示)において画像処理に使われるパラメータ等を多量に書き換えるような場合は、1フレーム期間(例えば、前出の33msec)をフルに使って書き換えが行えるこの方法は有用である。コストが掛からない点も良い。
ただし、ブランキング期間においては、(2)の方法のところで述べた理由により、スルー画の処理中に画像処理回路28内部のレジスタやメモリを書き換えても、そのフレームのスルー画を乱すことはない。例えば、スルー画の表示中にデジタルズームの倍率を変えるような場合は垂直ブランキング期間中に解像度変換ブロックのレジスタが書き換えられれば、スルー画は乱れない。
この方法は画像処理回路28内部のレジスタやメモリの値を書き換える際の時間的制約が緩やかである点が特徴である。
図15に示したように、画像処理回路28には2種類のクロックが供給される。画像処理回路28内部の画像信号処理回路をPre−Process部28aとPost−Process部前段28bとPost−Process部後段28cとの3つに分け、Pre−Process部28aには第1のクロックである「IPCLK1」を供給し、Post−Process部前段28bには「IPCLK1」と第2のクロックである「IPCLK2」の2つを供給し、Post−Process部後段28cには「IPCLK2」を供給している。すなわち、Post−Process部前段28bは「IPCLK1」または「IPCLK2」の何れかで動作し、Post−Process部後段28cは常に「IPCLK2」で動作する。なお、画像処理回路28全体には「SYSCLK」も供給されているが、これは画像BUSおよびMPU−BUSとのインターフェース部にのみ供給されているもので、それぞれのBUSにおけるデータの転送(READ/WRITE)に利用されている。
一方、Pre−Process部28aは常に「IPCLK1」で動作する。このような構成にしたのはスチル画撮影動作におけるPost−Process部前段28bおよびPost−Process部後段28cによる後処理のことを考慮したからである。スチル画撮影動作におけるPost−Process部前段28bおよびPost−Process部後段28cによる後処理の場合は、SDRAM16に格納された処理前の画像データをREADし、それをPost−Process部前段28bに送ってPost−Process部前段28bおよびPost−Process部後段28cによる後処理を施し、その画像データを再びSDRAM16に記憶しているので、Pre−Process部28aとは非同期に動作することができる。この場合の処理前の画像データとはPre−Process部28aによる前処理だけが施されたものである。
まず、View動作(スルー画表示)においては、「IPCLK1」の周波数が「CCDCLK」よりも高くなければならず、また「IPCLK2」の周波数は「IPCLK1」の周波数以上でなければならない。「IPCLK1」の周波数は常に一定で良いが「IPCLK2」の周波数はデジタルズームの倍率に応じて変える必要がある。デジタルズームの倍率が「1」の時は「IPCLK2」の周波数は「IPCLK1」と同じであり、デジタルズームの倍率が上がるにつれて「IPCLK2」の周波数も上げなければならない。この場合はPost−Process部前段28bが「IPCLK1」で動作し、Post−Process部後段28cの方は「IPCLK2」で動作している。このように必要なブロックだけクロックの周波数を上げるようにしているので消費電流が抑えられる。
一方、スチル画撮影動作の場合にはこれと異なるクロックの供給が行われる。このスチル画撮影動作においてはPre−Process部28aによる前処理とPost−Process部前段28bおよびPost−Process部後段28cによる後処理とがシーケンシャルに行われるが、連写撮影の場合はPre−Process部28aによる前処理を行っている間に、それと並行してPost−Process部前段28bおよびPost−Process部後段28cによる後処理を1つ前のフレームに対して行うことができる。このようにPre−Process部28aによる前処理と、Post−Process部前段28bおよびPost−Process部後段28cによる後処理とは独立しているので、これらを非同期に行っても構わない。換言すると、Post−Process部前段28bおよびPost−Process部後段28cに供給するクロックとPre−Process部28aに供給するクロックを別々にしても構わないということである。この場合に重要なことはPost−Process部前段28bとPost−Process部後段28cを1つのクロックで動作させることができるという点である。
例えば、図14の解像度変換ブロックで画像の拡大が行われたとしても、解像度変換ブロック以降(Post−Process部後段28c)のクロックの周波数を上げる必要がないということである。処理される画像データはSDRAM16からREADされるので何時でもその供給を止めることができる。デジタルズームの倍率が「1」より大きいために解像度変換ブロックでライン補間が行われる場合でも、それが終わらないうちはPost−Process部前段28bから次の画像データが送られてこないようにすれば、Post−Process部後段28cのクロックの周波数を上げる必要はない。そこで、スチル画撮影動作の場合はPost−Process部前段28bとPost−Process部後段28cの両方に「IPCLK2」を供給する。Pre−Process部28aによる前処理とPost−Process部前段28bおよびPost−Process部後段28cによる後処理とは非同期であって構わないが、それらを並列に実行させる場合は、それぞれの処理に必要な時間をほぼ一致させないと何れか一方の処理が待たされるので並列処理の効果が薄れてしまう。
Pre−Process部28aによる前処理の処理時間は「CCDCLK」の周波数によって決まってしまうので、Post−Process部前段28bおよびPost−Process部後段28cに供給されているクロック(「IPCLK2」)の周波数を適切に選択する必要がある。実際は、この「IPCLK2」の周波数をかなり低く設定することができる。Post−Process部前段28bおよびPost−Process部後段28cによる後処理では1画素/クロックの速度で処理が行われるので、例えば8M画素の画像であれば「IPCLK2」の周波数が「24MHz」程度でも「3コマ/秒」の撮影速度が達成される。これにより、「IPCLK2」の周波数を低く抑えることができるので、スチル画撮影動作の場合も消費電流を低く抑えることができる。
例えば、図14の画像処理回路では水平間引きブロックまでがPre−Process部28aであり、次のWB調整ブロックから後ろがPost−Process部前段28bおよびPost−Process部後段28cとなる。第1のクロックである「IPCLK1」はCCDIF27とPre−Process部28aとPost−Process部前段28bとに供給されており、第2のクロックである「IPCLK2」はPost−Process部前段28bとPost−Process部後段28cとに供給されている。図14中のセレクタ41はPost−Process部前段28bに供給されるクロックを選択するものであり、これによって「IPCLK1」と「IPCLK2」とのどちらを使うかが選択される。
View動作(スルー画表示)の場合はセレクタ41によって「IPCLK1」が選択される。また、View動作(スルー画表示)の場合は「CCDIF27→Pre−Process部28a→Post−Process部前段28b→Post−Process部後段28c」というダイレクトパスで画像処理が行われる。動画撮影動作の場合もこれと同じである。すなわち、View動作(スルー画表示)の場合は、Pre−Process部28aとPost−Process部前段28bが「IPCLK1」で動作し、Post−Process部後段28cが「IPCLK2」で動作している。上述したとおり、この場合は「IPCLK1」の周波数が「CCDCLK」よりも高く、「IPCLK2」の周波数は「IPCLK1」以上でなければならない。
一方、スチル画撮影動作においては、Pre−Process部28aによる前処理を「CCDIF27→Pre−Process部28a→SDRAM16」というパスで行う。それに対してPost−Process部前段28bおよびPost−Process部後段28cによる後処理は「SDRAM16→Post−Process部前段28b→Post−Process部後段28c→SDRAM16」というパスで行う。
Pre−Process部28aの動作は「CCDCLK」に依存するため、「IPCLK1」の周波数を勝手に選ぶことはできず、View動作(スルー画表示)の場合と同様「CCDCLK」よりも必ず高い周波数となる。一方、Post−Process部前段28bおよびPost−Process部後段28cはPre−Process部28aとは非同期に動作させることができるので、「IPCLK2」の周波数に特に制約は無い。そこで、スチル画撮影動作の場合はセレクタ41によって「IPCLK2」を選択しPost−Process部前段28bとPost−Process部後段28cの両方を「IPCLK2」で動作させる。「IPCLK2」の周波数は「CCDCLK」や「IPCLK1」の周波数よりも低く設定することができ、それによってPost−Process部前段28bおよびPost−Process部後段28cの電力消費を抑制することができる。ただし、上述したように連写において前処理と後処理とを並列に実行させる場合は、無駄な待ち時間を減らすため「IPCLK2」の周波数を適切に選ぶ必要がある。
なお、図14中のCCDIF27に供給されている「CCDCLK」を、そのまま「IPCLK1」の入力にも供給することにより、CCDIF27とPre−Process部28aとを「CCDCLK」という同じくロックで動作させることができる。このようにすると、CCDIF27とPre−Process部28aとの間のクロックの同期合わせが不用となるので好ましい。View動作(スルー画表示)の場合はPost−Process部前段28bにも「IPCLK1」が供給されるので、「IPCLK1」として「CCDCLK」を利用するのであれば、Post−Process部前段28bも「CCDCLK」で動作することになる。このように、画像処理回路28内部のブロックによって動作周波数が異なる場合でも、MPU−BUSからその内部のレジスタやメモリをWRITEやREADする際の動作は上述した(1)〜(5)と同じである。ただし、画像処理回路28内部のブロックによって動作クロックが異なるので、内部のレジスタやメモリをMPU−BUSからWRITEやREADする場合は、そのレジスタやメモリが所属するブロックの動作クロック(「CCDCLK」、「IPCLK1」、「IPCLK2」など)に応じた「同期合わせ」を行わなければならない。この「同期合わせ」とは画像処理回路28内部の画像処理ブロックの動きに合わせてMPU−BUSにWAITを蚊掛けることや、WRITEバッファから入力レジスタへのデータの移動、あるいは出力レジスタからREADバッファへのデータのコピーにおいて、そのタイミングを合わせることを指している。
図14中の水平間引きブロックはView動作(スルー画表示)の場合にのみ使われ、スチル画撮影動作の場合はこの水平間引きブロックがバイパスされ、Pre−Process部28aによって前処理の施された画像データは図14中の出力バッファを経由して一旦SDRAM16に記憶される。この前処理が施された画像データはSDRAM16からREADされ図14中の入力バッファを経由してPost−Process部前段28b(WB調整ブロック)に送られるが、このPost−Process部前段28bおよびPost−Process部後段28cによって後処理が施されるとYCbCrデータ(4:2:2等)が生成され、それは再びSDRAM16に記憶される。
次に、デジタルズームの倍率を上げる場合は第1実施形態と同じくデータのパスを切り換え、これにより画像処理回路28内部の画像信号処理回路を低周波のクロック(「IPCLK2」)で動作させることについて説明する。View動作(スルー画表示)においてデジタルズームの倍率を上げる場合は、解像度変換ブロックに入る画像データのレートよりも、そこから出力される画像データのレートの方が高くなってしまうので、入力のデータレートが変わらない時は解像度変換ブロックのクロックの周波数を高めて出力のデータレートを上げなければならない。そうしないと、解像度変換ブロックに入力された画像データが溢れて失われることになる。すなわち、少なくともデジタルズームの拡大率分はクロックの周波数を上げ、入力と出力のデータレートを整合させなければならない。
そこで、第2実施形態では、解像度変換ブロック以降のブロックに供給している「IPCLK2」の周波数だけを上げ、デジタルズームによる拡大に対応すると共にできるだけ消費電力を抑えている。しかし、第1実施形態と同様に、「IPCLK2」の周波数には上限があるので、デジタルズームの倍率がさらに上がってくるとそれも不可能になる。また、View動作(スルー画表示)における消費電力が増えてカメラの電池が消耗してしまう。
しかし、View動作(スルー画表示)においても、スチル画撮影動作の場合と同じデータパスを利用するなら、「IPCLK2」の周波数を上げなくてもデジタルズームによる画像の拡大を行うことができる。
そこで、View動作(スルー画表示)の場合もそのデータパスを利用することにする。図20にこの場合のデータパスを示す。図20に示すように、CCDIF27から画像処理回路28に入ったRAWデータには、まずPre−Process部28aによる前処理が施され、処理後の画像データは画像BUSを経由して一旦SDRAM16に記憶される。次いでその画像データはSDRAM16からREADされ、再び画像BUSを経由してPost−Process部前段28bに入りPost−Process部前段28bおよびPost−Process部後段28cによって後処理が施される。Post−Process部後段28cから出力されたYCbCrデータは、再び画像BUSを経由しSDRAM16に記憶(WRITE)される。この場合は、Post−Process部後段28cから出力されるYCbCrデータのレートに合わせて、SDRAM16からREADされる画像データのレートが変わるので、「IPCLK2」の周波数を上げなくても、同じ1V期間(VDの周期)内にデジタルズームによる画像の拡大が完了する。このデータパスを利用すると、Post−Process部前段28bおよびPost−Process部後段28cによる後処理の開始が1フレーム(1V)遅れることになるが(スルー画の表示も1フレーム遅れる)、Pre−Process部28aはそれと並行して次のフレームの前処理を行うことができるので、連続的にスルー画を処理することができる(スチル画撮影の連写に似た動作)。
このように、図20に示したスチル画撮影動作と同じデータパスを利用することにより、Post−Process部前段28bおよびPost−Process部後段28cを低周波数の「IPCLK2」で動作させることができる。デジタルズームの拡大では、図13(1)の内側の矩形サイズの画像が図13(2)のサイズにまで拡大されるが、この画像の切り出しは、SDRAM16から画像データをREADする際に行う。このように、処理に必要な画像データだけをSDRAM16からREADしているので、SDRAM16の帯域を無駄に消費することは無い。しかし、Pre−Process部28a→Post−Process部前段28b→Post−Process部後段28cというダイレクトパスで処理する場合に比べると、どうしてもSDRAM16のデータトラフィックは増える。そこで、図20のデータパスにおいても、Pre−Process部28aの最後にある水平間引きブロックを利用して、水平画素数が低減された画像データをSDRAM16に記憶するようにしている。水平画素数を低減することにより、その後Post−Process部前段28bおよびPost−Process部後段28cによって行われる後処理を、水平方向に分割された短冊状のブロック単位で行う必要は無くなり、その画像データを一括して処理することができるというメリットも生まれる。SDRAM16のデータトラフィックを減らすという観点からは、図20のデータパスを少し変形した図21のデータパスを利用するとより効果的である。図21に示したデータパスでは、Pre−Process部28aによる前処理に続いて、Post−Process部前段28bによる後処理のガンマ補正までを一括して実行し、ガンマ補正まで施されたRGBベイア配列の画像データを画像BUSを介してまずSDRAM16に記憶する。次いでその画像データはSDRAM16からREADされ、画像BUSを介して再びPost−Process部前段28bに入り、色補間以降の処理が施された後、続いてPost−PRocess部後段28cに入り、残りの後処理が施される。Post−Process部後段28cから出力されたYCbCrデータは再び画像BUSを経由してSDRAM16に記憶される。ガンマ補正の施されたRGBベイア配列の画像データをSDRAM16に記憶しているので、リニアなRGBベイア配列の画像データよりもビット数が減っており、SDRAMのデータトラフィックはより少なくなっている。ただし、図21に示したデータパスを利用する場合は、画像処理回路28内部の画像信号処理回路に供給するクロックを図14から少し変更する必要がある。すなわち、Pre−Process部28a全体とPost−Process部前段28bのガンマ補正ブロックまでは「IPCLK1」を供給し、Post−Process部前段28bの残りのブロックおよびPost−Process部後段28cには「IPCLK2」を供給する。すなわち、ガンマ補正ブロックから前は「IPCLK1」で動作し、色補間ブロック以降は「IPCLK2」で動作することになる。このように、クロックの供給ブロックを細かく分けておくと都合が良い。
最後に、第2実施形態の変形例について、図22を用いて説明する。図22は、第2実施形態の図14に相当する画像処理回路28の構成および処理の流れを示す図である。
図22に示すように、画像処理回路28は、第2実施形態の図14で説明した構成に加えて、同期化回路70を備える。同期化回路70には、図22に示すように、「CCDCLK」と「SYSCLK」が入力される。そして、同期化回路70は、「IPCLK1」を生成し、セレクタ41に供給する。この「IPCLK1」は「CCDCLK」に同期していることに加えて、その立ち上がりエッジは「SYSCLK」の立ち上がりエッジに高い精度で一致している。このような構成とすることにより、第2実施形態で説明した同期制御(MPU−BUSから画像処理回路28内部のレジスタへのREADやWRITEと、画像処理回路28内部の画像信号処理回路から当該レジスタへのREADやWRITEとのタイミングを合わせる)を行うことなく、第2実施形態と同様の効果を得ることができる。
以上説明したように、第2実施形態によれば、外部メモリインターフェース部と制御部との動作クロックである第1のクロックの周波数以下の周波数を持つ第2のクロックにより画像処理を行い、第1のクロックと第2のクロックとの周波数関係を維持しつつ、第1のクロックの周波数と第2のクロックの周波数とを変更可能にする。したがって、処理能力を維持しつつ消費電力の低減を図ることができる。また、処理性能をスケーラブルに変更することができる。
また、第2実施形態によれば、内部バス(MPU−BUS)によりアクセス可能なレジスタとメモリとを備え、画像処理回路が停止している際には、最短の基本サイクルでアクセスを行い、画像処理回路が動作している際には、その動作状態に応じて、基本サイクルが延長された長時間サイクルによりアクセスを行う。したがって、画像処理回路の動作状態に応じて内部バスからのアクセスを高速に行うことができる。
また、第2実施形態によれば、画像データを拡大する際に、拡大倍率に応じて画像処理回路28内部の画像信号処理回路の後半部分に供給するクロックの周波数を変更する。したがって、拡大倍率が高く、負荷の大きい場合に限ってクロックの周波数を上げることにより、消費電力の増加を最小限に抑えることができる。
また、第2実施形態によれば、拡大倍率に応じて、画像処理のパスを適宜変更することにより、画像処理回路28内部の画像信号処理回路の動作クロックを最低周波数まで下げることができる。したがって、大幅な消費電力の削減が期待できる。
また、第2実施形態によれば、表示コントローラについても同様の処理を行うことにより、処理能力を維持しつつ消費電力の低減を図ることができる。さらに、表示コントローラが動作中であってもその内部のレジスタやメモリを内部バスから高速にアクセスすることができる。
なお、上記第1実施形態および第2実施形態で説明した発明の一部または全部を適宜組み合わせて実行しても良い。また、第1実施形態で詳細を説明した各部の処理を第2実施形態に同様に適用しても良い。
1…電子カメラ,11…CCD,15…表示部,16…SDRAM,20…MPU,21…SDRAMコントローラ,27…CCDIF,28…画像処理回路,30…表示コントローラ,31…クロック生成回路
Claims (21)
- 画像データに画像処理を施す画像処理部と、
外部メモリにアクセスするための外部メモリインターフェース部と、
各部を制御する制御部と、
前記画像処理部と前記外部メモリインターフェース部と前記制御部とを相互に接続してデータ転送を行うための内部バスと、
動作用の第1のクロックを前記外部メモリインターフェース部と前記制御部とを含む各部に供給するクロック生成部と、
前記クロック生成部から供給された前記第1のクロックを規定の割合で遮断することにより、前記第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第2のクロックを生成する第1のクロックゲート手段とを備え、
前記画像処理部は、前記第2のクロックに同期して前記画像処理を行う
ことを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
前記第1のクロックを規定の割合で遮断することにより、前記第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第3のクロックを生成する第2のクロックゲート手段をさらに備え、
前記画像処理部は、前記画像データに画像処理を施す第1の画像処理部と、前記第1の画像処理部により画像処理が施された前記画像データに画像処理を施す第2の画像処理部とからなり、
前記第1の画像処理部は、前記第2のクロックに同期して前記画像処理を行い、
前記第2の画像処理部は、前記第3のクロックに同期して前記画像処理を行う
ことを特徴とする画像処理装置。 - 請求項2に記載の画像処理装置において、
前記第1のクロックゲート手段は、前記第2のクロックを前記第2の画像処理部にも供給し、
前記第2の画像処理部は、前記第1の画像処理部により画像処理が施された前記画像データに画像処理を施す第3の画像処理部と、前記第3の画像処理部により画像処理が施された前記画像データに画像処理を施す第4の画像処理部とを備え、
前記第3のクロックを前記第3の画像処理部および前記第4の画像処理部に供給する第1の供給方法と、前記第2のクロックを前記第3の画像処理部に供給し、前記第3のクロックを前記第4の画像処理部に供給する第2の供給方法とを切り換え可能な切り換え部をさらに備える
ことを特徴とする画像処理装置。 - 請求項3に記載の画像処理装置において、
前記第4の画像処理部は、解像度変換処理回路を含み、
前記第2のクロックゲート手段は、前記解像度変換処理回路により前記画像データを拡大する際には、拡大倍率に応じて前記第3のクロックの周波数を変更する
ことを特徴とする画像処理装置。 - 請求項4に記載の画像処理装置において、
前記第2のクロックゲート手段は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、
前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部による画像処理と、前記第3のクロックに同期した前記第2の画像処理部による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部による画像処理と、前記第1の画像処理部から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第3の画像処理部に入力し、前記第3のクロックに同期した前記第3の画像処理部および前記第4の画像処理部による画像処理を施す
ことを特徴とする画像処理装置。 - 請求項4に記載の画像処理装置において、
前記第2のクロックゲート手段は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、
前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部による画像処理と、前記第3のクロックに同期した前記第2の画像処理部による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理部および前記第3の画像処理部による画像処理と、前記第3の画像処理部から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第4の画像処理部に入力し、前記第3のクロックに同期した前記第4の画像処理部による画像処理を施す
ことを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
内部に第3のクロックゲート手段を有し、表示装置に前記画像データを表示するための表示コントローラをさらに備え、
前記内部バスは、前記画像処理部と前記外部メモリインターフェース部と前記制御部と前記表示コントローラとを相互に接続してデータ転送を行い、
前記クロック生成部は、前記第1のクロックを前記表示コントローラに供給し、
前記表示コントローラは、前記第3のクロックゲート手段により前記第1のクロックを規定の割合で遮断することにより、前記第1のクロックと同期し、かつその周波数が前記第1のクロックの周波数以下となる第4のクロックを生成し、前記第4のクロックに同期して前記画像データを表示するための処理を行う
ことを特徴とする画像処理装置。 - 画像データに画像処理を施す画像処理部と、
外部メモリにアクセスするための外部メモリインターフェース部と、
各部を制御する制御部と、
前記画像処理部と前記外部メモリインターフェース部と前記制御部とを相互に接続してデータ転送を行うための内部バスと、
動作用の第1のクロックを前記外部メモリインターフェース部と前記制御部に供給するとともに、前記第1のクロックの周波数以下の周波数を持つ第2のクロックを前記画像処理部に供給し、前記第1のクロックと前記第2のクロックとの周波数関係を維持しつつ、前記第1のクロックの周波数と前記第2のクロックの周波数とを変更可能なクロック生成部と
を備えたことを特徴とする画像処理装置。 - 請求項8に記載の画像処理装置において、
前記画像処理部は、画像処理回路と内部バスインターフェース部とを有し、
前記クロック生成部は、前記第1のクロックを前記内部バスインターフェース部に供給するとともに、前記第2のクロックを前記画像処理回路に供給し、
前記画像処理回路は、前記第2のクロックに同期して前記画像データに対して画像処理を施す
ことを特徴とする画像処理装置。 - 請求項9に記載の画像処理装置において、
前記画像処理部は、前記内部バスを介してアクセス可能なレジスタとメモリとを備え、
前記画像処理回路が停止している際には、最短の基本サイクルで前記レジスタおよび前記メモリに対するアクセスを行い、前記画像処理回路が動作している際には、その動作状態に応じて、前記基本サイクルを延長した長時間サイクルにより前記レジスタおよび前記メモリに対するアクセスを行う
ことを特徴とする画像処理装置。 - 請求項10に記載の画像処理装置において、
前記画像処理回路における処理に前記画像データのブランキング期間と有効画素期間とが含まれる場合、前記ブランキング期間中は前記基本サイクルで前記レジスタおよび前記メモリに対するアクセスを行い、前記有効画素期間中は前記長時間サイクルにより前記レジスタおよび前記メモリに対するアクセスを行う
ことを特徴とする画像処理装置。 - 請求項10に記載の画像処理装置において、
前記画像処理回路における処理の実行中において、前記画像処理回路が停止する期間は前記基本サイクルで前記レジスタおよび前記メモリに対するアクセスを行い、前記画像処理回路が動作する期間は前記長時間サイクルで前記レジスタおよび前記メモリに対するアクセスを行う
ことを特徴とする画像処理装置。 - 請求項10に記載の画像処理装置において、
前記内部バスと前記レジスタとの間に配置される書き込みバッファと読み出しバッファとを備え、
前記書き込みバッファは、前記レジスタの中の予め指定されたレジスタを前記内部バスを介して書き込む場合には、一旦データを格納した後に、目的のレジスタに前記データが移動されるように書き込みを行い、
前記読み出しバッファは、前記レジスタの中の予め指定されたレジスタを前記内部バスを介して読み出す場合には、格納された値を読み出すとともに、前記指定されたレジスタの値が変化する度に新しい値をコピーするように読み出しを行い、
前記書き込みバッファおよび前記読み出しバッファと前記内部バスとの間のデータ受け渡しは前記第1のクロックに同期して前記基本サイクルで行われ、前記書き込みバッファおよび前記読み出しバッファと前記指定されたレジスタとの間のデータ受け渡しは前記第2のクロックに同期して行われる
ことを特徴とする画像処理装置。 - 請求項9に記載の画像処理装置において、
前記画像処理回路は、第1の画像処理回路と、前記第1の画像処理回路により画像処理が施された前記画像データに画像処理を施す第2の画像処理回路とを備え、
前記クロック生成部は、前記第2のクロックとともに前記第2のクロックとは異なる周波数を持つ第3のクロックを前記画像処理部に供給し、
前記第1の画像処理回路は、前記第2のクロックに同期して前記画像処理を行い、
前記第2の画像処理回路は、前記第3のクロックに同期して前記画像処理を行う
ことを特徴とする画像処理装置。 - 請求項14に記載の画像処理装置において、
前記第2の画像処理回路は、前記第1の画像処理回路により画像処理が施された前記画像データに画像処理を施す第3の画像処理回路と、前記第3の画像処理回路により画像処理が施された前記画像データに画像処理を施す第4の画像処理回路とを備え、
前記第3のクロックを前記第3の画像処理回路および前記第4の画像処理回路に供給する第1の供給方法と、前記第3のクロックを前記第4の画像処理回路に供給する第2の供給方法とを切り換える切り換え部をさらに備える
ことを特徴とする画像処理装置。 - 請求項15に記載の画像処理装置において、
前記第4の画像処理回路は、解像度変換処理回路を含み、
前記クロック生成部は、前記解像度変換処理回路により前記画像データを拡大する際には、拡大倍率に応じて前記第3のクロックの周波数を変更する
ことを特徴とする画像処理装置。 - 請求項16に記載の画像処理装置において、
前記クロック生成部は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、
前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路による画像処理と、前記第3のクロックに同期した前記第2の画像処理回路による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路による画像処理と、前記第1の画像処理回路から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第3の画像処理回路に入力し、前記第3のクロックに同期した前記第3の画像処理回路および前記第4の画像処理回路による画像処理を施す
ことを特徴とする画像処理装置。 - 請求項16に記載の画像処理装置において、
前記クロック生成部は、前記拡大倍率に応じて、前記第3のクロックの周波数を前記第2のクロックの周波数以上に上げ、
前記制御部は、前記拡大倍率が規定の値未満である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路による画像処理と、前記第3のクロックに同期した前記第2の画像処理回路による画像処理とを連続的に施し、前記拡大倍率が規定の値以上である場合には、前記画像データに対して、前記第2のクロックに同期した前記第1の画像処理回路および前記第3の画像処理回路による画像処理と、前記第3の画像処理回路から出力された前記画像データの前記外部メモリへの蓄積とを行い、前記外部メモリに蓄積された前記画像データを読み出して前記第4の画像処理回路に入力し、前記第3のクロックに同期した前記第4の画像処理回路による画像処理を施す
ことを特徴とする画像処理装置。 - 請求項8に記載の画像処理装置において、
表示装置に前記画像データを表示するための表示コントローラをさらに備え、
前記内部バスは、前記画像処理部と前記外部メモリインターフェース部と前記制御部と前記表示コントローラとを相互に接続してデータ転送を行い、
前記クロック生成部は、前記第1のクロックの周波数以下の周波数を持つ第4のクロックを前記表示コントローラに供給し、
前記表示コントローラは、前記第4のクロックに同期して前記画像データを表示するための処理を行う
ことを特徴とする画像処理装置。 - 請求項19に記載の画像処理装置において、
前記表示コントローラは、内部バスインターフェース部および表示処理回路を有し、
前記クロック生成部は、前記第1のクロックを前記内部バスインターフェース部に供給するとともに、前記第4のクロックを前記表示処理回路に供給し、
前記表示処理回路は、前記第4のクロックに同期して、前記画像データを表示するための処理を行う
ことを特徴とする画像処理装置。 - 請求項1から請求項20の何れか1項に記載の画像処理装置を備えるカメラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010165132A JP2012028997A (ja) | 2010-07-22 | 2010-07-22 | 画像処理装置およびカメラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010165132A JP2012028997A (ja) | 2010-07-22 | 2010-07-22 | 画像処理装置およびカメラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012028997A true JP2012028997A (ja) | 2012-02-09 |
Family
ID=45781417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010165132A Withdrawn JP2012028997A (ja) | 2010-07-22 | 2010-07-22 | 画像処理装置およびカメラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012028997A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100712736B1 (ko) * | 2002-08-14 | 2007-05-04 | 한국기계연구원 | 마이크로 미러 제조방법 |
JP2013175824A (ja) * | 2012-02-23 | 2013-09-05 | Nikon Corp | 電子カメラ |
JP2021040897A (ja) * | 2019-09-10 | 2021-03-18 | 株式会社藤商事 | 遊技機 |
JP2021040895A (ja) * | 2019-09-10 | 2021-03-18 | 株式会社藤商事 | 遊技機 |
JP2021040885A (ja) * | 2019-09-10 | 2021-03-18 | 株式会社藤商事 | 遊技機 |
-
2010
- 2010-07-22 JP JP2010165132A patent/JP2012028997A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100712736B1 (ko) * | 2002-08-14 | 2007-05-04 | 한국기계연구원 | 마이크로 미러 제조방법 |
JP2013175824A (ja) * | 2012-02-23 | 2013-09-05 | Nikon Corp | 電子カメラ |
JP2021040897A (ja) * | 2019-09-10 | 2021-03-18 | 株式会社藤商事 | 遊技機 |
JP2021040895A (ja) * | 2019-09-10 | 2021-03-18 | 株式会社藤商事 | 遊技機 |
JP2021040885A (ja) * | 2019-09-10 | 2021-03-18 | 株式会社藤商事 | 遊技機 |
JP7012690B2 (ja) | 2019-09-10 | 2022-01-28 | 株式会社藤商事 | 遊技機 |
JP7112824B2 (ja) | 2019-09-10 | 2022-08-04 | 株式会社藤商事 | 遊技機 |
JP7112823B2 (ja) | 2019-09-10 | 2022-08-04 | 株式会社藤商事 | 遊技機 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI426500B (zh) | 影像顯示控制裝置 | |
JP2975585B2 (ja) | イメージをアップスケーリングする方法及び装置 | |
CN1981519B (zh) | 用于显示图像帧序列的方法和系统 | |
US7512021B2 (en) | Register configuration control device, register configuration control method, and program for implementing the method | |
US7307667B1 (en) | Method and apparatus for an integrated high definition television controller | |
US8798386B2 (en) | Method and system for processing image data on a per tile basis in an image sensor pipeline | |
US10997689B1 (en) | High dynamic range sensor system with row increment operation | |
WO2023125677A1 (zh) | 独显插帧电路、方法、装置、芯片、电子设备及介质 | |
JP2012028997A (ja) | 画像処理装置およびカメラ | |
TW595225B (en) | Polyphase filter combining vertical peaking and scaling in pixel-processing arrangement | |
JP2015072583A (ja) | 画像処理装置、画像処理方法、および撮像装置 | |
CN113132650A (zh) | 一种视频图像显示处理控制装置、方法及显示终端 | |
US20080293449A1 (en) | Method and system for partitioning a device into domains to optimize power consumption | |
CN101257588B (zh) | 用于处理电视分割画面的影像处理系统与方法 | |
JP2015096920A (ja) | 画像処理装置および画像処理システムの制御方法 | |
JP5676924B2 (ja) | 投影装置及び投影方法 | |
CN115002304A (zh) | 一种视频图像分辨率自适应转换装置 | |
JP4540191B2 (ja) | 画像処理装置 | |
JP2003046939A (ja) | 電子カメラ、および電子カメラ用の制御ic | |
KR100715522B1 (ko) | 카메라 컨트롤 장치, 영상 데이터 표시 장치 및 그 방법 | |
JP2014216668A (ja) | 撮像装置 | |
JP2015125411A (ja) | 映像処理装置 | |
JP4525382B2 (ja) | 表示装置及び撮像装置 | |
KR100933171B1 (ko) | 그래픽 디스플레이 기능을 구현한 비메모리 반도체 | |
JP2002055730A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20131001 |