しかし、特許文献1では、被写界内にサイズが小さくて動きの早い被写体(打球など)が含まれている場合、その被写体部分の画像が3DDNRによってぼやけてしまう。
この点、特許文献2では、3DDNRは動きの小さい部分にだけ施されるので、動きの大きい部分のぼやけが回避される。しかし、動きの大小は画素単位で判別されるので、処理量が膨大となる。
また、イメージセンサとしてCMOS(Complementary Metal- Oxide Semiconductor)を用いる場合は特に、ランダムノイズに加えて、FPN(Fixed Pattern Noise)を抑制する必要性が高い。さらには、ノイズだけでなく、手ぶれに起因する被写界像間の動き(時間軸方向の動き成分)を抑制することも重要である。
それゆえに、この発明の主たる目的は、新規な、画像処理装置を提供することである。
この発明の他の目的は、少ない処理量でランダムノイズを適切に抑制でき、しかもFPNおよび手ぶれによる被写界像間の動きの各々をも抑制できる、画像処理装置を提供することである。
この発明のその他の目的は、さらに、必要メモリ容量および消費電力の各々を削減できる、画像処理装置を提供することである。
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
第1の発明に従う画像処理装置は、被写界の光学像を繰り返し捉える撮像手段から出力された時系列に従う複数の被写界像に画像処理を施す画像処理装置であって、複数の被写界像の間で特徴点の動きを検出する動き検出手段、複数の被写界像の各々に対して動き検出手段の検出結果に基づく位置で切出し処理を施す第1切出し手段、および第1切出し手段を経た後の複数の被写界像の各々に対して、当該被写界像に時間的に近接する1つまたは複数の被写界像を加算する加算処理を施す加算手段を備え、加算手段は、互いに加算されるべき一組の被写界像の各々を共通の部分画像に分割する分割手段、被写界像間の動きによって変化する係数を共通の部分画像毎に決定する係数決定手段、および分割手段の分割結果を共通の部分画像毎の係数で重み付けして互いに加算する加重加算手段を含む。
第1の発明では、被写界の光学像が撮像手段(14)により繰り返し捉えられ、画像処理装置(10,10A)は、撮像手段から出力された時系列に従う複数の被写界像に画像処理を施す。
画像処理装置では、動き検出手段(22)が複数の被写界像の間で特徴点の動きを検出し、第1切出し手段(26)は複数の被写界像の各々に対して動き検出手段の検出結果に基づく位置で切出し処理を施す。すなわち、第1切出し手段の切出し位置は、特徴点の動きに応じて移動する。こうして、切出し位置を特徴点の動きに追従させることで、複数の被写界像の間の動きが抑制される。
第1切出し手段を経た後の複数の被写界像の各々は、加算手段(28,28A)に与えられ、当該被写界像に時間的に近接する1つまたは複数の被写界像を加算する加算処理を施される。こうして近接被写界像を加算することで、複数の被写界像の各々に含まれるランダムノイズが抑制される。
加えて、第1切出し手段の後段に加算手段を配したことで、FPNも抑制される。切出し位置が移動することで、FPNはランダムノイズとしての性質を持つこととなり、このようなノイズ成分もまた、加算処理によって抑制されるからである。
また、加算手段では、分割手段(50a,50b,52a,52b)が互いに加算されるべき一組の被写界像の各々を共通の部分画像(B11〜B66)に分割し、係数決定手段(60,S35〜S39)は被写界像間の動きによって変化する係数を共通の部分画像毎に決定し、加重加算手段(54a,54b,56)は分割手段の分割結果を共通の部分画像毎の係数で重み付けして互いに加算する。重み付けのための係数を共通の部分画像毎に決定することで、動きの大きい部分のぼやけを回避することが可能となる。
ここで、共通の部分画像は、単一の画素でも、m画素×n画素(m,nは1以上の整数)のブロックでもよいが、共通の部分画像のサイズを適切に選ぶことで(たとえば数画素×数画素程度)、係数決定のための処理量を抑制できる。
第1の発明によれば、少ない処理量でランダムノイズを適切に抑制でき、しかもFPNおよび手ぶれによる被写界像間の動きの各々をも抑制することが可能となる。
第2の発明に従う画像処理装置は、第1の発明に従属し、検出手段は、複数の被写界像の各々に複数の検出エリアを割り当てて、検出エリア毎に動き検出を行い、係数決定手段は、複数の検出エリアのうち各共通の部分画像と対応する検出エリアを特定して、検出手段の検出結果のうち特定された検出エリアの動きに基づいて係数決定を行う。
第2の発明では、複数の被写界像の各々に複数の検出エリア(E11〜E33)が割り当てられ、動き検出は検出エリア毎に行われる。加算にあたっては、係数決定手段(60,S35〜S39)が係数を共通の部分画像毎に決定する。具体的には、複数の検出エリアのうち各共通の部分画像と対応する検出エリアを特定し(86,図6)、検出された複数の動きのうち特定された検出エリアの動きに基づいて係数を決定する(図8)。
第2の発明によれば、動き検出手段の検出結果を係数決定にも利用することで、処理量のさらなる抑制が可能となる。
第3の発明に従う画像処理装置は、第1の発明に従属し、加算手段は、分割手段の分割結果の間の差分を共通の部分画像毎に算出する差分算出手段をさらに含み、係数決定手段は差分算出手段の算出結果に基づいて係数決定を行う。
第3の発明では、加算にあたって、分割手段の分割結果の間の差分が差分算出手段(53)によって共通の部分画像毎に算出される。係数は、この算出結果に基づいて、係数決定手段(55,60,S34およびS36)によって決定される(式(1))。
第3の発明によれば、差分に基づいて係数を決定するので、ランダムノイズをより適切に抑制することが可能となる。
第4の発明に従う画像処理装置は、第1ないし第3のいずれかの発明に従属し、複数の被写界像にFPN補正処理を施すFPN補正手段、動き検出手段によって検出された動きが閾値を上回るか否かを繰り返し判別する第1判別手段、および第1判別手段の判別結果が肯定的であるときFPN補正手段を無効化する一方、第1判別手段の判別結果が否定的であるときFPN補正手段を有効化する第1制御手段をさらに備える。
第4の発明では、FPN補正手段(18a)が複数の被写界像にFPN補正処理を施し、第1判別手段(S5)は、動き検出手段によって検出された動きが閾値を上回るか否かを繰り返し判別する。第1制御手段(S7,S9)は、第1判別手段の判別結果が肯定的であるときFPN補正手段を無効化する一方、第1判別手段の判別結果が否定的であるときFPN補正手段を有効化する。
第4の発明によれば、動きが閾値を上回っている期間は、FPN補正手段が無効化されるので、消費電力を削減できる。こうしてFPN補正手段を無効化しても、FPNは、第1切出し手段による切出し処理およびその後段の加算手段による加算処理を通じて抑制される。
第5の発明に従う画像処理装置は、第4の発明に従属し、撮像手段に固有のFPN情報が書き込まれる第1メモリをさらに備え、FPN補正手段は第1メモリに格納されたFPN情報に基づいてFPN補正処理を実行する。
第5の発明では、撮像手段に固有のFPN情報が第1メモリ(18a)に書き込まれ、FPN補正手段は第1メモリに格納されたFPN情報に基づいてFPN補正処理を実行する。
第5の発明によれば、FPN補正が無効化されている期間は、第1メモリを開放可能であり、必要メモリ容量を削減できる。
第6の発明に従う画像処理装置は、第5の発明に従属し、FPN情報はFPNのサイズを示すサイズ情報を含み、閾値はサイズ情報に関連した値である。
第7の発明に従う画像処理装置は、第6の発明に従属し、閾値はサイズ情報の示す値よりも大きい。
第6または第7の発明によれば、FPNを適切に抑制できる。
第8の発明に従う画像処理装置は、第7の発明に従属し、FPN情報はFPNの有無を示す有無情報を含み、手ぶれ補正モードの有効無効を示すモード情報が書き込まれる第2メモリ、および第2メモリに格納されたモード情報をモード切替え操作に応答して更新する更新手段をさらに備え、第1判別手段は第1メモリに格納された有無情報がFPN有を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード有効を示すとき判別処理を実行する。
第8の発明では、FPN情報にFPNの有無を示す有無情報が含まれており、第2メモリ(84)には手ぶれ補正モードの有効無効を示すモード情報が書き込まれる。第2メモリに格納されたモード情報は、モード切替え操作が行われたとき更新手段(24,82c)によって更新される。第1判別手段の判別処理は、第1メモリに格納された有無情報がFPN有を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード有効を示すとき実行される。
第9の発明に従う画像処理装置は、第8の発明に従属し、第1制御手段は第1判別手段の判別結果に関わらず第1切り出し手段を有効化する。
第9の発明では、FPN有かつ手ぶれ補正モード有効の場合、第1切り出し手段は常に有効化される。
第10の発明に従う画像処理装置は、第8または第9の発明に従属し、第1メモリに格納された有無情報がFPN有を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード無効を示すときFPN補正手段を有効化しかつ第1切出し手段を無効化する第2制御手段をさらに備える。
第10の発明では、第2制御手段(S11)は、第1メモリに格納された有無情報がFPN有を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード無効を示すとき、FPN補正手段を有効化しかつ第1切出し手段を無効化する。
第10の発明によれば、FPN有かつ手ぶれ補正モード無効の場合、FPN補正手段を有効化しかつ第1切出し手段を無効化するので、FPNを抑制しつつ消費電力を削減できる。
第11の発明に従う画像処理装置は、第10の発明に従属し、有無情報がFPN無を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード有効を示すときFPN補正手段を無効化しかつ第1切出し手段を有効化する第3制御手段をさらに備える。
第11の発明では、第3制御手段(S15)は、有無情報がFPN無を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード有効を示すときFPN補正手段を無効化しかつ第1切出し手段を有効化する。
第11の発明によれば、FPN無かつ手ぶれ補正モード有効の場合、FPN補正は無用で、FPN補正手段が無効化されるので、消費電力を削減できる。
第12の発明に従う画像処理装置は、第11の発明に従属し、有無情報がFPN無を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード無効を示すときFPN補正手段および第1切出し手段の各々を無効化する第4制御手段をさらに備える。
第12の発明では、第4制御手段(S17)は、有無情報がFPN無を示しかつ第2メモリに格納されたモード情報が手ぶれ補正モード無効を示すとき、FPN補正手段および第1切出し手段の各々を無効化する。
第12の発明によれば、FPN無かつ手ぶれ補正モード無効の場合、FPN補正および手ぶれ補正はいずれも無用で、FPN補正手段および第1切出し手段の各々が無効化されるので、消費電力を削減できる。
第13の発明に従う画像処理装置は、第12の発明に従属し、複数の被写界像の各々に対して固定位置で切出し処理を施す第2切出し手段をさらに備え、第1制御手段および第3制御手段の各々はさらに、第1切出し手段の有効化処理に応答して第2切出し手段を無効化し、第2制御手段および第4制御手段の各々はさらに、第1切出し手段の無効化処理に応答して第2切出し手段を有効化する。
第13の発明では、複数の被写界像の各々に対し、固定位置での切出し処理が第2切出し手段(32)により施される。第2切出し手段は、第1制御手段または第3制御手段によって第1切出し手段が無効化されると有効化され、第2制御手段または第4制御手段によって第1切出し手段が有効化されると無効化される。
第13の発明によれば、第1切出し手段の無効化/有効化による画像サイズの変化を抑制できる。
第14の発明に従う画像処理装置は、第1ないし第13のいずれかの発明に従属し、撮像手段はCMOSを含む。
CMOSでは一般に、CCDなど他の撮像素子よりもFPNが発生しやすく、FPN補正の必要性が高い。このため、第14の発明では、FPN補正に関連する効果が顕著となる。
第15の発明に従う画像処理装置は、第1ないし第14のいずれかの発明に従属し、撮像手段をさらに備える。
第15の発明では、撮像手段は画像処理装置の一構成要素である。
この発明によれば、少ない処理量でランダムノイズを適切に抑制でき、しかもFPNおよび手ぶれによる被写界像間の動きの各々をも抑制できる。加えて、必要メモリ容量および消費電力の各々を削減できる。
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
図1を参照して、この実施例のディジタルムービーカメラ10は光学レンズ12,イメージセンサ14,信号前処理回路16,FPN補正回路18a,ラインメモリ18b,DRAM20,動き検出回路22,CPU24,第1切出し回路26,3DDNR回路28,信号後処理回路30,第2切出し回路32,表示系回路34,記録系回路36,フラッシュメモリ38およびキー入力装置40を含む。
なお、イメージセンサ14は、好ましくはCMOS(Complementary Metal- Oxide Semiconductor)で構成されるが、CCD(Charge- Coupled Device)など他の撮像素子で構成されてもよい。
これらの構成要素のうち、FPN補正回路18a,ラインメモリ18b,第1切出し回路26および第2切出し回路32の各々は、FPNの有無,手ぶれ補正モードのON/OFF状態,および動きベクトルの大小に基づいて、CPU24によりON/OFFされる。このON/OFF制御(図11参照)は、フラッシュメモリ38に格納されたFPN補正&切出しON/OFF制御プログラム(82d:図4参照)に基づく。なお、3DDNR回路28は、常時ON状態に置かれる。
ここで、ディジタルムービーカメラ10のソフトウェア構成について説明しておく。フラッシュメモリ38のメモリマップの一部を図4に示す。図4を参照して、フラッシュメモリ38にはFPN情報エリア80,プログラムエリア82,モード情報エリア84および対応情報エリア86が形成される。
FPN情報エリア80にはイメージセンサ14に関するFPN情報が格納される。FPN情報はFPNフラグ80aおよびサイズ,発生位置&補正値情報80bを含む。FPNフラグ80aはFPNの有無を示すフラグであり、サイズ,発生位置&補正値情報80bはFPNのサイズ,発生位置およびこれに対応する補正値を記述した情報である。FPNのサイズ,および生位置はフレームを構成する複数のラインの間で共通なので、サイズ,発生位置&補正値情報80bは1ライン分あれば足りる。なお、FPNが無い場合には、サイズ,発生位置&補正値情報80bは省略してよい。
プログラムエリア82には切出し位置制御プログラム82a,ラインメモリ制御プログラム82b,モード切替え制御プログラム82c,FPN補正&切出しON/OFF制御プログラム82dなどが格納される。切出し位置制御プログラム82aは、動き検出回路22の検出結果(CPU24に内蔵されたメモリR内の動きベクトルエリア70〜78に格納された動きベクトルデータ:図3参照)に基づいて切出し位置を算出し、算出結果(メモリR内の切出し位置エリア79に格納された切出し位置データ)を第1切出し回路26に通知するためのプログラムである。
ラインメモリ制御プログラム82bは、FPN情報エリア80からサイズ,発生位置&補正値情報80b(図4参照)を読み出し、これをラインメモリ18bに書き込むためのプログラムである。モード切替え制御プログラム82cは、キー入力装置40によるモード切替ええ操作を受け付け、モード情報エリア84内のモード情報を操作結果に従って更新するためのプログラムである。
FPN補正&切出しON/OFF制御プログラム82dは、FPNの有無(FPNフラグ80a),手ぶれ補正モードのON/OFF状態(手ぶれ補正モードフラグ84a:後述),および動きベクトル(検出エリアE11〜E33用の動きベクトルエリア70〜78:図3参照)の大小に基づいて、FPN補正回路18a,第1切出し回路26および第2切出し回路32のON/OFF制御を行うためのプログラムである。
モード情報エリア84には手ぶれ補正モードフラグ84aが格納される。手ぶれ補正モードフラグ84aは、手ぶれ補正モードのON/OFF状態を示すフラグであり、モード切替え制御プログラム82cにより制御される。
対応情報エリア86には、動き検出回路22の検出エリア(E11〜E33)と、3DDNR回路28による加重加算処理(後述)の単位であるブロック(B11〜B66)との間の対応関係(図6参照)を示す情報が格納される。
なお、上述した情報/プログラムは、出荷前にフラッシュメモリ38に書き込まれる。手ぶれ補正モードフラグ84aは、出荷時点では“OFF”であり、その後キー入力装置40によるモード切替え操作に応じて更新される。また、CPU24は、μITRONなどのマルチタスクOSの制御下で、これらのプログラム(82a,82b,…)を並列的に処理することができる。
さて、FPN補正&切出しON/OFF制御プログラム82dに対応するフローチャートが図11に示されている。図11を参照して、CPU24は、まずステップS1で、FPNの有無をFPNフラグ80a(図4参照)に基づいて判別する。ステップS1の判別結果がYESつまり“FPN有”であれば、ステップS3に移る。
ステップS3では、手ぶれ補正モードがON状態であるか否かを手ぶれ補正モードフラブ84aに基づいて判別する。ステップS3の判別結果がYESつまり“手ぶれ補正ON状態”であればステップS5に移る一方、判別結果がNOつまり“手ぶれ補正OFF状態”であればステップS11に移る。
ステップS5では、第kフレームの第(k−1)フレームに対する動きベクトル(以下これを“k:k−1”のように記述する)の大きさが閾値(Th1)より大であるか否かを、メモリRに格納された動きベクトルデータに基づいて判別する。なお、閾値Th1は、FPNのサイズに関連して決定された値であり、好ましくは、サイズ,発生位置&補正値情報80bに記述されたFPNサイズよりもわずかに大きな値が選ばれる。
ここで図3を参照して、メモリRは9つの検出エリアE11〜E33にそれぞれ対応する9つの動きベクトルエリア70〜78を含む。動きベクトルエリア70〜78には、検出エリアE11〜E33で検出された動きベクトルを示すデータがそれぞれ格納されている。
動きベクトルエリア70〜78に格納された9つの“k:k−1”のうち1つでも大きさが閾値を超えるものがあれば、ステップS5でYESと判別してステップS7に移る。一方、大きさがどれも閾値以下であれば、ステップS5でNOと判別してステップS9に移る。
ステップS7では、FPN補正回路18aをOFFして、第1切出し回路26をONする一方、第2切出し回路32をOFFする。ステップS9では、FPN補正回路18aをONして、第1切出し回路26をONする一方、第2切出し回路32をOFFする。ステップS11では、FPN補正回路18aをONして、第1切出し回路26をOFFする一方、第2切出し回路32をONする。その後、ステップS1に戻る。
ステップS1の判別結果がNOつまり“FPN無”であれば、ステップS13に移る。ステップS13では、ステップS3と同様に、手ぶれ補正モードがON状態であるか否かを手ぶれ補正モードフラブ84aに基づいて判別する。ステップS13の判別結果がYESであればステップS15に移る一方、判別結果がNOであればステップS17に移る。
ステップS15では、ステップS7と同様に、FPN補正回路18aをOFFして、第1切出し回路26をONする一方、第2切出し回路32をOFFする。ステップS17では、FPN補正回路18aをOFFして、第1切出し回路26をOFFする一方、第2切出し回路32をONする。その後、ステップS1に戻る。
したがって、FPNがあるディジタルムービーカメラ10のFPN補正&切出しに関する状態は、ステップS7が実行されている期間に対応する状態(以下これを“S7状態”と呼ぶ),ステップS9が実行されている期間に対応する状態(S9状態),およびステップS11が実行されている期間に対応する状態(S11状態)、の3状態の間で遷移する。
一方、FPNがないディジタルムービーカメラ10のFPN補正&切出しに関する状態は、ステップS15が実行されている期間に対応する状態(S15状態),およびステップS17が実行されている期間に対応する状態(S17状態)、の2状態の間で遷移する。
最初、“S7状態”における動作について説明する。再び図1を参照して、光学レンズ12を経た被写界の光学像は、イメージセンサ14の受光面つまり撮像面に照射され、撮像面では、光電変換によって被写界の光学像に対応する電荷つまり生画像信号が生成される。イメージセンサ14は、露光時間Tに渡る露光とこれによって生成された生画像信号の読出しとを、たとえば1/60秒周期で繰り返し実行する。イメージセンサ14からは、被写界の光学像に対応する生画像信号が出力される。出力された生画像信号は、信号前処理回路16によってA/D変換,クランプなどの前処理を施され、これにより生画像データが作成される。作成された生画像データは、FPN補正回路18aに与えられる。
このとき、FPN補正回路18aは休止状態にあり、CPU24によるラインメモリ18bへの書込み処理(後述)も実行されていない。与えられた生画像データは、FPN補正回路18aを素通りして、DRAM20の第1生画像エリア60(図2)に書き込まれる。
信号前処理回路16によって作成された生画像データはまた、動き検出回路22に与えられる。動き検出回路22は、与えられた生画像データに基づいて動きベクトルを検出する。詳しくは、9つの検出エリアE11〜E33を被写界に割り当て(図6参照)、そして検出エリア毎に、現在のフレーム(k)およびその1つ前のフレーム(k−1)の間で特徴点の動きつまり動きベクトルを繰り返し検出する。動き検出回路22の検出結果、つまり9つの検出エリアE11〜E33に対応する9個の“k:k−1”は、CPU24に内蔵されたメモリRに書き込まれる(図3参照)。
CPU24は、メモリRに格納された動きベクトルに基づいて、手ぶれに起因する被写界像の動きが打ち消されるような切出し位置をフレーム毎に算出し、算出結果を示す切出し位置情報を第1切出し回路26に通知する。
第1生画像エリア60に格納された生画像データはその後、第1切出し回路26に与えられる。第1切出し回路26の切出しエリアE1は移動可能であり(図5(A)参照)、第1切出し回路26は、CPU24から通知された切出し位置情報に基づいて切出しエリアE1を移動しつつ、与えられた生画像データに対して各フレームから切出しエリアE1に対応する部分を切り出す処理を施していく。この第1切出し処理によって、生画像データに含まれる手ぶれに起因する時間軸方向の動き成分が抑制される。
第1切出し回路26から出力された生画像データはその後、3DDNR回路28に与えられる。このとき、第2生画像エリア62に格納された1フレーム前の生画像データが参照データとして3DDNR回路28にさらに与えられ、CPU24はメモリRに格納された動きベクトルを3DDNR回路28に通知する。つまり、3DDNR回路28へは、第kおよび第(k−1)の2フレームの生画像データと、これら2フレーム間の9個の動きベクトル“k:k−1”とが共通のタイミングで入力される。
3DDNR回路28は、第kフレームの生画像データおよび第(k−1)フレームの生画像データに対し、9個の動きベクトル“k:k−1”に基づく加重加算処理を施す。ここで、3DDNR回路28およびこれが実行する加重加算処理について、図7,図8および図12により詳しく説明する。
図7を参照して、3DDNR回路28は、バッファ50aおよびコントローラ50b,バッファ52aおよびコントローラ52b,一対の乗算回路54aおよび54b,加算回路56,バッファ58aおよびコントローラ58bならびにCPU60を含む。第1切出し回路26からの生画像データはバッファ50aに、DRAM20からの生画像データはバッファ52aにそれぞれ書き込まれる。
バッファ50aに第kフレームが、バッファ52aに第(k−1)フレームがそれぞれ格納されると、コントローラ50bおよびコントローラ52bはそれぞれ、バッファ50aおよびバッファ52aに格納されたフレームを6×6の36ブロック(B11〜B66:図6参照)に分割し、これら36ブロックをCPU60が繰り返し発行するブロック読出し命令に応じて順番に読み出していく。
読み出された一対のブロック、つまりバッファ50aから読み出されたブロックBijおよびバッファ52aから読み出されたブロックBijは、乗算回路54aおよび乗算回路54bにそれぞれ入力される。このとき、CPU60が9個の動きベクトル“k:k−1”のうちブロックBijに対応するものを特定し、特定された動きベクトルに基づいて係数αを決定する。
乗算回路54aには係数“α”が与えられ、乗算回路54aは入力されたブロックBijに与えられた係数“α”を乗算する。一方、乗算回路54bには係数“1−α”が与えられ、乗算回路54bは入力されたブロックBijに係数“1−α”を乗算する。
乗算回路54aの乗算結果および乗算回路54bの乗算結果は、加算回路56で互いに加算される。そして、加算回路56の加算結果、つまり加重加算を施された後のブロックBijが、バッファ58aに書き込まれる。
バッファ58aに第kフレームの最後のブロックつまりブロックB66が書き込まれると、CPU60はコントローラ58bに向けてフレーム読出し命令を発行し、コントローラ58bはバッファ58aに格納された36ブロックを1フレームとして出力する。
上記のようなCPU60の処理は、図12のフローチャートに従う。図12を参照して、最初のステップS31では、バッファ50aおよびバッファ52aにそれぞれフレームが格納されているか否かを判別し、判別結果がNOであれば待機する。ステップS31の判別結果がYESであればステップS33に移って、コントローラ50bおよびコントローラ52bの各々にブロック読出し命令を発行する。その後、ステップS35に進む。
ステップS35では、ブロック読出し命令に応じて読み出された一対のブロック、つまり第kフレームのブロックBijと第(k−1)フレームのブロックBijとの間の動きが大きいか否かを、CPU24から通知された動きベクトル情報に基づいて判別する。
具体的には、まず、対応情報エリア86に格納された対応情報86a〜86iに基づいて一対のブロックに対応する検出エリアを特定する。たとえば一対のブロックが“B11”である場合、“B11”は対応情報86aに記述されていることから、対応する検出エリアは“E11”であることがわかる。
次に、CPU24から通知された9つの検出エリアE11〜E33に対応する9つの動きベクトル“k:k−1”の中から、上記のようにして特定された検出エリアに対応するものを選出し、選出された“k:k−1”の大きさを閾値(Th2)と比較する。そして“|k:k−1|>Th2”であれば、動き大と判別する一方、“|k:k−1|≦Th2”であれば動き小と判別する。
ステップS35の判別結果がYESつまり動き大であれば、ステップS37で係数αを最大値αmax(たとえば0.8)とする。ステップS35の判別結果がNOつまり動き小であれば、ステップS39で係数αを算出する。この算出処理は、動きつまり|k:k−1|と係数αとの関係を規定する関数ないしテーブルに基づく。このような関数の一例を図8に示す。
図8を参照して、この関数は、2点(0,0.5)および(Th2,0.8)両端とする線分に対応し、動きがTh2を越える区間ではα=0.8となる。一般には、動きが“0”のときαが最小で、動きの増大につれてαも大きくなり、そして動きが“Th2”のときαが最大となる関数であればよい。テーブルを用いる場合には、関数から算出される離散値、たとえば(0,0.5),(1,0.6),…,(Th2,0.8)が登録される。
図12に戻って、ステップS37またはS39で係数が決定されると、ステップS41に進む。ステップS41では、乗算回路54aおよび54bに係数“α”および“1−α”をそれぞれ通知する。続くステップS43では、直前に読み出されたブロックがフレームの最終ブロックであるか否かを判別し、NOであればステップS33に戻る。ステップS43でYESであれば、ステップS45に移ってコントローラ58bにフレーム出力命令を発行し、その後ステップS31に戻る。
このような加重加算処理によって、生画像データに含まれるランダムノイズが抑制される。
再び図1を参照して、3DDNR回路28から出力された生画像データは、RAM20の第2生画像エリア62(図2参照)に書き込まれる。こうして第2生画像エリア62に格納された生画像データはその後、参照データとして3DDNR回路28に与えられる。
3DDNR回路28から出力された生画像データはまた、信号後処理回路30にも与えられる。信号後処理回路30は、与えられた生画像データに対し、色分離,ガンマ補正,YUV変換などの後処理を施す。これにより、生画像データはYUV画像データに変換される。
こうして得られたYUV画像データは、DRAM20内のYUV画像エリア64(図2参照)に書き込まれる。YUV画像エリア64に格納されたYUV画像データはその後、第2切出し回路32に与えられる。このとき、第2切出し回路32は休止状態にあり、与えられたYUV画像データは、第2切出し回路32を素通りして、表示系回路34および記録系回路36の各々に与えられる。
表示系回路34では、与えられたYUV画像データでLCDモニタ(図示せず)を駆動する処理などが実行される。記録系回路36では、与えられたYUV画像データを圧縮する処理,圧縮された画像データを記録媒体(図示せず)に記録する処理などが実行される。
次に、“S9状態”における動作について説明する。再び図1を参照して、イメージセンサ14は、“S7状態”においてと同様に、露光とこれによって生成された生画像信号の読出しとを繰り返し実行する。イメージセンサ14から出力された生画像信号は、信号前処理回路16で前処理を施され、これにより作成された生画像データがFPN補正回路18aにライン単位で与えられる。
CPU24は、フラッシュメモリ38からサイズ,発生位置&補正値80b(図4参照)読み出し、これをラインメモリ18bに書き込む。この書込み処理は、ラインメモリ書込み制御プログラム82b(図4参照)に基づく。FPN補正回路18aは、ラインメモリ18bに格納されたサイズ,発生位置&補正値80bに基づいて、与えられた生画像データにFPN補正を施す。これによって、生画像データに含まれるFPNが抑制される。
第1生画像エリア60に格納された生画像データはその後、第1切出し回路26に与えられ、同様の第1切出し処理を施される。
このとき、“S7状態”においてと同様に、第2生画像エリア62に格納された1フレーム前の生画像データが参照データとして3DDNR回路28にさらに与えられる。動き検出回路22は同様の動きベクトル検出を行っており、検出結果がCPU24を通して3DDNR回路28に通知される。3DDNR回路28は、与えられた生画像データに対して通知された動きベクトルに基づく加重加算処理を実行する。
3DDNR回路28から出力された生画像データは、RAM20の第2生画像エリア62に書き込まれ、その後参照データとして3DDNR回路28に与えられる。3DDNR回路28から出力された生画像データはまた、信号後処理回路30にも与えられ、YUV画像データに変換される。YUV画像データは、DRAM20内のYUV画像エリア64に書き込まれ、その後第2切出し回路32に与えられる。
このとき、“S7状態”においてと同様に、第2切出し回路32は休止状態にあり、与えられたYUV画像データは、第2切出し回路32を素通りして、表示系回路34および記録系回路36の各々に与えられる。表示系回路34ではLCD駆動処理などが、記録系回路36では圧縮処理,記録処理などがそれぞれ実行される。
ここで、“S7状態”から“S9状態”への状態遷移を図9のタイミングチャートに示す。図9を参照して、動きベクトルの大きさが閾値以下である間は、第1切出し,FPN補正および3DDNRの各処理が継続され、第2切出し処理は休止している。動きベクトルの大きさが閾値を超えると、FPN補正処理が停止する。第1切出しおよび3DDNRの各処理は継続され、第2切出し処理は休止したままである。
次に、S11状態における動作について説明する。“S11状態”は、“S9状態”において、第1切出し回路26が休止する一方、第2切出し回路32が起動した状態である。したがって、“S11状態”では、CPU24による切出し位置算出および通知処理も実行されていない。このため、第1生画像エリア60の生画像データは、第1切出し回路26を素通りして3DDNR回路28に与えられることになる。一方、YUV画像エリア64からのYUV画像データは、第2切出し回路32の第2切出し処理を施された後、表示系回路34および記録系回路36の各々に与えられる。
第2切出し回路32の切出しエリアE2は固定であり(図5(B))、第2切出し回路32は、与えられたYUV画像データに対して、各フレームから切出しエリアE2に対応する部分を切り出す切出し処理を施していく。第1切出しの停止/再開による画像サイズの変化は、このような第2切出し処理を実行することで解消される。この点以外は、“S9状態”における動作と同様である。
ここで、“S7状態”から“S11状態”への状態遷移を図10のタイミングチャートに示す。図10を参照して、手ぶれ補正がONである間は、第1切出しおよび3DDNRの各処理が継続され、第2切出しおよびFPN補正の各処理は休止している。手ぶれ補正がOFFされると、第1切出し処理は停止され、FPN補正および第2切出しの各処理が起動される。3DDNR処理は継続される。
最後に、S15およびS17の各状態における動作について、簡単に説明する。“S15状態”は“S7状態”と同じ状態であり、行われる動作も両状態の間で共通する。
“S17状態”は、“S11状態”において、FPN補正回路18aがさらに休止した状態である。したがって、“S17状態”では、信号前処理回路16からの生画像データは、FPN補正回路18aを素通りしてDRAM20の第1生画像エリア60に書き込まれる。この点以外は、“S11状態”における動作と同様である。
以上から明らかなように、この実施例では、被写界の光学像がイメージセンサ14により繰り返し捉えられ、イメージセンサ14から時系列に従う複数の被写界像が出力される。FPN補正回路18aは複数の被写界像にFPN補正処理を施し、動き検出回路22は複数の被写界像の間で特徴点の動きを検出する。
第1切出し回路26は、複数の被写界像の各々に対し、動き検出手段の検出結果に基づく位置での切出し処理を施す。すなわち、第1切出し回路26の切出し位置は、特徴点の動きに応じて移動する。こうして、切出し位置を特徴点の動きに追従させることで、複数の被写界像の間の動きが抑制される。
そして、第1切出し回路26による切出し処理が施された後の時系列に従う複数の被写界像の各々に対して、その被写界像に直前の被写界像を加算する加算処理が、3DDNR回路28によって施される。これによって、複数の被写界像の各々に含まれるランダムノイズが抑制される。
一方、CPU24は、動き検出手段によって検出された動きが閾値を上回るか否かを繰り返し判別して(S5)、判別結果が肯定的であるときFPN補正回路18aを無効化する(S7)一方、判別結果が否定的であるときFPN補正回路18aを有効化する(S9)。
したがって、動きが閾値を上回っている期間は、FPN補正回路18aが無効化されるので、消費電力を削減できる。こうしてFPN補正回路18aを無効化しても、FPNは、第1切出し回路26による切出し処理およびその後段の3DDNR回路28による加算処理を通じて抑制される。なぜなら、切出し位置が移動することで、FPNはランダムノイズとしての性質を持つ結果となり、3DDNR回路28で抑制されるからである。
この実施例ではまた、3DDNR回路28において、バッファ50aおよびコントローラ50bならびにバッファ52aおよびコントローラ52bが、互いに加算されるべき一対の被写界像の各々をブロックB11〜B66(共通の部分画像)に分割し、乗算回路54aおよび54bならびに加算回路56は分割結果をブロック毎の係数で重み付けして互いに加算する。重み付けのための係数(α)は、動き検出回路22からCPU24経由で通知された動きベクトルに基づいて、CPU60がブロック毎に決定する。こうして、係数を共通の部分画像毎に決定することで、動きの大きい部分のぼやけを回避することが可能となる。
そして、ブロックB11〜B66は、単一の画素でも、m画素×n画素(m,nは1以上の整数)でもよいが、ブロックのサイズを適切に選ぶことで(たとえば数画素×数画素程度)、係数決定のための処理量を抑制できる。これにより、少ない処理量でランダムノイズを適切に抑制できる。
なお、この実施例の3DDNR回路28では、CPU60は、動き検出回路22からCPU24経由で通知された動きベクトルに基づいて係数αを決定したが、代わりに、バッファ50aおよびバッファ52aから出力される一対のブロックBijおよびBijの間の差分を求め、この差分に基づいて係数を決定してもよい。このような実施例を、図13および図14に示す。
図13を参照して、ディジタルムービーカメラ10Aは、図1のディジタルムービーカメラ10において、CPU24からCPU60への動きベクトル通知を省略し、3DDNR回路28を3DDNR回路28Aに置き換えたものである。
図14を参照して、3DDNR回路28Aは、図7の3DDNR回路28において、バッファ50aおよび52aからそれぞれ出力されるブロックBijおよびBijの間の差分を算出する差分算出回路53,およびこの算出結果に基づいて係数αを算出する係数算出回路55を追加したものである。
差分算出回路53の算出結果は、係数算出回路55およびCPU60の各々に与えられる。係数算出回路55は、与えられた差分に基づいて、次式(1)により係数αを算出する。
α={差分}×β+η …(1)
ここでβおよびηは、直線の傾きおよび切片に相当するパラメータであり、CPU60によって設定される。
CPU60は、与えられた差分に基づいて、上式(1)におけるパラメータβおよびηを決定し、決定結果を差分算出回路53に設定する。この場合のCPU60の動作フローを図15に示す。
図15のフローは、図11のフローにおいて、ステップS35〜S41に代えてステップS34およびS36を備える。ステップS34では差分算出回路53からの差分に基づいてパラメータβおよびηを決定し、ステップS36では決定結果を係数算出回路55に設定する。この係数設定処理に応答して、係数算出回路55から係数αおよび“1−α”が乗算回路54aおよび54bに出力される。
なお、パラメータβおよびηは、差分とは無関係に決定されてもよく、固定値でもよい。このような場合には、差分算出回路53の算出結果をCPU60に通知する必要はない。
これにより、ランダムノイズをより適切に抑制できる。
なお、図1および図13の各実施例では、動き検出回路22の検出エリアの数は9で、これら9個の検出エリアをフレーム上に3行3列の行列態様で配置したが(図6参照)、数および配置はこれに限らない。たとえば、フレームの四隅に配された4つの検出エリアE11,E31,E13およびE33を省略し、検出エリアの割り当てがない部分では係数αを最小値(たとえば0.5)に固定してもよい。ただし、第1切出し回路26で手ブレに起因するフレーム間の動き成分を適切に除去し、また3DDNR回路28,28Aでランダムノイズ(これには手ブレに起因するフレーム内の動き成分も含まれる)を適切に除去するためには、m行n列(mは3以上の整数,nは3以上の整数)の行列態様が好ましい。
なお、各実施例では、検出エリアE11〜E33の間に隙間があるが、こうした隙間をなくしてもよい。隣り合う検出エリアが一部重複しても構わない。その形状も矩形とは限らず、円形,多角形などでもよい。
また、各実施例では、動き検出回路22が現在のフレーム(k)およびその直前のフレーム(k−1)の間で特徴点の動きを検出し、第1切出し回路26は検出結果に基づく切出しを行っているが、動き検出回路22の検出処理の後に、CPU24が検出結果に基づいて現在のフレーム(k)およびその直後のフレーム(k+1)の間で特徴点の動きを予測し、第1切出し回路26は予測結果に基づく切出しを行うようにしてもよい。図13実施例の場合、3DDNR回路28もまた、予測結果を利用してよい。
また、各実施例では、FPN情報は固定的であるが、たとえばCPU24が、FPN補正回路18aを通してイメージセンサ14のFPNを随時検出し、検出結果に基づいてFPN情報を更新してもよい。
以上では、一例としてディジタルムービーカメラ(10,10A)について説明したが、この発明は、イメージセンサで捉えられた時系列に従う複数の被写界像を処理する、画像処理装置に適用できる。この場合の画像処理装置は、イメージセンサを構成要素とするもの(たとえばディジタルスチルカメラ,カメラ付き携帯端末など)だけでなく、イメージセンサを構成要素としないもの(たとえば外部のイメージセンサで捉えられた被写界像を取り込むことができるパソコン,ディジタルビデオ再生機など)も含まれる。