以下、本発明を実施するための形態について図面を用いて詳細に説明する。本発明は、映像信号のフリッカーの振幅及び位相を状態ベクトルとし、画素値を観測値として、非線形カルマンフィルタ等を用いることで、フリッカーの振幅及び位相を推定することを特徴とする。
これにより、推定したフリッカーの振幅及び位相に基づいて、フリッカーが反映されたフリッカー画素値を推定し、元の映像信号の画素値からフリッカー画素値を減算することで、フリッカーを抑制した画素値を得ることができる。したがって、映像信号のフリッカーの振幅及び位相を高精度に推定することができ、映像信号のフリッカーを確実に抑制することが可能となる。
〔本発明の概要〕
まず、本発明の概要について説明する。フリッカーが発生した映像において、映像信号に含まれるフリッカーの振幅及び位相からなるフリッカー成分(行列)x(k)及び画素値y(k)は、次の漸化式に従い、映像信号のフレーム毎に更新されるものとする。フリッカーは正弦波で表されるものとし、画素値y(k)は、以下の式(2)(4)のとおり、正弦波の和で記述される漸化式に従うものとする。
フリッカー成分x(k)は、以下の式のとおり、フリッカーの振幅x
1(k),・・・,x
2m-1(k)及び位相x
2(k),・・・,x
2m(k)を行方向に並べた列ベクトルとする。
vは、平均0及び分散σv 2の正規分布に従うシステム雑音であり、wは、平均0及び分散σw 2の正規分布に従う観測雑音である。システム雑音v及び観測雑音wは、互いに独立な正規分布に従う白色雑音であるものとする。bは、フリッカー成分x(k)に対応する定数の行列である。
ωiは、フリッカーの周波数成分に対応する角周波数とし、iは、フリッカーの周波数成分の番号(i=1,・・・,m)とし、mは、フリッカーの周波数成分数とする。kは、映像信号のフレーム毎の時刻とし、映像信号のフレーム番号に相当する。
前記式(1)〜(4)に示したフリッカー成分x(k)及び画素値y(k)を更新するモデルにおいて、一般に、x(k)は状態ベクトル、y(k)は観測値、f(x(k))は状態ベクトル関数、h(x(k))は観測関数という。
前記式(1)は、時刻k+1のフリッカー成分x(k+1)が、時刻kのフリッカー成分x(k)に雑音成分bv(k)を加えたものであることを示している。前記式(2)は、時刻kの画素値y(k)が、振幅及び位相の正弦波であるフリッカーを全ての周波数成分で加算した結果(前記式(4)のh(x(k)))に対し、観測雑音w(k)を加えたものであることを示している。
尚、自然画像の画素値yの場合は、周辺画素の平均値またはオフセット成分を予め減算しておくことが好適である。
以下に説明する実施例1〜8では、前記式(1)〜(4)にて規定された時系列の画素値y(k)に対し、非線形カルマンフィルタを適用し、フリッカー成分x(k)を推定する。つまり、実施例1〜8では、状態ベクトルをフリッカー成分x(k)とし、観測値を画素値y(k)として、前記式(1)〜(4)で表すモデルを非線形カルマンフィルタにて処理し、フリッカー成分x(k)を推定する。
具体的には、非線形カルマンフィルタは、状態ベクトルを、前記式(1)(3)に示した漸化式に従いフレーム毎に更新されるフリッカー成分x(k)とし、観測値を、正弦波の和で記述される前記式(2)(4)に示した漸化式に従いフレーム毎に更新される画素値y(k)としたモデルに対し、フリッカー成分x(k)を推定する。
以下、非線形カルマンフィルタの一例として、UKF(Unscented Kalman Filter:アンセンテッドカルマンフィルタ)を用いることとする。
UKFは、正規分布に従う確率変数が非線形関数(本例では正弦関数)によって写像された先の分布について、当該先の分布が正規分布でない場合を仮定したフィルタである。UKFは、元の正規分布のサンプリングポイントを非線形関数により写像(変換)し、これにより得られたサンプルを用いて、写像された先の分布の平均及び誤差分散共分散行列を近似することで、状態ベクトルを時刻毎に推定するものである。
(UKFの基本ブロック)
図1は、UKFの基本ブロックの処理を説明する図である。このUKFは、時刻k−1の状態ベクトルの推定値x^(k−1)及びその誤差分散共分散行列P^(k−1)並びに時刻kの観測値y(k)から、時刻kの状態ベクトルの推定値x^(k)及びその誤差分散共分散行列P^(k)を算出する。
UKFは、時刻k−1の状態ベクトルの推定値x^(k−1)及び誤差分散共分散行列P^(k−1)を用いた次の状態ベクトルの推定処理により、次の状態ベクトルの事前推定値x^-(k)及び誤差分散共分散行列の事前推定値P^-(k)を求める(ステップS101)。
UKFは、次の状態ベクトルの事前推定値x^-(k)及び誤差分散共分散行列の事前推定値P^-(k)を用いた観測値の推定処理により、観測値の事前推定値y^-(k)を求める(ステップS102)。
UKFは、状態ベクトルの事前推定値x^-(k)、誤差分散共分散行列の事前推定値P^-(k)、観測値の事前推定値y^-(k)及び観測値y(k)を用いた状態ベクトルの更新処理により、時刻kの状態ベクトルの推定値x^(k)及び誤差分散共分散行列P^(k)を求める(ステップS103)。
図2は、図1に示した次の状態ベクトルの推定処理(ステップS101)を説明する図である。図2の左図は、状態ベクトルの推定値x^(k−1)の確率分布を示し、右図は、状態ベクトルの事前推定値x^-(k)の確率分布を示す。
状態ベクトル関数f(x)の確率分布は計算できないため、状態ベクトルの推定値x^(k−1)のいくつかの代表点(左図の黒丸印の箇所)χ1,χ2,・・・をサンプリングする。サンプリングした点をシグマポイントという。状態ベクトルの推定値x^(k−1)とシグマポイントχ1との間の距離、及び状態ベクトルの推定値x^(k−1)とシグマポイントχ2との間の距離は、誤差分散共分散行列P^(k−1)の平方根の値√(P^(k−1))である。
シグマポイントχ1,χ2,・・・を状態ベクトル関数f(x)で写像した値f(χ1),f(χ2),・・・(右側の図の塗り潰した菱形の箇所)の重み付き平均値を、次の状態ベクトルの事前推定値x^-(k)とする(右図の白抜き丸印の箇所)。
次の状態ベクトルの事前推定値x^-(k)に対する誤差分散共分散行列の事前推定値P^-(k)は、後述する式(14)により算出される。後述する式(14)の第2項は、次の状態ベクトルの推定処理(ステップS101)により真値との誤差が増えると仮定した際の誤差に相当する。
このように、ステップS101の処理により、時刻k−1の状態ベクトルの推定値x^(k−1)及び誤差分散共分散行列P^(k−1)から、次の状態ベクトルの事前推定値x^-(k)及び誤差分散共分散行列の事前推定値P^-(k)が算出される。
図3は、図1に示した観測値の推定処理(ステップS102)を説明する図である。図3の左図は、状態ベクトルの事前推定値x^-(k)の確率分布を示し、右図は、観測値の事前推定値y^-(k)の確率分布を示す。
観測関数h(x)の確率分布は計算できないため、状態ベクトルの事前推定値x^-(k)のいくつかの代表点(左図の黒丸印の箇所)χ1 -,χ2 -,・・・をサンプリングする。図2と同様に、サンプリングした点をシグマポイントという。状態ベクトルの事前推定値x^-(k)とシグマポイントχ1 -との間の距離、及び状態ベクトルの事前推定値x^-(k)とシグマポイントχ2 -との間の距離は、誤差分散共分散行列の事前推定値P^-(k)の平方根の値√(P^-(k))である。
シグマポイントχ1 -,χ2 -,・・・を観測関数h(x)で写像した値h(χ1 -),h(χ2 -),・・・(右図の塗り潰した菱形の箇所)の重み付き平均値を、観測値の事前推定値y^-(k)とする(右図の白抜き四角の箇所)。観測値の事前推定値y^-(k)は、後述する式(19)により算出される。
このように、ステップS102の処理により、次の状態ベクトルの事前推定値x^-(k)及び誤差分散共分散行列の事前推定値P^-(k)から、観測値の事前推定値y^-(k)が算出される。
図4は、図1に示した状態ベクトルの更新処理(ステップS103)を説明する図である。観測値y(k)から観測値の事前推定値y^-(k)が減算され(ステップS401)、減算結果の観測誤差にカルマンゲインg(k)が乗算される(ステップS402)。次の状態ベクトルの事前推定値x^-(k)は、乗算結果g(k){y(k)−y^-(k)}に加算される(ステップS403)。これにより、時刻kの状態ベクトルの推定値x^(k)が得られる。
カルマンゲインg(k)は、UKFのゲイン値であり、観測値y(k)及び観測値の事前推定値y^-(k)の信頼度合いを示す。後述する式(20)〜(22)のとおり、観測値の事前推定値y^-(k)の分散が小さく、かつ状態ベクトルの事前推定値x^-(k)と観測値の事前推定値y^-(k)が相関していれば、カルマンゲインg(k)は大きい値となる。
また、後述する式(21)により算出された状態ベクトル推定誤差と観測値推定誤差の相関行列Pxy -(k)にカルマンゲインg(k)が乗算され(ステップS404)。誤差分散共分散行列の事前推定値P^-(k)から乗算結果が減算される(ステップS405)。これにより時刻kの誤差分散共分散行列P^(k)が得られる。
このように、ステップS103の処理により、状態ベクトルの事前推定値x^-(k)、誤差分散共分散行列の事前推定値P^-(k)、観測値の事前推定値y^-(k)及び観測値y(k)から、時刻kの状態ベクトルの推定値x^(k)及び誤差分散共分散行列P^(k)が算出される。
(UKFの基本ブロックの詳細)
次に、図1に示したUKFの基本ブロックの処理について詳細に説明する。図5は、図1に示したUKFの基本ブロックの詳細構成を示すブロック図である。このUKFは、時系列推定部90、カルマンゲイン計算部93及び更新部97を備えている。
まず、UKFの処理に先立って、状態ベクトルの推定値の初期値x^(0)及びその誤差分散共分散行列の初期値P^(0)が、次のように予め設定される。
時系列推定部90は、時刻k−1の状態ベクトルの推定値x^(k−1)、その誤差分散共分散行列P^(k−1)、システム雑音の標準偏差σv及び定数bを入力する。そして、時系列推定部90は、時刻kの状態ベクトルの事前推定値x^-(k)、誤差分散共分散行列の事前推定値P^-(k)、状態ベクトルの事前推定値x^-(k)の代表点ある2n+1個のシグマポイントχi -(k)、各シグマポイントχi -(k)を観測関数h(x)で写像した2n+1個の写像値Ui -(k)、及び観測値の事前推定値y^-(k)を算出する。
時系列推定部90は、状態ベクトル推定値等計算手段91及び時系列推定値計算手段92を備えている。状態ベクトル推定値等計算手段91は、時刻k−1の状態ベクトルの推定値x^(k−1)、誤差分散共分散行列P^(k−1)、システム雑音の標準偏差σv及び定数bを入力する。
状態ベクトル推定値等計算手段91は、状態ベクトルの推定値x^(k−1)及び誤差分散共分散行列P^(k−1)を用いて、以下の式にて、時刻t−1における状態ベクトルの推定値x^(k−1)の代表点である2n+1個のシグマポイントχ
0(k−1),・・・,χ
2n(k−1)を算出する。
ここで、
は、行列
の第i列とする。
状態ベクトル推定値等計算手段91は、以下の式にて、2n+1個のシグマポイントχ
0(k−1),・・・,χ
2n(k−1)の重みw
0,・・・,w
2nを算出する。
ただし、
とする。
状態ベクトル推定値等計算手段91は、以下の式にて、時刻k−1の2n+1個のシグマポイントχ
0(k−1),・・・,χ
2n(k−1)を状態ベクトル関数f(x)で写像した2n+1個の写像値χ
i^
-(k)を算出する。
状態ベクトル推定値等計算手段91は、時刻kの2n+1個の写像値χ
i^
-(k)、2n+1個の重みw
0,・・・,w
2nを用いて、以下の式にて、時刻kの状態ベクトルの事前推定値x^
-(k)を算出する。また、状態ベクトル推定値等計算手段91は、時刻kの状態ベクトルの事前推定値x^
-(k)、写像値χ
i^
-(k)、重みw
0,・・・,w
2n、システム雑音の標準偏差σ
v(分散σ
v 2)及び定数bを用いて、以下の式にて、誤差分散共分散行列の事前推定値P^
-(k)を算出する。
状態ベクトル推定値等計算手段91は、状態ベクトルの事前推定値x^-(k)及び誤差分散共分散行列の事前推定値P^-(k)を時系列推定値計算手段92に出力する。また、状態ベクトル推定値等計算手段91は、状態ベクトルの事前推定値x^-(k)をカルマンゲイン計算部93及び更新部97に出力し、誤差分散共分散行列の事前推定値P^-(k)を更新部97に出力する。
時系列推定値計算手段92は、システム雑音の標準偏差σv及び定数bを入力すると共に、状態ベクトル推定値等計算手段91から状態ベクトルの事前推定値x^-(k)及び誤差分散共分散行列の事前推定値P^-(k)を入力する。
時系列推定値計算手段92は、状態ベクトルの事前推定値x^
-(k)及び誤差分散共分散の事前推定値P^
-(k)を用いて、以下の式にて、時刻tにおける状態ベクトルの事前推定値x^
-(k)の代表点である2n+1個のシグマポイントχ
0 -(k),・・・,χ
2n+1 -(k)を算出する。
ここで、
は、行列
の第i列とする。
時系列推定値計算手段92は、以下の式にて、時刻tの2n+1個のシグマポイントχ
0 -(k),・・・,χ
2n+1 -(k)を観測関数h(x)で写像した2n+1個の写像値U
i -(k)を算出する。
時系列推定値計算手段92は、前記式(11)にて算出された重みw
i及び前記式(18)にて算出された写像値U
i -(k)を用いて、以下の式にて、時系列の観測値の事前推定値y^
-(k)を算出する。
時系列推定値計算手段92は、シグマポイントχi -(k)、写像値Ui -(k)及び観測値の事前推定値y^-(k)をカルマンゲイン計算部93に出力し、観測値の事前推定値y^-(k)を更新部97に出力する。
カルマンゲイン計算部93は、観測雑音の標準偏差σwを入力すると共に、時系列推定部90から状態ベクトルの事前推定値x^-(k)、シグマポイントχi -(k)、写像値Ui -(k)及び観測値の事前推定値y^-(k)を入力する。そして、カルマンゲイン計算部93は、観測値推定誤差の行列Pyy -(k)、状態ベクトル推定誤差と観測値推定誤差の相関行列Pxy -(k)及びカルマンゲインg(k)を算出する。
カルマンゲイン計算部93は、事前誤差分散計算手段94、事前状態誤差分散計算手段95及びカルマンゲイン計算手段96を備えている。
事前誤差分散計算手段94は、時系列推定部90から写像値U
i -(k)及び観測値の事前推定値y^
-(k)を入力する。そして、事前誤差分散計算手段94は、写像値U
i -(k)、観測値の事前推定値y^
-(k)及び前記式(11)にて算出された重みw
iを用いて、以下の式にて、観測値推定誤差の行列P
yy -(k)を算出する。観測値推定誤差の行列P
yy -(k)は、誤差分散共分散行列の推定誤差行列(予測誤差)である。
事前誤差分散計算手段94は、観測値推定誤差の行列Pyy -(k)をカルマンゲイン計算手段96に出力する。
事前状態誤差分散計算手段95は、時系列推定部90から状態ベクトルの事前推定値x^
-(k)、シグマポイントχ
i -(k)、写像値U
i -(k)及び観測値の事前推定値y^
-(k)を入力する。そして、事前状態誤差分散計算手段95は、状態ベクトルの事前推定値x^
-(k)、シグマポイントχ
i -(k)、写像値U
i -(k)、観測値の事前推定値y^
-(k)及び前記式(11)にて算出された重みw
iを用いて、以下の式にて、状態ベクトル推定誤差と観測値推定誤差の相関行列P
xy -(k)を算出する。
事前状態誤差分散計算手段95は、状態ベクトル推定誤差と観測値推定誤差の相関行列Pxy -(k)をカルマンゲイン計算手段96及び更新部97に出力する。
カルマンゲイン計算手段96は、事前誤差分散計算手段94から観測値推定誤差の行列Pyy -(k)を入力すると共に、事前状態誤差分散計算手段95から状態ベクトル推定誤差と観測値推定誤差の相関行列Pxy -(k)を入力する。また、カルマンゲイン計算手段96は、観測雑音の標準偏差σwを入力する。
カルマンゲイン計算手段96は、観測値推定誤差の行列P
yy -(k)、状態ベクトル推定誤差と観測値推定誤差の相関行列P
xy -(k)及び観測雑音の標準偏差σ
w(分散σ
w 2)を用いて、以下の式にて、カルマンゲインg(k)を算出する。
カルマンゲイン計算手段96は、カルマンゲインg(k)を更新部97に出力する。
更新部97は、時刻kの観測値y(k)を入力すると共に、時系列推定部90から状態ベクトルの事前推定値x^-(k)、誤差分散共分散行列の事前推定値P^-(k)及び観測値の事前推定値y^-(k)を入力し、カルマンゲイン計算部93から状態ベクトル推定誤差と観測値推定誤差の相関行列Pxy -(k)及びカルマンゲインg(k)を入力する。そして、更新部97は、時刻kの状態ベクトルの推定値x^(k)及びその誤差分散共分散行列P^(k)を算出する。
更新部97は、状態ベクトル更新手段98及び誤差分散更新手段99を備えている。状態ベクトル更新手段98は、時刻kの観測値y(k)を入力すると共に、時系列推定部90から状態ベクトルの事前推定値x^-(k)及び観測値の事前推定値y^-(k)を入力し、カルマンゲイン計算部93からカルマンゲインg(k)を入力する。
状態ベクトル更新手段98は、観測値y(k)、状態ベクトルの事前推定値x^
-(k)、観測値の事前推定値y^
-(k)及びカルマンゲインg(k)を用いて、以下の式により、状態ベクトルの推定値x^(k)を更新し、出力する。
誤差分散更新手段99は、時系列推定部90から誤差分散共分散行列の事前推定値P^-(k)を入力すると共に、カルマンゲイン計算部93から状態ベクトル推定誤差と観測値推定誤差の相関行列Pxy -(k)及びカルマンゲインg(k)を入力する。
誤差分散更新手段99は、誤差分散共分散行列の事前推定値P^
-(k)、状態ベクトル推定誤差と観測値推定誤差の相関行列P
xy -(k)及びカルマンゲインg(k)を用いて、以下の式にて、誤差分散共分散行列の推定値P^(k)を更新し、出力する。
UKFは、映像信号のフレーム毎に、前記式(6)〜(24)を繰り返し演算することで、各時刻kの状態ベクトルの推定値x^(k)を算出する。これにより、UKFの状態ベクトルをフリッカー成分x(k)とし、観測値を画素値y(k)とし、フリッカー成分(k)を、前記式(5)のとおり、フリッカーの振幅及び位相とすることで、フリッカーの振幅及び位相を推定ことができる。
以下、図1〜図5にて説明した非線形カルマンフィルタの一種であるUKFを用いた実施例1〜8について具体的に説明する。実施例1は、1つの周波数成分数m=1及び画素数が1の場合において、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。実施例2は、複数の周波数成分数m>1及び画素数が1の場合において、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
実施例3は、複数の周波数成分数m>1の場合において、映像信号が分割された領域毎に、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
実施例4は、実施例3において、色毎のゲインに応じて、映像信号のフリッカー成分の推定値の初期値、誤差分散共分散行列の初期値、システム雑音等を設定し、色毎に、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
実施例5は、実施例3において、CC(Color Temperature Conversion:色温度変換)フィルタにより変換された照明光の色温度に応じて、フリッカー成分の推定値の初期値、誤差分散共分散行列の初期値、システム雑音等を設定し、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
実施例6は、実施例3において、ND(Neutral Density:ニュートラルデンシティ(中性濃度))フィルタの透過率に応じて、フリッカー成分の推定値の初期値、誤差分散共分散行列の初期値、システム雑音等を設定し、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
実施例7は、非線形カルマンフィルタを用いてフリッカーの振幅及び位相を推定する際に、フリッカーに関する情報を表示する例である。
実施例8は、映像信号の分割された領域毎に、映像信号を時間方向にフーリエ変換することで周波数成分数mを求め、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
〔実施例1〕
まず、実施例1について説明する。実施例1は、1つの周波数成分数m=1及び画素数が1の場合において、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
図6は、実施例1の映像処理装置の構成例を示すブロック図であり、図7は、実施例1の映像処理装置の処理例を示すフローチャートである。この映像処理装置1は、1つの周波数成分数m=1及び画素数が1の場合に適用する装置であり、映像信号からフリッカーを除去する。映像処理装置1は、非線形カルマンフィルタ11、フリッカー推定部21及び減算部30を備えている。
非線形カルマンフィルタ11は、予め設定されたフリッカー成分(行列)の推定値の初期値x^(0)、その誤差分散共分散行列の(推定値の)初期値P^(0)、システム雑音の標準偏差σv、定数b、及び観測雑音の標準偏差σwを入力する(ステップS701)。フリッカー成分の推定値の初期値x^(0)及び誤差分散共分散行列の初期値P^(0)は、ユーザにより任意の値に設定される。
非線形カルマンフィルタ11は、画素値y(k)を入力する(ステップS702)。そして、非線形カルマンフィルタ11は、画素値y(k)、フリッカー成分の推定値x^(k−1)及び誤差分散共分散行列P^(k−1)を用いて、図5に示したとおり、非線形カルマンフィルタ処理を行い、フリッカー成分の推定値x^(k)及び誤差分散共分散行列P^(k)を算出する(ステップS703)。非線形カルマンフィルタ11は、フリッカー成分の推定値x^(k)をフリッカー推定部21に出力する。
フリッカー成分の推定値x^(k)は、以下の式にて表される。
フリッカー推定部21は、非線形カルマンフィルタ11からフリッカー成分の推定値x^(k)を入力し、フリッカー成分の推定値x^(k)から、フリッカーの振幅x1^(k)及び位相x2^(k)を特定する(ステップS704)。
フリッカー推定部21は、以下の式にて、フリッカーの振幅x
1^(k)及び位相x
2^(k)から、振幅x
1^(k)及び位相x
2^(k)により定められる正弦関数のフリッカー画素値y’(k)を推定する(ステップS705)。そして、フリッカー推定部21は、フリッカー画素値y’(k)を減算部30に出力する。
減算部30は、画素値y(k)を入力すると共に、フリッカー推定部21からフリッカー画素値y’(k)を入力し、画素値y(k)からフリッカー画素値y’(k)を減算し、補正値z(k)を求める(ステップS706)。減算部30は、補正値z(k)を出力する(ステップS707)。これにより、画素値y(k)に対し、フリッカーが除去された補正値z(k)が得られる。
以上のように、実施例1の映像処理装置1によれば、周波数成分数m=1及び画素数が1の場合において、非線形カルマンフィルタ11は、画素値y(k)に対し非線形カルマンフィルタ処理を施し、フリッカー成分の推定値x^(k)及び誤差分散共分散行列P^(k)を算出する。
フリッカー推定部21は、フリッカー成分の推定値x^(k)からフリッカー画素値y’(k)を算出し、減算部30は、画素値y(k)からフリッカー画素値y’(k)を減算して補正値z(k)を求める。
これにより、映像信号の画素値y(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができ、映像信号のフリッカーを確実に抑制することが可能となる。また、オンライン処理にてフリッカーを抑制することができ、フレームメモリ等のハードウェアが不要となり、回路規模を小さくすることができる。
〔実施例2〕
次に、実施例2について説明する。実施例2は、複数の周波数成分数m>1及び画素数が1の場合において、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
図8は、実施例2の映像処理装置の構成例を示すブロック図であり、図9は、実施例2の映像処理装置の処理例を示すフローチャートである。この映像処理装置2は、複数の周波数成分数m>1及び画素数が1の場合に適用する装置であり、映像信号からフリッカーを除去する。映像処理装置2は、非線形カルマンフィルタ12、フリッカー推定部22及び減算部30を備えている。
非線形カルマンフィルタ12は、実施例1と同様に、予め設定されたフリッカー成分の推定値の初期値x^(0)、その誤差分散共分散行列の初期値P^(0)、システム雑音の標準偏差σv、定数b及び観測雑音の標準偏差σwを入力する。さらに、非線形カルマンフィルタ12は、予め設定された2以上の周波数成分数mを入力する(ステップS901)。
非線形カルマンフィルタ12は、画素値y(k)を入力する(ステップS902)。そして、非線形カルマンフィルタ12は、実施例1と同様に、画素値y(k)等を用いて非線形カルマンフィルタ処理を行い、フリッカー成分の推定値x^(k)及び誤差分散共分散行列P^(k)を算出する(ステップS903)。非線形カルマンフィルタ12は、フリッカー成分の推定値x^(k)をフリッカー推定部22に出力する。
フリッカー成分の推定値x^(k)は、以下の式にて表される。
フリッカー推定部22は、非線形カルマンフィルタ12からフリッカー成分の推定値x^(k)を入力する。そして、フリッカー推定部22は、フリッカー成分の推定値x^(k)から、フリッカーの振幅x1^(k),・・・,x2m-1^(k)及び位相x2^(k),・・・,x2m^(k)を特定する(ステップS904)。
フリッカー推定部22は、以下の式にて、フリッカーの振幅x
1^(k),・・・,x
2m-1^(k)及び位相x
2^(k),・・・,x
2m^(k)から、それぞれの周波数成分の正弦関数の和を求めることで、フリッカー画素値y’(k)を推定する(ステップS905)。そして、フリッカー推定部22は、フリッカー画素値y’(k)を減算部30に出力する。
減算部30は、画素値y(k)を入力すると共に、フリッカー推定部22からフリッカー画素値y’(k)を入力し、画素値y(k)からフリッカー画素値y’(k)を減算し、補正値z(k)を求める(ステップS906)。減算部30は、補正値z(k)を出力する(ステップS907)。これにより、画素値y(k)に対し、フリッカーが除去された補正値z(k)が得られる。
以上のように、実施例2の映像処理装置2によれば、複数の周波数成分数m>1及び画素数が1の場合において、非線形カルマンフィルタ12は、画素値y(k)に対し非線形カルマンフィルタ処理を施し、フリッカー成分の推定値x^(k)及び誤差分散共分散行列P^(k)を算出する。
フリッカー推定部22は、フリッカー成分の推定値x^(k)から、それぞれの周波数成分の正弦関数の和であるフリッカー画素値y’(k)を算出する。減算部30は、画素値y(k)からフリッカー画素値y’(k)を減算して補正値z(k)を求める。
これにより、実施例1と同様に、映像信号の画素値y(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができ、映像信号のフリッカーを確実に抑制することが可能となる。また、オンライン処理にてフリッカーを抑制することができ、フレームメモリ等のハードウェアが不要となり、回路規模を小さくすることができる。
〔実施例3〕
次に、実施例3について説明する。実施例3は、複数の周波数成分数m>1の場合において、映像信号が分割された領域毎に、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
イメージセンサーの中には、映像信号の数ラインを1つのブロックとして、ブロック毎に順番に映像信号を読み出すローリングシャッター方式を採用するものがある。このローリングシャッター方式では、ブロック毎に映像信号のフリッカーの位相が異なるため、映像信号を領域に分割して処理する必要がある。また、位相の異なる複数の照明光源下においては、映像信号の画像の領域に応じて、フリッカーの位相が異なるため、映像信号の画像を領域に分割して処理する必要がある。
図10は、実施例3の映像処理装置の構成例を示すブロック図であり、図11は、実施例3の映像処理装置の処理例を示すフローチャートである。この映像処理装置3は、複数の周波数成分数m>1、及び映像信号が分割された領域毎に適用する装置であり、映像信号の領域からフリッカーを除去する。
映像処理装置3は、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を備えている。
図12は、初期値テーブル41のデータ構成例を示す図である。初期値テーブル41には、映像信号が分割された領域α,β毎に、フリッカー成分の推定値の初期値xα,β^(0)及びその誤差分散共分散行列の初期値Pα,β^(0)の各データが格納されている。αは、領域の行方向のインデックスを示し、βは、領域の列方向のインデックスを示す。後述する図13等についても同様である。
図13は、システム雑音テーブル42のデータ構成例を示す図である。システム雑音テーブル42には、領域α,β毎に、システム雑音の標準偏差σvα,βのデータが格納されている。
図14は、定数テーブル43のデータ構成例を示す図である。定数テーブル43には、領域α,β毎に、定数bα,βのデータが格納されている。
図15は、観測雑音テーブル44のデータ構成例を示す図である。観測雑音テーブル44には、領域α,β毎に、観測雑音の標準偏差σwα,βのデータが格納されている。
図10及び図11に戻って、図示しない領域処理部は、映像信号を入力し、映像信号を複数の領域α,βに分割する。そして、領域処理部は、領域α,β毎に、当該領域α,β内のそれぞれの画素値y(k)を用いて平均を算出し、領域α,β内の画素値y(k)の平均値である画素値yα,β(k)を求める。そして、領域処理部は、画素値yα,β(k)を非線形カルマンフィルタ13に出力する。
非線形カルマンフィルタ13は、図示しない領域処理部から画素値yα,β(k)を入力する。そして、非線形カルマンフィルタ13は、状態ベクトルを、前記式(1)の漸化式に従い更新される領域α,βのフリッカー成分x(k)とし、観測値を、正弦波の和で記述される前記式(2)の漸化式に従い更新される領域α,βの画素値yα,β(k)としたモデルに対し、領域α,β毎に、フリッカー成分の推定値x^(k)を算出する。以下、詳細に説明する。
まず、非線形カルマンフィルタ13は、初期値テーブル41から、領域α,βに対応するフリッカー成分の推定値の初期値xα,β^(0)及びその誤差分散共分散行列の初期値Pα,β^(0)を読み出す。また、非線形カルマンフィルタ13は、システム雑音テーブル42から、領域α,βに対応するシステム雑音の標準偏差σvα,βを読み出し、定数テーブル43から、領域α,βに対応する定数bα,βを読み出す。また、非線形カルマンフィルタ13は、観測雑音テーブル44から、領域α,βに対応する観測雑音の標準偏差σwα,βを読み出す(ステップS1101)。さらに、非線形カルマンフィルタ13は、予め設定された2以上の周波数成分数mを入力する(ステップS1102)。
非線形カルマンフィルタ13は、図示しない領域処理部から、領域α,β内の画素値y(k)の平均値である画素値yα,β(k)を入力する(ステップS1103)。そして、非線形カルマンフィルタ13は、実施例1と同様に、画素値yα,β(k)等を用いて非線形カルマンフィルタ処理を行い、領域α,βについて、フリッカー成分の推定値x^(k)及び誤差分散共分散行列P^(k)を算出する(ステップS1104)。
つまり、非線形カルマンフィルタ13は、状態ベクトルを、所定の漸化式に従いフレーム毎に更新される領域α,βのフリッカー成分x(k)とし、観測値を、正弦波の和で記述される漸化式に従いフレーム毎に更新される領域α,βの画素値y(k)として、前記式(1)〜(4)で表すモデルの処理を行う。
非線形カルマンフィルタ13は、領域α,βのフリッカー成分の推定値x^(k)をフリッカー推定部23に出力する。領域α,βのフリッカー成分の推定値x^(k)は、前記式(27)のとおりである。
フリッカー推定部23は、非線形カルマンフィルタ13からフリッカー成分の推定値x^(k)を入力する。そして、フリッカー推定部23は、フリッカー成分の推定値x^(k)から、フリッカーの振幅x1^(k),・・・,x2m-1^(k)及び位相x2^(k),・・・,x2m^(k)を特定する(ステップS1105)。
フリッカー推定部23は、以下の式にて、フリッカーの振幅x
1^(k),・・・,x
2m-1^(k)及び位相x
2^(k),・・・,x
2m^(k)から、それぞれの周波数成分の正弦関数の和を求めることで、フリッカー画素値y’
α,β(k)を推定する(ステップS1106)。そして、フリッカー推定部23は、フリッカー画素値y’
α,β(k)を減算部30に出力する。
減算部30は、領域α,β内のそれぞれの画素値y(k)を入力すると共に、フリッカー推定部23からフリッカー画素値y’α,β(k)を入力する。そして、減算部30は、画素値y(k)からフリッカー画素値y’α,β(k)を減算し、領域α,β内のそれぞれの補正値z(k)を求める(ステップS1107)。減算部30は、補正値z(k)を出力する(ステップS1108)。これにより、領域α,β内のそれぞれの画素値y(k)に対し、フリッカーが除去された補正値z(k)が得られる。
以上のように、実施例3の映像処理装置3によれば、複数の周波数成分数m>1の場合において、非線形カルマンフィルタ13は、映像信号が分割された領域α,β毎に、初期値テーブル41等から、領域α,βに対応するフリッカー成分の推定値の初期値xα,β^(0)及びその誤差分散共分散行列の初期値Pα,β^(0)、システム雑音の標準偏差σvα,β、定数bα,β及び観測雑音の標準偏差σwα,βを読み出し、予め設定された2以上の周波数成分数mを入力する。
非線形カルマンフィルタ13は、フリッカー成分の推定値の初期値xα,β^(0)等を用いて、画素値yα,β(k)に対し、非線形カルマンフィルタ処理を施し、フリッカー成分の推定値x^(k)及び誤差分散共分散行列P^(k)を算出する。
フリッカー推定部23は、領域α,β毎に、フリッカー成分の推定値x^(k)から、それぞれの周波数成分の正弦関数の和であるフリッカー画素値y’ α,β(k)を算出する。減算部30は、領域α,β内のそれぞれの画素値y(k)からフリッカー画素値y’ α,β(k)を減算して補正値z(k)を求める。
これにより、領域α,β毎に、映像信号の画素値yα,β(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができ、映像信号のフリッカーを確実に抑制することが可能となる。つまり、ブロック毎に順番に映像信号を読み出すローリングシャッター方式を採用するイメージセンサーを用いた場合、及び、位相の異なる複数の照明光源を用いた場合であっても、映像信号のフリッカーを確実に抑制することができる。また、オンライン処理にてフリッカーを抑制することができ、フレームメモリ等のハードウェアが不要となり、回路規模を小さくすることができる。
〔実施例4〕
次に、実施例4について説明する。実施例4は、実施例3において、色毎のゲインに応じて、フリッカー成分の推定値の初期値xα,β^(0)等を設定し、色毎に、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
3板式カメラにおいては、色分解プリズムにて光をR(赤)、G(青)及びB(緑)各色に分解し、分解された光を3枚のイメージセンサーにて受光する。3板式カメラは、ホワイトバランスを整えるために、RGBのイメージセンサー毎に異なるゲインを用いることがあり、この場合は、RGBのイメージセンサー毎にノイズレベルが異なってくる。
同様に、単板式カメラにおいては、イメージセンサーの各画素に対応して設けられたカラーフィルタによってR,G,Bのうちのいずれか1色を選択し、透過された1色の光を受光する。このようなカメラの場合、R,G,Bの色毎に、フリッカー成分の推定値の初期値xα,β^(0)等を切り替えてUKFを使用する必要がある。
図16は、実施例4の映像処理装置の構成例を示すブロック図である。この映像処理装置4は、R,G,Bの色毎に異なるゲインに応じて、領域α,βに対応するフリッカー成分の推定値の初期値xα,β^(0)、その誤差分散共分散行列の初期値Pα,β^(0)、システム雑音の標準偏差σvα,β、定数bα,β及び観測雑音の標準偏差σwα,βを切り替え、色毎に、実施例3と同様の処理を行う。
映像処理装置4は、R,G,Bの色毎に、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44及びテーブル設定部50を備えている。
実施例3の映像処理装置3と実施例4の映像処理装置4とを比較すると、両映像処理装置3,4は、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を備えている点で共通する。一方、映像処理装置4は、テーブル設定部50を備えている点で、テーブル設定部50を備えていない映像処理装置3と相違する。
非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44は、実施例3と同様であるから、ここでは説明を省略する。
映像処理装置4は、R,G,BのうちのR色の処理を行う場合、映像信号のR色の画素値y(k)、及びR色のゲインを用いて処理を行う。図示しない領域処理部は、実施例3と同様の処理を行うことで、領域α,β内のR色の画素値y(k)の平均値である画素値yα,β(k)を求めて非線形カルマンフィルタ13に出力する。
図17は、実施例4のテーブル設定部50の処理例を示すフローチャートである。テーブル設定部50は、R色のゲインを入力する(ステップS1701)。そして、テーブル設定部50は、予め設定されたゲイン毎の初期値テーブル、システム雑音テーブル、定数テーブル及び観測雑音テーブルのテーブル群から、入力したゲインに対応する初期値テーブル、システム雑音テーブル、定数テーブル及び観測雑音テーブルを選択し、各データを読み出す(ステップS1702)。
テーブル設定部50は、読み出した初期値テーブル(ゲインに対応する初期値テーブル)の各データを初期値テーブル41に格納することで、初期値テーブル41を設定する。テーブル設定部50は、同様にして、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する(ステップS1703)。
映像処理装置4は、G色の処理を行う場合、R色の処理と同様に、映像信号のG色の画素値y(k)、及びG色のゲインを用いて処理を行う。テーブル設定部50は、図17に示した処理により、G色のゲインに対応する初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する。
映像処理装置4は、B色の処理を行う場合、R,G色の処理と同様に、映像信号のB色の画素値y(k)、及びB色のゲインを用いて処理を行う。テーブル設定部50は、図17に示した処理により、B色のゲインに対応する初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する。
以上のように、実施例4の映像処理装置4によれば、テーブル設定部50は、R,G,Bの色毎のゲインに対応した初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する。
非線形カルマンフィルタ13、フリッカー推定部23及び減算部30は、R,G,Bの色毎に、実施例3と同様の処理を行う。
これにより、R,G,Bの色のそれぞれについて、異なるフリッカー成分の推定値の初期値xα,β^(0)等を用いて、領域α,β毎に、映像信号の画素値yα,β(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができる。結果として、映像信号のフリッカーを確実に抑制することが可能となる。また、オンライン処理にてフリッカーを抑制することができ、フレームメモリ等のハードウェアが不要となり、回路規模を小さくすることができる。
尚、実施例4の映像処理装置4は、R,G,Bの色毎のゲインに応じて、フリッカー成分の推定値の初期値xα,β^(0)等を設定し、これらの色毎に、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定するようにした。これに対し、映像処理装置4は、R,G,B,Y(輝度)の色毎のゲインに応じて、またはY,Cb,Crの色毎のゲインに応じて、前述の処理を行うようにしてもよい。本発明は、色の種別を限定するものではない。
〔実施例5〕
次に、実施例5について説明する。実施例5は、実施例3において、CCフィルタにより変換された照明光の色温度に応じて、フリッカー成分の推定値の初期値xα,β^(0)等を設定し、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
放送用カメラにおいては、一般に照明光の色温度を変換するために、CCフィルタを内蔵していることがある。CCフィルタを用いることにより、照明光の色が補正され強調される。
CCフィルタにより変換された照明光の色温度によって、イメージセンサーに入射する像面照度が変化し、ノイズレベルが異なってくる。このような放送用カメラの場合、CCフィルタにより変換された照明光の色温度毎に、フリッカー成分の推定値の初期値xα,β^(0)等を切り替えてUKFを使用する必要がある。
図18は、実施例5の映像処理装置の構成例を示すブロック図である。この映像処理装置5は、CCフィルタにより変換された照明光の色温度に応じて、領域α,βに対応するフリッカー成分の推定値の初期値xα,β^(0)、その誤差分散共分散行列の初期値Pα,β^(0)、システム雑音の標準偏差σvα,β、定数bα,β及び観測雑音の標準偏差σwα,βを切り替え、実施例3と同様の処理を行う。
映像処理装置5は、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44及びテーブル設定部60を備えている。
実施例3の映像処理装置3と実施例5の映像処理装置5とを比較すると、両映像処理装置3,5は、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を備えている点で共通する。一方、映像処理装置5は、テーブル設定部60を備えている点で、テーブル設定部60を備えていない映像処理装置3と相違する。
非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44は、実施例3と同様であるから、ここでは説明を省略する。また、図示しない領域処理部も実施例3と同様であるから、ここでは説明を省略する。
映像処理装置5は、CCフィルタを内蔵しており、映像信号の画素値y(k)及び色温度を用いた処理を行う。
テーブル設定部60は、図17に示した処理において、ゲインの代わりに、CCフィルタにより変換された照明光の色温度を用いる。具体的には、テーブル設定部60は、CCフィルタにより変換された照明光の色温度を入力し、予め設定された色温度毎の初期値テーブル、システム雑音テーブル、定数テーブル及び観測雑音テーブルのテーブル群から、入力した色温度に対応する初期値テーブル、システム雑音テーブル、定数テーブル及び観測雑音テーブルを選択し、各データを読み出す。
テーブル設定部60は、読み出した初期値テーブル(色温度に対応する初期値テーブル)の各データを初期値テーブル41に格納することで、初期値テーブル41を設定する。テーブル設定部60は、同様にして、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する。
以上のように、実施例5の映像処理装置5によれば、テーブル設定部60は、CCフィルタにより変換された照明光の色温度に対応した初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する。
非線形カルマンフィルタ13、フリッカー推定部23及び減算部30は、色温度毎に、実施例3と同様の処理を行う。
これにより、CCフィルタにより変換された照明光の色温度について、他の色温度とは異なるフリッカー成分の推定値の初期値xα,β^(0)等を用いて、領域α,β毎に、映像信号の画素値yα,β(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができる。結果として、映像信号のフリッカーを確実に抑制することが可能となる。また、オンライン処理にてフリッカーを抑制することができ、フレームメモリ等のハードウェアが不要となり、回路規模を小さくすることができる。
〔実施例6〕
次に、実施例6について説明する。実施例6は、実施例3において、NDフィルタの透過率に応じて、フリッカー成分の推定値の初期値xα,β^(0)等を設定し、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
放送用カメラにおいては、一般にレンズの絞りの値を一定に保つために、NDフィルタを内蔵していることがある。NDフィルタを用いることにより、光強度を低下させることができる。この光強度を低下させる程度を定める係数が透過率であり、透過率によりNDフィルタの特性が定められる。
NDフィルタの透過率によって、イメージセンサーに入射する像面照度が変化し、ノイズレベルが異なってくる。このような放送用カメラの場合、NDフィルタの透過率毎に、フリッカー成分の推定値の初期値xα,β^(0)等を切り替えてUKFを使用する必要がある。
図19は、実施例6の映像処理装置の構成例を示すブロック図である。この映像処理装置6は、NDフィルタの透過率に応じて、領域α,βに対応するフリッカー成分の推定値の初期値xα,β^(0)、その誤差分散共分散行列の初期値Pα,β^(0)、システム雑音の標準偏差σvα,β、定数bα,β及び観測雑音の標準偏差σwα,βを切り替え、実施例3と同様の処理を行う。
映像処理装置6は、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44及びテーブル設定部70を備えている。
実施例3の映像処理装置3と実施例6の映像処理装置6とを比較すると、両映像処理装置3,6は、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を備えている点で共通する。一方、映像処理装置6は、テーブル設定部70を備えている点で、テーブル設定部70を備えていない映像処理装置3と相違する。
非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44は、実施例3と同様であるから、ここでは説明を省略する。また、図示しない領域処理部も実施例3と同様であるから、ここでは説明を省略する。
映像処理装置6は、NDフィルタを内蔵しており、映像信号の画素値y(k)及び透過率を用いた処理を行う。
テーブル設定部70は、図17に示した処理において、ゲインの代わりに、NDフィルタの透過率を用いる。具体的には、テーブル設定部70は、NDフィルタの透過率を入力し、予め設定された透過率毎の初期値テーブル、システム雑音テーブル、定数テーブル及び観測雑音テーブルのテーブル群から、入力した透過率に対応する初期値テーブル、システム雑音テーブル、定数テーブル及び観測雑音テーブルを選択し、各データを読み出す。
テーブル設定部70は、読み出した初期値テーブル(透過率に対応する初期値テーブル)の各データを初期値テーブル41に格納することで、初期値テーブル41を設定する。テーブル設定部70は、同様にして、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する。
以上のように、実施例6の映像処理装置6によれば、テーブル設定部70は、NDフィルタの透過率に対応した初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を設定する。
非線形カルマンフィルタ13、フリッカー推定部23及び減算部30は、透過率毎に、実施例3と同様の処理を行う。
これにより、NDフィルタの透過率について、他の透過率とは異なるフリッカー成分の推定値の初期値xα,β^(0)等を用いて、領域α,β毎に、映像信号の画素値yα,β(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができる。結果として、映像信号のフリッカーを確実に抑制することが可能となる。また、オンライン処理にてフリッカーを抑制することができ、フレームメモリ等のハードウェアが不要となり、回路規模を小さくすることができる。
〔実施例7〕
次に、実施例7について説明する。実施例7は、非線形カルマンフィルタを用いてフリッカーの振幅及び位相を推定する際に、フリッカーに関する情報を表示する例である。
図20は、実施例7の映像処理装置の構成例を示すブロック図であり、実施例3により推定された映像信号のフリッカーに関する情報を表示する場合の構成を示している。この映像処理装置7は、非線形カルマンフィルタ13、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44、フリッカー成分表示部80及びモニタ部81を備えている。
非線形カルマンフィルタ13、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44は、実施例3と同様であるから、ここでは説明を省略する。また、図示しない領域処理部も実施例3と同様であるから、ここでは説明を省略する。
非線形カルマンフィルタ13は、領域α,βのフリッカー成分の推定値x^(k)をフリッカー成分表示部80に出力する。
フリッカー成分表示部80は、領域α,β内のそれぞれの画素値y(k)を入力すると共に、非線形カルマンフィルタ13から領域α,βのフリッカー成分の推定値x^(k)を入力する。
フリッカー成分表示部80は、フリッカー成分の推定値x^(k)から、その振幅x1^(k),・・・,x2m-1^(k)及び位相x2^(k),・・・,x2m^(k)を特定する。そして、フリッカー成分表示部80は、フリッカーのm個の角周波数ωiと、フリッカー成分のm個の振幅x1^(k),・・・,x2m-1^(k)及びm個の位相x2^(k),・・・,x2m^(k)とをそれぞれ対応付ける。
フリッカー成分表示部80は、対応付けた角周波数ωi及び振幅x1^(k),・・・,x2m-1^(k)、並びに対応付けた角周波数ωi及び位相x2^(k),・・・,x2m^(k)をモニタ部81に出力し、例えばグラフにて画面表示する。また、フリッカー成分表示部80は、領域α,β内のそれぞれの画素値y(k)をモニタ部81に出力し、映像を画面表示する。
図21は、実施例7の第1表示例を説明する図であり、実施例3により推定された映像信号のフリッカーに関する情報を表示する例を示している。上図の横軸は周波数、縦軸は振幅を示す。下図の横軸は周波数、縦軸は位相を示す。
フリッカー成分表示部80は、上図のとおり、領域α,βの示す領域a1、領域a2、領域a3及び領域a4について、角周波数ωiに対応する周波数10,20,・・・毎に、それぞれの振幅x1^(k),・・・,x2m-1^(k)をグラフ表示する。これにより、ユーザは、同じ周波数のフリッカーについて、複数の領域α,βにおける振幅の違いを認識することができる。
また、フリッカー成分表示部80は、下図のとおり、領域α,βの示す領域a1、領域a2、領域a3及び領域a4について、角周波数ωiに対応する周波数10,20,・・・毎に、それぞれの位相x2^(k),・・・,x2m^(k)をグラフ表示する。これにより、ユーザは、同じ周波数のフリッカーについて、複数の領域α,βにおける位相の違いを認識することができる。
図22は、実施例7の第2表示例を説明する図であり、実施例4により推定された映像信号の所定の領域α,βにおけるフリッカーに関する情報を表示する例を示している。前述のとおり、実施例4は、色毎のゲインに応じて、フリッカーの振幅及び位相を推定するものである。上図の横軸は周波数、縦軸は振幅を示し、下図の横軸は周波数、縦軸は位相を示す。また、図22では、R,G,B,Yの色を対象とした場合のグラフを示している。
フリッカー成分表示部80は、上図のとおり、R,G,B,Yの色について、角周波数ωiに対応する周波数10,20,・・・毎に、所定の領域α,βにおけるそれぞれの振幅x1^(k),・・・,x2m-1^(k)をグラフ表示する。これにより、ユーザは、同じ周波数のフリッカーについて、複数の色における振幅の違いを認識することができる。
また、フリッカー成分表示部80は、下図のとおり、R,G,B,Yの色について、角周波数ωiに対応する周波数10,20,・・・毎に、所定の領域α,βにおけるそれぞれの位相x2^(k),・・・,x2m^(k)をグラフ表示する。これにより、ユーザは、同じ周波数のフリッカーについて、複数の色における位相の違いを認識することができる。
図23は、実施例7の第3表示例を説明する図である。図23において、格子はそれぞれの領域α,βを示す。格子における太線の枠は、対応する領域α,βにおいて、フリッカーの振幅が一定値以上であることを示す。
フリッカー成分表示部80は、領域α,β毎に、フリッカーの振幅x1^(k),・・・,x2m-1^(k)のそれぞれと、予め設定された閾値とを比較する。そして、フリッカー成分表示部80は、フリッカーの振幅x1^(k),・・・,x2m-1^(k)のいずれかが閾値以上であると判定した場合、当該領域α,βのフリッカーの振幅が一定値以上であり、フリッカーが発生している領域α,βであると判断する。
フリッカー成分表示部80は、領域α,β内のそれぞれの画素値yα,β(k)を画面表示すると共に、フリッカーが発生していると判断した領域α,βについて、当該領域α,βを枠で囲んで表示する。これにより、フリッカーが発生している領域α,βを識別可能な形態にて映像信号が表示されるから、ユーザは、フリッカーが発生している領域α,βを認識することができる。
尚、フリッカー成分表示部80は、実施例4を適用して、色毎に推定された映像信号のフリッカーに関する情報を表示する場合、特定の色について、フリッカーの振幅が一定値以上であると判断した場合、前述と同じ枠を当該領域α,βに表示する。この場合、フリッカー成分表示部80は、当該領域α,βの枠を、フリッカーの振幅が一定値以上であると判断した色または当該色に対応する線種で表示するようにしてもよいし、色に対応する塗りつぶし形態で表示するようにしてもよい。これにより、フリッカーが発生している色及び領域α,βを識別可能な形態にて映像信号が表示されるから、ユーザは、フリッカーが発生している色及び領域α,βを認識することができる。
以上のように、実施例7の映像処理装置7によれば、フリッカー成分表示部80は、領域α,βのフリッカー成分の推定値x^(k)から、フリッカーの振幅x1^(k),・・・,x2m-1^(k)及び位相x2^(k),・・・,x2m^(k)を特定する。そして、フリッカー成分表示部80は、角周波数ωiと振幅x1^(k),・・・,x2m-1^(k)及び位相x2^(k),・・・,x2m^(k)とを対応付けてグラフ表示する。また、フリッカー成分表示部80は、フリッカーの振幅が一定値以上であると判断した領域α,βを表示する。
これにより、領域α,β毎に、映像信号の画素値yα,β(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができる。そして、このフリッカー成分x(k)である振幅及び位相を用いてフリッカーの画素値を推定し、これを元の映像信号の画素値y(k)から減算することで、映像信号のフリッカーを確実に抑制することができる。また、フリッカーに関する情報を表示するようにしたから、ユーザは、領域α,β毎に、フリッカーの発生、程度等を認識することができる。
尚、実施例7は、実施例1〜6及び後述する実施例8に適用するようにしてもよい。つまり、実施例1〜6の映像処理装置1〜6は、図6等の構成部に加え、さらに、フリッカー成分表示部80及びモニタ部81を備えるようにしてもよい。後述する実施例8についても同様である。
〔実施例8〕
次に、実施例8について説明する。実施例8は、映像信号が分割された領域毎に、映像信号を時間方向にフーリエ変換することで周波数成分数mを求め、非線形カルマンフィルタを用いて、フリッカーの振幅及び位相を推定する例である。
一般に、複数の光源が不特定の振幅及び位相で点灯すると、領域α,βによっては、フリッカーの周波数成分の数が異なることがある。この場合、領域α,β毎に、周波数成分数mα,βを変更してUKFを使用する必要がある。
図24は、実施例8の映像処理装置の構成例を示すブロック図である。この映像処理装置8は、実施例3を前提として構成され、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44、周波数テーブル45及び周波数成分数設定部82を備えている。
実施例3の映像処理装置3と実施例8の映像処理装置8とを比較すると、両映像処理装置3,8は、非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44を備えている点で共通する。一方、映像処理装置8は、周波数テーブル45及び周波数成分数設定部82を備えている点で、これらを備えていない映像処理装置3と相違する。
非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44は、実施例3と同様であるから、ここでは説明を省略する。また、図示しない領域処理部も実施例3と同様であるから、ここでは説明を省略する。
この場合、非線形カルマンフィルタ13は、初期値テーブル41から、領域α,βに対応するフリッカー成分の推定値の初期値xα,β^(0)及びその誤差分散共分散行列の初期値Pα,β^(0)を読み出す。また、非線形カルマンフィルタ13は、システム雑音テーブル42から、領域α,βに対応するシステム雑音の標準偏差σvα,βを読み出し、定数テーブル43から、領域α,βに対応する定数bα,βを読み出す。また、非線形カルマンフィルタ13は、観測雑音テーブル44から、領域α,βに対応する観測雑音の標準偏差σwα,βを読み出す。
さらに、非線形カルマンフィルタ13は、周波数テーブル45から、領域α,βに対応する周波数成分数mα,βを読み出す。
図25は、周波数テーブル45のデータ構成例を示す図である。周波数テーブル45には、映像信号が分割された領域α,β毎に、周波数成分数mα,βが格納されている。周波数テーブル45の周波数成分数mα,βは、周波数成分数設定部82により格納される。
図24に戻って、周波数成分数設定部82は、非線形カルマンフィルタ13の処理に先立って、図示しない領域処理部から、領域α,β内の画素値y(k)の平均値である画素値yα,β(k)を入力する。
前述のとおり、図示しない領域処理部は、複数の映像信号のフレームを順番に入力し、映像信号のフレーム毎に、当該フレームを複数の領域α,βに分割して、領域α,β内の画素値y(k)の平均値である画素値yα,β(k)を求める。
周波数成分数設定部82は、領域α,β内の画素値y(k)の平均値である画素値yα,β(k)をフーリエ変換し、周波数成分毎の振幅を求める。そして、周波数成分数設定部82は、閾値処理により、予め設定された所定値以上の振幅を有する周波数成分の数を求め、これを周波数成分数mα,βとする。周波数成分数設定部82は、領域α,βに対応する周波数成分数mα,βを周波数テーブル45に格納する。
図26は、周波数成分数設定部82の構成例を示すブロック図である。この周波数成分数設定部82は、バッファ83、フーリエ変換手段84及び閾値処理手段85を備えている。周波数成分数設定部82は、非線形カルマンフィルタ13の処理が行われる前に、領域α,βに対応する周波数成分数mα,βを求め、これを周波数テーブル45に格納(設定)する。
周波数成分数設定部82は、図示しない領域処理部から、領域α,β内の画素値y(k)の平均値である画素値yα,β(k)を入力し、これをバッファ83に格納する。画素値yα,β(k)は、領域α,β内における画素値y(k)の空間方向の平均値である。
フーリエ変換手段84は、バッファ83から、画素値yα,β(k)を読み出し、画素値yα,β(k)を時間方向に離散フーリエ変換し、周波数成分毎の振幅を求め、周波数成分毎の振幅を閾値処理手段85に出力する。
閾値処理手段85は、フーリエ変換手段84から周波数成分毎の振幅を入力し、周波数成分毎の振幅と、予め設定された閾値とを比較する。そして、閾値処理手段85は、振幅が閾値以上の周波数成分を特定し、特定した周波数成分の数を求め、これを周波数成分数mα,βとする。閾値処理手段85は、領域α,βに対応する周波数成分数mα,βを周波数テーブル45に格納する。これにより、領域α,β毎の周波数成分数mα,βが周波数テーブル45に格納される。
以上のように、実施例8の映像処理装置8によれば、周波数成分数設定部82は、領域α,β内の画素値y(k)の平均値である画素値yα,β(k)を時間方向に離散フーリエ変換し、周波数成分毎の振幅を求める。そして、周波数成分数設定部82は、閾値処理により、所定値以上の振幅を有する周波数成分の数を求め、これを周波数成分数mα,βとし、領域α,βに対応する周波数成分数mα,βを周波数テーブル45に格納する。
非線形カルマンフィルタ13は、領域α,β毎に、初期値テーブル41等から、領域α,βに対応するフリッカー成分の推定値の初期値xα,β^(0)等を読み出し、さらに、周波数テーブル45から領域α,βに対応する周波数成分数mα,βを読み出す。そして、非線形カルマンフィルタ13は、フリッカー成分の推定値の初期値xα,β^(0)等を用いて、画素値yα,β(k)に対し、非線形カルマンフィルタ処理を施し、フリッカー成分の推定値x^(k)及び誤差分散共分散行列P^(k)を算出する。
フリッカー推定部23は、領域α,β毎に、フリッカー成分の推定値x^(k)から、それぞれの周波数成分の正弦関数の和であるフリッカー画素値y’ α,β(k)を算出する。減算部30は、領域α,β内のそれぞれの画素値y(k)からフリッカー画素値y’ α,β(k)を減算して補正値z(k)を求める。
これにより、領域α,β毎に、当該領域α,βに対応する周波数成分数mα,βを用いて、映像信号の画素値yα,β(k)から映像信号のフリッカー成分x(k)である振幅及び位相を高精度に推定することができる。そして、映像信号のフリッカーを確実に抑制することが可能となる。また、オンライン処理にてフリッカーを抑制することができ、フレームメモリ等のハードウェアが不要となり、回路規模を小さくすることができる。
尚、実施例8は、実施例3だけでなく、実施例1,2,4〜7についても適用がある。
以上、実施例1〜8を挙げて本発明を説明したが、本発明は前記実施例1〜8に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、前記実施例1〜8では、非線形カルマンフィルタの一つとしてUKFを適用したが、他の非線形カルマンフィルタを用いてもよい。
また、非線形カルマンフィルタの代わりに、粒子フィルタ(パーティクルフィルタ:Particle Filter)を用いてもよい。粒子フィルタは、非線形カルマンフィルタと同様に、前記式(1)〜(4)で表されるモデルに対し、フリッカー成分x(k)を推定する。
また、前記実施例7では、図21〜図23に示したように、フリッカーに関する情報を画面表示するようにしたが、これらは一例である。本発明は、フリッカーに関する情報の画面表示形態を、図21〜図23に限定するものではない。
尚、本発明の実施例1〜8の映像処理装置1〜8のハードウェア構成としては、通常のコンピュータを使用することができる。映像処理装置1〜8は、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。
映像処理装置1に備えた非線形カルマンフィルタ11、フリッカー推定部21及び減算部30の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。また、映像処理装置2に備えた非線形カルマンフィルタ12、フリッカー推定部22及び減算部30の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
また、映像処理装置3に備えた非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43及び観測雑音テーブル44の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
また、映像処理装置4に備えた非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44及びテーブル設定部50の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
また、映像処理装置5に備えた非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44及びテーブル設定部60の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
また、映像処理装置6に備えた非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44及びテーブル設定部70の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
また、映像処理装置7に備えた非線形カルマンフィルタ13、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44、フリッカー成分表示部80及びモニタ部81の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
また、映像処理装置8に備えた非線形カルマンフィルタ13、フリッカー推定部23、減算部30、初期値テーブル41、システム雑音テーブル42、定数テーブル43、観測雑音テーブル44、周波数テーブル45及び周波数成分数設定部82の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
これらのプログラムは、前記記憶媒体に格納されており、CPUに読み出されて実行される。また、これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。