以下、図を参照して、本発明の実施の形態について説明する。
図3は、本発明を適応した線形回帰演算装置101の構成を示すブロック図である。線形回帰演算装置101は、信号1および信号2の2つのデータ系列の入力を受け、この2つのデータ系列を、説明変数と目的変数とし、その分布を代表する直線である回帰直線を求めて、目的変数の推定値を求める演算処理を実行することができる装置であり、平均値算出部111、平均値算出部112、共分散近似計算部113、分散近似計算部114、および、推定値演算部115により構成され、推定値演算部115は、減算部121、除算部122、乗算部123、加算部124から構成されている。
第1の信号(説明変数)である信号1は、平均値算出部112、共分散近似計算部113、および、分散近似計算部114に供給される。そして、第2の信号(目的変数)である信号2は、平均値算出部111および共分散近似計算部113に供給される。平均値算出部111は、第2の信号(信号2)を構成するn個のデータyi(i=1乃至n)の平均値を求め、平均値Myを、共分散近似計算部113および推定値演算部115の加算部124に出力する。平均値算出部112は、第1の信号(信号1)を構成するn個のデータxi(i=1乃至n)の平均値を求め、平均値Mxを、共分散近似計算部113、分散近似計算部114、および、推定値演算部115の減算部121に出力する。
共分散近似計算部113は、第1の信号xiおよび第2の信号yi、並びに、平均値算出部112により算出された第1の信号の平均値Mxおよび平均値算出部111により算出された第2の信号の平均値Myを基に、第1の信号xiおよび第2の信号yiの共分散の近似演算を行う。分散近似計算部114は、第1の信号xiおよび平均値算出部112により算出された第1の信号の平均値Mxを基に、第1の信号xiの分散の近似演算を行う。
回帰直線は、y=b(x−Mx)+Myで示され、共分散値をVxy、分散値をVxxとすると、回帰係数bは、b=Vxy/Vxxとなる。すなわち、推定値演算部115においては、減算部121が(x−Mx)を求め、除算部122が、共分散値Vxyの近似値および分散値Vxyの近似値を用いて回帰係数bの近似値を算出する。そして、乗算部123が減算部121の演算結果と除算部122の演算結果を乗算してb(x−Mx)の近似値が算出され、加算部124によってMyが加算されて、信号2に対応する推定値(上述した式(5)のy)が求められる。
従来の方法により回帰係数を算出する場合、すなわち、上述した式(3)を演算する場合に問題となるのは、乗算の回数がデータの個数nに比例して増大する点である。そこで、この乗算を簡単な演算で近似することを考える。簡単のためデータxiおよびデータyiが、区間[0,1]に正規化されているとすると、0≦Mx,My≦1が成立するとともに、−1<xi−Mx,yi−My<1が成立する。そこで、−1<p,q<1となる2変数p=xi−Mxおよびq=yi−Myの乗算pqを考えると、pqは、上述したように、図2に示される値域をとる。このp、qの符号と絶対値に基づいて、近似した値を得る方法として、条件演算、絶対値演算、および、加減算のみの演算で実現可能な3つの近似方法について説明する。
まず、第1の近似方法は、
|p|≧|q|かつp≧0のとき、pqをqで近似し、
|p|≧|q|かつp<0のとき、pqを−qで近似し、
|p|<|q|かつq≧0のとき、pqをpで近似し、
|p|<|q|かつq<0のとき、pqを−pで近似する
方法である。
そして、第2の近似方法は、
pおよびqがいずれも正の値のとき、または、pおよびqがいずれも負の値のとき、
pqを、(|p|+|q|)/2で近似し、
pまたはqのうちのいずれかが0のとき、pqを0とし
それ以外(pまたはqのいずれか一方が正で、他方が負の値)のとき、pqを、
−(|p|+|q|)/2で近似する
方法である。
ここで行われる2の除算は、計算機をハードウェア回路として実行する場合には、ビットシフトを用いて簡易に計算することができ、また、式(3)に示される場合など、この近似を分母と分子で同時に行うときには、除算自体をキャンセルすることができるので、計算量への影響はない。
そして、第3の近似方法は、
pおよびqがいずれも正の値のとき、または、pおよびqがいずれも負の値のとき、
pqを、1で近似し、
pまたはqのうちのいずれかが0のとき、pqを0とし、
それ以外のとき、pqを、−1で近似する
方法である。
また、第1または第2の近似方法においては、p=qの場合、pの2乗(またはqの2乗)は、p(またはq)の絶対値に近似される。
上述した3つの近似方法のうち、いずれの方法を用いるかは、演算処理において必要とされる精度によって決められるものである。近似演算の精度は、上述した3つの近似方法のうち、第1の近似方法が最も高く、次いで、第2の近似方法となり、第3の近似方法の近似精度が最も低い。これらの近似方法が複数利用される場合、異なる近似方法を組み合わせて使用しても構わない。また近似法以外にも、以上の3つの例に限定されない他の近似計算と組み合わせて使用するようにしても良い。
次に、図4のフローチャートを参照して、図3の線形回帰演算装置101において実行される、統計量算出処理1について説明する。
ステップS1において、線形回帰演算装置101の平均値算出部112は、第1の信号を取得する。
ステップS2において、平均値算出部112は、図5のフローチャートを用いて後述する平均値計算処理1を実行する。
ステップS3において、平均値算出部111は、第2の信号を取得する。
ステップS4において、平均値算出部111は、図5のフローチャートを用いて後述する平均値計算処理1を実行する。
ステップS5において、分散近似計算部114は、図6のフローチャートを用いて後述する、分散近似計算処理1を実行する。
ステップS6において、共分散近似計算部113は、図7のフローチャートを用いて後述する、共分散近似計算処理1を実行する。
ステップS7において、推定値演算部115は、y=b(x−Mx)+Myを演算して、信号2を構成するデータyiに対応する推定値を演算して、処理が終了される。
次に、図5のフローチャートを参照して、図4のステップS2またはステップS4において実行される平均値計算処理1について説明する。
ステップS21において、平均値算出部111または平均値算出部112は、出力される値である平均値M(MyまたはMx)を0に初期化する。
ステップS22において、平均値算出部111または平均値算出部112は、第2の信号を構成する第2のデータ、または、第1の信号を構成する第1のデータを合計する。
ステップS23において、平均値算出部111または平均値算出部112は、ステップS22において算出された合計値を、取得した第2のデータ、または、第1のデータの数nで除算する。
ステップS24において、平均値算出部111または平均値算出部112は、ステップS23の処理により算出された除算結果を出力し、処理は、図4のステップS3、または、ステップS5に進む。
図6のフローチャートを参照して、図4のステップS5において実行される分散近似計算処理1について説明する。分散近似計算処理1においては、上述したpqの積の近似演算方法において説明したように、p=qのとき、pの二乗(またはqの二乗)はp(またはq)の絶対値で近似されることを利用して、分散値が近似されている。
ステップS41において、分散近似計算部114は、出力される値である分散値Vxxを0に初期化する。
ステップS42において、分散近似計算部114は、平均値算出部112により算出された第1の信号の平均値Mxを取得する。
ステップS43において、分散近似計算部114は、処理を実行するデータが何番目のデータであるかを示す第1のレジスタの値s'を初期化して、s'=1とする。
ステップS44において、分散近似計算部114は、第1の信号のs'番目の入力値から、ステップS42において取得された平均値Mxを減算し、絶対値を取って、現在の分散値Vxxに加えた値を、分散値Vxxとして更新する。
ステップS45において、分散近似計算部114は、処理を実行するデータが何番目のデータであるかを示す第1のレジスタの値s'を参照し、s'=nであるか否か、すなわち、入力された全てのデータに対する処理が終了されたか否かを判断する。
ステップS45において、s'=nではないと判断された場合、ステップS46において、分散近似計算部114は、第1のレジスタの値s'を、s'=s'+1に更新して、処理は、ステップS44に戻り、それ以降の処理が繰り返される。
ステップS45において、s'=nであると判断された場合、ステップS47において、分散近似計算部114は、Vxx/nを分散値Vxxとして出力し、処理は、図4のステップS6に戻る。
次に、図7のフローチャートを参照して、図4のステップS6において実行される、共分散近似計算処理について説明する。
ステップS71において、共分散近似計算部113は、出力される値である共分散値Vxyを0に初期化する。
ステップS72において、共分散近似計算部113は、平均値算出部112による図4のステップS2の処理により算出された第1の信号の平均値Mx、および、平均値算出部111による図4のステップS4の処理により算出された第2の信号の平均値Myを取得する。
ステップS73において、共分散近似計算部113は、処理を実行するデータが何番目のデータであるかを示す第1のレジスタの値s'を初期化して、s'=1とする
ステップS74において、図8を用いて後述する積算処理1が実行される。
ステップS75において、共分散近似計算部113は、処理を実行するデータが何番目のデータであるかを示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS75において、s'=nではないと判断された場合、ステップS76において、共分散近似計算部113は、第1のレジスタの値s'を、s'=s'+1に更新して、処理は、ステップS74に戻り、それ以降の処理が繰り返される。
ステップS75において、s'=nであると判断された場合、ステップS77において、共分散近似計算部113は、Vxy/nを共分散値Vxyとして出力して、処理は、図4のステップS7に進む。
次に、図8のフローチャートを参照して、図7のステップS74において実行される積算処理1について説明する。
ステップS101において、共分散近似計算部113は、{第1の信号のs´番目の入力値x−第1の信号の平均値Mx}をpとする。
ステップS102において、共分散近似計算部113は、{第2の信号のs'番目の入力値y−第2の信号の平均値My}をqとする。
ステップS103において、図9、図12、または、図15を用いて後述する積算近似処理1、積算近似処理2、または、積算近似処理3のうちのいずれかが実行される。
ステップS104において、共分散近似計算部113は、Vxy=Vxy+(pqの近似値)とし、処理は、図7のステップS75に進む。
このような積算処理が実行されることにより、上述した3つの近似方法のうちのいずれかを用いて、共分散値を近似することが可能である。
次に、図9のフローチャートを参照して、図8のステップS103において実行される積算近似処理1について説明する。積算近似処理1は、上述した第1の近似方法を用いて、近似された共分散値が算出される場合に実行される処理である。
ステップS121において、共分散近似計算部113は、図8のステップS101およびステップS102において置き換えられた値pおよびqを用いて、|p|≧|q|であるか否かを判断する。
ステップS121において、|p|≧|q|であると判断された場合、ステップS122において、共分散近似計算部113は、p≧0であるか否かを判断する。
ステップS122において、p≧0ではないと判断された場合、ステップS123において、共分散近似計算部113は、pqの近似値を−qとし、処理は、図8のステップS104に戻る。
ステップS122において、p≧0であると判断された場合、ステップS124において、共分散近似計算部113は、pqの近似値を+qとし、処理は図8のステップS104に戻る。
ステップS121において、|p|≧|q|ではないと判断された場合、ステップS125において、共分散近似計算部113は、q≧0であるか否かを判断する。
ステップS125において、q≧0であると判断された場合、ステップS126において、共分散近似計算部113は、pqの近似値を+pとし、処理は、図8のステップS104に戻る。
ステップS125において、q≧0ではないと判断された場合、ステップS127において、共分散近似計算部113は、pqの近似値を−pとし、処理は、図8のステップS104に戻る。
なお、この処理においては、pまたはqが0である場合、pqの近似値は必ず0となる。
積算近似処理1を用いて近似されたpqを図10に示し、近似演算による2乗誤差を図11に示す。図2を用いて説明したpqの値のとりうる範囲と、図10に示される積算近似処理1を用いて近似されたpqの値のとりうる範囲は、大きな違いがないことが分かる。図11に示される近似演算による2乗誤差からも、違いがわずかなものであることが分かる。
図9を用いて説明した処理により、上述した第1の近似方法を用いて、充分な近似精度で共分散値を近似することが可能であるので、複雑な積算処理を省略することが可能となり、計算速度を早くしたり、ハードウェアで演算装置を実現する場合のゲート数を少なくすることが可能となる。
次に、図12のフローチャートを参照して、図8のステップS103において実行される積算近似処理2について説明する。積算近似処理2は、上述した第2の近似方法を用いて、近似された共分散値が算出される場合に実行される処理である。
ステップS141において、共分散近似計算部113は、図8のステップS101およびステップS102において置き換えられた値pおよびqを用いて、pまたはqが0であるか否かを判断する。
ステップS141において、pまたはqが0であると判断された場合、ステップS142において、共分散近似計算部113は、pqの近似値を0とし、処理は、図8のステップS104に戻る。
ステップS141において、pおよびqはいずれも0ではないと判断された場合、ステップS143において、共分散近似計算部113は、pおよびqの関係は、p>0かつq>0、または、p<0かつq<0のうちのいずれか一方であるか否かを判断する。
ステップS143において、pおよびqの関係は、p>0かつq>0、または、p<0かつq<0のうちのいずれか一方であると判断された場合、ステップS144において、共分散近似計算部113は、pqの近似値を(|p|+|q|)/2とし、処理は、図8のステップS104に戻る。
ステップS143において、pおよびqの関係は、p>0かつq>0、または、p<0かつq<0のうちのいずれでもないと判断された場合、ステップS145において、共分散近似計算部113は、pqの近似値を、−(|p|+|q|)/2とし、処理は、図8のステップS104に戻る。
なお、信号の種類によっては(例えば、ノイズが重畳された信号など)、図8のステップS101およびステップS102において置き換えられた値pまたはqが0の値をとることは、まれな場合がある。そこで、ステップS141およびステップS142の処理を省略するようにしてもよい。そのとき、pまたはqが0の値をとったときの近似値は、(|p|+|q|)/2か−(|p|+|q|)/2かのいずれか一方であるとする。このようにすることにより、演算処理速度を高速化したり、ハードウェアの実装規模を縮小するようにすることが可能である。
積算近似処理2を用いて近似されたpqを図13に示し、近似演算による2乗誤差を図14に示す。図13および図14を、先に説明した第1の近似方法を用いた場合の近似されたpqを示す図10およびその2乗誤差を示す図11と比較すると、第2の近似方法は、第1の近似方法よりも、近似精度がやや劣ってしまうことが分かる。しかしながら、第2の近似方法は第1の近似方法よりも条件分岐などが簡単であるので、この誤差があっても目的を十分達成するような演算処理において、第2の近似方法を用いることは、非常に有益である。
図12を用いて説明した処理により、上述した第2の近似方法を用いて、共分散値を近似することが可能であるので、複雑な積算処理を省略することが可能となり、計算速度を早くしたり、ハードウェアで演算装置を実現する場合のゲート数を少なくすることが可能となる。
次に、図15のフローチャートを参照して、図8のステップS103において実行される積算近似処理3について説明する。積算近似処理3は、上述した第3の近似方法を用いて、近似された共分散値が算出される場合に実行される処理である。
ステップS161において、共分散近似計算部113は、図8のステップS101およびステップS102において置き換えられた値pおよびqを用いて、pまたはqが0であるか否かを判断する。
ステップS161において、pまたはqが0であると判断された場合、ステップS162において、共分散近似計算部113は、pqの近似値を0とし、処理は、図8のステップS104に戻る。
ステップS161において、pおよびqはいずれも0ではないと判断された場合、ステップS163において、共分散近似計算部113は、pおよびqの関係は、p>0かつq>0、または、p<0かつq<0のうちのいずれか一方であるか否かを判断する。
ステップS163において、pおよびqの関係は、p>0かつq>0、または、p<0かつq<0のうちのいずれか一方であると判断された場合、ステップS164において、共分散近似計算部113は、pqの近似値を1とし、処理は、図8のステップS104に戻る。
ステップS163において、pおよびqの関係は、p>0かつq>0、または、p<0かつq<0のうちのいずれでもないと判断された場合、ステップS165において、共分散近似計算部113は、pqの近似値を、−1とし、処理は、図8のステップS104に戻る。
なお、信号の種類によっては、図8のステップS101およびステップS102において置き換えられた値pまたはqが、0の値をとることは、まれな場合がある。そこで、ステップS161およびステップS162の処理を省略するようにしてもよい。そのとき、pまたはqが0の値をとったときの近似値は、1か−1かのいずれか一方であるとする。このようにすることにより、演算処理速度を高速化したり、ハードウェアの実装規模を縮小するようにすることが可能である。
積算近似処理3を用いて近似されたpqを図16に示し、近似演算による2乗誤差を図17に示す。図16および図17を、先に説明した第2の近似方法を用いた場合の近似されたpqを示す図13およびその2乗誤差を示す図14と比較すると、第3の近似方法は、第2の近似方法よりも、近似精度がやや劣ってしまうことが分かる。しかしながら、第3の近似方法は第2の近似方法よりも更に演算が簡単であるので、この誤差があっても目的を十分達成するような演算処理において、第3の近似方法を用いることは、非常に有益である。
次に、図18は、図3の線形回帰演算装置101とは異なる構成で、統計値の推定値を演算することにより回帰直線を求めて、目的変数に対する推定値を算出することができる線形回帰演算装置151の構成を示すブロック図である。
なお、図3における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
すなわち、図18の線形回帰演算装置151は、推定値演算部115に代わって、推定値演算部164が設けられ、分散近似計算部114が省略され、新たに、信号1を構成するデータxiの平均偏差を計算する平均偏差計算部162、信号2を構成するデータyiの平均偏差を計算する平均偏差計算部161、および、相関係数の近似演算を実行する相関係数近似計算部163が新たに備えられている以外は、図3を用いて説明した線形回帰演算装置101と同様の構成を有するものである。
線形回帰演算装置101においては、積算の近似演算を行うことができるものであったが、線形回帰演算装置151においては、データの定性的な性質に着目した別の近似式を導出することにより、線形回帰演算が行われるようになされている。ここでは、標準偏差および相関係数を用いて回帰係数を計算する場合の処理について説明する。
標準偏差および相関係数を用いて回帰係数を計算する定義式は以下の式(6)に表される。
標準偏差Sx,Syは、データ値が平均の周囲にどれだけの幅で分布しているのかを表す統計量であり、図1中のxy方向の変分を表すdx、dyに近い値であると考えられる。特に、正の傾きの直線上にデータが分布し、Rxyが1になる場合、Sx,Syはdx、dyと等価になる。つまり、計算の複雑な標準偏差を用いる代わりに、データ分布幅を表し、演算がより簡単な他の統計量があれば、Sx,Syを、データ分布幅を表す他の統計量に置き換えても、回帰係数は、近い振る舞いを示すことが期待できる。
そこで、データ分布幅を表す他の統計量として、標準偏差と並んでデータの分布幅を表すために用いられる平均偏差を代替に用いる。xの平均偏差Axの定義は、次の式(7)で示される。
同様にして、yの平均偏差Ayも、次の式(8)で示される。
平均偏差AxおよびAyを用いて、Rxyを書き改めると、次の式(9)が得られる。
このように、標準偏差を用いた演算に平方根や乗算が必要であることと比較して、平均偏差は少ない計算量で算出することができ、更に、Vxyの算出に用いられる乗算や、Ax,Ayの乗算を、上述した第1乃至第3の近似方法を用いて近似演算することで、Rxyの近似を高速に算出することができる。
このように、偏差と相関に関してそれぞれ近似演算した後、回帰係数を計算した場合、図3を用いて説明した線形演算計算装置101において、分散および共分散から回帰係数を計算するより除算回数が増えるものの、相関近似値が入手できることにより、分布の形状、つまり回帰直線に対するデータのばらつきを知ることができるので、得られた回帰直線を用いてデータの推定を行う際の信頼性を判断することが可能になる。なお、上述した積の近似の第3の近似方法を用いて式(9)の分母を近似すると、AxAyは必ず1になるので、この場合は除算回数が増えることはない。
次に、線形回帰演算装置151の各部の動作について説明する。
線形回帰演算装置151の平均偏差計算部161は、上述した式(8)を用いて、第2の信号の平均偏差を求めるものであり、平均偏差計算部162は、上述した式(7)を用いて、第1の信号の平均偏差を求めるものである。
そして、相関係数近似計算部163は、上述した式(9)を用いて、相関係数の近似値を計算するものである。
回帰直線は、y=b(x−Mx)+Myで示され、回帰係数bは、b=Rxy×(Ay/Ax)となる。すなわち、推定値演算部164においては、除算部171および乗算部172の処理により、回帰係数bの近似値であるRxy×(Ay/Ax)が演算される。そして、減算部173が(x−Mx)を求め、乗算部174が、減算部173の演算結果と除算部172の演算結果を乗算してb(x−Mx)の近似値を算出し、加算部175がMyを加算して、信号2に対応する推定値(上述した式(5)のy)が求められる。
次に、図19のフローチャートを参照して、線形回帰演算装置151が実行する統計量算出処理2について説明する。
ステップS181において、線形回帰演算装置151の平均値算出部112および平均偏差計算部162は、第1の信号を取得する。
ステップS182において、平均値算出部112は、図5のフローチャートを用いて説明した平均値計算処理1を実行する。
ステップS183において、平均偏差計算部162は、図20のフローチャートを用いて後述する平均偏差計算処理を実行する。
ステップS184において、平均値算出部111および平均偏差計算部161は、第2の信号を取得する。
ステップS185において、平均値算出部111は、図5のフローチャートを用いて説明した平均値計算処理1を実行する。
ステップS186において、平均偏差計算部161は、図20のフローチャートを用いて後述する平均偏差計算処理を実行する。
ステップS187において、共分散算出部113は、図7のフローチャートを用いて説明した共分散近似計算処理1を実行する。
ステップS188において、相関係数近似計算部163は、上述した式(9)を用いて、相関係数の近似値を計算する。
ステップS189において、推定値演算部164は、除算部171および乗算部172の処理により、回帰係数bの近似値であるRxy×(Ay/Ax)を求め、減算部173が(x−Mx)を求め、乗算部174が、減算部173の演算結果と除算部172の演算結果を乗算してb(x−Mx)の近似値を算出し、加算部175がMyを加算して、第2の信号に対応する推定値を演算して、処理が終了される。
このような処理により、標準偏差および相関係数を用いて回帰係数を計算する場合においても、データの定性的な性質に着目した別の近似式を導出して、簡単な演算で、回帰直線を求め、目的変数の推定値を求めるようにすることができる。
次に、図20のフローチャートを参照して、図19のステップS183およびステップS186において実行される平均偏差計算処理について説明する。
ステップS191において、平均偏差計算部161または平均偏差計算部162は、出力する平均偏差A(AyまたはAx)の値を0に初期化する。
ステップS192において、平均偏差計算部161または平均偏差計算部162は、平均値算出部111または平均値算出部112から、第2の信号または第1の信号の平均値を取得する。
ステップS193において、平均偏差計算部161または平均偏差計算部162は、処理を実行するデータが何番目のデータであるかを示す第1のレジスタの値s'を初期化して、s'=1とする
ステップS194において、平均偏差計算部161または平均偏差計算部162は、(第2の信号または第1の信号のいずれかのs'番目の入力値)−(第2の信号または第1の信号の平均値)の結果の絶対値を現在の平均偏差Aに加えた値を平均偏差Aとして更新する。
ステップS195において、平均偏差計算部161または平均偏差計算部162は、処理を実行するデータが何番目のデータであるかを示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS195において、s'=nではないと判断された場合、ステップS196において、平均偏差計算部161または平均偏差計算部162は、第1のレジスタの値s'を、s'=s'+1に更新して、処理は、ステップS194に戻り、それ以降の処理が繰り返される。
ステップS195において、s'=nであると判断された場合、ステップS197において、平均偏差計算部161または平均偏差計算部162は、A/nを平均偏差Aとして出力して、処理は、図19のステップS184またはステップS187に進む。
図20を用いて説明した処理により、式(7)または式(8)の平均偏差Ax、Ayを求めることができる。
以上説明した近似演算処理を、画像処理における画素強度の補間処理などのデータ演算に用いるようにすることができる。
図21は、本発明を適用した演算処理を実行するデジタルビデオカメラ201の構成を示すブロック図である。
図21に示すように、デジタルビデオカメラ201は、レンズ211、絞り212、CCD(Charge Coupled Devices)イメージセンサ213、相関2重サンプリング(CDS:Correlated Double Sampling)回路214、A/Dコンバータ215、DSP(Digital Signal Processor)ブロック216、タイミングジェネレータ217、D/Aコンバータ218、ビデオエンコーダ219、表示部220、コーデック(CODEC:COmpression/DECompression)処理部221、メモリ222、CPU223、および、操作入力部224から構成される。
CCDとは、光情報を電気信号に変換する(光電変換)半導体素子であり、CCDイメージセンサ213は、光を電気に変換する受光素子(画素)を複数個並べ、光の変化を画素ごとに独立して電気信号に変換するものである。相関2重サンプリング回路214は、CCDイメージセンサ213の出力信号に含まれるノイズのうちの主な成分であるリセットノイズを、出力の各画素信号のうち、映像信号期間をサンプリングしたものと、基準期間をサンプリングしたものとを引き算することにより除去する回路である。A/Dコンバータ215は、供給されたノイズ除去後のアナログ信号をデジタル信号に変換する。
DSPブロック216は、信号処理用プロセッサと画像用RAMを持つブロックで、信号処理用プロセッサが画像用RAMに格納された画像データに対して、予めプログラムされた画像処理、または、ハードウェアによる演算処理として構成された画像処理を行うものである。タイミングジェネレータ217は、CCDを駆動するために必要な、水平および垂直の各種駆動パルス、並びに、アナログフロント処理で用いるパルスを、基準クロックに同期して発生させるロジック回路である。また、タイミングジェネレータ217により発生されるタイミングクロックは、バス225を介して、コーデック処理部221、メモリ222、および、CPU223にも供給されている。
D/Aコンバータ218は、供給されたデジタル信号をアナログ信号に変換して出力する。ビデオエンコーダ219は、供給されたアナログ信号を、表示部220において表示可能な形式のビデオデータにエンコードする。表示部220は、例えば、LCD(Liquid Crystal Display)などで構成され、ビデオエンコーダ219から供給されたビデオ信号を表示する。
コーデック処理部221は、例えば、MPEG(Moving Picture Coding Experts Group/Moving Picture Experts Group)などの、デジタルビデオデータの圧縮または伸張アルゴリズムによる処理を実行する。メモリ222は、例えば、半導体メモリ、磁気ディスク、光磁気ディスク、または、光ディスクなどにより構成され、CPU223の制御に基づいて、供給されたデータを記憶したり、または、記憶しているデータを出力する。なお、メモリ222は、デジタルビデオカメラ201に対して着脱可能なようになされていても良い。
CPU223は、バス225を介して、操作入力部224から供給されたユーザの操作入力を基に、デジタルビデオカメラ201の各部を制御する。操作入力部224は、録画を指令する場合のボタンをはじめとして、例えば、ジョグダイヤル、キー、レバー、ボタン、またはタッチパネルなどにより構成され、ユーザによる操作入力を受ける。
レンズ211および絞り212を介して入力された光は、CCDイメージセンサ213に入射され、受光素子での光電変換によって電気信号に変換され、相関2重サンプリング回路214に供給される。相関2重サンプリング回路214は、CCDイメージセンサ213の出力の各画素信号のうち、映像信号期間をサンプリングしたものと、基準期間をサンプリングしたものとを引き算することによりノイズを除去し、A/Dコンバータ215に供給する。A/Dコンバータ215は、供給されたノイズ除去後のアナログ信号をデジタル信号に変換し、DSPブロック216の画像用RAMに一時格納する。
タイミングジェネレータ217は、撮像中の状態において、一定のフレームレートによる画像取り込みを維持するように、CCDイメージセンサ213、相関2重サンプリング回路214、A/Dコンバータ215、および、DSPブロック216を制御する。
DSPブロック216は、一定のレートで画素のストリームデータの供給を受け、画像用RAMに一時格納し、信号処理用プロセッサにおいて、一時格納された画像データに対して、後述する画像処理を実行する。DSPブロック216は、画像処理の終了後、CPU223の制御に基づいて、その画像データを表示部220に表示させる場合は、D/Aコンバータ218に、メモリ222に記憶させる場合は、コーデック処理部221に画像データを供給する。
D/Aコンバータ218は、DSPブロック216から供給されたデジタルの画像データをアナログ信号に変換し、ビデオエンコーダ219に供給する。ビデオエンコーダ219は、供給されたアナログの画像信号を、ビデオ信号に変換し、表示部220に出力して表示させる。すなわち、表示部220は、デジタルビデオカメラ201において、カメラのファインダの役割を担っている。コーデック処理部221は、DSPブロック216から供給された画像データに対して、所定の方式の符号化を施し、符号化された画像データをメモリ222に供給して記憶させる。
また、コーデック処理部221は、操作入力部224からユーザの操作入力を受けたCPU223の制御に基づいて、メモリ222に記憶されているデータのうち、ユーザに指定されたデータを読み取り、所定の復号方法で復号し、復号した信号をDSPブロック216に出力する。これにより、復号された信号が、DSPブロック216を介してD/Aコンバータ218に供給され、アナログ変換された後、ビデオエンコーダ219によりエンコードされて、表示部220に表示される。
ところで、図21のCCDイメージセンサ213のオンチップカラーフィルタには、通常、3種類または4種類の色が用いられており、これらのオンチップカラーフィルタは、受光素子ごとに、交互に異なる色になるようモザイク状に配列されている。例えば、RGB(Red,Green,Blue:赤、緑、青)の3色を用いた配列のうち、最も広く用いられている色のモザイク配列であるベイヤー配列を、図22に示す。
ベイヤー配列は、図22に示されるように、緑色(G)の光のみを透過するGのフィルタが2個、赤(R)の光のみを透過するRのフィルタが1個、青(B)の光のみを透過するBのフィルタが1個の、合計4個を最小単位として構成されている。すなわち、Gのフィルタは、市松状に配置され、RおよびBのフィルタの倍の密度で存在する。
このように、CCDイメージセンサ213のオンチップカラーフィルタにベイヤー配列が用いられている場合、DSPブロック216の画像用RAMに一時格納されている画像は、各画素とも、R,G,Bのうちのいずれか1つの色しか持たない。そこで、DSPブロック216の信号処理用プロセッサは、予め組み込まれた画像処理プログラムまたはハードウェアによって、この画像を処理し、全画素において全色のデータを有する画像データを生成する。具体的には、DSPブロック216の信号処理用プロセッサは、まず、情報量の多いGについて全画素に色を揃え、それを参照情報として画素補間処理を行うことにより、他の色の情報を各画素において揃える。
図23は、図21のDSPブロック216の更に詳細な構成を示すブロック図である。
DSPブロック216は、上述したように、画像用RAM241および信号処理用プロセッサ242で構成され、信号処理用プロセッサ242は、ホワイトバランス調整部251、ガンマ補正部252、デモザイク処理部253、および、YC変換部254で構成される。
A/Dコンバータ215によってデジタル信号に変換されたモザイク画像は、画像用RAM241に一時保存される。モザイク画像は、各画素にR、GまたはBのいずれかの色に対応する強度信号、すなわち、CCDイメージセンサ213に用いられているカラーフィルタにより定められる配列(例えば、図22を用いて説明したベイヤー配列)の周期的なパターンの強度信号により構成されている。
ホワイトバランス調整部251は、モザイク画像に対して、無彩色の被写体領域の色バランスが無彩色になるように、各画素強度の持つ色に応じて適切な係数をかける処理(ホワイトバランスの調整処理)を実行する。ガンマ補正部252は、ホワイトバランスが調整されたモザイク画像の各画素強度に対して、ガンマ補正を行う。画像の階調の応答特性を表すために「ガンマ(γ)」という数値が使われる。ガンマ補正とは、表示部220に表示される画像の明るさや色の彩度を正しく表示するための補正処理のことである。表示部220に出力される信号は、画素ごとに特定の電圧を加えることで、画像の明るさや色が再現されるようになされている。しかしながら、実際に表示される画像の明るさや色は、表示部220が有する特性(ガンマ値)により、入力電圧を倍にしてもブラウン管の明るさが倍になるわけではない(非線形性を有する)ため、ガンマ補正部252において、表示部220に表示される画像の明るさや色の彩度が正しく表示されるように補正する処理が施される。
デモザイク処理部253は、色分布形状を統計的に算出することにより、ガンマ補正がなされたモザイク画像の各画素位置にR,G,Bの全ての強度を揃えるデモザイク処理を実行する。したがって、デモザイク処理部253からの出力信号は、R,G,Bの3つの色に対応する3つの画像信号となる。YC変換部254はR,G,Bの3チャネル画像に、マトリックス処理およびクロマ成分に対する帯域制限を行うことで、Y画像およびC画像(YCbCr画像信号)を生成し、出力する。
DSPブロック216の信号処理用プロセッサ242においては、デモザイク処理部253によるデモザイク処理の前に、ガンマ補正部252によりガンマ補正を行うものとしている。これは、ガンマ補正された非線形な画素強度空間においてデモザイク演算を実行することにより、デモザイク処理部253のデモザイク処理の信頼性をより高めることができるためである。
例えば、入力される画像が高コントラストな輪郭領域である場合、その色分布は、非常に明るい強度域と非常に暗い強度域に渡ってしまう。物理的に、物体反射光は、物体表面のばらつきに照明からの入射光強度が乗じられたものになることから、カメラへの入射光強度に比例する線形な画素強度空間においては、明るい強度域にある物体色の分布はスパースに(まばらに)広がり、暗い画素強度域にある物体色の分布はあまり広がらずにコンパクトに縮まる傾向にある。
デモザイク処理部253においては、色分布形状を統計的に算出することにより、デモザイク処理を実行する。しかしながら、高コントラストな輪郭領域では、明るい領域での画素強度のちらばりと暗い領域での画素強度のちらばりが大きく異なり、統計的な線形回帰が適用しにくくなる。したがって、入力されたデータに対して、デモザイク処理部253におけるデモザイク処理に先立って、ガンマ補正のような非線形の画素強度変換を施して、暗い画素強度域を持ち上げて(明るい画素強度領域に近づけて)、画素強度の分散をある程度抑制するようにすることにより、デモザイク処理部253において実行される線形回帰処理の信頼性を向上させることができる。
このような目的で適用する非線形変換は、ガンマ補正のように1より小さい指数によるべき乗変換が望ましいが、通常カラープロファイル等で用いられているsRGBガンマのように、べき乗部と線形部を組み合わせたような変換であっても、略べき乗関数と同じとみなせるようなものであれば、いずれの非線形変換であってもよい。また、非線形変換を省略するようにしても、デモザイク処理の後に、ガンマ補正などの非線形変換処理を行うようにしてもよいことは言うまでもない。
図24は、信号処理用プロセッサ242のデモザイク処理部253が実行可能な機能を示す機能ブロック図である。デモザイク処理部253は、全画素位置でRGBの全ての色が存在するように、画素位置ごとに順次、そこにない色の強度を補間または推定していく処理であるデモザイク処理を実行する。
すなわち、デモザイク処理部253は、Gについては、Bilinear補間等、適当な補間方法により全画素の補間処理を実行するとともに、例えば、図22を用いて説明したように、入力されたモザイク画像の中心位置、すなわち注目画素がB強度を示すとき、回帰分析によりRを補間し、注目画素がR強度を示すとき、回帰分析によりBを補間する処理を実行するとともに、注目画素がG強度を示すとき、回帰分析によりBおよびRを補間する処理を実行する。
DSPブロック216の信号処理用プロセッサ242のデモザイク処理部253は、プログラムという形態以外にも、以下で説明する機能ブロックと同等の処理を実現するハードウェア回路を実装することにより構成されるようにしてもよい。
局所領域抽出部271は、ガンマ補正されたモザイク画像から、注目画素位置周囲の決まった大きさの局所領域の画素を切り出す。ここでは、切り出す局所領域を、例えば、注目画素位置を中心とした7×7画素の矩形領域とする。ただし、G強度補間処理部272において局所領域内にGを補間する場合に、周辺部の補間のためにより大きな領域を必要とする場合には、大きめに局所領域を切り出して、G強度補間処理部272で使用し、他の処理では、その内側7×7の領域を使用する。
線形回帰演算部273は、局所領域抽出部271により抽出された局所領域の画素強度と、G強度補間処理部272により得られたG強度を基に、図3乃至図19を用いて説明した線形回帰演算と同等の処理を実行して、注目画素がR強度を示す信号であるとき、B強度の補間値を線形回帰演算より求める。注目画素がB強度やG強度を示す信号であるときも同様にして不明な色強度の補間値を求める。
すなわち、図22に示されるB強度を注目画素としたある画素範囲が局所領域として抽出された場合、Rと、その画素位置に対応する補間されたGとの組は16個作られることになる。これらを2次元平面にプロットすると、図1を用いて説明した分布図において、x軸をG、y軸をRとしたものが得られる。線形回帰演算部273は、得られた分布に対し、上述した近似方法を用いて、分散および共分散の近似計算を行い、回帰係数を求めることで、図22における中心位置のGの画素強度を用いて、その位置のRの画素強度を推定することができる。線形回帰演算部273は、注目画素がR強度やG強度を示す信号であるときも、同様にして不明な色強度の補間値を求めることができる。
次に、図25は、線形回帰演算部273の構成を示すブロック図である。
また、これ以降、デモザイク処理部253で実行される線形回帰演算においては、分散および共分散を用いて回帰係数を求める場合について説明するが、図25の線形回帰演算部273に代わって、図18を用いて説明した線形回帰演算装置151と同様の構成を有する線形回帰演算部を備えるようにしても良いことは言うまでもない。
線形回帰演算部273は、平均値算出部281、平均値算出部282、共分散近似計算部283、分散近似計算部284、および、図3を用いて説明した線形回帰演算装置101における場合と同様の推定値演算部115によって構成されている。平均値算出部281は、局所領域抽出部271が抽出したガンマ補正されたモザイク画像信号の供給を受け、局所領域内のRまたはBの平均値を算出する。同様に、平均値算出部282は、局所領域内のGの補間値の平均値を算出する。分散近似計算部284は、平均値算出部282が算出したGの補間値の平均値と、局所領域のG補間値による画像信号の供給を受け、Gの分散値を算出する。共分散算出部283は、平均値算出部282が算出したGの平均値、局所領域のモザイク画像信号、および、平均値算出部281が算出したRまたはBの平均値を受け取り、GとRまたはBの共分散値を算出する。
推定値演算部115は、図3を用いて説明した場合と同様に、2つのデータ系列のそれぞれの平均値、共分散値、および、分散値を基に、回帰係数を求め、注目画素がR強度を示す信号であるとき、B強度の補間値を線形回帰演算より求め、注目画素がB強度を示す信号であるとき、R強度の補間値を線形回帰演算より求め、注目画素がG強度を示す信号であるとき、B強度およびR強度の補間値を線形回帰演算より求めて出力する。
次に、図26のフローチャートを参照して、図23のDSPブロック216の処理について説明する。
ステップS201において、画像用RAM241は、CCDイメージセンサ213に用いられているカラーフィルタにより定められる配列(例えば、図22を用いて説明したベイヤー配列)の周期的なパターンの強度信号により構成されるモザイク画像を取得して、一時保存する。
ステップS202において、信号処理用プロセッサ242のホワイトバランス調整部251は、モザイク画像に対して、無彩色の被写体領域の色バランスが無彩色になるように、各画素強度の持つ色に応じて適切な係数をかける処理であるホワイトバランス調整処理を行う。
ステップS203において、ガンマ補正部252は、ホワイトバランスがとられたモザイク画像の各画素強度に対し、表示部220に表示される画像の明るさや色の彩度が正しく表示されるようにガンマ補正を行う。
ステップS204において、デモザイク処理部253により、図27を用いて後述するデモザイク処理が実行される。
YC変換部254は、ステップS205において、デモザイク処理部253からの出力であるR,G,Bの3チャネル画像に、マトリックス処理およびクロマ成分に対する帯域制限を行うことで、YC変換を行い、Y画像およびC画像を生成し、ステップS206において、生成したY画像およびC画像を出力し、処理が終了される。
このような処理により、DSPブロック216は、供給されたモザイク画像信号に対して、各種処理を施して、Y画像およびC画像を生成し、CPU223の制御に基づいて、その画像データを表示部220に表示させる場合は、D/Aコンバータ218に、メモリ222に記憶させる場合は、コーデック処理部221に供給することができる。
次に、図27のフローチャートを参照して、図26のステップS204において実行されるデモザイク処理について説明する。
局所領域抽出部271は、ステップS221において、未処理の画素のうちのいずれかを注目画素とし、ステップS222において、注目画素位置の周辺の所定数の画素を、局所領域として抽出し、G強度補間処理部272、および、線形回帰演算部273に供給する。
ステップS223において、G強度補間処理部272は、局所領域抽出部271により抽出された局所領域内の画素を用いた補間処理により、注目画素位置およびその近傍におけるG強度を算出し、線形回帰演算部273に供給する
ステップS224において、図28のフローチャートを用いて後述する統計量算出処理3が実行される。
ステップS225において、局所領域抽出部271は、全ての画素において処理が終了したか否かを判断する。ステップS225において、全ての画素において処理が終了していないと判断された場合、処理は、ステップS221に戻り、それ以降の処理が繰り返される。ステップS225において、全ての画素において処理が終了したと判断された場合、処理が終了される。
換言すれば、デモザイク処理部253を構成する各部は、ある注目画素位置が決定されたときにその注目画素位置においてそれぞれの処理を実行し、全画素において、ステップS221乃至ステップS225の処理が終了された場合、処理は、図26のステップS205に進む。
このような処理により、図22を用いて説明したようなカラーフィルタにより得られたモザイク画像から、それぞれの画素において、RGBの3色のうち不明な色が補間されて生成されたRGB3色による画像データの組(RGBの3チャネル画像)が得られる。YC変換部254は、デモザイク処理部253からの出力であるRGBの3チャネル画像に、マトリックス処理およびクロマ成分に対する帯域制限を行うことで、YC変換を行い、Y画像およびC画像を生成する。
次に、図28のフローチャートを参照して、図27のステップS224において実行される、統計量算出処理3について説明する。
ステップS241において、平均値算出部282は、第1の信号であるGの補間画像を取得する。
ステップS242において、平均値算出部282は、図29のフローチャートを用いて後述する平均値計算処理2を実行する。
ステップS243において、平均値算出部281は、第2の信号であるモザイク画像を取得する。
ステップS244において、平均値算出部281は、図29のフローチャートを用いて後述する平均値計算処理2を実行する。
ステップS245において、分散近似計算部284は、図30のフローチャートを用いて後述する、分散近似計算処理2を実行する。
ステップS246において、共分散近似計算部283は、図31のフローチャートを用いて後述する、共分散近似計算処理2を実行する。
ステップS247において、推定値演算部115は、y=b(x−Mx)+Myを演算して、第2の信号(信号2)を構成するモザイク画像の注目画素に対応する推定値(注目画素がRのときB強度、注目画素がBのとき、R強度、注目画素がGのとき、R強度またはB強度)を演算して、処理は図27のステップS225に戻る。
次に、図29乃至図32のフローチャートを参照して、統計量算出処理3のうちのそれぞれの処理について説明するが、ここでは、注目画素がRである場合にBを補間する処理と、注目画素がBである場合にRを補間する処理を例として説明する。
次に、図29のフローチャートを参照して、図28のステップS242またはステップS244において実行される平均値計算処理2について説明する。
ステップS261において、平均値算出部281または平均値算出部282は、出力される値である平均値Mx(平均値Mの添え字xは、G補間値の平均値が算出される場合Gに、Rの平均値が算出される場合Rに、Bの平均値が算出される場合Bに、それぞれ設定される)を0に初期化する。
平均値算出部281または平均値算出部282は、ステップS262において、局所領域のうち、処理を実行する画素位置を示す第1のレジスタの値s'を初期化して、s'=−nとし、ステップS263において、局所領域のうち、処理を実行する画素位置を示す第2のレジスタの値t'を初期化して、t'=−nとする。ここで、注目画素は、局所領域のうち、画素(0,0)で示され、局所領域は、注目画素を中心とする(2n+1)×(2n+1)の大きさの画素群となる。なお、nは、正の奇数である。
ステップS264において、平均値算出部281または平均値算出部282は、Mxを、Mx+画素(s',t')の強度x(xは、G補間値の平均値が算出される場合Gに、Rの平均値が算出される場合Rに、Bの平均値が算出される場合Bに、それぞれ設定される)とする。
ステップS265において、平均値算出部281または平均値算出部282は、第2のレジスタの値t'を参照し、t'=nであるか否かを判断する。
ステップS265において、t'=nではないと判断された場合、ステップS266において、平均値算出部281または平均値算出部282は、第2のレジスタの値t'を、t'=t'+2に更新して、処理は、ステップS264に戻り、それ以降の処理が繰り返される。
ステップS265において、t'=nであると判断された場合、ステップS267において、平均値算出部281または平均値算出部282は、処理を実行する画素位置を示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS267において、s'=nではないと判断された場合、ステップS268において、平均値算出部281または平均値算出部282は、第1のレジスタの値s'を、s'=s'+2に更新して、処理は、ステップS263に戻り、それ以降の処理が繰り返される。
ステップS267において、s'=nであると判断された場合、ステップS269において、平均値算出部281または平均値算出部282は、Mx/(n+1)2を平均値Mxとして出力し、処理は、図28のステップS243、または、ステップS245に進む。
次に、図30のフローチャートを参照して、図28のステップS245において実行される分散近似計算処理2について説明する。
ステップS281において、線形回帰演算部273の分散近似計算部284は、出力される値である分散値VGGを0に初期化する。
ステップS282において、分散近似計算部284は、平均値算出部282により算出された第1の信号の平均値MGを取得する。
分散近似計算部284は、ステップS283において、処理を実行する画素位置を示す第1のレジスタの値s'を初期化して、s'=−nとし、ステップS284において、処理を実行する画素位置を示す第2のレジスタの値t'を初期化して、t'=−nとする。
ステップS285において、分散近似計算部284は、画素(s',t')のG強度から、ステップS282において取得された平均値MGを減算し、絶対値を取って、現在の分散値VGGに加えた値を、分散値VGGとして更新する。すなわち、分散近似計算部284は、VGG=VGG+|画素(s',t')の強度G−平均値MG|を演算する。上述した近似手法を用いると、−1<p<1である値pについて、p2は|p|で近似することが可能である。したがって、RGB強度が区間[0,1]に正規化されているならば、分散近似計算部284は、(画素(s',t')の強度G−平均値MG)2の演算を|画素(s',t')の強度G−平均値MG|で近似することができる。
ステップS286において、分散近似計算部284は、処理を実行する画素位置を示す第2のレジスタの値t'を参照し、t'=nであるか否かを判断する。
ステップS286において、t'=nではないと判断された場合、ステップS287において、分散近似計算部284は、第2のレジスタの値t'を、t'=t'+2に更新して、処理は、ステップS285に戻り、それ以降の処理が繰り返される。
ステップS286において、t'=nであると判断された場合、ステップS288において、分散近似計算部284は、処理を実行する画素位置を示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS288において、s'=nではないと判断された場合、ステップS289において、分散近似計算部284は、第1のレジスタの値s'を、s'=s'+2に更新して、処理は、ステップS284に戻り、それ以降の処理が繰り返される。
ステップS288において、s'=nであると判断された場合、ステップS290において、分散近似計算部284は、VGG/(n+1)2を、分散値VGGとして出力し、処理は、図28のステップS246に戻る。
図30を用いて説明した分散近似計算処理2においては、2乗の計算を近似することにより、演算処理に時間がかかったり、ハードウェアの規模が大きくなるという問題の発生を防止するようにすることができる。
次に、図31のフローチャートを参照して、図28のステップS246において実行される、共分散近似計算処理2について説明する。
ステップS301において、共分散近似計算部283は、出力される値である共分散値Vxy(ここでは、第1の信号は、全てG強度であるので、Vxyの添え字xは、Gに置き換えられる。そして、第2の信号がR強度であるときVxyの添え字yはRに置き換えられ、第2の信号がB強度であるときVxyの添え字yはBに置き換えられる)を0に初期化する。
ステップS302において、共分散近似計算部283は、平均値算出部282による図28のステップS242の処理により算出された第1の信号の平均値Mx、および、平均値算出部281による図28のステップS244の処理により算出された第2の信号の平均値Myを取得する。
ステップS303において、共分散近似計算部283は、処理を実行する画素位置を示す第1のレジスタの値s'を初期化して、s'=−nとする
ステップS304において、共分散近似計算部283は、処理を実行する画素位置を示す第2のレジスタの値t'を初期化して、t'=−nとする
ステップS305において、図32を用いて後述する積算処理2が実行される。
ステップS306において、共分散近似計算部283は、処理を実行する画素位置を示す第2のレジスタの値t'を参照し、t'=nであるか否かを判断する。
ステップS306において、t'=nではないと判断された場合、ステップS307において、共分散近似計算部283は、第2のレジスタの値t'を、t'=t'+2に更新して、処理は、ステップS305に戻り、それ以降の処理が繰り返される。
ステップS306において、t'=nであると判断された場合、ステップS308において、共分散近似計算部283は、処理を実行する画素位置を示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS308において、s'=nではないと判断された場合、ステップS309において、共分散近似計算部283は、第1のレジスタの値s'を、s'=s'+2に更新して、処理は、ステップS304に戻り、それ以降の処理が繰り返される。
ステップS308において、s'=nであると判断された場合、ステップS310において、共分散近似計算部283は、Vxy/(n+1)2を共分散値Vxyとして出力して、処理は、図28のステップS247に進む。
次に、図32のフローチャートを参照して、図31のステップS305において実行される積算処理2について説明する。積算処理2は、pqの積の近似方法を用いて、近似された共分散値が算出される場合に実行される処理である。
ステップS321において、共分散近似計算部283は、{第1の信号の画素(s',t')の強度x−第1の信号の平均値Mx}をpとする。
ステップS322において、共分散近似計算部283は、{第2の信号の画素(s',t')の強度y−第2の信号の平均値My}をqとする。
ステップS323において、図9、図12、または、図15を用いて説明した積算近似処理1乃至3のうちのいずれかの処理が実行される。
ステップS324において、共分散近似計算部283は、Vxy=Vxy+(pqの近似値)とし、処理は、図31のステップS306に進む。
このような積算処理が実行されることにより、上述した図9、図12、または、図15を用いて説明した積算近似処理1乃至3のうちのいずれかの処理を用いて、共分散値を近似することが可能である。
以上説明した統計量の演算処理においては、平均値の計算、分散値の近似計算、および、共分散の近似計算のいずれの場合においても、各統計量計算処理の最後の手順において、合計画素数(例えば、(n+1)2など)で除算が実行される。局所領域が、例えば、7×7の領域であった場合、n=3となり、近似演算に用いられるR(またはB)とGとの画素の組の数が(n+1)2=16となる。除数が2の累乗である場合、除算をシフト演算に置き換えて高速に演算を行うことができるので、このような場合、除算処理によって大きく演算量が増加することはないが、例えば、図33に示されるように、局所領域が11×11の領域であった場合、n=5となり、近似演算に用いられるR(またはB)とGとの画素の組の数が(n+1)2=36となり、2の累乗ではなくなってしまう。
このような場合、除数を2の累乗として、高速に除算を実行することができるようにするため、図33の図中のRの各画素に記載された数値のように、重みの合計値が2の累乗となるような値を用いて画素強度に重みを付けて評価するようにすることができる。
図33においては、中心位置からの距離に応じて重み付けを変化させ、その総和が256となるように、重み付け値が定められているので、各統計量計算処理の最後の手順において、画素数を用いた除算に代わって、8ビットのシフト演算を用いるようにすることができ、重み付けに要する処理の増加を含めても、全体としては演算処理を簡略化することが可能となる。
このようにして、処理を施す画素に対して、重み付け係数の総和が2の累乗となるように重み付けを施すようにすることにより、それぞれの統計量計算処理の最後の手順における除算を算術右シフトに置き換えることが可能となる。このようにすることにより、計算量を更に減少させることができる。
また、上述した処理にある、共分散値を分散値で除算するような場合においては、除算における分母と分子それぞれにおいて、合計画素数による除算もしくは重みの合計値によるシフト演算を省略することができる。このようにすることにより、計算量を更に減少させることができる。
図33を用いて説明した重み付けを施す場合の統計量計算処理について、図34以下を用いて説明するが、この場合、図27を用いて説明したデモザイク処理のステップS224において実行された統計量算出処理3に代わって、図34のフローチャートを用いて説明する統計量算出処理4が実行される。
次に、図34のフローチャートを参照して、図27のステップS224において実行される、統計量算出処理4について説明する。
ステップS341において、平均値算出部282は、第1の信号であるGの補間画像を取得する。
ステップS342において、平均値算出部282は、図35のフローチャートを用いて後述する平均値計算処理3を実行する。
ステップS343において、平均値算出部281は、第2の信号であるモザイク画像を取得する。
ステップS344において、平均値算出部281は、図35のフローチャートを用いて後述する平均値計算処理3を実行する。
ステップS345において、分散近似計算部284は、図36のフローチャートを用いて後述する、分散近似計算処理3を実行する。
ステップS346において、共分散近似計算部283は、図37のフローチャートを用いて後述する、共分散近似計算処理3を実行する。
ステップS347において、推定値演算部115は、y=b(x−Mx)+Myを演算して、信号2を構成するモザイク画像の注目画素に対応する推定値(注目画素がRのときB強度、注目画素がBのとき、R強度、注目画素がGのとき、R強度またはB強度)を演算して、処理は図27のステップS225に戻る。
次に、図35乃至図38のフローチャートを参照して、統計量算出処理4のうちのそれぞれの処理について説明するが、ここでも、注目画素がRである場合にBを補間する処理と、注目画素がBである場合にRを補間する処理を例として説明する。
次に、図35のフローチャートを参照して、図34のステップS342またはステップS344において実行される平均値計算処理3について説明する。
ステップS361において、平均値算出部281または平均値算出部282は、出力される値である平均値Mx(平均値Mxの添え字xは、G補間値の平均値が算出される場合Gに、Rの平均値が算出される場合Rに、Bの平均値が算出される場合Bに、それぞれ置き換えられる)を0に初期化する。
平均値算出部281または平均値算出部282は、ステップS362において、局所領域のうち、処理を実行する画素位置を示す第1のレジスタの値s'を初期化して、s'=−nとし、ステップS363において、局所領域のうち、処理を実行する画素位置を示す第2のレジスタの値t'を初期化して、t'=−nとする。ここで、注目画素は、局所領域のうち、画素(0,0)で示され、局所領域は、注目画素を中心とする(n+1)×(n+1)の大きさの画素群となる。
ステップS364において、平均値算出部281または平均値算出部282は、Mxを、Mx+重み付けが施された画素(s',t')の強度x(xは、G補間値の平均値が算出される場合Gに、Rの平均値が算出される場合Rに、Bの平均値が算出される場合Bに、それぞれ設定される)とする。ここで、重み付けとは、図33を用いて説明したように、その重み付け係数の総和が2の累乗となるように定められるものである。
ステップS365において、平均値算出部281または平均値算出部282は、第2のレジスタの値t'を参照し、t'=nであるか否かを判断する。
ステップS365において、t'=nではないと判断された場合、ステップS366において、平均値算出部281または平均値算出部282は、第2のレジスタの値t'を、t'=t'+2に更新して、処理は、ステップS364に戻り、それ以降の処理が繰り返される。
ステップS365において、t'=nであると判断された場合、ステップS367において、平均値算出部281または平均値算出部282は、処理を実行する画素位置を示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS367において、s'=nではないと判断された場合、ステップS368において、平均値算出部281または平均値算出部282は、第1のレジスタの値s'を、s'=s'+2に更新して、処理は、ステップS363に戻り、それ以降の処理が繰り返される。
ステップS367において、s'=nであると判断された場合、ステップS369において、平均値算出部281または平均値算出部282は、現在のMxの値をビットシフトして得られる(例えば、図33の重み付け係数を用いた場合、8ビットシフトして得られる)平均値Mxを出力し、処理は、図34のステップS343、または、ステップS345に進む。
次に、図36のフローチャートを参照して、図34のステップS345において実行される分散近似計算処理3について説明する。
ステップS381において、線形回帰演算部273の分散近似計算部284は、出力される値である分散値VGGを0に初期化する。
ステップS382において、分散近似計算部284は、平均値算出部282により算出された第1の信号の平均値MGを取得する。
分散近似計算部284は、ステップS383において、処理を実行する画素位置を示す第1のレジスタの値s'を初期化して、s'=−nとし、ステップS384において、処理を実行する画素位置を示す第2のレジスタの値t'を初期化して、t'=−nとする。
ステップS385において、分散近似計算部284は、画素(s',t')の強度Gから、ステップS382において取得された平均値MGを減算し、絶対値をとったものに重み付けを施し、現在の分散値VGGに加えた値を、分散値VGGとして更新する。すなわち、分散近似計算部284は、VGG=VGG+重み付けが施された|画素(s',t')の強度G−平均値MG|を演算する。上述した近似手法を用いると、−1<p<1である値pについて、p2は|p|で近似することが可能である。したがって、RGB強度が区間[0,1]に正規化されているならば、分散近似計算部284は、(画素(s',t')の強度G−平均値MG)2の演算を|画素(s',t')の強度G−平均値MG|で近似することができる。
ステップS386において、分散近似計算部284は、処理を実行する画素位置を示す第2のレジスタの値t'を参照し、t'=nであるか否かを判断する。
ステップS386において、t'=nではないと判断された場合、ステップS387において、分散近似計算部284は、第2のレジスタの値t'を、t'=t'+2に更新して、処理は、ステップS385に戻り、それ以降の処理が繰り返される。
ステップS386において、t'=nであると判断された場合、ステップS388において、分散近似計算部284は、処理を実行する画素位置を示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS388において、s'=nではないと判断された場合、ステップS389において、分散近似計算部284は、第1のレジスタの値s'を、s'=s'+2に更新して、処理は、ステップS384に戻り、それ以降の処理が繰り返される。
ステップS388において、s'=nであると判断された場合、ステップS390において、分散近似計算部284は、現在のVGGをビットシフトして得られる(例えば、図33の重み付け係数を用いた場合は、8ビットシフトして得られる)分散値VGGを出力し、処理は、図34のステップS346に戻る。
次に、図37のフローチャートを参照して、図34のステップS346において実行される、共分散近似計算処理3について説明する。
ステップS401において、共分散近似計算部283は、出力される値である共分散値Vxy(ここでは、第1の信号は、全てG強度であるので、Vxyの添え字xは、Gに置き換えられる。そして、第2の信号がR強度であるときVxyの添え字yはRに置き換えられ、第2の信号がB強度であるときVxyの添え字yはBに置き換えられる)を0に初期化する。
ステップS402において、共分散近似計算部283は、平均値算出部282による図34のステップS342の処理により算出された第1の信号の平均値Mx、および、平均値算出部281による図34のステップS344の処理により算出された第2の信号の平均値Myを取得する。
ステップS403において、共分散近似計算部283は、処理を実行する画素位置を示す第1のレジスタの値s'を初期化して、s'=−nとする。
ステップS404において、共分散近似計算部283は、処理を実行する画素位置を示す第2のレジスタの値t'を初期化して、t'=−nとする。
ステップS405において、図38を用いて後述する積算処理3が実行される。
ステップS406において、共分散近似計算部283は、処理を実行する画素位置を示す第2のレジスタの値t'を参照し、t'=nであるか否かを判断する。
ステップS406において、t'=nではないと判断された場合、ステップS407において、共分散近似計算部283は、第2のレジスタの値t'を、t'=t'+2に更新して、処理は、ステップS405に戻り、それ以降の処理が繰り返される。
ステップS406において、t'=nであると判断された場合、ステップS408において、共分散近似計算部283は、処理を実行する画素位置を示す第1のレジスタの値s'を参照し、s'=nであるか否かを判断する。
ステップS408において、s'=nではないと判断された場合、ステップS409において、共分散近似計算部283は、第1のレジスタの値s'を、s'=s'+2に更新して、処理は、ステップS404に戻り、それ以降の処理が繰り返される。
ステップS408において、s'=nであると判断された場合、ステップS410において、共分散近似計算部283は、現在のVxyの値をビットシフトして得られる(例えば、図33の重み付け係数を用いた場合は、8ビットシフトして得られる)共分散値Vxyを出力して、処理は、図34のステップS347に進む。
次に、図38のフローチャートを参照して、図37のステップS405において実行される積算処理3について説明する。積算処理3は、pqの積の近似方法を用いて、近似された共分散値が算出される場合に実行される処理である。
ステップS421において、共分散近似計算部283は、{第1の信号の画素(s',t')の強度x−第1の信号の平均値Mx}をpとする。
ステップS422において、共分散近似計算部283は、{第2の信号の画素(s',t')の強度y−第2の信号の平均値My}をqとする。
ステップS423において、図9、図12、または、図15を用いて説明した積算近似処理1乃至3のうちのいずれかの処理が実行される。
ステップS424において、共分散近似計算部283は、Vxy=Vxy+重み付けが施された(pqの近似値)とし、処理は、図37のステップS406に進む。
図33乃至図38を用いて説明したように、重み付け係数の総和が2の累乗となるような重み付けを施すことにより、局所領域の大きさに関わらず、統計量の演算処理における除算処理をビットシフト演算に置き換えるようにすることが可能となるので、演算処理が簡略化され、演算速度を高速化したり、ハードウェアを用いて演算を実行する場合のゲート数の増加を防ぐようにすることが可能となる。
図29乃至図32のフローチャート、および、図35乃至図38を用いて説明した処理では、注目画素がRである場合にBを補間する処理と、注目画素がBである場合にRを補間する処理を例として説明した。これに対して、注目画素がGである場合にRおよびBを補間するための処理では、平均値算出部281、平均値算出部282、共分散近似演算部283、および分散近似演算部284において、局所領域から演算に必要な画素強度を抽出するために、s´=−nからs´=nまで、t´=−nからt´=nまでの範囲の画素を1画素とばしで取得するようになされていた点を、Rを補間する場合には、s´=−n+1からs´=n−1まで、t´=−nからt´=nまでの範囲の画素を1画素とばしで取得するようにし、またBを補間する場合には、s´=−nからs´=nまで、t´=−n+1からt´=n−1までの範囲の画素を1画素とばしで取得するようにして、同様の処理を行うようにすればよい。
以上説明した処理においては、3色のベイヤー配列を用いたデジタルビデオカメラ201における画像処理において演算近似が実行される場合について説明したが、例えば、ベイヤー配列以外の、他の配列を有するカラーフィルタ(例えば、4色のカラーフィルタなどであり、具体的には、ベイヤー配列の2×2のモザイク中の一方のGを、他の色で置き換えた2×2のカラーフィルタなど)を有するデジタルビデオカメラ、または、デジタルスチルカメラにおいても、本発明は適用可能であることは言うまでもない。
すなわち、取得されたモザイク画像において、所定の画素位置に補間するべき色信号を得るための処理において、本発明を適用することが可能である。具体的には、カラーフィルタの配列にかかわらず、取得されたモザイク画素において、第1の色以外の色信号を有する画素位置に、第1の色を補間する場合、その周辺に位置する第1の色信号を有する複数の画素の画素強度と、それらと同一画素位置に補間された他の第2の色の色信号とを用いて色分布を求め、その色分布から得られた回帰直線を基に、所定の画素位置における第1の色信号の補間値を求めることが可能となる。
ここで、第2の色信号は、必ずしも取得されたモザイク画像に含まれる色成分である必要はなく、例えば、RGBに加えて、Gと分光感度が近い異なる第4の色を用いた4色のカラーフィルタが用いられている場合、Gと第3の色から合成されて生成された色成分を、第2の色信号として用いるようにしてもよい。
以上説明した処理においては、2次元分布を有する2系統のデータの演算処理について説明したが、本発明は、n次元分布を有するn系統のデータの演算処理においても適用することができる。
n次元に一般化した場合、式(10)で示される回帰方程式に対する回帰係数は、次の式(11)で示される。
式(10)において、aは切片、b1、b2・・・bnは回帰係数、x1,x2・・・xnは説明変数、yは目的変数を示す。そして、式(11)のマトリクスにおいて、Vx1x1,Vx2x2,・・・Vxnxnは、分散を示し、それ以外は、共分散を示す。これらの分散および共分散の算出において、上述したような近似演算を用いることにより、演算を高速化することが可能となる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。
この場合、ソフトウェアをDSPブロック216が実行することにより、上述した機能が実現される。また、例えば、線形回帰演算装置101、または、線形回帰演算装置151は、図39に示されるようなパーソナルコンピュータ301により構成することが可能となる。
図39において、CPU(Central Processing Unit)311は、ROM(Read Only Memory)312に記憶されているプログラム、または記憶部318からRAM(Random Access Memory)313にロードされたプログラムに従って、各種の処理を実行する。RAM313にはまた、CPU311が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU311、ROM312、およびRAM313は、バス314を介して相互に接続されている。このバス314にはまた、入出力インタフェース315も接続されている。
入出力インタフェース315には、キーボード、マウスなどよりなる入力部316、ディスプレイやスピーカなどよりなる出力部317、ハードディスクなどより構成される記憶部318、モデム、ターミナルアダプタなどより構成される通信部319が接続されている。通信部319は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース315にはまた、必要に応じてドライブ320が接続され、磁気ディスク331、光ディスク332、光磁気ディスク333、もしくは、半導体メモリ334などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部318にインストールされる。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェア(例えば、DSPブロック216や、その中に含まれている、デモザイク処理部253または線形回帰演算部273)に組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図39に示されるように、装置本体とは別に、ユーザにプログラムを供給するために配布される、プログラムが記憶されている磁気ディスク331(フロッピディスクを含む)、光ディスク332(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク333(MO(Magnet Optical Disk)を含む)、もしくは半導体メモリ334などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに供給される、プログラムが記憶されているROM312や、記憶部318に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記憶されるプログラムを記述するステップは、含む順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的もしくは個別に実行される処理をも含むものである。
2 回帰直線, 101 線形回帰演算装置, 111,112 平均値算出部, 113 共分散近似計算部, 114 分散近似計算部, 115 推定値演算部, 151 線形回帰演算装置, 161,162 平均偏差計算部, 163 相関係数近似計算部, 164 推定値演算部, 201 デジタルビデオカメラ, 216 DSPブロック, 242 信号処理用プロセッサ, 253 デモザイク処理部, 271 局所領域抽出部, 272 G強度補間処理部, 273 線形回帰演算部, 281,282 平均値算出部, 283 共分散近似計算部, 284 分散近似計算部