高能率な映像符号化を実現するには、イントラ予測の予測誤差低減は重要な課題となる。同一フレーム内における隣接画素値間の相関除去を目的として、周辺画素値を用いた画素値予測処理がH.263(動画圧縮方式の規格)から導入された。H.263ではDC成分に対する予測のみを行っている。H.264/AVC(動画圧縮方式の規格)ではPlane予測や9通りの方向性予測が追加された。更に、H.265/HEVC(動画圧縮方式の規格)ではPlane予測を改善したPlanar予測が追加されると共に方向性予測の方向数を33通りに増加した。
しかし、H.265/HEVCは予測誤差を低減する余地が残されている。HEVCのイントラ予測は、画素値変化の方向が直線的であることを仮定している。また、映像によらず予測器の数や種類が固定されている。従って、画素値変化の方向が直線的でない場合、予測誤差が増大する。また、特定の予測器が使用されない場合、予測情報表現に要する符号量が増大する。従って、予測誤差低減のため、映像毎に適切な予測器を構築する必要がある。
映像毎に予測器を定める方法として、画像ごとに複数の線形予測器を設計する方法がある(例えば、非特許文献1参照)。非特許文献1では1枚の画像を矩形ブロックに分割し、矩形ブロックごとに予測を行う。また、各矩形ブロックを複数種類のクラスへ分類し、クラスごとに適応的な予測器の設計が行われる。以降では、予測処理の単位となる矩形ブロックを予測ブロックと呼ぶ。
非特許文献1では予測ブロックを最小単位である1画素として定めている。予測ブロック内の画素値と原画像の画素値の誤差である予測誤差は低く抑えることが望ましい。一方で、同一画像内の各予測ブロックはそれぞれ信号特性が異なる。そこで、類似した信号特性を持つ予測ブロックを1つのクラスにまとめ、各クラスに対して予測誤差の少ない予測器が設計されている。クラス分類の方法として、非特許文献1は付加情報を用いずに予測ブロック周辺の近傍画素値の分散を用いた分類を行っている。
非特許文献1では予測ブロック内の画素値予測に式(1)に示す線形予測を用いる。
ここで、iは予測ブロックの番号を示す指数、cはクラス番号であり、1からCまでとりうる。^x
i=(^x
i 1,・・・,^x
i l,・・・,^x
i Mi)
T(^は後に続く文字の上に付く、以下同様)は参照画素を要素とするMi次元の列ベクトルである。Miは予測に用いる参照画素数である。^y
i cは予測ブロックにおける予測画素値である。非特許文献1では予測ブロックの大きさが1×1であるため、1次元の実数である。b
cはクラスcにおける予測係数であり、Mi次元行ベクトルである。
各クラスの予測係数bcに対し予測誤差を最小化する係数を設定する方法は、Wiener−Hopt方程式と呼ばれる線形連立方程式を解くことで容易に設計できることが知られている。以上説明した事項は非特許文献1に詳述されている。
非特許文献1の線形予測を拡張し、画素単位でない予測ブロック内の正規化された画素値に対する線形予測は、式(2)と記述できる。
ここで、iは予測ブロックの番号を示す指数、cはクラス番号であり、1からCまでとりうる。^x
i=(^x
i 1,・・・,^x
i l,・・・,^x
i Mi)
Tは正規化処理を施した参照画素を要素とするMi次元の列ベクトルである。Miは予測に用いる参照画素数である。^x
iは、以下のように正規化されているとする。
ここで、 ̄x
i=( ̄x
i 1;,・・・, ̄x
i l,・・・, ̄x
i Mi)
T( ̄は後に続く文字の上に付く、以下同様)は正規化処理を施していない参照画素を要素とするMi次元の列ベクトルである.S
cはクラス番号cを選択する予測ブロック番号の集合である.μ
x lは、クラスcに属するl番目の参照画素値 ̄x
i lの平均値である.σ
x lは、クラスcに属するl番目の参照画素値の標準偏差である。
^y
i c=(^y
i c[1],・・・,^y
i c[j],・・・,^y
i c[Mi])
Tは正規化処理を施した予測ブロック内の画素値を要素とするMo次元の列ベクトルである。^y
i cは以下のように正規化されているとする。
ここで、 ̄y
i c=( ̄y
i c[1],・・・, ̄y
i c[l],・・・, ̄y
i c[Mo])
Tは正規化処理を施していない予測ブロック内の画素値を要素とするMi次元の列ベクトルである.μ
i c[j]は、クラスcに属するl番目の被予測画素値 ̄x
i lの平均値である。Moは予測ブロックの画素数である。jは予測ブロック内の画素位置を示す指数である。A
cはクラスcにおける予測係数であり、列数がMi、行数がMoの実数値行列である。j行目の予測係数により、j番目の予測ブロック内画素値を予測する。
正規化されていない実際の予測画素値〜y
i c(〜は後に続く文字の上に付く、以下同様)は以下のように算出される。
以降では、参照画素、予測ブロック内のいずれに対しても正規化処理を施しているものとする。
画像ごとに線形予測に用いる係数方法は予測係数が付加情報となるため、予測係数の発生符号量の抑制が課題となる。予測係数の発生符号量を抑制する方法として、予測係数の多くが零値であるスパースの状態にする制約条件の下、予測誤差を低減する予測係数を設定する方法がある。
予測係数の多くが零値である場合、予測係数表現に要する符号量を削減できるため、付加情報として送信する予測係数の符号量の削減が見込まれる。一方で、零値の予測係数が多すぎると予測誤差が増大してしまうため、予測誤差表現に要する符号量の増大や復号画像の画質劣化を招いてしまう。
スパース性(予測係数の多くが零値である)を課した制約条件の下で予測誤差を最小化する方法の一つとして、下記に示すL0ノルムに関する制約付き二乗誤差最小化問題が挙げられる。
ここで、S
cはクラス番号cを選択する予測ブロック番号の集合である。‖A
c‖
0は、行列A
cにおける非零値である係数の個数である。予測係数の符号量は非零値である予測係数の個数に依存するため、非零値の係数の個数に関する制約条件は予測係数に要する符号量を調整する役割を持つ。
しかし、式(6)における最適解求解は困難であるため、次式(7)で示す制約条件に緩和して求解する方法が考えられる。
ここで、‖A
c‖
1は、行列A
cにおける非零値である係数の絶対値の総和である。θ
1は、予測係数A
cの絶対値和を全クラスに関して取った総和に対して課す上限である。以降では、上記θ
1を総和上限と呼ぶ。総和上限を定める制約条件を付与することで、経験的にスパース性を有する予測係数が得られる。総和上限は全クラスに渡った行列内における零値の係数を含む割合を調整する。
式(2)で示される予測係数は予測ブロック内の各画素を独立に予測しており、予測係数Acのj行目の係数を用いてj番目の予測ブロック内画素値が予測される。すなわち、Ac=(ac[1]T,・・・,ac[j]T,・・・,ac[Mo]T)Tと表記すると、ac[j]はクラスcに属する予測ブロックのj番目の画素値を予測するための係数であり、Mi次元の行ベクトルである。以降では、上記ac[j]を単画素予測係数と呼ぶ。
単画素予測係数ac[j]および参照画素xiを用いてクラスcに属するi番目の予測ブロック内のj番目の画素値はac[j]xiと予測される。上記L1ノルムによる制約条件を付与した最適化問題において、特にクラス数Cが1種類かつ予測ブロック内の画素数Moが1個である場合、予測係数を定める最適化問題はLASSO(線形回帰を実行するための正則化手法)と同一の問題として定義され、様々な解法が知られている。
なお、本明細書において、画像とは、静止画像、または動画像を構成する1フレーム分の画像のことをいう。また映像とは、動画像と同じ意味であり、一連の画像の集合である。
以下、図面を参照して、本発明の一実施形態による線形予測係数出力装置を説明する。はじめに線形予測係数を出力する原理について説明する。式(7)で示される最適化問題を求解するため、まず、式(7)は下記の式(8)で示す単画素予測係数の設計問題に書き換える。
ここで、θ
c[j]は各単画素予測係数に対して定める係数の絶対値和の上限である。以降では、上記θ
c[j]を単一上限と呼ぶ。式(8)で示される最適化問題は複数のLASSOを含んでおり、全てのクラスおよび予測ブロック内画素に関する単一上限の総和が総和上限となる制約条件が設けられている。
上記最適化問題を求解するために、全てのクラスおよび予測ブロック内画素に対する単一上限θc[j]を決定する必要がある。複数のLASSOにおけるc[j]の設定を行う際、計算量の低減を目的として、Least Angle Regression(LARS)(参考文献1参照)を拡張する。
参考文献1:Bradley Efron, Trevor Hastie, Iain Johnstone, and Robert Tibshirani.Least Angle Regression. The Annals of Statistics, Vol. 32, No. 2, pp.407-499、2004.
LARSは、LASSOにおけるあらゆる単一上限に対応する単画素予測係数を、1度の最適化で出力できる。上記最適化の結果、各θc[j]に対応する単画素予測係数ac[j]∈RMoが、RMoの空間内における複数の連結した線分の集合として与えられる。以降では、上記の線分の集合をパスと呼ぶ。パス上の各点は、θc[j]=‖ac[j]‖1と設定した際のLASSOの解と対応付けられる。
また、パスにおける線分と線分の連結箇所でのみ、(1)1つの係数が非零値から零値になる、(2)1つの係数が零値から非零値になる、のいずれかが起こる。θc[j]の設定を行う際、パスが求まっていればθc[j]を変更した際の単画素予測係数ac[j]を求めるための計算時間を削減できる。
従って、本実施形態ではLARSの拡張により、式(8)に示す最適化問題を求解する。LARSを拡張する準備として、各単画素予測係数に対して、下記の式(9)ように予測誤差削減効率e
c[j]を定義する。
ここで、f
c[j]は入力された単画素予測係数a
c[j]を使用した際の予測誤差の総和を返す関数である。a
c[j]は、現在の単画素予測係数である。d
c[j]は、現在の単画素予測係数を更新する際の差分を表すベクトルである。予測誤差削減効率の式(9)は、単画素予測係数の絶対値和の増加量に対する予測誤差の低減量を表す。
LARSでは、パスを辿ることで予測誤差削減効率が常に最大となるよう係数を設定できる。以降の説明においては、予測誤差削減効率は常に式(9)を意味する。また、上記内容は参考文献1に詳述されている。
提案するLARSの拡張は、同時に最適化する各単画素予測係数ac[j]の予測誤差削減効率ei (j)が比較される。そして、最も予測誤差削減効率が高い単画素予測係数ac[j]に対してパスを1線分だけ進める操作を、非零値の係数が一定割合に到達するまで続けるというものである。これにより、予測誤差削減効率という指標に基づきLASSO同士を比較し、予測誤差削減効率の良い係数を設定できる。
また、非零値の係数が一定割合に到達した場合、各単画素予測係数ac[j]の絶対値和を、LASSOにおける係数の絶対値和の上限θc[j]に設定して最適化を行ったとみなせる。従って、提案するLARSの拡張により、各LASSOにおける絶対値和の上限θc[j]が設定できる。
次に、図13〜図29を参照して、予測係数を出力する動作を説明する。図13は、線形予測によるイントラ予測の定式化を示す説明図である。イントラ予測では、1枚の画像を矩形状のブロックに分割し、分割されたブロックごとに、ブロック周辺の参照画素を用いて、被予測画素ブロックの予測が行われる。このとき、用いる参照画素を適応的に選択して予測が行われる。本実施形態の具体的なイントラ予測は、図13に示す線形予測器の式で示す線形予測により予測する。参照画素を縦に並べたベクトルxに対して、参照画素を使う位置と重みを定める予測係数Aをかけることで、被予測画素の予測値を縦に並べたベクトル^yが出力される。
HEVCのイントラ予測においても、この線形予測で表現されるが、その係数は映像によらず固定されている。しかし、本実施形態では、1枚のフレームごとにこの予測係数の各要素が適応的に設定される。また、1枚の画像を矩形状のブロックに分割した後、類似した予測を必要とするブロックを1つのクラスとしてまとめ、クラスごとに予測係数Aを用意する。例えば、3種類のクラスを用意した場合、各ブロックが3種類のクラスのいずれかに分類される。そして、それぞれクラスに1つの予測器が使用される。このとき、HEVCでは全ての映像に対して予測器の数、すなわちクラス数が固定されている。これを、本実施形態では、1枚のフレームごとにクラス数が適応的に設定される。
このような問題を考える場合、2つの要素を最適化する必要がある。1つ目は、各ブロックがどのクラスを選べば予測誤差が小さくなるかという、クラス分類の最適化である。クラス分類とは少なくとも1つのクラスに分類することである。2つ目は、選択されたブロックに対して、各クラスがどのような係数を設定すれば、予測誤差が最小となるかという、予測係数の最適化である。本実施形態では、この2つの最適化問題を求解する。この求解の目的は、予測誤差の低減である。前述したように、HEVCにおけるイントラ予測では、あらゆる映像に対して、クラスの数、各クラスで定める予測係数、参照画素の位置が固定されている。しかし、本実施形態による方法では、その全てを1枚のフレーム毎に適応的に設定することで、予測誤差を低減する。
図14、図15は、適応的なイントラ予測器の目的と課題を示す説明図である。映像ごとの適応させる際に課題となるのが、予測係数のデータ圧縮である。前述した符号化データは、HEVCでは2つから構成される。1つ目はクラス選択の情報であり、2つ目は予測誤差の情報である。本実施形態では、HEVCと比べて予測誤差の低減が期待できるため、(2)で示す予測誤差の符号量は低減できると考えられる。また、本実施形態による方法では、(3)で示す予測係数の情報が追加される。このため、本実施形態による方法では、予測係数を圧縮する必要がある。予測係数の符号量が増大すると、十分な符号量削減が期待できない。そこで、後述するスパースな予測器設計を行うことで、(3)で示す予測係数の符号量削減を図る。
図16は、適応的なイントラ予測器の動作を示す説明図である。イントラ予測を行うために最適化する箇所は次の2箇所である。1箇所目は、各ブロックが、どのクラスを選択するかを示すクラス分類の最適化である。2箇所目は、選択されたブロックに対して、クラス毎にどのような予測係数を設定するかを示す、予測係数の最適化である。これら2つの最適化を同時に行うことは困難なため、図16に示す2ステップ(STEP1、STEP2)を経て、交互に最適化が行なわれる。
まず最初に、クラスごとの予測係数を固定した状態で、各ブロックがどのクラスを選択するかが最適化される(STEP1)。具体的には、各ブロックが予測誤差を最小にするクラスが選択される。次に、各ブロックのクラス選択を固定した状態で、選択されたブロックに対して予測誤差を小さくするように、かつ予測係数の符号量が少なくなるように、予測係数が最適化される(STEP2)。この具体的な処理は、後述する。また、この2つのステップは、予測誤差が十分収束するまで交互に繰り返される。
図17は、予測器の符号量を削減する動作を示す説明図である。前述したSTEP2は、予測誤差を小さくする予測係数を決めるステップである。このとき、予測誤差を小さくするように係数を決定するが、予測係数の全てを使用すると、予測係数を表現する符号量が増大してしまう。そこで、予測係数をスパースな状態に設定する。ここで、スパースとは、予測係数の中の多くが図17に示すようにグレーで示す0である状態を指す。このとき、ゼロ係数が多ければ予測に用いる係数の数が削減でき、予測係数の符号量の削減が期待できる。
図18は、スパースな予測係数を設定するSTEP2の詳細な動作を示す説明図である。スパースな予測係数を設定するSTEP2は、次の2つのステップからなる。まず、STEP2−1では、使う予測係数の位置が定められる。次に、STEP2−1で定められた非ゼロ係数の位置に対して、STEP2−2では、予測誤差を最小化する予測係数が設定される。
図19、図20は、L1ノルム正則化項に基づく定式化を示す説明図である。STEP2−1において、予測係数の位置を決めるために、ある1つの画素に着目した予測誤差の最小化問題を、予測係数の絶対値和、すなわちL1ノルムの大きさの上限を定める制約を追加して解く。このL1ノルム(絶対値和)の大きさにより、予測係数のスパース性の制御が行なわれる。以降では、ある1つの画素を予測する予測器を、単画素予測器と呼ぶ。
単画素予測器の予測係数は、前述した予測係数Aの1行分の係数に対応している。従って、1番目の画素値を予測する場合は、予測係数Aの1行目を、2番目の画素値を予測する場合は、Aの2行目を、3番目の画素値を予測する場合は、Aの3行目を単画素予測器の予測係数として利用する。また、1つの予測係数Aを定めるためには、ブロック(被予測画素y)内の予測画素の数だけ、単画素予測器の設計問題を解く必要がある。
また、それだけでなく、図20に示すように、予測画素ブロックは各クラスが保持する予測係数の中から、予測誤差を小さくするクラスを選択することができる。従って、最終的に、ブロックの中の予測画素数×クラス数の数だけ、単画素予測器を同時に設計する必要がある。
図21〜図28は、複数予測器設計の最適化の動作を示す説明図である。予測画素数×クラス数の単画素予測器を同時に最適化するためには、単画素予測器ごとにL1ノルムを適切に配分する必要がある。配分に利用可能なL1ノルムの総和は、図21に示すように与えられている。そこで、図22に示すように、全体の予測誤差を最小化するように、単画素予測器ごとにL1ノルムを割り振る。ここで、従来の最適化手法では、このような複数の設計問題に対するL1ノルムの分配方法について考慮されていなかった。そこで、本実施形態ではこのL1ノルムの分配を行う。
次に、具体的にL1ノルムの配分を行う動作について説明する。図23に示す例では、クラス数と予測画素数が2つの場合で説明する。まず、分配を行う際、単画素予測器ごとに予測誤差削減効率が算出される。これは、L1ノルムを分配したときにどの程度効率よく予測誤差を削減できるかを示したものである。
この予測誤差削減効率が最も大きい(ここでは、図24に示す「25」)単画素予測器が選択され、L1ノルムの分配が行われる。ここで、一度に分配する量はLARSという既存アルゴリズムに基づいて定める。また、一度L1ノルムの配分を行うごとに、選択された単画素予測器の予測誤差削減効率が減少する(図25に示すように「25」→「19」)。そこで、L1ノルムを配分する度に、予測誤差削減効率が最も高い単画素予測器を再選択する(図25に示すように、「21」が選択される)。
単画素予測器へ配分を行ったので、予測誤差削減効率が減少し(図26に示すように「21」→「12」)、再び予測誤差削減効率が最も大きい(図26に示す例は「19」)単画素予測器が選択される。このような操作を続けていき、図27に示すように、最初に定めたL1ノルムの総和が0になるまで続けられる。
すなわち、STEP2−1では、単画素予測器にL1ノルムを配分する際、予測誤差削減効率を用いてどの単画素予測器へL1ノルムを配分するかが定められる(図28参照)。
図29は、STEP2−1で得られる非ゼロ係数位置を示す説明図である。前述した単画素予測器の設計問題を解くことで、図29の左図に示すように非ゼロ係数の位置と値を求めることができる。しかし、ここで得られた係数はL1ノルムの制約を課した結果であるため、予測誤差が最小化されていない。そこで、STEP2−1では、図29の右図に示すように、得られた非ゼロ係数の位置のみを利用する。
次に、STEP2−2では、非ゼロ係数の位置を固定して、予測誤差を最小化する係数が改めて求められる。非ゼロ係数の位置を固定した場合、予測誤差を最小化する係数は解析的に求めることができるため、各クラス毎に、予測係数の値を求めることができる。
次に、図面を参照して本発明の線形予測係数出力装置を適用した実施形態による動画像符号化装置および動画像復号装置を説明する。図1は本実施形態におけるロスレス符号化を行う場合の動画像符号化装置の構成を示すブロック図である。ただし、本発明における線形予測係数出力装置はロスレス符号化(可逆符号化)においてもロッシー符号化(非可逆符号化)においても適用可能である。
本動画像符号化装置は符号化対象の映像信号を入力し、符号化された映像を符号化ストリームとして出力する。以降の実施形態の説明において、符号化対象となる映像信号を単に映像信号と呼ぶ。
原信号出力部100は映像信号を入力し、インター予測部300またはイントラ予測部400へ映像信号を出力する。出力する映像信号はインター予測部300とイントラ予測部400のそれぞれで画素値予測のための参照画素として利用される。
イントラ予測部400は参照画素に用いられる映像信号を入力し、生成した予測画像を予測残差生成部200へ出力する。また、イントラ予測部400は反復処理収束判定部600から反復処理要求フラグを受けとる。反復要求がある場合はイントラ予測情報を用いてイントラ予測係数の最適化を一度行う。反復要求がない場合は、最終的に得られたイントラ予測係数およびイントラ予測情報をエントロピ符号化処理部500へ出力する。
インター予測部300は参照画素に用いられる映像信号を入力し、生成した予測画像を予測残差生成部200へ出力する。予測残差生成部200は原信号出力部100から映像信号を入力し、また、インター予測部300もしくはイントラ予測部400から予測画像を入力し、映像信号と予測画像との差分である予測残差を出力する。
エントロピ符号化処理部500は予測残差生成部200から予測残差を、インター予測部300、イントラ予測部400からインター予測情報とイントラ予測係数を受け取り、予測残差、インター予測情報、イントラ予測情報、イントラ予測係数から符号化ストリームを生成し、符号化ストリームを出力する。
反復処理収束判定部600は反復符号化処理により符号化効率が向上するか否かを判定し、原信号出力部100およびイントラ予測部400に対して反復処理要求フラグを送信する。反復処理要求を行った場合、原信号出力部100は符号化処理を行うために映像信号を再度送信し、イントラ予測部400は後述するイントラ予測係数の最適化を行う。
反復処理要求は、(1)反復を行わない場合も含め、符号化時に定められた回数だけ反復処理を行う、(2)1度前の符号化時と比較した際の符号量の減少率が、符号化時に定められた閾値を上回る、のいずれかによって判断される。
次に、図2を参照して、図1に示すイントラ予測部400の詳細な構成を説明する。図2は図1に示すイントラ予測部400の詳細な構成を示すブロック図である。図2に示す構成では特にイントラ予測係数生成部402を備えている点が従来の構成と異なる。
イントラ予測処理部401は、(1)原信号出力部100が出力する映像信号、(2)イントラ予測係数記憶部403が出力するイントラ予測係数を受け取り、符号化効率の高いイントラ予測情報を決定する。そして、イントラ予測処理部401は、同イントラ予測情報に従って映像信号を参照画素とした予測ブロック内の画素値予測により予測画像を生成し、予測画像とイントラ予測情報を出力する。
イントラ予測係数生成部402は反復処理収束判定部600から反復要求があった場合、イントラ予測情報記憶部403からイントラ予測情報を受け取る。そして、イントラ予測係数生成部402は、符号化効率の観点で映像信号およびイントラ予測情報に適したイントラ予測係数を決定するためイントラ予測係数の最適化を行い、イントラ予測係数をイントラ予測係数記憶部403へ出力する。
イントラ予測係数記憶部403はイントラ予測係数生成部402からイントラ予測係数を受け取り、受けとったイントラ予測係数を自身が保持するメモリに格納する。必要に応じて、イントラ予測処理部401とエントロピ符号化処理部500へイントラ予測係数を出力する。
イントラ予測情報記憶部404はイントラ予測処理部401が決定したイントラ予測情報を受け取る。必要に応じて、イントラ予測係数生成部402とエントロピ符号化処理部500へイントラ予測情報を出力する。
イントラ予測係数初期化部405は最初の反復におけるイントラ予測係数を定める。イントラ予測係数生成部402はイントラ予測情報を定めることで初めてイントラ予測係数の最適化が可能となる。そこで、符号化の反復処理の最初はイントラ予測係数をイントラ予測係数生成部402と別途の処理で定める必要がある。
次に、図3を参照して、図2に示すイントラ予測部400の動作を説明する。図3は図2に示すイントラ予測部400の動作を示すフローチャートである。まず、イントラ予測係数初期化部405は、映像信号の符号化を開始する前にイントラ予測係数の初期化を行う(ステップS101)。
次に、イントラ予測処理部401は、反復した符号化を行う最中に、符号化効率の高いイントラ予測情報を決定する(ステップS102)。続いて、イントラ予測処理部401は、ステップS102により定まったイントラ予測情報に基づいてイントラ予測を行い、予測画を出力する(ステップS103)。
また、イントラ予測処理部401は、ステップS102により定まったイントラ予測情報をイントラ予測情報記憶部404に保存する(ステップS104)。そして、イントラ予測係数生成部402は、全ての予測ブロックにおいてイントラ予測情報が決定された後、反復処理要求フラグを受け取る(ステップS105)。
次に、イントラ予測係数生成部402は、イントラ予測係数を最適化するか否かを判定する(ステップS106)。この判定の結果、イントラ予測係数を最適化するための反復処理要求があった場合、イントラ予測係数生成部402は、イントラ予測情報記憶部404に保存したイントラ予測情報を読み込み、最適化を行う(ステップS107)。また、イントラ予測係数生成部402は、最適化を行ったイントラ予測係数をイントラ予測係数保存部403に保存する(ステップS108)。
次に、図2に示すイントラ予測係数生成部402の詳細な構成を説明する。図4は図2に示すイントラ予測係数生成部402の第1の構成を示すブロック図である。予測係数最適化情報生成部4021は映像信号およびイントラ予測情報を入力とし、イントラ予測係数最適化に必要な予測係数最適化情報を出力する。この予測係数最適化情報は、予測係数最適化情報記憶部4022に記憶される。単画素予測係数最適化処理部4023は反復処理要求があった場合、予測係数最適化情報を入力とし、予測誤差の2乗和を最小化する予測係数を解析的に導出し、出力する。
次に、図4に示すイントラ予測係数生成部402の動作を説明する。図5は図4に示すイントラ予測係数生成部402の動作を説明するフローチャートである。まず、予測係数最適化情報生成部4021はイントラ予測情報および映像信号を基に予測係数最適化情報Σc 1,Σc 2を生成する(ステップS201)。そして、スパースでない予測係数の解を解析的に導出するため、予測係数最適化情報や予測係数は、予測係数最適化情報記憶部4022に保存する。次に、単画素予測係数最適化処理部4023は、生成した予測係数最適化情報を基に、予測誤差の2乗和を最小化する係数を解析的に導出し、出力する(ステップS202)。
図6は、図2に示すイントラ予測係数生成部402の第2の構成を示すブロック図である。予測係数最適化情報生成部4021は映像信号およびイントラ予測情報を入力とし、イントラ予測係数最適化に必要な予測係数最適化情報を出力する。ここで、予測係数最適化情報とは下記に示す2種類の行列Σ
c 1,Σ
c 2を指す。
ここで、S
cはクラス番号cを選択する予測ブロック番号の集合である。x
iは参照画素を要素とするMi次元の列ベクトルである。y
i[c]は予測ブロック内の画素値を要素とするMo次元の列ベクトルである。
予測係数最適化情報記憶部4022は予測係数最適化情報生成部4021が出力した予測係数最適化情報を入力とし、自身が保持する記憶領域に保存する。単画素予測係数情報記憶部4024は単画素予測係数初期化部4025が出力した予測係数を入力とし、自身が保持する記憶領域に保存する。また、単画素予測係数最適化処理部4023が出力した予測係数を最適化処理を入力とし、自身が保持する記憶領域に保存してある予測係数を上書きして保存する。
単画素予測係数初期化部4025は予測係数最適化を行う前に全てがゼロ係数の単画素予測係数を出力する。単画素予測係数反復最適化終了判定部4027は反復処理要求を受け取っている場合、単画素予測係数集合を入力とし、予測係数の最適化をこれ以上続行すべきか否か判定を下す。ここで、単画素予測係数集合とは、単画素予測係数を全てのクラス数Cおよび予測ブロック内画素数Mo分集めた係数の集合とする。最適化を続行する場合、単画素予測係数選択部4026に単画素予測係数集合を出力する。最適化を続行しない場合、単画素予測係数を最終的な予測係数として出力する。
単画素予測係数選択部4026は単画素予測係数反復最適化終了判定部4027から出力された単画素予測係数集合を入力とし、次に最適化すべき単画素予測係数として式(9)に示す予測誤差削減効率が最も大きい単画素予測係数を選択し、単画素予測係数最適化処理部4023へ出力する。
単画素予測係数最適化処理部4023は単画素予測係数選択部4026が出力した最適化対象となる単画素予測係数、および予測係数最適化情報記憶部4022が出力する予測係数最適化情報を入力とし、LARSにおける単画素予測係数の最適化を1ステップ進めた後の単画素予測係数を出力とする。
次に、図7を参照して、図6に示すイントラ予測係数生成部402の動作を説明する。図7は、図6に示すイントラ予測係数生成部402の動作を説明するフローチャートである。まず、予測係数最適化情報生成部4021はイントラ予測情報を基に予測係数最適化情報を生成し、予測係数最適化情報記憶部4022へ保存する(ステップS301)。
次に、単画素単画素予測係数初期化部4025は、各単画素予測係数を零値に初期化した状態の単画素予測係数集合を単画素予測係数情報記憶部4024に保存する(ステップS302)。次に、単画素予測係数最適化終了判定部4027は、現在の単画素予測係数集合を最適化すべきか否かを判定する(ステップS303)。この最適化すべきか否かの判定は、同時に最適化する各単画素予測係数ac[j]の予測誤差削減効率ei (j)の最大値が一定のしきい値に到達したか否かに基づいて行われる。また、非零値の係数が一定割合に到達したか否かに基づいて判定が行われてもよい。
そして、最適化が必要だと判定された場合、単画素予測係数選択部4026は、単画素予測係数集合の中から最適化すべき単画素予測係数として式(9)に示す予測誤差削減効率が最も大きい単画素予測係数を選択する(ステップS304)。続いて、単画素予測係数最適化処理部4023は、選択された単画素予測係数に対して最適化処理を行う(ステップS305)。最適化処理を行った単画素予測係数は単画素予測係数情報記憶部4024に保存される(ステップS306)。
また、イントラ予測係数生成部402において、単画素予測係数の最適化を終了する判定がなされた場合、非零値の予測係数の位置を固定する制約条件の下で予測誤差の2乗和を最小化する単画素予測係数再設定するようにしてもよい。
図8は、図2に示すイントラ予測係数生成部402の第3の構成を示すブロックである。図8は、上記単画素予測係数の再設定を行う場合における構成例である。図6と図8との差異は単画素予測係数精緻化処理部4028であるため、このブロックについて詳細な説明を行う。
単画素予測係数精緻化処理部4028は単画素予測係数反復最適化終了判定部4027が出力した最適化終了済の単画素予測係数であるイントラ予測係数を入力とし、非零値の予測係数の位置を固定する制約条件の下で予測誤差の2乗和を最小化するイントラ予測係数を導出し、新たに求めたイントラ予測係数を出力する。
次に、前述したイントラ予測係数生成部402は式(8)で示される最適化問題における凖最適解を求める方法であった。しかし、最適解の導出が望ましい場合もあるため、式(8)における最適解を導出する方法について説明する。
図9は、図2に示すイントラ予測係数生成部402の第4の構成を示すブロックである。図9は式(8)における最適解を導出する場合における、図6で示されるイントラ予測係数生成部402の構成の詳細を示すブロック図である。図6と図9との差異は単画素予測係数選択部4026および単画素予測係数最適化処理部4023であるため、この2つのブロックについて詳細な説明を行う。
単画素予測係数選択部4026は単画素予測係数反復最適化終了判定部4027から更なる最適化が必要と判断された単画素予測係数集合を入力として受け取る。そして、単画素予測係数選択部4026は、単画素予測係数集合の中から予測誤差削減効率が最も高い単画素予測係数を全て選択し、単画素予測係数最適化処理部4023へ出力する。図6で示した単画素予測係数では必ず1つの単画素予測係数を選択したが、図9における構成例では複数の単画素予測係数を選択しうる。
単画素予測係数最適化処理部4023は単画素予測係数選択部4026が出力した単画素予測係数集合全てに対し、各単画素予測係数に対して図6における単画素予測係数最適化処理部4023と同様の処理を行う。ただし、単画素予測係数最適化処理部4023の最適化後においても単画素予測係数選択部4026が出力した単画素予測係数集合における予測誤差削減効率が全て等しくなる制約条件を課す。上記制約条件を課した最適化を行い、単画素予測係数情報記憶部4024に最適化した単画素予測係数集合を出力する。
次に、動画像復号装置について説明する。図10は同実施形態における動画像復号装置の構成を示すブロック図である。動画像復号装置は、図10におけるエントロピ符号処理部500が出力した符号化ストリームを入力とし、符号化ストリームから予測残差、インター予測情報、イントラ予測情報、イントラ予測係数の計4つの情報を復元し、4つの情報を用いて生成される復号映像信号を出力する。動画像符号化装置では、ロスレス圧縮を行っているため、復号映像信号と映像信号は同一となる。
エントロピ復号処理部700は、図1に示すエントロピ符号化処理部500が出力した符号化ストリームを入力とし、符号化ストリームから予測残差、インター予測情報、イントラ予測情報、イントラ予測係数の計4つの情報を復元し、上記4つの情報をそれぞれ出力する。イントラ予測部800はフレームメモリ1100から復号映像信号を、エントロピ復号処理部700からイントラ予測情報とイントラ予測係数を受け取り、イントラ予測処理により生成された予測画像を出力する。
インター予測部900は復号映像信号、インター予測情報をそれぞれフレームメモリ1100、エントロピ復号処理部から受け取り、インター予測処理により生成された予測画像を出力する。復号信号生成部1000はインター予測部900もしくはイントラ予測部800が出力した予測画像、エントロピ復号処理部700が出力した予測残差を入力し、予測画像と予測残差を加算することで生成される復号映像信号を出力する。
フレームメモリ1100は復号信号生成部1000が出力した復号映像信号を入力し、自身が保持するメモリへ格納する。復号映像信号は、インター予測部900およびイントラ予測部800における参照画素として利用される。
次に、図10に示すイントラ予測部800の詳細な構成を説明する。図11は図10に示すイントラ予測部800の詳細な構成を示すブロック図である。本ブロック図では特にイントラ予測係数生成部803が従来法と異なる。
イントラ予測処理部801はイントラ予測情報記憶部802からイントラ予測情報を、イントラ予測係数記憶部803からイントラ予測係数を読み込み、フレームメモリ1100から復号映像信号を入力し、イントラ予測処理を行い予測画像を出力する。イントラ予測情報記憶部802はイントラ予測情報をエントロピ復号処理部700から受け取り、自身が保持する記憶領域に保存する。イントラ予測係数記憶部803はイントラ予測係数をエントロピ復号処理部700から受け取り、自身が保持する記憶領域に保存する。
次に、図11に示すイントラ予測部800の動作を説明する。図12は、図11に示すイントラ予測部800の動作を示すフローチャートである。まず、イントラ予測処理を行う前処理としてエントロピ復号処理部700からイントラ予測情報を受け取ってイントラ予測情報記憶部802に保存する(ステップS401)。そして、エントロピ復号処理部700からイントラ予測係数を受け取ってイントラ予測係数記憶部803に保存する(ステップS402)。その後、イントラ予測処理部801がフレームメモリ1100から復号映像信号を受け取り、イントラ予測を行って予測画像を生成する(ステップS403)。
以上説明したように、イントラ予測においてクラス数や予測ブロック内の画素数を1より大きく設定した制約条件下であっても最適化問題を効率的に求解することで、信号特性に適合した予測係数を効率的に出力できる。この構成によれば、デジタル信号に対する線形予測を行うためのスパース性(非零値の係数がまばらに存在すること)を有する予測係数を効率的に出力できる。
なお、本実施形態における0でない係数を少なくするというのは手段の1つにすぎず、0という数字や係る予測器に限定するものではない。本実施形態による線形予測係数出力装置は音声など他のメディアの符号化や、工数や稼働の管理システム等様々な分野に適用可能である。その際0でない係数を少なくする、という条件は適用する分野に応じて設定すればよい。
なお、請求項でいうデジタル信号、単信号は、映像符号化の場合、それぞれ、画素の集合、単画素に相当する。また、デジタル信号を区間に分割するとは、映像符号化においては、ブロック分割することに相当する。
前述した実施形態における線形予測係数出力装置の全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。従って、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。