図1はこの発明の一の実施の形態に係るディジタルスチルカメラを示す図である。このディジタルスチルカメラは、図1の如く、CCD(撮像素子)21で撮像した画像をアナログ信号処理回路22で取り込んでA/D変換し、このディジタル化された画像についての画素補間、色変換、輪郭補正処理、フィルタリング及び間引き処理等の所定の一般画像処理をリアルタイムプロセッシングユニット(RPU)23でリアルタイム処理(実時間処理)にて高速に実行すると共に、JPEG圧縮処理等を含む例外的画像処理をCPU(中央制御部)24で実行した後、外部インターフェース(I/F)26を通じて所定の処理装置(パーソナルコンピュータ)等に出力し、併せて、当該画像をファインダーとしてのLCD27に表示し、またDRAMまたはSDRAM等の一般的な主メモリ29等に格納するようになっている。この際、ファインダー(LCD27)への画像供給に関しては若干の解像度を落とすなどの所定の処理をリアルタイムプロセッシングユニット23で行った後、次々と画像を出力することで、ファインダー27での画像表示を行うが、撮像釦等が操作者によって押操作されたときには、主メモリ29内の詳細な画像をメモリカード30等の記録装置(Storage Media)に一気に格納するようになっている。
そして、アナログ信号処理回路22を通じて与えられた画像については、リアルタイム処理を行う場合は途中の画素配列データを主メモリ29に蓄えずにRPU23で直接的に処理を行う一方(図34参照)、リアルタイム処理を行わない場合には、例えば図2の如く、CPU24で処理されて一旦主メモリ29のCCDデータバッファ(CCD Data Buffer)29aに蓄えた画素配列データを再度ダイレクトメモリアクセス(DMA)でリアルタイムプロセッシングユニット23に入力してやることで、高速に処理を行うようになっている。
即ち、この実施の形態のディジタルスチルカメラでは、一旦主メモリ29内に格納した画像の画素補間、色変換及び輪郭補正処理等の各種処理を、いつでも再びリアルタイムプロセッシングユニット23で再実行することが可能となっている。これにより、例えば画像中の所望の部分のみについて、リアルタイムプロセッシングユニット23で予定していない特殊な処理を、CPU24でソフトウェア処理・修正した後、その他の定型処理等をリアルタイムプロセッシングユニット23で高速に処理することができ、すべてをソフトウェアで行うときに比較して数倍から数十倍のスピードアップが可能となり、また、このときCPU24は処理を行う必要がないので消費電力を削減することができるものである。
ここで、リアルタイムプロセッシングユニット23、CPU24、外部インターフェース26等は、主メモリ29、メモリカード30及びJPEG処理部31とともにメインバス28にバス接続されており、これらのデータ相互の受け渡しに際してCPU24の負荷を低減すべく、このCPU24を介さずにダイレクトメモリアクセス(DMA)コントローラ32の制御に基づいて各要素間のメインバス28を通じたデータの授受を行っている。
尚、図1中の符号27aはLCD27を駆動するLCD駆動回路、符号27bはディジタルエンコーダ、符号27cはディスプレイモジュール、符号30aはオートフォーカス機能付きのレンズや絞り機構等を有する光学機構、符号30bはストロボ、符号30cはCCD21を駆動するCCD駆動回路、符号30dはリアルタイムプロセッシングユニット23及びCCD駆動回路30c等の動作タイミングを規律するためのタイミングジェネレータ(TG)、符号30eはPLL発信回路、符号30fはCPU24の補助演算装置であるコプロセッサをそれぞれ示している。
<CCD21の構成>
CCD21は、電荷蓄積部及び電荷転送部を内部に備える一般的なもので、例えば、偶数ラインと奇数ラインが2つのフィールドとして時間的に全く異なるタイミングでアナログ信号処理回路22に読み出されるインターレース(飛び越し走査)タイプのものと、各ライン順に順次読み出しが行われるプログレッシブ(順次走査)タイプのもののいずれかが選択的に使用される。勿論、電荷転送部を持たないCMOSセンサタイプのものも適用して差し支えない。
<リアルタイムプロセッシングユニット23の構成及び動作>
リアルタイムプロセッシングユニット23は、図3の如く、アナログ信号処理回路22を通じて得られた各画素を各ピクセル単位で処理する単一画素処理部(Single Pixel Proccessing Block)41と、所定の画素補間を行いながらガンマ処理を行う画素補間・ガンマ処理部(Interpolation & Gamma Block)42と、色空間変換・色抑圧処理部(Color Space Conversion & False Color Suppression Block)43と、空間フィルタ・コアリング処理部(Special Filter & Coring Block)44と、これらの画像処理が行われた画像データをメインバス28に出力する出力部(Resizing Block)45とを備えている。
そして、特に、単一画素処理部41及び画素補間・ガンマ処理部42については、一旦主メモリ29内に格納した画像を、ダイレクトメモリアクセス(DMA)コントローラ32での制御によりいつでも取り込めるようになっている。このように、リアルタイムプロセッシングユニット23の初段の単一画素処理部41だけでなく、中途段の画素補間・ガンマ処理部42にも入力できるようになっているので、CPU24で画像の例外的画像処理を行った後、単一画素処理部41を通過させずに、リアルタイムプロセッシングユニット23の中途(画素補間・ガンマ処理部42)からの処理を実行できる。即ち、例外的画像処理を行う部分のみをソフトウェアで行い、その他のすべての処理を高速なリアルタイムプロセッシングユニット23で処理することにより、処理スピードの低下を最小限に抑えることができる。
また、実際のディジタルスチルカメラにおいては、CCD21によって取り込んだ画素データに対して、例えば「G(グリーン)」成分だけをガンマ補正するなどの特殊な例外的画像処理を行うことがある。この場合、かかる特殊な処理は、予めリアルタイムプロセッシングユニット23にハードウェアとして用意された機能を使用できないことが多く、よって、一旦、主メモリ29内に格納した画像に対して種々の一般画像処理をリアルタイムプロセッシングユニット23で行う(ポスト処理:Post Processing)ことが行われる。そして、この実施の形態のディジタルスチルカメラでは、かかるポスト処理時において、リアルタイムプロセッシングユニット23の処理クロックをリアルタイム処理時より高い周波数に設定し、可久的にポスト処理を高速に行うようにしている。尚、一般に、従来のCCD21の画素の読み出しクロックとリアルタイムプロセッシングユニット23でのリアルタイム処理の処理クロックは常に同期するようになっている。このため、CCD21の画像データについてCPU24で例外的処理し、一度主メモリ29に格納した後に、再びリアルタイムプロセッシングユニット23でポスト処理することとすると、処理時間が全体としてかなり長くかかってしまうことが予想される。そこで、この実施の形態では、リアルタイムプロセッシングユニット23の処理クロックをCCD21の画素の読み出しクロックから非同期に独立して単独で設定できるようにし、ポスト処理時のリアルタイムプロセッシングユニット23の処理スピードをCCD21からのデータ転送速度に比べて大幅に向上させている。これにより、CCD21とリアルタイムプロセッシングユニット23の処理クロックを同期させる場合に比べて、ポスト処理のスピードを2〜4倍上げることができるものである。
このように、リアルタイムプロセッシングユニット23の処理クロックをCCD21からのデータ転送速度に比べて非同期に高速化しているので、リアルタイムプロセッシングユニット23の1パスが非常に短時間に終了することになる。このことを考慮すると、ポスト処理において、リアルタイムプロセッシングユニット23に対してデータを複数回通しても、全体としての処理スピードはCCD21の読み出し速度に対してそれほど遅延することがない。したがって、全体的な処理速度を低下させずに、リアルタイムプロセッシングユニット23にデータを複数回通すことにより、特定の機能をデータに重複して作用させ、個々の機能を拡張させることができ、例えば、後述の空間フィルタ91の範囲を等価的に増加させる等の機能の拡張を行うことが容易に可能となる。
尚、リアルタイムプロセッシングユニット23の処理クロックをCCD21の画素の読み出しクロックから非同期にできるため、上記とは逆に、リアルタイムプロセッシングユニット23の処理スピードをCCD21からの転送速度に比べて低減させることも可能である。この場合は、リアルタイムプロセッシングユニット23における消費電力を低減できるものとなる。
このような非同期の場合の処理クロックの変更は、図1に示したタイミングジェネレータ(TG)30dにより行うものであり、望ましくは、かかるタイミングジェネレータ(TG)30dによるリアルタイムプロセッシングユニット23の処理クロックの設定に関して、予め数種類のクロック周波数の設定を用意しておき、ドライバソフトウェアプログラムやジャンパピンの接続切り換え、あるいはディップスイッチの切り換え等によりクロック周波数の設定を容易に切り替えられるようにしておく。これにより、ポスト処理に関して消費電力特性及び処理速度特性を自由に且つ容易に設計できるようになる。
<単一画素処理部41の構成及び動作>
単一画素処理部41は、アナログ信号処理回路22から与えられた各画素毎に乗算、加算またはその両方の演算を行うことにより、複数フレームの画像の間での「経時的平均化処理」及び1フレーム内での「シェーディング補正処理」のいずれかを選択的に行うものであって、具体的には、図4の如く、メインバス28にそれぞれ接続されてデータ入出力のタイミングを調整するための3個のFIFO(バッファ)51a〜51cと、このうちの第一FIFO51aを通じてメインバス28からの画素データが入力される1個のシフタ(Shifter)52と、アナログ信号処理回路22からの12ビット長の入力データ(Input Data)と上記のシフタ52からの12ビット長のデータとを選択する第一セレクタ(Selector)53と、第二FIFO51bを通じて得られるメインバス28からの画素データに対して所定の第一係数(Ratio A)を乗算する第一乗算器54と、第二FIFO51bを通じて得られるメインバス28からの画素データと所定の第二係数(Ratio B)とを選択する第二セレクタ55と、この第二セレクタ55からの出力値と第一セレクタ53からの出力値とを乗算する第二乗算器56と、第一乗算器54からの出力値と第二乗算器56からの出力値とを加算する加算器57と、加算器57からの出力値を受けて第三FIFO51cを通じてメインバス28に信号出力を行うために、加算後のデータを一定値に適合させるリミッタ(Limmitter & Shifter)58とを備えている。
ここで、従来では、単一画素処理部41において複数フレームの画像の加算処理を行うことが行われていなかったが、この単一画素処理部41の「経時的平均化処理」では、CCD21の蓄積時間が複数フレームに渡る場合、各フレーム毎にCCD21からデータを読み出し、主メモリ29上の対応する画素のデータと加算することによって、複数フレームのCCD21上での蓄積と等価な信号を作成するようになっている。この場合、「累積加算」と「循環加算」のいずれか一方の加算方式を選択できるようになっている。
ここで、まず「累積加算」について説明する。
従来では、対象物が暗く、CCD21の蓄積時間が複数フレーム(フィールド)に渡る場合は、CCD21の電荷蓄積部から電荷転送部への読み出しをその期間停止して電荷レベルを増大させ、十分な信号レベルにした後、読み出しパルスを印加し撮影を行なっていた。しかし、この場合、CCD21内の電荷蓄積部におけるノイズ電荷の湧き出しにより、映像S/N特性が低下する。これを避けるため、電荷の読み出しは通常周期で行ない、読み出された信号をアナログの電気回路や、ディジタル回路でゲインを上げて処理することが従来において行われることがあったが、この場合も、読み出し以降のランダムノイズが所定のアンプによって増大されるため、やはりS/N特性は低下する。
これに対し、この実施の形態に係るディジタルスチルカメラでは、上記の場合に、通常読み出しの周期を維持してアナログゲインを増大させ、一度主メモリ29に格納したデータと、新たに読み出したフレーム(フィールド)のデータを加算器57で加算して、再度主メモリ29に格納することを繰り返すことにより、複数フレーム期間に渡る累積加算を行なう。そして、最終的に得られた累積加算データを加算回数で除算することにより、電荷蓄積部のノイズを増大させることなく、S/Nの良い、十分な信号レベルのデータを得ることができる。通常、CCD21内の電荷蓄積部及び電荷転送部やアナログ信号処理回路22のノイズはランダムノイズが支配的であるため、累積加算する回数をN回とすると、ノイズのレベルはNの1/2乗に比例して小さくなる。このことにより、ランダムノイズを大幅に削減できるようになっている。
この場合、第一セレクタ53はアナログ信号処理回路22からの入力データを選択し、第二セレクタ55は「1.0」という値で与えられた第二係数(Ratio B)を選択し、また第一係数(Ratio A)は「1.0」で与えられることで、加算器57においては、アナログ信号処理回路22からの入力データを、メインバス28及び第二FIFO51bを通じて主メモリ29から与えられる過去の累積データにさらに累積加算することができるようになる。
このように、累積加算としての各係数(Ratio A,Ratio B)の設定及び各セレクタ53,55の選択を行った場合の単一画素処理部41の処理構造を示したものが図5である。図5のように、CCD21からアナログ信号処理回路22を通じて与えられた入力データ(Input Data)を、加算器57によって、主メモリ29内のCCDデータバッファ(CCD Data Buffer)29aに蓄えられたデータに累積的に加算し、再びCCDデータバッファ29aに更新記憶するようになっている。かかる累積加算をN回繰り返した後、リアルタイムプロセッシングユニット(RPU)23内の他のブロック42〜45に与え、主メモリ29内の処理データバッファ(Processed Data Buffer)29bにフレーム単位で格納した後、必要に応じてCPU24により所定のソフトウェア処理を行い、これを主メモリ29内の一時記憶データバッファ(Temporaly Data Buffer)29cに格納すると共に、メインバス28を通じて外部I/F26等に出力するようになっている。
ここで、メインバス28を通じて主メモリ29から得られる累積データと、アナログ信号処理回路22から得られる入力データとは、画素配列データ中での同じ位置の各画素データについて個別に累積演算され、その後に同じ位置の画素データとして主メモリ29に順次格納される。
かかる構成を採用することにより、複数フレーム分の画像をメモリに格納して累積加算する場合に比べて、主メモリ29の容量が1フレーム分で足りることになるため、メモリ容量が少なくて済み、低コスト化を図ると共に省電力化を図り得るという利点がある。また、CCD21での画像の読み出しに同期してリアルタイムプロセッシングユニット23で累積加算処理を行うことができるので、例えば、複数フレーム分の画像をメモリに格納した後に何らかのソフトウェアプログラムに従ってCPUの動作により累積加算する場合に比べ、加算処理の速度を大幅に向上できる。
尚、この「累積加算」の場合は、画像データを累積加算する際の加算回数が増大するに従ってビット長が伸びることになる。例えば、8ビットの画像データを256回加算するのであれば16ビットのデータ長を確保しなければならない。このことは、逆に言えば、16ビットのデータ長を確保している場合は8ビットの画像データであれば加算限度として256回しか加算できず、これを超過すると信号の一部がオーバーフローする可能性があることになる。また、例えば、入力データとして12ビットまで対応できるようにリアルタイムプロセッシングユニット23を設計する場合は、16ビットのデータ長を確保している場合は、12ビットの入力データに対して最大16(=2 16-12 )回までしか累積加算できないことになる。このように加算処理回数が少ない場合、被写体の明るさや、ノイズの量によっては、十分な平均化処理ができない可能性がある。したがって、使用環境等の要因によりS/N比の向上が強く求められる場合には、加算回数に制限をなくすことが望ましい場合があり、このような場合を考慮した方式が「循環加算」である。
この「循環加算」は、CCD21の蓄積時間が複数フレームに渡る場合に、各フレーム毎にCCD21からデータを読み出し、図4の如く、メインバス28及び第二FIFO51bを通じて主メモリ29から与えられる画素データに対し、第一乗算器54によって第一係数(Ratio A)としてαを乗算するとともに、CCD21からの入力データに対し、第二係数(Ratio B)として(1−α)を第二乗算器56によって乗算し、これらを加算することによって複数フレームのCCD上での蓄積と等価な信号を作成するものである。この場合、第一係数(Ratio A=α)と第二係数(Ratio B=1−α)の合計は「1」になるように設定されており、αの値は「0」より大で且つ「1」未満の任意の値として実験等の経験により設定されるものである。また、第一セレクタ53及び第二セレクタ55でのそれぞれの選択は「累積加算」の場合と同様である。この「循環加算」方式によると、加算された最新の入力データやこれに近い比較的新しい過去の入力データの方が、古い入力データよりも寄与率が高いことになり、データの時間的均衡については若干扱いにくい点もあるが、ランダムノイズを低減するための加算処理において、加算回数に応じてデータ長をデフレートすることで、メモリ上のデータ量を増やさずに、加算回数を大きくすることができるという利点があるものである。したがって、被写体の明るさやノイズの量によって十分な平均化処理を行いたい場合に、蓄積部のデータ長を増加させずに長時間(無限回数)のフレーム加算が可能となる。
このように循環加算としての各係数(Ratio A,Ratio B)の設定及び各セレクタ53,55の選択を行った場合の単一画素処理部41の処理構造を示したものが図6である。図6のように、CCD21からアナログ信号処理回路22を通じて与えられた入力データ(Input Data)に対して、第二乗算器56により第二係数(Ratio B=1−α)を乗算し、また主メモリ29内のCCDデータバッファ(CCD Data Buffer)29aに蓄えられたデータに対して、第一乗算器54により第一係数(Ratio A=α)を乗算し、これらを加算器57によって加算し、再びCCDデータバッファ29aに更新記憶するようになっている。かかる循環加算をN回繰り返した後、リアルタイムプロセッシングユニット(RPU)23内の他のブロック42〜45に与え、主メモリ29内の処理データバッファ(Processed Data Buffer)29bにフレーム単位で格納した後、必要に応じてCPU24により所定のソフトウェア処理を行い、これを主メモリ29内の一時記憶データバッファ(Temporally Data Buffer)29cに格納すると共に、メインバス28を通じて外部I/F26等に出力するようになっている。
この図5及び図6のように、図4に示した同一の回路を用いて「累積加算」と「循環加算」を任意に選択することができるため、設計の自由度を確保でき、この単一画素処理部41の汎用性が向上するという利点がある。
さらに、上記の図4に示した同一の回路を用いて、上記のノイズ緩和のための加算処理以外に、全く異なった機能である「シェーディング補正処理」をも選択して実行できるようになっている。
一般に、CCD21で対象物や風景等を撮影する場合、レンズの光学的作用等に起因して、中心位置の明るさに比べてその周囲が暗くなると言うシェーディングが発生することがある。図7は画像にシェーディングが発生した状態を示す図であり、横軸は画像ラインの位置、縦軸は輝度レベルを示している。図7では、画像ライン中の中心部分に比べてその周囲部分の輝度が相対的に低くなっている。このような現象は、レンズとして広角レンズ等を使用する場合に顕著に現れる。かかるシェーディングを緩和するために、各画素の輝度値等のゲイン調整を行うのが「シェーディング補正処理」である。
尚、例えばCPU24によりソフトウェア処理を行ってシェーディング補正処理を行う場合を考えると、1画素毎にシェーディング補正する場合には、従来は、レンズのシェーディング補正等を行なうために、RPU内部に乗算係数(シェーディング補正パラメータ)を格納する1ライン分のメモリを用意しておき、そのデータと、CCD21からの入力データを掛け合わせて、補正を行なっていた。しかしながら、この方法では、水平方向の補正しかできないため、垂直方向にも補正したい場合には、複数ラインの乗算係数(シェーディング補正パラメータ)を持てるようにメモリを追加するか、ソフトウェアで定期的にデータを更新してやる必要があった。1ライン中の画素毎に異なった乗算係数(シェーディング補正パラメータ)を乗算するので、大量の係数を持たなければならず、内部のメモリの容量が巨大になり、かつソフトウェアでのデータの更新も非常に頻繁に必要になるため、水平画素の補正単位を複数画素単位とし、垂直のラインも複数ライン単位とせざるを得なかったこともあり、これをソフトウェア処理する場合は非常に時間がかかり好ましくない。
このため、CPU24において、図7中の縦線のように1フレームの画像をいくつかの格子状のブロックに分割し、これらのブロック相互間で、シェーディング補正を行う方法も考えられる。しかしながら、ブロック単位に区切ってシェーディング補正処理を行うと、図8のように、ブロックの区切り部分(図8中の縦線)で輝度値に段差ができてしまい、画像として見た場合に縞状の不自然な画像となってしまう。
これらの問題を考慮し、この実施の形態のリアルタイムプロセッシングユニット23では、単一画素処理部41において、個々の画素毎にシェーディング補正処理を高速に実行するようになっている。
具体的には、画素単位のシェーディング補正パラメータを主メモリ29内の補正データ格納領域29d上に格納しておき、CCD21での画像データのキャプチャー時にダイレクトメモリアクセス(DMA)で補正データをリアルタイムプロセッシングユニット23に入力することにより画素単位の補正を行なう。これにより、ソフトウェア処理に係るCPU24に負担をかけずに、画素単位のシェーディング補正処理を高速に実現できる。特にCCD21に代えてCMOSセンサを使用するような市場の要請があった場合、このCMOSセンサはCCDセンサと異なり、画素毎に読み出し回路が独立しており、画素単位のエラーが発生しやすいため、この発明は有効となる。また、リアルタイムプロセッシングユニット23内に特別のレジスタを設置する必要がないため、回路構成を容易にすることでコストを低く抑えることができると共に、消費電力を低減できる。
この「シェーディング補正処理」では、図4及び図9の如く、第二セレクタ55では、メインバス28及び第二FIFO51bを通じて主メモリ29内の補正データ格納領域29dから与えられる画素毎の乗算係数(シェーディング補正パラメータ)を選択しており、ここで選択された乗算係数(シェーディング補正パラメータ)を、第二乗算器56によってCCD21からの画素データに対して各画素毎に乗算し、その結果の画像データをCCDデータバッファ(CCD Data Buffer)29aに格納する。尚、ここで、第一乗算器54で乗算される第一係数(Ratio A)は「0」であり、よってその乗算値が「0」となるため、加算器57では第二乗算器56での結果に値「0」を加算することになり、故に加算器57の出力は第二乗算器56からの出力値がそのまま維持される。
かかる回路は、上述の図4に示した回路と同一の回路を使用しているだけなので、かかる同一の回路で「累積加算」と「循環加算」と「シェーディング補正処理」との3つの機能を選択して使用できる。尚、かかる複数の機能は、リアルタイムプロセッシングユニット23の単一画素処理部41の駆動制御に使用されるドライバプログラム(BIOS)において、各セレクタ53,55の選択及び各係数(Ratio A,Ratio B)の設定を変更するだけで容易に選択できる。したがって、「累積加算」と「循環加算」と「シェーディング補正処理」の3つの機能のうち、予めいずれかの機能に限定するようドライバプログラムを設定してもよいし、あるいは、コマンド入力または回路基板上のジャンパピンまたはディップスイッチ等の設定により切り換えできるように設定してもよい。
<画素補間・ガンマ処理部42の構成及び動作>
画素補間・ガンマ処理部42は、CCD21より画像を読み込んだ場合の画素補間を行うとともに、画像のガンマ補正を行うブロックである。
まず、画素補間・ガンマ処理部42の画素補間機能について説明する。
一般に、CCD21においてカラー画像の撮像を行うに当たって、1画素毎に異なる色(RGB−BayerまたはYMCG系等の補色タイプ等)のフィルタを使用することが多い。
RGB−Bayerは、画素毎に3色系のフィルタをかけるもので、一般に「R(赤色成分)」,「G(緑色成分)」,「B(青色成分)」の3色により画素配列を行っており、例えば図10の如く、奇数ライン及び偶数ラインの一方を「R,G,R,G,…」とし、他方を「G,B,G,B,…」としたものである。この場合、図10中の太線枠で示したように、2×2=4ピクセルでもって1組の色を認識するようになっているが、この太線枠内においては、右上位置と左下位置の両方に「G」が配置される。
また、補色タイプ(YMCG系またはYMCK系)は、画素毎に異なる色成分の4色系のフィルタをかけるもので、図11の如く、奇数ライン及び偶数ラインの一方を「C(シアン色成分),M(マゼンダ色成分),C,M,…」とし、他方を「Y(イエロー色成分),G(緑色成分),Y,G,…(YMCG系の場合)」としたものである。これも一画素毎に異なる色成分のフィルタをかけたもので、図11中の太線枠で示した通り、2×2=4ピクセルでもって1組の色を認識するようになっている。
これらのRGB−Bayer及び補色タイプ(YMCG系等)の画素配列を記号「A」,「B」,「C」,「D」で一般化したものが図12である。JPEG系のディジタルスチルカメラでは、これらの画素配列に基づいて最終的にJPEG系色空間であるY(輝度),Cr(=α1{R(赤色成分)−Y(輝度)}),Cb(=α2{B(青色成分)−Y(輝度)})に1画素毎に変換する必要があるが、ここでは、例えば図12のDataX1において、「D」の成分しかなく、この画素について他の「A」,「B」,「C」の成分の補間を行うためには、周囲のこれらの成分を参照することになる。
具体的には、例えば補色タイプ(YMCG系等)の場合、図13の如く、DataX1において「A」の成分を参照する場合は、斜め四方の「A」の成分の平均化処理を行ってこれをDataX1の成分に加味する。また、DataX2(「C」の成分)において「A」の成分を参照する場合は、上下に隣接する「A」の成分の平均化処理を行ってこれをDataX2の成分に加味する。さらに、DataX3(「B」の成分)において「A」の成分を参照する場合は、左右に隣接する「A」の成分の平均化処理を行ってこれをDataX3の成分に加味する。他の成分「B」,「C」,「D」の補間についても同様である。ここで、画素配列の信号は、各ライン別に入力されるにも拘わらず、例えば図13中のDataX1の画素補間を行うためには当該DataX1のラインと異なる前後ラインを参照しなければならないため、この画素補間・ガンマ処理部42では、画素補間を行う画素に対して前後の2ラインを格納するためのラインバッファ61a,61bを設置し、このラインバッファ61a,61bと3×3ピクセルレジスタ62の間で画素の受け渡しをしながら、この3×3ピクセルレジスタ62の各画素の値を色選択ブロック63でセレクトしながら、この色選択ブロック63内において画素補間を行う。即ち、補色タイプ(YMCG系等)のような2×2の4色構成のCCD21に対しては、図13に示した方法のように、すべて同じ演算処理を行うことで画素補間を行う。尚、ラインバッファ61a,61b及び3×3ピクセルレジスタ62は、3×3ピクセルレジスタ62内の中央に位置する注目画素に対して、その周囲の画素を参照するための画素参照ブロックを構成するものである。
これに対し、3色系のRGB−Bayerでは、図10中の太線枠で示したように、「R」,「G」,「B」の3色に加えて4色目の色成分として再び「G」を使用している。このように、RGB−BayerのCCD21に対しては、色選択ブロックの一部(4色目)を置き換えることによって、同一の回路により3色系と4色系の両方をリアルタイム処理できるようになっている。かかる3色系のRGB−Bayerについて色補間処理する場合、4色系の補色タイプ(YMCG系等)の処理とは異なった処理が必要とされる。即ち、4色系の補色タイプ(YMCG系等)の色補間処理では、すべての画素について図13に示したような処理を行うことが可能であるが、3色系のRGB−Bayerの「G」について色補間処理する場合、例えば図10において「R」においても「B」においても、これに「G」を補間する場合は、上下方向及び左右方向の四方に隣接して「G」が存在しているので、これらの四方の「G」に基づいて色補間を行えばよい(第一補間方法)。あるいは、上下方向及び左右方向の四方に隣接して存在する4画素の「G」のうち、最小値のものと最大値のものを除去した残りの2画素の「G」の平均値をとってもよい(第二補間方法)。実際には、これらの第一補間方法と第二補間方法とを、色選択ブロック63の駆動のためのドライバソフトウェアプログラム等の設定により任意に選択できるようにしておく。これにより、設計変更の自由度が大幅に向上するものである。一方、「G」については、縦(上下)方向に隣接した「R」を補間し、横(左右)方向に隣接した「B」を補間するだけで、斜め四方の他の「G」に基づく補間は必要なく、図13に示したような処理とは大きく異なった処理となる。
あるいは、このRGB−Bayerにおいて、例えば図10中の太線枠内の2個の「G」のうちの一方については、かかる部分の画素の全体的な輝度成分や強調成分として擬似的に活用することも可能であり、各画素の色成分として抽出するのではなく画素の輝度成分や強調成分等の所定の特徴を示す「特徴データ(KEY信号)」として活用できる。
例えば、「R」,「G」,「B」として各8bitにKEY信号8bitを追加した32bit信号を、4色信号として図14中の3×3ピクセルレジスタ62上に配置し、リアルタイムプロセッシングユニット23の各ブロック43,44,45における処理過程で、各画素毎の「特徴データ(後述)」として使用する。
さらに、4色系の補色タイプ(YMCG系等)においても、例えば「G」については、かかる部分の画素の全体的な輝度成分や強調成分として擬似的に活用することも可能であり、各画素の色成分として抽出するのではなく画素の輝度成分や強調成分等の所定の特徴を示す「特徴データ(後述)」として活用できる。
尚、一般的には、3色系処理と4色系処理を扱える処理回路において、3色系の処理を行う場合には、3色データを所定のメモリ上で詰めて格納するか、4色目のデータを無視して処理する方法が考えられる。しかしながら、特に後者の場合、メモリや処理回路を有効に活用できないという問題が生じる。
これに対して、この実施の形態のディジタルスチルカメラでは、主メモリ29内の4色処理のメモリ配置の中に3色データを格納した場合に、4色目に相当する領域に各画素を格納し、後述の色空間変換・色抑圧処理部43やCPU24でのソフトウェア処理において画素毎に所定の特徴づけを行うための後述の「特徴データ(KEY信号:例えば「G」)」として活用するようにする。かかる4色目の画素補間の処理を、リアルタイムプロセッシングユニット23での処理の中で使用することによって、各ブロック43,44,45における各種の非線型処理や画素単位処理を非常に高速に行うことができるものである。
かかる色補間処理では、図14の如く、単一画素処理部41のリミッタ58から出力されてきた各画素データに対して、上述のようにラインバッファ61a,61bを使用しながら、3×3ピクセルレジスタ62に各色成分を配置し、これらの各色成分の信号を、水平同期信号に基づくH_Count信号及び垂直同期信号に基づくV_Count信号の入力に従って色選択ブロック63でセレクトしながら平均化処理を行って画素補間を行う。これにより、リアルタイムプロセッシングユニット23の後段の各ブロック43,44,45における処理過程で、各画素毎の「特徴データ(後述)」として使用することが可能となる。
このように、画素補間・ガンマ処理部42においては、RGB−Bayerのような3色系の処理について、色選択ブロックの一部(4色目)を置き換えることによって処理を行えるので、同一の回路により3色系と4色系の両方をリアルタイム処理できるものである。したがって、従来のように、RGB用の画素補間回路と補色(4色系)用の画素補間回路を独立のものとして別々に設置していた場合に比べ、回路規模を非常に小さくでき、また消費電力を抑制することが可能となる。さらに、かかる処理をCPU24によりソフトウェアプログラムに基づいて処理する場合を考えると、一旦フレーム単位で画像をメモリに格納した後、その画像中の各画素につき縦横の平均化処理を行って色補間することになるので、これをすべての画素について処理することになると、処理の工程が膨大となり多大な時間を要するのに対して、この実施の形態では、リアルタイムプロセッシングユニット23内でリアルタイムに処理を行っている分、処理速度が大幅に向上する。
尚、画素補間・ガンマ処理部42の色選択ブロック63には、「G」信号の高域成分(Gh信号)を抜き出して、これに基づいてAF(オートフォーカス)用の高周波成分の評価(AF評価)を行うAF評価機能が有せしめられている。図15は、RGB−BayerでのGh信号に基づいてAF評価用の高周波成分の評価値(高周波成分評価値)を作成する機能において、ある瞬間の画素配列中の一部のタイミングのデータ(「G」信号)を抜き出してAF評価を行う様子を示したブロック図である。AF評価は、その瞬間にエッジが明確に出てきているかどうかを検出することで行うことが可能であり、一般に、FFT(高速フーリエ変換)等により高周波成分のみのレベルを抽出し、この抽出値に基づいて判定すれば、最良のAF評価値を得ることができる。しかしながら、リアルタイムプロセッシングユニット23において入力データ(Input Data)が次々と入力される状況でFFTの処理を行うことは極めて困難であり、また、フレーム単位で画像を主メモリ29に格納し、CPU24によりソフトウェア処理でFFTの処理を行う場合は、処理が複雑になると共に多大な時間を要するため効率的でない。そこで、近隣の同一色成分の画素をセレクタ64で選択して抽出し、抽出された同一色成分の画素の差分値を演算回路65で絶対値化して求め、かかる一連の処理で連続して得られる絶対値を、バッファ66及び加算器67からなる帰還回路としての累積加算器68で積分し、その積分値(累積値)の変化値(微分値)の極大点を求めることでAF評価を行っている。即ち、セレクタ64、演算回路65及び累積加算器68で、オートフォーカスのための高周波成分評価値を出力するオートフォーカス評価部を構成するものである。
そして、この色選択ブロック63内のオートフォーカス評価部では、入力データに対してAF評価を行う際に、RGB−Bayer中の同一色の色成分として最も多い「G」成分を使用することとし、特にこの色選択ブロック63では、「G」成分の値の差分抽出対象として直近のものであるか、あるいはこれより離隔した「G」成分の値を差分抽出対象として選択するかについて、セレクタ64によって任意に選択的に変更できるようになっている。即ち、ある場合には、演算回路65の一方のB入力端子65bに入力される「G」信号(注目画素)に最も近い「G」信号として、セレクタ64のD入力端子に入力される「G」信号を選択し、またある場合には、演算回路65の一方のB入力端子65bに入力される注目画素の「G」信号に最も遠い「G」信号として、セレクタ64のA入力端子に入力される「G」信号を選択し、さらにある場合には、セレクタ64のB入力端子またはC入力端子に入力される「G」信号を選択して注目画素の「G」信号との差分値を演算することが可能となっている。このように、セレクタ64によって注目画素からの離間距離を変更して差分値を求めることができるので、AF評価における着目周波数を容易に変更できる。これは、人間が画像を肉視した場合にピントが合ったと感じる周波数は、必ずしも隣接画素レベルの最大周波数とは限らず、2〜4ピクセル程度離間した画素でピントを合わせても十分にフォーカスが合ったように感じる。これに対して、例えばCCD21の撮像画素に異変が見られた場合や、ここからの信号出力の過程でノイズがコンデンサに混入する場合のように、画素中に何らかのノイズが発生した場合には、殆どの場合、隣接画素毎に大きな変化が生じるため、隣接画素のみで差分を求める場合には、ノイズの影響でAF評価が過大評価されるおそれがあることを考慮したものである。即ち、セレクタ64でAF評価における着目周波数を変更することで、ノイズの影響を低減しながら、肉視に耐えるフォーカス合わせが可能となるものである。尚、このセレクタ64の選択は、実際のCCD21の画素ピッチ等の特性に応じて変化させればよい。同じ被写体や風景等を撮像する場合でも、CCD21の画素ピッチ等の特性によって隣接する注目画素のピッチも変化することになるため、実際のCCD21の画素ピッチ等の特性に応じてセレクタ64で着目周波数を変化させることで、AF評価の精度を一定レベルに維持でき、故に同一のリアルタイムプロセッシングユニット23として様々な特性のCCD21に対応することが可能となる。
また、画素補間・ガンマ処理部42の色選択ブロック63には、CCD21の欠陥画素を補正する欠陥画素補正機能が有せしめられている。
一般に、CCD21の欠陥画素補正では、画像中にピクセル単位で欠陥画素が含まれて入力された場合に、これをそのまま使用すると画像が不自然になってしまうため、例えば、この欠陥画素と同じ色成分として1つ前に入力された色データ(例えば図15の例では同じ色成分の画素が1つおきに入力されるため、2画素前の色データが対象となる)で画素補充を行う方法がある。通常のCCD21はフレーム中に100万画素程度の画素を有するため、まれに欠陥画素が発生しても、上記の比較的単純な方法で画素の補充を行っても十分に肉視に耐える画像を得ることができる。
この場合、従来のCCDの欠陥画素補正においては、欠陥画素の垂直方向(V)と水平方向(H)のアドレス情報をRPU(リアルタイムプロセッシングユニット)の内部の複数(予想される欠陥画素の総数分)のレジスタに格納しておき、アドレス値がCCDのTG(タイミングジェネレータ)の垂直(V)カウント値及び水平(H)カウント値と一致したタイミングで欠陥信号を発生し、そのタイミングの画素データを周囲の画素(一般的には直前の同色の画素)で置き換える等の動作を行なって補正することが行われていた。
しかし、この従来の方法では、予想される欠陥画素の総数分だけのアドレスデータを格納するのに十分な数のレジスタをRPU内部に持つ必要がある。ところが、近年のCCDの画素数の増大に伴って、欠陥画素も増大する傾向にあるため、次第に内部のレジスタの個数が増大し、消費電力の増大等の問題を生じてきた。また、欠陥画素の総数は、通常は数個〜20個程度と予想されるものの、必ずしもこの個数内に収まるとは限らず、特に、欠陥であるか否かの評価におけるしきい値によって欠陥画素と判断される画素の個数も大きく変化するため、1つのCCDに対して数個〜20個程度の数の欠陥では十分とは言えなかった。しかしながら、例えば、1000個程度の欠陥画素が予想される場合に、上記の従来の方法ではRPU内に1000個程度のレジスタを設置しなければならないことになるが、これは回路規模の制限から現実的でなく、多くの場合は1つのCCDに対して数個〜20個程度の数の欠陥しか補正できないこととなっていた。
これに対し、この実施の形態に係るディジタルスチルカメラでは、リアルタイムプロセッシングユニット23内に欠陥画素アドレス格納用のレジスタを設置するのではなく、CCD21の欠陥画素の位置情報を時間位置順に主メモリ29上に格納しておき、この主メモリ29中の欠陥画素の位置情報を、図16の如く、シフトレジスタ71a,71bと比較器(CMP)72a,72bを組み合わせてなる欠陥画素タイミング発生回路73にダイレクトメモリアクセス(DMA)で入力してやることで、CCDの欠陥画素補正を行うようになっている。即ち、このシフトレジスタ71a,71bと比較器(CMP)72a,72bとで、欠陥画素補正部を構成するものである。
具体的には、CCDの欠陥画素アドレスを主メモリ29(図1参照)中の任意の格納領域に当該欠陥画素の発生時間の順序で格納しておき、ダイレクトメモリアクセス(DMA)により1word長のレジスタ(FIFO)74を通じて画素補間・ガンマ処理部42内の欠陥画素タイミング発生回路73内に平行に設置された各シフトレジスタ71a,71bに入力し、それぞれのシフトレジスタ71a,71bの最終段からそれぞれの比較器72a,72bにデータ入力して垂直(V)カウント値及び水平(H)カウント値に対して比較してやることにより、実際上、欠陥画素数の制限なしに補正を行なうことができる。
ここで、一方のシフトレジスタ71aとこれに接続された一方の比較器72aは、水平方向(H)の欠陥画素の出現タイミング(アドレス)を認識するものであり、他方のシフトレジスタ71bとこれに接続された他方の比較器72bは、垂直方向(V)の欠陥画素の出現タイミング(アドレス)を認識するものである。
そして、リアルタイムプロセッシングユニット23内でカウントされた垂直(V)カウント値及び水平(H)カウント値がそれぞれ比較器72a,72bに入力されており、この比較器72a,72bにおいて、シフトレジスタ71a,71bの最終段(71af,71bf)の出力アドレスと、前述の垂直(V)カウント値及び水平(H)カウント値とが一致したと判断した場合に、論理積回路75及びレジスタ(DMA Req. Trigger)76を通じて欠陥画素タイミング(CCD Detect Timing)信号を出力するようになっている。
これと同時に、最終段のシフトレジスタ71af(HCReg0),71bf(VCReg0)には、その1つ前段のシフトレジスタ71af−1(HCReg1),71bf−1(VCReg1)の値がロードされる。また最前段のシフトレジスタ71a1(HCRegN),71b1(VCRegN)へはその前段の1word長のレジスタ(FIFO)74を通じて得られた主メモリ29内の欠陥画素アドレス(DMA Data)がロードされる。
ここで、欠陥画素アドレス(DMA Data)を主メモリ29から受け入れるためのレジスタ(FIFO)74を単一にのみ設ける場合、レジスタ(FIFO)74内の値を、新たに受け入れた欠陥画素アドレス(DMA Data)の値に書き換える課程で様々に変化する。その課程において、レジスタ74内の値が一瞬でも偶然に垂直(V)カウント値及び水平(H)カウント値と同じ値になったときには、比較器72a,72bは誤って肯定的な比較結果を出力してしまうおそれがある(ハザードの発生の問題)。
しかしながら、この実施の形態では、レジスタ74と比較器72a,72bとの間にシフトレジスタ71a,71bを介在させているので、かかるハザードの発生の問題を解消できる。具体的には、比較器72a,72bへの入力はシフトレジスタ71a,71bの最終段のシフトレジスタ71af,71bfからの信号が入力されるようになっており、レジスタ74が直接比較器72a,72bに接続される訳ではない。そして、各シフトレジスタ71a,71bのシフトは、比較器72a,72bでの比較結果が肯定的に得られた場合(一致信号が出力される場合)に限り、この比較器72a,72bからの出力信号に基づいたタイミングで実行されるようになっている。この場合、比較器72a,72bで比較されるデータは常に最終段のシフトレジスタ71af,71bfからのものに限られるので、レジスタ74のデータがいつ書き換えられても、比較器72a,72bから一致信号が出力されることはなく、故にハザードの発生の問題を解消できる。
尚、シフトレジスタ74からのロードが発生する際には、比較器72a,72bからの一致信号に応じて、レジスタ(DMA Req. Trigger)76がDMAコントローラ32(図1参照)に対して主メモリ29内の欠陥画素アドレス(DMA Data)についてのデータ転送要求(DMA Request to DMA Controller)を発生する。これに応答したDMAによる実際のデータ転送は、次の欠陥画素のタイミングまでに終了していればよい。尚、図16とは異なる例として、最終段のシフトレジスタ71af,71bfより前段のシフトレジスタ71a1〜71af−1,71b1〜71bf−1の動作をDMAでのデータ転送の完了信号で制御すれば、DMAによる実際のデータ転送に関して、ある程度の時間的な余裕を稼ぐことができる。
また、DMAによるデータ転送を使用しない場合には、最終段のシフトレジスタ71af,71bfからの出力データを、セレクタ77a,77bによって最前段のシフトレジスタ71a1,71b1に切り換えて入力しておくことにより、シフトレジスタ71a,71bの段数分の数の欠陥画素を補正することが可能である。
いずれの場合も、アドレスデータは、シフトレジスタ71a,71bの最終段のシフトレジスタ71af,71bfから遡って、主メモリ29のアドレスデータまで発生時間順に並んでいることが必要となる。
このような構成により、容量の大きい主メモリ29内に欠陥画素アドレスを格納することで、欠陥画素の総数が例えば1000個程度に多大な場合にも容易に欠陥画素補正処理を行うことができる。そして、内部のレジスタ74,76は図16のように最低2つだけでよいので、予想される欠陥画素の総数分だけの数のレジスタをRPU内部に持つ場合に比べて、回路規模を大幅に削減できる。
尚、画素補間・ガンマ処理部42の色選択ブロック63は、「G」信号の高域成分(Gh)のみを抜き出して色空間変換・色抑圧処理部43に出力するようになっている。
次に、画素補間・ガンマ処理部42のガンマ補正機能について説明する。この画素補間・ガンマ処理部42では、図17及び図18の如く、入力データが12ビット信号となる1個のガンマ補正テーブル78(図17)を、10ビット×4(=212−10)個のガンマ補正用ルックアップテーブル78a〜78d(図18)として使用するようにしている。
即ち、アナログ信号処理回路22でA/D変換されたCCD21は、単一画素処理部41を経て、画素補間・ガンマ処理部42の画素補間処理を経た後に、このガンマ補正処理が行われるが、このガンマ補正処理に入力される入力データが12ビット長のときには、この12ビット長で入力された信号について、上述のガンマ補正テーブル78がメモリサイズとして4096バイトの8ビット出力のものとして機能する一方、入力データが10ビットのときは、入力データの各色毎に独立な10ビット入力、8ビット出力の4個のガンマ補正用ルックアップテーブルとして機能するルックアップテーブル(LUT)として機能するようになっている。
前段の画素補間処理を行った後、4色系の画素データの場合は一度に4色の入力データが与えられることになるため、ガンマ補正テーブル78の入力ポートとして4つの入力ポートIPort1〜IPort4が用意されており、これに対応してガンマ補正テーブル78の出力ポートも4つの出力ポートOPort1〜OPort4が用意されている。
一般に、入力データが12ビット長の場合は、ルックアップテーブル78は12ビット長のものが必要とされる。ところで、12ビット長の入力データから8ビット長の出力信号へ変換するためのルックアップテーブル78は、各色毎の非線形性が除去できないという問題があるため、すべての色に対して1種類しか定義することができない。この場合に、4色系の画素データを扱う場合は、4種類の12ビット長のルックアップテーブルを内蔵することが望ましいのであるが、この場合は回路規模が4倍となり、消費電力等の点で問題となる。
一方、常に12ビット長の入力データが要求されるとは限らず、10ビット長の入力データが適用される場合もある。この場合に、上記の12ビット長の入力データの処理同様にデータを扱うとすれば、余剰ビットが発生し、非効率であった。
そこで、この実施の形態に係るディジタルスチルカメラでは、12ビット長の入力データを扱う場合には、ルックアップテーブル78が単一の12ビット長ルックアップテーブルとして動作する一方、10ビット長の入力データを扱う場合には、4色それぞれに独立な4種類のルックアップテーブル78a〜78dを使用することができるようになっている。
具体的には、メモリサイズとして4096バイトのルックアップテーブル78を、予め4個の1024バイトのルックアップテーブル78a〜78dに分割して設計しておき、各ルックアップテーブル78a〜78dの入力側において、上位2ビットの上位入力端子(Upper)と、下位10ビットの下位入力端子(Lower)とを形成するとともに、上位2ビットの上位入力端子(Upper)にはそれぞれセレクタ79a〜79dからの出力信号が入力されるように接続しておき、この各セレクタ79a,79bにおいて、各ルックアップテーブル78a〜78dのポート番号(0x0〜0x3)(A入力端子)と入力データの上位2ビットの値(B入力端子)とを選択できるようになっている。そして、12ビット長の入力データを扱う場合には、CPU24等による制御切換でセレクタ79a〜79dをB入力端子側(入力データの上位2ビットの値)に切り換える一方、10ビット長の入力データを扱う場合には、同様にしてセレクタ79a〜79dをA入力端子側(各ルックアップテーブル78a〜78dのポート番号(0x0〜0x3))に切り換えるようになっている。
これにより、12ビット長の入力データを扱う場合には、セレクタ79a〜79dのB入力端子側への切り換えにより入力データの上位2ビットの値が各ルックアップテーブル78a〜78dの上位2ビットの上位入力端子(Upper)に入力され、また入力データの下位10ビットの値が各ルックアップテーブル78a〜78dの下位10ビットの下位入力端子(Lower)にそのまま入力される。
一方、10ビット長の入力データを扱う場合には、セレクタ79a〜79dのA入力端子側への切り換えにより入力データの各ルックアップテーブル78a〜78dのポート番号(0x0〜0x3)が各ルックアップテーブル78a〜78dの上位2ビットの上位入力端子(Upper)に入力され、また入力データの下位10ビットの値が各ルックアップテーブル78a〜78dの下位10ビットの下位入力端子(Lower)にそのまま入力される。
これにより、10ビット長の入力データを扱う場合には、4色すべての色に対してそれぞれ10ビット長(1024ビット)のルックアップテーブル78a〜78dを互いに独立に且つ任意に定義できる。
また、このガンマ補正処理における入力データは、図14の如く、主メモリ29内に格納されている画素データがFIFO73及びカラーサンプリングモジュール(Color Over Sampling Module)74を通じてセレクタ79a〜79dに入力されるようになっており、これにより、一旦主メモリ29内に格納した画像に対して、上記のリアルタイムによるガンマ補正処理と同様の処理をいつでも行えるようになっている(ポスト処理:Post Processing)。
尚、ここでのガンマ補正処理を、上述の画素補間処理より前段階で実行する場合は、入力ポートとして1つの入力ポート及び1つの出力ポートのみを容易するだけでよい。この場合は、かかる1つの入力ポート及び1つの出力ポートに対してセレクタ(図示せず)を設置し、このセレクタによりデータを4色に振り分けて、4種類のルックアップテーブル78a〜78dに対して入出力するようにすればよい。したがって、この場合でも、ルックアップテーブル78(78a〜78d)自体の構造は、図17及び図18に示したものと同様となる。
また、ここでは、12ビット長と10ビット長の両方の入力データに対応できるルックアップテーブルについて説明したが、必ずしもこれに限定されるものではなく、一般に入力データがNビット長の場合は、このNビット長の処理を行うガンマ補正テーブル78として機能し、入力データが(N−2)ビット長のときは、4(=2N−(N−2))個のガンマ補正用ルックアップテーブル78a〜78dとして機能するようにすればよい。これによって、それぞれの入力データのビット長に合わせて、余剰ビットが生じることなく、同一のルックアップテーブル78(78a〜78d)を有効に活用することができる。
<色空間変換・色抑圧処理部43の構成及び動作>
この色空間変換・色抑圧処理部43は、3色系のRGB−Bayerまたは4色系の補色タイプ(YMCG系等)の画素データを、例えば、YCrCb等の所定の色空間に変換する色空間変換機能と、さらに画像中の明部と暗部の色抑圧(クロマサプレス:偽色防止)を行う色抑圧機能とを備えたものである。
色空間変換・色抑圧処理部43の色空間変換機能は、上述のように、3色系のRGB−Bayerまたは4色系の補色タイプ(YMCG系等)の画素データを、例えば、YCrCb等の所定の色空間に変換する機能であるが、特に3色系の処理と4色系の処理の両方を扱えるようになっており、さらに3色系の処理を行う場合に、4色目の色データ領域の信号を各画素の「特徴データ(KEY信号)」として使用できるようにしたものである。
例えばRGB−Bayerの場合、「R」,「G」,「B」の各8ビット長の信号に「特徴データ」としての8ビット長の信号を追加した合計32(=8×4)ビット長の信号を、4色信号として主メモリ29内に配置し、リアルタイムプロセッシングユニット23の処理過程で、「特徴データ」を各画素毎の例えば「強調成分」等の「特徴データ」として使用する。
一般に、3色系処理と4色系処理の両方を扱える処理回路においては、3色系の処理を行う場合に、3色の画素データを主メモリ内に詰めて格納するか、4色目のデータを無視して処理する方法が考えられるが、特に後者の場合は、主メモリや処理回路を有効に活用できないという問題がある旨は前述の通りである。そこで、この実施の形態に係るディジタルスチルカメラでは、4色処理の主メモリ29の中に3色系の画素データを格納する場合に、4色目に相当する領域に各画素を画素毎に特徴づけるための「特徴データ」を併せて格納し、後に再びリアルタイムプロセッシングユニット23での何らかの処理に使用したり、あるいは一旦主メモリ29内に格納した後にCPU24でのソフトウェア処理で活用したりすることによって、各種の非線型処理や画素単位処理を非常に高速に行うことが可能となるものである。
具体的には、この色空間変換・色抑圧処理部43は、図19の如く、画素補間・ガンマ処理部42のガンマ補正テーブル78から出力されてきた画素データの4色目の成分と、画素補間・ガンマ処理部42の色選択ブロック63から出力されてきた「G」信号の高域成分(Gh信号)とを選択するセレクタ81と、このセレクタ81で選択された側のデータが格納される特徴データ用ルックアップテーブル(8 to 8 LUT)82と、画素補間・ガンマ処理部42のガンマ補正テーブル78から出力されてきた画素データの1色目から3色目までの各成分及びセレクタ81で選択された側のデータに基づいてYCrCb等の輝度成分(YCrCb空間においては「Y」成分)を有する所定の3成分色空間への変換を行う色空間変換回路83と、YCrCb等の所定の3成分色空間のうちの輝度成分(「Y」成分)のみが入力される輝度用ルックアップテーブル(8 to 8 LUT)84と、色空間変換回路83からの3成分(例えば「Y」「Cr」「Cb」)が入力されて当該3成分によりCCD21の撮像時の露出決定(オートエクスポージャー)のための評価値を出力する露出決定評価器(AE Evaluation Value Detector)85と、露出決定評価器85から出力された3成分(例えば「Y」「Cr」「Cb」)のそれぞれに対して輝度用ルックアップテーブル84内の輝度データを用いて変調する3個の乗算器86a〜86cと、各乗算器86a〜86cを経由した3成分(例えば「Y」「Cr」「Cb」)のそれぞれに対して特徴データ用ルックアップテーブル82内で変換された特徴データを用いて変調する3個の乗算器87a〜87cとを備える。
このように、セレクタ81で選択した4色目の色成分を特徴データ用ルックアップテーブル82に特徴データとして入力し、この特徴データを用いて3個の画素データのそれぞれの変調を容易に行うことができる。これにより、例えば所定の空間フィルタを設け、この空間フィルタにより特定の周波数(高周波成分等)に注目した値を4色目のデータとして抽出し、その特定の周波数の値が所定のスレッシュレベルより大きい場合等に色信号抑圧等の様々な例外的画像処理を容易に実行できる。あるいは、図19には図示していないが、特徴データに所定の係数を積算した後、加算器を用いて3個の画素データに加算するようなことも容易に可能となる。さらに、図19には図示していないが、画素データの3成分(例えば「Y」「Cr」「Cb」)に加えて、特徴データ(4色目の信号)をメインバス28を通じて主メモリ29に格納することが可能となり、この一旦主メモリ29に格納されたデータ中の特徴データについていつでも容易に様々な例外的画像処理を行うことができる。この場合は、CPU24でのソフトウェア処理で活用してもよいし、また、4色目のデータとして主メモリ29内に一旦格納した後に再度リアルタイムプロセッシングユニット23で活用してもよいものである。
また、上述のように、図20の如く、セレクタ81での選択動作により、ガンマ補正テーブル78からの入力データの4色目の信号(「色4」)と、色選択ブロック63より出力されるグリーン(G)の高域成分(Gh信号)を特徴データ用ルックアップテーブル82に入力し、ここからの出力を露出決定評価器85から出力された3成分(例えば「Y」「Cr」「Cb」)のそれぞれに対し乗算するかどうかを決定するようにしているので、実際に搭載するCCD21の光学的特性に適するようにセレクタ81での選択を行い、上述のポスト処理(Post Processing)における「Y」または「Cr」「Cb」の画素毎の変調等の処理を、CPU24でのソフトウェア処理に依らずに高速に行うことができる。
また、色選択ブロック(画素補間ブロック)63から出力される「Gh」信号をセレクタ81aで選択して色空間変換回路83の4色目に入力できるようにしている。これにより、例えばRGB−Bayerのような3色系画素配列のデータ処理時には、「Gh」信号の成分を色空間変換回路83において各色成分に任意に加算することができる。もともと、グリーン(G)の画素成分は、「Y(輝度)(=0.6G+0.3R+0.1B)」信号の生成過程において、6割の重み付けがなされるため、輝度表示への寄与率が高い。そして、「G」成分の高域信号である「Gh」信号は、「Y(輝度)」信号の高域成分としてそのまま使用することも可能である。したがって、この「Gh」信号を各色成分へ容易に加算することができる。例えば、RGB−Bayerの場合、「R」,「G」,「B」の各成分に「Gh」信号の成分を一種の輝度特性として一定の係数で足し込めば、そのまま各成分の輝度の調整が容易に可能となる。
ここで、一般に、Gh等の高域成分を「Y」信号に独立加算すると、ゲイン調整用の乗算器とY信号等への加算器が独立に必要となってしまい、回路規模が増大してしまう。その一方、4色系の処理も行なえる色空間変換回路の場合、この色空間変換回路が4成分の入力機能を持っているのが常であるが、RGB−Bayerのような3色系画素配列のデータ処理に対しては、4色目の係数は通常すべて「0」に設定され使用しておらず、余剰な入力端子となって非効率である。このことを考慮し、この実施の形態では、「Gh」信号をこの4色目の色成分としてセレクタ81で選択的に入力できるようにすることによって、RGB−Bayerのような3色系画素配列のデータ処理においても、乗算器,加算器を追加せずに、「Gh」信号のゲイン調整と各色成分への加算が達成できる。
色空間変換・色抑圧処理部43の輝度用ルックアップテーブル(8 to 8 LUT)84は、色空間変換回路83から出力される「Y(輝度成分)」「Cr(第一色信号)」「Cb(第二色信号)」の色空間領域の信号において、特に「Y」信号のみが入力され、その出力を露出決定評価器85からの「Y」,「Cr」,「Cb」の各成分に対して乗算するかどうかを決定する機能を有している。
そして、特に「Cr」信号及び「Cb」信号の乗算をONにし、「Y」信号の乗算をOFFにした場合は、暗部と明部の色抑圧(クロマサプレス)等を行うことができる(色抑圧機能)ものである。
一般に、画像中の暗部は、様々なノイズの影響を受けやすい性質があり、故に暗部ではできるだけ発色を抑制することが自然な画質を出力することにつながる。一方、画像中の明部は、これを撮像したCCD21やその他の種々のハードウェア部品の特性に応じて変調がかかりやすい部分であり、ホワイトバランスが狂いやすい部分であるため、やはりできるだけ発色を抑制することが自然な画質を出力することに寄与する。これらのことを考慮し、画像中の明部と暗部において発色を抑制するのが色抑圧(クロマサプレス)機能の目的である。尚、図21はクロマサプレス処理時の動作例を示すブロック図である。ここでは、色空間変換回路83中に示した各演算関数に基づいて「色1」〜「色4」までの4色の成分を「Y」,「Cr」,「Cb」の各成分に変換した後、「Y」信号のみを輝度用ルックアップテーブル84に留保し、これを各乗算器86a〜86cで「Y」以外の各成分「Cr」,「Cb」に乗算している。
一般に、例えばクロマサプレス処理の場合、画像中の明部のクロマサプレスを行うためには、「Y」信号を一定のしきい値と比較し、「Y」信号がある一定レベルを超えたところで「Y」信号の傾きを変更するようにした演算回路を使用する方法がある。また、画像中の暗部でのクロマサプレスを行う場合、明部の回路と独立にサプレス回路を追加して設置することが多い。しかしながら、このような一般的な方法では、回路点数が多大となり、回路構成の複雑化によりコストが上昇し、また回路の面積効率も良いものとは言えない。
これに対し、この実施の形態に係るディジタルスチルカメラでは、「Y」信号を8ビット信号として輝度用ルックアップテーブル(8 to 8 LUT)84に入力し、ここから8ビット出力信号として出力するようにしているので、「Y」信号,「Cr」信号,「Cb」信号にのそれぞれに対して独立に乗算することができる。これにより、画像中の暗部及び明部のクロマサプレスを単一の回路で行うことができるようになる。
ここで、このクロマサプレス処理について、例えば、CPU24でのソフトウェア処理でGh信号等の高域信号を所定のしきい値と比較し、高域信号がその閾値を超えていればクロマサプレスを行うようにする場合を考えると、このCPU24での処理ではクロマサプレスの方法が固定され、特定の画像で色の付くべき領域に色がつかない等の不具合を発生していた。これらの場合はソフトウェアで色の抑圧を行なう等の方法で対応していたが、処理時間が非常に長くなってしまい問題となっていた。
しかしながら、この実施の形態では、一旦主メモリ29内に画像を格納し、CPU24等により画素毎にで特徴データを付加して再び主メモリ29内に格納した後、さらにリアルタイムプロセッシングユニット23での処理を行うことができるようになっているので、一つの回路で状況に応じてGh成分によるクロマサプレスとソフトウェアで生成された特徴データ信号によるクロマサプレスをリアルタイム処理にてスピードの低下を発生させずに使用することができる。
また、色空間変換回路83からの「Y」信号の乗算のみをONにすることで、「Y」信号に対してのみガンマ変換を行うことができるものである(ガンマ変換機能)。ここで、図22はガンマ変換処理時の動作を示すブロック図である。ここでは、色空間変換回路83中に示した各演算式に基づいて「色1」〜「色4」までの4色の成分を「Y」,「Cr」,「Cb」の各成分に変換した後、「Y」信号のみを輝度用ルックアップテーブル84に留保し、これを各乗算器86a〜86cで各成分「Y」,「Cr」,「Cb」のすべてにそれぞれ乗算している。
そして、かかるガンマ変換処理と上述のクロマサプレス処理とを同一の回路で行っているので、回路構成は非常に簡単なものでよい。特に、2個の輝度用ルックアップテーブル(8 to 8 LUT)84を独立に持てば、色抑圧機能とガンマ変換機能の両者を同時に発揮することができる。一般のリアルタイムプロセッシングユニットでは、この「クロマサプレス」と「ガンマ補正」の2つの機能を持たせる場合はこれらの機能を同時に使用できないという不都合が生じるが、この実施の形態に係るディジタルスチルカメラのリアルタイムプロセッシングユニット23では、一旦リアルタイムプロセッシングユニット23で処理された画素データについて、主メモリ29及びメインバス28を通じてダイレクトメモリアクセス(DMA)により何度でも繰り返しリアルタイムプロセッシングユニット23を通過させることができるので、それぞれを別のパスに分けて使用することで、不都合なく処理することができる。
尚、ここでは「Y」,「Cr」,「Cb」の色空間信号に対する処理を説明したが、これに限るものではなく、例外的画像処理によりこれと全く異なる色空間信号に対しても、全く同様に実行することができる。
色空間変換・色抑圧処理部43の露出決定評価器85は、シャッタスピードや絞りの大きさ等を決定する際の前提として、実際の画像データの適正輝度に基づいて露出レベルの決定を行うためのもので、1フレームの画像を複数のブロックに区分けし、ブロック同士の輝度(明るさ)を平準化するための輝度評価を行うものである。
一般に、露出決定の評価を行う場合、フレーム中の中心に位置する長方形領域のブロックとその周辺部のブロックの「Y(輝度)」信号(または「G(緑色成分)」信号)の平均値を評価値とする方法(第一の露出決定評価方法:図23参照)がある。通常、中央部分の画像は被写体が映し出されるために比較的露出決定を厳密に行いたいのに対して、周辺部分については画像中の重要度が低いと予想されるために中央部分に比べて露出決定の厳密性が要求されないことが多い。このような場合には、この第一の露出決定評価方法が有効となる。
この他、全領域を例えば5×5に等間隔に区切った各ブロックの各々の「Y」信号(または「G」信号)の平均値を露出決定に使用する評価値とする方法(第二の露出決定評価方法:図24参照)もある。
しかしながら、中心位置とその周囲のブロックをそれぞれ平均して行う第一の露出決定評価方法では、中央重点露出決定と全体的な逆光補正は可能であるが、よりきめ細かな露出決定アルゴリズムの使用は難しい。また、等間隔のブロック分割を行う第二の露出決定評価方法では、中央重点の露出決定を行なうときとスポット的な露出決定を行なうときでそれぞれ異なるブロックの合成処理が必要となり、演算に時間がかかる。また、ブロック境界を最適な位置に設定する際、すべてのブロックの面積が同一でなければならないという制約があるため、かかる制約を満たすためにはブロックの分割数が増大しがちであり、この場合は回路規模が大きくなって消費電力を増大したり、露出決定評価の処理時間が多大となってしまう。
これらのことを考慮し、この実施の形態に係るディジタルスチルカメラの露出決定評価器85は、複数のブロックに分割する際に、図23及び図24の如く、各ブロックの境界の位置を任意に変更可能としたものである。
ここで、図23は中心位置とその周囲のそれぞれのブロックと同士の境界線を任意の位置に設定した場合の図、図24は各ブロックを同一面積に設定する場合の図である。
即ち、露出決定の領域を少なくとも3×3以上のブロックに分割し、各ブロックの境界位置を自由に移動可能としており、例えば図23の場合は、各ブロック同士の境界線を全く任意の位置に設定している。また図24の場合は、同図中の太線の部分のみを確定することで、細線のように等間隔のブロックを設定する。これらの方法により、少ないブロック数で最適なブロック境界を選択することが可能となり、演算時間の増加を抑えつつ、露出決定の精度を向上させることができる。
具体的には、この露出決定評価器85においては、リアルタイムプロセッシングユニット23のを駆動制御するためのドライバソフトウェアプログラムによって、CCD21の光学的特性に応じた最適なブロック同士の間の境界線を任意の位置に設定しておき、かかる境界線によって区画される各ブロック毎にすべての画素の「Y」信号等の輝度値を積分演算し、これらの各ブロック毎の積分値を評価の対象とする。具体的な露出決定評価器85のハードウェア構成としては、カウンター及び加算器等が内蔵されて構成される。あるいは、ディジタルスチルカメラのユニットの表面に何らかのモード切換用の入力釦を設けておき、この入力釦によりブロック同士の間の境界線をいくつかのモード設定の位置に変更できるようにドライバソフトウェアプログラムを設定しておけば、ユーザーの意思により、状況に応じて最適な露出決定領域を選択できる。
<空間フィルタ・コアリング処理部44の構成及び動作>
図25は空間フィルタ・コアリング処理部44の内部構成を示すブロック図である。ここでは、色空間変換・色抑圧処理部43の各乗算器87a〜87cからの色空間信号(「Y」,「Cr」,「Cb」)を、空間フィルタ91(R00〜R48)に対して複数のラインメモリ(2048 Variable Length FIFO)92a〜92dを用いながら格納し、その後に輪郭補正処理を行うものである。
このように、輪郭補正処理を行う場合に、この実施の形態では、各成分の信号(「Y」,「Cr」,「Cb」)と、これを強調した高周波成分の信号に分解して取り扱うことを可能としており、これにより各データにおけるビット長を小さくすることを可能としている。この理由を説明する。
一般に、空間フィルタでの処理は、単に任意設定可能な一定の空間フィルタを通すだけであったが、この方法では、2つの問題点が存在する。
まず、一般的なフィルタ処理を行なう際には、図26の如く、通常、中心画素の係数の絶対値Soは大きな値となるが、この中心画素から周辺に遠ざかるに従って絶対値Svが小さくなる。これは、輪郭補正処理を行った後のデータでも同様である(図27)。しかし空間フィルタの汎用性を確保しようとすると、周辺画素のビット長を小さくすることはできない。この場合、すべての画素の係数のビット長を中心画素のビット長に合わせて長くする必要があり、ほとんどの場合、用意したビット長を有効に使用することとはならなくなってしまう。
そこで、この実施の形態では、空間フィルタ91(図25)の出力と、中心画素の元データに各々係数を乗算し、その後で加算する構成とすることにより、各画素のビット長を増加することなく、必要十分なフィルタ演算を実行することを可能としている。
具体的には、「Y」,「Cr」,「Cb」の色空間信号において輪郭補正処理を行う場合に、「Cr」成分及び「Cb」成分といった各色成分に対しては輪郭補正処理を行わず、「Y(輝度)」成分のみに対して輪郭補正処理を行うようにすれば、画像のコントラストが十分に強調され、これをもって輪郭を強調することができる。即ち、図25において、空間フィルタ91内の中心画素(R24)の「Y」成分のみを配線93を通じて取り出し、乗算器94で所定の任意の係数を乗算する。一方、空間フィルタ91内の12ビット長の中心画素(R24)の全成分の合計値を配線96で取り出し、これらに乗算器97で所定の任意の係数(Ratio)を乗算して、非線形処理(コアリング)を施すための第一コアリングファンクション(Coring Function)ブロック98に入力する。そして、この第一コアリングファンクションブロック98からの出力(色線分の合計値)と、乗算器94で所定の係数が乗算された「Y」成分を加算器99により加算して、中心画素(R24)の輪郭強調の値を算出し、他方、色信号(「Cr」,「Cb」)そのものについては、配線101,102を通じてこれを取り出した後、第二及び第三コアリングファンクションブロック103,104に格納した後、加算器99からの輪郭強調の値と併せて出力部45へ送出される。尚、これら要素94,97,99を総称して輪郭補正処理部と称する。
また、これと同時に、各成分の信号(「Y(1色目の成分)」、「Cr(2色目の成分)」及び「Cb(3色目の成分)」)は配線105を通じて出力部45へ送出される。この際、「Y」成分、「Cr」成分、「Cb」成分及び乗算器97からの出力値(空間フィルタ91からの出力値自身)のいずれかを特徴データ(KEY信号)として扱うことを可能とするために、セレクタ105aによって4色目の成分として選択して出力できるようになっている。
このように、この実施の形態では、空間フィルタ91(図25)の出力と、中心画素の元データに各々係数を乗算器94,97で乗算し、その後で加算器99で加算する構成とすることにより、各画素のビット長を増加することなく、必要十分なフィルタ演算を実行することが可能となる。また、元信号と高域信号が分離できるため、この高域信号に対し「コアリング」という非線形演算を施すことにより、ノイズの増加を抑えながら輪郭強調を行なうことができる。
ここで、色信号(「Cr」,「Cb」)と輝度信号(「Y」)を独立に処理し、最後に加算してビデオ信号等を作成する方法も考えられ、この場合、輝度信号(「Y」)は輪郭強調を行われた後でガンマ変換を行なうことが多い。しかし、デジタルカメラの信号処理は、入力信号として10ビット〜12ビットが使用されるため、ガンマ変換を処理の当初に行なってメモリ上のビット長を削減し、メモリ容量を削減すること、及びデジタル処理途中のビット長を削減し、回路規模を小さくすることが一般的に行なわれる。この形では輪郭補正処理を、ガンマ変換の後で行なうことが必要となってくる。
一般に、「Y」成分の高周波数成分を抽出する場合、通常であれば高周波フィルタである空間フィルタ91のみを用いて実行する方法も考えられるが、この「Y」成分を用いて空間フィルタ91内の12ビット長の各要素(例えばR24)を輪郭強調する場合は、各要素自体にノイズが重畳していた場合、かかるノイズ成分も一緒に輪郭強調されてしまうおそれがあり、このままではノイズが目立った不自然な画像に変質してしまうおそれがある。
そこで、ガンマ補正を行った後の信号に対して輪郭強調をする際に、高域成分がある一定レベルを超えたときのみに輪郭強調を行なう非線形演算(コアリング)が必要となる。ただし、ガンマ変換後の「Y」の高域信号に対してコアリングを行なうと、低輝度域では振幅が相対的に大きくなっているため、低輝度域の高域成分により強く輪郭強調が行われる傾向となる。しかし、一方、実際に、強調が必要な信号は中輝度域から高輝度域に多く含まれ、低輝度域の高域成分はノイズが支配的であるため、空間フィルタ91を輪郭強調等に使用した場合には、すべての周波数成分を線形演算すると、ノイズの多い画像では小レベルのノイズを増幅してしまい、ノイズばかり強調されて、必要な信号が強調されずに見苦しくなる。
ところで、このノイズは一般にコントラストは少ないが、非常に小さく現れるため高周波成分に偏って現れることが多い。そこで、この実施の形態のディジタルスチルカメラでは、コントラストの小さい部分については強調処理をできるだけ行わないように、基づいての信号をそのまま使用する一方、コントラストが一定水準以上の場合に強調処理を積極的に実行することが望ましいと言える。そこで、第一コアリングファンクション98においては、図28及び図29中の符号98内の非線形演算関数の如く、入力値に対して非線形な出力値を出力し、特に絶対値が所定のしきい値αより少ない部分についてはこれを無視するようにすることで、低輝度域にはあまり強調を加えず、中輝度、高輝度域に強く強調を行ない、ノイズ成分を除去した形で画像をはっきりと補正することが可能になる。
そして、このようにガンマ変換後の高域成分にコアリング処理を行なう場合に、特に、この実施の形態のディジタルスチルカメラでは、図28の如く、第一コアリングファンクション98に対する入力値(高周波信号)について、「Y」信号自身のガンマ特性を用いて変換したり、あるいは図29の如く、コアリングのしきい値α(Thresh Level)自体を「Y」信号自身のガンマ逆特性を用いて変換することにより、ガンマ変換前にコアリングを行なった場合と等価な処理を行なうことを可能としている。具体的には、ノイズの目立ちにくい明るい部分(「Y」信号の値が大きい場合)は、入力値に対してしきい値αの幅を相対的に小さくなるよう設定し、輪郭強調がかかりやすくする一方、ノイズの目立ちやすい暗い部分(「Y」信号の値が小さい場合)では入力値に対してしきい値αの幅を相対的に大きくなるよう設定することで、輪郭強調がかかりにくくする。そして、このような逆変換特性を過補正気味に設定することで、低輝度域にはあまり強調を加えず、中輝度、高輝度域に強く強調を行ない、画像をよりはっきりと補正することが可能になる。
尚、図28の例では、「Y」信号(Y0)の値によって逆ガンマ効果ブロック106で1倍から4倍までの値を正の一次関数(比率変換関数)により線形的に演算選出し、これを乗算器107によって入力値に乗算した後、セレクタ108によってこれを選択して第一コアリングファンクション98に入力値(ブロック内の非線形演算関数図の横軸)として入力し、これに対応する縦軸の値を出力するようになっている。これにより、コアリングでのしきい値αに対する入力値の有効/無効の幅を変化させることができる。尚、同図中の符号109a,109bはリミッタである。
また、図29「Y」信号(Y0)の値によって逆ガンマ効果ブロック111で1倍から4倍までの値を負の一次関数(比率変換関数)により線形的に演算選出し、これをコアリングの初期しきい値α0(threshold Level)に対して乗算器112で乗算した後、セレクタ113によってこれを選択して第一コアリングファンクション98でのコアリングの実際のしきい値αとして設定することで、コアリングでの入力値に対するしきい値αの幅を変化させることができる。尚、同図中の符号114a,114bはリミッタである。
尚、逆ガンマ効果ブロック106,111では、線形的な変換関数を用いているが、非線形であっても差し支えない。
また、図25においては、色信号(「Cr」,「Cb」)についてもそれぞれ第二及び第三コアリングファンクション103,104に入力されるようになっているが、ここでのコアリング処理は一般的な非線形関数によって処理されるため、ここでは説明を省略する。
<CCD21としてインターレースタイプのものを使用した場合のリアルタイムプロセッシングユニット23の構成及び動作>
上述のように、このディジタルスチルカメラは、撮像素子であるCCD21として、インターレースタイプのものとプログレッシブタイプのものを選択して使用できるようになっている。
一般に、プログレッシブタイプのCCD21を使用する場合には、数ライン分のラインメモリを用意すれば、CCD21からの画素データの読み出しと平行して、画素補間、色変換及び輪郭強調などの一般画像処理を同時に行ない、CCD21からのデータ読み出しとほぼ同時にこれらの一般画像処理を終了させることができる。
しかしながら、インターレースタイプのCCD21では、偶数ラインのみのフィールド(偶数フィールド)と奇数ラインのみのフィールド(奇数フィールド)が交互に出力されてリアルタイムプロセッシングユニット23に与えられる。この場合に、図30の如く、インターレースタイプのCCD21で撮像された画像を処理するために、両方のフィールドを1フレームの画像に合成して主メモリ29内に格納した後に、初めて種々の画像処理の開始を行う方法が考えられる。しかしながら、この場合は、CCD21からの画像データの格納のために主メモリ29内に1フレーム中の全画素分の格納領域が使用されてしまい、回路的に大規模となる上、消費電力を多く必要としていた。また、読み出し終了まで画像処理を開始することができないため、撮影に時間がかかっていた。
このことを考慮し、この実施の形態にかかるディジタルスチルカメラでは、図31の如く、インターレースタイプのCCD21の最初のフィールド(奇数フィールドまたは偶数フィールドのうちの一方:以下「第一フィールド」と称す)を主メモリ29内に格納し、2番目のフィールド(奇数フィールドまたは偶数フィールドのうちの他方:以下「第二フィールド」と称す)の読み出しと同時に、主メモリ29から第一フィールドのデータをダイレクトメモリアクセスで読み出してリアルタイムプロセッシングユニット23に入力するようにしている。これにより、インターレースタイプのCCD21からの第二フィールドの読み出し期間中に、画素補間、色変換及び輪郭強調等の一般画像処理を同時に行なうことができ、第二フィールドの読み出し終了と同時に一般画像処理を終了させることができる。また、主メモリ29内においてCCD21からのデータ格納のために容易する格納領域は、1フィールド分(1/2フレーム分)のみで良いので、主メモリ29内の必要容量を2分の1に低減できる。
<リアルタイムプロセッシングユニット23内のラインメモリ61a,61b,92a〜92dの画素数を超える水平画素数を有したCCD21を使用する場合>
このディジタルスチルカメラにおいて、CCD21については、前述の通り、様々なタイプのものを選択して使用するようになっている。この場合、CCD21の水平画素数が、図14及び図25に示したラインメモリ61a,61b,92a〜92dの画素数を超える場合も考えられる。かかる大規模な素子配列を有するCCD21に対しては、このCCD21のデータを一度主メモリ29内に蓄積し、図32のように、画像フレーム118中の画像を水平方向に複数ブロック119に分割して、ダイレクトメモリアクセスでリアルタイムプロセッシングユニット23に入力することにより、高速処理を行うことが可能になっている。
一般に、CCD21からの画像についてのリアルタイム処理(一般画像処理)においては、ほとんどの処理において上下ラインの画素を参照する必要があるため、水平の画素数分のラインメモリが(複数)必要であった。したがって、CCD21からの画像を直接リアルタイムプロセッシングユニット23で処理することとすると、処理できるCCD21の水平の画素サイズは、ハードウェアとして作り込まれたラインメモリ61a,61b,92a〜92dの画素数によって制限を受けることになる。ところが、集積回路においてラインメモリ61a,61b,92a〜92dは非常に大きな面積を占めるため、CCD21の駆動回路に比較してリアルタイムプロセッシングユニット23の面積を多大に確保することが困難であり、その結果、処理可能な水平画素数はどうしても小さくなってしまい、大画素のCCD21の使用が困難であった。
これに対してこの実施の形態にかかるディジタルスチルカメラでは、一度主メモリ29内に格納したデータを、ダイレクトメモリアクセスでリアルタイムプロセッシングユニット23に入力して処理するようになっているため、画像フレーム118を水平方向に複数のブロック119に分割してリアルタイムプロセッシングユニット23でのリアルタイム処理を行なうことにより、上記のCCD21の水平画素サイズの制限は発生しない。したがって、主メモリ29の容量があればいくらでも大きなCCD21の処理が可能となり、CCD21に対するリアルタイムプロセッシングユニット23の汎用性が向上する。
以上の実施の形態では、主としてディジタルスチルカメラを例にあげて説明したが、他の画像入力装置の画像処理回路としても容易に適用可能である。
また、図25に示した空間フィルタ・コアリング処理部44では、「Y」成分、「Cr」成分、「Cb」成分及び乗算器97からの出力値(空間フィルタ91からの出力値自身)のいずれかのうちのひとつを、セレクタ105aによって4色目のみの成分として選択するようにしていたが、同様のセレクタを他の出力ラインにも設置し、4色目だけでなく他の3色のそれぞれの成分をもそれ以外の成分に自由に切り換えられるように構成してもよい。このようにすることにより、さらに出力成分を自由に変更でき、画像処理回路としての汎用性を向上できる。