以下、本発明の実施の形態について図面を参照して説明する。
図1は、実施の形態に係る動画像符号化装置の構成を示すブロック図である。動画像符号化装置は、減算部101、予測誤差符号化部102、予測誤差復号部103、加算部104、局部復号記憶部105、予測モード選択部106、予測モードインデックス記憶部107、および予測部108を備える。
動画像符号化装置には、画像を構成する各画素を、最左上画素から右に、右端画素の次は1ライン下の左端画素から右へと、順次予測して符号化するように入力される。画素は、たとえば8ビットとする。
減算部101は、入力された現画素値pxから、予測部108から供給される予測値ppを減算して、予測誤差値deltaを出力する。
予測誤差符号化部102は、減算部101から供給される予測誤差値deltaを、例えば6ビットに非線形量子化して、予測誤差符号c−deltaを出力する。なお、予測誤差の符号化は、非線形量子化に限るものでなく、例えば、予測誤差値を線形量子化したり、予測誤差値やその量子化値を可変長符号化したりしてもよいし、その他の符号化方法を用いてもよい。
予測誤差復号部103は、予測誤差符号化部102からの予測誤差符号c−deltaを、逆量子化して、予測誤差復号値d−deltaを出力する。
加算部104は、予測誤差復号部103から供給される予測誤差復号値d−deltaと、予測部108から供給される予測値ppとを、加算して、現画素の局部復号値dxを出力する。
局部復号記憶部105は、加算部104から供給される局部復号値dxを、後で(将来)符号化する画素を予測するため、少なくとも、局部復号値dxを予測モードの選択や予測値の算出に用いる可能性のある、後で符号化する全ての画素を符号化するまでの期間、保持する。
予測モード選択部106は、後で符号化する画素kの予測モードを選択するため、複数の局部復号画素値を局部復号記憶部105から読み出して、予測アルゴリズムに応じた所定の条件式に基づき、選択する予測モードを示す予測モードインデックスmod_id(k)を出力する。
予測モードインデックス記憶部107は、予測モード選択部106から供給される、後で符号化する画素kの予測モードインデックスmod_id(k)を、少なくとも、対応する画素を符号化するまでの期間、保持する。
予測部108は、現画素iの予測モードインデックスmod_id(i)を予測モードインデックス記憶部107から読み出して、mod_id(i)で特定された所定の予測モードで、局部復号記憶部105から読み出した複数の局部復号画素値を用いて、現画素iの予測値ppを求めて出力する。
予測モード選択部106が、後で符号化する画素kの予測モードを選択して、選択した予測モードを示す予測モードインデックスmod_id(k)を予測モードインデックス記憶部107に保持する処理(「予測モード選択処理」と呼ぶ)と、予測部108が、現画素iの予測モードインデックスmod_id(i)を予測モードインデックス記憶部107から読み出して、mod_id(i)で特定された予測モードで現画素iの予測値ppを求める処理(「予測値算出処理」と呼ぶ)とは、並列に実行される。
符号化対象画素である現画素の直前に符号化する画素の局部復号値を用いないようにすれば、予測モード選択部106による予測モード選択処理を、予測部108による予測値算出処理に先だって実行することが可能になり、予測モード選択処理と予測値算出処理の並列処理が可能である。
より具体的には、予測モード選択部106は、予測部108による符号化対象画素である現画素の符号化に先行して、現画素を含むラインよりも符号化順において少なくとも一つ前のラインの画素の局部復号値を用いて、所定の条件式にしたがって、現画素の符号化に用いる予測モードを選択し、選択された予測モードを示す予測モードインデックスを出力する。
なお、画像を符号化する際に、局部復号記憶部105と予測モードインデックス記憶部107は初期化する。これらの記憶部はメモリで構成される。例えば、局部復号記憶部105は、8ビット画素値の中間値である128に初期化する。予測モードインデックス記憶部107は、左隣の局部復号画素からの水平方向の予測モードを示す予測モードインデックスで初期化する。
予測モード選択部106による予測モード選択処理について詳細に説明する。まず、比較のため、図2を参照して、従来のJPEG−LS方式で用いる画素の予測方法を説明した後で、図3〜図11を参照して、本実施の形態の予測モード選択部106による予測モード選択処理について説明する。
図2は、JPEG−LS方式で用いる画素の予測方法を説明する図である。符号化対象画素pxに対して左、斜め上、真上に隣接する局部復号画素pd01、pd11、pd12の値を用いて、次の条件式に基づいて予測モードmod_idを選択する。
if(pd11≧MAX(pd01,pd12)) mod_id=0
else if(pd11≦MIN(pd01,pd12)) mod_id=1
else mod_id=2
(式201)
符号化対象画素pxの予測値ppは、予測モードmod_idにもとづいて次式により算出される。
if(mod_id==0) pp=MIN(pd01,pd12)
else if(mod_id==1) pp=MAX(pd01,pd12)
else if(mod_id==2) pp=pd01+pd12−pd11
(式202)
ここで、MIN()は最小値を選択する演算、MAX()は最大値を選択する演算である。
予測誤差deltaは次式で得られる。
delta=px−pp (式203)
(式202)で示すように、JPEG−LS方式の予測方法では、3つの予測モードに応じて、左隣の局部復号画素、上隣の局部復号画素、上隣と左隣と左上隣の局部復号画素からの算出値のいずれか選択して符号化対象画素を予測する。
予測モードを決定する条件式である(式201)からわかるように、概ね、左隣の局部復号画素からの予測は、符号化対象画素周辺に水平エッジありと判定した場合に選択される。上隣の局部復号画素からの予測は、符号化対象画素周辺に垂直エッジありと判定した場合に選択される。また、上隣と左隣と左上隣の局部復号画素からの算出値による予測は、水平エッジも垂直エッジもないと判定した場合に選択される。
図2に示したJPEG−LS方式で用いる画素の予測方法では、符号化対象画素pxの直前に符号化された左隣の局部復号画素pd01を利用して符号化対象画素pxの予測モードを決定している。すぐ左に隣接する局部復号画素pd01は、符号化対象画素pxの符号化を開始する時点でないと得られない。そのため、すぐ左の隣接局部復号画素を利用する予測方法では、予測モード選択処理の後に予測値算出処理を逐次的に実行する必要があり、予測モード選択処理と予測値算出処理とを並列に実行することはできない。
そこで、本実施の形態では、符号化対象画素pxの直前に符号化された左隣の局部復号画素pd01を使わずに、符号化対象画素pxを含むラインよりも符号化順で少なくとも一つ前のラインの局部復号画素を用いて、符号化対象画素pxの予測モードを選択する。
図3は、本実施の形態における符号化対象画素の第1の予測アルゴリズムを説明する図である。図3では、符号化対象画素である現画素pxに対して、予測モードに応じて左隣の局部復号画素pd01、または、上隣の局部復号画素pd12を選択して予測値とする。どちらの局部復号画素を選択するかは、現画素pxを含むラインよりも符号化順で一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd22を用いた下記の条件式(式301)〜(式303)で決まる予測モードインデックスmod_idに従って決められる。
第1の予測アルゴリズムでは、予測モードの選択において、非特許文献1や非特許文献2に記載され図2で説明した従来の予測方法のように、現画素pxの左隣の局部復号画素pd01は用いず、現画素pxを含むラインよりも符号化順で一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd22を用いる。これにより、左隣の局部復号画素pd01の算出が終わる前、言い換えれば、現画素pxの符号化を開始する前に、先行して現画素pxの符号化に用いる予測モードを選択し、予測モードインデックスmod_idを求めることができる。例えば、局部復号画素pd12の算出が終わった後、次の局部復号画素pd13に対する一連の予測符号化に係る処理と並列に、現画素pxの符号化に用いる予測モードの選択処理を実行することができる。
現画素pxの符号化に用いる予測モードの選択処理は、現画素pxの符号化を開始する前に完了すればよいので、予測モードを決定する条件式に用いられる局部復号画素pd11、pd12、pd22の算出が終わった後で、かつ、現画素pxの符号化を開始する前であれば、現画素pxの予測モード選択処理は任意の時点で実行してよい。実装上は、予測モードを決定する条件式に用いられる局部復号画素pd11、pd12、pd22がラインメモリに保持されている間に実行することが望ましい。
現画素pxに対して、一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd22の値を用いて、次の条件式(式301)〜(式303)に基づいて予測モードmod_idを選択する。
R1=abs(pd12−pd11) (式301)
R2=abs(pd12−pd22)+α (式302)
(α≧0)
if(R1<R2) mod_id=0
else mod_id=1 (式303)
ここで、abs()は絶対値を求める演算である。αは、水平方向の絶対差分R1を垂直方向の絶対差分R2よりも優先するための重み付け値である。
符号化対象画素pxの予測値ppは、予測モードmod_idにもとづいて次式により算出される。
if(mod_id==0) pp=pd01
else pp=pd12 (式304)
予測誤差deltaは次式で得られる。
delta=px−pp (式305)
なお、第1の予測アルゴリズムにおいて、予測モードインデックスは2値なので、1ビットで表現できる。予測モードインデックス記憶部107は、凡そ1ライン分の1ビットメモリを用いて構成することができる。
予測モードを決定する条件式(式301)〜(式303)と、予測値を算出する式(式304)からわかるように、一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd22について、水平方向の絶対差分R1が垂直方向の絶対差分R2よりも小さければ、現画素pxを左隣の局部復号画素pd01から予測し、垂直方向の絶対差分R2が水平方向の絶対差分R1よりも小さければ、現画素pxを上隣の局部復号画素pd12から予測する。
以上のように、第1の予測アルゴリズムにより、符号化対象画素に対する一連の予測符号化に係る処理から分離して、符号化対象画素の最適な予測モードの選択に係る処理を並列に実行することができ、高速化を実現できる。また、予測モード選択処理を予測符号化処理から分離したことで、予測符号化処理に予測モード選択処理を統合した場合と比べて、予測符号化処理を比較的簡単で低速な演算器でも実装することができる。
次に、現画素周辺に水平エッジまたは垂直エッジがある場合について、第1の予測アルゴリズムの動作を説明する。
図4(a)〜図4(d)は、現画素周辺に水平エッジがある場合について、第1の予測アルゴリズムの動作を説明する図である。図中の丸は画素を示し、丸の濃淡は画素値を示す。簡単のため、黒、グレー、薄グレーの3段階の濃淡により画素値の変化を示す。図4(a)〜図4(d)は、上から下へ進むにつれて水平方向のラインは黒、グレー、薄グレーと変化し、いずれかの水平方向のラインにおいて水平エッジが存在する。
図4(a)では、第1行の画素pd21、pd22、pd23の一つ上のラインよりも上のライン(図示せず)は黒、第1行の画素pd21、pd22、pd23のラインはグレー、第2行の画素pd11、pd12、pd13から下のラインは薄グレーであり、第1行の画素pd21、pd22、pd23のラインに水平エッジが存在する。
図4(b)では、第1行の画素pd21、pd22、pd23から上のラインは黒、第2行の画素pd11、pd12、pd13のラインはグレー、第3行の画素pd01、pxから下のラインは薄グレーであり、第2行の画素pd11、pd12、pd13のラインに水平エッジが存在する。
図4(c)では、第2行の画素pd11、pd12、pd13から上のラインは黒、第3行の画素pd01、pxのラインはグレー、第4行の画素から下のラインは薄グレーであり、第3行の画素pd01、pxのラインに水平エッジが存在する。
図4(d)では、第3行の画素pd01、pxから上のラインは黒、第4行の画素のラインはグレー、第4行の画素の一つ下のラインよりも下のライン(図示せず)は薄グレーであり、第4行の画素のラインに水平エッジが存在する。
各図において、丸端線の太さは、局部復号画素間の差分の大きさを表す。また、両矢印線は、現画素pxの予測に用いられる隣接局部復号画素を示す。
図4(a)〜図4(d)はそれぞれ、(式301)から(式303)に従い、水平方向の局部復号画素pd11とpd12の絶対差分値R1と、垂直方向の局部復号画素pd22とpd12の絶対差分値に所定の重み付け値αを加えた値R2とを比較して、R1はR2以下であることから、水平方向の予測モード(mod_id=0)が選択され、現画素pxが左隣の局部復号画素pd01で予測される様子を示している。
図4(a)、図4(b)では、水平方向の画素の絶対差分が垂直方向の画素の絶対差分よりも小さいため、R1<R2が成り立つことから、mod_id=0であり、左隣の局部復号画素pd01が現画素pxの予測値として選ばれる。
図4(c)、図4(d)では、水平方向の画素の絶対差分と垂直方向の画素の絶対差分が等しいが、後者には重み付け値αが加算されるため、やはりR1<R2が成り立つことから、同じくmod_id=0であり、左隣の局部復号画素pd01が現画素pxの予測値として選ばれる。所定の重み付け値αを加えることで、図4(c)、図4(d)の場合でも、誤判定を防ぐことができる。
このように、水平方向にエッジがある場合、図4(a)〜図4(d)のいずれの場合でも、水平予測が選択される。
図5(a)〜図5(d)は、現画素周辺に垂直エッジがある場合について、第1の予測アルゴリズムの動作を説明する図である。図5(a)〜図5(d)は、左から右へ進むにつれて垂直方向のラインは黒、グレー、薄グレーと変化し、いずれかの垂直方向のラインにおいて垂直エッジが存在する。
図5(a)では、第1列の画素の一つ左のラインよりも左のライン(図示せず)は黒、第1列の画素のラインはグレー、第2列の画素pd21、pd11、pd01から右のラインは薄グレーであり、第1列の画素のラインに垂直エッジが存在する。
図5(b)では、第1列の画素から左のラインは黒、第2列の画素pd21、pd11、pd01のラインはグレー、第3列の画素pd22、pd12、pxから右のラインは薄グレーであり、第2列の画素pd21、pd11、pd01のラインに垂直エッジが存在する。
図5(c)では、第2列の画素pd21、pd11、pd01から左のラインは黒、第3列の画素pd22、pd12、pxのラインはグレー、第4列の画素pd23、pd13から右のラインは薄グレーであり、第3列の画素pd22、pd12、pxのラインに垂直エッジが存在する。
図5(d)では、第3列の画素pd22、pd12、pxから左のラインは黒、第4列の画素のラインはグレー、第4列の画素pd23、pd13の一つ右のラインよりも右のライン(図示せず)は薄グレーであり、第4列の画素pd23、pd13のラインに垂直エッジが存在する。
図5(a)〜図5(d)はそれぞれ、(式301)から(式303)に従い、水平方向の局部復号画素pd11とpd12の絶対差分値R1と、垂直方向の局部復号画素pd22とpd12の絶対差分値に所定の重み付け値αを加えた値R2とを比較して、図5(b)、図5(c)では、R1はR2以下でないことから、垂直方向の予測モード(mod_id=1)が選択され、現画素pxが上隣の局部復号画素pd12で予測され、図5(a)、図5(d)では、R1はR2以下であることから、水平方向の予測モード(mod_id=0)が選択され、現画素pxが左隣の局部復号画素pd01で予測される様子を示している。
図5(b)、図5(c)では、垂直方向の画素の絶対差分が水平方向の画素の絶対差分よりも小さいため、R1>R2が成り立つことから、mod_id=1であり、上隣の局部復号画素pd01が現画素pxの予測値として選ばれる。
図5(a)、図5(d)では、垂直方向の画素の絶対差分と水平方向の画素の絶対差分が等しいが、前者には重み付け値αが加算されるため、R1<R2が成り立つことから、mod_id=0であり、左隣の局部復号画素pd01が現画素pxの予測値として選ばれる。ここで、水平方向の予測モードを選択しても、図5(a)の場合は、薄グレー画素間の予測であり、図5(d)の場合は、クロ画素間の予測であるから、大きな予測誤差となる問題を生じることはない。
図6は、本実施の形態における符号化対象画素の第2の予測アルゴリズムを説明する図である。図6では、符号化対象画素である現画素pxに対して、予測モードに応じて左隣の局部復号画素pd02、左上隣の局部復号画素pd12、上隣の局部復号画素pd13、及び、右上隣の局部復号画素pd14の中からいずれかを選択して予測値とする。いずれの局部復号画素を選択するかは、現画素pxを含むラインよりも符号化順で一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd13、pd14、pd22、pd23、pd24を用いた下記の条件式(式601)〜(式616)で決まる予測モードインデックスmod_idに従って決められる。
第2の予測アルゴリズムでも、第1の予測アルゴリズムと同様に、予測モードの選択において、非特許文献1や非特許文献2に記載され図2で説明した従来の予測方法のように、現画素pxの左隣の局部復号画素pd02は用いず、現画素pxを含むラインよりも符号化順で一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd13、pd14、pd22、pd23、pd24を用いる。これにより、左隣の局部復号画素pd02の算出が終わる前、言い換えれば、現画素pxの符号化を開始する前に、先行して現画素pxの符号化に用いる予測モードを選択し、予測モードインデックスmod_idを求めることができる。例えば、局部復号画素pd14の算出が終わった後、次の局部復号画素pd15に対する一連の予測符号化に係る処理と並列に、現画素pxの符号化に用いる予測モードの選択処理を実行することができる。
現画素pxに対して、一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd13、pd14、pd22、pd23、pd24の値を用いて、次の条件式(式601)〜(式616)に基づいて予測モードmod_idを選択する。
R11=abs(pd11−pd12) (式601)
R12=abs(pd12−pd13) (式602)
R13=abs(pd13−pd14) (式603)
R21=abs(pd22−pd13) (式604)
R22=abs(pd23−pd14) (式605)
R31=abs(pd22−pd12) (式606)
R32=abs(pd23−pd13) (式607)
R33=abs(pd24−pd14) (式608)
R41=abs(pd22−pd11) (式609)
R42=abs(pd24−pd13) (式610)
R1=MAX(R11,R12,R13) (式611)
R2=MAX(R21,R22)+α (式612)
R3=MAX(R31,R32,R33)+α (式613)
R4=MAX(R41,R42)+α (式614)
(α≧0)
Rmin=MIN(R1,R2,R3,R4) (式615)
if(R1==Rmin) mod_id=0
else if(R2==Rmin) mod_id=1
else if(R3==Rmin) mod_id=2
else if(R4==Rmin) mod_id=3 (式616)
符号化対象画素pxの予測値ppは、予測モードmod_idにもとづいて次式により算出される。
if(mod_id==0) pp=pd01
else if(mod_id==1) pp=pd11
else if(mod_id==2) pp=pd12
else if(mod_id==3) pp=pd13 (式617)
予測誤差deltaは次式で得られる。
delta=px−pp (式618)
以上のように、第2の予測アルゴリズムにより、符号化対象画素に対する一連の予測符号化に係る処理から分離して、符号化対象画素の最適な予測モードの選択に係る処理を並列に実行することができ、高速化を実現できる。また、予測モード選択処理を予測符号化処理から分離したことで、予測符号化処理に予測モード選択処理を統合した場合と比べて、予測符号化処理を比較的簡単で低速な演算器でも実装することができる。
また、非特許文献2に記載の方法では、水平・垂直エッジだけでなく、左斜めエッジや右斜めエッジに適応して予測モードを選択し、予測値を算出するために、局部復号画素を蓄積する少なくとも2ライン分のメモリを必要とするが、第2の予測アルゴリズムに従えば、凡そ局部復号画素1ライン分のメモリで、水平・垂直エッジだけでなく、左斜め・右斜めエッジに適応して予測モードの選択、及び、予測値の算出ができるので、メモリ量を削減することができる。
なお、第2の予測アルゴリズムにおいて、予測モードインデックスは4値なので、2ビットで表現できる。予測モードインデックス記憶部107は、凡そ1ライン分の2ビットメモリを用いて構成することができるので、この分を加味しても、メモリ量削減効果は十分にある。
次に、現画素周辺に水平/垂直エッジ、左斜め/右斜めエッジがある場合について、第2の予測アルゴリズムの動作を説明する。ここで、「左斜め」とは左上から右下への方向のことであり、「右斜め」とは右上から左下への方向のことであるとする。
図7(a)〜図7(d)は、現画素周辺に水平エッジがある場合について、第2の予測アルゴリズムの動作を説明する図である。図7(a)〜図7(d)は、上から下へ進むにつれて水平方向のラインは黒、グレー、薄グレーと変化し、いずれかの水平方向のラインにおいて水平エッジが存在する。
図7(a)では、第1行の画素pd21、pd22、pd23、pd24の一つ上のラインよりも上のライン(図示せず)は黒、第1行の画素pd21、pd22、pd23、pd24のラインはグレー、第2行の画素pd11、pd12、pd13、pd14から下のラインは薄グレーであり、第1行の画素pd21、pd22、pd23、pd24のラインに水平エッジが存在する。
図7(b)では、第1行の画素pd21、pd22、pd23、pd24から上のラインは黒、第2行の画素pd11、pd12、pd13、pd14のラインはグレー、第3行の画素pd01、pd02、pxから下のラインは薄グレーであり、第2行の画素pd11、pd12、pd13、pd14のラインに水平エッジが存在する。
図7(c)では、第2行の画素pd11、pd12、pd13、pd14から上のラインは黒、第3行の画素pd01、d02、pxのラインはグレー、第4行の画素から下のライン(図示せず)は薄グレーであり、第3行の画素pd01、pd02、pxのラインに水平エッジが存在する。
図7(d)では、第3行の画素pd01、pd02、pxから上のラインは黒、第4行の画素のラインはグレー、第4行の画素の一つ下のラインよりも下のライン(図示せず)は薄グレーであり、第4行の画素のラインに水平エッジが存在する。
各図において、丸端線の太さは、局部復号画素間の差分の大きさを表す。また、両矢印線は、現画素pxの予測に用いられる隣接局部復号画素を示す。
図7(a)〜図7(d)はそれぞれ、(式601)から(式616)に従い、水平方向の評価値R1が最小と判断され、水平方向の予測モード(mod_id=0)が選択され、現画素pxが左隣の局部復号画素pd02で予測される様子を示している。
左斜め方向の評価値R2、垂直方向の評価値R3、右斜め方向の評価値R4を求める際に、所定の重み付け値αを加えることで、図7(c)や、図7(d)の場合でも、水平方向の評価値R1を優先して誤判定を防ぎ、水平方向の予測モードを選択することができる。
図8(a)〜図8(d)は、現画素周辺に垂直エッジがある場合について、第2の予測アルゴリズムの動作を説明する図である。図8(a)〜図8(d)は、左から右へ進むにつれて垂直方向のラインは黒、グレー、薄グレーと変化し、いずれかの垂直方向のラインにおいて垂直エッジが存在する。
図8(a)では、第1列の画素の一つ左のラインよりも左のライン(図示せず)は黒、第1列の画素pd21、pd11、pd01のラインはグレー、第2列の画素pd22、pd12、pd02から右のラインは薄グレーであり、第1列の画素pd21、pd11、pd01のラインに垂直エッジが存在する。
図8(b)では、第1列の画素pd21、pd11、pd01から左のラインは黒、第2列の画素pd22、pd12、pd02のラインはグレー、第3列の画素pd23、pd13、pxから右のラインは薄グレーであり、第2列の画素pd22、pd12、pd02のラインに垂直エッジが存在する。
図8(c)では、第2列の画素pd22、pd12、pd02から左のラインは黒、第3列の画素pd23、pd13、pxのラインはグレー、第4列の画素pd24、pd14から右のラインは薄グレーであり、第3列の画素pd23、pd13、pxのラインに垂直エッジが存在する。
図8(d)では、第3列の画素pd23、pd13、pxから左のラインは黒、第4列の画素のラインはグレー、第4列の画素pd24、pd14の一つ右のラインよりも右のライン(図示せず)は薄グレーであり、第4列の画素pd24、pd14のラインに垂直エッジが存在する。
図8(b)、図8(c)、図8(d)はそれぞれ、(式601)から(式616)に従い、垂直方向の評価値R3が最小と判断され、垂直方向の予測モード(mod_id=2)が選択され、現画素pxが上隣の局部復号画素pd13で予測される様子を示している。
図8(a)は、(式601)から(式616)に従い、左斜め方向の評価値R2が最小と判断され、左斜め方向の予測モード(mod_id=1)が選択され、現画素pxが左上隣の局部復号画素pd12で予測される様子を示している。ここで、左斜め方向の予測モードを選択しても、図8(a)の場合は、薄グレー画素間の予測であるから、大きな予測誤差となる問題を生じることはない。
図9(a)〜図9(d)は、現画素周辺に左斜めエッジがある場合について、第2の予測アルゴリズムの動作を説明する図である。図9(a)〜図9(d)は、左下から右上へ進むにつれて左斜め方向のラインは黒、グレー、薄グレーと変化し、いずれかの左斜め方向のラインにおいて水平エッジが存在する。
図7(a)〜図7(d)では、濃淡で示す画素値が垂直方向に徐々に変化し、水平エッジが存在したが、図9(a)〜図9(d)では、濃淡で示す画素値の変化が右斜め方向に徐々に変化し、左斜めエッジが存在する。図9(a)では、グレーで示される画素pd11、pd02の左斜めラインに左斜めエッジが存在する。図9(b)では、グレーで示される画素pd21、pd12、pxの左斜めラインに左斜めエッジが存在する。図9(c)では、グレーで示される画素pd22、pd13の左斜めラインに左斜めエッジが存在する。図9(d)では、グレーで示される画素pd23、pd14の左斜めラインに左斜めエッジが存在する。
図9(a)〜図9(d)はそれぞれ、(式601)から(式616)に従い、左斜め方向の評価値R2が最小と判断され、左斜め方向の予測モード(mod_id=1)が選択され、現画素pxが左上隣の局部復号画素pd12で予測される様子を示している。
図10(a)〜図10(d)は、現画素周辺に右斜めエッジがある場合について、第2の予測アルゴリズムの動作を説明する図である。図10(a)〜図10(d)は、左上から右下へ進むにつれて右斜め方向のラインは黒、グレー、薄グレーと変化し、いずれかの右斜め方向のラインにおいて水平エッジが存在する。
図8(a)〜図8(d)では、濃淡で示す画素値が水平方向に徐々に変化し、垂直エッジが存在したが、図10(a)〜図10(d)では、濃淡で示す画素値の変化が左斜め方向に徐々に変化し、右斜めエッジが存在する。図10(a)では、グレーで示される画素pd23、pd12、pd01の右斜めラインに右斜めエッジが存在する。図10(b)では、グレーで示される画素pd24、pd13、pd02の右斜めラインに右斜めエッジが存在する。図10(c)では、グレーで示される画素pd25、pd14、pxの右斜めラインに右斜めエッジが存在する。図10(d)では、グレーで示される画素pd15の右斜めラインに右斜めエッジが存在する。
図10(a)、図10(b)、図10(c)はそれぞれ、(式601)から(式616)に従い、右斜め方向の評価値R4が最小と判断され、右斜め方向の予測モード(mod_id=3)が選択され、現画素pxが右上隣の局部復号画素pd14で予測される様子を示している。
図10(d)は、(式601)から(式616)に従い、水平方向の評価値R1が最小と判断され、水平方向の予測モード(mod_id=0)が選択され、現画素pxが左隣の局部復号画素pd02で予測される様子を示している。ここで、水平方向の予測モードを選択しても、図10(d)の場合は、黒画素間の予測であるから、大きな予測誤差となる問題を生じることはない。
図11は、本実施の形態における符号化対象画素の第3の予測アルゴリズムを説明する図である。図11では、符号化対象画素である現画素pxに対して、予測モードに応じて左隣の局部復号画素pd01、左上隣の局部復号画素pd11、上隣の局部復号画素pd12、及び、右上隣の局部復号画素pd13の中からいずれかを選択して予測値とする。いずれの局部復号画素を選択するかは、現画素pxを含むラインよりも符号化順で一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd13、pd21、pd22、pd23を用いた下記の条件式(式1101)〜(式1106)で決まる予測モードインデックスmod_idに従って決められる。
第3の予測アルゴリズムでも、第1、第2の予測アルゴリズムと同様に、予測モードの選択において、現画素pxの左隣の局部復号画素pd01は用いず、現画素pxを含むラインよりも符号化順で一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd13、pd21、pd22、pd23を用いる。これにより、左隣の局部復号画素pd01の算出が終わる前、言い換えれば、現画素pxの符号化を開始する前に、先行して現画素pxの符号化に用いる予測モードを選択し、予測モードインデックスmod_idを求めることができる。例えば、局部復号画素pd12の算出が終わった後、次の局部復号画素pd13に対する一連の予測符号化に係る処理と並列に、現画素pxの符号化に用いる予測モードの選択処理を実行することができる。
現画素pxに対して、一つ前および二つ前のラインにある局部復号画素pd11、pd12、pd13、pd21、pd22、pd23の値を用いて、次の条件式(式1101)〜(式1106)に基づいて予測モードmod_idを選択する。
R1=abs(pd11−pd12) (式1101)
R2=abs(pd21−pd12)+α (式1102)
R3=abs(pd22−pd12)+α (式1103)
R4=abs(pd23−pd12)+α (式1104)
(α≧0)
Rmin=MIN(R1,R2,R3,R4) (式1105)
if(R1==Rmin) mod_id=0
else if(R2==Rmin) mod_id=1
else if(R3==Rmin) mod_id=2
else if(R4==Rmin) mod_id=3 (式1106)
符号化対象画素pxの予測値ppは、予測モードmod_idにもとづいて次式により算出される。
if(mod_id==0) pp=pd01
else if(mod_id==1) pp=pd11
else if(mod_id==2) pp=pd12
else if(mod_id==3) pp=pd13 (式1107)
予測誤差deltaは次式で得られる。
delta=px−pp (式1108)
第2の予測アルゴリズムについて述べた作用効果は、第3の予測アルゴリズムについても当てはまる。ただし、第3の予測アルゴリズムでは、図6に示した第2の予測アルゴリズムとは違って、予測モードを選択するための評価値の数を減らしている。そのため、第2の予測アルゴリズムよりも処理量が少ないという利点がある。もっとも、予測モードを選択するための評価値の種類が少ないため、誤判定は多くなるので、処理量と精度のトレードオフを考慮して、第2の予測アルゴリズムまたは第3の予測アルゴリズムを選択すればよい。
なお、第3の予測アルゴリズムにおいて、予測モードインデックスは4値なので、2ビットで表現できる。予測モードインデックス記憶部107は、凡そ1ライン分の2ビットメモリを用いて構成することができるので、この分を加味しても、メモリ量削減効果は十分にある。さらに、第2の予測アルゴリズムに比べて、予測モードインデックスmod_idを求める際に用いる局部復号画素の数が少なく、より簡便に、予測モードインデックスmod_idを求めることができる。
図12は、図1の動画像符号化装置による画像符号化処理を説明するフローチャートである。
局部復号記憶部105と予測モードインデックス記憶部107を初期化する(S201)。
ステップS203からステップS210までの予測値算出処理と、ステップS211からステップS212までの予測モード選択処理とを並列に処理するように予測部108と予測モード選択部106を制御する(S202)。
動画像符号化装置に符号化対象画素iを入力し、符号化対象画素iの画素値を現画素値pxに設定する(S203)。
予測部108は、予測モードインデックス記憶部107から符号化対象画素iの予測モードインデックスmod_id(i)を読み出す(S204)。予測部108は、予測モードインデックスmod_id(i)に応じて、局部復号記憶部105から隣接する局部復号画素値を読み出して、予測値ppに設定する(S205)。
減算部101は、現画素値pxから予測値ppを減算して、予測誤差値deltaを算出する(S206)。予測誤差符号化部102は、予測誤差値deltaを符号化して予測誤差符号c−deltaを出力する(S207)。
予測誤差復号部103は、予測誤差符号c−deltaを復号して予測誤差復号値d−deltaを求める(S208)。加算部104は、予測値ppと予測誤差復号値d−deltaを加算して、局部復号値dxを算出し(S209)、局部復号値dxを局部復号記憶部105に書き込む(S210)。
一方、予測モード選択部106は、局部復号記憶部105から局部復号値を読み出して、例えば、第1の予測アルゴリズムを用いる場合は(式301)から(式303)に従い、第2の予測アルゴリズムを用いる場合は(式601)から(式616)に従い、第3の予測アルゴリズムを用いる場合は(式1101)から(式1106)に従い、後で符号化する画素kの予測モードインデックスmod_id(k)を求める(S211)。
予測モード選択部106は、求めた予測モードインデックスmod_id(k)を予測モードインデックス記憶部107に書き込む(S212)。
ステップS203からステップS210までの予測値算出処理と、ステップS211からステップS212までの予測モード選択処理とがともに完了するのを待つ(S213)。
画面内の全画素を符号化したか否かを判断して、画面内の全画素を符号化した場合には、一連の処理を終了する。また、画面内の全画素を符号化していない場合は、ステップS202に戻る(S214)。
図13は、実施の形態に係る動画像復号装置の構成を示すブロック図である。動画像復号装置は、予測誤差復号部301、加算部302、局部復号記憶部303、予測モード選択部304、予測モードインデックス記憶部305、および予測部306を備える。
予測誤差復号部301は、入力される予測誤差符号c−deltaを、例えば、符号化に対応して逆量子化して、予測誤差復号値d−deltaを出力する。
加算部302は、予測誤差復号部301から供給される予測誤差復号値d−deltaと、予測部306から供給される予測値ppとを、加算して、現画素の局部復号値dxを出力する。
局部復号記憶部303は、加算部302からの局部復号値dxを、後に復号する画素を予測するため、少なくとも、局部復号値dxを予測モードの選択や予測値の算出に用いる可能性のある、後に復号する全ての画素を復号するまでの期間、保持する。
予測モード選択部304は、後に復号する画素kの予測モードを選択するため、複数の局部復号画素値を、局部復号記憶部303から読み出して、予測アルゴリズムに応じた所定の条件式に基づき、選択する予測モードを示す予測モードインデックスmod_id(k)を出力する。
予測モードインデックス記憶部305は、予測モード選択部304から供給される、後に復号する画素kの予測モードインデックスmod_id(k)を、少なくとも、対応する画素kを復号するまでの期間、保持する。
予測部306は、現画素iの予測モードインデックスmod_id(i)を、予測モードインデックス記憶部305から読み出して、mod_id(i)に基づき、所定の予測モードで、局部復号記憶部303から読み出した複数の局部復号画素値を用いて、現画素iの予測値ppを求めて出力する。ここで、復号に用いる予測アルゴリズムは、符号化で用いる予測アルゴリズムと同じアルゴリズムである。
図14は、図13の動画像復号装置による画像復号処理を説明するフローチャートである。図13の動画像復号装置による復号処理は、図1の動画像符号化装置による符号化処理に対応して行われる。
局部復号記憶部303と予測モードインデックス記憶部305を初期化する(S401)。
ステップS403からステップS408までの予測値算出処理と、ステップS409からステップS410までの予測モード選択処理とを並列に処理するように予測部306と予測モードインデックス記憶部305を制御する(S402)。
動画像復号装置に復号対象画素iの予測誤差符号を入力し、予測誤差符号の値をc−deltaに設定する(S403)。
予測誤差復号部301は、予測誤差符号c−deltaを復号して予測誤差復号値d−deltaを求める(S404)。
予測部306は、予測モードインデックス記憶部305から復号対象画素iの予測モードインデックスmod_id(i)を読み出す(S405)。予測部306は、予測モードインデックスmod_id(i)に応じて、局部復号記憶部303から隣接する局部復号画素値を読み出して、予測値ppに設定する(S406)。
加算部302は、予測値ppと予測誤差復号値d−deltaを加算して、局部復号値dxを算出し(S407)、局部復号値dxを局部復号記憶部303に書き込む(S408)。
一方、予測モード選択部304は、局部復号記憶部303から局部復号値を読み出して、例えば、第1の予測アルゴリズムを用いる場合は(式301)から(式303)に従い、第2の予測アルゴリズムを用いる場合は(式601)から(式616)に従い、第3の予測アルゴリズムを用いる場合は(式1101)から(式1106)に従い、後で符号化する画素kの予測モードインデックスmod_id(k)を求める(S409)。
予測モード選択部304は、求めた予測モードインデックスmod_id(k)を予測モードインデックス記憶部305に書き込む(S410)。
ステップS403からステップS408までの予測値算出処理と、ステップS409からステップS410までの予測モード選択処理とがともに完了するのを待つ(S411)。
画面内の全画素を符号化したか否かを判断して、画面内の全画素を符号化した場合には、一連の処理を終了する。また、画面内の全画素を符号化していない場合は、ステップS402に戻る(S412)。
以上述べたように、本発明の実施の形態によれば、当該画素の符号化や復号における予測モードの選択に係る演算を、凡そ1ライン先行して行い、選択した予測モードのインデックスをメモリに保持しておく。当該画素の符号化や復号において、メモリから読み出した予測モードのインデックスに従い、予測値を算出する。
これにより、予測モードの選択に係る演算を、画素ごとの一連の演算から独立させて並列処理することができるので、多くの予測モードから選択したり、予測モードの選択に係る演算量を増加させても、高速な演算器を必要とせず、低速な演算器を用いることができるので、実用化コストを低減したり、実用化を簡易にしたりできる。
また、水平・垂直エッジだけでなく、左斜め・右斜めエッジを検出して予測モードを選択して予測誤差をより小さくできるので、量子化歪低減による画質の向上や、発生符号量低減による符号化効率の向上を図ることができる。
また、非特許文献2では、水平・垂直エッジだけでなく、左斜め・右斜めエッジに適応して予測モードの選択、及び、予測値の算出のために、局部復号画素を蓄積する少なくとも2ライン分のメモリを必要とする。局部復号画素1ライン分のメモリで実現可能な非特許文献1の方式に比べて、必要とするメモリ量が増加する。
それに対して、本実施の形態では、凡そ1ライン先行して予測モードを選択することで、凡そ局部復号画素1ライン分のメモリで、水平・垂直エッジだけでなく、左斜め・右斜めエッジに適応して予測モードの選択、及び、予測値の算出ができるので、メモリ量を削減してコストを低減したり、メモリ帯域を削減して省電力化したりすることができる。
また、復号においても符号化同様に、第1〜第3の予測アルゴリズムを用いることで、従来に比べて、一連の予測符号化に係る処理から分離しても、良好な予測モードの選択に係る処理ができ、かつ、より低速な演算器で実現することができる。また、メモリ量を削減することができる。
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。