モバイル通信網の発達に伴い、映像を非常に低いビットレート条件で符号化する需要が高まっている。しかし、従来の規格H.264やHEVC(High Efficiency Video Coding)などによる符号化技術では、非常に厳しいビットレート条件において、ブロックノイズやモスキートノイズなど符号化特有の劣化が大きく生じるため、主観的な品質が大きく損なわれる。
この問題を回避するには、プレフィルタを映像符号化の前処理に用いて、原画像自身の情報量を予め削ぎ落とす手法が有効である。特に視覚的影響が大きいエッジ情報を保ちながら微細な振動情報を削ぎ落とす非線形フィルタは、主観品質を保ちつつ符号量を大きく削減できるため効果が高い(例えば、非特許文献1参照)。
上記の性質を持つフィルタは数多く存在するが、TV−L1信号分解を用いたフィルタリング手法は、視覚的により良好な結果が得られるとため、近年注目されている(例えば、非特許文献2参照)。TV−L1信号分解によるフィルタリング出力結果は、ある正の実数値パラメータによって制御可能であり、このパラメータは非特許文献2ではλと記述されている。ここではθ(0≦θ≦1)をθ=λ/(1+λ)と定義し、分解パラメータと呼ぶことにする。例えばθ=0のときフィルタリング出力は平坦映像で、θの増加に従って照明の色味や被写体の概形などの情報が付加され、θ=1のときは入力画像そのものとなる。
最終的に出力される映像ストリームと発生符号量は分解パラメータθと符号化器の量子化パラメータQPによって決定される。所望の発生符号量を満足する分解パラメータθと量子化パラメータQPの組み合わせについて1自由度があるため、この組み合わせの中から予め設定した評価基準に従って最も優れた映像を1つ出力することが求められる。
ここで、図8を参照して、所望符号量を満足して最も評価の高いストリームを出力する処理について、説明する。図8は、所望符号量を満足して最も評価の高いストリームを出力する処理動作を示すフローチャートである。画質評価の手法としてここではSSIM(Structural Similarity)を使用した例について説明する。処理が開始されると、まず以下の処理(ステップS202〜S203)を予め決められたN個の分解パラメータθn(n=1,…,N)と量子化パラメータQPn(n=1,…,N)の組について繰り返し実行する(ステップS201)。
次に、分解パラメータθnを用いて対象映像IをTV−L1信号分解によるフィルタ出力を算出する(ステップS202)。続いて量子化パラメータQPnを用いてフィルタ出力をHEVCで符号化し、ストリームSnと符号量Bnを算出する(ステップS203)。
全ての分解パラメータと量子化パラメータの組(θn,QPn)(n=1,…,N)についての反復が終了したらステップS205へ進む(ステップS204)。符号量Bn(n=1,…,N)の中で所望の符号量条件を満足するものを探索し、対応したストリームSnを選出してSp(p=1,…,P)とする(ステップS205)。
以下の処理(ステップS207、S208)を全ての選出したストリームSp(p=1,…,P)について繰り返す(ステップS206)。ストリームSpをHEVCでデコードし(ステップS207)、対象映像Iを基準に復号映像のSSIM評価値を計算する(ステップS208)。
全てのストリームSp(p=1,…,P)についての反復が終了したらステップS210へ進む(ステップS209)。最も高いSSIMの評価値を出したストリームを出力して終了する(ステップS210)。
このようにストリームを出力することで、所望の符号量条件を満足して最もSSIMが高いストリームを出力することができる。
次に、図9を参照して、上記の処理を実現するための所望符号量を満足して高評価ストリーム出力装置2の構成について説明する。図9は、高評価ストリーム出力装置2の構成例を示す図である。図9に示す高評価ストリーム出力装置2は、所望符号量を満足するストリーム出力部21と、高評価ストリーム出力部22を備えている。
ストリーム出力部21は、高評価ストリーム出力装置2の入力である対象映像と所望符号量を入力すると、所望符号量の条件を満足するストリームを全て生成し、高評価ストリーム出力部22に対して出力する。
高評価ストリーム出力部22は、ストリーム出力部21から送られたストリームの集合と高評価ストリーム出力装置2の入力である対象映像が入力されると、最もSSIMの高いストリームを選択して高評価ストリーム出力装置2の出力結果(最良ストリーム)とする。
次に、ストリーム出力部21についてより詳しく説明する。ストリーム出力部21は、TV−L1信号分解部2101と、HEVC符号化部2102と、パラメータ生成部2103と、符号量条件判定部2104と、スイッチ2105から構成されている。
TV−L1信号分解部2101は、パラメータ生成部2103から送られてくる分解パラメータθを使って、ストリーム出力部21が受信した対象映像Iを、TV−L1信号分解する。このとき生成されたフィルタ出力を、HEVC符号化部2102に出力する。
HEVC符号化部2102は、パラメータ生成部2103から送られてくる量子化パラメータQPを使って、TV−L1信号分解部から送られてくるフィルタ出力をHEVCで符号化する。生成されたストリームSをスイッチ2105に送り、ストリームSの符号量Bを符号量条件判定部2104に送る。また、符号化が終了した際に、符号化終了制御信号を、符号量条件判定部2104に送る。
パラメータ生成部2103は、予め決められた分解パラメータと量子化パラメータの組の集合(θn,QPn)(n=1,…,N)のうち、θnをTV−L1信号分解部2101、QPnをHEVC符号化部2102に順に送り出す。符号量条件判定部2104から判定終了制御信号が送られたとき、n←n+1として送信するパラメータを1つインクリメントする。
符号量条件判定部2104は、HEVC符号化部2102から送られてくる発生符号量と、ストリーム出力部21の入力である所望符号量を比較し、符号量の条件を満たしていればTRUEを、満たしていなければFALSEをスイッチ2105に条件判定制御信号として送る。この条件判定は、HEVC符号化部2102から符号化終了制御信号が送られてくる度に実行する。また条件判定が終了したとき、判定終了制御信号をパラメータ生成部2103に送る。
スイッチ2105は、HEVC符号化部2102から送られてくるストリームを、スイッチのON/OFFの状態に応じて、ストリーム出力部21の出力として送信する。スイッチの状態は、初期はa:OFFとなっていて、符号量条件判定部2104から送られてくる条件判定制御信号がTRUEならばb:ONに、FALSEならばa:OFFに切り替える。
続いて高評価ストリーム出力部22についてより詳しく説明する。高評価ストリーム出力部22は、ストリームバッファ2206、HEVC復号部2207、SSIM評価部2208、最良評価ストリームバッファ2209から構成されている。
ストリームバッファ2206は、高評価ストリーム出力部22の入力であるストリームの集合を受け取り保持し、HEVC復号部2207と最良評価ストリームバッファ2209に、保持しているストリームを1つずつ送り出す。最良評価ストリームバッファ2209よりバッファ更新完了制御信号が送られる度に、送り出すストリームを1つインクリメントする。
HEVC復号部2207は、ストリームバッファ2206から送られるストリームをHEVCで復号して復号映像を生成し、SSIM評価部2208に送る。
SSIM評価部2208は、高評価ストリーム出力部22の入力である対象映像Iを受け取り、HEVC復号部2207から送られる復号映像のSSIMによる評価値を算出し、最良評価ストリームバッファ2209に送る。
最良評価ストリームバッファ2209は、その時点での最高評価値Cmaxとそれに対応するストリームSmaxを保持していて、初期値はCmax=0,Smax=N/A(該当なし)である。SSIM評価部2208から送られる評価値CがCmax<Cであれば、ストリームバッファ2206から送られてくるストリームSを使用して、Cmax=C,Smax=Sとする。
一方Cmax>Cのときはそれまでの最高評価値CmaxとストリームSmaxは維持する。これらの処理が終わった後、ストリームバッファ2206にバッファ更新完了制御信号を送信し、送られてくるストリームを切り替える。
このように、図9に示すような構成の高評価ストリーム出力装置2を用いることにより、図8に示すフローチャートに基づく処理動作に従って、最も評価値の高いフィルタ出力の符号化ストリームを出力することができる。
以下、図面を参照して、本発明の一実施形態による映像符号化ストリーム生成方法、装置を説明する。本実施形態では、上記課題を解決するために、符号量の条件を満足する分解パラメータと量子化パラメータの組み合わせを先に全て求め、これらについてのみ信号分解と符号化を実行する。
以下、前述の分解パラメータと量子化パラメータの組み合わせを求める方法について説明する。まず入力として対象映像I、所望の符号量Btargetの他、圧縮因子Cという4行3列行列が必要である。この圧縮因子は映像の形式(映像サイズ、色フォーマット、フレームレート、フレーム数)により定まる定数値で、複数の映像を用いた学習で算出することが可能である。
始めに、予め定められたM個の分解パラメータθm(m=1,…,M)と量子化パラメータQPm(m=1,…,M)を使って、対象映像IのTV−L1信号分解とHEVCによる符号化を行い、M個の発生符号量Bm(m=1,…,M)を算出する。ここでのMは、例えば2や3などの少ない数を選択することができる。また、分解パラメータと量子化パラメータから特徴ベクトルfm=(1,θm,QPm,θmQPm)T(m=1,…,M)を算出する。
特徴ベクトルfmと発生符号量Bm、圧縮因子Cを用いて、誤差em=log10Bm−fT mC(p1,p2,1)T(m=1,…,M)の二乗和ΣM m=1e2 mが最小となるような実数p1,p2を求める。例えばこれは最小二乗法により求めることができる。続いて、圧縮因子Cとp1,p2から、4次元ベクトルa=(a1,a2,a3,a4)T=C(p1,p2,1)Tを求める。以降はこの4次元ベクトルa=(a1,a2,a3,a4)Tをモデル係数と呼ぶ。
モデル係数a=(a1,a2,a3,a4)Tと所望の符号量Btargetから、^θq(^はこれに続く文字の上に付く、以下同様)=(log10Btarget−a1−a3q)/(a2+a4q)にq=0,1,…、51と順に代入した(^θq,q)(q=0,…、51)は、符号量の条件を満足する分解パラメータと量子化パラメータの組み合わせの全てである。
以上より、符号量の条件を満足する分解パラメータと量子化パラメータの組み合わせ(^θq,q)(q=0,…、51)は全て求まっているため、これらについて対象映像IのTV−L1信号分解とHEVCによる符号化を行い、52個の所望のストリームを生成することが可能である。
以下、本発明の実施の形態について、図面を参照して説明する。この実施形態では、学習用の映像集合を与えることで、事前に圧縮因子Cを算出している。その後本実施形態の処理によって求まる符号量条件を満たしたストリームの集合をSSIMで評価し、最良の評価をもつストリームのみを出力する。また、本実施形態中のモデルパラメータを求める箇所では最小二乗法を用いている。
図1は、所望符号量を満足して最も評価の高いストリームを出力する処理を実現するためのストリーム出力装置1の構成を示すブロック図である。図1に示すストリーム出力装置1は、事前学習部11、ストリーム出力部12、高評価ストリーム出力部13から構成されている。図1に示すストリーム出力装置1は、例えばコンピュータ装置などで構成する。
事前学習部11は、ストリーム出力装置1の入力である学習用の映像の集合から圧縮因子を算出して、ストリーム出力部12に送る。
ストリーム出力部12は、事前学習部11から送られてくる圧縮因子と、ストリーム出力装置1の入力である所望符号量と対象映像から、所望符号量を満足するストリームの集合を、高評価ストリーム出力部13に送る。
高評価ストリーム出力部13は、前述の図9に示す高評価ストリーム出力部22と全く同じ動作をするため、ここでは、詳細な説明を省略する。
次に、図2を参照して、図1に示すストリーム出力装置1が、所望符号量を満足して最も評価の高いストリームを出力する動作を説明する。図2は、図1に示すストリーム出力装置1の処理動作を示すフローチャートである。
処理が開始されると、まず事前学習部11は、学習用の映像集合を用いて圧縮因子Cを算出する(ステップS11)。学習用の映像集合とは、対象映像と同一の映像形式(映像サイズ、色フォーマット、フレームレート、フレーム数)をもつ複数の映像の集合であり、圧縮因子Cとは、映像形式によって定まる4行3列の実数値行列である。
次に、ストリーム出力部12は、この圧縮因子Cを用いて、対象映像Iが所望符号量Btargetを達成しているストリームの集合を全て求める(ステップS12)。
最後に、高評価ストリーム出力部13は、最も評価の高いストリームを集合の中から選択し、これをストリーム出力装置1の出力として、処理を終了する(ステップS13)。
図3は、図1に示す事前学習部11の詳細な構成を示すブロック図である。図3は圧縮因子を事前学習する処理を実現するための、事前学習部11の構成を示している。事前学習部11は、学習映像バッファ1101、TV−L1信号分解部1102、HEVC符号化部1103、分解パラメータ生成部1104、量子化パラメータ生成部1105、モデル係数算出部1106、主成分情報算出部1107、圧縮因子算出部1108から構成されている。
学習映像バッファ1101は、入力した学習用映像の集合In(n=1,…、N)を映像I1から順番にTV−L1信号分解部1102に送る。分解パラメータ生成部1104から映像変更制御信号が送られてくる毎に、送信映像を1つインクリメントする。全ての学習映像を送信後に映像変更制御信号が送られてきたときはバッファ終了制御信号を主成分情報算出部1107に送る。
TV−L1信号分解部1102は、学習映像バッファ1101から送られてくる映像を、分解パラメータ生成部1104から送られてくる分解パラメータθを用いてTV−L1信号分解し、フィルタ出力をHEVC符号化部1103に送る。分解は分解パラメータθが変更する度に開始され、分解が終了するごとに分解終了制御信号を量子化パラメータ生成部1105に送る。
HEVC符号化部1103は、TV−L1信号分解部1102から送られてくるフィルタ出力を、量子化パラメータ生成部1105から送られてくる量子化パラメータQPを用いてHEVCで符号化し、そのストリームの発生符号量Bをモデル係数算出部1106に送る。符号化は符号化パラメータQPが変更される度に開始され、符号化が終了する毎に符号化終了制御信号を量子化パラメータ生成部1105に送る。
分解パラメータ生成部1104は、予め決められた分解パラメータの集合θk(k=1,…,K)をθ1から順番に、TV−L1信号分解部1102とモデル係数算出部1106に送る。量子化パラメータ生成部1105から分解パラメータ変更制御信号が送られてくるごとに、送信する分解パラメータを1つインクリメントする。最後の分解パラメータθkを送信中に分解パラメータ制御信号が送られてきたときは、学習映像バッファ1101とモデル係数算出部1106に映像変更制御信号を送り、送信する分解パラメータをθ1に戻す。
量子化パラメータ生成部1105は、予め決められた量子化パラメータの集合QPl(l=1,…,L)を順番に、HEVC符号化部1103とモデル係数算出部1106に送る。初期値をFALSEとするフラグ変数flagを持っており、FALSEのときは量子化パラメータを送らない。TV−L1信号分解部1102から分解終了制御信号を送られたときにflag=TRUEと設定し、量子化パラメータをQP1に設定して送信する。flagがTRUEのときにHEVC符号化部1103から符号化終了制御信号が送られてくる毎に、送信する量子化パラメータを1つ繰り上げる。最後の量子化パラメータQPLを送信中に符号化終了制御信号が送られたときはflag=FALSEと設定し、分解パラメータ生成部104に分解パラメータ変更制御信号を送る。
モデル係数算出部1106は、分解パラメータ生成部1104から送られてくる分解パラメータと、量子化パラメータ生成部1105から送られてくる量子化パラメータから計算できる特徴ベクトルfk,l=(1,θk、QPl,θkQPl)Tと、HEVC符号化部1103から送られてくる発生符号量Bn,k,lの組み合わせ(fk,l,Bn,k,l)(k=1,…,K,l=1,…,L)を順に保持する。分解パラメータ生成部1104から映像変更制御信号が送られてくるたびに、誤差en,k,l=log10Bn,k,l−fT k,lαn(k=1,…,K,l=1,…,L)の二乗和ΣK k=1ΣL l=1e2 n,k,lが最小となるような4次元ベクトルであるモデル係数αnを算出し、主成分情報算出部1107に送信する。モデル係数αnは学習用の画像集号の数と同じN個算出される。
主成分情報算出部1107は、モデル係数算出部1106より送られてくるモデル係数αn(n=1,…,N)を順に保持する。学習映像バッファ1101よりバッファ終了制御信号が送られてきたとき、主成分分析を用いて平均ベクトル ̄αと第1主成分u1、第2主成分u2、第1主成分の大きさσ1、第2主成分の大きさσ2を求める。これは例えば、αn(n=1,…,N)の分散共分散行列Sの対角化S=Σ4 i=1σ2 iuiuT i=Udiag(σ)2UTから求めることができる。ここでUはベクトルu1,u2を並べた行列で、σはσ1,σ2を並べたベクトルである。主成分情報 ̄α,u1,u2,σ1,σ2を圧縮因子算出部1108に送る。
圧縮因子算出部1108は、主成分情報算出部1107より送られてくる ̄α,u1,u2,σ1,σ2からv1=σ1u1,v2=σ2u2を計算し、圧縮因子C=[v1 v2  ̄a]を算出して事前学習部11の出力として送る。
次に、図4を参照して、図3に示す事前学習部11の処理動作(図1に示すステップS11)の具体的な処理方法について説明する。図4は、図3に示す事前学習部11の処理動作(図1に示すステップS11)の具体的な処理動作を示すフローチャートである。
まず以下の処理(ステップS1102〜S1109)をそれぞれの学習映像In(n=1,…,N)について繰り返し行う(ステップS1101)。続いて以下の処理(ステップS1103〜S1107)を予め決められたK個の異なる分解パラメータθk(k=1,…,K)について繰り返し行う(ステップS1102)。TV−L1信号分解部1102は、このときの学習映像Inと分解パラメータθkを使ってTV−L1信号分解し、フィルタ出力を生成する(ステップ1103)。
続いて、以下の処理(ステップS1105,S1106)を予め決められたL個の異なる量子化パラメータQPl(l=1,…,L)について繰り返し行う(ステップS1104)。HEVC符号化部1103は、このときのQPlを用いてフィルタ出力をHEVCで符号化し、その符号量Bn,k,lを算出する(ステップS1105)。続いて、モデル係数算出部1106は、特徴ベクトルfk,l=(1,θk,QPl,θkQPl)Tを算出する(ステップS1106)。
全ての量子化パラメータQPl(l=1,…,l)についての反復が終了したらステップ1108へ進む(ステップS1107)。さらに全ての分解パラメータθk(k=1,…,K)について反復が終了したらステップS1109へ進む(ステップS1108)。
次に、モデル係数算出部1106符号量Bn,k,lと特徴ベクトルfk,l用いて、誤差en,k,l=log10Bn,k,l−fT k,lαnの二乗和ΣK K=1ΣL l=1e2 n,k,lが最小になるような4次元実数値ベクトルαnを求める(ステップS1109)。
全ての学習映像Inについての反復が終了したらステップS1111へ進む(ステップS1110)。
次に、主成分情報算出部1107が、以上ステップS1101〜S1110で求まった4次元ベクトルの集合an(n=1,…,N)を主成分分析して、平均ベクトル ̄αと第1主成分u1、第2主成分u2、第1主成分の大きさσ1、第2主成分の大きさσ2を求める。これは例えば、αn(n=1,…,N)の分散共分散行列Sの対角化S=Σ4 i=1σi 2uiui T=Udiag(σ)2UTから求める事ができる(ステップS1111)。
そして、主成分情報算出部1107は、v1=σ1u1,v2=σ2u2を計算し、圧縮因子C=[v1 v2  ̄α]を出力して終了する(ステップS1112)。
次に、図5を参照して、図1に示すストリーム出力部12の詳細な構成を説明する。図5は、図1に示すストリーム出力部12の詳細な構成を示すブロック図である。図5は、図1に示すストリーム出力部12が、所望符号量を満足するストリームを圧縮因子を用いて全て出力する処理を実現するための構成を示している。ストリーム出力部12は、TV−L1信号分解部1201、HEVC符号化部1202、スイッチ1203、スイッチ1204、テスト用パラメータ算出部1205、モード切替判定部1206、モデル係数算出部1207、制御パラメータ算出部1208、スイッチ1209から構成されている。
TV−L1信号分解部1201は、図9に示すTV−L1信号分解部2101と全く同じ動作をするため、ここでは、詳細な説明を省略する。
HEVC符号化部1202は、図9に示すHEVC符号化部2102と全く同じ動作をするため、ここでは、詳細な説明を省略する。
スイッチ1203は、モード切替判定部1206から送られてくるスイッチ制御信号により、端子a/端子bを切り替える。初期値は端子aとなっており、テスト用パラメータ算出部1205からテスト用分解パラメータを送られる。スイッチ切替制御信号により端子bに接続された後は、制御パラメータ算出部1208から条件を満足する分解パラメータを送られる。送られた分解パラメータはTV−L1信号分解部1201に送信する。
スイッチ1204は、モード切替判定部1206から送られてくるスイッチ制御信号により、端子a/端子bを切り替える。初期値は端子aとなっており、テスト用パラメータ算出部1205からテスト用量子化パラメータを送られる。スイッチ切替制御信号により端子bに接続された後は、制御パラメータ算出部1208から条件を満足する量子化パラメータを送られる。送られた量子化パラメータはHEVC符号化部1202に送信する。
テスト用パラメータ算出部1205は、予め用意したM組のテスト用の分解パラメータθm(m=1,…,M)と量子化パラメータQPm=(m=1,…,M)を、それぞれスイッチ1203とスイッチ1204に送る。初期値としてそれぞれθ1とQP1を送信し、HEVC符号化部からの符号化終了制御信号が送られるたびにパラメータをインクリメントとする。最後のパラメータθMとQPMをそれぞれ送信しているときにHEVC符号化部1202から符号化終了制御信号が送られたときは、モード切替判定部1206にテストパラメータ終了制御信号を送信する。
モード切替判定部1206は、テスト用パラメータ算出部1205よりパラメータ終了制御信号が送られた後にHEVC符号化部1202から符号化終了制御信号が送られたとき、スイッチ1203、スイッチ1204、スイッチ1209、モデル係数算出部1207にモード切替制御信号を一度だけ送る。これにより、スイッチ1203、スイッチ1204、スイッチ1209のスイッチは最初の端子aへの接続から端子bへの接続に切り替わり、モデル係数算出部1207はモデル係数の算出を開始する。
モデル係数算出部1207は、テスト用パラメータ算出部1205から送られるテスト用分解パラメータθm、テスト用量子化パラメータQPm、HEVC符号化部1202より送られる発生符号量Bmを、組(θm,QPm,Bm)(m=1,…,M)として保持する。また、分解パラメータθmと量子化パラメータQPmから特徴ベクトルfm=(1,θm,QPm,θmQPm)Tを計算しておく。加えて、ストリーム出力12の入力である圧縮因子Cが送られている。モード切替判定部1206よりモード切替制御信号が送られたとき、特徴ベクトルfmと発生符号量Bmと、圧縮因子Cを用いて、誤差em=log10Bm−fT mC(p1,p2,1)T(m=1,…,M)の二乗和ΣM m=1e2 mが最小となるような実数p1,p2を最小二乗法を用いて算出する。これに圧縮因子Cを再度用いて、4次元ベクトルであるモデル係数a=(a1,a2,a3,a4)T=C(p1,p2,1)Tを算出する。このモデル係数aを制御パラメータ算出部1208に送る。
制御パラメータ算出部1208はまず、モデル係数算出部1207から送られるモデル係数a=(a1,a2,a3,a4)Tと、ストリーム出力部12の入力である所望符号量Btargetから、条件を満足する分解パラメータと量子化パラメータの組(^θ,q)(q=0,…,51)を全て算出する。算出式は^θq=(log10Btarget−a1−a3q)/(a2+a4q)である。この分解パラメータ^θqと量子化パラメータqをそれぞれスイッチ1203とスイッチ1204に1組ずつ送り出す。HEVC符号化部1202から符号化終了制御信号が送られるごとに、送り出す^θqとqを1つインクリメントする。
スイッチ1209はHEVC符号化部1202から送られてくるストリームを、スイッチのON/OFFの状態に応じて、ストリーム出力部12の出力として送信する。スイッチの状態は初期はa:OFFとなっていて、モード切替判定部1206よりモード切替制御信号が送られたときに、状態b:ONに切り替わる。
次に、図6を参照して、図5に示すストリーム出力部12の処理動作を説明する。図6は、図5に示すストリーム出力部12が、所望符号量を満足するストリームを圧縮因子を用いて全て出力する処理動作を示すフローチャートである。
まず以下の処理を(ステップS1202〜S1204)を予め決められたM≧2個の分解パラメータθm(m=1,…,M)と量子化パラメータQPm(m=1,…,M)について繰り返す(ステップS1201)。
続いて、TV−L1信号分解部1201は、対象映像Iを分解パラメータθmを使ってTV−L1信号分解をし、フィルタ出力を生成する(ステップS1202)。続いて、HEVC符号化部1202は、量子化パラメータQPmを用いてフィルタ出力をHEVCで符号化し、その符号量Bmを算出する(ステップS1203)。また、HEVC符号化部1202は、特徴ベクトルfm=(1,θm,QPm,θmQPm)Tを算出する(ステップS1204)。
全ての分解パラメータθm(m=1,…,M)と量子化パラメータQPm(m=1,…,M)についての反復が終了したらステップS1206へ進む(ステップS1205)。
次に、モデル係数算出部1207は、以上の処理(ステップS1201〜S1205)で算出した発生符号量Bm(m=1,…,M)と特徴ベクトルfm(m=1,…,M)、圧縮因子Cを用いて、誤差em=log10Bm−fT mC(p1,p2,1)T(m=1,…,M)の二乗和ΣM m=1e2 mが最小となるような実数p1,p2を、最小二乗法により求める。続いて、モデル係数算出部1207は、4次元ベクトルa=C(p1,p2,1)Tを計算して、モデル係数a=(a1,a2,a3,a4)Tを算出する(ステップS1206)。
次に、所望符号量Btargetを達成するパラメータの組(^θq,q)(q=0,…,51)を、^θq=(log10Btarget−a1−a3q)/(a2+a4q)の計算式で求める(ステップS1207)。
次に、制御パラメータ算出部1208は、以下の処理(ステップS1209,S1210)を全てのパラメータの組(^θq,q)(q=0,…,51)について繰り返す(ステップS1208)。続いて、TV−L1信号分解部1201は、対象映像Iを分解パラメータ^θqを使ってTV−L1信号分解をし、フィルタ出力を生成する(ステップS1209)。
次に、HEVC符号化部1202は、量子化パラメータqを用いてフィルタ出力をHEVCで符号化し、ストリーム符号量Sqを算出する(ステップS1210)。
全てのパラメータの組(^θq,q)(q=0,…,51)についての反復が終了したらステップS1212へ進む(ステップS1211)。スイッチ1209は、ストリームの集合Sq(q=0,…,51)を出力して終了する(ステップS1212)。
次に、図1に示す高評価ストリーム出力部13の構成を説明する。図1に示す高評価ストリーム出力部13の構成は、図9に示す高評価ストリーム出力部22と同様の構成であるため、ここでは、詳細な説明を省略する。
次に、図7を参照して、図1に示す高評価ストリーム出力部13の処理動作を説明する。図7は、図1に示す高評価ストリーム出力部13の処理動作を示すフローチャートである。図7に示すステップS1301〜S1305の処理は、図8におけるステップS206〜S210の処理と全く同様であるため、ここでは、簡単に説明を行う。
まず、以下の処理(ステップS1302、S1303)を全ての選出したストリームSq(q=0,…,51)について繰り返す(ステップS1301)。ストリームSqをHEVCでデコードし(ステップS1302)、対象映像Iを基準に復号映像のSSIM評価値を計算する(ステップS1303)。
全てのストリームSq(q=0,…,51)についての反復が終了したらステップS1305へ進む(ステップS1304)。最も高いSSIMの評価値を出したストリームを出力して終了する(ステップS1305)。
このように、プレフィルタリングを用いて所望の符号量を満足する映像符号化ストリームを生成する際に、学習映像から求めた圧縮因子を用いて所望の符号量を満足する分解パラメータと量子化パラメータの組を求めることにより、所望の符号量を満足する分解パラメータと量子化パラメータの組を求める計算時間を削減することが可能となる。この構成によれば、所望符号量を満足する最良評価のストリームを出力する処理により、所望符号量を満足する最良評価のストリームを出力することができるようになる。
以上説明したように、符号量条件を満足する分解パラメータと量子化パラメータを求めるまでに、計算量の大きいTV−L1信号分解処理とHEVCによる符号化処理の実行回数を非常に少ない回数におさえることができため、全体の計算時間を大幅に削減することができる。また、プレフィルタリングによる情報削減による映像符号化技術を採用するようにしたため、所望符号量を満足する映像符号化ストリームを全て生成することができるようにした分解パラメータと量子化パラメータを決定することができるようになる。
前述した実施形態におけるストリーム出力装置1の全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。