以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
尚、プログラムについては、画像処理方法と同様であるので、その説明は省略する。
以下、図を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用した演算処理を実行するデジタルスチルカメラ1の一実施の形態の構成を示すブロック図である。
図1に示すように、デジタルスチルカメラ1は、レンズ11、絞り12、イメージセンサ13、相関2重サンプリング(CDS:Correlated Double Sampling)回路14、A/D(Analog/Digital)コンバータ15、DSP(Digital Signal Processor)ブロック16、タイミングジェネレータ17、D/A(Digital/Analog)コンバータ18、ビデオエンコーダ19、表示部20、コーデック(CODEC:COmpression/DECompression)処理部21、メモリ22、CPU(Central Processing Unit)23、および、操作入力部24から構成される。
イメージセンサ13は、光情報を電気信号に変換するCCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)などに代表される(光電変換)半導体素子であり、光を電気に変換する受光素子(画素)を複数個並べ、光の変化を画素ごとに独立して電気信号に変換するものである。相関2重サンプリング回路14は、イメージセンサ13の出力信号に含まれるノイズのうちの主な成分であるリセットノイズを、出力の各画素信号のうち、映像信号期間をサンプリングしたものと、基準期間をサンプリングしたものとを引き算することにより除去する回路である。A/Dコンバータ15は、供給されたノイズ除去後のアナログ信号をデジタル信号に変換する。
DSPブロック16は、信号処理用プロセッサと画像用RAM(Random Access Memory)を持つブロックで、信号処理用プロセッサが画像用RAMに格納された画像データに対して、予めプログラムされた画像処理、または、ハードウェアによる演算処理として構成された画像処理を行うものである。タイミングジェネレータ17は、イメージセンサ13を駆動するために必要な、水平および垂直の各種駆動パルス、並びに、アナログフロント処理で用いるパルスを、基準クロックに同期して発生させるロジック回路である。また、タイミングジェネレータ17により発生されるタイミングクロックは、バス25を介して、コーデック処理部21、メモリ22、および、CPU23にも供給されている。
D/Aコンバータ18は、供給されたデジタル信号をアナログ信号に変換して出力する。ビデオエンコーダ19は、供給されたアナログ信号を、表示部20において表示可能な形式のビデオデータにエンコードする。表示部20は、例えば、LCD(Liquid Crystal Display)などで構成され、ビデオエンコーダ19から供給されたビデオ信号を表示する。
コーデック処理部21は、例えばJPEG(Joint Picture Experts Group)などの、デジタル画像データの圧縮または伸張アルゴリズムによる処理を実行する。メモリ22は、例えば、半導体メモリ、磁気ディスク、光磁気ディスク、または、光ディスクなどにより構成され、CPU23の制御に基づいて、供給されたデータを記憶したり、または、記憶しているデータを出力する。なお、メモリ22は、デジタルスチルカメラ1に対して着脱可能なようになされていても良い。
CPU23は、バス25を介して、操作入力部24から供給されたユーザの操作入力を基に、デジタルスチルカメラ1の各部を制御する。操作入力部24は、録画を指令する場合のボタンをはじめとして、例えば、ジョグダイヤル、キー、レバー、ボタン、またはタッチパネルなどにより構成され、ユーザによる操作入力を受ける。
レンズ11および絞り12を介して入力された光は、イメージセンサ13に入射され、受光素子での光電変換によって電気信号に変換され、相関2重サンプリング回路14に供給される。相関2重サンプリング回路14は、イメージセンサ13の出力の各画素信号のうち、映像信号期間をサンプリングしたものと、基準期間をサンプリングしたものとを引き算することによりノイズを除去し、A/Dコンバータ15に供給する。A/Dコンバータ15は、供給されたノイズ除去後のアナログ信号をデジタル信号に変換し、DSPブロック16の画像用RAMに一時格納する。
タイミングジェネレータ17は、撮像中の状態において、一定のフレームレートによる画像取り込みを維持するように、イメージセンサ13、相関2重サンプリング回路14、A/Dコンバータ15、および、DSPブロック16を制御する。
DSPブロック16は、一定のレートで画素のストリームデータの供給を受け、画像用RAMに一時格納し、信号処理用プロセッサにおいて、一時格納された画像データに対して、後述する画像処理を実行する。DSPブロック16は、画像処理の終了後、CPU23の制御に基づいて、その画像データを表示部20に表示させる場合は、D/Aコンバータ18に、メモリ22に記憶させる場合は、コーデック処理部21に画像データを供給する。
D/Aコンバータ18は、DSPブロック16から供給されたデジタルの画像データをアナログ信号に変換し、ビデオエンコーダ19に供給する。ビデオエンコーダ19は、供給されたアナログの画像信号を、ビデオ信号に変換し、表示部20に出力して表示させる。すなわち、表示部20は、デジタルスチルカメラ1において、カメラのファインダの役割を担っている。コーデック処理部21は、DSPブロック16から供給された画像データに対して、所定の方式の符号化を施し、符号化された画像データをメモリ22に供給して記憶させる。
また、コーデック処理部21は、操作入力部24からユーザの操作入力を受けたCPU23の制御に基づいて、メモリ22に記憶されているデータのうち、ユーザに指定されたデータを読み取り、所定の復号方法で復号し、復号した信号をDSPブロック16に出力する。これにより、復号された信号が、DSPブロック16を介してD/Aコンバータ18に供給され、アナログ変換された後、ビデオエンコーダ19によりエンコードされて、表示部20に表示される。
次に、図2を参照して、DSPブロック16により実現される機能の一実施の形態の構成について説明する。
デモザイク処理部41は、入力されたモザイク画像の各画素位置のRGB(Red,Green,Blueの光の3原色)の画像信号の全ての強度を揃え、それぞれ非線形変換処理部42に供給する。尚、ここでいうモザイク画像は、図1のA/Dコンバータ15によってデジタイズされ、DSPブロック16に入力される画像信号である。モザイク画像は各画素にRGBのどれかの色に対応する強度信号が格納されており、通常、Bayer配列と呼ばれる色配列に従って配置されている。
非線形変換処理部42は、RGBの画像信号について、非線形変換関数を用いて変換処理し、それぞれノイズ除去処理部43に供給する。尚、非線形変換処理部42については、詳細を後述する。
ノイズ除去処理部43は、非線形変換処理部42より供給されたRGBの画像信号についてノイズを除去して非線形逆変換処理部44に供給する。尚、ノイズ除去処理部43については、詳細を後述する。
非線形逆変換処理部44は、ノイズ除去処理部43より供給されてくる、ノイズが除去されたRGBの画像信号を、非線形変換処理部42の変換で利用した非線形変換関数により逆変換し、ホワイトバランス処理部45に供給する。尚、非線形逆変換処理部44については、詳細を後述する。
ホワイトバランス処理部45は、非線形変換処理部42、ノイズ除去処理部43、および非線形逆変換処理部44によりノイズ除去されたRGBのそれぞれの画像信号に適切な係数を掛けることで、被写体領域の色バランスが無彩色になるように処理し、ガンマ補正処理部46に供給する。
ガンマ補正処理部46は、ホワイトバランス処理部45によりホワイトバランスが調整されたRGBのそれぞれの画像信号の各画素強度をガンマ補正し、YC変換処理部47に出力する。YC変換処理部47は、ガンマ補正された3チャネル画像信号にYCマトリックス処理を施すと共に、クロマ成分に対する帯域制限を掛けてY画像およびC画像を生成し、コーデック処理部21に対してYCbCr画像信号として出力する。
尚、図2においては、デモザイク処理部41の後段に非線形変換処理部42、ノイズ除去処理部43、および非線形逆変換処理部44を配置する構成となっているが、これらの配置順序は、図2で示されるものに限らず、例えば、デモザイク処理部41の前段に非線形変換処理部42、ノイズ除去処理部43、および非線形逆変換処理部44を配置し、モザイク画像のノイズ除去を行った後、デモザイク処理を実行するようにしても良い。ただし、この場合、モザイク画像の各画素はRGBのうちのいずれか1色の値しかもたないので、RGB毎の非線形変換処理部42、ノイズ除去処理部43、および非線形逆変換処理部44を設け、各画素毎の処理を色によって振り分けるようにする必要がある。
また、非線形変換処理部42、ノイズ除去処理部43、および非線形逆変換処理部44は、それぞれ単独でもノイズ除去処理を実行することは可能である。すなわち、例えば、図2の構成から非線形変換処理部42、および非線形逆変換処理部44を省き、ノイズ除去処理部43のみの構成でもノイズを除去することは可能である。また、非線形変換処理部42、および非線形逆変換処理部44は、ノイズ除去処理部43以外のノイズ除去処理能力を持った構成と組み合わせるようにしてもノイズを除去する効果がある。
次に、図3を参照して、非線形変換処理部42の詳細な機能の一実施の形態の構成について説明する。尚、非線形変換処理部42はRGB各チャネルに対して同一の構成である。また、図3においては、1チャネル分の構成が示されている。
変換曲線LUT62は、非線形変換に用いられる関数形状がLUTの形式で格納している。マッピング処理部61は、変換曲線LUT62より非線形変換に用いられる関数形状のLUTに基づいて、入力された画像の各画素に対して非線形変換してノイズ除去部43に出力する。
この非線形変換処理部42による非線形変換処理は、入射光強度にリニアな(線形的な)イメージセンサ13の出力を、ノンリニアな(非線形的な)特性の輝度値に変換することを目的とした変換処理であり、この処理により後段のノイズ除去処理で利用するチャネル間の線形回帰計算の安定度を向上させている。すなわち、例えば、高コントラストなエッジのような画像の場合、リニアな輝度では重心からみた輝度値の分布に偏りが生じやすく、このような状況で線形回帰計算を実行するよりも、適切な非線形変換により輝度値を変換し分布の偏りを補正した後に線形回帰計算を実行する方が計算が安定する。本発明にとって適切な非線形変換とは上に凸の滑らかな単調増加曲線であり、例えばガンマ補正などに利用されるべき乗曲線(指数は1より小さい)または、対数曲線などが有効である。
次に、図4を参照して、ノイズ除去処理部43の機能の一実施の形態の構成について説明する。
尚、図4で示されるノイズ除去処理部43の構成は、GとRの2チャネルの入力によりRのノイズを除去するようになっている。実際のノイズ除去処理部43の構成としては、これに加えて、同様の構成でGとBを入力としてBのノイズを除去する構成が必要である。Gに対してRとBの相関がない成分が除去されればクロマ成分ノイズは除去されるので、この例においては、Gのノイズを除去する構成は設けられていない。しかしながら、実用においては、Gのノイズを何らかの構成により除去した後に、RとBのそれぞれのノイズを除去する方がより適切である。尚、ここでは、Gは、特に処理されることなく、そのまま後段に出力されるものとする。
多重解像度変換処理部81−1,81−2は、それぞれGおよびRの入力画像を複数の多重解像度の表現形式の画像に変換し、変換された複数の各レイヤの画像信号をそれぞれ対応するレイヤ0画像メモリ82−1,82−2、レイヤ1画像メモリ83−1,83−2、レイヤ2画像メモリ84−1,84−2、およびレイヤ3画像メモリ85−1,85−2に格納する。
尚、多重解像度変換処理部81−1,82−2における多重解像度表現にはいろいろな形式があるが、例えば、Laplacian Pyramid形式や、wavelet変換を用いた多重解像度形式を利用するようにしてもよい。尚、多重解像度変換処理部81は、Laplacian Pyramid形式であるものとして説明を進める。
修正処理部86−1乃至86−3は、最低解像度のレイヤ以外のレイヤの画像にそれぞれ対応し、各レイヤのG、Rチャネルの画像より、ノイズが混在したRチャネルの各画素値を修正してノイズを除去し、それぞれレイヤ0修正画像メモリ87、レイヤ1修正画像メモリ88、および、レイヤ2修正画像メモリ89に格納する。
多重解像度逆変換処理部90は、レイヤ0修正画像メモリ87、レイヤ1修正画像メモリ88、および、レイヤ2修正画像メモリ89より各レイヤのノイズ除去されたRチャネル画像を読み出すと共に、最低解像度のレイヤのRチャネル画像を用いて、多重解像度逆変換処理を実行し、元画像と同じ解像度の画像へ統合し、非線形逆変換処理部44に出力する。
次に、図5を参照して、Laplacian pyramid形式の多重解像度画像を生成する多重解像度変換処理部81の機能の一実施の形態の構成について説明する。
多重解像度変換処理部81の縮小処理部111−1乃至111−3は、サブサンプリングによって入力された画像の画像サイズを例えば半分に縮小し(例えば、半分の解像度の画像に変換し)、後段に出力する。
拡大処理部113−1乃至113−3は、スーパーサンプリングによって入力された画像の画像サイズを例えば2倍に拡大し(例えば、2倍の解像度の画像に変換し)、後段に出力する。
減算処理部112−1乃至112−3は、縮小処理部111により縮小された後、拡大処理部113により拡大された画像と、その元画像のそれぞれの各画素について差分を求め、その差分からなる画像をレイヤごとの画像として出力する。すなわち、減算処理部112−1乃至112−3は、それぞれレイヤ0乃至3の画像を生成し、それぞれレイヤ0画像メモリ82、レイヤ1画像メモリ83、レイヤ2画像メモリ84、およびレイヤ3画像メモリ85に格納させる。
縮小処理部111により縮小された後、拡大処理部113により拡大された画像は、元画像の高周波成分が除去されることになるため、元画像との差分が計算されることにより、高周波成分のみのが抽出された画像が生成されることになる。
このため、減算処理部112−1は、それぞれ入力された画像の高周波成分のみからなる画像をレイヤ0画像として生成し、減算処理部112−2は、入力された画像のレイヤ0画像よりも低い周波数成分の画像をレイヤ1画像として生成する。また、減算処理部112−3は、入力された画像のレイヤ1画像よりも低い周波数成分の画像をレイヤ2画像として生成する。尚、縮小処理部111より出力される画像は、レイヤ2以下の帯域成分を備えたレイヤ3画像となる。すなわち、多重解像度変換処理部81は入力された画像を、帯域分離して各レイヤ0乃至3の画像を出力しているとも言える。
次に、図6を参照して、修正処理部86の機能の一実施の形態の構成について説明する。
サンプリング処理部131は、当該するレイヤのGチャネル画像から、注目画素位置に対応して設定される所定位置の近傍画素から複数個のGチャネル画素値をサンプリング(抽出)し、乗算処理部137、分散算出処理部133、および共分散算出処理部136に供給する。サンプリング処理部132は、当該するレイヤのRチャネル画像から、注目画素位置に対応して設定される所定の位置の近傍画素から複数個のRチャネル画素値をサンプリング(抽出)し、共分散算出処理部136に供給する。尚、サンプリング処理部131,132は、注目画素位置に対して設定される同一の所定の位置のG画素値とR画素値を抽出する。
分散算出処理部133は、サンプリングされたGの画素値に基づいて、Gの注目画素周辺の分散値を算出し、クリッピング処理部134に供給する。
共分散算出処理部136は、サンプリングされたGとRの画素値に基づいて、それらの共分散値を算出し、除算処理部135に供給する。クリッピング処理部134は、Gチャネルのサンプルの分散値が所定の閾値より小さい場合、その閾値でクリッピングし、除算処理部135に供給する。除算処理部135は、クリッピング処理部134より供給される分散値により、共分散処理部136より供給される共分散値を除算し、分散値に対する共分散値の割合(共分散値/分散値)として乗算処理部137に供給する。尚、クリッピング処理部135の処理は、後続の除算処理部135が(共分散値/分散値)を算出するため、0割を回避ための処理である。乗算処理部137は、(共分散値/分散値)に注目画素位置のGチャネル画素値を乗じることで注目画素のノイズ除去されたRチャネル画素値を推定し、それを出力する。
ここで、修正処理部86の処理の詳細について説明する。
修正処理部86は、チャネル間相関を利用した画素値推定方法により画素値を修正している。より具体的には、チャネル間相関を利用した画素値推定方法は、局所領域に注目した場合、2つのチャネル(例えばGとR)間には線形な関係があるという仮定に基づいて、局所領域内のある画素位置Rの推定値を線形回帰計算によって算出するというものである。
例えば、画像中の注目画素周辺の局所領域においてC1チャネル(例えばG)の画素値のサンプル(注目画素の位置に対応する所定の位置の複数の画素の画素値){C11,C12,C13,・・・,C1N}とC2チャネル(例えばR)の画素値のサンプル(注目画素の位置に対応する所定の位置の複数の画素の画素値){C11,C12,C13,・・・,C1N}とが得られたとき、上述した両者間の線形な関係があると仮定することにより、C2チャネルの注目画素位置の輝度推定値C2C’は注目画素位置のC1チャネルの輝度値C1Cから以下の式(1)により推定することができる。
ここで、MC1は、その局所領域におけるC1チャネルの期待値、MC2は、C2チャネルの期待値、VC1C2は、C1,C2チャネルの共分散値、VC1C1は、C1チャネルの分散値である。
また、共分散値VC1C2および分散値VC1C1は、それぞれ以下の式(2),式(3)により求められる。
式(2),式(3)において、wiは、所定の重み係数である。
従って、上述した式(1)を算出することでノイズを除去することが可能となる。しかしながら、図4で示されるようにノイズ除去処理部43には、多重解像度変換処理部81が設けられており、修正処理部86は、帯域毎に分離された画像に対して上述した2チャネルの相関を利用して画素値を修正することになる。
ところで、多重解像度変換により生成された複数のレイヤの画像においては、画像の直流成分は最低解像度のレイヤに集中するので、それ以外のレイヤでは局所的な画素の期待値は0になる。結果として、多重解像度処理を利用する場合、上述した式(1)乃至式(3)は、以下の式(4)乃至式(6)で置き換えられることになる。
従って、図6の分散値算出処理部133は、実質的に式(6)により分散値を算出し、共分散算出処理部136は、式(5)により共分散値を算出し、さらに、乗算処理部137は、式(4)により画素値を修正している(補正している)。
さらに、式(5)乃至式(6)の共分散値および分散値の算出処理にあたり、コンピュータによる算出処理で処理負荷の大きな乗算処理を軽減させるため、近似関数を用いて、乗算処理回数を低減させるようにしてもよく、例えば、以下の式(7)乃至式(8)のような近似関数により算出するようにしてもよい。
次に、図7を参照して、多重解像度逆変換処理部90の機能の一実施の形態の構成について説明する。
拡大処理部151−1乃至151−3は、多重解像度変換処理部90の拡大処理部113と同様のものであり、スーパーサンプリングによって入力された画像の画像サイズを例えば2倍に拡大し(例えば、2倍の解像度の画像に変換し)、後段に出力する。
加算処理部152−1乃至152−3は、それぞれレイヤ0ノイズ除去画像メモリ87、レイヤ1ノイズ除去画像メモリ88、レイヤ2ノイズ除去画像メモリ89、およびレイヤ3画像メモリ85に格納されたレイヤ0ノイズ除去画像乃至レイヤ2ノイズ除去画像、およびレイヤ3画像を読み出し、拡大処理部152−1乃至152−3のそれぞれより供給されてくる画像とを加算して、後段に出力する。
すなわち、拡大処理部151−1は、最低周波成分のレイヤ3ノイズ除去画像を拡大し、レイヤ2ノイズ除去画像と同じサイズの画像にして、加算処理部152−1に供給する。そして加算処理部152−1は、拡大されたレイヤ3ノイズ除去画像とレイヤ2ノイズ除去画像とを加算することにより、レイヤ3乃至レイヤ2までの帯域を持つ画像を生成し、拡大処理部151−2に供給する。
同様にして、拡大処理部151−2は、レイヤ3乃至レイヤ2のノイズ除去画像を拡大し、レイヤ1ノイズ除去画像と同じサイズの画像にして、加算処理部152−2に供給する。そして加算処理部152−2は、拡大されたレイヤ3乃至レイヤ2までのノイズ除去画像とレイヤ1ノイズ除去画像とを加算することにより、レイヤ3乃至レイヤ1までの帯域を持つ画像を生成し、拡大処理部151−3に供給する。
さらに、拡大処理部151−3は、レイヤ3乃至レイヤ1のノイズ除去画像を拡大し、レイヤ0ノイズ除去画像と同じサイズの画像にして、加算処理部152−3に供給する。そして加算処理部152−3は、拡大されたレイヤ3乃至レイヤ1までのノイズ除去画像とレイヤ0ノイズ除去画像とを加算することにより、レイヤ3乃至レイヤ0までの帯域の画像を統合し、最終的に元画像に等しい解像度と帯域を持つ画像を出力する
次に、図8を参照して、非線形逆変換処理部44の機能の一実施の形態の構成について説明する。
非線形逆変換処理部44は、非線形変換処理部42における変換の逆変換を実行するため、非線形変換処理部42とほぼ同様の構成である。変換曲線LUT172は非線形変換処理部42の変換曲線LUT62と同様の構成であり、共用するようにしてもよいものである。逆マッピング処理部171は、入力された画像の各画素に対して変換曲線LUT172を参照して、非線形逆変換し、ホワイトバランス処理部45に出力する。
次に、図9のフローチャートを参照して、図2のDSPブロック16による画像処理について説明する。
デモザイク処理部41は、モザイク画像が入力されたか否か(フレームメモリから読み込まれたか否か)を判定し、入力されるまで、その処理を繰り返す。例えば、画像が入力されたと判定された場合、ステップS2において、デモザイク処理部41は、入力されたモザイク画像からRGBの3チャンネルの画像信号を生成するデモザイク処理を実行し、生成したRGBの画像信号を非線形変換処理部42に供給する。
ステップS3において、非線形変換処理部44のマッピング処理部61は、変換曲線LUT62より非線形変換に用いられる関数形状のLUTに基づいて、入力された画像の各画素に対して非線形変換してノイズ除去部43に出力する。
ステップS4において、ノイズ除去部43は、ノイズ除去処理を実行し、供給された1つのチャネル画像の各画素についてノイズを除去し、非線形逆処理部44に供給する。尚、ノイズ除去処理については、図10を参照して、その詳細を後述する。
ステップS5において、非線形逆変換処理部44の逆マッピング処理部171は、入力された画像の各画素に対して変換曲線LUT172を参照して、ステップS3の非線形変換処理により適用した非線形特性を打ち消すように強度変換し、ホワイトバランス処理部45に供給する。
尚、ステップS3乃至S5の処理については、RGBの各画像信号に対して、非線形変換処理部42、ノイズ除去処理部43、および非線形逆変換処理部44が並列処理するようにしても良いし、各チャンネルに対して、順次処理するようにしても良い。
ステップS6において、ホワイトバランス処理部45は、ノイズが除去され、非線形特性が解除されたRGB3チャネル画像に対してそれぞれの画像信号に適切な係数を掛けることで、被写体領域の色バランスが無彩色になるようにホワイトバランス処理を施し、ガンマ補正処理部46に供給する。
ステップS7において、ガンマ補正処理部46は、ホワイトバランス処理部45によりホワイトバランスが調整されたRGBのそれぞれの画像信号の各画素強度をガンマ補正し、YC変換処理部47に出力する。
ステップS8において、YC変換処理部47は、ガンマ補正処理部46によりガンマ補正処理されたRGBの画像信号にYCマトリクス処理を施すYC変換処理を実行し、Y画像とC画像に変換し、ステップS9において、Y画像とC画像を出力(フレームメモリに書き込む)する。
以上の処理により、ノイズが除去されたYC画像が生成されることになる。
次に、図10のフローチャートを参照して、図9のフローチャートにおけるステップS4の処理であるノイズ除去処理について説明する。
ステップS21において、多重解像度変換処理部81−1,81−2は、それぞれ非線形変換処理部42により生成された非線形変換処理されたG,Rチャネル分の画像が入力されたか否かを判定し、入力されたと判定されるまで、その処理を繰り返し、入力されたと判定された場合、その処理は、ステップS22に進む。
ステップS22において、多重解像度変換処理部81−1は、多重解像度変換処理を実行し、入力されたGの画像を複数の多重解像度画像を生成し、生成した画像をレイヤ毎にそれぞれレイヤ0画像メモリ82−1、レイヤ1画像メモリ83−1、レイヤ2画像メモリ84−1、およびレイヤ3画像メモリ85−1に格納する。尚、多重解像度変換処理については、図11のフローチャートを参照して、詳細を後述する。
ステップS23において、多重解像度変換処理部82−1は、多重解像度変換処理を実行し、入力されたRの画像を複数の多重解像度画像を生成し、生成した画像をレイヤ毎にそれぞれレイヤ0画像メモリ82−2、レイヤ1画像メモリ83−2、レイヤ2画像メモリ84−2、およびレイヤ3画像メモリ85−2に格納する。尚、多重解像度処理については、信号の成分が、GではなくRである点を除いては、同様の処理である。
ステップS24において、修正処理部86−1乃至86−3は、それぞれレイヤ0乃至2のそれぞれのG,Rの信号を用いて、画素値修正処理を実行し、Rの画素値を修正し、それぞれレイヤ0修正画像メモリ87、レイヤ1修正画像メモリ88、およびレイヤ2修正画像メモリ89に格納する。尚、画素値修正処理については、図12のフローチャートを参照して、詳細を後述する。
ステップS25において、多重解像度逆変換処理部90は、多重解像度逆変換処理を実行し、レイヤ0修正画像メモリ87、レイヤ1修正画像メモリ88、およびレイヤ2修正画像メモリ89に格納されている、画素値が修正されたレイヤ0乃至2の画像、および、レイヤ3画像メモリ85に格納されているRの画像を、ステップS23の処理による多重解像度変換の逆変換を実行することで、複数の多重解像度画像を統合し、ステップS26において、統合されたRの画像を出力する。尚、多重解像度逆変換処理については、図20のフローチャートを参照して、詳細を後述する。
以上の処理により、G,Rとの相関性に基づいて、Rの画素値が修正される。
次に、図11のフローチャートを参照して、図10のフローチャートにおけるステップS22,S23の処理である多重解像度変換処理について説明する。
ステップS41において、多重解像度変換処理部81−1は、図示せぬカウンタNを0に設定し初期化する。
ステップS42において、縮小処理部111は、N回縮小された画像を縮小する。すなわち、最初の処理では、Nは0、すなわち、入力された画像が、縮小処理部111−1により縮小される。
ステップS43において、多重解像度変換処理部81−1は、図示せぬカウンタNを1インクリメントする。
ステップS44において、多重解像度変換処理部81−1は、カウンタNが、カウンタNの最大値Nmax−1であるか否かを判定する。ここで、Nmaxは、入力された画像を多重解像度画像に変換するレイヤ数である。従って、図5で示されるように、レイヤ数は4となる。
例えば、ステップS44において、カウンタNが、カウンタNの最大値(Nmax−1)ではないと判定された場合、ステップS45において、縮小処理部111は、N回縮小された画像を減算処理部112および拡大処理部113に出力する。すなわち、最初の処理では、縮小処理部111−1が、減算処理部112−2および拡大処理部113−1に1回縮小された画像を出力する。
ステップS46において、拡大処理部113は、N回縮小された画像を拡大し、減算処理部112に出力する。すなわち、最初の処理においては、拡大処理部113−1が、縮小処理部111−1より供給されてきた1回縮小された画像を拡大し、減算処理部112−1に供給する。
ステップS47において、減算処理部112は、(N−1)回縮小された画像から、N回縮小されて、かつ、1回拡大された画像を減算する。すなわち、最初の処理では、減算処理部112−1が、入力された画像から拡大処理部113−1より供給された画像を減算する。
ステップS48において、減算処理部112は、ステップS47の処理により求められたレイヤ(N−1)の画像をレイヤ(N−1)画像メモリに格納させ、その処理は、ステップS42に戻る。すなわち、最初の処理においては、減算処理部112−1は、減算処理により得られた画像をレイヤ0画像メモリ82−1に格納させる
すなわち、ステップS44の処理において、カウンタNが最大値(Nmax−1)であると判定されるまで、ステップS42乃至S48の処理が繰り返される。結果として、順次、縮小処理部111−2が、1回縮小された画像を縮小して、拡大処理部113−2および減算処理部113−3に供給し、拡大処理部113−2が、供給された2回縮小された画像を拡大して減算処理部112−2に供給し、減算処理部112−2が、1回縮小された画像から、2回縮小されて、かつ、拡大されたた画像を減算し、レイヤ1画像を生成して、レイヤ1画像メモリ83−1に格納する。
ステップS44の処理において、カウンタNが最大値(Nmax−1)であると判定された場合、ステップS49において、縮小処理部111は、N回縮小された画像をレイヤN画像メモリおよび拡大処理部113に出力する。すなわち、ここでNmaxは、4であるので、縮小処理部111−3が、減算処理部112−3およびレイヤ3メモリ85に3回縮小された画像を出力する。
ステップS50において、拡大処理部113は、N回縮小された画像を拡大し、減算処理部112に出力する。すなわち、ここでは、拡大処理部113−3が、縮小処理部111−3より供給されてきた3回縮小された画像を拡大し、減算処理部112−3に供給する。
ステップS51において、減算処理部112は、(N−1)回縮小された画像から、N回縮小されて、かつ、1回拡大された画像を減算する。すなわち、ここでは、減算処理部112−3が、2回縮小された画像から拡大処理部113−3より供給された画像を減算する。
ステップS52において、減算処理部112は、ステップS51の処理により求められたレイヤ(N−1)の画像をレイヤ(N−1)画像メモリに格納させ、その処理は、終了する。すなわち、ここでは、減算処理部112−3は、減算処理により得られた画像をレイヤ2画像メモリ83に格納させる
以上の処理により、入力された画像が帯域別に分離され、それぞれレイヤ毎に、レイヤ0画像メモリ82、レイヤ1画像メモリ83、レイヤ2画像メモリ84、およびレイヤ3画像メモリ85に格納されることになる。
次に、図12のフローチャートを参照して、図10のフローチャートにおけるステップS24の処理である画素値修正処理について説明する。
ステップS71において、修正処理部86−1乃至86−3のサンプリング処理部131,132は、それぞれレイヤ0画像メモリ82−1,82−2、レイヤ1画像メモリ83−1,83−2、およびレイヤ2画像メモリ84−1,84−2に、R,Gチャネルの画像が入力されたか否かを判定し、入力されたと判定されるまで、その処理を繰り返す。例えば、入力されたと判定された場合、その処理は、ステップS72に進む。
ステップS72において、サンプリング処理部131,132は、同一の未処理の画素を注目画素として選択する
ステップS73において、サンプリング処理部131は、Gチャネルのレイヤ0画像メモリ82−1、レイヤ1画像メモリ83−1、またはレイヤ2画像メモリ84−1より注目画素位置に対応する所定の位置に配置されている複数の画素をサンプリングし(抽出し)、分散算出処理部133、共分散算出処理部134、および乗算処理部137に供給する。
ステップS74において、サンプリング処理部132は、Rチャネルのレイヤ0画像メモリ82−2、レイヤ1画像メモリ83−2、またはレイヤ2画像メモリ84−2より注目画素位置に対応する所定の位置に配置されている複数の画素をサンプリングし(抽出し)、共分散算出処理部134に供給する。
ステップS75において、分散算出処理部133は、サンプリング処理部131より供給されたGの画素値のサンプルより分散計算処理を実行し分散値を計算し、クリッピング処理部134に供給する。尚、分散計算処理については、図13,図14のフローチャートを参照して、詳細を後述する。
ステップS76において、共分散算出処理部136は、サンプリング処理部131,132より供給されたG,Rの画素値のサンプルより共分散計算処理を実行し共分散値を計算し、除算処理部135に供給する。尚、共分散計算処理については、図15のフローチャートを参照して、詳細を後述する。
ステップS77において、クリッピング処理部134は、分散算出処理部133より供給されてくるGの分散値をクリッピング処理し、除算処理部135に供給する。より詳細には、クリッピング処理部134は、分散算出処理部133より供給されてくるGの分散値と所定の閾値とを比較し、所定の閾値よりも小さい場合、Gの分散値を所定の閾値に置き換えて、除算処理部135に供給し、所定の閾値よりも大きい場合、そのままのGの分散値を除算処理部135に供給する。
ステップS78において、除算処理部135は、クリッピング処理部134より供給されてくる分散値と、共分散算出処理部136より供給されてくる共分散値とに基づいて、(共分散/分散)を算出し、乗算処理部137に供給する。
ステップS79において、乗算処理部137は、(共分散/分散)に注目画素位置のG画素値を乗じることにより、注目画素位置のR画素の画素値を修正する。すなわち、乗算処理部137は、上述した式(4)計算を実行することで、G,Rの相関性を利用してRの画素値を修正する。
ステップS80において、サンプリング処理部131,132は、未処理の画素が存在するか否かを判定し、未処理の画素があると判定された場合、その処理は、ステップS72に戻る。すなわち、未処理の画素がないと判定されるまで、ステップS72乃至S80の処理が繰り返されて、順次Rの画素値が修正される。
ステップS80において、未処理の画素がないと判定された場合、ステップS81において、乗算処理部137は、これまでに計算したRチャネルの画素値が修正された画像を出力する。
以上の処理により、チャネル間の相関性を利用して、ランダムな成分や色収差により生じるクロマ成分のノイズを、画素値を修正することにより除去することが可能となる。
次に、図13のフローチャートを参照して、図18のフローチャートにおけるステップS75の処理である分散計算処理について説明する。
ステップS91において、分散算出処理部133は、演算結果であるとして出力するカウンタVt,wを0に初期化する。
ステップS92において、分散算出処理部133は、局所領域のうちの一部(例えば、注目画素を中心とした、(n−2)×(n−2)の範囲)の画素値のうち、処理を実行する画素位置を示す第1のレジスタの値sを初期化して、s=1とし、ステップS93において、局所領域のうちの一部(例えば、注目画素を中心とした、(n−2)×(n−2)の範囲)の画素値のうち、処理を実行する画素位置を示す第2のレジスタの値tを初期化して、t=1とする。
ステップS94において、分散算出処理部133は、画素(s,t)の強度Xに画素(s,t)の重みwiを乗じた値を2乗して、カウンタVtに加えた値を、カウンタVtとして更新する。すなわち、分散算出処理部133は、Vt=Vt+(|(画素(s,t)の強度X)×(画素(s,t)の重みwi|)2を演算する。
ステップS95において、分散算出処理部133は、画素(s,t)の重みwiを、カウンタwに加えた値を、カウンタwとして更新する。すなわち、分散算出処理部133は、w=w+(画素(s,t)の重みwi)を演算する。
ステップS96において、分散算出処理部133は、処理を実行する画素位置を示す第2のレジスタの値tを参照し、t=n−2であるか否かを判定する。
ステップS96において、t=n−2ではないと判定された場合、ステップS147において、分散算出処理部133は、第2のレジスタの値tを、t=t+1に更新して、処理は、ステップS94に戻り、それ以降の処理が繰り返される。
ステップS96において、t=n−2であると判定された場合、ステップS98において、分散算出処理部133は、処理を実行する画素位置を示す第1のレジスタの値sを参照し、s=n−2であるか否かを判定する。
ステップS98において、s=n−2ではないと判定された場合、ステップS99において、分散算出処理部133は、第1のレジスタの値sを、s=s+1に更新して、処理は、ステップS93に戻り、それ以降の処理が繰り返される。
ステップS98において、s=n−2であると判定された場合、ステップS100において、分散算出処理部133は、局所領域のうちの一部(例えば、注目画素を中心とした、(n−2)×(n−2)の範囲)の画素値の分散値VxxをVt/wとして計算し、処理は、終了する。
分散値の算出は、定義上では、((画素(s,t)の強度X)×(画素(s,t)の重みwi))2を分散値の演算に用いた画素の数で除算する必要があるが、分散値の算出結果は、後述する処理により、共分散値の算出結果の除算に用いられるため、共分散値の算出においても同数で除算される場合は、除算処理を、分散値の演算および共分散値の演算の両方にて省略することが可能である。
なお、分散値の算出において、ここでは重み付けが施されているので、式(6)を用いて説明した分散値の定義に示されるように、((画素(s,t)の強度X)×(画素(s,t)の重みwi))2を重み係数の総和で除算することにより、分散値が算出されている。しかしながら、分散値の算出結果は、後述する処理により、共分散値の算出結果の除算に用いられるため、共分散値の算出においても重み付けが施されているときは、重み係数の総和での除算処理を、分散値の演算および共分散値の演算の両方にて省略することが可能である。
また、図13を用いて説明した分散計算処理においては、2乗の計算があるため、演算処理に時間がかかったり、ハードウェアの規模が大きくなるという問題が発生する。そこで、近似計算により2乗の計算を省略するようにしても良い。
次に、図14のフローチャートを参照して、近似計算により2乗の計算を省略する場合に、図12のフローチャートにおけるステップS75において実行される分散計算処理について説明する。
図14のフローチャートにおけるステップS121乃至ステップS123においては、図13を用いて説明したステップS91乃至ステップS93と同様の処理が実行される。
ステップS124において、分散算出処理部133は、(|2×(画素(s,t)の強度X)×(画素(s,t)の重みwi)|)を、現在のカウンタVtに加えた値として更新する。すなわち、分散算出処理部133は、Vt=Vt+(|2×(画素(s,t)の強度X)×(画素(s,t)の重みwi)|)を演算する。
値|p|が正規化され、0≦|P|<1が成り立っているとき、p2は|p|×2で近似することが可能である。
そして、ステップS125乃至ステップS130においては、図13を用いて説明したステップS95乃至ステップS100と同様の処理が実行され、処理は、終了する。
このように、分散値の演算に必要な2乗の計算を省略した近似演算により、分散値の近似値を求めることが可能となる。
次に、図15のフローチャートを参照して、図12のステップS76において実行される、共分散計算処理について説明する。
ステップS151において、共分散算出処理部136は、出力される値であるカウンタVtt,w(ここでは、第1の信号は、全てG強度であり、第2の信号がR強度であるものとする)を0に初期化する。
ステップS152において、共分散算出処理部136は、局所領域のうちの一部(例えば、注目画素を中心とした、(n−2)×(n−2)の範囲)の画素値のうち、処理を実行する画素位置を示す第1のレジスタの値sを初期化して、s=1とする
ステップS153において、共分散算出処理部136は、局所領域のうちの一部(例えば、注目画素を中心とした、(n−2)×(n−2)の範囲)の画素値のうち、処理を実行する画素位置を示す第2のレジスタの値tを初期化して、t=1とする
ステップS154において、図16または図17を用いて後述する積和処理が実行される。
ステップS155において、共分散算出処理部136は、画素(s,t)の重みwiを、カウンタwに加えた値を、カウンタwとして更新する。すなわち、共分散算出処理部136は、w=w+(画素(s,t)の重みwi)を演算する。
ステップS156において、共分散算出処理部136は、処理を実行する画素位置を示す第2のレジスタの値tを参照し、t=n−2であるか否かを判定する。
ステップS156において、t=n−2ではないと判定された場合、ステップS157において、共分散算出処理部136は、第2のレジスタの値tを、t=t+1に更新して、処理は、ステップS154に戻り、それ以降の処理が繰り返される。
ステップS156において、t=n−2であると判定された場合、ステップS158において、共分散算出処理部136は、処理を実行する画素位置を示す第1のレジスタの値sを参照し、s=n−2であるか否かを判定する。
ステップS158において、s=n−2ではないと判定された場合、ステップS159において、共分散算出処理部136は、第1のレジスタの値sを、s=s+1に更新して、処理は、ステップS153に戻る。
ステップS158において、s=n−2であると判定された場合、ステップS159において、共分散算出処理部136は、共分散値VxyをVtt/wとして計算し、処理は、終了する。
共分散値の算出は、(画素(s,t)の強度X)×(画素(s,t)の強度Y)×(画素(s,t)の重みwi)を、共分散値の演算に用いた画素の数で除算する必要があるが、共分散値の算出結果は、後述する処理により、分散値の算出結果で除算されるため、分散値の算出においても同数で除算される場合は、除算処理を、分散値の演算および共分散値の演算の両方にて省略することが可能である。
なお、式(5)においては、共分散値の算出において、(画素(s,t)の強度X)×(画素(s,t)の強度Y)×(画素(s,t)の重みwi)の総和が、重み係数の総和wで除算することにより、共分散値が算出されている。しかしながら、共分散値の算出結果は、後述する処理により、分散値の算出結果で除算されるため、分散値の算出においても重み付けが施されているときは、重み係数の総和での除算処理を、分散値の演算および共分散値の演算の両方にて省略することが可能である。
上述した図15の共分散計算処理のステップS154において実行される積和処理には、共分散値が算出される場合に実行される積和処理と、近似演算を用いて共分散値が算出される場合に実行される積和処理との、2種類の処理がある。
次に、図16のフローチャートを参照して、図15のステップS154において実行される共分散値が算出される場合に実行される積和処理について説明する。
ステップS181において、共分散算出処理部136は、(第1の信号の画素(s,t)の強度X)、(第2の信号の画素(s,t)の強度Y)、および(画素(s,t)の重みwi)を乗算する。
ステップS182において、共分散算出処理部136は、Vtt=Vtt+(乗算結果)とする。
このような積和処理が実行されることにより、共分散値が算出される。図16のフローチャートを参照して説明した積和処理が実行された場合、定義どおりの演算であるので、その演算結果は、非常に精度の高いものであるが、そのかわり、積和処理が多いため演算に時間がかかったり、ハードウェア実装におけるゲート数の増加を招いてしまう。
次に、図17のフローチャートを参照して、図12のステップS76において実行される積和処理について説明する。図17のフローチャートを参照して説明する積和処理は、近似された共分散値が算出される場合に実行される処理である。
ステップS201において、共分散算出処理部136は、{第1の信号の画素(s,t)の強度X}をpとする。
ステップS202において、共分散算出処理部136は、{第2の信号の画素(s,t)の強度Y}をqとする。
ステップS203において、図18を用いて後述する乗算近似処理が実行される。
ステップS204において、共分散算出処理部136は、Vtt=Vtt+(pqの近似値)×(画素(s,t)の重みwi)とし、処理は、終了する。
次に、図18のフローチャートを参照して、図17のステップS203において実行される乗算近似処理について説明する。乗算近似処理は、上述した式(7)を用いて、近似された共分散値が算出される場合に実行される処理である。
ステップS221において、共分散算出処理部136は、図17のステップS201およびステップS202において置き換えられた値pおよびqを用いて、|p|≧|q|であるか否かを判定する。
ステップS221において、|p|≧|q|であると判定された場合、ステップS262において、共分散算出処理部136は、p≧0であるか否かを判定する。
ステップS222において、p≧0であると判定された場合、ステップS223において、共分散算出処理部136は、pqの近似値=+2qとし、処理は、図17のステップS204に戻る。
ステップS222において、p≧0ではないと判定された場合、ステップS224において、共分散算出処理部136は、pqの近似値=−2qとし、処理は、図17のステップS204に戻る。
ステップS221において、|p|≧|q|ではないと判定された場合、ステップS225において、共分散算出処理部136は、q≧0であるか否かを判定する。
ステップS225において、q≧0であると判定された場合、ステップS226において、共分散算出処理部136は、pqの近似値=+2pとし、処理は、図17のステップS204に戻る。
ステップS225において、q≧0ではないと判定された場合、ステップS227において、共分散算出処理部136は、pqの近似値=−2pとし、処理は、図17のステップS204に戻る。
この処理において、qまたはpが0である場合、pqの近似値は必ず0となる。具体的には、qが0であるとき、|p|≧|q|は必ず成り立つので、pの値に関わらず、pqの近似値は0となる。また、pが0であるとき、|p|≧|q|は必ず成り立たないので、qの値に関わらず、pqの近似値は0となる。
図17,図18を用いて説明した積和処理が実行されることにより、上述した式(7)を用いて、共分散値を近似することが可能である。このようにした場合、式(5)に示される定義どおりの共分散値の演算が実行された場合と比較して、計算速度が高速化されたり、計算のために実装されるハードウェアのゲート数を少なくすることができるなどの利点が発生する。
次に、図19のフローチャートを参照して、図10のフローチャートにおけるステップS25の処理である多重解像度逆変換処理について説明する。
ステップS271において、多重解像度逆変換処理部90は、図示せぬカウンタNをNmax−1に設定する。このカウンタは、複数の多重解像度画像の数により設定されるものであり、図7の多重解像度逆変換処理部90においては、レイヤ0乃至3であるので、Nmaxは、4となる。
ステップS272において、拡大処理部151は、最低レイヤの画像を拡大する。すなわち、図7の場合、拡大処理部151−1が、最低レイヤであるレイヤ3画像メモリ85に格納されている画像を拡大し、加算処理部152−1に供給する。
ステップS273において、多重解像度逆変換処理部90は、カウンタNを1デクリメントする。
ステップS274において、多重解像度逆変換処理部90は、カウンタNが0であるか否かを判定する。例えば、カウンタNが0ではない場合、ステップS275において、加算処理部152は、拡大処理部151により拡大された画像に、レイヤN修正画像を加算し、1レイヤ上の拡大処理部151に出力する。すなわち、最初の処理では、加算処理部152−1が、拡大処理部151−1より供給された画像に、レイヤ2修正画像メモリ89に格納されているレイヤ2修正画像を加算し、拡大処理部151−2に供給する。
ステップS275において、拡大処理部151は、加算処理部152より供給されたレイヤN修正画像が加算された画像を拡大し、1レイヤ上の加算処理部152に供給し、ステップS274の処理に戻る。すなわち、最初の処理の場合、拡大処理部151−2が、加算処理部152−1より供給された画像を拡大し、加算処理部152−2に供給する。
すなわち、ステップS274において、カウンタNが0であると判定されるまで、ステップS273乃至S276の処理が繰り返される。図7の場合、さらに、加算処理部152−2が、拡大処理部151−2より供給された画像に、レイヤ1修正画像メモリ88に格納されているレイヤ1修正画像を加算し、拡大処理部151−3に供給する。
さらに、拡大処理部151−3は、加算処理部152−2より供給された画像を拡大し、加算処理部152−3に供給する。この処理の後、カウンタNは0となるため、ステップS274において、カウンタNは0であると判定され、ステップS277において、加算処理部152は、レイヤN、すなわち、レイヤ0修正画像をレイヤ修正画像メモリ87より読み出し、拡大処理部151により拡大された画像を加算する。すなわち、ここでは、加算処理部152−3が、最上位レイヤであるレイヤ0修正画像を拡大処理部151−3により拡大された画像に加算し、ステップS278において、出力する。
以上の処理により、レイヤ0修正画像、レイヤ1修正画像、レイヤ2修正画像、およびレイヤ3画像を多重化解像度画像逆変換することで、元の解像度の画像に統合することが可能となる。
以上によれば、チャネル間の相関を利用して、基準となるチャネル(例えばG)信号との相関がなるべく高くなるように、他のチャネル信号の画素値を修正する(推定する)ことで、チャネル間の無相関な成分を低減させることが可能となる。このため、チャネル間の無相関な成分であるクロマ成分に混在するノイズを除去することが可能となり、結果として、クロマ成分のノイズを低減した画像信号を生成することが可能となる。
以上においては、Rの分散値とG,Rの共分散値とを用いて画素値を推定していた。ところが、クロマ成分のノイズはランダムな成分と色収差の2種類であるが、どちらもその混在によってチャネル間相関を弱くしてしまうという性質がある。そこで、チャネル間相関が十分に強ければ、上述の線形回帰計算により画素値を修正するが、チャネル間相関が十分に強くないときには、一方のチャネルの信号を遮断し、他方のチャネル信号で置き換えるようにしてもよい。
図20は、チャネル間相関が十分に強ければ、上述の線形回帰計算により画素値を修正するが、チャネル間相関が十分に強くないときには、一方のチャネルの信号を遮断し、他方のチャネル信号で置き換えるようにした修正処理部86の機能の一実施の形態の構成を示している。
図20において、サンプリング処理部201−1,201−2、分散算出処理部202−1、共分散算出処理部203、クリッピング処理部204、除算処理部205、および乗算処理部206は、図6におけるサンプリング処理部131,132、分散算出処理部133、共分散算出処理部136、クリッピング処理部134、除算処理部135、および乗算処理部137と同様の処理を実行するものであるので、その説明は省略する。
図20の修正処理部86において、図6の修正処理部86と異なるのは、新たに分散算出処理部202−2、相関係数算出処理部207、およびスイッチ208が設けられている点である。また、分散算出処理部202−1は、計算した分散値を新たに相関係数算出処理部207に供給し、共分散算出処理部203は、計算した共分散値を新たに相関係数算出処理部207に供給している。さらに、乗算処理部206は、乗算結果をスイッチ208に供給している。
分散算出処理部202−2は、注目画素に対応する所定の位置の近傍のRチャネル画素のサンプルからRチャネルの分散値を算出し、相関係数算出処理部207に供給する。
相関係数算出処理部207は、分散算出処理部202−1が算出したGの分散値、分散算出処理部202−2が算出したRの分散値、および、共分散算出算出処理部203が算出したRとGの共分散値からRとGの相関係数(=(共分散値)/(√(Gの分散値)×√(Rの分散値)))を算出し、スイッチ208に供給する。
スイッチ208は、相関係数算出処理部207より供給されたRとGの相関係数と、所定の閾値とを比較し、相関係数が所定の閾値より大きい場合、乗算処理部206で修正された注目画素のRチャネル画素値を出力させ、相関係数が所定の閾値より小さい場合、乗算処理部206により修正したR画素値を遮断し、注目画素のGチャネル画素値をそのまま出力させる。
次に、図21のフローチャートを参照して、図20の修正処理部86による画素値修正処理について説明する。尚、図21のフローチャートにおけるステップS291乃至S299、およびステップS305,S306の処理は、図12のフローチャートを参照して説明したステップS71乃至S79およびステップS80,S81の処理と同様であるので、その説明は省略する。
ステップS300において、分散算出処理部202−2は、サンプリング処理部201−2より供給されたRの画素値のサンプルより分散計算処理を実行し分散値を計算し、相関係数算出処理部207に供給する。
ステップS301において、相関係数算出処理部207は、分散算出処理部202−1,202−2よりそれぞれ供給されたG,Rの分散値、および共分散算出処理部203より供給されたG,Rの共分散値に基づいて、相関係数(=(G-R共分散値)/(√(Gの分散値)×√(Rの分散値)))を算出し、スイッチ208に供給する。
ステップS302において、スイッチ208は、相関係数が所定の閾値よりも大きいか否かを判定し、例えば、大きいと判定した場合、ステップS303において、乗算処理部206より供給されたG,Rの相関に基づいて、修正されたRの画素値(=(共分散)/(分散)×(注目画素のGの輝度値)を選択し、その処理は、ステップS305に進む。
一方、ステップS302において、相関係数が所定の閾値よりも小さいと判定した場合、ステップS304において、スイッチ208は、サンプリング処理部201−1より供給されてきたGの輝度値を選択し、その処理は、ステップS305に進む。
以上の処理により、チャネル間の相関が弱いときはクロマ成分に混在するノイズが大きいと判定し、ノイズが大きいサンプルから線形回帰をおこなうよりもGチャネルを出力する。結果として、チャネル間の相関に応じて、クロマ成分のノイズを積極的に低減させることが可能となる。
以上においては、チャネル間の相関の強弱を相関係数を用いて判定する例について説明してきたが、これ以外の方法で、チャネル間の相関の強弱を判定してもよく、例えば、2つの分散値の差分絶対値と所定の閾値との比較により、チャネル間の相関の強弱を判定するようにしてもよい。
図22は、チャネル間の相関の強弱を2つの分散値の差分絶対値により判定するようにした修正処理部86の機能の一実施の形態の構成を示している。
尚、図22の修正処理部86の構成におけるサンプリング処理部221−,221−2、分散算出処理部222−1,222−2、共分散算出処理部223、マッピング処理部224、除算処理部225、および乗算処理部226については、図20の修正処理部86におけるサンプリング処理部201−,201−2、分散算出処理部202−1,202−2、共分散算出処理部203、マッピング処理部204、除算処理部205、および乗算処理部206と同様であるので、その説明は省略する。
図22の修正処理部86において、図20の修正処理部86の構成と異なるのは、相関係数算出処理部207およびスイッチ208に代えて、差分算出処理部227およびスイッチ228が設けられている点である。差分算出処理部227は、G,Rチャネルのそれぞれの分散値の差分絶対値を求め、スイッチ228に供給する。スイッチ228は、差分絶対値と所定の閾値とを比較し、比較結果に応じて相関の強弱を判定し、相関が弱ければ、サンプリング処理部221−1より供給された信号を選択し、相関が強ければ、乗算処理部226より供給された信号を選択する。
次に、図23のフローチャートを参照して、図22の修正処理部86による画素値修正処理について説明する。尚、図22のフローチャートにおけるステップS321乃至S330、およびステップS333乃至S336の処理は、図21のフローチャートを参照して説明したステップS291乃至S300およびステップS303乃至S306の処理と同様であるので、その説明は省略する。
ステップS331において、差分算出処理部227は、分散算出処理部222−1,222−2よりそれぞれ供給されたG,Rの分散値に基づいて、差分絶対値(=|(Gの分散値)−(Rの分散値)|)を算出し、スイッチ208に供給する。
ステップS332において、スイッチ228は、差分絶対値が所定の閾値よりも大きいか否かを判定し、例えば、大きいと判定した場合、ステップS333において、乗算処理部206より供給されたG,Rの相関に基づいて、修正されたRの画素値(=(共分散)/(分散)×(注目画素のGの輝度値)を選択し、その処理は、ステップS335に進む。
一方、ステップS332において、相関係数が所定の閾値よりも小さいと判定した場合、ステップS334において、スイッチ228は、サンプリング処理部221−1より供給されてきたGの輝度値を選択し、その処理は、ステップS335に進む。
以上の処理により、分散値の差分絶対値からみたチャネル間の相関が弱いときはクロマ成分に混在するノイズが大きいと判定し、ノイズが大きいサンプルから線形回帰をおこなうよりもGチャネルを出力する。結果として、チャネル間の相関に応じて、クロマ成分のノイズを積極的に低減させることが可能となる。被写体輪郭領域において色収差に起因するエッジの色ずれがある場合、その色ずれがチャネル間の分散値の差として検出されやすい。結果として、以上のような処理により、このような色収差起因のエッジの色ずれに起因するノイズを有効に除去することが可能となる。また、相関係数を演算する際に必要となる乗算処理が不要となるため、コンピュータによる演算の負荷を低減させることが可能となる。
以上においては、GとR、またはGとBというような2チャネル間の相関に基づいて、修正した画素値か、または、Gの画素値かのいずれかを選択させる処理について説明してきたが、3チャネル以上のチャネル間相関を同時に評価することにより、よりクロマ成分のノイズ除去の効果を高めるようにしてもよい。
図24は、3チャネルのチャネル間相関を同時に評価して、クロマ成分のノイズを除去するようにしたノイズ除去処理部43の機能の一実施の形態の構成を示す図である。尚、図24のノイズ除去処理部43における多重解像度変換処理部251−1乃至251−3、レイヤ0画像メモリ252−1乃至252−3、レイヤ1画像メモリ253−1乃至253−3、レイヤ2画像メモリ254−1乃至254−3、レイヤ3画像メモリ255−1乃至255−3、レイヤ0修正画像メモリ257−1,257−2、レイヤ1修正画像メモリ258−1,258−2、レイヤ2修正画像メモリ259−1,259−2、および多重解像度逆変換処理部260−1,260−2は、図4の多重解像度変換処理部81−1,81−2、レイヤ0画像メモリ82−1,82−2、レイヤ1画像メモリ83−1,83−2、レイヤ2画像メモリ84−1,84−2、レイヤ3画像メモリ85−1,85−2、レイヤ0修正画像メモリ87、レイヤ1修正画像メモリ88、レイヤ2修正画像メモリ89、および多重解像度逆変換処理部90と同様のものなので、その説明は省略する。ただし、多重解像度逆変換処理部260−1,260−2は、それぞれ修正されたR,Bの画素値を出力する。また、3チャネルよりも多い多チャネルのカメラシステムである場合でも、図24に示す構成にRまたはBチャネルの信号に該当する部分をそのまま追加したような構成とすることにより対応可能であるので、ここでは3チャネル構成の場合について説明する。
図24のノイズ除去処理部43において、新たな構成は、修正処理部256−1乃至256−3が設けられている点である。修正処理部256−1乃至256−3は、それぞれRGBの3チャネルの相関に基づいて、R,Bの画像信号におけるクロマ成分のノイズを除去するようにR,Bの画素値を修正し、それぞれレイヤ0修正画像メモリ257−1,257−2、レイヤ1修正画像メモリ258−1,258−2、およびレイヤ2修正画像メモリ259−1,259−2に格納する。
次に、図25を参照して、修正処理部256の機能の一実施の形態の構成について説明する。
サンプリング処理部281−1乃至281−3は、該当するレイヤのそれぞれGRBチャネル画像から、注目画素位置に対応して設定される所定位置の近傍画素から複数個のGRBチャネル画素値をサンプリング(抽出)し、分散共分散相関係数算出処理部282に供給する。
分散共分散相関係数算出処理部282は、サンプリングされたGRBの画素値に基づいて、GRBの注目画素周辺の分散値を求め、Gの分散値をクリッピング処理部283に供給する。また、分散共分散相関係数算出処理部282は、サンプリングされたGRB画素値に基づいて、G-RおよびG-Bの注目画素周辺の共分散値を求め、それぞれ除算処理部284−1,284−2に供給する。さらに、分散共分散相関係数算出処理部282は、GRBの分散値、G-RおよびG-Bの注目画素周辺の共分散値、並びに、G-RおよびG-Bの相関係数を判定処理部286に供給する。
クリッピング処理部283は、Gチャネルのサンプルの分散値が所定の閾値より小さい場合、その閾値でクリッピングし、除算処理部284−1,284−2に供給する。除算処理部284−1,284−2は、それぞれクリッピング処理部283より供給される分散値により、分散共分散相関係数算出処理部282より供給されるG-RおよびG-B共分散値を除算し、分散値に対する共分散値の割合(共分散値/分散値)としてそれぞれ乗算処理部285−1,285−2に供給する。乗算処理部285−1,285−2は、(共分散値/分散値)に注目画素位置のGチャネル輝度値を乗じることで注目画素のノイズ除去されたRおよびBチャネル輝度値を修正し、それぞれスイッチ287,288に供給する。
判定処理部286は、分散共分散相関係数算出処理部282により算出されたGRBチャネルのGRBの分散値、G-RおよびG-Bの注目画素周辺の共分散値、並びに、G-RおよびG-Bの相関係数に基づいて、乗算処理部281−1,285−2が算出した注目画素のRチャネル画素の修正値およびBチャネル画素の修正値が利用できるか否かを判定し、判定結果をスイッチ287,288に供給する。
スイッチ287,288は、RBチャネルのそれぞれに対応し、判定処理部286より供給される判定結果に基づいて、乗算処理部285−1,285−2により算出された注目画素のRチャネル画素の修正値およびBチャネル画素の修正値を選択させるか、または、注目画素のGチャネルの画素値のいずれかを選択する。
次に、図26のフローチャートを参照して、図24のノイズ除去処理部43によるノイズ除去処理について説明する。
ステップS351において、多重解像度変換処理部251−1乃至251−3は、それぞれ非線形変換処理部42により生成された非線形変換処理されたGRBチャネル分の画像が入力されたか否かを判定し、入力されたと判定されるまで、その処理を繰り返し、入力されたと判定された場合、その処理は、ステップS352に進む。
ステップS352乃至S354において、多重解像度変換処理部251−1乃至251−3は、それぞれ多重解像度変換処理を実行し、入力されたGRBの画像をそれぞれ複数の多重解像度画像を生成し、生成した画像をレイヤ毎にそれぞれレイヤ0画像メモリ252−1乃至252−3、レイヤ1画像メモリ253−1乃至253−3、レイヤ2画像メモリ254−1乃至254−3、およびレイヤ3画像メモリ255−1乃至255−3に格納する。尚、GRBそれぞれの多重解像度変換処理は、図11のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
ステップS355において、修正処理部256−1乃至256−3は、それぞれレイヤ0乃至2のそれぞれのGRBの信号を用いて、画素値修正処理を実行し、R,Bの画素値を修正し、それぞれレイヤ0修正画像メモリ257−1,257−2、レイヤ1修正画像メモリ258−1,258−2、およびレイヤ2修正画像メモリ259−1,259−2に格納する。尚、画素値修正処理については、図27のフローチャートを参照して、詳細を後述する。
ステップS356,S357において、多重解像度逆変換処理部260−1,260−2は、それぞれ多重解像度逆変換処理を実行し、レイヤ0修正画像メモリ257−1,257−2、レイヤ1修正画像メモリ258−1,258−2、およびレイヤ2修正画像メモリ259−1,259−2に格納されている、R,Bの画素値が修正されたレイヤ0乃至2の画像、および、レイヤ3画像メモリ255−2,255−3に格納されているR,Bの画像を、ステップS353,S354の処理による多重解像度変換の逆変換を実行することで、R,Bの複数の多重解像度画像を統合し、ステップS358において、統合されたR,Bの画像を出力する。尚、多重解像度逆変換処理については、図20のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
次に、図27のフローチャートを参照して、図25の修正処理部256による画素値修正処理について説明する。
ステップS381において、修正処理部256−1乃至256−3のサンプリング処理部281−1乃至281−3は、それぞれレイヤ0画像メモリ252−1乃至252−3、レイヤ1画像メモリ253−1乃至253−3、およびレイヤ2画像メモリ254−1乃至254−3に、RGBチャネルの画像が入力されたか否かを判定し、入力されたと判定されるまで、その処理を繰り返す。例えば、入力されたと判定された場合、その処理は、ステップS382に進む。
ステップS382において、サンプリング処理部281−1乃至281−3は、同一の未処理の画素を注目画素として選択する
ステップS383乃至S385において、サンプリング処理部281−1乃至281−3は、それぞれGBRチャネルのレイヤ0画像メモリ252−1乃至252−3、レイヤ1画像メモリ253−1乃至253−3、またはレイヤ2画像メモリ254−1乃至254−3より注目画素位置に対応する所定の位置に配置されている複数の画素をサンプリングし(抽出し)、分散共分散相関係数算出処理部282に供給する。
ステップS386において、分散共分散相関係数算出処理部282は、サンプリング処理部281−1乃至281−3より供給されたGRBの画素値のサンプルより分散計算処理を実行し、RGBの分散値を計算し、Gの分散値をクリッピング処理部283に供給すると共に、GRBの分散値を判定処理部286に供給する。尚、分散計算処理については、図13,図14のフローチャートを参照して説明した処理であるので、その説明は、省略する。
ステップS387において、分散共分散相関係数算出処理部282は、サンプリング処理部281−1乃至281−3より供給されたGRBの画素値のサンプルより共分散計算処理を実行し、G-R、G-BおよびB-Rの共分散値を計算し、それぞれ除算処理部284−1,284−2および判定処理部286に供給する。尚、共分散計算処理については、図15のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
ステップS388において、分散共分散相関係数算出処理部282は、相関係数計算処理を実行し、GRBの画素値のサンプルより計算された分散値と共分散値とに基づいて、G-R、G-B、B-Rの相関係数を計算し、判定処理部286に供給する。尚、相関係数計算処理については、図21のフローチャートにおけるステップS301の処理と同様であるので、その説明は省略する。
ステップS389において、クリッピング処理部283は、分散共分散相関係数算出処理部282より供給されてくるGの分散値をクリッピング処理し、除算処理部284−1,284−2に供給する。
ステップS390,S391において、除算処理部284−1,284−2は、それぞれクリッピング処理部283より供給されてくる分散値と、分散共分散相関係数算出処理部282より供給されてくるG-RおよびG-Bの共分散値とに基づいて、それぞれR,Bに対しての(共分散/分散)を算出し、それぞれ乗算処理部285−1,285−2に供給する。
ステップS392,S393において、乗算処理部285−1,285−2は、それぞれR,Bの(共分散/分散)に注目画素位置のG画素値を乗じることにより、注目画素位置のR,B画素の画素値を修正する。
ステップS394において、判定処理部286は、分散共分散相関係数算出処理部282より供給されたGRBの分散値、G-RおよびG-Bの共分散値、並びにG-R、G-B、およびR-Bの相関係数に基づいて、以下の式(9)で示される判定式の値を算出し、スイッチ287,288にそれぞれ供給する。
ここで、switchは、判定結果であり、条件を満たす場合、passingとなり乗算処理部285−1,285−2より供給された修正された画素値が選択され、条件を満たさない場合、blockingとなり入力されたGの画素値がそのまま使用される。また、VGG,VRR,VBBはそれぞれRGBの分散値であり、CovRG,CovGB,CovBRはそれぞれR-G,G-B,B-Rの相関係数であり、THはそれぞれの所定の閾値である。
ステップS395において、スイッチ287,288は、判定結果がpassingであるか否かを判定し、例えば、passingであると判定した場合、ステップS396,S397において、それぞれ乗算処理部285−1,285−2より供給されたG-RおよびG-Bの相関に基づいて修正されたR,Bの画素値を選択し、その処理は、ステップS400に進む。
一方、ステップS395において、passingではないと判定された場合、ステップS398,S399において、スイッチ287,288は、サンプリング処理部281−1より供給されてきたGの輝度値を選択し、その処理は、ステップS400に進む。
ステップS400において、サンプリング処理部281−1乃至281−3は、未処理の画素が存在するか否かを判定し、未処理の画素があると判定された場合、その処理は、ステップS381に戻る。すなわち、未処理の画素がないと判定されるまで、ステップS381乃至S400の処理が繰り返されて、順次R,Bの画素値が修正される。
ステップS400において、未処理の画素がないと判定された場合、ステップS401において、スイッチ287,288は、それぞれ、これまでに計算したR,Bチャネルの画素値を修正した画像を出力する。
以上の処理により、チャネル間の相関性を利用して、ランダムな成分や色収差により生じるクロマ成分のノイズを、画素値を修正することにより除去することが可能となる。また、このように、3チャネルを信号を扱う構成の修正手段においては、ノイズ除去したい各チャネル(R,B)と基準となるチャネル(G)の間の関係だけでなく、ノイズ除去したいチャネル間の関係も合わせて判定をおこなうのでより特徴的なノイズ成分への対応が可能となる。特に、上述した式(9)の判定式により、例えば、高コントラストエッジ付近に現れる色収差の一種である色フレア現象はエッジの青乃至紫色の着色(パープルフリンジ)として見えることが多いが、このように特定の色相で目立つ場合を判別してそれを選択的に除去するようにすることが可能となる。
判定式の条件を変えることで、その他の現象により発生するノイズを除去することも可能である。
以上によれば、固体撮像素子などのイメージセンサを用いて得られた画像信号のクロマ成分に混在するノイズ成分を効率よく除去し、色ムラや色ズレという現象をなくすことが可能になる。
また、以上によれば、基準となるチャネル(例えばG)信号に対して他のチャネル信号の相関がなるべく高くなるように推定(修正)する処理により、チャネル間の無相関な成分を低減することが可能となり、クロマ成分に混在するノイズを低減させるようにすることが可能となる。
さらに、チャネル間相関が十分に強くないと判定された場合に、片方のチャネルの信号を遮断しもう一方のチャネル信号で置き換えるようにすることで、チャネル間相関が十分に高い場合にだけ、チャネル間相関を利用した画素値修正方法を使用することにより、効果的にノイズを除去することが可能となる。
また、GとR、またはGとBというような2チャネル間の相関に基づく処理だけでなく、3チャネル以上のチャネル間相関を同時に評価することにより、よりクロマ成分のノイズを、さらに効果的に除去することが可能となる。
さらに、多重解像度処理により入力画像を複数の帯域に分離した後に、チャネル間相関に基づいたノイズ除去処理を実行することにより、多重解像度処理によって、従来では除去しきれなかった低周波成分のノイズ成分を効果的に除去することが可能となる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
図28は、図2のDSPブロック16の電気的な内部構成をソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU401は、パーソナルコンピュータの全体の動作を制御する。また、CPU401は、バス404および入出力インタフェース405を介してユーザからキーボードやマウスなどからなる入力部406から指令が入力されると、それに対応してROM(Read Only Memory)402に格納されているプログラムを実行する。あるいはまた、CPU401は、ドライブ410に接続された磁気ディスク421、光ディスク422、光磁気ディスク423、または半導体メモリ424から読み出され、記憶部408にインストールされたプログラムを、RAM(Random Access Memory)403にロードして実行する。これにより、上述した図2のDSPブロック16の機能が、ソフトウェアにより実現されている。さらに、CPU401は、通信部409を制御して、外部と通信し、データの授受を実行する。
プログラムが記録されている記録媒体は、図26に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク421(フレキシブルディスクを含む)、光ディスク422(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク423(MD(Mini-Disc)を含む)、もしくは半導体メモリ424などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM402や、記憶部408に含まれるハードディスクなどで構成される。
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
11 レンズ, 12 絞り, 13 イメージセンサ, 14 相関2重サンプリング回路, 15 A/Dコンバータ, 16 DSPブロック, 17 タイミングジェネレータ, 18 D/Aコンバータ, 19 ビデオエンコーダ, 20 表示部, 21 コーデック処理部, 22 メモリ, 23 CPU, 24 操作入力部, 25 バス, 41 デモザイク処理部, 42 非線形変換処理部, 43 ノイズ除去処理部, 44 非線形逆変換処理部, 45 ホワイトバランス処理部, 46 ガンマ補正処理部, 47 YC変換処理部, 61 マッピング処理部, 62 変換曲線LUT, 81,81−1,81−2 多重解像度変換処理部, 82 レイヤ0画像メモリ, 83 レイヤ1画像メモリ, 84 レイヤ2画像メモリ, 85 レイヤ3画像メモリ,86,86−1乃至86−3 修正処理部, 87 レイヤ0ノイズ除去画像, 88 レイヤ1ノイズ除去画像, 89 レイヤ2ノイズ除去画像, 90 多重解像度逆変換処理部, 111,111−1乃至111−3 縮小処理部, 112,112−1乃至112−3 減算処理部, 113,113−1乃至113−3, 拡大処理部, 131,132 サンプリング処理部, 133 分散算出処理部, 134 クリッピング処理部, 135 除算処理部, 136 共分散算出処理部, 137 乗算処理部, 151,151−1乃至151−3 拡大処理部, 152,152−1乃至152−3 加算処理部, 171 逆マッピング処理部, 172 変換曲線LUT, 201,201−1,201−2 サンプリング処理部, 202,202−1,202−2 分散算出処理部, 203 共分散算出処理部, 204 クリッピング処理部, 205 除算処理部, 206 乗算処理部, 207 相関係数算出処理部, 208 スイッチ, 221,221−1,221−2 サンプリング処理部, 222,222−1,222−2 分散算出処理部, 223 共分散算出処理部, 224 クリッピング処理部, 225 除算処理部, 226 乗算処理部, 227 差分算出処理部, 228 スイッチ, 251,251−1,251−2 多重解像度変換処理部, 252,252−1乃至252−3 レイヤ0画像メモリ, 253,253−1乃至253−3 レイヤ1画像メモリ, 254,254−1乃至254−3 レイヤ2画像メモリ, 255,255−1乃至255−3 レイヤ3画像メモリ,256,256−1乃至256−3 修正処理部, 257,257−1,257−2 レイヤ0ノイズ除去画像, 258,258−1,258−2 レイヤ1ノイズ除去画像, 259,259−1,259−2 レイヤ2ノイズ除去画像, 260,260−1,260−2 多重解像度逆変換処理部, 281,281−1乃至281−3 サンプリング処理部, 282 分散共分散相関係数算出処理部, 283 クリッピング処理部, 284,284−1,284−2 除算処理部, 285,285−1,285−2 乗算処理部, 286 判定処理部, 287,288 スイッチ