以下、本発明の実施形態について図面を参照して説明する。図1は、本実施形態における映像フィルタリング装置1の構成を示すブロック図である。映像フィルタリング装置1は、映像データ取得部10、パラメータ取得部11、辞書記憶部12、フィルタリング処理部13、フィルタ係数記憶部14、辞書生成部20、最適化処理部30を備える。
映像データ取得部10は、外部から供給される映像信号を受信して映像データ、すなわち動画像を構成する画像フレームデータを出力する。以下の説明では、画像のフレームデータを、単に、フレームともいう。また、映像データ取得部10が出力するフレームを、フィルタリング処理後の符号化対象のフレーム等と区別するために、原フレームともいう。なお、外部から供給される映像信号のフレームレートは、例えば、10000[fps]等の高フレームレートであるものとする。パラメータ取得部11は、外部から供給されるパラメータを取得する。このパラメータは、フィルタリング処理部13によってフィルタ処理されることにより生成されるフレームレートを定めるパラメータであり、後述するパラメータMである。
フィルタ係数記憶部14は、最適化処理部30によって最適化されたフィルタ係数を記憶する。フィルタリング処理部13は、映像データ取得部10が出力する映像データを取り込み、フィルタ係数記憶部14に記憶されているフィルタ係数により映像データのフレームを時間軸方向の線形和として合成する時間フィルタリングを行う。また、フィルタリング処理部13は、当該時間フィルタリングにより映像データ取得部10が外部から取得した映像信号のフレームレートよりも低いフレームレートの映像信号を出力する。辞書記憶部12は、辞書生成部20によって生成される、フィルタ係数の最適化を行う際の候補となるフィルタ係数候補ベクトルを記憶する。
辞書生成部20は、合成フレーム生成部21、符号化処理部22、符号量予測パラメータ算出部23、フィルタ係数候補算出部24、合成フレーム記憶部25、符号量予測パラメータ記憶部26、初期フィルタ係数記憶部27、重み係数記憶部28を備える。辞書生成部20において、初期フィルタ係数記憶部27は、例えば、フィルタ係数が一定値である平均フィルタを予め記憶する。重み係数記憶部28は、フィルタ係数候補ベクトルの算出の際に適用される重み係数λを予め記憶する。合成フレーム記憶部25は、合成フレーム生成部21が生成する合成フレームを記憶する。符号量予測パラメータ記憶部26は、符号量予測パラメータ算出部23が算出する符号量予測パラメータαを記憶する。
合成フレーム生成部21は、初期フィルタ係数記憶部27に予め記憶されている初期フィルタ係数ベクトルを読み出し、読み出したフィルタ係数ベクトルを映像データ取得部10が出力する動画像のフレームに適用して合成フレームを生成する。また、合成フレーム生成部21は、生成した合成フレームを合成フレーム記憶部25に書き込んで記憶させる。符号化処理部22は、内部に符号化器を備えており、合成フレーム記憶部25に記憶されている合成フレームに対して符号化を行う。また、符号化処理部22は、符号化処理の過程において、合成フレームごとに動き補償フレーム間予測誤差の発生符号量(以下、予測誤差符号量ともいう)と、当該予測誤差の二乗誤差和(以下、予測誤差電力ともいう)とを算出する。ここで、符号化処理部22に適用される符号化器は、利用者によって予め指定され、例えば、H.264準拠の符号化器が適用される。
符号量予測パラメータ算出部23は、符号化処理部22が符号化した全ての合成フレームに対する予測誤差符号量と予測誤差電力の組に基づいて、当該組ごとに符号量予測パラメータαを算出する。また、符号量予測パラメータ算出部23は、算出した符号量予測パラメータαを符号量予測パラメータ記憶部26に書き込んで記憶させる。フィルタ係数候補算出部24は、符号量予測パラメータ記憶部26に記憶されている符号量予測パラメータαを読み出す。また、フィルタ係数候補算出部24は、読み出した符号量予測パラメータαと、予め定められるフィルタ設計の評価尺度の近似値を算出する演算式とに基づいて、当該近似値を最小化するフィルタ係数ベクトルを算出する。また、フィルタ係数候補算出部24は、算出したフィルタ係数ベクトルを、最適化処理部30が行うフィルタ係数ベクトルの最適化の際に候補となるフィルタ係数候補ベクトルとして辞書記憶部12に書き込んで記憶させる。
最適化処理部30は、符号化対象フレーム生成部31、累積コスト算出部32、フィルタ係数同定部33、累積コスト記憶部34、フィルタ係数インデックス記憶部35、原フレーム記憶部36、符号化対象フレーム記憶部37、重み係数記憶部38を備える。最適化処理部30において、重み係数記憶部38は、累積コスト算出部32が、累積コストを算出する際に適用する重み係数λを予め記憶する。なお、この重み係数λは、辞書生成部20の重み係数記憶部28に記憶されている重み係数λと同一の値である。
累積コスト記憶部34は、累積コスト算出部32が算出する累積コストと、累積コスト算出部32が累積コストを算出する処理の過程における最小値の累積コストとを記憶する。フィルタ係数インデックス記憶部35は、累積コスト算出部32が、算出した累積コストに基づいて辞書記憶部12から選択したフィルタ係数候補ベクトルを示すインデックスを記憶する。原フレーム記憶部36は、映像データ取得部10が出力する原フレームを記憶する。符号化対象フレーム記憶部37は、符号化対象フレーム生成部31が生成する符号化対象フレームを記憶する。
符号化対象フレーム生成部31は、映像データ取得部10が出力する動画像のフレームと、パラメータ取得部11が取得するフレームレートを定めるパラメータと、辞書記憶部12に記憶されているフィルタ係数候補ベクトルとに基づいて、時間フィルタリングを行い、符号化対象フレームを生成する。また、符号化対象フレーム生成部31は、生成した符号化対象フレームを符号化対象フレームに書き込んで記憶させる。また、符号化対象フレーム生成部31は、映像データ取得部10が出力する原フレームを取り込む際、原フレームを原フレーム記憶部36に書き込んで記憶させる。
累積コスト算出部32は、重み係数記憶部38に予め記憶されている重み係数λと、累積コスト記憶部34に記憶されている前ステージの処理での累積コストと、符号化対象フレーム記憶部37に記憶されている符号化対象フレームと、原フレーム記憶部36に記憶されている原フレームとに基づいて累積コストを算出する。また、累積コスト算出部32は、累積コストを算出する際に符号化処理を行うため、辞書生成部20の符号化処理部22が備える符号化器と同一の符号化器を備える。また、累積コスト算出部32は、算出した累積コストを累積コスト記憶部34に書き込んで記憶させる。また、累積コスト算出部32は、算出した累積コストの中で最小値の累積コストを検出し、検出した最小値の累積コストを累積コスト記憶部34に書き込んで記憶させる。また、累積コスト算出部32は、最小値の累積コストに対応するフィルタ係数候補ベクトルのインデックスをフィルタ係数インデックス記憶部35に書き込んで記憶させる。
フィルタ係数同定部33は、フィルタ係数インデックス記憶部35に記憶されているフィルタ係数候補ベクトルのインデックスに基づいて、フィルタ係数が適用される参照フレームごとの最適なフィルタ係数ベクトルを定めていく同定処理を行う。また、フィルタ係数同定部33は、当該同定処理により選択した参照フレームごとのフィルタ係数ベクトルをフィルタ係数記憶部14に書き込んで記憶させる。
(表記法)
本実施形態では、高い時間解像度で撮影された映像を用いて符号化に適した映像を生成する時間フィルタをアルゴリズムを用いて導き出す。まず、(2Δ+1)タップの時間フィルタにより生成される第iフレームは、次式(1)により示される。
なお、表記の簡略化のため、各フレームを一次元信号として示している。上記の時間フィルタにより生成されるフレームを合成フレームという。したがって、式(1)は、第i合成フレームを示す。iは、ダウンサンプリング、すなわち時間フィルタリングしてフレームレートが低くなった合成フレームを指定するインデックスであり、非負の整数値である。式(1)においてδtは、時間フィルタの入力映像信号のフレーム間隔であり、各フレームは、t=jδt(j=0,1,・・・)のタイミングにおいてサンプリングされる。式(1)の右辺のf(x,t)(x=0,・・・,X−1)は、第tフレームの位置xにおける画素値である。wi[j]は、参照フレームに対するフィルタ係数であり、次式(2)の関係を満たす。
式(1)の左辺において、太文字のwで示されるベクトルwiは、式(3)に示すようにフィルタ係数(wi[−Δ],・・・,wi[Δ])を要素とするベクトルであり、このベクトルをフィルタ係数ベクトルという。piは、フィルタ位置を補正するパラメータである。
なお、以下の説明において、ベクトルについては式中では太文字で表し、文中においては、上記のベクトルwiのように「ベクトル」の文字を付けて、ベクトルでない変数と区別して示すものとする。また、式(1)の左辺のように「^」を付けた記号は、式中では、式(4)に示すように記号fの上に「^」を付けて示し、文中では「^f」のように表記する。
Mは、時間フィルタにより生成される映像のフレームレートを定めるパラメータであり、前述したように、パラメータ取得部11が外部から取得する。式(1)の場合、映像フィルタリング装置1のフィルタリング処理部13が出力する時間フィルタリング後の映像信号のフレームレートは1/(Mδi)である。なお、本実施形態では、2Δ+1≦Mであるとする。式(1)の特殊形として、フィルタ係数を一定値、すなわちwi[j]=1/(2Δ+1)とするフィルタがあり、このフィルタを平均フィルタという。平均フィルタにより出力される第iフレームは次式(5)によって示される。
フィルタ係数ベクトルとして選択される候補となるベクトルとして、次式(6)で示されるN種類のフィルタ係数候補ベクトルγnを仮定する。
さらに、これらのフィルタ係数を適用する位置として、P通りの位置が選択可能であるとする。各フレームでは、N×P通りのN種類のフィルタ係数候補ベクトルの中から、符号化フレームを生成するために最適となるフィルタ係数ベクトルが選択される。フィルタ係数候補ベクトルの集合を辞書データとよび、この辞書データが辞書記憶部12に記憶される。また、以下の説明では、表記を簡略化するため、N種類のフィルタ係数候補ベクトルからなる辞書データ、すなわち辞書記憶部12に記憶されているフィルタ係数候補ベクトルの集合を式(7)のようにベクトルΓNとして示す。
(フィルタ係数の最適化基準)
本実施形態では、時間フィルタの設計における最適化基準として、時間フィルタリングにより生成されたフレームに対する発生符号量を用いる。発生符号量は、動き補償予測(MC(Motion Compensation)予測)を伴う可逆符号化器を用いて算出することができる。例えば、X画素からなるフレームをK分割して、分割区間ごとに動き補償フレーム間予測を行うとする。すなわち、次式(8)に示すフレームをサイズX/Kの区間B[k](k=0,1,・・・,K−1)に分割し、次式(9)に示すフレームを参照フレームとして、各区間B[k](k=0,1,・・・,K−1)に対して次式(10)で示される推定変位量ベクトルdiの動き補償を行うとする。
この場合、フレーム内の動き補償フレーム間予測誤差は、次式(11)として示される。
この動き補償フレーム間予測誤差を符号化対象とする符号化器の発生符号量は次式(12)によって示される。
式(12)において、式(13)で示されるReは、動き補償フレーム間予測誤差に対する符号量、Rd(di[0],・・・,di[K−1])は、推定変位量di[0],・・・,di[K−1]に対する符号量であり、Rhは、符号化器が生成するヘッダー情報の符号量である。
可逆符号化器の発生符号量を用いる場合、動き補償フレーム間予測誤差は、符号化対象フレーム及び参照フレームのみに依存する。したがって、式(12)における発生符号量Ψ[wi,wi−1,pi,pi−1](ただし、wは、ベクトルである)は、変位量及びヘッダー情報が定まれば、第iフレームに対するフィルタ係数ベクトルwi、フィルタ位置の補正パラメータpi、及び第i−1フレームに対するフィルタ係数ベクトルwi−1、フィルタ位置の補正パラメータpi−1により定まる。
次に、時間フィルタリングにより生成されたフレームと、時間フィルタリングされる前のサンプリング後のフレーム(以下、原フレームともいう)との乖離度として、次式(14)を定義する。
上記の2種類、すなわち発生符号量と、乖離度との加重和として、次式(15)の値をフィルタ設計の評価尺度とする。
すなわち、最適化されたフィルタを設計するとは、式(15)から得られる尺度を最小化するように時間フィルタのフィルタ係数を設計することになる。式(15)において、次式(16)で示される発生符号量を考慮することで、時間フィルタリング後の発生符号量を低減する効果が得られる。また、次式(17)で示される乖離度の項を考慮することで、時間フィルタンリング後のフレームが、原フレームと乖離することを抑止する効果が得られる。
(映像フィルタリング装置による処理)
次に、図2から図6を参照しつつ、映像フィルタリング装置1によって行われる処理について説明する。図2は、本実施形態における映像フィルタリング装置1の処理の流れを示すフローチャートである。映像フィルタリング装置1において映像データ取得部10は、外部から供給される高フレームレートの映像信号を取得し、動画像のフレームデータ、すなわち原フレームを辞書生成部20と、最適化処理部30と、フィルタリング処理部13とに出力する。パラメータ取得部11は、外部から供給されるパラメータMを取得して、辞書生成部20と最適化処理部30とに出力する(ステップS1)。
辞書生成部20は、フィルタ係数候補ベクトルの集合である辞書データを生成して、辞書記憶部12に書き込んで記憶させる(ステップS2)。最適化処理部30は、辞書記憶部12に記憶されているフィルタ係数候補ベクトルから、最適となるフィルタ係数ベクトル、すなわち上記の式(15)に基づいて算出されるフィルタ設計の評価尺度を最小にするフィルタ係数ベクトルを選択する。最適化処理部30は、選択したフィルタ係数ベクトルをフィルタ係数記憶部14に書き込んで記憶させる(ステップS3)。フィルタリング処理部13は、映像データ取得部10が出力する原フレームに対して、フィルタ係数記憶部14に記憶されているフィルタ係数ベクトルを用いて時間フィルタリングを行い、低フレームレートの映像信号を出力する(ステップS4)。
(フィルタ係数候補ベクトルの辞書生成処理)
次に、図2のステップS2のサブルーチンにおいて辞書生成部20によって行われるフィルタ係数候補ベクトルの辞書生成処理について図3及び図4を参照しつつ説明する。まず、フィルタ係数候補ベクトルの辞書生成のアルゴリズムの論理について説明する。
式(12)における動き補償フレーム間予測誤差に対する符号量、すなわち式(13)で示されるReを、次式(18)によって近似する。
なお、式(18)の右辺において、次式(19)に示す関係が存在する。
上記の式(18)の近似を用いて、式(12)に示す発生符号量Ψ[wi,wi−1,pi,pi−1](ただし、wは、ベクトルである)の近似値として次式(20)が得られる。
なお、式(20)において、次式(21)に示す関係が存在する。
式(20)による近似は、式(19)に示す関係から、動き補償フレーム間予測誤差の発生符号量を、予測誤差の二乗誤差和で近似していることになる。式(15)に示すフィルタ設計の評価尺度Ξ[wi,wi−1,pi,pi−1](ただし、wは、ベクトルである)の近似値として、式(22)が得られる。
式(22)を最小化するフィルタ係数は、次式(23)を満たすことになる。
式(23)において、次式(24),(25)に示す関係が成り立つ。
したがって、式(23)より、次式(26)が得られる。
また、式(26)において、次式(27)に示す関係が存在する。
式(27)の左辺、^Ei(wi,wi−1,pi,pi−1)(ただし、wは、ベクトルである)を、予測誤差和という。これに対して、式(19)のEi(wi,wi−1,pi,pi−1)(ただし、wは、ベクトルである)は、前述した予測誤差電力であり別の値である。また、式(26)において、次式(28)における関係が存在する。
式(28)の左辺、^Φ[wi,pi](ただし、wは、ベクトルである)を、合成フレーム乖離和という。これに対して、式(14)のΦ[wi,pi](ただし、wは、ベクトルである)を、合成フレーム乖離電力という。
式(26)において、αとλが与えられる条件下において、非線形方程式である式(26)の解として、ベクトルwiを求める場合、以下のようにして求解を行う。
式(26)の左辺を、Ω(wi)(ただし、wは、ベクトルである)とおき、式(29)とする。なお、Ω(wi)(ただし、wは、ベクトルである)を、フィルタ係数評価量という。
式(29)に基づいて、次式(30)に示す反復処理を行う。
式(30)は、第k回目の反復において得られるベクトルwi (k)を示している。式(30)による反復処理を閾値εにより定まる式(31)に示す収束条件を満たすまで繰り返し、当該収束条件を満たしたwi (k)を解とする。
なお、式(29)の左辺の勾配ベクトルである式(32)は、次式(33)によって求められる。
式(33)において、次式(34)に示す関係が存在し、式(34)の左辺D(wi,wi−1,pi,pi−1)(ただし、wは、ベクトルである)を、合成フレーム差分という。
なお、式(33)におけるベクトルf(x,s,l)は次式(35)によって定義される。
上記の式(26)の解は、αの値に応じて定まることになる。ここで、αは、動き補償フレーム間予測誤差の発生符号量を、動き補償フレーム間予測誤差の二乗誤差和により近似する場合に用いるパラメータであり、このパラメータが前述した符号量予測パラメータとなる。符号量予測パラメータαの値として、複数の値を求めておき、各符号量予測パラメータαに対して、式(26)の解を求めることで、当該解がフィルタ係数ベクトルの候補であるフィルタ係数候補ベクトルとなる。
(辞書生成処理部によるフィルタ係数候補ベクトルの辞書生成処理)
上記の論理にしたがって、辞書生成部20による処理について説明する。図3に示すように、辞書生成部20の合成フレーム生成部21は、初期フィルタ係数記憶部27からフィルタ係数ベクトルの初期値を読み出す。フィルタ係数ベクトルの初期値は、前述したように平均フィルタに対応するフィルタ係数ベクトルである(ステップSa1)。
合成フレーム生成部21は、映像データ取得部10が出力する原フレームと、パラメータ取得部11が取得したパラメータMと、読み出したフィルタ係数ベクトルの初期値とに基づいて、式(1)の演算を行って合成フレームを生成する。合成フレーム生成部21は、生成した合成フレームを合成フレーム記憶部25に書き込んで記憶させる(ステップSa2)。合成フレーム生成部21は、ステップSa2の処理を、合成フレームのインデックスi=0,・・・,J/M−1の各々について行う。すなわち、合成フレーム生成部21は、ステップSa2の処理をJ/M回繰り返して行う(ループ処理La1s〜La1e)。なお、Jは、フィルタへ入力されたフレームの総数を表す。
符号化処理部22は、合成フレーム記憶部25からインデックスiにしたがって合成フレームを読み出し、読み出した合成フレームに対して内部に備える符号化器を用いて符号化を行う。当該符号化器における符号化方式は、例えば、H.264の可逆符号化モードであり、合成フレーム生成部21が生成した合成フレームのシーケンスに対して、フレーム間予測を伴う動画像符号化が行われる。
符号化処理部22は、第iインデックスの合成フレームに対して、符号化処理の過程で得られる予測誤差の発生符号量(予測誤差符号量)を算出する(ステップSa3)。符号化処理部22は、第iインデックスの合成フレームに対して、符号化処理の過程で得られる予測誤差の二乗誤差和(予測誤差電力)を算出する(ステップSa4)。符号化処理部22は、ステップSa3,Sa4の処理を、全てのインデックスi=0,・・・,J/M−1についてJ/M回繰り返して行う(ループ処理La2s〜La2e)。
符号量予測パラメータ算出部23は、符号化処理部22が算出した全ての合成フレームに対する発生符号量と二乗誤差和との組を入力データとして、線形回帰により、式(18)におけるパラメータβ0を算出する。符号量予測パラメータ算出部23は、算出したβ0を用いて、各合成フレーム、すなわち第0インデックスの合成フレームから第J/M−1インデックスの合成フレームまでのJ/M枚のフレームに対する発生符号量と二乗誤差和との組に対して、最適な符号量予測パラメータαを算出する。ここで、最適とは、式(18)における近似誤差が最小化されることを意味する。符号量予測パラメータ算出部23は、算出した符号量予測パラメータαの各々に対して個々の符号量予測パラメータαを識別可能なインデックスを対応付けて符号量予測パラメータ記憶部26に書き込んで記憶させる(ステップSa5)。
次に、フィルタ係数候補算出部24は、図4に示すフィルタ係数候補ベクトル算出処理を行う(ステップSa6)。フィルタ係数候補算出部24は、符号量予測パラメータαの個数分、すなわち全ての符号量予測パラメータαについて繰り返してステップSa6の処理を行う。フィルタ係数候補算出部24は、ループ処理La3s〜La3eにおいて処理を繰り返すごとに、次の符号量予測パラメータαを示すインデックスを選択して、次のステージのステップSa6の処理を行う(ループ処理La3s〜La3e)。
以下、図4を参照しつつフィルタ係数候補算出部24による処理について説明する。フィルタ係数候補算出部24は、選択しているインデックスに対応する符号量予測パラメータαを符号量予測パラメータ記憶部26から読み出す(ステップSb1)。フィルタ係数候補算出部24は、重み係数記憶部28に予め記憶されている重み係数λを読み出す(ステップSb2)。フィルタ係数候補算出部24は、以下の演算に用いるフィルタ係数ベクトルを初期化する。この初期化の値は、予め定められており、例えば、2Δ+1タップのフィルタの場合、全てのフィルタ係数を1/(2Δ+1)とする平均フィルタであってもよく、その場合、フィルタ係数候補算出部24は、初期フィルタ係数記憶部27に記憶されている平均フィルタを読み出して初期化を行ってもよい(ステップSb3)。
フィルタ係数候補算出部24は、式(27)に基づいて、予測誤差和を算出する(ステップSb4)。フィルタ係数候補算出部24は、式(19)に基づいて、二乗誤差和(予測誤差電力)を算出する(ステップSb5)。フィルタ係数候補算出部24は、式(28)に基づいて、合成フレーム乖離和を算出する(ステップSb6)。フィルタ係数候補算出部24は、式(34)に基づいて、合成フレーム差分を算出する(ステップSb7)。フィルタ係数候補算出部24は、算出した予測誤差和と、二乗誤差和と、合成フレーム乖離和と、重み係数λとを式(29)に代入してフィルタ係数評価量を算出する(ステップSb8)。
フィルタ係数候補算出部24は、算出した二乗誤差和と、重み係数λと、パラメータMと、原フレームとを式(33)に代入してフィルタ係数評価量の勾配を算出する(ステップSb9)。フィルタ係数候補算出部24は、ステップSb8で算出したフィルタ係数評価量と、ステップSb9で算出したフィルタ係数評価量の勾配の比として、次式(36)を算出し、算出した値をフィルタ係数ベクトルの更新量とする(ステップSb10)。
フィルタ係数候補算出部24は、式(30)に基づいて、フィルタ係数ベクトルを更新する(ステップSb11)。フィルタ係数候補算出部24は、更新前後のフィルタ係数ベクトルが、式(31)に示す収束条件を満たすか否かを判定する(ステップSb12)。フィルタ係数候補算出部24は、収束条件を満たすと判定した場合、更新後のフィルタ係数ベクトルをフィルタ係数候補ベクトルとして辞書記憶部12に書き込んで記憶させ、図3のループ処理La3s〜La3eに戻る。一方、フィルタ係数候補算出部24は、収束条件を満たさないと判定した場合、更新したフィルタ係数ベクトルを1つ前のフィルタ係数ベクトルwi (k−1)として、ステップSb4からの処理を繰り返し行う。フィルタ係数候補算出部24は、全ての符号量予測パラメータαについてステップSa6のフィルタ係数候補ベクトル算出処理を行った場合、処理を終了する。
(フィルタ係数の最適化処理)
次に、図2のステップS3のサブルーチンにおいて最適化処理部30によって行われるフィルタ係数ベクトルの最適化処理について図5及び図6を参照しつつ説明する。まず、フィルタ係数ベクトルの最適化のアルゴリズムの論理について説明する。
発生符号量を最小化するフレームを生成するためには、式(12)の発生符号量をコスト関数として最小化問題を解き、次式(37)を満たすJ/M組のフィルタ係数ベクトル、及びシフト量を求めることになる。
N×P種類のフィルタ係数候補ベクトルからフィルタ係数ベクトルを選択する場合、フィルタ係数ベクトルの取り得る組み合わせは、NPJ/M通りとなり、最適なフィルタ係数ベクトル選択は、指数オーダの計算量が必要になる。そのため、式(37)の左辺に示す最適な組み合わせ(w0 *,・・・,wJ/M−1 *,p0 *,・・・,pJ/M−1 *)(ただし、wはベクトルである)を総当たりで探索するためには、非常に多くの時間を要することになり、計算量の観点から現実的ではないことになる。
式(37)の右辺のΞ[wi,wi−1,pi,pi−1](ただし、wはベクトルである)が、ベクトルwi,pi、及びベクトルwi−1,pi−1のみに依存することに着目すれば、式(37)は、単純マルコフ過程における最適化問題として定式化できる。この最適化問題は、動的計画法に基づき、最適解を多項式オーダの計算量で求めることができる。以下、動的計画法を用いた解法について説明する。まず、ベクトルwi,pi(i=1,・・・,J/M−1)に対して、次式(38)を定義する。
式(38)において、Si(wi,pi)(ただし、wはベクトルである)は、第iステージにおいて、シフト量pi、係数ベクトルwiとした時間フィルタにより合成フレームを生成した状態に至る過去のステージにおいて、最適な係数ベクトルおよびシフト量を用いた場合のコストの総和を意味する。ここで、ベクトルwi,piを固定した場合、式(38)の右辺のΞ[wi,wi−1,pi,pi−1](ただし、wはベクトルである)が、ベクトルwi−1,pi−1のみに依存することに着目すると、Si(wi,pi)(ただし、wはベクトルである)は、次式(39)のような漸化式として表すことができる。
なお、式(39)の右辺のSi−1(wi−1,pi−1)(ただし、wはベクトルである)は、同様の漸化式を用いて算出済みであるものとし、式(39)の演算を行う際には、参照可能な値として、レジスタ等の記憶領域に記憶されているものとする。この場合、式(39)の漸化関係により、Si(wi,pi)(ただし、wはベクトルである)を算出するためには、式(39)の右辺の次式(40)の式を最小化する辞書ベクトルΓNのフィルタ係数候補ベクトル、シフト量piを選択すれば十分であることがわかる。
ベクトルwiに対するフィルタ係数候補ベクトルのインデックスをniとし、各niに対して、式(39)の最小値を与えるフィルタ係数候補ベクトルのインデックスを^ni−1(ni,pi)として、記憶領域に記憶させておく。また同様に、シフト量についても^pi−1(ni,pi)として、記憶領域に記憶させておき、後段の処理において参照可能な状態にしておく。式(39)の漸化式を再帰的に用いることで、式(37)の最小化問題は次式(41)として表すことができる。
このように式(39)の漸化式を用いる手法であれば、式(37)の最適解である(w0 *,・・・,wJ/M−1 *,p0 *,・・・,pJ/M−1 *)(ただし、wはベクトルである)は、(NP)2J/M通りの中から最適解を探索する問題に帰着することができ、多項式オーダの計算量で算出することができる。まず、式(37)の右辺における次式(42)の最小値を算出する。
最適解(w0 *,・・・,wJ/M−1 *,p0 *,・・・,pJ/M−1 *)(ただし、wはベクトルである)は、以下のバックトラック過程により得られる。すなわち、式(41)を最小化するベクトルwJ/M−1,pJ/M−1を次式(43)に示すように、ベクトルwJ/M−1 *,PJ/M−1 *とおく。
ベクトルwJ/M−1 *を表すフィルタ係数候補ベクトルのインデックスをnJ/M−1とする。第J/M−1フレームのフィルタ係数候補ベクトルのインデックスをnJ/M−1、シフト量をpJ/M−1とした場合、第J/M−2フレームに対する最適なフィルタ係数候補ベクトルのインデックス、及び第J/M−2フレームに対するシフト量は、それぞれ^nJ/M−2(nJ/M−1,pJ/M−1)、^pJ/M−2(nJ/M−1,pJ/M−1)として記憶されている。そこで、第J/M−2フレームに対応するフィルタ係数ベクトルを次式(44)に示すように同定(対応付け)する。
以下、同様の参照処理を行い、他のフレームについても式(45)に示すように同様にフィルタ係数ベクトルを同定していく。
(最適化処理部によるフィルタ係数の最適化処理)
上記の論理にしたがって、最適化処理部30による処理について説明する。図5に示すように、最適化処理部30において符号化対象フレーム生成部31は、映像データ取得部10が出力する原フレーム、パラメータ取得部11が出力するパラメータMを取り込む。符号化対象フレーム生成部31は、取り込んだ原フレームを原フレーム記憶部36に書き込んで記憶させる。また、符号化対象フレーム生成部31は、辞書記憶部12からフィルタ係数候補ベクトルを読み出す(ステップSc1)。
符号化対象フレーム生成部31は、符号化対象フレームのインデックスi=0,・・・,J/M−1の各々について、符号Lc1s〜Lc1eの間の処理を行う。なお、符号化対象フレームも合成フレームと同じく時間フィルタリングにより得られるフレームであるため、同じインデックス「i」で表す。すなわち、符号化対象フレーム生成部31は、符号Lc1s〜Lc1eの間の処理をJ/M回繰り返して行う(ループ処理Lc1s〜Lc1e)。また、符号化対象フレーム生成部31は、符号化対象フレームに適用するフィルタ係数候補ベクトルwi=γ0,・・・,γN−1(なお、wとγは、ベクトルである)の各々について、符号Lc2s〜Lc2eの間の処理を繰り返す。すなわち、符号化対象フレーム生成部31は、符号Lc2s〜Lc2eの間の処理をN回繰り返して行う(ループ処理Lc2s〜Lc2e)。
これら2つのループ処理において、符号化対象フレーム生成部31は、原フレーム記憶部36から原フレームを読み出す。符号化対象フレーム生成部31は、読み出した原フレームに対して、辞書記憶部12から読み出したフィルタ係数候補ベクトルwiをフィルタ係数とする時間フィルタリングを行い符号化対象フレームを生成する。符号化対象フレーム生成部31は、生成した符号化対象フレームを符号化対象フレーム記憶部37に書き込んで記憶させる(ステップSc2)。
累積コスト算出部32は、参照フレームに適用するフィルタ係数候補ベクトルwi−1=γ0,・・・,γN−1(なお、wとγは、ベクトルである)の各々について、符号Lc3s〜Lc3eの間の処理である累積コストの算出処理を繰り返す。すなわち、累積コスト算出部32は、符号Lc3s〜Lc3eの間の処理をN回繰り返して行う(ステップSc3)(ループ処理Lc3s〜Lc3e)。
ステップSc3の累積コスト算出処理について図6を参照しつつ説明する。累積コスト算出部32は、フィルタ係数候補ベクトルをベクトルwi−1とした場合の第i−1ステージおける累積コストSi−1(wi−1)(ただし、wはベクトル)を累積コスト記憶部34から読み出す。前述したように第i−1ステージにおける累積コストは、算出済みであり、既に累積コスト記憶部34に記憶されている(ステップSd1)。
累積コスト算出部32は、フィルタ係数候補ベクトルwi−1を適用して符号化対象フレーム生成部31が時間フィルタリングにより生成した第i−1ステージの符号化対象フレームを符号化対象フレーム記憶部37から読み出す。累積コスト算出部32は、読み出した第i−1ステージの符号化対象フレームを第iステージにおける参照フレームとする(ステップSd2)。累積コスト算出部32は、第iステージの原フレームf(x,(iM+k)δt)(k=0,・・・,M−1)を原フレーム記憶部36から読み出す(ステップSd3)。
累積コスト算出部32は、符号化対象フレーム生成部31が、ステップSc2において生成した符号化対象フレームと、第iステージの参照フレームとに基づいて、内部に備える符号化器を用いて符号化処理を行い、式(12)にしたがって発生符号量を算出する(ステップSd4)。累積コスト算出部32は、第iステージの原フレームに対する符号化対象フレームの乖離量を式(14)にしたがって算出する(ステップSd5)。累積コスト算出部32は、重み係数λを重み係数記憶部38から読み出す(ステップSd6)。
累積コスト算出部32は、参照フレームのフィルタ係数をフィルタ係数候補ベクトルwi−1とし、符号化対象フレームのフィルタ係数をフィルタ係数候補ベクトルwiとした場合の第iステージにおける累積コストを式(40)に示す演算により算出する。
累積コスト算出部32は、算出した累積コストと、累積コスト記憶部34に記憶されている累積コストの暫定最小値とを比較する(ステップSd8)。累積コスト算出部32は、算出した累積コストが、累積コストの暫定最小値よりも小さいと判定した場合、算出した累積コストを、フィルタ係数をフィルタ係数候補ベクトルwiとした場合の第iステージにおける累積コストの暫定最小値とする。すなわち、累積コスト算出部32は、累積コスト記憶部34に記憶されている累積コストの暫定最小値を算出した累積コストに書き換える(ステップSd9)。ステップSd8及びSd9の処理を繰り返し行うことにより、式(39)の最小値を求めるminの演算が実現されることになる。
累積コスト算出部32は、フィルタ係数をフィルタ係数候補ベクトルwiとした場合の第iステージにおける累積コストの暫定最小値を与える参照フレームのフィルタ係数候補ベクトルのインデックスである^ni−1(ni,pi)をフィルタ係数インデックス記憶部35に書き込んで記憶させる。なお、過去に算出した第iステージにおける累積コストの暫定最小値を与える参照フレームに対応するインデックスが書き込まれている場合、当該インデックスを新たな累積コストの暫定最小値を与える参照フレームのフィルタ係数候補ベクトルのインデックス^ni−1(ni,pi)に書き換える(ステップSd10)。その後、ループ処理Lc3s〜Lc3eを抜けて、符号化対象フレーム生成部31が、次のステージのループ処理Lc2s〜Lc2eの処理を繰り返し行う。
一方、ステップSd8において、累積コスト算出部32は、算出した累積コストが、累積コストの暫定最小値よりも小さいくない、すなわち算出した累積コストが、累積コストの暫定最小値以上の値であると判定した場合、ループ処理Lc3s〜Lc3eを抜けて、符号化対象フレーム生成部31が、次のステージのループ処理Lc2s〜Lc2eの処理を繰り返し行う。
図5に戻り、符号化対象フレーム生成部31及び累積コスト算出部32によるループ処理Lc1s〜Lc1eの間の処理が全て終了すると、フィルタ係数同定部33は、第J/M−1ステージにおける累積コストを最小化するフィルタ係数ベクトルとして、式(43)により(wJ/M−1 *,pJ/M−1 *)を算出する(ステップSc4)。
フィルタ係数同定部33は、フィルタ係数インデックス記憶部35に記憶されている最適なフィルタ係数候補ベクトルをフィルタ係数ベクトルに同定する処理を行う。ベクトルwi *に対応するフィルタ係数候補ベクトルのインデックスをniとし、このniを第iフレームのフィルタ係数候補ベクトルのインデックスとする場合、第i−1フレームに対する最適なフィルタ係数候補ベクトルのインデックスは、^ni−1(ni,pi)としてフィルタ係数インデックス記憶部35に記憶されている。
フィルタ係数同定部33は、フィルタ係数ベクトルとしてベクトルwi *に対応するフィルタ係数候補ベクトルを対応付けた場合、第iステージの最小累積コストを与える参照フレームのフィルタ係数、すなわち第i−1フレームのフィルタ係数ベクトルwi−1 *を次式(46)にしたがって同定し、当該フィルタ係数ベクトルwi−1 *をフィルタ係数記憶部14に書き込んで記憶させる(ステップSc5)。フィルタ係数同定部33は、ステップSc5の処理を符号化対象フレームのインデックスi=J/M−2,・・・,1の各々について行う。これにより、フィルタ係数同定部33は、式(44)及び式(45)に示す同定を行うことになり、フィルタ係数記憶部14に最適化されたフィルタ係数ベクトルが書き込まれていくことになる(ループ処理Lc4s〜Lc4e)。
上記の実施形態の構成により、映像データ取得部10が、外部から供給される高いフレームレートの映像信号を取り込み、動画像のフレームデータを出力する。パラメータ取得部11は、フィルタリング処理部13によるフィルタリング処理後のフレームのフレームレートを定めるパラメータであって映像データ取得部10が取得する映像信号のフレームレートよりも低いフレームレートとなるように定められるパラメータを外部から取り込む。辞書生成部20は、当該フレームデータ及びパラメータに基づいて、符号化処理の過程で得られる発生符号量の近似値を予め定められる近似式により算出する。辞書生成部20は、算出した発生符号量の近似値を用いてフィルタ係数の評価を行い、評価結果が予め定められる収束条件を満たしたフィルタ係数を候補とし、フィルタ係数候補ベクトルとして辞書記憶部12に書き込んで記憶させる。最適化処理部30は、辞書記憶部12に記憶されているフィルタ係数候補ベクトルから発生符号量を最小化するフレームを生成するフィルタ係数候補ベクトルを選択する。最適化処理部30は、選択したフィルタ係数候補ベクトルをフィルタ係数ベクトルとしてフィルタ係数記憶部14に書き込んで記憶させる。フィルタリング処理部13は、映像データ取得部10が出力するフレームデータに対して、フィルタ係数記憶部14に記憶されているフィルタ係数ベクトルを適用した時間フィルタリングを行い、パラメータによって定められるフレームレートを有するフレームデータを外部に出力する。これにより、フィルタリング後のフレームデータを符号化する場合に、発生符号量を低減する最適化されたフィルタ係数ベクトルを生成することができる。すなわち、当該最適化されたフィルタ係数を適用した時間フィルタを用いて、高フレームレートの映像信号に対して時間フィルタリングを行い、得られた低フレームレートの映像信号を符号する際に、低い発生符号量で符号化を行うことが可能となる。このように、本実施形態では、時間フィルタリングに適用するフィルタ係数を適切に設定することができることから、時間フィルタリング後の映像に対する主観画質の保持を行うとともに発生符号量の低減を行うことが可能となる。
なお、上記の実施形態において、図3のステップSa6として示すフィルタ係数候補ベクトル算出処理を、算出したJ/M個の全ての符号量予測パラメータαについて繰り返し行うとしているが、本発明の構成は、当該実施の形態に限られない。例えば、処理の対象とする符号量予測パラメータαの個数を制限したい場合は、符号量予測パラメータαの設定法として、以下のような手法もある。算出したJ/M個の符号量予測パラメータαに対して最大値・最小値を求め、この最大値・最小値を上限・下限とする符号量予測パラメータαの設定範囲を定める。設定範囲を分割し、分割した部分範囲毎に符号量予測パラメータαの代表値を設定する。設定範囲の分割数は外部から指定されるものとする。符号量予測パラメータαの代表値の設定方法として、例えば、設定範囲の分割数により均等分割し、分割された区間の重心を代表値として設定する手法がある。
これに対して、計算量の制限が緩く、符号量予測パラメータαの個数を多く設定可能場合は、符号量予測パラメータαの設定法として、算出したJ/M個の符号量予測パラメータαとともに、指定された補正値を加える手法がある。例えば、第iインデックスの合成フレームに対して求めた符号量予測パラメータをαiとする場合、補正値をδとしてαi±δαiを符号量予測パラメータとして加えるようにしてもよい。この場合、重複がなければ、符号量予測パラメータは、3J/M通りの値のパラメータとなる。なお、δは、辞書生成部20が備える符号量予測パラメータ記憶部26等の記憶部に予め記憶させておいてもよいし、外部から与えるようにしてもよい。
また、ある合成フレームに対して求めた符号量予測パラメータがαである場合、補正値をδとして、次式(47)で示す2γ個の値を符号量予測パラメータとして追加するようにしてもよい。なお、次式(47)において、γは外部から与えられるものとする。
±1×δα,±2×δα,・・・,±γ×δα・・・(47)
また、上記の実施形態において、図3に示すステップSa5の処理において、符号量予測パラメータ算出部23が式(18)におけるβ0を算出するようにしているが、β0は、予め定めた固定値を適用するようにしてもよい。
また、上記の実施形態において、辞書生成部20の符号化処理部22及び累積コスト算出部32が内部に備える符号化器として、H.264準拠の符号化器が適用されるとしているが、H.265準拠の符号化器であってもよい。また、これらの符号化器に限られず、他の動画像符号化を行う符号化器を適用するようにしてもよい。また、符号化処理部22及び累積コスト算出部32の各々が符号化器を備えるのでなく、映像フィルタリング装置1に1台の符号化器を備えておき、符号化処理部22及び累積コスト算出部32が共用するようにしてもよい。
また、上記の実施形態において、初期フィルタ係数記憶部27は、フィルタ係数が一定値である平均フィルタを予め記憶し、この平均フィルタを初期フィルタとして、合成フレーム生成部21やフィルタ係数候補算出部24が処理を行うとしているが、平均フィルタ以外のフィルタを初期フィルタとしてもよい。
また、上記の実施形態の図6に示す累積コストの算出処理において、ステップSd3〜Sd6の処理を逐次行うようにしているが、原フレームは、乖離量の算出にのみ用いられるため、ステップSd3、Sd5、Sd6の処理を、ステップSd4の発生符号量の算出処理と並行に行うようにしてもよい。
また、上記の実施形態において、累積コスト記憶部34には、第i−1ステージにおける累積コストが既に算出されて記憶されているとしているが、最初に図6に示すステップSd6の処理が行われる際には、初期値となる累積コストが記憶されており、この累積コストは、ステップSd8の比較において、新たに算出した累積コストよりも大きな値となる累積コストが記憶されているものとする。
本実施形態で示した映像フィルタリング装置1に関し、以下の付記を開示する。
(付記1)
入力映像信号のフレームに対して、フィルタ係数を適用して時間軸方向の線形和として合成するフィルタリング処理により、前記入力映像信号よりも低いフレームレートを有する符号化対象のフレームを生成する映像フィルタリング装置であって、
前記符号化対象のフレームが符号化される際の発生符号量の近似値を予め定められる近似式により算出し、算出した前記近似値を用いて前記フィルタ係数の評価を行い、評価結果が予め定められる収束条件を満たす前記フィルタ係数を候補として辞書記憶部に記憶させる辞書生成部と、
前記符号化対象のフレームの発生符号量と、前記フィルタリング処理前後のフレームの乖離度との加重和を最小化する前記フィルタ係数を前記フレームごとに、前記辞書記憶部に記憶されている前記フィルタ係数の候補から選択する最適化処理部と、
前記最適化処理部が選択する前記フィルタ係数に基づいて前記入力映像信号の前記フレームをフィルタリング処理するフィルタリング処理部と、
を備える映像フィルタリング装置。
(付記2)
前記辞書生成部は、前記発生符号量が、動き補償フレーム間予測誤差を符号化する際の発生符号量である場合、前記近似式は、前記動き補償フレーム間予測誤差の二乗誤差和に基づいて、前記発生符号量の前記近似値を算出する、付記1に記載の映像フィルタリング装置。
(付記3)
前記近似式は、前記発生符号量を算出する演算式における動き補償フレーム間予測誤差に対する符号量Reを、前記二乗誤差和をEiとして含む上記式(18)で近似する、付記2に記載の映像フィルタリング装置。
(付記4)
前記式(18)において、αは、符号量予測パラメータであり、前記辞書生成部は、予め定められるフィルタ係数の初期値を用いて前記時間フィルタリングすることにより生成される複数の前記フレームを符号化し、符号化する際に得られる複数の前記発生符号量と、複数の前記二乗誤差和と、前記式(18)とに基づいて複数の符号量予測パラメータαを算出する、付記3に記載の映像フィルタリング装置。
(付記5)
前記辞書生成部は、前記符号量予測パラメータαの全てを用いて、前記フィルタ係数の候補を求めるか、または、前記符号量予測パラメータαの数を前記符号量予測パラメータαに基づいて減少させて、前記フィルタ係数の候補を求めるか、または、前記符号量予測パラメータαの数を前記符号量予測パラメータαに基づいて増加させて前記フィルタ係数の候補を求める、付記4に記載の映像フィルタリング装置。
(付記6)
前記最適化処理部は、前記辞書記憶部に記憶されている前記フィルタ係数の候補の各々を適用して、各々に対応する前記符号化対象のフレームの発生符号量と、前記フィルタリング処理前後のフレームの乖離度とを算出し、算出した前記発生符号量と前記乖離度との加重和を累積した累積値を最小化する前記フィルタ係数を前記フレームごとに選択する、付記1から5のいずれか一項に記載の映像フィルタリング装置。
上述した実施形態における映像フィルタリング装置1をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。